您的位置:首页 > 编程语言 > C#

自定义搜索帮助,类似C#的级联查询

2013-04-25 17:50 169 查看
需求: 在检索界面,当用户输入物料号后,物料单位的搜索帮助只显示该物料的单位。



实现代码:

用到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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: