搜索帮助 ON VALUE-REQUEST

58 阅读1分钟

搜索帮助是一种有助于在选择屏幕上输入每个项目的值的功能。

AT SELECTION-SCREEN ON VALUE-REQUEST :表示事件“当用户使用 XX 项的搜索帮助时”。

语法规则:

AT SELECTION-SCREEN ON VALUE-REQUEST FOR <input_field>. " 在选择屏幕上的 Value 请求。
  1. 实际读取电脑上的文件代码:
" 上传文件的屏幕项目
SELECTION-SCREEN BEGIN OF LINE.
	SELECTION-SCREEN COMMENT (10) TEXT-S01 FOR FIELD P_FILE.
	PARAMETERS P_FILE TYPE STRING.
SELECTION-SCREEN END OF LINE.

" 对 P_FILE 值的搜索帮助
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
	CHANGING
		FILENAME = LV_FILENAME
		PATH     = LV_PATH
		FULLPATH = P_FILE. 

对于由 PARAMETERS 指令定义的屏幕项,定义了一个名为“调用该项的帮助时”的事件。

  1. 对采购订单号的搜索帮助:
REPORT ZSAMPLE.

PARAMETERS: p_purch_order TYPE EKKO-EBELN.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_purch_order.
  DATA: lt_ekko TYPE TABLE OF EKKO,
        ls_ekko TYPE EKKO,
        lv_selected TYPE EKKO-EBELN.

  SELECT * FROM EKKO INTO TABLE lt_ekko.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'EBELN'
      value_org       = 'S'
    TABLES
      value_tab       = lt_ekko
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.

  IF sy-subrc = 0.
    READ TABLE lt_ekko WITH KEY EBELN = lv_selected INTO ls_ekko.
    IF sy-subrc = 0.
      p_purch_order = ls_ekko-EBELN.
    ENDIF.
  ENDIF.

如果存在字典输入帮助

如果搜索帮助与屏幕项相关联(这称为字典输入帮助),则不需要上述代码。

上述“公司代码”项是指字典,但由于搜索帮助分配给该词典,因此无需任何特殊设置即可使用搜索帮助。


PARAMETERS P_BURKS TYPE BUKRS.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_BUKRS.
  
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      FILE_NAME = P_BUKRS.

结果由“值请求”搜索帮助而不是字典输入帮助获得。 这意味着,如果执行上述示例代码,系统将调用帮助来选择文件,而不是公司代码的输入帮助。 (不用说,结果是一个错误。 )