选择屏幕只能通过F4更新

顾问提出了一个需求,要求备件的版本号只能通过F4更新,不能直接在选择屏幕上输入,防止用户误填。

总结了一下,实现方法如下:

  1. SCREEN-INPUT = '0'.
      LOOP AT SCREEN.
        IF screen-name = 'P_VER' OR screen-name = 'S_VER-LOW' OR screen-name = 'S_VER-HIGH'.
          screen-input = '0'.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.

     

  2.  F4实现
      DATA lt_return TYPE TABLE OF ddshretval WITH HEADER LINE.
    
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield        = pv_retfield
          dynpprog        = sy-repid
    *      dynpnr          = sy-dynnr
    *      dynprofield     = pv_dynprofield
          value_org       = 'S'
        TABLES
          value_tab       = pt_value
          return_tab      = lt_return
        EXCEPTIONS
          parameter_error = 1
          no_values_found = 2
          OTHERS          = 3.
    
      READ TABLE lt_return INTO DATA(ls_return) INDEX 1.
    
      pv_value = ls_return-fieldval.

     

  3.  回写屏幕
      lt_dynpfields-fieldname  = 'P_VER'.
      lt_dynpfields-fieldvalue = p_ver.
      APPEND lt_dynpfields.
    
      CALL FUNCTION 'DYNP_VALUES_UPDATE'
        EXPORTING
          dyname     = sy-repid
          dynumb     = sy-dynnr
        TABLES
          dynpfields = lt_dynpfields.

     重点:F4事件将选择的值传递给P_VER,但是屏幕仍然不会更新,这个时候需要调用函数将P_VER的值更新到屏幕上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值