SAP ALV界面值修改事件

该代码段展示了在ABAP中处理数据更改事件的过程。它首先声明事件类型的内表,然后添加数据更改事件到内表。接着,调用ALV网格显示函数,并在ALV的事件中设置回调。当数据更改时,触发一个名为DATA_CHANGED的函数,该函数检查并处理预测编号的日期变更,确保日期在当月内。如果尝试更改不符合条件,系统将抛出错误信息。
摘要由CSDN通过智能技术生成

我会修改这一行的数据 

 

 

 

DATA GT_EVENTS TYPE SLIS_T_EVENT.
DATA GS_EVENTS LIKE LINE OF GT_EVENTS."首先声明事件类型的内表

"数据更改事件加入事件内表
  GS_EVENTS-NAME = GS_EVENTS-FORM = 'DATA_CHANGED'.
  APPEND GS_EVENTS TO GT_EVENTS.

 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
   EXPORTING

     I_CALLBACK_PROGRAM                = SY-CPROG
     I_CALLBACK_PF_STATUS_SET          = 'USER_STATUS'
     I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
     IS_LAYOUT_LVC                     =  GS_LAYO
     IT_FIELDCAT_LVC                   =  GT_FIEL
     IT_EVENTS                         = GT_EVENTS "放在ALV的事件对应的位置
    TABLES
      T_OUTTAB                          = GT_ZTPP014
   EXCEPTIONS
     PROGRAM_ERROR                     = 1
     OTHERS                            = 2
            .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.



"数据更改事件的函数
FORM DATA_CHANGED USING pcl_data TYPE REF TO cl_alv_changed_data_protocol.

 DATA CDAT TYPE C LENGTH 10.
 DATA(lt_mod_cell) = pcl_data->mt_mod_cells .
    CLEAR GT_AD.
    LOOP AT  GT_ZTPP014 INTO GS_ZTPP014 WHERE ZWCBJ  = ''."按牌号汇总冲销数量,未完成的
        MOVE-CORRESPONDING GS_ZTPP014 TO GS_AD.
        COLLECT GS_AD INTO GT_AD."汇总
    ENDLOOP.
  LOOP AT lt_mod_cell INTO  DATA(ls_mod_cell).
    CASE ls_mod_cell-fieldname."判断修改的字段名
      WHEN 'ZDDATE'.
          READ TABLE GT_ZTPP014A INTO GS_ZTPP014 INDEX ls_mod_cell-ROW_ID.
          IF SY-SUBRC = 0.
            READ TABLE GT_AD INTO GS_AD WITH  KEY ZNKPH = GS_ZTPP014-ZNKPH.
            IF SY-SUBRC = 0.
                IF GS_AD-ZCXSL  <> 0.
                      CDAT  = ls_mod_cell-VALUE.  
"将某些符号用另一些替代``这个代表没有空格 若使用''会有空格出现。
                      REPLACE  '-'  INTO   CDAT WITH ``.
                      REPLACE  '.'  INTO   CDAT WITH ``.
                      REPLACE  '/'  INTO   CDAT WITH ``.
                      IF GS_ZTPP014-ZDDATE+0(6) <> CDAT+0(6).
                          MESSAGE '预测编号' && GS_ZTPP014-ZBDZEI && '行号' && GS_ZTPP014-ZITEM && '预测已冲销,需求日期只能在当月内更改' TYPE 'E'.
                      ENDIF.
                ENDIF.
            ENDIF.
          ENDIF.
    ENDCASE.

  ENDLOOP.
ENDFORM.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值