0

是否可以在屏幕的PBO模块中调用函数MAT1_F4_HELP_EXIT来触发自定义屏幕上的材料字段的搜索帮助(使用se11分配搜索帮助并且搜索帮助退出不起作用)。

我对函数中传递的参数感到困惑。

编辑(取自讨论)

我有一个名为 material 的字段,我想触发搜索帮助 (MAT1)。我已经为它分配了表格字段,它不会让用户自动执行此操作。所以,我想明确地称呼它。

屏幕画家中字段属性的屏幕截图

4

1 回答 1

1

我已经重现了这个问题(参见底部的最小代码和屏幕)。

重现步骤 :

  • 启动程序(-> 显示 ALV)
  • 双击 ALV 的一行(-> 屏幕 0100 显示)
  • 在使用搜索帮助定义的屏幕字段上按 F4(-> 弹出“异常情况”而不是搜索帮助!

原因:活动的 GUI 状态将 F4 功能键重新分配为经典功能键行为,而不是调用搜索帮助,并且由于您没有在屏幕中设置 GUI 状态,因此再次使用前一个屏幕。

解决方法:定义自己的GUI状态,在屏幕的PBO中设置(当然不要重新定义F4!)

经验法则:始终为每个屏幕定义自己的按钮和菜单(为什么要显示来自其他屏幕的按钮和菜单,这是没有意义的)。

最小代码:

REPORT.
SELECT * FROM sflight INTO TABLE @DATA(flights).
" does a CALL SCREEN which does SET PF-STATUS 'STANDARD_FULLSCREEN' (in program SAPLKKBL)
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program      = sy-repid
    i_callback_user_command = 'USER_COMMAND'
    i_structure_name        = 'SFLIGHT'
  TABLES
    t_outtab                = flights
  EXCEPTIONS
    OTHERS                  = 2.
FORM user_command
      USING
        r_ucomm     LIKE sy-ucomm
        rs_selfield TYPE slis_selfield.
  IF r_ucomm = '&IC1'.
    CALL SCREEN 100.
  ENDIF.
ENDFORM.
MODULE pbo OUTPUT.
  " missing part !! ==> create GUI status 0100 and do SET PF-STATUS '0100'
ENDMODULE.
MODULE pai INPUT.
  CASE sy-ucomm.
    WHEN '&F03'.
      SET SCREEN 0.
    WHEN '&F4'.
      " corresponds to F4 key inherited from ALV GUI status 'STANDARD_FULLSCREEN'
      MESSAGE 'abnormal situation -> define your own GUI status !' TYPE 'I'.
  ENDCASE.
ENDMODULE.

屏幕 0100:

  • 任何具有搜索帮助的字段(与您所做的相同)

屏幕 0100 的流程逻辑:

PROCESS BEFORE OUTPUT.
  MODULE pbo.
PROCESS AFTER INPUT.
  MODULE pai.
于 2018-12-28T13:04:24.227 回答