Function:F4IF_INT_TABLE_VALUE_REQUEST
功能:显示检索help
参数:
Import:
DDIC_STRUCTURE:返回table的结构:
‘s’:VALUE_TAB的结构
‘c’:VALUE_TAB只有一个字段
RETFIELD:返回的字段名称------------必输
DYNPPROG:当前程序
DYNPNR: 屏幕号
DYNPROFIELD:屏幕上需要检索help的字段名称
WINDOW_TITLE:检索help的标题
VALUE_ORG:检索help屏幕显示属性:
‘c’:cell by cell
‘s’:structured
CALLBACK_PROGRAM:在f4之前调用的程序
CALLBACK_FORM:在f4之前调用的程序里面的form名称,形式如下
FORM <NAME> TABLES RECORD_TAB STRUCTURE SEAHLPRES
CHANGING SHLP TYPE SHLP_DESCR
CALLCONTROL LIKE DDSHF4CTRL.
Export:
USER_RESET:如果没有选择(按红x),返回‘x’
Tables:
VALUE_TAB:传进去的表-----------必输
FIELD_TAB:Fields of the hit list(暂时没用)
RETURN_TAB:返回值表,即如果选择了而没有写到屏幕上的值存在这个表中。
DYNPFLD_MAPPING:把屏幕上需要help的字段可以放在这个表中。
推测:如果屏幕上有多个字段关联,那么只作一个help的话,这个应该可以满足。
例子:
FORM A3000_SET_F4_FIELD_WERKS USING P_FIELD.
TYPES:
BEGIN OF T_S_WERKS,
WERKS TYPE T001W-WERKS, "プラント
NAME1 TYPE T001W-NAME1, "名称
NAME2 TYPE T001W-NAME2, "名称2
STRAS TYPE T001W-STRAS, "地名/番地-号
ORT01 TYPE T001W-ORT01, "市区町村名
END OF T_S_WERKS.
TYPES T_I_WERKS TYPE STANDARD TABLE OF T_S_WERKS.
*这个就是value_tab
DATA L_IT_WERKS TYPE T_I_WERKS.
*取数据
SELECT WERKS "プラント
NAME1 "名称
NAME2 "名称 2
STRAS "地名/番地-号
ORT01 "市区町村名
FROM T001W
INTO CORRESPONDING FIELDS OF TABLE L_IT_WERKS.
*调用函数
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'WERKS' “plant
DYNPPROG = SY-REPID “程序名
DYNPNR = SY-DYNNR “屏幕号
DYNPROFIELD = P_FIELD “字段名称
VALUE_ORG = 'S' “显示属性:cell by cell
TABLES
VALUE_TAB = L_IT_WERKS
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " A3000_SET_F4_FIELD_WERKS
程序:
REPORT ZF4IF_INT_TABLE_VALUE_REQUEST .
TYPES:
BEGIN OF T_S_WERKS,
WERKS TYPE T001W-WERKS, "
NAME1 TYPE T001W-NAME1, "
NAME2 TYPE T001W-NAME2, "2
STRAS TYPE T001W-STRAS, "/-
ORT01 TYPE T001W-ORT01, "
END OF T_S_WERKS.
TYPES T_I_WERKS TYPE STANDARD TABLE OF T_S_WERKS.
*value_tab
DATA L_IT_WERKS TYPE T_I_WERKS.
PARAMETERS: P_WERKS(4) TYPE C.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_WERKS.
*AT SELECTION-SCREEN ON HELP-REQUEST FOR .
*
SELECT WERKS "
NAME1 "
NAME2 " 2
STRAS "/-
ORT01 "
FROM T001W
INTO CORRESPONDING FIELDS OF TABLE L_IT_WERKS.