FM实现F4帮助系列二:联动的搜索


函数:
DYNP_VALUES_READ(Read screen field values before PAI field transport)
F4IF_INT_TABLE_VALUE_REQUEST

效果图:
 FM实现F4帮助系列二:联动的搜索

误区:
P_CONNID帮助中直接如下:
  SELECT  …… 
    WHERE werks = p_werks.
如果用户填写p_werks 未回车而直接点p_matnr的帮助,p_werks此时还为空.

本例子代码:

REPORT  zlm_test_043.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_werks TYPE  werks_d,
            p_matnr TYPE  matnr.

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.
  PERFORM frm_f4.

*&------------------------------------------------------------------- 
*&搜索帮助
*&------------------------------------------------------------------- 
FORM frm_f4.


  TYPES: BEGIN OF values,
         matnr TYPE matnr,
         maktx TYPE maktx,
       END OF values.

  DATA: progname         TYPE sy-repid,
        dynnum           TYPE sy-dynnr,
        dynpro_values    TYPE TABLE OF dynpread,
        field_value      LIKE LINE OF dynpro_values,
        values_tab       TYPE TABLE OF values.

  progname = sy-repid.
  dynnum   = sy-dynnr.

  CLEAR: field_value, dynpro_values.

  "指定需要取值的屏幕字段
  field_value-fieldname = 'P_WERKS'.      "
  APPEND field_value TO dynpro_values.

  "获取屏幕 P_WERKS 字段的值
  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname             = progname
      dynumb             = dynnum
      translate_to_upper = 'X'
    TABLES
      dynpfields         = dynpro_values.

  "根据屏幕输入值进行进一步搜索
  READ TABLE dynpro_values INDEX 1 INTO field_value.

  SELECT  makt~matnr makt~maktx
    FROM  makt
    INNER JOIN marc ON  marc~matnr = makt~matnr
    INTO  CORRESPONDING FIELDS OF TABLE values_tab
    WHERE werks = field_value-fieldvalue.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield     = 'MATNR'                    "需要回传的字段
      dynpprog     = progname
      dynpnr       = dynnum
      dynprofield  = 'MAKTX'                    "需要显示的字段
      window_title = '情选择物料 '
      value_org    = 'S'
    TABLES
      value_tab    = values_tab.

ENDFORM.                    "frm_f4

posted @ 2014-01-22 09:24  胡来  阅读(183)  评论(0编辑  收藏  举报