如何显示屏幕字段的可能值

How to show possible values of a screen field

在标准程序屏幕中,某些字段旁边有一个按钮,您可以单击该按钮并搜索允许的值。

示例(程序DEMO_DYNPRO_F4_HELP_DICTIONARY):

我可以用 ABAP 做同样的事情吗,它是 select-options 还是其他的附加功能?

屏幕字段右侧的这个小按钮告诉您有一个 F4 帮助。单击此按钮或将光标置于字段中并按 F4(因此得名),将显示可能值列表,您可以 select 一个值。

有多种方法可以确定 F4 帮助应显示的内容。下面的列表显示了 ABAP 运行时如何决定在调用 F4 帮助时执行的操作,这应该足以让您在 Web 上获得更多信息(来源:SAP Library "Hierarchy of the Search Help Call")。

SAP 库用于提供下图(也是 available here)当用户显示给定字段的值列表时系统调用的内容,我将在下面详细说明:

请注意,它涉及 Dynpro technology 的所有类型的屏幕,选择屏幕 是其中的一部分,但还有一个额外的层次需要理解。

所以我先对Dynpro技术所有类型屏幕的F4帮助做一个大概的解释,后面专门开一章介绍选择屏幕。

调用 F4 帮助时会发生什么:

  1. 如果某些 ABAP 代码明确分配给屏幕字段 (PROCESS ON VALUE-REQUEST),则调用此代码。
    • 在 Screen Flow Logic 的事件块 PROCESS ON VALUE-REQUEST 中,使用 FIELD <screenfieldname> MODULE <modulename>.
    • 在程序中定义 ABAP 代码,在 MODULE <modulename>ENDMODULE 语句中。
    • 您可以实施任何屏幕解决方案来显示可能的值。一个常见的解决方案是调用功能模块 F4IF_INT_TABLE_VALUE_REQUEST.
  2. 否则,如果屏幕字段明确指定了 搜索帮助 (*),则会调用此搜索帮助。
  3. 否则,如果屏幕字段被分配了一个对应于 DDIC 组件的名称(例如,字段名称 SFLIGHT-CARRID 对应于 DDIC table 的列 CARRID SFLIGHT),同时检查屏幕字段属性“DD字段”:
    1. 如果将搜索帮助分配给 DDIC 组件,则会调用此搜索帮助。
    2. 否则如果 DDIC 组件有一个外键(指的是 table 称为 Check Table):
      • 如果检查 Table 链接到搜索帮助,则会调用此搜索帮助。
      • 否则,如果支票 Table 被分配了一个 文本 Table,则支票 table 会显示文本 table.
      • 否则显示检查 Table。
    3. 否则,如果为 DDIC 列的数据元素分配了搜索帮助,则会调用此搜索帮助。
    4. 否则,如果 DDIC 列的数据元素引用具有某些 固定值 ,这些值将与其各自的值一起显示短信。
  4. 否则,如果屏幕字段的类型为 DATS(日期字段),则会显示日历帮助。
  5. 否则,如果屏幕字段的类型为 TIMS(时间字段),则会显示时钟帮助。
  6. 否则什么也不会发生。

(*) Search Help 是一个存储库对象,它简化了处理经典 F4 帮助的开发。它指的是数据库 table 或视图,指示可能的输入和返回列、附加 selection 标准、显示的列等。它通过事务代码 SE11 维护.

请查看您的 ABAP 系统中的那些演示程序:

  • DEMO_DYNPRO_F4_HELP_DICTIONARY : 来自 Dynpros 上 ABAP 字典的 F4 帮助演示
  • DEMO_DYNPRO_F4_HELP_DYNPRO : Dynpros 上的 F4 帮助演示
  • DEMO_DYNPRO_F4_HELP_MODULE : 对话框模块的 F4 帮助演示

选择屏幕

Selection screens为通用画面,其布局和流程逻辑通过ABAP语句描述,并在编译时生成相应的通用画面,而通用画面则通过Screen Painter进行图形化设计。

在 selection 屏幕中有以下 ABAP 语句用于处理 F4 帮助(但调用 F4 帮助时 ABAP 运行时的行为与上面相同):

  • 要通过 ABAP 代码处理 selection 屏幕字段的 F4 帮助,必须使用 ABAP 语句 AT SELECTION-SCREEN ON VALUE-REQUEST FOR <screen field name>
  • 可以通过向 ABAP 语句 PARAMETERS 添加单词 MATCHCODE OBJECT <searchhelpname> 来为 selection 屏幕字段分配搜索帮助和 SELECT-OPTIONS.

请注意,不应手动更改 selection 屏幕,因为每次激活程序时都会重新生成它,并且屏幕字段始终停用 "DD Field" 属性,因此 ABAP运行时不会访问 DDIC 中定义的搜索帮助。

示例:

以下 selection screen 语句:

PARAMETERS p_file TYPE string.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  MESSAGE 'instead, display your F4 dialog' TYPE 'I'.

同时生成 selection 屏幕(布局和流程逻辑):

PROCESS ON VALUE-REQUEST.
  FIELD P_FILE MODULE %_P_FILE_VAL.

以及程序中的一些对开发人员隐藏的 ABAP 代码:

MODULE %_P_FILE_VAL INPUT.
  MESSAGE 'instead, display your F4 dialog' TYPE 'I'.
ENDMODULE.