SAP 实现同时显示多个ALV GRID(其中包含单击和双击等事件)

业务背景:用户想实现在一个界面上同时显示两个ALV报表,同时双击第一个ALV报表某一行信息的时候,可以下钻带出第二个ALV报表信息

实现步骤:

  1. 创建自定义屏幕Screen 9000,在屏幕上话一个container容器
  2. 分别对两个ALV定义fieldcat
  3. 在container容器上拆分成多个ALV然后进行展示

其中还有包含在OO ALV单击事件以及双击事件的处理方法,详细内容可以参考以下代码:

*&---------------------------------------------------------------------*
*& Report  ZWMR312
*&
*&---------------------------------------------------------------------*
*&
*&MIGO发料过账传MES重发平台
*&---------------------------------------------------------------------*

REPORT zwmr312.
TABLES: resb,
        mkpf,
        ztwm321_h.

TYPES: BEGIN OF gty_alv1,
         checkbox  TYPE c, "复选框
         werks     TYPE ztwm321_h-werks, "工厂
         rsnum     TYPE ztwm321_h-rsnum, "预留
         rspos     TYPE ztwm321_h-rspos, "行项目
         mblnr     TYPE ztwm321_h-mblnr, "物料凭证
         mjahr     TYPE ztwm321_h-mjahr, "年
         zeile     TYPE ztwm321_h-zeile, "行项目
         budat     TYPE ztwm321_h-budat, "过帐日期
         umlgo     TYPE ztwm321_h-umlgo, "接收地库存地点
         lgort     TYPE ztwm321_h-lgort, "发送库存地点
         matnr     TYPE ztwm321_h-matnr, "物料
         menge     TYPE ztwm321_h-menge, "数量
         charg     TYPE ztwm321_h-charg, "批次
         bwart     TYPE ztwm321_h-bwart, "移动类型
         zztype    TYPE ztwm321_h-zztype, "消息类型
         zzmessage TYPE ztwm321_h-zzmessage, "消息
       END OF gty_alv1,

       BEGIN OF gty_alv2,
         werks TYPE ztwm321_i-werks, "工厂
         rsnum TYPE ztwm321_i-rsnum, "预留
         rspos TYPE ztwm321_i-rspos, "行项目
         mblnr TYPE ztwm321_i-mblnr, "物料凭证
         mjahr TYPE ztwm321_i-mjahr, "年
         zeile TYPE ztwm321_i-zeile, "行项目
         sernr TYPE ztwm321_i-sernr, "序列号
       END OF gty_alv2.

DATA: gt_alv1      TYPE TABLE OF gty_alv1,
      gs_alv1      TYPE gty_alv1,
      gt_alv2      TYPE TABLE OF gty_alv2,
      gs_alv2      TYPE gty_alv2,
      gt_fieldcat  TYPE TABLE OF slis_fieldcat_alv,
      gs_fieldcat  TYPE slis_fieldcat_alv,
      gs_layout    TYPE slis_layout_alv,
      gt_fcat1     TYPE lvc_t_fcat,
      gs_fcat1     TYPE lvc_s_fcat,
      gt_fcat2     TYPE lvc_t_fcat,
      gs_fcat2     TYPE lvc_s_fcat,
      g_repid      LIKE sy-repid,
      ok_code      LIKE sy-ucomm,
      custom_cont  TYPE REF TO cl_gui_custom_container,
      splitter     TYPE REF TO cl_gui_splitter_container,
      grid_result1 TYPE REF TO cl_gui_alv_grid,
      grid_result2 TYPE REF TO cl_gui_alv_grid,
      gs_layout1   TYPE lvc_s_layo,
      gs_layout2   TYPE lvc_s_layo,
      gt_sort1     TYPE lvc_t_sort,
      gt_sort2     TYPE lvc_t_sort.

*--------------------------------------------------------------------*
*Class define
*--------------------------------------------------------------------*
CLASS cl_event_receiver DEFINITION.
  PUBLIC SECTION.
