top of page

SAP ABAP - Submit a program and get data from ALV

Updated: Aug 29, 2022


"" Here is an example function module for getting data from submitted program


FUNCTION zbpksdf_004_get_data_alv01.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(IS_PARAMS) TYPE  ZBPKSD_S_004_PARAMS
*"     REFERENCE(IS_SELOPT) TYPE  ZBPKSD_S_004_SELOPT
*"  EXPORTING
*"     REFERENCE(ET_LIST) TYPE  ZBPKSD_TT_004_ARCMTR_ALV01
*"  EXCEPTIONS
*"      ALV_NOT_REACHED
*"      NO_DATA
*"----------------------------------------------------------------------


*
  """ Serkan Durdağ Begin 30.06.2018 12:12:33
  DATA : t_sscren TYPE TABLE OF rsparams,
               gt_data  TYPE TABLE OF zsd_s_arcmtr.








  DATA: lo_struct_param TYPE REF TO cl_abap_structdescr,
              lt_comp_param   TYPE abap_component_tab,
              ls_comp_param   TYPE abap_componentdescr.


  DATA: lo_struct_selop TYPE REF TO cl_abap_structdescr,
              lt_comp_selop   TYPE abap_component_tab,
              ls_comp_selop   TYPE abap_componentdescr.


  lo_struct_param ?= cl_abap_typedescr=>describe_by_data( is_params ).
  lt_comp_param = lo_struct_param->get_components( ).


  lo_struct_selop ?= cl_abap_typedescr=>describe_by_data( is_selopt ).
  lt_comp_selop = lo_struct_selop->get_components( ).




  LOOP AT lt_comp_param REFERENCE INTO DATA(lr_comp).
    ASSIGN COMPONENT lr_comp->name OF STRUCTURE is_params 
                                                                        TO FIELD-SYMBOL(<lv_param_val>).
    IF <lv_param_val> IS ASSIGNED.
      APPEND INITIAL LINE TO t_sscren REFERENCE INTO DATA(lr_sel_screen).
      lr_sel_screen->selname = lr_comp->name.
      lr_sel_screen->kind = 'P'.
      lr_sel_screen->low = <lv_param_val>.
    ENDIF.
  ENDLOOP.




  FIELD-SYMBOLS : <lt_selop_tab> TYPE STANDARD TABLE.
  LOOP AT lt_comp_selop REFERENCE INTO lr_comp.


    ASSIGN COMPONENT lr_comp->name OF STRUCTURE is_selopt TO <lt_selop_tab>.
    IF <lv_param_val> IS ASSIGNED.


      LOOP AT <lt_selop_tab> ASSIGNING FIELD-SYMBOL(<ls_selop_tab>).


        ASSIGN COMPONENT 'SIGN' OF STRUCTURE <ls_selop_tab> 
                                                        TO FIELD-SYMBOL(<lv_sign>).


        ASSIGN COMPONENT 'OPTION' OF STRUCTURE <ls_selop_tab> 
                                                             TO FIELD-SYMBOL(<lv_option>).


        ASSIGN COMPONENT 'LOW' OF STRUCTURE <ls_selop_tab> 
                                                       TO FIELD-SYMBOL(<lv_low>).


        ASSIGN COMPONENT 'HIGH' OF STRUCTURE <ls_selop_tab> 
                                                         TO FIELD-SYMBOL(<lv_high>).


        APPEND INITIAL LINE TO t_sscren REFERENCE INTO lr_sel_screen.
        lr_sel_screen->selname = lr_comp->name.
        lr_sel_screen->kind = 'S'.
        lr_sel_screen->sign = <lv_sign>.
        lr_sel_screen->option = <lv_option>.
        lr_sel_screen->low = <lv_low>.
        lr_sel_screen->high = <lv_high>.


      ENDLOOP.




    ENDIF.
  ENDLOOP.




  cl_salv_bs_runtime_info=>set(    EXPORTING display  = abap_false
                                             metadata = abap_false
                                             data     = abap_true ).


  SUBMIT zsd_r_arcmtr WITH SELECTION-TABLE t_sscren  AND RETURN.




  TRY.
      FIELD-SYMBOLS  : <lt_pay_data>   TYPE ANY TABLE .
      DATA lr_pay_data              TYPE REF TO data.


      cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = lr_pay_data ).
      ASSIGN lr_pay_data->* TO <lt_pay_data>.


    CATCH cx_salv_bs_sc_runtime_info.


      RAISE alv_not_reached.


  ENDTRY.


  cl_salv_bs_runtime_info=>clear_all( ).




  LOOP AT <lt_pay_data> ASSIGNING FIELD-SYMBOL(<ls_pay_data>).
    APPEND INITIAL LINE TO et_list REFERENCE INTO DATA(lr_list).
    MOVE-CORRESPONDING <ls_pay_data> TO lr_list->*.
  ENDLOOP.




  """ Serkan Durdağ End 30.06.2018 12:12:33


ENDFUNCTION.

31 views0 comments

Recent Posts

See All
Post: Blog2_Post
bottom of page