Advertisement
Lena1234578

Untitled

Jun 9th, 2019
806
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 13.79 KB | None | 0 0
  1. class ZCL_P2PE312_NOTIF_VIEW definition
  2.   public
  3.   final
  4.   create public .
  5.  
  6. public section.
  7.  
  8.   interfaces IF_SALV_EVENTS_ACTIONS_TABLE .
  9.  
  10.   constants:
  11.     BEGIN OF mcs_view_mode,
  12.         single   TYPE char1 VALUE 'S',
  13.         multiple TYPE char1 VALUE 'M',
  14.       END OF mcs_view_mode .
  15.  
  16.   events REFRESH .
  17.   events ACTIVATE .
  18.   events DEACTIVATE .
  19.   events DELETE .
  20.   events SELECT_ALL
  21.     exporting
  22.       value(ET_COLUMNS) type SALV_T_COLUMN .
  23.   events DESELECT_ALL
  24.     exporting
  25.       value(ET_COLUMNS) type SALV_T_COLUMN .
  26.  
  27.   methods REFRESH_ALV .
  28.   methods CONSTRUCTOR
  29.     importing
  30.       !IS_SEL type ZSP2PE312_SEL
  31.       !IV_PROGRAM type PROGRAM .
  32.   methods SHOW_ALV
  33.     importing
  34.       !IT_DATA type ref to DATA
  35.       !IV_TITLE type LVC_TITLE
  36.       !IV_MODE type CHAR1
  37.       !IT_NSORT_AUTHORITY type ZIP2PE312_NSORT .
  38.   methods ON_LINK_CLICK
  39.     for event LINK_CLICK of CL_SALV_EVENTS_TABLE
  40.     importing
  41.       !ROW
  42.       !COLUMN .
  43. protected section.
  44. private section.
  45.  
  46.   data MR_ALV type ref to CL_SALV_TABLE .
  47.   data MV_PROGRAM type PROGRAM .
  48.   data MS_SEL type ZSP2PE312_SEL .
  49.   constants:
  50.     BEGIN OF mcs_user_command,
  51.       refresh      TYPE salv_de_function VALUE 'REFRESH',
  52.       active       TYPE salv_de_function VALUE 'ACTIV',
  53.       deactive     TYPE salv_de_function VALUE 'DEACTIV',
  54.       delete       TYPE salv_de_function VALUE 'DELETE',
  55.       select_all   TYPE salv_de_function VALUE 'SEL_ALL',
  56.       deselect_all TYPE salv_de_function VALUE 'SEL_CAN',
  57.     END OF mcs_user_command .
  58.  
  59.   methods SET_FUNCTIONAL_SETTINGS .
  60.   methods HANDLE_USER_COMMAND
  61.     for event IF_SALV_EVENTS_FUNCTIONS~ADDED_FUNCTION of CL_SALV_EVENTS_TABLE
  62.     importing
  63.       !E_SALV_FUNCTION
  64.       !SENDER .
  65.   methods SET_COLUMNS
  66.     importing
  67.       !IV_MODE type CHAR1
  68.       !IT_NSORT_AUTHORITY type ZIP2PE312_NSORT .
  69. ENDCLASS.
  70.  
  71.  
  72.  
  73. CLASS ZCL_P2PE312_NOTIF_VIEW IMPLEMENTATION.
  74.  
  75.  
  76. * <SIGNATURE>---------------------------------------------------------------------------------------+
  77. * | Instance Public Method ZCL_P2PE312_NOTIF_VIEW->CONSTRUCTOR
  78. * +-------------------------------------------------------------------------------------------------+
  79. * | [--->] IS_SEL                         TYPE        ZSP2PE312_SEL
  80. * | [--->] IV_PROGRAM                     TYPE        PROGRAM
  81. * +--------------------------------------------------------------------------------------</SIGNATURE>
  82.   method CONSTRUCTOR.
  83.  
  84.     mv_program = iv_program.
  85.     ms_sel     = is_sel.
  86.  
  87.   endmethod.
  88.  
  89.  
  90. * <SIGNATURE>---------------------------------------------------------------------------------------+
  91. * | Instance Private Method ZCL_P2PE312_NOTIF_VIEW->HANDLE_USER_COMMAND
  92. * +-------------------------------------------------------------------------------------------------+
  93. * | [--->] E_SALV_FUNCTION                LIKE
  94. * | [--->] SENDER                         LIKE
  95. * +--------------------------------------------------------------------------------------</SIGNATURE>
  96.   METHOD handle_user_command.
  97.  
  98.     DATA(lr_selection) = mr_alv->get_selections( ).
  99.     DATA(lt_columns)   = lr_selection->get_selected_columns( ).
  100.  
  101.     DELETE lt_columns WHERE table_line NP 'SELECT_CB_*'.
  102.  
  103.     CASE e_salv_function.
  104.       WHEN zcl_p2pe312_notif_view=>mcs_user_command-active.
  105.         RAISE EVENT activate.
  106.       WHEN zcl_p2pe312_notif_view=>mcs_user_command-deactive.
  107.         RAISE EVENT deactivate.
  108.       WHEN zcl_p2pe312_notif_view=>mcs_user_command-delete.
  109.         RAISE EVENT delete.
  110.       WHEN zcl_p2pe312_notif_view=>mcs_user_command-refresh.
  111.         RAISE EVENT refresh.
  112.       WHEN zcl_p2pe312_notif_view=>mcs_user_command-select_all.
  113.         RAISE EVENT select_all
  114.           EXPORTING
  115.             et_columns = lt_columns.
  116.       WHEN zcl_p2pe312_notif_view=>mcs_user_command-deselect_all.
  117.         RAISE EVENT deselect_all
  118.           EXPORTING
  119.             et_columns = lt_columns.
  120.       WHEN OTHERS.
  121.     ENDCASE.
  122.  
  123.     mr_alv->refresh(
  124.       EXPORTING
  125.         s_stable     = VALUE lvc_s_stbl( row = abap_true
  126.                                          col = abap_true )
  127.         refresh_mode = if_salv_c_refresh=>soft
  128.     ).
  129.  
  130.   ENDMETHOD.
  131.  
  132.  
  133. * <SIGNATURE>---------------------------------------------------------------------------------------+
  134. * | Instance Public Method ZCL_P2PE312_NOTIF_VIEW->ON_LINK_CLICK
  135. * +-------------------------------------------------------------------------------------------------+
  136. * | [--->] ROW                            LIKE
  137. * | [--->] COLUMN                         LIKE
  138. * +--------------------------------------------------------------------------------------</SIGNATURE>
  139.   method ON_LINK_CLICK.
  140.  
  141.     RAISE EVENT if_salv_events_actions_table~link_click
  142.       EXPORTING
  143.         row    = row
  144.         column = column.
  145.  
  146.     mr_alv->refresh(
  147.       EXPORTING
  148.         s_stable     = VALUE lvc_s_stbl( row = abap_true
  149.                                          col = abap_true )
  150.     ).
  151.  
  152.   endmethod.
  153.  
  154.  
  155. * <SIGNATURE>---------------------------------------------------------------------------------------+
  156. * | Instance Public Method ZCL_P2PE312_NOTIF_VIEW->REFRESH_ALV
  157. * +-------------------------------------------------------------------------------------------------+
  158. * +--------------------------------------------------------------------------------------</SIGNATURE>
  159.   method REFRESH_ALV.
  160.  
  161.     mr_alv->refresh(
  162.       EXPORTING
  163.         s_stable     = VALUE #( col = abap_true
  164.                                 row = abap_true )
  165.     ).
  166.  
  167.   endmethod.
  168.  
  169.  
  170. * <SIGNATURE>---------------------------------------------------------------------------------------+
  171. * | Instance Private Method ZCL_P2PE312_NOTIF_VIEW->SET_COLUMNS
  172. * +-------------------------------------------------------------------------------------------------+
  173. * | [--->] IV_MODE                        TYPE        CHAR1
  174. * | [--->] IT_NSORT_AUTHORITY             TYPE        ZIP2PE312_NSORT
  175. * +--------------------------------------------------------------------------------------</SIGNATURE>
  176.   METHOD set_columns.
  177.  
  178.     DATA lr_column TYPE REF TO cl_salv_column_table.
  179.  
  180.     DATA(lr_columns) = mr_alv->get_columns( ).
  181.     lr_columns->set_optimize( if_salv_c_bool_sap=>true ).
  182.     TRY.
  183.         lr_column ?= lr_columns->get_column( 'BWTAR' ).
  184.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  185.         lr_column ?= lr_columns->get_column( 'BSART' ).
  186.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  187.         lr_column ?= lr_columns->get_column( 'DOC_NUM' ).
  188.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  189.         lr_column ?= lr_columns->get_column( 'DOC_POS' ).
  190.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  191.         lr_column ?= lr_columns->get_column( 'DOC_TYPE' ).
  192.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  193.         lr_column ?= lr_columns->get_column( 'DOC_NUM_SEND' ).
  194.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  195.         lr_column ?= lr_columns->get_column( 'DOC_POS_SEND' ).
  196.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  197.         lr_column ?= lr_columns->get_column( 'RLGORT' ).
  198.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  199.         lr_column ?= lr_columns->get_column( 'ZMNFO_COPY' ).
  200.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  201.         lr_column ?= lr_columns->get_column( 'ZOTFO_COPY' ).
  202.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  203.         lr_column ?= lr_columns->get_column( 'WAREHOUSE_MANAG_TAB' ).
  204.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  205.       CATCH cx_salv_not_found. "
  206.     ENDTRY.
  207.  
  208.     LOOP AT it_nsort_authority ASSIGNING FIELD-SYMBOL(<ls_nsort>).
  209.       TRY.
  210.           lr_column ?= lr_columns->get_column( |SELECT_CB_{ <ls_nsort>-nsort }| ).
  211.           lr_column->set_cell_type( if_salv_c_cell_type=>checkbox_hotspot ).
  212.         CATCH cx_salv_not_found. "
  213.       ENDTRY.
  214.     ENDLOOP.
  215.  
  216.     DATA(lt_columns) = lr_columns->get( ).
  217.     LOOP AT lt_columns ASSIGNING FIELD-SYMBOL(<ls_column>).
  218.       lr_column ?= <ls_column>-r_column.
  219.  
  220.       DATA(lv_length) = strlen( <ls_column>-columnname ) - 3.
  221.       IF <ls_column>-columnname+lv_length(1) = '_'.
  222.         lv_length = lv_length + 1.
  223.         IF <ls_column>-columnname+lv_length(2) NOT IN ms_sel-s_nsort[].
  224.           lr_column->set_technical( if_salv_c_bool_sap=>true ).
  225.         ENDIF.
  226.  
  227.         DATA(lv_add_text) = <ls_column>-columnname+lv_length(2).
  228.         lr_column->set_short_text( |{ lr_column->get_short_text( ) } { lv_add_text }| ).
  229.         lr_column->set_medium_text( |{ lr_column->get_medium_text( ) } { lv_add_text }| ).
  230.         lr_column->set_long_text( |{ lr_column->get_long_text( ) } { lv_add_text }| ).
  231.         lr_column->set_optimized( if_salv_c_bool_sap=>true ).
  232.       ENDIF.
  233.  
  234.       IF <ls_column>-columnname CP 'SELECT_CB*'.
  235. *        lr_column->set_cell_type( if_salv_c_cell_type=>checkbox_hotspot ).
  236.         lr_column->set_output_length( '5' ).
  237.       ENDIF.
  238.  
  239.       IF <ls_column>-columnname CP 'EVENT_ACT*'.
  240.         lr_column->set_icon( if_salv_c_bool_sap=>true ).
  241.         lr_column->set_output_length( '5' ).
  242.       ENDIF.
  243.  
  244.       IF <ls_column>-columnname CP 'NSTAT_ICON*'.
  245.         lr_column->set_icon( if_salv_c_bool_sap=>true ).
  246.         lr_column->set_output_length( '5' ).
  247.       ENDIF.
  248.  
  249.  
  250.       IF <ls_column>-columnname CP 'EVENT_FLAG*'.
  251.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  252. *        lr_column->set_specific_group( id = 'GR1' ).
  253.       ENDIF.
  254.  
  255.       IF <ls_column>-columnname CP 'NSORT_TXT*'.
  256.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  257.       ENDIF.
  258.  
  259.       IF <ls_column>-columnname CP 'EVENT_DATE*'.
  260.         lr_column->set_technical( if_salv_c_bool_sap=>true ).
  261.       ENDIF.
  262.  
  263. *     Скрываем столбцы со статусом подписки на уведомления при запуске по нескольким пользователям
  264.       IF iv_mode = zcl_p2pe312_notif_view=>mcs_view_mode-multiple.
  265.         IF <ls_column>-columnname CP 'NSTAT_*'.
  266.           lr_column->set_technical( if_salv_c_bool_sap=>true ).
  267.         ENDIF.
  268.       ENDIF.
  269.  
  270.     ENDLOOP.
  271.  
  272.   ENDMETHOD.
  273.  
  274.  
  275. * <SIGNATURE>---------------------------------------------------------------------------------------+
  276. * | Instance Private Method ZCL_P2PE312_NOTIF_VIEW->SET_FUNCTIONAL_SETTINGS
  277. * +-------------------------------------------------------------------------------------------------+
  278. * +--------------------------------------------------------------------------------------</SIGNATURE>
  279.   METHOD set_functional_settings.
  280.  
  281.     DATA(lr_functional_settings) = mr_alv->get_functional_settings( ).
  282.     DATA(lr_tooltips) = lr_functional_settings->get_tooltips( ).
  283.     TRY.
  284.         lr_tooltips->add_tooltip(
  285.           EXPORTING
  286.             type             = cl_salv_tooltip=>c_type_icon
  287.             value            = CONV lvc_value( icon_light_out )
  288.             tooltip          = text-000
  289.         ).
  290.       CATCH cx_salv_existing.    "
  291.     ENDTRY.
  292.     TRY.
  293.         lr_tooltips->add_tooltip(
  294.           EXPORTING
  295.             type             = cl_salv_tooltip=>c_type_icon
  296.             value            = CONV lvc_value( icon_green_light )
  297.             tooltip          = text-001
  298.         ).
  299.       CATCH cx_salv_existing.    "
  300.     ENDTRY.
  301.  
  302.   ENDMETHOD.
  303.  
  304.  
  305. * <SIGNATURE>---------------------------------------------------------------------------------------+
  306. * | Instance Public Method ZCL_P2PE312_NOTIF_VIEW->SHOW_ALV
  307. * +-------------------------------------------------------------------------------------------------+
  308. * | [--->] IT_DATA                        TYPE REF TO DATA
  309. * | [--->] IV_TITLE                       TYPE        LVC_TITLE
  310. * | [--->] IV_MODE                        TYPE        CHAR1
  311. * | [--->] IT_NSORT_AUTHORITY             TYPE        ZIP2PE312_NSORT
  312. * +--------------------------------------------------------------------------------------</SIGNATURE>
  313.   METHOD show_alv.
  314.  
  315.     DATA: ls_key TYPE salv_s_layout_key.
  316.  
  317.     ASSIGN it_data->*  TO FIELD-SYMBOL(<lt_data>).
  318.     CHECK <lt_data> IS ASSIGNED.
  319.     IF mr_alv IS NOT BOUND.
  320.       TRY.
  321.           cl_salv_table=>factory(
  322.             IMPORTING
  323.               r_salv_table = mr_alv
  324.             CHANGING
  325.               t_table      = <lt_data>
  326.           ).
  327.  
  328.           set_functional_settings( ).
  329.           set_columns(
  330.             EXPORTING
  331.               iv_mode            = iv_mode
  332.               it_nsort_authority = it_nsort_authority
  333.           ).
  334.  
  335.           DATA(lr_display_settings) = mr_alv->get_display_settings( ).
  336.           lr_display_settings->set_striped_pattern( abap_true ) .
  337.           lr_display_settings->set_list_header( iv_title ).
  338.  
  339.           DATA(lr_functions) = mr_alv->get_functions( ).
  340.           lr_functions->set_all( abap_true ).
  341.  
  342.           DATA(lr_selections) = mr_alv->get_selections( ).
  343.           lr_selections->set_selection_mode(
  344.               value = if_salv_c_selection_mode=>row_column
  345.           ).
  346.  
  347.           DATA(lr_layout) = mr_alv->get_layout( ).
  348.           ls_key-report = mv_program.
  349.           lr_layout->set_key( ls_key ).
  350.           lr_layout->set_default( if_salv_c_bool_sap=>true ).
  351.           lr_layout->set_save_restriction( if_salv_c_layout=>restrict_none  ).
  352.  
  353.           mr_alv->set_screen_status(
  354.             EXPORTING
  355.               report        = me->mv_program
  356.               pfstatus      = 'SALV_TABLE_STANDARD'
  357.               set_functions = mr_alv->c_functions_all
  358.           ).
  359.           DATA(lr_events) = mr_alv->get_event( ).
  360.           SET HANDLER me->handle_user_command FOR lr_events.
  361.           SET HANDLER me->on_link_click FOR lr_events.
  362.  
  363.         CATCH cx_salv_msg INTO DATA(lr_salv_msg).
  364.           DATA(lv_message) = CONV string( lr_salv_msg->get_text( ) ).
  365.           MESSAGE lv_message TYPE 'I'.
  366.           RETURN.
  367.       ENDTRY.
  368.     ENDIF.
  369.  
  370.     mr_alv->refresh( ).
  371.     mr_alv->display( ).
  372.  
  373.  
  374.   ENDMETHOD.
  375. ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement