Advertisement
HolsteinD

SALV Sample II

Nov 7th, 2021
2,703
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 9.85 KB | None | 0 0
  1. *----------------------------------------------------------------------*
  2. *       CLASS lcl_alv DEFINITION
  3. *----------------------------------------------------------------------*
  4. *
  5. *----------------------------------------------------------------------*
  6. CLASS lcl_alv DEFINITION.
  7.   PUBLIC SECTION.
  8.     METHODS: constructor IMPORTING ir_action TYPE REF TO lcl_action,
  9.              show.
  10.   PRIVATE SECTION.
  11.     DATA: mt_data TYPE REF TO data,
  12.           mr_tabledescr TYPE REF TO cl_abap_tabledescr,
  13.           mr_action  TYPE REF TO lcl_action,
  14.           mr_table TYPE REF TO cl_salv_table,
  15.           mr_functions TYPE REF TO cl_salv_functions,
  16.           mr_sorts   TYPE REF TO cl_salv_sorts,
  17.           mr_display TYPE REF TO cl_salv_display_settings,
  18.           mr_layout TYPE REF TO cl_salv_layout,
  19.           mr_columns TYPE REF TO cl_salv_columns_table,
  20.           mr_events TYPE REF TO cl_salv_events_table,
  21.           mr_selections TYPE REF TO cl_salv_selections.
  22.     METHODS: set_column_text  IMPORTING i_colname TYPE lvc_fname
  23.                                         i_stext TYPE any
  24.                                         i_mtext TYPE any OPTIONAL
  25.                                         i_ltext TYPE any OPTIONAL
  26.                                         ,
  27.              handle_button_click FOR EVENT added_function OF cl_salv_events
  28.                                  IMPORTING e_salv_function,
  29.              handle_doubleclick FOR EVENT double_click OF cl_salv_events_table
  30.                                 IMPORTING  row column,
  31.              call_as03 IMPORTING is_data TYPE any,
  32.              call_miro IMPORTING is_data TYPE any,
  33.              call_me23n IMPORTING is_data TYPE any,
  34.              bdc_field IMPORTING  fnam TYPE any
  35.                                   fval TYPE any
  36.                         CHANGING  t_bdcdata      TYPE bdcdata_tab,
  37.              bdc_dynpro IMPORTING program TYPE any
  38.                                   dynpro  TYPE any
  39.                         CHANGING  t_bdcdata TYPE bdcdata_tab.
  40. ENDCLASS.                    "lcl_alv DEFINITION
  41. *----------------------------------------------------------------------*
  42. *       CLASS lcl_alv IMPLEMENTATION
  43. *----------------------------------------------------------------------*
  44. *
  45. *----------------------------------------------------------------------*
  46. CLASS lcl_alv IMPLEMENTATION.
  47.   METHOD constructor.
  48.     DATA: key TYPE salv_s_layout_key,
  49.           lr_column           TYPE REF TO cl_salv_column_table.
  50.     DATA: lv_msg              TYPE string,
  51.           lo_salv_msg         TYPE REF TO cx_salv_msg.
  52.     FIELD-SYMBOLS <data> TYPE table.
  53.     mr_action = ir_action.
  54.     mr_tabledescr = mr_action->get_table_type( ).
  55.     CREATE DATA mt_data TYPE HANDLE mr_tabledescr.
  56.     ASSIGN mt_data->* TO <data>.
  57.     mr_action->get_data( IMPORTING et_data = <data> ).
  58.     TRY.
  59.         cl_salv_table=>factory( IMPORTING r_salv_table = mr_table
  60.                                  CHANGING t_table = <data>  ).
  61.         mr_functions = mr_table->get_functions( ).
  62.         mr_functions->set_all( abap_true ).
  63.  
  64.         mr_columns = mr_table->get_columns( ).
  65.         mr_columns->set_optimize( abap_true ).
  66.  
  67. *        CALL METHOD mr_columns->set_color_column
  68. *          EXPORTING
  69. *            value = 'STYLE'.
  70. *        lr_column ?= mr_columns->get_column( 'GRPID' ).
  71. *        lr_column->set_technical( abap_true ).
  72. *        lr_column->set_key( abap_true ).
  73. *        lr_column ?= mr_columns->get_column( 'STATUS' ).
  74. *        lr_column->set_icon( abap_true ).
  75.  
  76.         IF p_showos IS INITIAL.
  77.           DATA: lr_struc_descr TYPE REF TO cl_abap_structdescr,
  78.                   lt_comp TYPE cl_abap_structdescr=>component_table,
  79.                   ls_comp TYPE LINE OF cl_abap_structdescr=>component_table,
  80.                   lv_fnam TYPE lvc_fname.
  81.           lr_struc_descr ?= cl_abap_structdescr=>describe_by_name( 'ZFIAA_MOVE_VNA_OS_DATA_S' ).
  82.           lt_comp = lr_struc_descr->get_components( ).
  83.           LOOP AT lt_comp INTO ls_comp.
  84.             lv_fnam = ls_comp-name.
  85.             TRY .
  86.                 lr_column ?= mr_columns->get_column( lv_fnam ).
  87.                 lr_column->set_visible( if_salv_c_bool_sap=>false ).
  88.               CATCH cx_salv_not_found.
  89.  
  90.             ENDTRY.
  91.           ENDLOOP.
  92.         ENDIF.
  93.  
  94. *        set_column_text( i_colname = 'GLO_RUS_PRT_PRVG' i_stext = 'КодСокрИмщ'(s19) i_mtext = 'СокращНалогНаИмущ-во'(m19) i_ltext = 'Сокращение налога на имущество'(l19) ).
  95.  
  96.         mr_display = mr_table->get_display_settings( ).
  97.         mr_display->set_striped_pattern( cl_salv_display_settings=>true ).
  98.         mr_display->set_list_header( text-h00 ).
  99.  
  100.         mr_layout = mr_table->get_layout( ).
  101.         key-report = sy-repid.
  102.         mr_layout->set_key( key ).
  103.         mr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
  104.         mr_layout->set_default( cl_salv_layout=>true ).
  105.  
  106. *        mr_table->set_screen_status(
  107. *           pfstatus = 'SALV'
  108. *           report = sy-repid
  109. *           set_functions = mr_table->c_functions_default ).
  110.  
  111.         mr_events = mr_table->get_event( ).
  112.         SET HANDLER me->handle_button_click FOR mr_events.
  113.         SET HANDLER me->handle_doubleclick FOR mr_events.
  114.         mr_selections = mr_table->get_selections( ).
  115.         mr_selections->set_selection_mode( ).
  116.  
  117.         mr_sorts ?= mr_table->get_sorts( ).
  118. *        mr_sorts->add_sort( columnname = 'GRPID' obligatory = abap_true ).
  119.  
  120.       CATCH cx_salv_msg INTO lo_salv_msg.
  121.         lv_msg = lo_salv_msg->get_text( ).
  122.         MESSAGE lv_msg TYPE 'E'.
  123.     ENDTRY.
  124.   ENDMETHOD.                    "constructor
  125.   METHOD show.
  126.     mr_table->display( ).
  127.   ENDMETHOD.                    "show
  128.   METHOD handle_button_click.
  129.     CASE e_salv_function.
  130.       WHEN 'ZCOPY'.
  131. *      WHEN 'ZLOG'.
  132. *        DATA lv_hnd TYPE balloghndl.
  133. *        DATA lt_hnd TYPE bal_t_logh.
  134. *        lv_hnd = mr_data->get_log_handle( ).
  135. *        APPEND lv_hnd TO lt_hnd.
  136. *        CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
  137. *          EXPORTING
  138. *            i_t_log_handle = lt_hnd.
  139.       WHEN OTHERS.
  140.     ENDCASE.
  141.   ENDMETHOD.                    "handle_button_click
  142.   METHOD handle_doubleclick.
  143.     FIELD-SYMBOLS: <table> TYPE table,
  144.                    <out> TYPE ANY,
  145.                    <details> TYPE ANY.
  146.     DATA: ls_details TYPE REF TO data.
  147.     ASSIGN mt_data->* TO <table>.
  148.     READ TABLE <table> ASSIGNING <out> INDEX row.
  149.  
  150.     mr_action->get_details( EXPORTING is_out = <out>
  151.                             IMPORTING es_details_ref = ls_details ).
  152.     ASSIGN ls_details->* TO <details>.
  153.  
  154.     CASE column.
  155.       WHEN 'ANLN1'.
  156.         call_as03( <details> ).
  157.       WHEN 'ORDER'.
  158.         call_me23n( <details> ).
  159.       WHEN 'M_SGTXT'.
  160.         call_miro( <details> ).
  161.       WHEN OTHERS.
  162.     ENDCASE.
  163.  
  164.   ENDMETHOD.                    "handle_doubleclick
  165.  
  166.   METHOD call_as03.
  167.     TYPES: BEGIN OF ty_as03_data,
  168.               bukrs TYPE bukrs,
  169.               anln1 TYPE anln1,
  170.            END OF ty_as03_data.
  171.     DATA ls_as03_data TYPE ty_as03_data.
  172.     MOVE-CORRESPONDING is_data TO ls_as03_data.
  173.     SET PARAMETER ID: 'AN1' FIELD ls_as03_data-anln1,
  174.                       'BUK' FIELD ls_as03_data-bukrs.
  175.     CALL TRANSACTION 'AS03' AND SKIP FIRST SCREEN.
  176.   ENDMETHOD.                    "call_as03
  177.   METHOD call_miro.
  178.     TYPES: BEGIN OF ty_miro_data,
  179.               belnr TYPE rbkp-belnr,
  180.               gjahr TYPE rbkp-gjahr,
  181.            END OF ty_miro_data.
  182.     DATA ls_miro_data TYPE ty_miro_data.
  183.     MOVE-CORRESPONDING is_data TO ls_miro_data.
  184.     SET PARAMETER ID: 'RBN' FIELD ls_miro_data-belnr,
  185.                       'GJR' FIELD ls_miro_data-gjahr.
  186.     CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
  187.   ENDMETHOD.                    "call_miro
  188.   METHOD call_me23n.
  189.     TYPES: BEGIN OF ty_me23n_data,
  190.               ebeln TYPE ebeln,
  191.            END OF ty_me23n_data.
  192.     DATA: ls_me23n_data TYPE ty_me23n_data.
  193.     DATA: lt_bdcdata TYPE bdcdata_tab,
  194.           ctu_params TYPE ctu_params.
  195.  
  196.     MOVE-CORRESPONDING is_data TO ls_me23n_data.
  197.  
  198.     ctu_params-dismode = 'E'.
  199.     ctu_params-defsize = ' '.
  200.     ctu_params-updmode = 'L'.
  201.  
  202.     CLEAR lt_bdcdata.
  203.     bdc_dynpro( EXPORTING program = 'SAPLMEGUI' dynpro = '0014' CHANGING t_bdcdata = lt_bdcdata ).
  204.     bdc_field( EXPORTING fnam = 'BDC_OKCODE' fval = '=MECHOB' CHANGING t_bdcdata = lt_bdcdata ).
  205.     bdc_dynpro( EXPORTING program = 'SAPLMEGUI' dynpro = '0002' CHANGING t_bdcdata = lt_bdcdata ).
  206.     bdc_field( EXPORTING fnam = 'MEPO_SELECT-EBELN' fval = ls_me23n_data-ebeln CHANGING t_bdcdata = lt_bdcdata ).
  207.     bdc_field( EXPORTING fnam = 'BDC_OKCODE' fval = '=MEOK' CHANGING t_bdcdata = lt_bdcdata ).
  208.     CALL TRANSACTION 'ME23N' USING lt_bdcdata OPTIONS FROM ctu_params.
  209.   ENDMETHOD.                    "call_me23n
  210.  
  211.   METHOD bdc_field.
  212.  
  213.     DATA: wa_bdcdata LIKE LINE OF t_bdcdata.
  214.  
  215.     wa_bdcdata-fnam = fnam.
  216.     wa_bdcdata-fval = fval.
  217.     APPEND wa_bdcdata TO t_bdcdata.
  218.  
  219.   ENDMETHOD.                    "BDC_FIELD
  220.  
  221.   METHOD bdc_dynpro.
  222.  
  223.     DATA: wa_bdcdata LIKE LINE OF t_bdcdata.
  224.  
  225.     wa_bdcdata-program  = program.
  226.     wa_bdcdata-dynpro   = dynpro.
  227.     wa_bdcdata-dynbegin = 'X'.
  228.     APPEND wa_bdcdata TO t_bdcdata.
  229.  
  230.   ENDMETHOD.                    "BDC_DYNPRO
  231.   METHOD set_column_text.
  232.     DATA lr_column TYPE REF TO cl_salv_column_table..
  233.     lr_column ?= mr_columns->get_column( i_colname ).
  234.     lr_column->set_short_text( i_stext ).
  235.     IF i_mtext IS SUPPLIED.
  236.       lr_column->set_medium_text( i_mtext ).
  237.     ELSE.
  238.       lr_column->set_medium_text( i_stext ).
  239.     ENDIF.
  240.     IF i_ltext IS SUPPLIED.
  241.       lr_column->set_long_text( i_ltext ).
  242.     ELSEIF i_mtext IS SUPPLIED.
  243.       lr_column->set_long_text( i_mtext ).
  244.     ELSE.
  245.       lr_column->set_long_text( i_stext ).
  246.     ENDIF.
  247.   ENDMETHOD.                    "set_column_texts
  248. ENDCLASS.                    "lcl_alv IMPLEMENTATION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement