屏幕字段只能通过Search Help更新

首先要把SCREEN-INPUT属性设置为0,不可输入。然后F4事件的函数DISPLAY参数要设置成'F',如下代码段:

*&---------------------------------------------------------------------*
*& Form FRM_SET_F4_FOR_BWART
*&---------------------------------------------------------------------*
FORM frm_set_f4_for_bwart  CHANGING p_bwart.

  DATA: lt_ddshretval TYPE STANDARD TABLE OF ddshretval,
        lv_title(20),
        lw_ddshretval LIKE LINE OF lt_ddshretval,
        lt_dynpfields TYPE TABLE OF dynpread,
        lw_dynpfields TYPE dynpread.

  TYPES:BEGIN OF ty_030,
          bwart TYPE ztmm0030-bwart,
          grund TYPE ztmm0030-grund,
          btext TYPE t156t-btext,
          grtxt TYPE t157e-grtxt,
        END OF ty_030.

  DATA:lt_030 TYPE TABLE OF ty_030,
       ls_030 TYPE ty_030.

  SELECT
         bwart
         grund
         INTO TABLE lt_030
         FROM ztmm0030.

  "begin change by ey-dlj 20190611  修改登陆语言
  SELECT * FROM t157e INTO TABLE @DATA(lt_157) WHERE spras = @sy-langu.
  SELECT * FROM t156t INTO TABLE @DATA(lt_156) WHERE spras = @sy-langu.
  "end change by ey-dlj 20190611

  SORT lt_030.
  DELETE ADJACENT DUPLICATES FROM lt_030.

  LOOP AT lt_030 INTO ls_030.

    READ TABLE lt_157 INTO DATA(ls_157)
                WITH KEY grund = ls_030-grund.
    IF sy-subrc EQ 0.
      ls_030-grtxt = ls_157-grtxt.
    ENDIF.
    READ TABLE lt_156 INTO DATA(ls_156)
                  WITH KEY bwart = ls_030-bwart.
    IF sy-subrc EQ 0.
      ls_030-btext = ls_156-btext.
    ENDIF.

    MODIFY lt_030 FROM ls_030.
  ENDLOOP.

  DATA lt_return TYPE TABLE OF ddshretval WITH HEADER LINE.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield         = 'BWART'
      dynpprog         = sy-repid
      dynpnr           = sy-dynnr
      dynprofield      = 'P_BWART'
      value_org        = 'S'
      callback_program = sy-repid "可以传递多列值
      callback_form    = 'FRM_CB_FORM' "可以传递多列值
      display          = 'F'
    TABLES
      value_tab        = lt_030
      return_tab       = lt_ddshretval
    EXCEPTIONS
      parameter_error  = 1
      no_values_found  = 2
      OTHERS           = 3.

  CLEAR lt_dynpfields.
  LOOP AT lt_ddshretval INTO lw_ddshretval.
    lw_dynpfields-fieldname = lw_ddshretval-retfield.
    lw_dynpfields-fieldvalue = lw_ddshretval-fieldval.
    APPEND lw_dynpfields TO lt_dynpfields.
  ENDLOOP.

  lw_dynpfields-fieldname = 'P_BWART'.
  MODIFY lt_dynpfields FROM lw_dynpfields INDEX 1 TRANSPORTING fieldname.

  CALL FUNCTION 'DYNP_VALUES_UPDATE'
    EXPORTING
      dyname     = sy-repid
      dynumb     = sy-dynnr
    TABLES
      dynpfields = lt_dynpfields.

  CLEAR:lt_dynpfields[],
        lt_030,
        lt_return[].

ENDFORM.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值