函数:F4IF_INT_TABLE_VALUE_REQUEST设置搜索帮助
参数:retfield 返回字段的ID(如需返回多个字段值,参过参数(callback_form)设置)
callback_program 下面Form的程序
callback_form 通过此参数传递Form名
表value_tab 可选择的值表
表return_tab 选择后,返回的选择值
函数:DYNP_VALUES_UPDATE更新画面字段值
参数:dyname 程序sy-repid
dynumb 画面sy-dynnr
ynpfields 需要设置的字段和值
DATA: BEGIN OF lt_value OCCURS 0,"搜索帮助显示字段 name TYPE crhh-name, werks TYPE crhh-werks, ktext TYPE crtx-ktext, spras TYPE crtx-spras, END OF lt_value. DATA:lt_return LIKE ddshretval OCCURS 0 WITH HEADER LINE, lt_field LIKE dfies OCCURS 0 WITH HEADER LINE. DATA:lt_dynpfields TYPE TABLE OF dynpread, ls_dynpfields TYPE dynpread. * 取得搜索值 SELECT crhh~name crhh~werks crtx~ktext crtx~spras INTO TABLE lt_value FROM crhh INNER JOIN crid ON crid~objty = crhh~objty AND crid~objid = crhh~objid INNER JOIN crtx ON crid~objty = crtx~objty AND crid~objid = crtx~objid WHERE crhh~objty = 'H' AND crtx~spras = sy-langu. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'NAME' "选择后,返回的字段ID dynpprog = sy-cprog dynpnr = sy-dynnr value_org = 'S' "C: cell by cell, S: structured callback_program = sy-repid callback_form = 'CB_FORM' "返回多列时的调用Form TABLES value_tab = lt_value[] "选择帮助显示值 * field_tab = lt_field return_tab = lt_return "选择值(如果多列会返回多条) 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. ELSE. * 编辑画面字段值 LOOP AT lt_return. ls_dynpfields-fieldname = lt_return-retfield. "选择字段ID ls_dynpfields-fieldvalue = lt_return-fieldval. "字段值 APPEND ls_dynpfields TO lt_dynpfields. ENDLOOP. * 上个函数返回第一次段为~,此处更新 ls_dynpfields-fieldname = 'P_HNAME'. MODIFY lt_dynpfields FROM ls_dynpfields INDEX 1 TRANSPORTING fieldname. * 更新画面字段值 CALL FUNCTION 'DYNP_VALUES_UPDATE' EXPORTING dyname = sy-repid dynumb = sy-dynnr TABLES dynpfields = lt_dynpfields EXCEPTIONS invalid_abapworkarea = 1 invalid_dynprofield = 2 invalid_dynproname = 3 invalid_dynpronummer = 4 invalid_request = 5 no_fielddescription = 6 undefind_error = 7 OTHERS = 8. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDIF. *&---------------------------------------------------------------------* *& Form cb_form *&---------------------------------------------------------------------* FORM cb_form TABLES record_tab STRUCTURE seahlpres CHANGING shlp TYPE shlp_descr callcontrol LIKE ddshf4ctrl. DATA: interface LIKE LINE OF shlp-interface. READ TABLE shlp-interface INTO interface INDEX 1. * interface-shlpfield+4(1) = '3'. * interface-valfield = 'P_HNAME'. * APPEND interface TO shlp-interface. interface-shlpfield+4(1) = '2'. "设置选择值后需要返回的字段索引 interface-valfield = 'P_WERKS'. "设置返回字段的ID APPEND interface TO shlp-interface. ENDFORM. "bo_callback_form