Advertisement
Suncatcher

Access ALV model from SALV

Jun 23rd, 2019
968
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 1.71 KB | None | 0 0
  1. REPORT zalv_model.
  2.  
  3. CLASS lcl_salv_model DEFINITION INHERITING FROM cl_salv_model_list.
  4.   PUBLIC SECTION.
  5.     DATA: o_adapter TYPE REF TO cl_salv_adapter.
  6.     METHODS: get_adapter IMPORTING io_model TYPE REF TO cl_salv_model.
  7. ENDCLASS.
  8.  
  9. CLASS lcl_salv_model IMPLEMENTATION.
  10.   METHOD get_adapter.
  11.     o_adapter ?= io_model->r_controller->r_adapter.
  12.   ENDMETHOD.
  13. ENDCLASS.
  14.  
  15. START-OF-SELECTION.
  16.   DATA: o_salv_model TYPE REF TO lcl_salv_model,
  17.         lo_alv_mod   TYPE REF TO cl_salv_model,
  18.         lo_full_adap TYPE REF TO cl_salv_grid_adapter.
  19.  
  20.   SELECT *
  21.     INTO TABLE @DATA(lt_bseg)
  22.     FROM bseg
  23.     UP TO 20 ROWS.
  24.  
  25.   TRY.
  26.       cl_salv_table=>factory(
  27.         EXPORTING
  28.           r_container = NEW cl_gui_custom_container( 'SALV' )
  29.           container_name = 'SALV'
  30.         IMPORTING
  31.           r_salv_table = DATA(lo_alv)
  32.         CHANGING
  33.           t_table      = lt_bseg ).
  34.     CATCH cx_salv_msg.
  35.   ENDTRY.
  36.  
  37.   TRY.
  38.       DATA(lo_sort) = lo_alv->get_sorts( ).
  39.       DATA(lo_aggrs) = lo_alv->get_aggregations( ).
  40.  
  41.       lo_sort->add_sort( columnname = 'BSCHL' subtotal   = if_salv_c_bool_sap=>true ).
  42.       lo_aggrs->add_aggregation( columnname  = 'DMBTR' aggregation = if_salv_c_aggregation=>total ).
  43.  
  44.     CATCH cx_salv_not_found.                           "#EC NO_HANDLER
  45.   ENDTRY.
  46.  
  47.   lo_alv->display( ).
  48.  
  49.   CREATE OBJECT o_salv_model.
  50.   lo_alv_mod ?= lo_alv.
  51.  
  52.   o_salv_model->get_adapter( io_model = lo_alv_mod ).
  53.   lo_full_adap ?= o_salv_model->o_adapter.
  54.  
  55.   DATA(o_alv_grid) = lo_full_adap->get_grid( ).
  56.  
  57.   IF o_alv_grid IS BOUND.
  58.     o_alv_grid->set_frontend_layout( is_layout = VALUE #( no_totline = 'X' ) ).
  59.     o_alv_grid->refresh_table_display( ).
  60.   ENDIF.
  61.  
  62.   CALL SCREEN 100.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement