前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Function ALV添加data_changed事件

Function ALV添加data_changed事件

作者头像
惨绿少年.
发布2021-02-24 14:24:04
9590
发布2021-02-24 14:24:04
举报
文章被收录于专栏:ABAPABAP

data_changed在可編輯字段的數據發生變化時才會觸發。可用來檢查輸入數據的正確性。

代码语言:javascript
复制
REPORT z_tfalv_data_changed.
TYPE-POOLS: slis.
DATA: gs_fieldcat TYPE slis_fieldcat_alv,
      gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gs_layout TYPE slis_layout_alv.
DATA: gt_events TYPE slis_t_event,
      gs_event  TYPE slis_alv_event.
DATA: gt_itab LIKE TABLE OF spfli WITH HEADER LINE.
DEFINE macro_fieldcat.
  CLEAR: gs_fieldcat.
  gs_fieldcat-col_pos = &1.
  gs_fieldcat-fieldname = &2.
  gs_fieldcat-seltext_m   = &3.
  gs_fieldcat-edit   = &4.
  APPEND gs_fieldcat TO gt_fieldcat.
END-OF-DEFINITION.

macro_fieldcat '2' 'CARRID'    'CARRID'    'X'.
macro_fieldcat '3' 'CONNID'    'CONNID'    'X'.
macro_fieldcat '4' 'COUNTRYFR' 'COUNTRYFR' 'X'.
macro_fieldcat '5' 'CITYFROM'  'CITYFROM'  'X'.
macro_fieldcat '6' 'AIRPFROM'  'AIRPFROM'  'X'.
macro_fieldcat '7' 'COUNTRYTO' 'COUNTRYTO' 'X'.
macro_fieldcat '8' 'CITYTO'    'CITYTO'    'X'.
macro_fieldcat '9' 'AIRPTO'    'AIRPTO'    'X'.
macro_fieldcat '10' 'FLTIME'   'FLTIME'    'X'.
macro_fieldcat '11' 'DEPTIME'  'DEPTIME'   'X'.
macro_fieldcat '12' 'ARRTIME'  'ARRTIME'   'X'.
macro_fieldcat '13' 'DISTANCE' 'DISTANCE'  'X'.

MOVE 'DATA_CHANGED' TO gs_event-name.
MOVE 'HANDLE_DATA_CHANGED' TO gs_event-form.
APPEND gs_event TO gt_events.

gs_layout-edit = 'X'.

*START-OF-SELECTION.
  SELECT * FROM spfli
           INTO CORRESPONDING FIELDS OF TABLE gt_itab.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = sy-repid
      it_fieldcat   = gt_fieldcat
      is_layout     = gs_layout
      it_events     = gt_events
    TABLES
      t_outtab      = gt_itab
    EXCEPTIONS
      program_error = 1
      OTHERS        = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

FORM HANDLE_DATA_CHANGED USING
        pcl_data TYPE REF TO
          cl_alv_changed_data_protocol.
    data: mod_data TYPE lvc_t_modi,
        wa_mod_data TYPE lvc_s_modi.
    data: count type n.
    mod_data = pcl_data->mt_mod_cells.

  LOOP AT mod_data INTO wa_mod_data WHERE fieldname = 'CONNID'.
    IF strlen( wa_mod_data-value ) > 4.
      call METHOD pcl_data->add_protocol_entry
        EXPORTING
          i_msgid = '00'
          i_msgty = 'E'
          i_msgno = '001'
          i_msgv1 = 'length is too123 long'
          i_fieldname = wa_mod_data-fieldname.
    ENDIF.
  ENDLOOP.

ENDFORM.
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档