*  PROTECTED SECTION.
    " 双击事件
    METHODS handle_double_click1
                  FOR EVENT double_click OF cl_gui_alv_grid
      IMPORTING e_row e_column.

    "单击事件
    METHODS  handle_cell_click
          FOR EVENT hotspot_click OF cl_gui_alv_grid
      IMPORTING
          e_row_id
          e_column_id
          es_row_no.


ENDCLASS.                    "cl_event_receiver DEFINITION

*--------------------------------------------------------------------*
*Class implement
*--------------------------------------------------------------------*
CLASS cl_event_receiver IMPLEMENTATION.

  METHOD handle_double_click1.
    DATA: lt_item TYPE TABLE OF ztwm321_i,
          ls_item TYPE ztwm321_i,
          ls_stbl TYPE lvc_s_stbl.

    CLEAR: lt_item,
           ls_item.

    CLEAR: gs_alv1.
    READ TABLE gt_alv1 INTO gs_alv1 INDEX e_row-index.
    IF sy-subrc = 0.
      SELECT * INTO TABLE lt_item
        FROM ztwm321_i
        WHERE werks = gs_alv1-werks
          AND rsnum = gs_alv1-rsnum
          AND rspos = gs_alv1-rspos
          AND mblnr = gs_alv1-mblnr
          AND mjahr = gs_alv1-mjahr
          AND zeile = gs_alv1-zeile.

      CLEAR: gt_alv2,
             gs_alv2.
      LOOP AT lt_item INTO ls_item.
        MOVE-CORRESPONDING ls_item TO gs_alv2.
        APPEND gs_alv2 TO gt_alv2.
        CLEAR: gs_alv2.
      ENDLOOP.
    ENDIF.

    "冲销设置tcode 为 RELOAD,防止因为原来的tcode影响程序执行
    CALL METHOD cl_gui_cfw=>set_new_ok_code
      EXPORTING
        new_code = 'RELOAD'.

    "ALV 控制:刷新稳定性 按行刷新,可选参数
    CLEAR ls_stbl.
    "稳定刷新,保持滚动条位置
    ls_stbl-row = ls_stbl-col = 'X'.

    "刷新
*    CALL METHOD grid_result1->refresh_table_display
*      EXPORTING
*        is_stable      = ls_stbl
*        i_soft_refresh = 'X'.

    CALL METHOD grid_result2->refresh_table_display
      EXPORTING
        is_stable      = ls_stbl
        i_soft_refresh = 'X'.
    "提交
    CALL METHOD cl_gui_cfw=>flush.
  ENDMETHOD.                    "handle_double_click

  METHOD handle_cell_click.

    "获取单击字段
    DATA: l_msg   TYPE string,
          l_row   TYPE string,
          l_field TYPE string,
          ls_stbl TYPE lvc_s_stbl.

    FIELD-SYMBOLS: <lfs_alv1> TYPE gty_alv1.


    l_row      = es_row_no-row_id.               "选中行
    l_field    = e_column_id.                    "选中的字段

    READ TABLE gt_alv1 ASSIGNING <lfs_alv1> INDEX es_row_no-row_id.

    IF sy-subrc = 0.
      "得到所单击值
      IF <lfs_alv1>-checkbox = 'X'.
        <lfs_alv1>-checkbox = ''.
      ELSE.
        <lfs_alv1>-checkbox = 'X'.
      ENDIF.
    ENDIF.

    "冲销设置tcode 为 RELOAD,防止因为原来的tcode影响程序执行
    CALL METHOD cl_gui_cfw=>set_new_ok_code
      EXPORTING
        new_code = 'RELOAD'.

    "ALV 控制:刷新稳定性 按行刷新,可选参数
    CLEAR ls_stbl.
    "稳定刷新,保持滚动条位置
    ls_stbl-row = ls_stbl-col = 'X'.

    "刷新
    CALL METHOD grid_result1->refresh_table_display
      EXPORTING
        is_stable      = ls_stbl
        i_soft_refresh = 'X'.

*    CALL METHOD grid_result2->refresh_table_display
*      EXPORTING
*        is_stable      = ls_stbl
*        i_soft_refresh = 'X'.
    "提交
    CALL METHOD cl_gui_cfw=>flush.
  ENDMETHOD.                    "handle_cell_click

