Advertisement
Yoshkeen

ABAP 1

Oct 27th, 2023
1,252
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 4.80 KB | None | 1 0
  1. class ZCL_ITCCC_DISPLAY_ALV definition
  2.   public
  3.   final
  4.   create public .
  5.  
  6. public section.
  7.  
  8.   methods CONSTRUCTOR
  9.     importing
  10.       !IM_LOG type ZIT_CONTROL_LOG_T .
  11.   methods SHOW
  12.     importing
  13.       !IM_RUN_ID type ZITCCC_CHECK_ID optional .
  14.   methods SET_ALV_DISPLAY_SETTINGS .
  15. protected section.
  16. private section.
  17.  
  18.   data LOG type ZIT_CONTROL_LOG_T .
  19.   data LOG_DISPLAY type ZIT_CONTROL_LOG_DISPLAY_T .
  20.   data ALV type ref to CL_SALV_TABLE .
  21.   constants C_OK type C value 'S' ##NO_TEXT.
  22.   constants C_ABORT type C value 'A' ##NO_TEXT.
  23.   constants C_WARNING type C value 'W' ##NO_TEXT.
  24.   constants C_INFO type C value 'I' ##NO_TEXT.
  25.   constants C_ERROR type C value 'E' ##NO_TEXT.
  26.   constants C_COLOR_ONE type I value 1 ##NO_TEXT.
  27.   constants C_COLOR_TWO type I value 8 ##NO_TEXT.
  28.  
  29.   methods MAP_ID_TO_COLOR
  30.     importing
  31.       !IM_INPUT type ZIT_CONTROL_LOG_DISPLAY_T
  32.     returning
  33.       value(EX_RESULT) type ZIT_CONTROL_LOG_DISPLAY_T .
  34.   methods MAP_STATUS_TO_ICON
  35.     importing
  36.       !IM_CHECK_STATUS type ZITCCC_CRESULT
  37.     returning
  38.       value(RE_CHECK_STATUS_I) type ICON_D .
  39.   methods CONVERT_LOG_FOR_DISPLAY
  40.     importing
  41.       !IM_LOG type ZIT_CONTROL_LOG_T
  42.     returning
  43.       value(RE_LOG_DISPLAY) type ZIT_CONTROL_LOG_DISPLAY_T .
  44. ENDCLASS.
  45.  
  46.  
  47.  
  48. CLASS ZCL_ITCCC_DISPLAY_ALV IMPLEMENTATION.
  49.  
  50.  
  51.   METHOD constructor.
  52.  
  53. *xxx
  54.     log = im_log.
  55.  
  56.     TRY.
  57.  
  58. *xxx
  59.         log_display = me->convert_log_for_display( log ).
  60.  
  61. *xxx
  62.         cl_salv_table=>factory(
  63.           IMPORTING
  64.             r_salv_table = alv
  65.           CHANGING
  66.             t_table      = log_display ).
  67.  
  68.       CATCH cx_root into DATA(cx_root).
  69.  
  70. *xxx
  71.         MESSAGE s398(00) WITH `Error in ALV: ` && cx_root->get_text( ).
  72.  
  73.     ENDTRY.
  74.  
  75.   ENDMETHOD.
  76.  
  77.  
  78.   METHOD convert_log_for_display.
  79.  
  80.     DATA lw_log_display TYPE zit_control_log_display.
  81.  
  82.     LOOP AT im_log INTO DATA(lw_log). "#EC CI_LOOP_INTO_WA
  83.  
  84.       MOVE-CORRESPONDING lw_log TO lw_log_display.
  85.       lw_log_display-check_status_i = me->map_status_to_icon( lw_log-check_status ).
  86.       APPEND lw_log_display TO re_log_display.
  87.  
  88.     ENDLOOP.
  89.  
  90. *xxx
  91.     re_log_display = me->map_id_to_color( re_log_display ).
  92.  
  93.  
  94.   ENDMETHOD.
  95.  
  96.  
  97.   method MAP_ID_TO_COLOR.
  98.  
  99.     DATA lt_input_table TYPE zit_control_log_display_t.
  100.     DATA lv_current_color TYPE i.
  101.     DATA ls_color TYPE lvc_s_scol.
  102.     DATA lv_previous_id TYPE zit_control_log-run_id.
  103.     FIELD-SYMBOLS <lw_input> TYPE zit_control_log_display.
  104.  
  105. *xxx
  106.     lt_input_table = im_input.
  107.  
  108. *xxx
  109.     LOOP AT lt_input_table ASSIGNING <lw_input>.
  110.  
  111. *xxx
  112.       IF lv_previous_id <> <lw_input>-run_id.
  113.         IF lv_current_color = c_color_one.
  114.           lv_current_color = c_color_two.
  115.         ELSE.
  116.           lv_current_color = c_color_one.
  117.         ENDIF.
  118.       ENDIF.
  119.  
  120.       ls_color-color-col = lv_current_color.
  121.       ls_color-color-int = 0.
  122.       ls_color-color-inv = 0.
  123.  
  124.       lv_previous_id = <lw_input>-run_id.
  125.  
  126.       APPEND ls_color TO <lw_input>-color.
  127.  
  128.     ENDLOOP.
  129.  
  130. *xxx
  131.     ex_result = lt_input_table.
  132.  
  133.   endmethod.
  134.  
  135.  
  136.   method MAP_STATUS_TO_ICON.
  137.  
  138.     INCLUDE <icons>.
  139.  
  140.     CASE im_check_status.
  141.  
  142.       WHEN c_info.
  143.         re_check_status_i = icon_message_type.
  144.  
  145.       WHEN c_ok.
  146.         re_check_status_i = icon_message_uptodate.
  147.  
  148.       WHEN c_warning.
  149.         re_check_status_i = icon_message_outofdate.
  150.  
  151.       WHEN c_error.
  152.         re_check_status_i = icon_message_orphaned.
  153.  
  154.       WHEN c_abort.
  155.         re_check_status_i = icon_message_faulty.
  156.  
  157.       WHEN OTHERS.
  158.         re_check_status_i = icon_message_faulty.
  159.  
  160.     ENDCASE.
  161.  
  162.   endmethod.
  163.  
  164.  
  165.   METHOD set_alv_display_settings.
  166.  
  167.     DATA: lcl_display TYPE REF TO cl_salv_display_settings,
  168.           lcl_filters TYPE REF TO cl_salv_filters,
  169.           lv_header   TYPE lvc_title.
  170.  
  171. *xxx
  172.     lcl_filters = alv->get_filters( ).
  173.  
  174.     lcl_filters->add_filter(
  175.       columnname  = 'CHECK_TYPE'
  176.       sign        = 'E'
  177.       option      = 'EQ'
  178.       low         = 'SYSTEM' ).
  179.  
  180. *xxx
  181.     lcl_display = alv->get_display_settings( ).
  182.     lv_header =  text-001.
  183.     lcl_display->set_list_header( lv_header ).
  184.     alv->get_functions( )->set_all( abap_true ).
  185. *    alv->get_columns( )->set_optimize( abap_true ).
  186. *    alv->get_columns( )->get_column( 'CHECK_LOG')->set_output_length( 100 ).
  187.     alv->get_columns( )->get_column( 'CHECK_STATUS_I' )->set_alignment( if_salv_c_alignment=>centered ).
  188.  
  189. *xxx
  190.     alv->get_columns( )->get_column( 'RUN_ID')->set_visible( if_salv_c_bool_sap=>false ).
  191.     alv->get_columns( )->get_column( 'TIMESSTAMP')->set_visible( if_salv_c_bool_sap=>false ).
  192.     alv->get_columns( )->set_color_column( 'COLOR' ).
  193.  
  194.     alv->get_columns( )->get_column( 'RUN_CLIENT' )->set_leading_zero( ).
  195.  
  196.   ENDMETHOD.
  197.  
  198.  
  199.   METHOD show.
  200.  
  201. *xxx
  202.     alv->display( ).
  203.  
  204.   ENDMETHOD.
  205. ENDCLASS.
  206.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement