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

kk *_*luo 3 abap

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

示例(程序 DEMO_DYNPRO_F4_HELP_DICTIONARY):

带有 F4 帮助按钮的输入字段

调用 F4 帮助后可能的值

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

San*_*ssi 6

屏幕字段右侧的这个小按钮告诉您有F4 帮助。您可以单击此按钮,也可以将光标放在字段中并按 F4(因此得名),然后将显示可能值的列表,您可以选择一个值。

有多种方法可以确定 F4 帮助应显示的内容。下面的列表显示了 ABAP 运行时如何决定调用 F4 帮助时要执行的操作,这应该足以让您在 Web 上获取更多信息(来源:SAP 库“搜索帮助调用的层次结构”)。

SAP 库用于提供下图(也可在此处获取)当用户显示给定字段的值列表时系统调用的内容,我将在下面详细介绍:

版权所有 SAP 库 - 搜索帮助调用的层次结构

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

因此,我首先对 Dynpro 技术的所有类型屏幕的 F4 帮助进行一般性解释,然后专门介绍选择屏幕的一章。

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

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

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

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

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

选择屏幕

选择屏幕是通用屏幕,其布局和流程逻辑通过ABAP语句描述,并在编译时生成相应的通用屏幕,而通用屏幕通过Screen Painter以图形方式设计。

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

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

请注意,不应手动更改选择屏幕,因为每次激活程序时都会重新生成选择屏幕,并且屏幕字段始终停用“DD Field”属性,因此 ABAP 运行时不会访问在DDIC。

例子:

以下选择屏幕语句:

PARAMETERS p_file TYPE string.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  MESSAGE 'instead, display your F4 dialog' TYPE 'I'.
Run Code Online (Sandbox Code Playgroud)

生成选择屏幕(布局和流程逻辑):

PROCESS ON VALUE-REQUEST.
  FIELD P_FILE MODULE %_P_FILE_VAL.
Run Code Online (Sandbox Code Playgroud)

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

MODULE %_P_FILE_VAL INPUT.
  MESSAGE 'instead, display your F4 dialog' TYPE 'I'.
ENDMODULE.
Run Code Online (Sandbox Code Playgroud)