ENDCLASS.                    "cl_event_receiver IMPLEMENTATION

DATA: event_receiver TYPE REF TO cl_event_receiver.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_werks FOR resb-werks NO INTERVALS OBLIGATORY, "工厂
                s_rsnum FOR resb-rsnum, "预留单
                s_lgort FOR resb-lgort, "发货库存地点
                s_umlgo FOR resb-umlgo, "收货库存地点
                s_budat FOR mkpf-budat OBLIGATORY, "过帐日期
                s_bwart FOR resb-bwart NO INTERVALS, "移动类型
                s_typ FOR ztwm321_h-zztype DEFAULT 'E'. "消息类型
SELECTION-SCREEN END OF BLOCK b1.

INITIALIZATION.
  PERFORM frm_init.

AT SELECTION-SCREEN.

START-OF-SELECTION.
  PERFORM frm_get_data.

  PERFORM frm_init_fcat.


END-OF-SELECTION.
  CALL SCREEN 9000.

*&---------------------------------------------------------------------*
*&      Form  FRM_INIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_init .
  CLEAR: gt_alv1,
         gs_alv1,
         gt_alv2,
         gs_alv2,
         gt_fieldcat,
         gs_fieldcat,
         gs_layout,
         gt_fcat1,
         gs_fcat1,
         gt_fcat2,
         gs_fcat2
         .

ENDFORM.                    " FRM_INIT
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_data .
  DATA: lt_data_h TYPE TABLE OF ztwm321_h,
        ls_data_h TYPE ztwm321_h,
        lt_data_i TYPE TABLE OF ztwm321_i,
        ls_data_i TYPE ztwm321_i.

  CLEAR: lt_data_h,
         ls_data_h,
         lt_data_i,
         ls_data_i.

  SELECT * INTO TABLE lt_data_h
    FROM ztwm321_h
    WHERE werks IN s_werks
      AND rsnum IN s_rsnum
      AND lgort IN s_lgort
      AND umlgo IN s_umlgo
      AND budat IN s_budat
      AND bwart IN s_bwart
      AND zztype IN s_typ.

  LOOP AT lt_data_h INTO ls_data_h.
    MOVE-CORRESPONDING ls_data_h TO gs_alv1.
    APPEND gs_alv1 TO gt_alv1.
    CLEAR: ls_data_h, gs_alv1.
  ENDLOOP.
ENDFORM.                    " FRM_GET_DATA

*&---------------------------------------------------------------------*
*&      Form  FRM_INIT_FCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_init_fcat .
  PERFORM sub_init_fcat_result1.
  PERFORM sub_init_fcat_result2.
ENDFORM.                    " FRM_INIT_FCAT
*&---------------------------------------------------------------------*
*&      Form  SUB_INIT_FCAT_RESULT1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_init_fcat_result1 .
  CLEAR: gt_fcat1,
         gs_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'CHECKBOX'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '复选框'.
  gs_fcat1-hotspot = 'X'.
  gs_fcat1-checkbox = 'X'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'WERKS'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '工厂'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'RSNUM'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '预留'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'RSPOS'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '行项目'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'MBLNR'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '物料凭证'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'MJAHR'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '年'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'ZEILE'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '行项目'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'BUDAT'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '过帐日期'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'UMLGO'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '接收地库存地点'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'LGORT'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '发送库存地点'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'MATNR'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '物料'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'MENGE'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '数量'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'CHARG'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '批次'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'BWART'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '移动类型'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'ZZTYPE'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '消息类型'.
  APPEND gs_fcat1 TO gt_fcat1.

  CLEAR gs_fcat1.
  gs_fcat1-fieldname = 'ZZMESSAGE'.
  gs_fcat1-tabname   = 'GT_ALV1'.
  gs_fcat1-coltext   = '消息'.
  APPEND gs_fcat1 TO gt_fcat1.
ENDFORM.                    " SUB_INIT_FCAT_RESULT1
*&---------------------------------------------------------------------*
*&      Form  SUB_INIT_FCAT_RESULT2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_init_fcat_result2 .

  CLEAR gs_fcat2.
  gs_fcat2-fieldname = 'WERKS'.
  gs_fcat2-tabname   = 'GT_ALV2'.
  gs_fcat2-coltext   = '工厂'.
  APPEND gs_fcat2 TO gt_fcat2.

  CLEAR gs_fcat2.
  gs_fcat2-fieldname = 'RSNUM'.
  gs_fcat2-tabname   = 'GT_ALV2'.
  gs_fcat2-coltext   = '预留'.
  APPEND gs_fcat2 TO gt_fcat2.

  CLEAR gs_fcat2.
  gs_fcat2-fieldname = 'RSPOS'.
  gs_fcat2-tabname   = 'GT_ALV2'.
  gs_fcat2-coltext   = '行项目'.
  APPEND gs_fcat2 TO gt_fcat2.

  CLEAR gs_fcat2.
  gs_fcat2-fieldname = 'MBLNR'.
  gs_fcat2-tabname   = 'GT_ALV2'.
  gs_fcat2-coltext   = '物料凭证'.
  APPEND gs_fcat2 TO gt_fcat2.

  CLEAR gs_fcat2.
  gs_fcat2-fieldname = 'MJAHR'.
  gs_fcat2-tabname   = 'GT_ALV2'.
  gs_fcat2-coltext   = '年'.
  APPEND gs_fcat2 TO gt_fcat2.

  CLEAR gs_fcat2.
  gs_fcat2-fieldname = 'ZEILE'.
  gs_fcat2-tabname   = 'GT_ALV2'.
  gs_fcat2-coltext   = '行项目'.
  APPEND gs_fcat2 TO gt_fcat2.

  CLEAR gs_fcat2.
  gs_fcat2-fieldname = 'SERNR'.
  gs_fcat2-tabname   = 'GT_ALV2'.
  gs_fcat2-coltext   = '序列号'.
  APPEND gs_fcat2 TO gt_fcat2.
ENDFORM.                    " SUB_INIT_FCAT_RESULT2
*&---------------------------------------------------------------------*
*&      Module  PBO_9000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE pbo_9000 OUTPUT.
  SET PF-STATUS '0100'.
  g_repid = sy-repid.
  PERFORM sub_cr_alv_result.
ENDMODULE.                 " PBO_9000  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  PAI_9000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE pai_9000 INPUT.
  CASE ok_code.
    WHEN 'SAVE'.
    WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
      PERFORM sub_exit.
    WHEN '&RESEND'. "重新发送MES
      PERFORM frm_resend_mes.
  ENDCASE.
  CLEAR ok_code.
ENDMODULE.                 " PAI_9000  INPUT
*&---------------------------------------------------------------------*
*&      Form  SUB_EXIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_exit .
  PERFORM unlock_all.
  LEAVE TO SCREEN 0.
ENDFORM.                    " SUB_EXIT
*&---------------------------------------------------------------------*
*&      Form  UNLOCK_ALL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM unlock_all .
  CALL FUNCTION 'DEQUEUE_ALL'.
ENDFORM.                    " UNLOCK_ALL
*&---------------------------------------------------------------------*
*&      Form  SUB_CR_ALV_RESULT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_cr_alv_result .
  DATA: result_cont1 TYPE REF TO cl_gui_container,
        result_cont2 TYPE REF TO cl_gui_container,
        ref_grid     TYPE REF TO cl_gui_alv_grid,
        ls_stbl      TYPE lvc_s_stbl.

  IF custom_cont IS INITIAL.
    CREATE OBJECT custom_cont
      EXPORTING
        container_name              = 'CONT1'
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5.
    IF sy-subrc NE 0.
      CALL FUNCTION 'POPUP_TO_INFORM'
        EXPORTING
          titel = g_repid
          txt2  = sy-subrc
          txt1  = 'The control could not be created'(510).
    ENDIF.
    CREATE OBJECT splitter
      EXPORTING
        parent  = custom_cont
        rows    = 2
        columns = 1.

    CALL METHOD splitter->get_container  " HPC
      EXPORTING
        row       = 1
        column    = 1
      RECEIVING
        container = result_cont1.

    CREATE OBJECT grid_result1
      EXPORTING
        i_parent = result_cont1.

    gs_layout1-cwidth_opt = 'X'.
    gs_layout1-zebra = 'X'.

    CREATE OBJECT event_receiver.
