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

转载于:https://www.cnblogs.com/senlinmu110/p/3802138.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值