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

来源:互联网 发布:阿里云ostv破解 编辑:程序博客网 时间:2024/06/13 22:08

需求: 在检索界面,当用户输入物料号后,物料单位的搜索帮助只显示该物料的单位。



实现代码:

用到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.