需求: 在检索界面,当用户输入物料号后,物料单位的搜索帮助只显示该物料的单位。
实现代码:
用到2个函数:DYNP_VALUES_READ 和 F4IF_INT_TABLE_VALUE_REQUEST 。DYNP_VALUES_READ 这个函数的作用就是传递屏幕上的物料号。我想应该还有更好的方法。
REPORT z_wuwei_36.
DATA:BEGIN OF itab OCCURS 0,
matnr TYPE marm-matnr,
msehi type t006a-msehi,
mseht TYPE t006a-mseht,
END OF itab.
DATA:tab LIKE dynpread OCCURS 0 WITH HEADER LINE.
PARAMETERS: r_matnr TYPE marm-matnr OBLIGATORY,
r_msehi TYPE t006a-msehi.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR r_msehi.
PERFORM GET_BOX.
FORM GET_BOX.
tab-fieldname = 'R_MATNR'.
APPEND tab.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = tab.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = tab-fieldvalue
IMPORTING
output = r_matnr.
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.
SELECT b~msehi b~mseht
INTO CORRESPONDING FIELDS OF TABLE itab
FROM marm AS a
JOIN t006a AS b ON a~meinh = b~msehi
WHERE matnr = r_matnr
AND b~spras = '1'.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MSEHI'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'R_MSEHI'
value_org = 'S'
TABLES
value_tab = itab.
ENDFORM.