SALV获取OO ALV GRID对象

前言

从SALV实例中获取grid对象,弥补SALV自身方法的不足;参考来源 power-of-abap-objects-overcome-the-restrictions-of-salv-model
虽然原博客评论区好多人阴阳怪气,但我还是要说那句,不管白猫黑猫,抓到老鼠的就是好猫。
需要注意的是,该代码在S4 HANA 1809中尚可运行,但是S4 HANA 2021中已失效,SAP修改SALV类的继承关系, 目前没找到方法。

代码参考

点击查看旧版本代码
CLASS lcl_salv_model DEFINITION INHERITING FROM cl_salv_model_list.
  PUBLIC SECTION.
    METHODS:get_grid
      IMPORTING io_model      TYPE REF TO cl_salv_model
      RETURNING VALUE(r_grid) TYPE REF TO cl_gui_alv_grid.
ENDCLASS.
CLASS lcl_salv_model IMPLEMENTATION.
  METHOD get_grid.
    DATA:grid_adapter TYPE REF TO cl_salv_grid_adapter.
    grid_adapter ?= io_model->r_controller->r_adapter.
    r_grid = grid_adapter->get_grid( ).
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.

  SELECT *
    FROM tj02t
    UP TO 10 ROWS
    INTO TABLE @DATA(lt_data).

  cl_salv_table=>factory(
  IMPORTING
    r_salv_table = DATA(lo_salv)
  CHANGING
    t_table = lt_data
  ).

  lo_salv->display( ).
  DATA:lo_alv_model TYPE REF TO cl_salv_model.
  lo_alv_model = lo_salv.
  DATA(lo_local_salv_model) =  NEW lcl_salv_model( ).
  DATA(lo_grid) = lo_local_salv_model->get_grid( lo_alv_model ).
posted @ 2023-11-21 10:57  长沙铁道学院-康帅傅  阅读(64)  评论(0)    收藏  举报