ABAPSTEMP 02

  1. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2. *--[ include ZXXXXXXX_CLS.
  3.  
  4. CLASS zMAIN_msg DEFINITION.
  5.  
  6.   PUBLIC SECTION.
  7.  
  8.     TYPES: BEGIN OF ty_msg,
  9.              text TYPE  char100sm,
  10.              msgid  TYPE  symsgid,
  11.              msgty  TYPE  symsgty,
  12.              msgno  TYPE  symsgno,
  13.              msgv1  TYPE  symsgv,
  14.              msgv2  TYPE  symsgv,
  15.              msgv3  TYPE  symsgv,
  16.              msgv4  TYPE  symsgv,
  17.            END OF ty_msg.
  18.  
  19.     DATA: t_msg TYPE STANDARD TABLE OF ty_msg.
  20.  
  21.     METHODS: msg_add_sys IMPORTING iv_msgid TYPE symsgid
  22.                                    iv_msgno TYPE symsgno
  23.                                    iv_msgty TYPE symsgty
  24.                                    iv_msgv1 TYPE symsgv OPTIONAL
  25.                                    iv_msgv2 TYPE symsgv OPTIONAL
  26.                                    iv_msgv3 TYPE symsgv OPTIONAL
  27.                                    iv_msgv4 TYPE symsgv OPTIONAL,
  28.              msg_add_txt IMPORTING iv_text TYPE string
  29.                                    iv_msgty TYPE symsgty,
  30.              msg_display IMPORTING iv_popup TYPE boolean,
  31.              msg_refresh,
  32.              msg_check_error RETURNING value(rv_result) TYPE boolean.
  33.  
  34. ENDCLASS.                    "ZCL_MSG DEFINITION
  35.  
  36. CLASS ZMAIN_msg IMPLEMENTATION.
  37.  
  38.   METHOD msg_check_error.
  39.     DATA: l_msg          TYPE ty_msg.
  40.  
  41.     READ TABLE t_msg WITH KEY msgty = 'E' TRANSPORTING NO FIELDS.
  42.     IF sy-subrc = 0.
  43.       rv_result = 'X'.
  44.     ELSE.
  45.       rv_result = ' '.
  46.     ENDIF.
  47.   ENDMETHOD.                    "msg_check_error
  48.  
  49.   METHOD msg_refresh.
  50.     REFRESH t_msg.
  51.   ENDMETHOD.                    "msg_refresh
  52.  
  53.   METHOD msg_display.
  54.     TYPE-POOLS esp1.
  55.     DATA: lt_message_tab TYPE esp1_message_tab_type,
  56.           ls_message_tab TYPE LINE OF esp1_message_tab_type,
  57.           l_msg          TYPE ty_msg,
  58.           l_lineno       TYPE mesg-zeile.
  59.     CHECK t_msg[] IS NOT INITIAL.
  60.     l_lineno = LINES( t_msg ).
  61.     IF iv_popup = 'X' OR l_lineno > 1.
  62.       LOOP AT t_msg INTO l_msg.
  63.         IF l_msg-msgid IS INITIAL.
  64. *--[ Si es sólo texto lo maquillamos
  65.           l_msg-msgid = '00'.
  66.           l_msg-msgno = '398'.
  67.         ENDIF.
  68.         MOVE-CORRESPONDING l_msg TO ls_message_tab.
  69.         l_lineno              = l_lineno + 1.
  70.         ls_message_tab-lineno = l_lineno.
  71.         INSERT ls_message_tab INTO TABLE lt_message_tab.
  72.       ENDLOOP.
  73.       CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
  74.         TABLES
  75.           i_message_tab = lt_message_tab.
  76.     ELSEIF iv_popup IS INITIAL OR l_lineno = 1.
  77.       READ TABLE t_msg INTO l_msg INDEX  1.
  78.       IF l_msg-msgid IS INITIAL.
  79. *--[ Si es sólo texto lo maquillamos
  80.         l_msg-msgid = '00'.
  81.         l_msg-msgno = '398'.
  82.       ENDIF.
  83.       MESSAGE ID l_msg-msgid TYPE l_msg-msgty NUMBER l_msg-msgno WITH l_msg-msgv1 l_msg-msgv2 l_msg-msgv3 l_msg-msgv4.
  84.     ENDIF.
  85.   ENDMETHOD.                    "msg_display
  86.  
  87.   METHOD msg_add_txt.
  88. *--[ Sólo metemos texto sin importar código
  89.     DATA: l_msg TYPE ty_msg,
  90.           l_string TYPE string.
  91.  
  92.     l_msg-msgv1 = l_string = l_msg-text = iv_text.
  93.     l_msg-msgty = iv_msgty.
  94.     SHIFT l_string LEFT BY 50 PLACES.
  95.     l_msg-msgv2 = l_string.
  96.     INSERT l_msg INTO TABLE t_msg.
  97.   ENDMETHOD.                    "msg_add_txt
  98.  
  99.   METHOD msg_add_sys.
  100. *--[ Metemos todo el mensaje completo
  101.     DATA: l_msg TYPE ty_msg.
  102.     l_msg-msgid = iv_msgid .
  103.     l_msg-msgno = iv_msgno .
  104.     l_msg-msgty = iv_msgty .
  105.     l_msg-msgv1 = iv_msgv1 .
  106.     l_msg-msgv2 = iv_msgv2 .
  107.     l_msg-msgv3 = iv_msgv3 .
  108.     l_msg-msgv4 = iv_msgv4 .
  109.     MESSAGE ID     iv_msgid TYPE l_msg-msgty
  110.     NUMBER l_msg-msgno
  111.     INTO   l_msg-text
  112.     WITH   l_msg-msgv1
  113.           l_msg-msgv2.
  114.     INSERT l_msg INTO TABLE t_msg.
  115.  
  116.   ENDMETHOD.                    "MSG_ADD
  117.  
  118. ENDCLASS.
  119.  
  120. CLASS zmain_alv_fast DEFINITION.
  121.  
  122.   PUBLIC SECTION.
  123.  
  124.     CLASS-METHODS:
  125.       alv_paint IMPORTING iV_popup TYPE any
  126.                 CHANGING  it_tab   TYPE ANY TABLE.
  127.  
  128. ENDCLASS.
  129.  
  130. CLASS zmain_alv_fast IMPLEMENTATION.
  131.  
  132.   METHOD alv_paint.
  133.     DATA go_alv TYPE REF TO cl_salv_table.
  134.     TRY.
  135.         cl_salv_table=>factory(
  136.           IMPORTING
  137.             r_salv_table = go_alv
  138.           CHANGING
  139.             t_table      = it_tab[] ).
  140.  
  141.       CATCH cx_salv_msg.
  142.     ENDTRY.
  143.  
  144. *  DATA: lr_functions TYPE REF TO cl_salv_functions_list.
  145.  
  146.     DATA(lr_functions) = go_alv->get_functions( ).
  147.     lr_functions->set_all( 'X' ).
  148.  
  149.     DATA(ob_salv_selections) = go_alv->get_selections( ).
  150.     ob_salv_selections->set_selection_mode( if_salv_c_selection_mode=>row_column ).
  151.     go_alv->get_columns( )->set_optimize( ).
  152. *  DATA(lr_column) =  go_alv->get_columns( )->get_column( columnname = 'FLG' ).
  153. *  lr_column->set_visible( value  = if_salv_c_bool_sap=>false ).
  154. *  lr_column =   go_alv->get_columns( )->get_column( columnname = 'ORDENADOR_P' ).
  155. *  lr_column->set_visible( value  = if_salv_c_bool_sap=>false ).
  156.     DATA(gr_display) = go_alv->get_display_settings( ).
  157. *  gr_display->set_list_header( 'Seleccione firmantes' ).
  158.  
  159.  
  160.     IF NOT iV_popup IS INITIAL.
  161.       go_alv->set_screen_popup(
  162.         start_column = 5
  163.         end_column  = 90
  164.         start_line  = 5
  165.         end_line    = 25 ).
  166.     ENDIF.
  167.  
  168.     go_alv->display( ).
  169.  
  170.   ENDMETHOD.
  171.  
  172. ENDCLASS.
  173.  
  174. CLASS zmain_report DEFINITION.
  175.  
  176.   PUBLIC SECTION.
  177.  
  178.     CLASS-METHODS:
  179. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  180. *--[ Estructurales
  181.       eve_initialization,
  182.       eve_start_of_selection,
  183.       eve_end_of_selection,
  184.       eve_selection_screen_out,
  185.  
  186. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  187. *--[ Operacionales
  188.       data_load,
  189.       data_list,
  190.       data_save.
  191. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  192.   PRIVATE SECTION.
  193.  
  194.     CLASS-DATA:
  195.       my_sy      TYPE syst,
  196.       g_error    TYPE sy-subrc, "<-- Control de errores
  197.       g_alv_fast TYPE REF TO zmain_alv_fast,
  198.       G_MSG      type REF TO ZMAIN_MSG.
  199.  
  200. ENDCLASS.
  201.  
  202. CLASS zmain_report IMPLEMENTATION.
  203.  
  204.  
  205.  
  206. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  207. *--[ Operacionales
  208.   METHOD data_load.
  209.   ENDMETHOD.
  210.  
  211.   METHOD data_list.
  212.   ENDMETHOD.
  213.  
  214.   METHOD data_save.
  215.   ENDMETHOD.
  216.  
  217. * * * * * * *  * * * * * * * * * * * * * * * * * * * * * * * * * * *
  218. *--[ Estructurales
  219.   METHOD eve_end_of_selection.
  220.  
  221.   ENDMETHOD.
  222.  
  223.   METHOD eve_start_of_selection.
  224.  
  225.   ENDMETHOD.
  226.  
  227.   METHOD eve_selection_screen_out.
  228.   ENDMETHOD.
  229.  
  230.   METHOD eve_initialization.
  231.  
  232.     MOVE-CORRESPONDING syst TO my_sy.
  233.  
  234.     CREATE OBJECT g_alv_fast.
  235.     create object G_MSG.
  236.  
  237.   ENDMETHOD.
  238.  
  239. ENDCLASS.
  240.  
  241. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  242. *--[ include ZXXXXXXX_TOP.
  243. DATA: g_main TYPE REF TO zmain_report.
  244.  
  245. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  246. *--[ include ZXXXXXXX_EVE.
  247. INITIALIZATION.
  248.   CREATE OBJECT g_main.
  249.   g_main->eve_initialization( ).
  250.  
  251. AT SELECTION-SCREEN OUTPUT.
  252.   g_main->eve_selection_screen_out( ).
  253.  
  254. START-OF-SELECTION.
  255.   g_main->eve_start_of_selection( ).
  256.  
  257. END-OF-SELECTION.
  258.   g_main->eve_end_of_selection( ).