*   注册事件handler方法
    "   双击某一单元格事件
    SET HANDLER event_receiver->handle_double_click1 FOR grid_result1.

    "   单击某一单元格事件
    SET HANDLER event_receiver->handle_cell_click   FOR grid_result1.

    CALL METHOD grid_result1->register_edit_event
      EXPORTING
        i_event_id = cl_gui_alv_grid=>mc_evt_modified.

    CALL METHOD grid_result1->register_edit_event
      EXPORTING
        i_event_id = cl_gui_alv_grid=>mc_evt_enter.

    CALL METHOD grid_result1->set_table_for_first_display
      EXPORTING
        i_structure_name = 'GT_ALV1'
        is_layout        = gs_layout1
      CHANGING
        it_outtab        = gt_alv1[]
        it_fieldcatalog  = gt_fcat1[]
        it_sort          = gt_sort1[].

*    CALL METHOD grid_result1->register_edit_event
*      EXPORTING
*        i_event_id = cl_gui_alv_grid=>mc_evt_modified.


    CALL METHOD splitter->get_container  " HPC
      EXPORTING
        row       = 2
        column    = 1
      RECEIVING
        container = result_cont2.

    CREATE OBJECT grid_result2
      EXPORTING
        i_parent = result_cont2.

    gs_layout2-cwidth_opt = 'X'.
    gs_layout2-zebra = 'X'.

    CALL METHOD grid_result2->register_edit_event
      EXPORTING
        i_event_id = cl_gui_alv_grid=>mc_evt_modified.

    CALL METHOD grid_result2->register_edit_event
      EXPORTING
        i_event_id = cl_gui_alv_grid=>mc_evt_enter.

    CALL METHOD grid_result2->set_table_for_first_display
      EXPORTING
        i_structure_name = 'GT_ALV2'
        is_layout        = gs_layout2
      CHANGING
        it_outtab        = gt_alv2[]
        it_fieldcatalog  = gt_fcat2[]
        it_sort          = gt_sort2[].

*    CALL METHOD grid_result2->register_edit_event
*      EXPORTING
*        i_event_id = cl_gui_alv_grid=>mc_evt_modified.

  ELSE.
    "冲销设置tcode 为 RELOAD,防止因为原来的tcode影响程序执行
    CALL METHOD cl_gui_cfw=>set_new_ok_code
      EXPORTING
        new_code = 'RELOAD'.

    "ALV 控制:刷新稳定性 按行刷新,可选参数
    CLEAR ls_stbl.
    "稳定刷新,保持滚动条位置
    ls_stbl-row = ls_stbl-col = 'X'.

    "刷新
    CALL METHOD grid_result1->refresh_table_display
      EXPORTING
        is_stable      = ls_stbl
        i_soft_refresh = 'X'.

    CALL METHOD grid_result2->refresh_table_display
      EXPORTING
        is_stable      = ls_stbl
        i_soft_refresh = 'X'.
    "提交
    CALL METHOD cl_gui_cfw=>flush.
  ENDIF.
ENDFORM.                    " SUB_CR_ALV_RESULT
*&---------------------------------------------------------------------*
*&      Form  FRM_RESEND_MES
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_resend_mes .
  "重新发送MES
  LOOP AT gt_alv1 INTO gs_alv1 WHERE checkbox = 'X'.

  ENDLOOP.
ENDFORM.                    " FRM_RESEND_MES

实现出来效果图:

 备注:关于一些OO ALV 自定义触发事件,可以参考以下地址:

OO ALV常用功能完整简例(热键单击,双击,帮助,编辑,自定义工具条等)_SAP刘梦_新浪博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值