F4IF_FIELD_VALUE_REQUEST主要功能是將表里的字段對應的search help引入到屏幕上來,從而打開對話框,當然也可以任意指定某個search help。
F4IF_INT_TABLE_VALUE_REQUEST支持字定義內表,但是不能通過指定search help的方式打開對話框。
數據不常更新,且數據量不大的時候,為表創建緩存。
TRDIR查找用戶創建的全部程序。
REUSE_ALV_FIELDCATALOG_MERGE——從數據庫抓取相應內容,並生成字段目錄。
創建F1搜索幫助:
1、創建數據元素ZFF_EF1
2、在SE61填入數據元素-創建F1搜索幫助,填寫內容
3、代碼實現 Z_SALSH_HELPF1
PARAMETERS P_HELPF1 TYPE CHAR20.
DATA T_LINK LIKE TABLE OF TLINE WITH HEADER LINE.
AT SELECTION-SCREEN ON HELP-REQUEST FOR P_HELPF1.
CALL FUNCTION 'HELP_OBJECT_SHOW'
EXPORTING
DOKCLASS = 'DE'
DOKLANGU = '1'
DOKNAME = 'ZFF_EF1'
* DOKTITLE = ' '
* CALLED_BY_PROGRAM = ' '
* CALLED_BY_DYNP = ' '
* CALLED_FOR_TAB = ' '
* CALLED_FOR_FIELD = ' '
* CALLED_FOR_TAB_FLD_BTCH_INPUT = ' '
* MSG_VAR_1 = ' '
* MSG_VAR_2 = ' '
* MSG_VAR_3 = ' '
* MSG_VAR_4 = ' '
* CALLED_BY_CUAPROG = ' '
* CALLED_BY_CUASTAT =
* SHORT_TEXT = ' '
* CLASSIC_SAPSCRIPT = ' '
TABLES
LINKS = T_LINK
* EXCEPTIONS
* OBJECT_NOT_FOUND = 1
* SAPSCRIPT_ERROR = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
創建F4搜索幫助的兩種方式:
一、
1、使用SE11創建搜索幫助ZF_HELP- 選擇方法填數據庫表-添加搜索幫助參數(不需要管 已修改和缺省值)-保存-激活

2、創建數據庫表ZFF_DTH
A 、填寫相應的字段
B 、選擇字段一個字段-點搜索幫助-為它添加搜索幫助ZF_HELP.
C 、點輸入幫助/檢查-檢查
PARAMETERS P_MATNR TYPE ZF_HELP-MATNR.
PARAMETERS P_MATNR TYPE CHAR18 MATCHCODE OBJECT ZHELP_DEMO. "搜索幫助
SELECT-OPTIONS S_HELP FOR ZFF_DTH-MATNR."區間的搜索幫助
二、(手寫代碼)
PARAMETERS P_MATNR TYPE CHAR18."選擇屏幕單值
TYPES:BEGIN OF TYP_01,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF TYP_01.
DATA GT_01 TYPE STANDARD TABLE OF TYP_01.
DATA GS_01 TYPE TYP_01.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MATNR."搜索幫助
SELECT MARA~MATNR"取數
makt~maktx
FROM MARA
INNER JOIN MAKT ON MARA~MATNR = MAKT~MATNR AND MAKT~SPRAS = SY-LANGU
INTO TABLE GT_01.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
retfield = 'maktx'
* PVALKEY = ' '
DYNPPROG = SY-CPROG
DYNPNR = SY-DYNNR"系統屏幕號
DYNPROFIELD = 'P_MATNR'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
VALUE_ORG = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* CALLBACK_METHOD =
* MARK_TAB =
* IMPORTING
* USER_RESET =
tables
value_tab = GT_01
* FIELD_TAB =
* RETURN_TAB =
* DYNPFLD_MAPPING =
* EXCEPTIONS
* PARAMETER_ERROR = 1
* NO_VALUES_FOUND = 2
* OTHERS = 3
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
區間的搜索幫助
DATA :BEGIN OF TYP_01,
ABC TYPE CHAR18,
END OF TYP_01.
SELECT-OPTIONS S_HELP01 FOR TYP_01-ABC.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_HELP01-LOW.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_HELP01-HIGH.
調用函數時 : DYNPROFIELD = 'S_HELP01-LOW'
*源代碼
TYPES:BEGIN OF TYP_01,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MAKT-MAKTX,
END OF TYP_01.
DATA GT_01 TYPE STANDARD TABLE OF TYP_01 WITH HEADER LINE.
DATA GS_01 TYPE TYP_01.
SELECT-OPTIONS S_HELP FOR GT_01-MAKTX.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_HELP-LOW.
SELECT MARA~MATNR
makt~maktx
FROM MARA
INNER JOIN MAKT ON MARA~MATNR = MAKT~MATNR AND MAKT~SPRAS = SY-LANGU
INTO TABLE GT_01.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
retfield = 'maktx'
* PVALKEY = ' '
DYNPPROG = SY-CPROG
DYNPNR = SY-DYNNR
DYNPROFIELD = 'S_HELP-LOW'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
VALUE_ORG = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* CALLBACK_METHOD =
* MARK_TAB =
* IMPORTING
* USER_RESET =
tables
value_tab = GT_01[]
* FIELD_TAB =
* RETURN_TAB =
* DYNPFLD_MAPPING =
* EXCEPTIONS
* PARAMETER_ERROR = 1
* NO_VALUES_FOUND = 2
* OTHERS = 3
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_HELP-HIGH.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
retfield = 'maktx'
* PVALKEY = ' '
DYNPPROG = SY-CPROG
DYNPNR = SY-DYNNR
DYNPROFIELD = 'S_HELP-HIGH'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
VALUE_ORG = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* CALLBACK_METHOD =
* MARK_TAB =
* IMPORTING
* USER_RESET =
tables
value_tab = GT_01[]
* FIELD_TAB =
* RETURN_TAB =
* DYNPFLD_MAPPING =
* EXCEPTIONS
* PARAMETER_ERROR = 1
* NO_VALUES_FOUND = 2
* OTHERS = 3
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.