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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值