{"id":121,"date":"2023-12-01T07:16:10","date_gmt":"2023-12-01T07:16:10","guid":{"rendered":"https:\/\/sapabap.dwimansolution.com\/?p=121"},"modified":"2023-12-01T08:54:45","modified_gmt":"2023-12-01T08:54:45","slug":"sap-abap-ztemplate-2-with-class-alv-factory-alv-events-and-macro","status":"publish","type":"post","link":"https:\/\/sapabap.dwimansolution.com\/index.php\/2023\/12\/01\/sap-abap-ztemplate-2-with-class-alv-factory-alv-events-and-macro\/","title":{"rendered":"SAP ABAP &#8211; ZTEMPLATE #2 with Class, ALV Factory, ALV Events, and Macro"},"content":{"rendered":"\n<p>For you who want to working faster, just <strong>copy-paste<\/strong> and modified \ud83d\ude42<\/p>\n\n\n\n<p>Practically for display only report I just have to set data structure and add the get data logic. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>* ==================================================================== *\n* Program......:                                                       *\n* Title........:                                                       *\n* Author.......:                                                       *\n* Date.........:                                                       *\n* -------------------------------------------------------------------- *\n* Description..:                                                       *\n* -------------------------------------------------------------------- *\n* Modification list.:                                                  *\n* Date            Author            Description:                       *\n* --\/--\/--        -------           ------------                       *\n* ==================================================================== *\nREPORT ZTEMPLATE.\n\n* -------------------------------------------------------------------- *\n*  M A C R O\n* -------------------------------------------------------------------- *\nDEFINE _set_text.\n  TRY.\n      lo_col ?= lo_columns->get_column( &amp;1 ).\n      lo_col->set_short_text( &amp;2 ).\n      lo_col->set_medium_text( &amp;3 ).\n      lo_col->set_long_text( &amp;4 ).\n    CATCH cx_salv_not_found.\n  ENDTRY.\nEND-OF-DEFINITION.\n\n* -------------------------------------------------------------------- *\n*  G L O B A L   V A R I A B L E\n* -------------------------------------------------------------------- *\nCLASS lcl_main DEFINITION DEFERRED.\nTYPES: BEGIN OF ty_data,\n         field TYPE dummy,\n       END OF ty_data,\n       tt_data TYPE TABLE OF ty_data.\n\nDATA: t_data  TYPE tt_data,\n      go_main TYPE REF TO lcl_main.\n\n\r\n* -------------------------------------------------------------------- *\r\n*  S E L E C T I O N   S C R E E N\r\n* -------------------------------------------------------------------- *\r\nSELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.\r\n*  SELECT-OPTIONS: so_xxx FOR table-field.\r\n*  PARAMETERS: p_xxx TYPE table-field.\r\nSELECTION-SCREEN END OF BLOCK b1.\n\n\n* -------------------------------------------------------------------- *\n*  C L A S S\n* -------------------------------------------------------------------- *\nCLASS lcl_main DEFINITION.\n  PUBLIC SECTION.\n    METHODS:\n      constructor,\n      get_data,\n      display_data.\n\n  PRIVATE SECTION.\n    DATA: lo_alv TYPE REF TO cl_salv_table.\n\n    METHODS:\n      set_columns,\n      set_events.\n\n    METHODS:\n      on_user_command FOR EVENT added_function OF cl_salv_events\n        IMPORTING e_salv_function.\n\n*      on_before_salv_function FOR EVENT before_salv_function OF cl_salv_events\n*        IMPORTING e_salv_function,\n*\n*      on_after_salv_function FOR EVENT after_salv_function OF cl_salv_events\n*        IMPORTING e_salv_function,\n*\n*      on_double_click FOR EVENT double_click OF cl_salv_events_table\n*        IMPORTING row column,\n*\n*      on_link_click FOR EVENT link_click OF cl_salv_events_table\n*        IMPORTING row column.\n\nENDCLASS.\n\nCLASS lcl_main IMPLEMENTATION.\n  METHOD constructor.\n    TRY.\n        CALL METHOD cl_salv_table=>factory\n          IMPORTING\n            r_salv_table = lo_alv\n          CHANGING\n            t_table      = t_data.\n      CATCH cx_salv_msg.\n    ENDTRY.\n  ENDMETHOD. \" constructor\n\n  METHOD get_data.\n  ENDMETHOD. \" get_data\n\n  METHOD display_data.\n\n    DATA(lo_functions) = lo_alv->get_functions( ).\n    lo_functions->set_all( abap_true ).\n\n    set_columns( ).\n    set_events( ).\n\n    lo_alv->display( ).\n  ENDMETHOD. \" display_data\n\n\n  METHOD set_events.\n    DATA(lo_events) = lo_alv->get_event( ).\n\n    SET HANDLER me->on_user_command FOR lo_events.\n*    SET HANDLER me->on_before_salv_function FOR lo_events.\n*    SET HANDLER me->on_after_salv_function FOR lo_events.\n*    SET HANDLER me->on_double_click FOR lo_events.\n*    SET HANDLER me->on_link_click FOR lo_events.\n  ENDMETHOD. \" set_events\n\n  METHOD set_columns.\n    DATA: lo_col TYPE REF TO cl_salv_column_table.\n\n    DATA(lo_columns) = lo_alv->get_columns( ).\n    lo_columns->set_optimize( 'X' ).\n\n    _set_text 'FIELD' 'Short' 'Medium' 'Long'.\n  ENDMETHOD. \" set_columns\n\n\n  METHOD on_user_command.\n  ENDMETHOD. \" on_user_command\nENDCLASS.\n\n\n* -------------------------------------------------------------------- *\n*  S T A R T   O F    S E L E C T I O N\n* -------------------------------------------------------------------- *\nSTART-OF-SELECTION.\n  PERFORM f_start.\n\n* -------------------------------------------------------------------- *\n*  E N D   O F   S E L E C T I O N\n* -------------------------------------------------------------------- *\nEND-OF-SELECTION.\n  PERFORM f_end.\n\n* -------------------------------------------------------------------- *\n*  S U B R O U T I N E S\n* -------------------------------------------------------------------- *\n*&amp;---------------------------------------------------------------------*\n*&amp; Form f_start\n*&amp;---------------------------------------------------------------------*\n*&amp; text\n*&amp;---------------------------------------------------------------------*\n*&amp; -->  p1        text\n*&amp; &lt;--  p2        text\n*&amp;---------------------------------------------------------------------*\nFORM f_start .\n  CREATE OBJECT go_main.\n  go_main->get_data( ).\nENDFORM.\n\n\n*&amp;---------------------------------------------------------------------*\n*&amp; Form f_end\n*&amp;---------------------------------------------------------------------*\n*&amp; text\n*&amp;---------------------------------------------------------------------*\n*&amp; -->  p1        text\n*&amp; &lt;--  p2        text\n*&amp;---------------------------------------------------------------------*\nFORM f_end .\n  go_main->display_data( ).\nENDFORM.<\/code><\/pre>\n\n\n\n<p>Thank you for come here and enjoy \ud83d\ude42<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>For you who want to working faster, just copy-paste and modified \ud83d\ude42 Practically for display only report I just have to set data structure and add the get data logic. Thank you for come here and enjoy \ud83d\ude42<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/posts\/121"}],"collection":[{"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/comments?post=121"}],"version-history":[{"count":2,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/posts\/121\/revisions"}],"predecessor-version":[{"id":123,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/posts\/121\/revisions\/123"}],"wp:attachment":[{"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/media?parent=121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/categories?post=121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/tags?post=121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}