首页 > 解决方案 > 如何显示屏幕字段的可能值

问题描述

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

示例(程序 DEMO_DYNPRO_F4_HELP_DICTIONARY):

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

调用 F4 帮助后的可能值

我可以对 ABAP 做同样的事情吗,它是选择选项的附加功能还是其他功能?

标签: abap

解决方案


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

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

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

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

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

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

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

  1. 如果某些 ABAP 代码显式分配给屏幕字段 ( PROCESS ON VALUE-REQUEST),则调用此代码。
    • PROCESS ON VALUE-REQUEST在Screen Flow Logic的事件块中,使用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 运行时的行为与上述相同):

请注意,不应手动更改选择屏幕,因为每次激活程序时都会重新生成它,并且屏幕字段始终停用“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'.

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

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.

推荐阅读