Advertisement
hxxxrz

Untitled

Aug 13th, 2021
2,962
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 36.67 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *&  Include           J_3RF_SPD_GV_I
  3. *&---------------------------------------------------------------------*
  4.  
  5.  
  6. CLASS lcl_list_view IMPLEMENTATION.
  7.  
  8.   METHOD lif_singleton~get_instance.
  9.     IF loc_ref IS NOT BOUND.
  10.       CREATE OBJECT loc_ref.
  11.     ENDIF.
  12.  
  13.     r_ref = loc_ref.
  14.   ENDMETHOD.
  15.  
  16.   METHOD constructor.
  17.     CLEAR:
  18.       loc_loaded,
  19.       loc_data[],
  20.       loc_varname,
  21.       loc_alv_data[].
  22.   ENDMETHOD.
  23.  
  24.   METHOD set_variant_name.
  25.     loc_varname = iv_varname.
  26.   ENDMETHOD.
  27.  
  28.   METHOD reset_changed.
  29.     CLEAR loc_changed.
  30.   ENDMETHOD.
  31.  
  32.   METHOD refresh_stable.
  33.     DATA:
  34.           ls_stable TYPE lvc_s_stbl.
  35.  
  36.     ls_stable = 'XX'.
  37.     loc_grid->refresh_table_display( is_stable = ls_stable ).
  38.   ENDMETHOD.
  39.  
  40.  
  41.   METHOD set_data.
  42.     DATA:
  43.           ls_data LIKE LINE OF loc_alv_data.
  44.     FIELD-SYMBOLS:
  45.                   <fs_line> LIKE LINE OF loc_data.
  46.  
  47.     me->loc_data[] = it_data[].
  48.     REFRESH loc_alv_data.
  49. ENHANCEMENT-SECTION ES_J3RF_SPDL_LOAD_L SPOTS ES_J3RF_SPDL .
  50.  
  51.     LOOP AT me->loc_data ASSIGNING <fs_line>.
  52.       MOVE-CORRESPONDING <fs_line> TO ls_data.
  53.       IF <fs_line>-deleted EQ 'X'.
  54.         ls_data-deleted_icon = icon_delete.
  55.       ELSE.
  56.         CLEAR ls_data-deleted_icon.
  57.       ENDIF.
  58.       APPEND ls_data TO loc_alv_data.
  59.     ENDLOOP.
  60. END-ENHANCEMENT-SECTION.
  61.  
  62.  
  63. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Класс LCL_LIST_VIEW, Метод SET_DATA, Выход                                                                                                        A
  64. *$*$-Start: (1)---------------------------------------------------------------------------------$*$*
  65. ENHANCEMENT 7  ZEI_TR_040_SPD_LIST.    "active version
  66.   zcl_tr_040_spd_assist=>filter_by_exp_pay_date( EXPORTING it_exp_date = s_pdate[]
  67.                                                  CHANGING ct_spd = me->loc_data
  68.                                                           ct_spd_alv = loc_alv_data ).
  69. ENDENHANCEMENT.
  70. *$*$-End:   (1)---------------------------------------------------------------------------------$*$*
  71.   ENDMETHOD.
  72.  
  73.   METHOD get_data.
  74.     DATA:
  75.           ls_data LIKE LINE OF loc_data.
  76.     FIELD-SYMBOLS:
  77.                   <fs_line> LIKE LINE OF loc_alv_data.
  78.  
  79.     REFRESH loc_data.
  80.  
  81.     LOOP AT me->loc_alv_data ASSIGNING <fs_line>.
  82.       MOVE-CORRESPONDING <fs_line> TO ls_data.
  83.       APPEND ls_data TO loc_data.
  84.     ENDLOOP.
  85.  
  86.     et_data[] = me->loc_data[].
  87.  
  88.   ENDMETHOD.
  89.  
  90.   METHOD confirm_exit.
  91.     r_val = abap_true.
  92.     RETURN.
  93.  
  94.   ENDMETHOD.
  95.  
  96.   METHOD exit_ucomm.
  97.     DATA:
  98.       lv_ucomm TYPE syucomm,
  99.       lv_res   TYPE abap_bool.
  100.  
  101.     IF iv_ucomm IS SUPPLIED.
  102.       lv_ucomm = iv_ucomm.
  103.     ELSE.
  104.       lv_ucomm = sy-ucomm.
  105.     ENDIF.
  106.  
  107.     CASE lv_ucomm.
  108.       WHEN gc_commands-back
  109.       OR   gc_commands-up.
  110.         IF NOT me->confirm_exit(  ) IS INITIAL.
  111.           SET SCREEN 0.
  112.           LEAVE SCREEN.
  113.         ENDIF.
  114.  
  115.       WHEN gc_commands-exit
  116.       OR   gc_commands-end.
  117.         IF NOT me->confirm_exit(  ) IS INITIAL.
  118.           LEAVE PROGRAM.
  119.         ENDIF.
  120.       WHEN gc_commands-cancel.
  121.         IF NOT me->confirm_exit(  ) IS INITIAL.
  122.           LEAVE TO SCREEN 0.
  123.         ENDIF.
  124.     ENDCASE.
  125.  
  126.   ENDMETHOD.
  127.  
  128.   METHOD update_line.
  129.     DATA:
  130.           ls_data LIKE LINE OF loc_alv_data.
  131.  
  132.     FIELD-SYMBOLS:
  133.                    <fs_line> TYPE any.
  134.  
  135.     LOOP AT loc_alv_data ASSIGNING <fs_line> WHERE spd_id = is_header-spd_id AND spd_gjahr = is_header-spd_gjahr.
  136.       MOVE-CORRESPONDING is_header TO <fs_line>.
  137.     ENDLOOP.
  138.   ENDMETHOD.
  139.  
  140.   METHOD lock_line.
  141.     DATA:
  142.       lt_dealpass  TYPE j_3rf_dealpass_keytab,
  143.       ls_dealpass  LIKE LINE OF lt_dealpass,
  144.       lv_error     TYPE abap_bool,
  145.       lt_msg       TYPE j_3rs_msgs,
  146.       lt_dp_locked TYPE j_3rf_dealpass_keytab.
  147.  
  148.     CLEAR:
  149.       lt_dealpass[],
  150.       lt_dp_locked[],
  151.       ex_locked,
  152.       lt_msg[],
  153.       ls_dealpass,
  154.       es_message,
  155.       me->loc_locked.
  156.  
  157.     ls_dealpass = is_line-intpodnum.
  158.     APPEND ls_dealpass TO lt_dealpass.
  159.  
  160.     gr_dbobj->deal_pass_enqueue(
  161.       EXPORTING
  162.         iv_mode_j_3rfdp = 'E'    " Lock mode
  163.         it_dpkeys       = lt_dealpass   " Table with Deal Passport keys
  164. *        iv_scope        = '2'    " Control lock behavior when calling the update task
  165.         iv_wait         = space    " Flag indicating whether lock attempt is to be repeated
  166.       IMPORTING
  167.         et_enqueued_dp  = lt_dp_locked    " Table with Deal Passport keys
  168. *        et_messages     = lt_msg    " Check messages
  169.         ev_error        = lv_error    " Data element for domain BOOLE: TRUE (='X') and FALSE (=' ')
  170.     ).
  171.  
  172.     IF lv_error NE abap_true.
  173.       READ TABLE lt_dp_locked INTO ls_dealpass INDEX 1.
  174.       IF sy-subrc NE 0.
  175.         lv_error = abap_true.
  176.       ELSEIF is_line-intpodnum NE ls_dealpass.
  177.         lv_error = abap_true.
  178.       ENDIF.
  179.     ENDIF.
  180.  
  181.     IF lv_error NE abap_true.
  182.       me->loc_locked = is_line.
  183.       ex_locked      = abap_true.
  184.     ELSE.
  185.       lt_msg = gr_dbobj->get_messages( ).
  186.       READ TABLE lt_msg INTO es_message INDEX 1.
  187.       CLEAR ex_locked.
  188.     ENDIF.
  189.  
  190.   ENDMETHOD.
  191.  
  192.   METHOD unlock_line.
  193.  
  194.     DATA:
  195.       lt_dealpass TYPE j_3rf_dealpass_keytab,
  196.       ls_dealpass LIKE LINE OF lt_dealpass.
  197.  
  198.     CLEAR:
  199.       lt_dealpass[],
  200.       ls_dealpass,
  201.       es_message.
  202.  
  203.     ls_dealpass = is_line-intpodnum.
  204.     APPEND ls_dealpass TO lt_dealpass.
  205.  
  206.     gr_dbobj->deal_pass_dequeue(
  207.       EXPORTING
  208.         iv_mode_j_3rfdp = 'E'    " Lock mode
  209.         it_dpkeys       = lt_dealpass    " Table with Deal Passport keys
  210. *        iv_scope        = '3'    " Control lock behavior when calling the update task
  211. *        iv_synchron     = SPACE    " Flag: synchronous unlocking?
  212.     ).
  213.  
  214.     CLEAR me->loc_locked.
  215.     ex_unlocked      = abap_true.
  216.  
  217.   ENDMETHOD.
  218.  
  219.   METHOD display.
  220.     DATA:
  221.       lr_exc        TYPE REF TO cx_root,
  222.       lr_functions  TYPE REF TO cl_salv_functions_list,
  223.       lt_exclude    TYPE ui_functions,
  224.       ls_exclude    LIKE LINE OF lt_exclude,
  225.       lr_events     TYPE REF TO cl_salv_events_table,
  226.       lr_layout     TYPE REF TO cl_salv_layout,
  227.       lv_layout_key TYPE salv_s_layout_key,
  228.       ls_layout_var TYPE salv_s_layout,
  229.       lt_fieldcat   TYPE lvc_t_fcat,
  230.       lv_str        TYPE string,
  231.       ls_data       LIKE LINE OF loc_data,
  232.       ls_alv_data   LIKE LINE OF loc_alv_data,
  233.       ls_layout     TYPE lvc_s_layo,
  234.       lt_sort       TYPE lvc_t_sort,
  235.       ls_sort       TYPE lvc_s_sort,
  236.       lv_layo       TYPE lvc_s_layo.
  237.  
  238.     TRY.
  239.         CLEAR ls_layout.
  240.         ls_layout-stylefname = 'STYLE'.
  241.         ls_layout-sel_mode   = 'A'.
  242.  
  243.         IF loc_grid IS NOT BOUND.
  244.  
  245.           IF NOT me->loc_container IS BOUND.
  246.             CREATE OBJECT me->loc_container
  247.               EXPORTING
  248.                 container_name = 'GRID_CONT_100'    " Name of the Container to Which this Container is Linked
  249.               EXCEPTIONS
  250.                 OTHERS         = 7.
  251.             IF sy-subrc <> 0.
  252.               gr_app->last_message( ).
  253.               RETURN.
  254.             ENDIF.
  255.           ENDIF.
  256.  
  257.           CREATE OBJECT loc_grid
  258.             EXPORTING
  259.               i_parent      = me->loc_container    " Parent Container
  260.               i_appl_events = 'X'  "SPACE    " Register Events as Application Events
  261.             EXCEPTIONS
  262.               OTHERS        = 5.
  263.           IF sy-subrc <> 0.
  264.             gr_app->last_message(  ).
  265.           ENDIF.
  266.  
  267.  
  268.  
  269.           create_fieldcat(
  270.            IMPORTING
  271.             et_fieldcat = lt_fieldcat ).
  272.  
  273.           DATA:
  274.           ls_variant TYPE disvariant.
  275.           ls_variant-report  = sy-cprog.
  276.           ls_variant-log_group = gc_alv_variant_grp-list_view.
  277.  
  278.           IF NOT p_varl IS INITIAL.
  279.             ls_variant-variant   = p_varl.
  280.           ENDIF.
  281.  
  282.           me->loc_grid->set_table_for_first_display(
  283.             EXPORTING
  284. *              i_buffer_active               =     " Buffering Active
  285. *              i_bypassing_buffer            =     " Switch Off Buffer
  286. *              i_consistency_check           =     " Starting Consistency Check for Interface Error Recognition
  287. *             i_structure_name              = gc_alv_struct-grid_view    " Internal Output Table Structure Name
  288.               is_variant                    = ls_variant " Layout
  289.               i_save                        = 'A'    " Save Layout
  290. *              i_default                     = 'X'    " Default Display Variant
  291.               is_layout                     = ls_layout    " Layout
  292. *              is_print                      =     " Print Control
  293. *              it_special_groups             =     " Field Groups
  294. *              it_toolbar_excluding          = lt_exclude    " Excluded Toolbar Standard Functions
  295. *              it_hyperlink                  =     " Hyperlinks
  296. *              it_alv_graphics               =     " Table of Structure DTC_S_TC
  297. *              it_except_qinfo               =     " Table for Exception Tooltip
  298. *              ir_salv_adapter               =     " Interface ALV Adapter
  299.             CHANGING
  300.              it_outtab                     = loc_alv_data    " Output Table
  301.              it_fieldcatalog               =  lt_fieldcat   " Field Catalog
  302. *              it_sort                       =     " Sort Criteria
  303. *              it_filter                     =     " Filter Criteria
  304.             EXCEPTIONS
  305. *              invalid_parameter_combination = 1
  306. *              program_error                 = 2
  307. *              too_many_lines                = 3
  308.               OTHERS                        = 4
  309.           ).
  310.           IF sy-subrc <> 0.
  311.             gr_app->last_message( ).
  312.             RETURN.
  313.           ENDIF.
  314.  
  315.  
  316.           IF p_varl IS INITIAL.
  317.             CLEAR:
  318.                ls_sort, lt_sort[].
  319.             ls_sort-fieldname = 'SPD_ID'.
  320.             ls_sort-up        = 'X'.
  321.             APPEND ls_sort TO lt_sort.
  322.  
  323.             ls_sort-fieldname = 'SPD_GJAHR'.
  324.             ls_sort-up        = 'X'.
  325.             APPEND ls_sort TO lt_sort.
  326.  
  327.             me->loc_grid->set_sort_criteria(
  328.               lt_sort
  329.             ).
  330.  
  331.             me->loc_grid->refresh_table_display( ).
  332.           ENDIF.
  333.  
  334.  
  335.           SET HANDLER me->before_ucomm FOR loc_grid.
  336.           SET HANDLER me->ucomm FOR loc_grid.
  337.           SET HANDLER me->after_ucomm FOR loc_grid.
  338.           SET HANDLER me->toolbar FOR loc_grid.
  339.           SET HANDLER me->hotspot_click FOR loc_grid.
  340.           loc_grid->set_toolbar_interactive(  ).
  341.  
  342.         ELSE.
  343.           IF me->loc_updated EQ 'X'.
  344.             me->loc_updated = ''.
  345.           ENDIF.
  346.  
  347.         ENDIF.
  348.  
  349.  
  350.       CATCH cx_root INTO lr_exc.
  351.     ENDTRY.
  352.  
  353.   ENDMETHOD.
  354.  
  355.  
  356.   METHOD loaded_lines.
  357.  
  358.     rv_val = lines( me->loc_data ).
  359.  
  360.   ENDMETHOD.
  361.  
  362.  
  363.   METHOD set_ucomm.
  364.     loc_grid->set_user_command(
  365.       i_ucomm = iv_ucomm
  366.     ).
  367.  
  368.     sy-ucomm = iv_ucomm.
  369.  
  370.   ENDMETHOD.
  371.  
  372.   METHOD clear_ucomm.
  373.     loc_grid->set_user_command(
  374.       i_ucomm = space
  375.     ).
  376.  
  377.     CLEAR sy-ucomm.
  378.  
  379.   ENDMETHOD.
  380.  
  381.   METHOD create_fieldcat.
  382.     DATA:
  383.       ls_alv_data        LIKE LINE OF loc_alv_data,
  384.       ls_style           TYPE lvc_s_styl,
  385.       lt_style_ro        TYPE lvc_t_styl,
  386.       lt_style_rw        TYPE lvc_t_styl,
  387.       lt_str             TYPE string_table,
  388.       lv_str             TYPE string,
  389.       lv_tabix           LIKE sy-tabix,
  390.       lt_drop_down_alias TYPE lvc_t_dral,
  391.       ls_drop_down_alias TYPE lvc_s_dral,
  392.       lt_dd07v           TYPE TABLE OF dd07v,
  393.       ls_dd07v           TYPE dd07v,
  394.       lv_int             TYPE i,
  395.       lv_max             TYPE i,
  396.       ls_catalog         TYPE lvc_s_fcat.
  397.  
  398.     REFRESH et_fieldcat.
  399.  
  400.     CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
  401.       EXPORTING
  402. *       I_BUFFER_ACTIVE  =
  403.         i_structure_name = gc_alv_struct-list_view
  404. *       I_CLIENT_NEVER_DISPLAY       = 'X'
  405. *       I_BYPASSING_BUFFER           =
  406. *       I_INTERNAL_TABNAME           =
  407.       CHANGING
  408.         ct_fieldcat      = et_fieldcat
  409.       EXCEPTIONS
  410. *       INCONSISTENT_INTERFACE       = 1
  411. *       PROGRAM_ERROR    = 2
  412.         OTHERS           = 3.
  413.     IF sy-subrc <> 0.
  414. * Implement suitable error handling here
  415.     ENDIF.
  416.  
  417.  
  418.  
  419.     ls_catalog-tech ='X'.
  420.     ls_catalog-fieldname = 'STYLE'.
  421.     APPEND ls_catalog TO et_fieldcat.
  422.  
  423.  
  424.     CLEAR ls_catalog.
  425.  
  426.     MOVE 'X' TO:
  427.       ls_catalog-edit,
  428.       ls_catalog-tech,
  429.       ls_catalog-checkbox,
  430.       ls_catalog-hotspot,
  431.       ls_catalog-icon.
  432.  
  433.     DELETE et_fieldcat WHERE fieldname = :
  434.      'CHECKED'.
  435.  
  436.     MODIFY et_fieldcat FROM ls_catalog TRANSPORTING:
  437.       tech WHERE fieldname = 'BLOCKED',
  438.       icon WHERE fieldname = 'DELETED_ICON',
  439.       checkbox WHERE fieldname = 'CORRECTED',
  440.       checkbox WHERE fieldname = 'ARCHIVED',
  441.       hotspot  WHERE fieldname = 'INTCNUM',
  442.       hotspot  WHERE fieldname = 'EXTCNUM',
  443.       hotspot  WHERE fieldname = 'INTPODNUM',
  444.       hotspot  WHERE fieldname = 'EXTPODNUM',
  445.       hotspot  WHERE fieldname = 'DOC_NUM',
  446.       hotspot  WHERE fieldname = 'DOC_NUM_EXT',
  447.       hotspot  WHERE fieldname = 'SPD_ID'.
  448.  
  449.     CLEAR ls_style.
  450.     REFRESH:
  451.       lt_style_ro,
  452.       lt_style_rw,
  453.       lt_str.
  454.  
  455.     READ TABLE et_fieldcat INTO ls_catalog WITH KEY fieldname = 'DELETED'.
  456.     MODIFY et_fieldcat FROM ls_catalog TRANSPORTING
  457.       col_pos
  458.       scrtext_l
  459.       scrtext_m
  460.       scrtext_s
  461.       reptext
  462.       coltext
  463.     WHERE fieldname = 'DELETED_ICON'.
  464.  
  465.     DELETE et_fieldcat WHERE fieldname = 'DELETED'.
  466.  
  467.  
  468.     " Adding editable fields
  469.     APPEND:
  470.         'DOC_AMOUNT' TO lt_str,
  471.         'DOC_DATE' TO lt_str,
  472.         'COUNTRY_CODE' TO lt_str,
  473.         'SHIP_TYPE' TO lt_str,
  474.         'EXP_PAY_DATE' TO lt_str,
  475.         'DOC_TYPE_CODE' TO lt_str,
  476.         'LINE_NUM' TO lt_str,
  477.         'DOC_CONT_AMOUNT' TO lt_str,
  478.         'DOC_REM_AMOUNT' TO lt_str.
  479.  
  480.     ls_style-style     = cl_gui_alv_grid=>mc_style_enabled.
  481.  
  482.     LOOP AT et_fieldcat INTO ls_catalog.
  483.       lv_tabix = sy-tabix.
  484.       CLEAR ls_catalog-edit.
  485.  
  486.       ls_style-fieldname = ls_catalog-fieldname.
  487.       ls_style-style     = cl_gui_alv_grid=>mc_style_disabled.
  488.  
  489.       INSERT ls_style INTO TABLE lt_style_ro.
  490.  
  491.       READ TABLE lt_str WITH KEY table_line = ls_style-fieldname TRANSPORTING NO FIELDS.
  492.       IF sy-subrc EQ 0.
  493.         ls_style-style = cl_gui_alv_grid=>mc_style_enabled.
  494.         ls_catalog-edit = 'X'.
  495.       ENDIF.
  496.       INSERT ls_style INTO TABLE lt_style_rw.
  497.  
  498.       MODIFY et_fieldcat FROM ls_catalog INDEX lv_tabix TRANSPORTING edit.
  499.     ENDLOOP.
  500.  
  501.     LOOP AT loc_alv_data INTO ls_alv_data.
  502.       ls_alv_data-style[] = lt_style_ro[].
  503.       MODIFY loc_alv_data FROM ls_alv_data INDEX sy-tabix.
  504.     ENDLOOP.
  505.  
  506.     " Adding dropdown handle
  507.     READ TABLE et_fieldcat INTO ls_catalog WITH KEY fieldname = 'STATUS'.
  508.     IF sy-subrc EQ 0.
  509.       lv_tabix = sy-tabix.
  510.       CALL FUNCTION 'DD_DOMVALUES_GET'
  511.         EXPORTING
  512.           domname   = ls_catalog-domname
  513.           text      = 'X'
  514.           langu     = sy-langu
  515.         TABLES
  516.           dd07v_tab = lt_dd07v[]
  517.         EXCEPTIONS
  518.           OTHERS    = 2.
  519.  
  520.       lv_max = 0.
  521.  
  522.       LOOP AT lt_dd07v INTO ls_dd07v.
  523.         lv_int = strlen( ls_dd07v-ddtext ).
  524.         if lv_int gt lv_max.
  525.           lv_max = lv_int.
  526.         endif.
  527.         ls_drop_down_alias-handle    = 1.
  528.         ls_drop_down_alias-value     = ls_dd07v-ddtext.
  529.         ls_drop_down_alias-int_value = ls_dd07v-domvalue_l.
  530.         APPEND ls_drop_down_alias TO lt_drop_down_alias.
  531.       ENDLOOP.
  532.  
  533.       ls_catalog-drdn_hndl = 1.
  534.       ls_catalog-drdn_alias  = 'X'.
  535.       ls_catalog-convexit    = 'STATZ'.
  536.       ls_catalog-outputlen   = lv_max.
  537.       MODIFY et_fieldcat FROM ls_catalog INDEX lv_tabix.
  538.  
  539.       CALL METHOD loc_grid->set_drop_down_table
  540.         EXPORTING
  541.           it_drop_down_alias = lt_drop_down_alias.
  542.     ENDIF.
  543.  
  544. ENHANCEMENT-POINT ES_J3RF_SPDL_FCAT_L SPOTS ES_J3RF_SPDL .
  545. *$*$-Start: ES_J3RF_SPDL_FCAT_L-----------------------------------------------------------------$*$*
  546. ENHANCEMENT 3  ZEI_TR_040_SPD_LIST.    "active version
  547.   zcl_tr_040_spd_assist=>change_fcat( CHANGING ct_fcat = et_fieldcat ).
  548. ENDENHANCEMENT.
  549. *$*$-End:   ES_J3RF_SPDL_FCAT_L-----------------------------------------------------------------$*$*
  550.  
  551.   ENDMETHOD.
  552.  
  553.   METHOD adjust_layout.
  554.  
  555.     DATA:
  556.       lt_catalog TYPE lvc_t_fcat,
  557.       ls_catalog TYPE lvc_s_fcat,
  558.       ls_layout  TYPE lvc_s_layo.
  559.  
  560.  
  561.     loc_grid->get_frontend_layout(
  562.       IMPORTING
  563.         es_layout = ls_layout
  564.     ).
  565.  
  566.     ls_layout-stylefname = 'STYLE'.
  567.     loc_grid->set_frontend_layout( is_layout = ls_layout ).
  568.  
  569.   ENDMETHOD.
  570.  
  571.   METHOD update_statuses.
  572.     DATA:
  573.       lt_row    TYPE lvc_t_row,
  574.       lt_data   LIKE loc_alv_data,
  575.       lv_type   TYPE char1,
  576.       lv_date   TYPE j_3rfspd_date,
  577.       ls_data   LIKE LINE OF loc_alv_data,
  578.       lv_status TYPE j_3rfspd_header-status,
  579.       lx_err    TYPE abap_bool.
  580.  
  581.     lx_err = edit_auth_check( ).
  582.     CHECK lx_err NE abap_true.
  583.  
  584.     lt_data = me->get_selected_lines(  ).
  585.     IF lines( lt_data ) LT 1.
  586.       RETURN.
  587.     ENDIF.
  588. ENHANCEMENT-POINT ES_J3RF_SPDL_STAT SPOTS ES_J3RF_SPDL .
  589.  
  590.  
  591.     IF iv_status IS SUPPLIED.
  592.       lv_status = iv_status.
  593.     ELSE.
  594.       lv_status = j_3rfspd_header-status.
  595.     ENDIF.
  596.  
  597.     IF lv_status EQ 'APP'.
  598.       lv_date = j_3rfspd_header-appbnk_date.
  599.     ELSEIF lv_status EQ 'SNT'.
  600.       lv_date = j_3rfspd_header-sntbnk_date.
  601.     ELSE.
  602.       CLEAR lv_date.
  603.     ENDIF.
  604.  
  605.     gr_dbobj->clear_messages( ).
  606.  
  607.     gr_dbobj->change_status(
  608.       EXPORTING
  609.         iv_status   =  lv_status   " SPD. Status code
  610.         iv_date     =  lv_date
  611.       IMPORTING
  612.         ev_error    = lx_err    " Data element for domain BOOLE: TRUE (='X') and FALSE (=' ')
  613.       CHANGING
  614.         ct_spd_list = lt_data
  615.     ).
  616.  
  617.     LOOP AT lt_data INTO ls_data.
  618.       MODIFY loc_alv_data FROM ls_data TRANSPORTING status appbnk_date sntbnk_date WHERE spd_id = ls_data-spd_id AND spd_gjahr = ls_data-spd_gjahr.
  619.     ENDLOOP.
  620.  
  621.     lv_type = gr_dbobj->repopulate_log( ).
  622.     CASE lv_type.
  623.       WHEN 'E'.
  624.         MESSAGE e030.
  625.       WHEN 'W'.
  626.         MESSAGE w030.
  627.       WHEN space.
  628.         MESSAGE s037.
  629.     ENDCASE.
  630.  
  631.     me->refresh_stable( ).
  632.  
  633.   ENDMETHOD.
  634.  
  635.   METHOD create_pdf_mass.
  636.  
  637.     DATA:
  638.       lt_data   LIKE loc_alv_data,
  639.       lv_yes    TYPE abap_bool,
  640.       ls_data   LIKE LINE OF lt_data,
  641.       lv_err    TYPE abap_bool,
  642.       ls_header TYPE j_3rfspd_header,
  643.       lt_spd_id TYPE tty_spd_id.
  644.  
  645.     FIELD-SYMBOLS: <fs_line> LIKE LINE OF loc_alv_data.
  646.  
  647.     CLEAR: lt_data[].
  648.  
  649.     lt_data = get_selected_lines( ).
  650.  
  651.     IF lines( lt_data ) LT 1.
  652.       RETURN.
  653.     ENDIF.
  654.  
  655.     LOOP AT lt_data INTO ls_data.
  656.       MOVE-CORRESPONDING ls_data TO ls_header.
  657.       APPEND ls_header TO lt_spd_id.
  658.     ENDLOOP.
  659.  
  660.     gr_app->create_pdf( lt_spd_id ).
  661.  
  662.   ENDMETHOD.
  663.  
  664.   METHOD get_selected_lines.
  665.     DATA:
  666.       lt_row TYPE lvc_t_row,
  667.       ls_row TYPE lvc_s_row.
  668.  
  669.     CLEAR:
  670.       rt_selected_lines,
  671.       lt_row[],
  672.       ls_row.
  673.  
  674.     FIELD-SYMBOLS:
  675.                    <fs> LIKE LINE OF me->loc_alv_data.
  676.  
  677.     loc_grid->get_selected_rows(
  678.     IMPORTING
  679.       et_index_rows = lt_row
  680.       ).
  681.  
  682.     IF lines( lt_row ) LT 1.
  683.  
  684.         IF     me->loc_ucomm eq '&STATE' or me->loc_ucomm eq '&DETAIL'
  685.             or me->loc_ucomm eq '&EDIT'  or me->loc_ucomm eq '&DEL'
  686.             or me->loc_ucomm eq '&CORR'  or me->loc_ucomm eq '&CREA_PDF'
  687.             or me->loc_ucomm eq '&LOG'   or me->loc_ucomm eq '&DISP'.
  688.  
  689.           MESSAGE e035(j3rspd) WITH 'Error'.
  690.           RETURN.
  691.         ENDIF.
  692.     ENDIF.
  693.  
  694.     LOOP AT lt_row INTO ls_row.
  695.       READ TABLE loc_alv_data ASSIGNING <fs> INDEX ls_row-index.
  696.       IF sy-subrc EQ 0.
  697.         APPEND <fs> TO rt_selected_lines.
  698.       ENDIF.
  699.     ENDLOOP.
  700.  
  701.   ENDMETHOD.
  702.  
  703.   METHOD get_selected_line.
  704.     DATA:
  705.           rt_line LIKE me->loc_alv_data.
  706.  
  707.     CLEAR:
  708.       rs_line.
  709.  
  710.     rt_line = me->get_selected_lines(  ).
  711.  
  712. *    IF lines( rt_line ) NE 1.
  713. *      IF      me->loc_ucomm <> '&STATE' and me->loc_ucomm <> '&DETAIL'
  714. *          and me->loc_ucomm <> '&EDIT'  and me->loc_ucomm <> '&DEL'
  715. *          and me->loc_ucomm <> '&CORR'  and me->loc_ucomm <> '&CREA_PDF'
  716. *          and me->loc_ucomm <> '&LOG'.
  717. *
  718. *         RETURN.
  719. *       ENDIF.
  720. *    ENDIF.
  721.  
  722.     READ TABLE rt_line INTO rs_line INDEX 1.
  723.     IF sy-subrc NE 0.
  724.       CLEAR rs_line.
  725.       RETURN.
  726.     ENDIF.
  727.  
  728.   ENDMETHOD.
  729.  
  730.   METHOD gos_functionality.
  731.  
  732.     CONCATENATE p_spd_id p_spd_gjahr INTO spd_obj.
  733.  
  734. *   fill GOS parameters
  735.     clear: gs_lporb, gs_bc_object.
  736.     gs_lporb-typeid    = C_OBJTYPE.
  737.     gs_lporb-instid    = spd_obj. "object key
  738.     gs_lporb-catid     = 'BO'.
  739.     gs_bc_object-catid = gs_lporb-catid.
  740.     gs_object-objtype  = gs_lporb-typeid.
  741.     gs_object-objkey   = gs_lporb-instid.
  742.     gp_no_instance     = ' '.
  743.  
  744.     clear gp_direct.
  745.  
  746. *   create GOS
  747.     CREATE OBJECT go_publication
  748.       EXPORTING
  749.         is_object            = gs_object
  750.         is_bc_object         = gs_bc_object
  751.         ip_no_instance       = gp_no_instance
  752.         ip_no_commit         = gp_commit
  753.         ip_start_direct      = gp_direct
  754.         ip_mode              = gp_rwmod
  755.         ip_vsi_profile       = gp_vsiprf
  756.         it_service_selection = gt_service_selection.
  757.   ENDMETHOD.
  758.  
  759.   METHOD before_ucomm.
  760.     DATA:
  761.       lx_no_del  TYPE abap_bool,
  762.       lx_no_ed   TYPE abap_bool,
  763.       lx_val     TYPE abap_bool,
  764.       lx_ro      TYPE abap_bool,
  765.       lv_no_corr TYPE abap_bool,
  766.       lv_err     TYPE abap_bool,
  767.       lv_str     TYPE string,
  768.       lv_ucomm   TYPE syucomm,
  769.       lv_in1     TYPE iconname,
  770.       lv_in2     TYPE iconname,
  771.       lv_answer  TYPE c LENGTH 1,
  772.       ls_header  TYPE j_3rfspd_header,
  773.       lt_data    LIKE loc_alv_data,
  774.       lt_item    TYPE j_3rfspd_t_supportdoc,
  775.       lt_comm    TYPE j_3rfspd_t_comment,
  776.       ls_msg     TYPE j_3rs_msg,
  777.       ls_data    LIKE LINE OF loc_alv_data,
  778.       lv_updated TYPE boole_d,
  779.       lt_spd_id  TYPE tty_spd_id,
  780.       ls_spd_id  TYPE LINE OF tty_spd_id.
  781.  
  782.  
  783.     me->loc_ucomm = e_ucomm.
  784.     ls_data = me->get_selected_line(  ).
  785.     MOVE-CORRESPONDING ls_data TO ls_header.
  786.  
  787.     cl_j3rf_spd=>get_status_data( EXPORTING
  788.       iv_spd_status   = ls_header-status    " SPD. Status code
  789.     IMPORTING
  790.       ev_edit_restr   = lx_no_ed    " SPD edition is restricted
  791.       ev_delete_restr = lx_no_del   " SPD deletion is restricted
  792.       ev_not_corr     = lv_no_corr " SPD correction creation is restricted
  793.   ).
  794.  
  795. ENHANCEMENT-POINT es_j3rf_spdl_bucomm_l SPOTS es_j3rf_spdl .
  796.  
  797.   " DP&P: check partner statuses
  798.     DATA: lt_spd_alv_item_blocked TYPE j_3rfspd_t_list_alv.
  799.  
  800.     IF ( e_ucomm = gc_commands-edit      OR
  801.          e_ucomm = gc_commands-display   OR
  802.          e_ucomm = gc_commands-create_corr ) AND
  803.        ls_data IS INITIAL.
  804.  
  805.        MESSAGE i048.
  806.        me->set_ucomm( space ).
  807.        RETURN.
  808.     ENDIF.
  809.  
  810.     IF e_ucomm = gc_commands-edit OR
  811.        e_ucomm = gc_commands-delete OR
  812.        e_ucomm = gc_commands-set_state OR
  813.        e_ucomm = gc_commands-create_corr.
  814.  
  815.       gr_app->check_selected_spd( IMPORTING et_spd_alv_item_blocked = lt_spd_alv_item_blocked ).
  816.       IF NOT lt_spd_alv_item_blocked IS INITIAL.
  817.       " Forbid all change operation
  818.         MESSAGE e484(j3r_legal_forms).
  819.         me->set_ucomm( space ).
  820.         RETURN.
  821.       ENDIF.
  822.     ENDIF.
  823.  
  824.     CASE e_ucomm.
  825.       WHEN gc_commands-display.
  826.  
  827.         lv_updated = gr_app->set_spd_header( ls_header ).
  828.         IF lv_updated EQ abap_true.
  829.           gr_app->set_pd_data( ls_header-intpodnum ).
  830.         ENDIF.
  831.  
  832.         gp_rwmod = 'D'. "disable editing for GOS
  833.         gos_functionality( p_spd_id = ls_header-spd_id p_spd_gjahr = ls_header-spd_gjahr ).
  834.  
  835.         gr_app->load_and_display_spd( gc_commands-display ).
  836.         me->refresh_stable(  ).
  837.         me->set_ucomm( space ).
  838.  
  839.       WHEN gc_commands-edit.
  840.  
  841.         lv_err = edit_auth_check( ).
  842.         CHECK lv_err NE abap_true.
  843.  
  844.         lv_ucomm = gc_commands-edit.
  845.  
  846.          CALL METHOD cl_fin_locru_switch_check=>susage_insert
  847.             EXPORTING
  848.               i_feature = 'GS_GSCBCIS_124_SUB3_10'.
  849.  
  850.         lv_in1 = icon_display.
  851.         lv_in2 = icon_cancel.
  852.         CLEAR lx_ro.
  853.  
  854.         IF lx_no_ed EQ abap_true.
  855.           MESSAGE s040 INTO lv_str WITH ls_header-spd_id ls_header-spd_gjahr.
  856.           lx_ro = abap_true.
  857.         ELSEIF ls_data-deleted EQ abap_true.
  858.           MESSAGE e032 INTO lv_str WITH ls_header-spd_id ls_header-spd_gjahr.
  859.           lx_ro = abap_true.
  860.         ELSE.
  861.           lock_line(
  862.             EXPORTING is_line = ls_data
  863.             IMPORTING es_message = ls_msg
  864.                     ex_locked  = lx_val
  865.          ).
  866.  
  867.           IF lx_val NE abap_true.
  868.             MESSAGE ID ls_msg-msgid TYPE ls_msg-msgty NUMBER ls_msg-msgno INTO lv_str
  869.             WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4.
  870.             lx_ro = abap_true.
  871.           ENDIF.
  872.         ENDIF.
  873.  
  874.         gp_rwmod = 'E'. "enable editing for GOS
  875.  
  876.         IF lx_ro EQ abap_true.
  877.           CALL FUNCTION 'POPUP_TO_CONFIRM'
  878.             EXPORTING
  879. *             TITLEBAR              = ' '
  880. *             DIAGNOSE_OBJECT       = ' '
  881.               text_question         = lv_str
  882.               text_button_1         = 'Display'(DIZ)
  883.               icon_button_1         = lv_in1
  884.               text_button_2         = 'Cancel'(CAN)
  885.               icon_button_2         = lv_in2
  886. *             DEFAULT_BUTTON        = '1'
  887.               display_cancel_button = ' '
  888. *             USERDEFINED_F1_HELP   = ' '
  889. *             START_COLUMN          = 25
  890. *             START_ROW             = 6
  891. *             POPUP_TYPE            =
  892. *             IV_QUICKINFO_BUTTON_1 = ' '
  893. *             IV_QUICKINFO_BUTTON_2 = ' '
  894.             IMPORTING
  895.               answer                = lv_answer
  896. *          TABLES
  897. *             PARAMETER             =
  898.             EXCEPTIONS
  899. *             TEXT_NOT_FOUND        = 1
  900.               OTHERS                = 2.
  901.           IF sy-subrc <> 0.
  902.             me->set_ucomm( space ).
  903.             RETURN.
  904.           ENDIF.
  905.  
  906.           IF lv_answer EQ '1'.
  907.             lv_ucomm = gc_commands-display.
  908.             gp_rwmod = 'D'. "disable editing for GOS
  909.           ELSE.
  910.             me->set_ucomm( space ).
  911.             RETURN.
  912.           ENDIF.
  913.         ENDIF.
  914.  
  915.         lv_updated = gr_app->set_spd_header( ls_header ).
  916.         IF lv_updated EQ abap_true.
  917.           gr_app->set_pd_data( ls_header-intpodnum ).
  918.         ENDIF.
  919.  
  920.         gos_functionality( p_spd_id = ls_header-spd_id p_spd_gjahr = ls_header-spd_gjahr ).
  921.  
  922.         gr_app->load_and_display_spd( lv_ucomm ).
  923.         unlock_line( ).
  924.         me->refresh_stable(  ).
  925.         me->set_ucomm( space ).
  926.       WHEN gc_commands-delete.
  927.         delete_rows(  ).
  928.         me->set_ucomm( space ).
  929.  
  930.       WHEN gc_commands-create_corr.
  931.         lv_err = edit_auth_check( ).
  932.         CHECK lv_err NE abap_true.
  933.  
  934.         IF ls_data-deleted EQ abap_true.
  935.           MESSAGE e033.
  936.           RETURN.
  937.         ENDIF.
  938.  
  939. * Check if correction can be created for SPD
  940.         IF lv_no_corr EQ abap_true.
  941.           MESSAGE e111(j3rspd) WITH ls_data-status.
  942.           RETURN.
  943.         ENDIF.
  944.  
  945.         lock_line(
  946.           EXPORTING is_line = ls_data
  947.           IMPORTING es_message = ls_msg
  948.                     ex_locked  = lx_val
  949.         ).
  950.  
  951.         IF lx_val NE abap_true.
  952.           MESSAGE ID ls_msg-msgid TYPE ls_msg-msgty NUMBER ls_msg-msgno
  953.           WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4.
  954.           RETURN.
  955.         ENDIF.
  956.  
  957.         lv_updated = gr_app->set_spd_header( ls_header ).
  958.         IF lv_updated EQ abap_true.
  959.           gr_app->set_pd_data( ls_header-intpodnum ).
  960.         ENDIF.
  961.         gr_app->load_and_display_spd( gc_commands-create_corr ).
  962.         unlock_line( ).
  963.         gr_app->load_list( ).
  964.         me->refresh_stable(  ).
  965.         me->set_ucomm( space ).
  966.  
  967.       WHEN gc_commands-create_pdf.
  968.  
  969.         me->CREATE_PDF_MASS( ).
  970.  
  971.         me->set_ucomm( space ).
  972.  
  973.       WHEN gc_commands-set_state.
  974.         lv_err = edit_auth_check( ).
  975.         CHECK lv_err NE abap_true.
  976.         " Implement the logic here
  977.         lt_data = me->get_selected_lines(  ).
  978.         clear j_3rfspd_header-status.
  979.         me->set_ucomm( space ).
  980.         IF lines( lt_data ) GT 0.
  981.           CALL SCREEN gc_dynpros-status STARTING AT 7 7.
  982.         ENDIF.
  983.  
  984.       WHEN gc_commands-show_log.
  985.         cl_j3r_appl_log=>save( ).
  986.         cl_j3r_appl_log=>display( i_object = gc_obj_appl_log ).
  987.         me->set_ucomm( space ).
  988.  
  989.  
  990.       WHEN OTHERS.
  991.  
  992.         me->set_ucomm( e_ucomm ).
  993.  
  994.  
  995.     ENDCASE.
  996.  
  997.   ENDMETHOD.
  998.  
  999.   METHOD after_ucomm.
  1000.  
  1001.   ENDMETHOD.
  1002.  
  1003.   METHOD ucomm.
  1004.  
  1005.     CASE e_ucomm.
  1006.       WHEN gc_commands-create_corr
  1007.       OR gc_commands-edit
  1008.       OR gc_commands-display.
  1009.         me->before_ucomm( e_ucomm ).
  1010.       WHEN gc_commands-delete.
  1011.         me->delete_rows(  ).
  1012.       WHEN gc_commands-set_state.
  1013.         me->update_statuses( ).
  1014.       WHEN gc_commands-create_pdf.
  1015.         me->create_pdf_mass( ).
  1016.       WHEN gc_commands-show_log.
  1017.         cl_j3r_appl_log=>save( ).
  1018.         cl_j3r_appl_log=>display( i_object = gc_obj_appl_log ).
  1019.         me->set_ucomm( space ).
  1020.     ENDCASE.
  1021.  
  1022.   ENDMETHOD.
  1023.  
  1024.   METHOD delete_rows.
  1025.     DATA:
  1026.       lt_data   LIKE loc_alv_data,
  1027.       lt_data_c type j_3rfspd_t_header,
  1028.       lv_yes    TYPE abap_bool,
  1029.       ls_data   LIKE LINE OF lt_data,
  1030.       ls_data_c type j_3rfspd_header,
  1031.       lv_err    TYPE abap_bool.
  1032.  
  1033.     FIELD-SYMBOLS:
  1034.           <fs_line> LIKE LINE OF loc_alv_data.
  1035.  
  1036.     CLEAR:
  1037.       lt_data[].
  1038.  
  1039.     lv_err = edit_auth_check( ).
  1040.     CHECK lv_err NE abap_true.
  1041.  
  1042.     lt_data              = get_selected_lines( ).
  1043.  
  1044.     IF lines( lt_data ) LT 1.
  1045.       RETURN.
  1046.     ENDIF.
  1047.  
  1048.     CALL FUNCTION 'POPUP_TO_CONFIRM'
  1049.       EXPORTING
  1050. *       TITLEBAR              = ' '
  1051. *       DIAGNOSE_OBJECT       = ' '
  1052.         text_question         = 'Are you sure you want to delete selected SPDs?'(DEL)
  1053. *       TEXT_BUTTON_1         = 'Ja'(001)
  1054. *       ICON_BUTTON_1         = ' '
  1055. *       TEXT_BUTTON_2         = 'Nein'(002)
  1056. *       ICON_BUTTON_2         = ' '
  1057. *       DEFAULT_BUTTON        = '1'
  1058.         display_cancel_button = space
  1059. *       USERDEFINED_F1_HELP   = ' '
  1060. *       START_COLUMN          = 25
  1061. *       START_ROW             = 6
  1062. *       POPUP_TYPE            =
  1063. *       IV_QUICKINFO_BUTTON_1 = ' '
  1064. *       IV_QUICKINFO_BUTTON_2 = ' '
  1065.       IMPORTING
  1066.         answer                = lv_yes
  1067. *     TABLES
  1068. *       PARAMETER             =
  1069.       EXCEPTIONS
  1070. *       TEXT_NOT_FOUND        = 1
  1071.         OTHERS                = 2.
  1072.     IF sy-subrc <> 0.
  1073.       RETURN.
  1074.     ELSEIF lv_yes NE '1'.
  1075.       RETURN.
  1076.     ENDIF.
  1077.  
  1078.     CALL METHOD cl_fin_locru_switch_check=>susage_insert
  1079.        EXPORTING
  1080.          i_feature = 'GS_GSCBCIS_124_SUB3_09'.
  1081.  
  1082.     gr_dbobj->clear_messages( ).
  1083.  
  1084.     gr_dbobj->delete_spd(
  1085.       IMPORTING
  1086.         ev_error    = lv_err
  1087.         et_spd_orig = lt_data_c
  1088.       CHANGING
  1089.         ct_spd_list = lt_data
  1090.     ).
  1091.  
  1092.     IF p_v_del NE abap_true. "Show deleted
  1093.       LOOP AT lt_data INTO ls_data WHERE deleted = 'X'.
  1094.         DELETE loc_alv_data WHERE spd_id = ls_data-spd_id AND spd_gjahr = ls_data-spd_gjahr.
  1095.       ENDLOOP.
  1096.     ELSE.
  1097.       LOOP AT lt_data INTO ls_data WHERE deleted = 'X'.
  1098.          LOOP AT loc_alv_data ASSIGNING <fs_line> WHERE spd_id = ls_data-spd_id AND spd_gjahr = ls_data-spd_gjahr.
  1099.           <fs_line>-deleted = 'X'.
  1100.           <fs_line>-deleted_icon = icon_delete.
  1101.         ENDLOOP.
  1102.       ENDLOOP.
  1103.     ENDIF.
  1104.  
  1105.     LOOP AT lt_data_c INTO ls_data_c.
  1106.       LOOP AT loc_alv_data ASSIGNING <fs_line> WHERE spd_id = ls_data_c-spd_id AND spd_gjahr = ls_data_c-spd_gjahr.
  1107.         CLEAR <fs_line>-corrected.
  1108.       ENDLOOP.
  1109.     ENDLOOP.
  1110.  
  1111.     me->refresh_stable(  ).
  1112.  
  1113.     lv_err = gr_dbobj->repopulate_log(  ).
  1114.     CASE lv_err.
  1115.       WHEN 'E'.
  1116.         MESSAGE e025.
  1117.       WHEN 'W'.
  1118.         MESSAGE w025.
  1119.       WHEN space.
  1120.         message s045.
  1121.     ENDCASE.
  1122.  
  1123.   ENDMETHOD.
  1124.  
  1125.  
  1126.  
  1127.   METHOD toolbar.
  1128.     DATA:
  1129.       ls_toolbar TYPE stb_button.
  1130.  
  1131.     CLEAR:
  1132.      ls_toolbar.
  1133.  
  1134.     FIELD-SYMBOLS: <fs_tab> LIKE e_object->mt_toolbar.
  1135.  
  1136.     ASSIGN e_object->mt_toolbar TO <fs_tab>.
  1137.  
  1138.     DELETE TABLE <fs_tab> WITH TABLE KEY function = :
  1139.  
  1140.            cl_gui_alv_grid=>mc_fc_loc_copy ,
  1141.            cl_gui_alv_grid=>mc_fc_loc_cut  ,
  1142.            cl_gui_alv_grid=>mc_fc_loc_insert_row ,
  1143.            cl_gui_alv_grid=>mc_fc_loc_move_row ,
  1144.            cl_gui_alv_grid=>mc_fc_loc_paste ,
  1145.            cl_gui_alv_grid=>mc_fc_loc_paste_new_row ,
  1146.            cl_gui_alv_grid=>mc_fc_loc_delete_row ,
  1147.            cl_gui_alv_grid=>mc_fc_loc_append_row ,
  1148.            cl_gui_alv_grid=>mc_fc_loc_copy_row,
  1149.            cl_gui_alv_grid=>mc_fc_loc_undo ,
  1150.            cl_gui_alv_grid=>mc_fc_print,
  1151.            cl_gui_alv_grid=>mc_fc_find,
  1152.            cl_gui_alv_grid=>mc_fc_find_more,
  1153.            cl_gui_alv_grid=>mc_fc_filter,
  1154.            cl_gui_alv_grid=>mc_fc_views,
  1155.            cl_gui_alv_grid=>mc_fc_sum,
  1156.            cl_gui_alv_grid=>mc_fc_print_back,
  1157.            cl_gui_alv_grid=>mc_fc_check,
  1158.            cl_gui_alv_grid=>mc_fc_detail,
  1159.            cl_gui_alv_grid=>mc_mb_view,
  1160.            cl_gui_alv_grid=>mc_mb_export,
  1161.            cl_gui_alv_grid=>mc_fc_graph ,
  1162.            cl_gui_alv_grid=>mc_fc_info  ,
  1163.            cl_gui_alv_grid=>mc_mb_subtot,
  1164.            cl_gui_alv_grid=>mc_mb_sum,
  1165.            cl_gui_alv_grid=>mc_fc_refresh .
  1166.  
  1167.     " Adding our functions
  1168.  
  1169.     gr_app->tb_add_separator( CHANGING ce_object = e_object ).
  1170.  
  1171.     CLEAR ls_toolbar.
  1172.  
  1173.     ls_toolbar-function  = gc_commands-set_state.
  1174.     ls_toolbar-icon      = icon_set_state.
  1175.     ls_toolbar-text      = 'Set status'(SST).
  1176.     ls_toolbar-quickinfo = 'Set status'(SST).
  1177.     APPEND ls_toolbar TO e_object->mt_toolbar.
  1178.  
  1179.     gr_app->tb_add_separator( CHANGING ce_object = e_object ).
  1180.  
  1181.     CLEAR ls_toolbar.
  1182.  
  1183.     ls_toolbar-function  = gc_commands-display.
  1184.     ls_toolbar-icon      = icon_display.
  1185.     ls_toolbar-quickinfo = 'Diplay SPD'(DIS).
  1186.     APPEND ls_toolbar TO e_object->mt_toolbar.
  1187.  
  1188.     ls_toolbar-function  = gc_commands-edit.
  1189.     ls_toolbar-icon      = icon_change.
  1190.     ls_toolbar-quickinfo = 'Change SPD'(CHS).
  1191.     APPEND ls_toolbar TO e_object->mt_toolbar.
  1192.  
  1193.     ls_toolbar-function  = gc_commands-delete.
  1194.     ls_toolbar-icon      = icon_delete.
  1195.     ls_toolbar-quickinfo = 'Delete SPD'(DES).
  1196.     APPEND ls_toolbar TO e_object->mt_toolbar.
  1197.  
  1198.     ls_toolbar-function  = gc_commands-create_corr.
  1199.     ls_toolbar-icon      = icon_create.
  1200.     ls_toolbar-quickinfo = 'Create corr SPD'(CRE).
  1201.     ls_toolbar-text      = 'Create corr SPD'(CRE).
  1202.     APPEND ls_toolbar TO e_object->mt_toolbar.
  1203.  
  1204.     gr_app->tb_add_separator( CHANGING ce_object = e_object ).
  1205.  
  1206.     gr_app->tb_add_button(
  1207.       EXPORTING iv_button = gc_commands-create_pdf
  1208.       CHANGING ce_object = e_object
  1209.     ).
  1210.  
  1211.     gr_app->tb_add_separator( CHANGING ce_object = e_object ).
  1212.  
  1213.     gr_app->tb_add_button(
  1214.       EXPORTING iv_button = gc_commands-show_log
  1215.       CHANGING ce_object = e_object
  1216.     ).
  1217.  
  1218. ENHANCEMENT-POINT ES_J3RF_SPDL_TOOLBAR_L SPOTS ES_J3RF_SPDL .
  1219.  
  1220.  
  1221.  
  1222.   ENDMETHOD.
  1223.  
  1224.   METHOD hotspot_click.
  1225.  
  1226.     DATA:
  1227.       ls_line LIKE LINE OF me->loc_alv_data,
  1228.       lv_int      TYPE i,
  1229.       ls_header   TYPE j_3rfspd_header,
  1230.       lv_updated  TYPE boole_d.
  1231.  
  1232.     READ TABLE me->loc_alv_data INTO ls_line INDEX e_row_id.
  1233.     IF sy-subrc NE 0.
  1234.       RETURN.
  1235.     ENDIF.
  1236.  
  1237.     lv_int = e_row_id.
  1238.  
  1239. ENHANCEMENT-POINT ES_J3RF_SPDL_HOTSPOT_L SPOTS ES_J3RF_SPDL .
  1240.  
  1241.  
  1242.     CASE e_column_id-fieldname.
  1243.       WHEN 'INTPODNUM' OR 'EXTPODNUM'.
  1244.         CALL METHOD cl_j3rf_spd=>show_deal_pass
  1245.           EXPORTING
  1246.             iv_intpodnum = ls_line-intpodnum.
  1247.       WHEN 'INTCNUM' OR 'EXTCNUM'.
  1248.         CALL METHOD cl_j3rf_spd=>show_contract
  1249.           EXPORTING
  1250.             iv_intcnum = ls_line-intcnum
  1251.             iv_bukrs   = ls_line-bukrs.
  1252.       WHEN 'SPD_ID'.
  1253.         MOVE-CORRESPONDING ls_line TO ls_header.
  1254.  
  1255. *        IF ls_data IS INITIAL.
  1256. *          me->set_ucomm( space ).
  1257. *          RETURN.
  1258. *        ENDIF.
  1259.  
  1260.         lv_updated = gr_app->set_spd_header( ls_header ).
  1261.         IF lv_updated EQ abap_true.
  1262.           gr_app->set_pd_data( ls_header-intpodnum ).
  1263.         ENDIF.
  1264.  
  1265.         gp_rwmod = 'D'. "disable editing for GOS
  1266.         gos_functionality( p_spd_id = ls_header-spd_id p_spd_gjahr = ls_header-spd_gjahr ).
  1267.  
  1268.         gr_app->load_and_display_spd( gc_commands-display ).
  1269.         me->refresh_stable(  ).
  1270.         me->set_ucomm( space ).
  1271.     ENDCASE.
  1272.   ENDMETHOD.
  1273.  
  1274.   METHOD edit_auth_check.
  1275.     AUTHORITY-CHECK OBJECT 'J3RF_SPD'
  1276.     ID 'ACTVT' FIELD '23'.
  1277.     IF sy-subrc <> 0.
  1278.       MESSAGE e096(j3rspd).
  1279.       rv_error = abap_true.
  1280.     ENDIF.
  1281.   ENDMETHOD.
  1282.  
  1283.  
  1284. *&-------------------------------
  1285. ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement