Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *&---------------------------------------------------------------------*
- *& Include J_3RF_SPD_GV_I
- *&---------------------------------------------------------------------*
- CLASS lcl_list_view IMPLEMENTATION.
- METHOD lif_singleton~get_instance.
- IF loc_ref IS NOT BOUND.
- CREATE OBJECT loc_ref.
- ENDIF.
- r_ref = loc_ref.
- ENDMETHOD.
- METHOD constructor.
- CLEAR:
- loc_loaded,
- loc_data[],
- loc_varname,
- loc_alv_data[].
- ENDMETHOD.
- METHOD set_variant_name.
- loc_varname = iv_varname.
- ENDMETHOD.
- METHOD reset_changed.
- CLEAR loc_changed.
- ENDMETHOD.
- METHOD refresh_stable.
- DATA:
- ls_stable TYPE lvc_s_stbl.
- ls_stable = 'XX'.
- loc_grid->refresh_table_display( is_stable = ls_stable ).
- ENDMETHOD.
- METHOD set_data.
- DATA:
- ls_data LIKE LINE OF loc_alv_data.
- FIELD-SYMBOLS:
- <fs_line> LIKE LINE OF loc_data.
- me->loc_data[] = it_data[].
- REFRESH loc_alv_data.
- ENHANCEMENT-SECTION ES_J3RF_SPDL_LOAD_L SPOTS ES_J3RF_SPDL .
- LOOP AT me->loc_data ASSIGNING <fs_line>.
- MOVE-CORRESPONDING <fs_line> TO ls_data.
- IF <fs_line>-deleted EQ 'X'.
- ls_data-deleted_icon = icon_delete.
- ELSE.
- CLEAR ls_data-deleted_icon.
- ENDIF.
- APPEND ls_data TO loc_alv_data.
- ENDLOOP.
- END-ENHANCEMENT-SECTION.
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Класс LCL_LIST_VIEW, Метод SET_DATA, Выход A
- *$*$-Start: (1)---------------------------------------------------------------------------------$*$*
- ENHANCEMENT 7 ZEI_TR_040_SPD_LIST. "active version
- zcl_tr_040_spd_assist=>filter_by_exp_pay_date( EXPORTING it_exp_date = s_pdate[]
- CHANGING ct_spd = me->loc_data
- ct_spd_alv = loc_alv_data ).
- ENDENHANCEMENT.
- *$*$-End: (1)---------------------------------------------------------------------------------$*$*
- ENDMETHOD.
- METHOD get_data.
- DATA:
- ls_data LIKE LINE OF loc_data.
- FIELD-SYMBOLS:
- <fs_line> LIKE LINE OF loc_alv_data.
- REFRESH loc_data.
- LOOP AT me->loc_alv_data ASSIGNING <fs_line>.
- MOVE-CORRESPONDING <fs_line> TO ls_data.
- APPEND ls_data TO loc_data.
- ENDLOOP.
- et_data[] = me->loc_data[].
- ENDMETHOD.
- METHOD confirm_exit.
- r_val = abap_true.
- RETURN.
- ENDMETHOD.
- METHOD exit_ucomm.
- DATA:
- lv_ucomm TYPE syucomm,
- lv_res TYPE abap_bool.
- IF iv_ucomm IS SUPPLIED.
- lv_ucomm = iv_ucomm.
- ELSE.
- lv_ucomm = sy-ucomm.
- ENDIF.
- CASE lv_ucomm.
- WHEN gc_commands-back
- OR gc_commands-up.
- IF NOT me->confirm_exit( ) IS INITIAL.
- SET SCREEN 0.
- LEAVE SCREEN.
- ENDIF.
- WHEN gc_commands-exit
- OR gc_commands-end.
- IF NOT me->confirm_exit( ) IS INITIAL.
- LEAVE PROGRAM.
- ENDIF.
- WHEN gc_commands-cancel.
- IF NOT me->confirm_exit( ) IS INITIAL.
- LEAVE TO SCREEN 0.
- ENDIF.
- ENDCASE.
- ENDMETHOD.
- METHOD update_line.
- DATA:
- ls_data LIKE LINE OF loc_alv_data.
- FIELD-SYMBOLS:
- <fs_line> TYPE any.
- LOOP AT loc_alv_data ASSIGNING <fs_line> WHERE spd_id = is_header-spd_id AND spd_gjahr = is_header-spd_gjahr.
- MOVE-CORRESPONDING is_header TO <fs_line>.
- ENDLOOP.
- ENDMETHOD.
- METHOD lock_line.
- DATA:
- lt_dealpass TYPE j_3rf_dealpass_keytab,
- ls_dealpass LIKE LINE OF lt_dealpass,
- lv_error TYPE abap_bool,
- lt_msg TYPE j_3rs_msgs,
- lt_dp_locked TYPE j_3rf_dealpass_keytab.
- CLEAR:
- lt_dealpass[],
- lt_dp_locked[],
- ex_locked,
- lt_msg[],
- ls_dealpass,
- es_message,
- me->loc_locked.
- ls_dealpass = is_line-intpodnum.
- APPEND ls_dealpass TO lt_dealpass.
- gr_dbobj->deal_pass_enqueue(
- EXPORTING
- iv_mode_j_3rfdp = 'E' " Lock mode
- it_dpkeys = lt_dealpass " Table with Deal Passport keys
- * iv_scope = '2' " Control lock behavior when calling the update task
- iv_wait = space " Flag indicating whether lock attempt is to be repeated
- IMPORTING
- et_enqueued_dp = lt_dp_locked " Table with Deal Passport keys
- * et_messages = lt_msg " Check messages
- ev_error = lv_error " Data element for domain BOOLE: TRUE (='X') and FALSE (=' ')
- ).
- IF lv_error NE abap_true.
- READ TABLE lt_dp_locked INTO ls_dealpass INDEX 1.
- IF sy-subrc NE 0.
- lv_error = abap_true.
- ELSEIF is_line-intpodnum NE ls_dealpass.
- lv_error = abap_true.
- ENDIF.
- ENDIF.
- IF lv_error NE abap_true.
- me->loc_locked = is_line.
- ex_locked = abap_true.
- ELSE.
- lt_msg = gr_dbobj->get_messages( ).
- READ TABLE lt_msg INTO es_message INDEX 1.
- CLEAR ex_locked.
- ENDIF.
- ENDMETHOD.
- METHOD unlock_line.
- DATA:
- lt_dealpass TYPE j_3rf_dealpass_keytab,
- ls_dealpass LIKE LINE OF lt_dealpass.
- CLEAR:
- lt_dealpass[],
- ls_dealpass,
- es_message.
- ls_dealpass = is_line-intpodnum.
- APPEND ls_dealpass TO lt_dealpass.
- gr_dbobj->deal_pass_dequeue(
- EXPORTING
- iv_mode_j_3rfdp = 'E' " Lock mode
- it_dpkeys = lt_dealpass " Table with Deal Passport keys
- * iv_scope = '3' " Control lock behavior when calling the update task
- * iv_synchron = SPACE " Flag: synchronous unlocking?
- ).
- CLEAR me->loc_locked.
- ex_unlocked = abap_true.
- ENDMETHOD.
- METHOD display.
- DATA:
- lr_exc TYPE REF TO cx_root,
- lr_functions TYPE REF TO cl_salv_functions_list,
- lt_exclude TYPE ui_functions,
- ls_exclude LIKE LINE OF lt_exclude,
- lr_events TYPE REF TO cl_salv_events_table,
- lr_layout TYPE REF TO cl_salv_layout,
- lv_layout_key TYPE salv_s_layout_key,
- ls_layout_var TYPE salv_s_layout,
- lt_fieldcat TYPE lvc_t_fcat,
- lv_str TYPE string,
- ls_data LIKE LINE OF loc_data,
- ls_alv_data LIKE LINE OF loc_alv_data,
- ls_layout TYPE lvc_s_layo,
- lt_sort TYPE lvc_t_sort,
- ls_sort TYPE lvc_s_sort,
- lv_layo TYPE lvc_s_layo.
- TRY.
- CLEAR ls_layout.
- ls_layout-stylefname = 'STYLE'.
- ls_layout-sel_mode = 'A'.
- IF loc_grid IS NOT BOUND.
- IF NOT me->loc_container IS BOUND.
- CREATE OBJECT me->loc_container
- EXPORTING
- container_name = 'GRID_CONT_100' " Name of the Container to Which this Container is Linked
- EXCEPTIONS
- OTHERS = 7.
- IF sy-subrc <> 0.
- gr_app->last_message( ).
- RETURN.
- ENDIF.
- ENDIF.
- CREATE OBJECT loc_grid
- EXPORTING
- i_parent = me->loc_container " Parent Container
- i_appl_events = 'X' "SPACE " Register Events as Application Events
- EXCEPTIONS
- OTHERS = 5.
- IF sy-subrc <> 0.
- gr_app->last_message( ).
- ENDIF.
- create_fieldcat(
- IMPORTING
- et_fieldcat = lt_fieldcat ).
- DATA:
- ls_variant TYPE disvariant.
- ls_variant-report = sy-cprog.
- ls_variant-log_group = gc_alv_variant_grp-list_view.
- IF NOT p_varl IS INITIAL.
- ls_variant-variant = p_varl.
- ENDIF.
- me->loc_grid->set_table_for_first_display(
- EXPORTING
- * i_buffer_active = " Buffering Active
- * i_bypassing_buffer = " Switch Off Buffer
- * i_consistency_check = " Starting Consistency Check for Interface Error Recognition
- * i_structure_name = gc_alv_struct-grid_view " Internal Output Table Structure Name
- is_variant = ls_variant " Layout
- i_save = 'A' " Save Layout
- * i_default = 'X' " Default Display Variant
- is_layout = ls_layout " Layout
- * is_print = " Print Control
- * it_special_groups = " Field Groups
- * it_toolbar_excluding = lt_exclude " Excluded Toolbar Standard Functions
- * it_hyperlink = " Hyperlinks
- * it_alv_graphics = " Table of Structure DTC_S_TC
- * it_except_qinfo = " Table for Exception Tooltip
- * ir_salv_adapter = " Interface ALV Adapter
- CHANGING
- it_outtab = loc_alv_data " Output Table
- it_fieldcatalog = lt_fieldcat " Field Catalog
- * it_sort = " Sort Criteria
- * it_filter = " Filter Criteria
- EXCEPTIONS
- * invalid_parameter_combination = 1
- * program_error = 2
- * too_many_lines = 3
- OTHERS = 4
- ).
- IF sy-subrc <> 0.
- gr_app->last_message( ).
- RETURN.
- ENDIF.
- IF p_varl IS INITIAL.
- CLEAR:
- ls_sort, lt_sort[].
- ls_sort-fieldname = 'SPD_ID'.
- ls_sort-up = 'X'.
- APPEND ls_sort TO lt_sort.
- ls_sort-fieldname = 'SPD_GJAHR'.
- ls_sort-up = 'X'.
- APPEND ls_sort TO lt_sort.
- me->loc_grid->set_sort_criteria(
- lt_sort
- ).
- me->loc_grid->refresh_table_display( ).
- ENDIF.
- SET HANDLER me->before_ucomm FOR loc_grid.
- SET HANDLER me->ucomm FOR loc_grid.
- SET HANDLER me->after_ucomm FOR loc_grid.
- SET HANDLER me->toolbar FOR loc_grid.
- SET HANDLER me->hotspot_click FOR loc_grid.
- loc_grid->set_toolbar_interactive( ).
- ELSE.
- IF me->loc_updated EQ 'X'.
- me->loc_updated = ''.
- ENDIF.
- ENDIF.
- CATCH cx_root INTO lr_exc.
- ENDTRY.
- ENDMETHOD.
- METHOD loaded_lines.
- rv_val = lines( me->loc_data ).
- ENDMETHOD.
- METHOD set_ucomm.
- loc_grid->set_user_command(
- i_ucomm = iv_ucomm
- ).
- sy-ucomm = iv_ucomm.
- ENDMETHOD.
- METHOD clear_ucomm.
- loc_grid->set_user_command(
- i_ucomm = space
- ).
- CLEAR sy-ucomm.
- ENDMETHOD.
- METHOD create_fieldcat.
- DATA:
- ls_alv_data LIKE LINE OF loc_alv_data,
- ls_style TYPE lvc_s_styl,
- lt_style_ro TYPE lvc_t_styl,
- lt_style_rw TYPE lvc_t_styl,
- lt_str TYPE string_table,
- lv_str TYPE string,
- lv_tabix LIKE sy-tabix,
- lt_drop_down_alias TYPE lvc_t_dral,
- ls_drop_down_alias TYPE lvc_s_dral,
- lt_dd07v TYPE TABLE OF dd07v,
- ls_dd07v TYPE dd07v,
- lv_int TYPE i,
- lv_max TYPE i,
- ls_catalog TYPE lvc_s_fcat.
- REFRESH et_fieldcat.
- CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
- EXPORTING
- * I_BUFFER_ACTIVE =
- i_structure_name = gc_alv_struct-list_view
- * I_CLIENT_NEVER_DISPLAY = 'X'
- * I_BYPASSING_BUFFER =
- * I_INTERNAL_TABNAME =
- CHANGING
- ct_fieldcat = et_fieldcat
- EXCEPTIONS
- * INCONSISTENT_INTERFACE = 1
- * PROGRAM_ERROR = 2
- OTHERS = 3.
- IF sy-subrc <> 0.
- * Implement suitable error handling here
- ENDIF.
- ls_catalog-tech ='X'.
- ls_catalog-fieldname = 'STYLE'.
- APPEND ls_catalog TO et_fieldcat.
- CLEAR ls_catalog.
- MOVE 'X' TO:
- ls_catalog-edit,
- ls_catalog-tech,
- ls_catalog-checkbox,
- ls_catalog-hotspot,
- ls_catalog-icon.
- DELETE et_fieldcat WHERE fieldname = :
- 'CHECKED'.
- MODIFY et_fieldcat FROM ls_catalog TRANSPORTING:
- tech WHERE fieldname = 'BLOCKED',
- icon WHERE fieldname = 'DELETED_ICON',
- checkbox WHERE fieldname = 'CORRECTED',
- checkbox WHERE fieldname = 'ARCHIVED',
- hotspot WHERE fieldname = 'INTCNUM',
- hotspot WHERE fieldname = 'EXTCNUM',
- hotspot WHERE fieldname = 'INTPODNUM',
- hotspot WHERE fieldname = 'EXTPODNUM',
- hotspot WHERE fieldname = 'DOC_NUM',
- hotspot WHERE fieldname = 'DOC_NUM_EXT',
- hotspot WHERE fieldname = 'SPD_ID'.
- CLEAR ls_style.
- REFRESH:
- lt_style_ro,
- lt_style_rw,
- lt_str.
- READ TABLE et_fieldcat INTO ls_catalog WITH KEY fieldname = 'DELETED'.
- MODIFY et_fieldcat FROM ls_catalog TRANSPORTING
- col_pos
- scrtext_l
- scrtext_m
- scrtext_s
- reptext
- coltext
- WHERE fieldname = 'DELETED_ICON'.
- DELETE et_fieldcat WHERE fieldname = 'DELETED'.
- " Adding editable fields
- APPEND:
- 'DOC_AMOUNT' TO lt_str,
- 'DOC_DATE' TO lt_str,
- 'COUNTRY_CODE' TO lt_str,
- 'SHIP_TYPE' TO lt_str,
- 'EXP_PAY_DATE' TO lt_str,
- 'DOC_TYPE_CODE' TO lt_str,
- 'LINE_NUM' TO lt_str,
- 'DOC_CONT_AMOUNT' TO lt_str,
- 'DOC_REM_AMOUNT' TO lt_str.
- ls_style-style = cl_gui_alv_grid=>mc_style_enabled.
- LOOP AT et_fieldcat INTO ls_catalog.
- lv_tabix = sy-tabix.
- CLEAR ls_catalog-edit.
- ls_style-fieldname = ls_catalog-fieldname.
- ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
- INSERT ls_style INTO TABLE lt_style_ro.
- READ TABLE lt_str WITH KEY table_line = ls_style-fieldname TRANSPORTING NO FIELDS.
- IF sy-subrc EQ 0.
- ls_style-style = cl_gui_alv_grid=>mc_style_enabled.
- ls_catalog-edit = 'X'.
- ENDIF.
- INSERT ls_style INTO TABLE lt_style_rw.
- MODIFY et_fieldcat FROM ls_catalog INDEX lv_tabix TRANSPORTING edit.
- ENDLOOP.
- LOOP AT loc_alv_data INTO ls_alv_data.
- ls_alv_data-style[] = lt_style_ro[].
- MODIFY loc_alv_data FROM ls_alv_data INDEX sy-tabix.
- ENDLOOP.
- " Adding dropdown handle
- READ TABLE et_fieldcat INTO ls_catalog WITH KEY fieldname = 'STATUS'.
- IF sy-subrc EQ 0.
- lv_tabix = sy-tabix.
- CALL FUNCTION 'DD_DOMVALUES_GET'
- EXPORTING
- domname = ls_catalog-domname
- text = 'X'
- langu = sy-langu
- TABLES
- dd07v_tab = lt_dd07v[]
- EXCEPTIONS
- OTHERS = 2.
- lv_max = 0.
- LOOP AT lt_dd07v INTO ls_dd07v.
- lv_int = strlen( ls_dd07v-ddtext ).
- if lv_int gt lv_max.
- lv_max = lv_int.
- endif.
- ls_drop_down_alias-handle = 1.
- ls_drop_down_alias-value = ls_dd07v-ddtext.
- ls_drop_down_alias-int_value = ls_dd07v-domvalue_l.
- APPEND ls_drop_down_alias TO lt_drop_down_alias.
- ENDLOOP.
- ls_catalog-drdn_hndl = 1.
- ls_catalog-drdn_alias = 'X'.
- ls_catalog-convexit = 'STATZ'.
- ls_catalog-outputlen = lv_max.
- MODIFY et_fieldcat FROM ls_catalog INDEX lv_tabix.
- CALL METHOD loc_grid->set_drop_down_table
- EXPORTING
- it_drop_down_alias = lt_drop_down_alias.
- ENDIF.
- ENHANCEMENT-POINT ES_J3RF_SPDL_FCAT_L SPOTS ES_J3RF_SPDL .
- *$*$-Start: ES_J3RF_SPDL_FCAT_L-----------------------------------------------------------------$*$*
- ENHANCEMENT 3 ZEI_TR_040_SPD_LIST. "active version
- zcl_tr_040_spd_assist=>change_fcat( CHANGING ct_fcat = et_fieldcat ).
- ENDENHANCEMENT.
- *$*$-End: ES_J3RF_SPDL_FCAT_L-----------------------------------------------------------------$*$*
- ENDMETHOD.
- METHOD adjust_layout.
- DATA:
- lt_catalog TYPE lvc_t_fcat,
- ls_catalog TYPE lvc_s_fcat,
- ls_layout TYPE lvc_s_layo.
- loc_grid->get_frontend_layout(
- IMPORTING
- es_layout = ls_layout
- ).
- ls_layout-stylefname = 'STYLE'.
- loc_grid->set_frontend_layout( is_layout = ls_layout ).
- ENDMETHOD.
- METHOD update_statuses.
- DATA:
- lt_row TYPE lvc_t_row,
- lt_data LIKE loc_alv_data,
- lv_type TYPE char1,
- lv_date TYPE j_3rfspd_date,
- ls_data LIKE LINE OF loc_alv_data,
- lv_status TYPE j_3rfspd_header-status,
- lx_err TYPE abap_bool.
- lx_err = edit_auth_check( ).
- CHECK lx_err NE abap_true.
- lt_data = me->get_selected_lines( ).
- IF lines( lt_data ) LT 1.
- RETURN.
- ENDIF.
- ENHANCEMENT-POINT ES_J3RF_SPDL_STAT SPOTS ES_J3RF_SPDL .
- IF iv_status IS SUPPLIED.
- lv_status = iv_status.
- ELSE.
- lv_status = j_3rfspd_header-status.
- ENDIF.
- IF lv_status EQ 'APP'.
- lv_date = j_3rfspd_header-appbnk_date.
- ELSEIF lv_status EQ 'SNT'.
- lv_date = j_3rfspd_header-sntbnk_date.
- ELSE.
- CLEAR lv_date.
- ENDIF.
- gr_dbobj->clear_messages( ).
- gr_dbobj->change_status(
- EXPORTING
- iv_status = lv_status " SPD. Status code
- iv_date = lv_date
- IMPORTING
- ev_error = lx_err " Data element for domain BOOLE: TRUE (='X') and FALSE (=' ')
- CHANGING
- ct_spd_list = lt_data
- ).
- LOOP AT lt_data INTO ls_data.
- 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.
- ENDLOOP.
- lv_type = gr_dbobj->repopulate_log( ).
- CASE lv_type.
- WHEN 'E'.
- MESSAGE e030.
- WHEN 'W'.
- MESSAGE w030.
- WHEN space.
- MESSAGE s037.
- ENDCASE.
- me->refresh_stable( ).
- ENDMETHOD.
- METHOD create_pdf_mass.
- DATA:
- lt_data LIKE loc_alv_data,
- lv_yes TYPE abap_bool,
- ls_data LIKE LINE OF lt_data,
- lv_err TYPE abap_bool,
- ls_header TYPE j_3rfspd_header,
- lt_spd_id TYPE tty_spd_id.
- FIELD-SYMBOLS: <fs_line> LIKE LINE OF loc_alv_data.
- CLEAR: lt_data[].
- lt_data = get_selected_lines( ).
- IF lines( lt_data ) LT 1.
- RETURN.
- ENDIF.
- LOOP AT lt_data INTO ls_data.
- MOVE-CORRESPONDING ls_data TO ls_header.
- APPEND ls_header TO lt_spd_id.
- ENDLOOP.
- gr_app->create_pdf( lt_spd_id ).
- ENDMETHOD.
- METHOD get_selected_lines.
- DATA:
- lt_row TYPE lvc_t_row,
- ls_row TYPE lvc_s_row.
- CLEAR:
- rt_selected_lines,
- lt_row[],
- ls_row.
- FIELD-SYMBOLS:
- <fs> LIKE LINE OF me->loc_alv_data.
- loc_grid->get_selected_rows(
- IMPORTING
- et_index_rows = lt_row
- ).
- IF lines( lt_row ) LT 1.
- IF me->loc_ucomm eq '&STATE' or me->loc_ucomm eq '&DETAIL'
- or me->loc_ucomm eq '&EDIT' or me->loc_ucomm eq '&DEL'
- or me->loc_ucomm eq '&CORR' or me->loc_ucomm eq '&CREA_PDF'
- or me->loc_ucomm eq '&LOG' or me->loc_ucomm eq '&DISP'.
- MESSAGE e035(j3rspd) WITH 'Error'.
- RETURN.
- ENDIF.
- ENDIF.
- LOOP AT lt_row INTO ls_row.
- READ TABLE loc_alv_data ASSIGNING <fs> INDEX ls_row-index.
- IF sy-subrc EQ 0.
- APPEND <fs> TO rt_selected_lines.
- ENDIF.
- ENDLOOP.
- ENDMETHOD.
- METHOD get_selected_line.
- DATA:
- rt_line LIKE me->loc_alv_data.
- CLEAR:
- rs_line.
- rt_line = me->get_selected_lines( ).
- * IF lines( rt_line ) NE 1.
- * IF me->loc_ucomm <> '&STATE' and me->loc_ucomm <> '&DETAIL'
- * and me->loc_ucomm <> '&EDIT' and me->loc_ucomm <> '&DEL'
- * and me->loc_ucomm <> '&CORR' and me->loc_ucomm <> '&CREA_PDF'
- * and me->loc_ucomm <> '&LOG'.
- *
- * RETURN.
- * ENDIF.
- * ENDIF.
- READ TABLE rt_line INTO rs_line INDEX 1.
- IF sy-subrc NE 0.
- CLEAR rs_line.
- RETURN.
- ENDIF.
- ENDMETHOD.
- METHOD gos_functionality.
- CONCATENATE p_spd_id p_spd_gjahr INTO spd_obj.
- * fill GOS parameters
- clear: gs_lporb, gs_bc_object.
- gs_lporb-typeid = C_OBJTYPE.
- gs_lporb-instid = spd_obj. "object key
- gs_lporb-catid = 'BO'.
- gs_bc_object-catid = gs_lporb-catid.
- gs_object-objtype = gs_lporb-typeid.
- gs_object-objkey = gs_lporb-instid.
- gp_no_instance = ' '.
- clear gp_direct.
- * create GOS
- CREATE OBJECT go_publication
- EXPORTING
- is_object = gs_object
- is_bc_object = gs_bc_object
- ip_no_instance = gp_no_instance
- ip_no_commit = gp_commit
- ip_start_direct = gp_direct
- ip_mode = gp_rwmod
- ip_vsi_profile = gp_vsiprf
- it_service_selection = gt_service_selection.
- ENDMETHOD.
- METHOD before_ucomm.
- DATA:
- lx_no_del TYPE abap_bool,
- lx_no_ed TYPE abap_bool,
- lx_val TYPE abap_bool,
- lx_ro TYPE abap_bool,
- lv_no_corr TYPE abap_bool,
- lv_err TYPE abap_bool,
- lv_str TYPE string,
- lv_ucomm TYPE syucomm,
- lv_in1 TYPE iconname,
- lv_in2 TYPE iconname,
- lv_answer TYPE c LENGTH 1,
- ls_header TYPE j_3rfspd_header,
- lt_data LIKE loc_alv_data,
- lt_item TYPE j_3rfspd_t_supportdoc,
- lt_comm TYPE j_3rfspd_t_comment,
- ls_msg TYPE j_3rs_msg,
- ls_data LIKE LINE OF loc_alv_data,
- lv_updated TYPE boole_d,
- lt_spd_id TYPE tty_spd_id,
- ls_spd_id TYPE LINE OF tty_spd_id.
- me->loc_ucomm = e_ucomm.
- ls_data = me->get_selected_line( ).
- MOVE-CORRESPONDING ls_data TO ls_header.
- cl_j3rf_spd=>get_status_data( EXPORTING
- iv_spd_status = ls_header-status " SPD. Status code
- IMPORTING
- ev_edit_restr = lx_no_ed " SPD edition is restricted
- ev_delete_restr = lx_no_del " SPD deletion is restricted
- ev_not_corr = lv_no_corr " SPD correction creation is restricted
- ).
- ENHANCEMENT-POINT es_j3rf_spdl_bucomm_l SPOTS es_j3rf_spdl .
- " DP&P: check partner statuses
- DATA: lt_spd_alv_item_blocked TYPE j_3rfspd_t_list_alv.
- IF ( e_ucomm = gc_commands-edit OR
- e_ucomm = gc_commands-display OR
- e_ucomm = gc_commands-create_corr ) AND
- ls_data IS INITIAL.
- MESSAGE i048.
- me->set_ucomm( space ).
- RETURN.
- ENDIF.
- IF e_ucomm = gc_commands-edit OR
- e_ucomm = gc_commands-delete OR
- e_ucomm = gc_commands-set_state OR
- e_ucomm = gc_commands-create_corr.
- gr_app->check_selected_spd( IMPORTING et_spd_alv_item_blocked = lt_spd_alv_item_blocked ).
- IF NOT lt_spd_alv_item_blocked IS INITIAL.
- " Forbid all change operation
- MESSAGE e484(j3r_legal_forms).
- me->set_ucomm( space ).
- RETURN.
- ENDIF.
- ENDIF.
- CASE e_ucomm.
- WHEN gc_commands-display.
- lv_updated = gr_app->set_spd_header( ls_header ).
- IF lv_updated EQ abap_true.
- gr_app->set_pd_data( ls_header-intpodnum ).
- ENDIF.
- gp_rwmod = 'D'. "disable editing for GOS
- gos_functionality( p_spd_id = ls_header-spd_id p_spd_gjahr = ls_header-spd_gjahr ).
- gr_app->load_and_display_spd( gc_commands-display ).
- me->refresh_stable( ).
- me->set_ucomm( space ).
- WHEN gc_commands-edit.
- lv_err = edit_auth_check( ).
- CHECK lv_err NE abap_true.
- lv_ucomm = gc_commands-edit.
- CALL METHOD cl_fin_locru_switch_check=>susage_insert
- EXPORTING
- i_feature = 'GS_GSCBCIS_124_SUB3_10'.
- lv_in1 = icon_display.
- lv_in2 = icon_cancel.
- CLEAR lx_ro.
- IF lx_no_ed EQ abap_true.
- MESSAGE s040 INTO lv_str WITH ls_header-spd_id ls_header-spd_gjahr.
- lx_ro = abap_true.
- ELSEIF ls_data-deleted EQ abap_true.
- MESSAGE e032 INTO lv_str WITH ls_header-spd_id ls_header-spd_gjahr.
- lx_ro = abap_true.
- ELSE.
- lock_line(
- EXPORTING is_line = ls_data
- IMPORTING es_message = ls_msg
- ex_locked = lx_val
- ).
- IF lx_val NE abap_true.
- MESSAGE ID ls_msg-msgid TYPE ls_msg-msgty NUMBER ls_msg-msgno INTO lv_str
- WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4.
- lx_ro = abap_true.
- ENDIF.
- ENDIF.
- gp_rwmod = 'E'. "enable editing for GOS
- IF lx_ro EQ abap_true.
- CALL FUNCTION 'POPUP_TO_CONFIRM'
- EXPORTING
- * TITLEBAR = ' '
- * DIAGNOSE_OBJECT = ' '
- text_question = lv_str
- text_button_1 = 'Display'(DIZ)
- icon_button_1 = lv_in1
- text_button_2 = 'Cancel'(CAN)
- icon_button_2 = lv_in2
- * DEFAULT_BUTTON = '1'
- display_cancel_button = ' '
- * USERDEFINED_F1_HELP = ' '
- * START_COLUMN = 25
- * START_ROW = 6
- * POPUP_TYPE =
- * IV_QUICKINFO_BUTTON_1 = ' '
- * IV_QUICKINFO_BUTTON_2 = ' '
- IMPORTING
- answer = lv_answer
- * TABLES
- * PARAMETER =
- EXCEPTIONS
- * TEXT_NOT_FOUND = 1
- OTHERS = 2.
- IF sy-subrc <> 0.
- me->set_ucomm( space ).
- RETURN.
- ENDIF.
- IF lv_answer EQ '1'.
- lv_ucomm = gc_commands-display.
- gp_rwmod = 'D'. "disable editing for GOS
- ELSE.
- me->set_ucomm( space ).
- RETURN.
- ENDIF.
- ENDIF.
- lv_updated = gr_app->set_spd_header( ls_header ).
- IF lv_updated EQ abap_true.
- gr_app->set_pd_data( ls_header-intpodnum ).
- ENDIF.
- gos_functionality( p_spd_id = ls_header-spd_id p_spd_gjahr = ls_header-spd_gjahr ).
- gr_app->load_and_display_spd( lv_ucomm ).
- unlock_line( ).
- me->refresh_stable( ).
- me->set_ucomm( space ).
- WHEN gc_commands-delete.
- delete_rows( ).
- me->set_ucomm( space ).
- WHEN gc_commands-create_corr.
- lv_err = edit_auth_check( ).
- CHECK lv_err NE abap_true.
- IF ls_data-deleted EQ abap_true.
- MESSAGE e033.
- RETURN.
- ENDIF.
- * Check if correction can be created for SPD
- IF lv_no_corr EQ abap_true.
- MESSAGE e111(j3rspd) WITH ls_data-status.
- RETURN.
- ENDIF.
- lock_line(
- EXPORTING is_line = ls_data
- IMPORTING es_message = ls_msg
- ex_locked = lx_val
- ).
- IF lx_val NE abap_true.
- MESSAGE ID ls_msg-msgid TYPE ls_msg-msgty NUMBER ls_msg-msgno
- WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4.
- RETURN.
- ENDIF.
- lv_updated = gr_app->set_spd_header( ls_header ).
- IF lv_updated EQ abap_true.
- gr_app->set_pd_data( ls_header-intpodnum ).
- ENDIF.
- gr_app->load_and_display_spd( gc_commands-create_corr ).
- unlock_line( ).
- gr_app->load_list( ).
- me->refresh_stable( ).
- me->set_ucomm( space ).
- WHEN gc_commands-create_pdf.
- me->CREATE_PDF_MASS( ).
- me->set_ucomm( space ).
- WHEN gc_commands-set_state.
- lv_err = edit_auth_check( ).
- CHECK lv_err NE abap_true.
- " Implement the logic here
- lt_data = me->get_selected_lines( ).
- clear j_3rfspd_header-status.
- me->set_ucomm( space ).
- IF lines( lt_data ) GT 0.
- CALL SCREEN gc_dynpros-status STARTING AT 7 7.
- ENDIF.
- WHEN gc_commands-show_log.
- cl_j3r_appl_log=>save( ).
- cl_j3r_appl_log=>display( i_object = gc_obj_appl_log ).
- me->set_ucomm( space ).
- WHEN OTHERS.
- me->set_ucomm( e_ucomm ).
- ENDCASE.
- ENDMETHOD.
- METHOD after_ucomm.
- ENDMETHOD.
- METHOD ucomm.
- CASE e_ucomm.
- WHEN gc_commands-create_corr
- OR gc_commands-edit
- OR gc_commands-display.
- me->before_ucomm( e_ucomm ).
- WHEN gc_commands-delete.
- me->delete_rows( ).
- WHEN gc_commands-set_state.
- me->update_statuses( ).
- WHEN gc_commands-create_pdf.
- me->create_pdf_mass( ).
- WHEN gc_commands-show_log.
- cl_j3r_appl_log=>save( ).
- cl_j3r_appl_log=>display( i_object = gc_obj_appl_log ).
- me->set_ucomm( space ).
- ENDCASE.
- ENDMETHOD.
- METHOD delete_rows.
- DATA:
- lt_data LIKE loc_alv_data,
- lt_data_c type j_3rfspd_t_header,
- lv_yes TYPE abap_bool,
- ls_data LIKE LINE OF lt_data,
- ls_data_c type j_3rfspd_header,
- lv_err TYPE abap_bool.
- FIELD-SYMBOLS:
- <fs_line> LIKE LINE OF loc_alv_data.
- CLEAR:
- lt_data[].
- lv_err = edit_auth_check( ).
- CHECK lv_err NE abap_true.
- lt_data = get_selected_lines( ).
- IF lines( lt_data ) LT 1.
- RETURN.
- ENDIF.
- CALL FUNCTION 'POPUP_TO_CONFIRM'
- EXPORTING
- * TITLEBAR = ' '
- * DIAGNOSE_OBJECT = ' '
- text_question = 'Are you sure you want to delete selected SPDs?'(DEL)
- * TEXT_BUTTON_1 = 'Ja'(001)
- * ICON_BUTTON_1 = ' '
- * TEXT_BUTTON_2 = 'Nein'(002)
- * ICON_BUTTON_2 = ' '
- * DEFAULT_BUTTON = '1'
- display_cancel_button = space
- * USERDEFINED_F1_HELP = ' '
- * START_COLUMN = 25
- * START_ROW = 6
- * POPUP_TYPE =
- * IV_QUICKINFO_BUTTON_1 = ' '
- * IV_QUICKINFO_BUTTON_2 = ' '
- IMPORTING
- answer = lv_yes
- * TABLES
- * PARAMETER =
- EXCEPTIONS
- * TEXT_NOT_FOUND = 1
- OTHERS = 2.
- IF sy-subrc <> 0.
- RETURN.
- ELSEIF lv_yes NE '1'.
- RETURN.
- ENDIF.
- CALL METHOD cl_fin_locru_switch_check=>susage_insert
- EXPORTING
- i_feature = 'GS_GSCBCIS_124_SUB3_09'.
- gr_dbobj->clear_messages( ).
- gr_dbobj->delete_spd(
- IMPORTING
- ev_error = lv_err
- et_spd_orig = lt_data_c
- CHANGING
- ct_spd_list = lt_data
- ).
- IF p_v_del NE abap_true. "Show deleted
- LOOP AT lt_data INTO ls_data WHERE deleted = 'X'.
- DELETE loc_alv_data WHERE spd_id = ls_data-spd_id AND spd_gjahr = ls_data-spd_gjahr.
- ENDLOOP.
- ELSE.
- LOOP AT lt_data INTO ls_data WHERE deleted = 'X'.
- LOOP AT loc_alv_data ASSIGNING <fs_line> WHERE spd_id = ls_data-spd_id AND spd_gjahr = ls_data-spd_gjahr.
- <fs_line>-deleted = 'X'.
- <fs_line>-deleted_icon = icon_delete.
- ENDLOOP.
- ENDLOOP.
- ENDIF.
- LOOP AT lt_data_c INTO ls_data_c.
- LOOP AT loc_alv_data ASSIGNING <fs_line> WHERE spd_id = ls_data_c-spd_id AND spd_gjahr = ls_data_c-spd_gjahr.
- CLEAR <fs_line>-corrected.
- ENDLOOP.
- ENDLOOP.
- me->refresh_stable( ).
- lv_err = gr_dbobj->repopulate_log( ).
- CASE lv_err.
- WHEN 'E'.
- MESSAGE e025.
- WHEN 'W'.
- MESSAGE w025.
- WHEN space.
- message s045.
- ENDCASE.
- ENDMETHOD.
- METHOD toolbar.
- DATA:
- ls_toolbar TYPE stb_button.
- CLEAR:
- ls_toolbar.
- FIELD-SYMBOLS: <fs_tab> LIKE e_object->mt_toolbar.
- ASSIGN e_object->mt_toolbar TO <fs_tab>.
- DELETE TABLE <fs_tab> WITH TABLE KEY function = :
- cl_gui_alv_grid=>mc_fc_loc_copy ,
- cl_gui_alv_grid=>mc_fc_loc_cut ,
- cl_gui_alv_grid=>mc_fc_loc_insert_row ,
- cl_gui_alv_grid=>mc_fc_loc_move_row ,
- cl_gui_alv_grid=>mc_fc_loc_paste ,
- cl_gui_alv_grid=>mc_fc_loc_paste_new_row ,
- cl_gui_alv_grid=>mc_fc_loc_delete_row ,
- cl_gui_alv_grid=>mc_fc_loc_append_row ,
- cl_gui_alv_grid=>mc_fc_loc_copy_row,
- cl_gui_alv_grid=>mc_fc_loc_undo ,
- cl_gui_alv_grid=>mc_fc_print,
- cl_gui_alv_grid=>mc_fc_find,
- cl_gui_alv_grid=>mc_fc_find_more,
- cl_gui_alv_grid=>mc_fc_filter,
- cl_gui_alv_grid=>mc_fc_views,
- cl_gui_alv_grid=>mc_fc_sum,
- cl_gui_alv_grid=>mc_fc_print_back,
- cl_gui_alv_grid=>mc_fc_check,
- cl_gui_alv_grid=>mc_fc_detail,
- cl_gui_alv_grid=>mc_mb_view,
- cl_gui_alv_grid=>mc_mb_export,
- cl_gui_alv_grid=>mc_fc_graph ,
- cl_gui_alv_grid=>mc_fc_info ,
- cl_gui_alv_grid=>mc_mb_subtot,
- cl_gui_alv_grid=>mc_mb_sum,
- cl_gui_alv_grid=>mc_fc_refresh .
- " Adding our functions
- gr_app->tb_add_separator( CHANGING ce_object = e_object ).
- CLEAR ls_toolbar.
- ls_toolbar-function = gc_commands-set_state.
- ls_toolbar-icon = icon_set_state.
- ls_toolbar-text = 'Set status'(SST).
- ls_toolbar-quickinfo = 'Set status'(SST).
- APPEND ls_toolbar TO e_object->mt_toolbar.
- gr_app->tb_add_separator( CHANGING ce_object = e_object ).
- CLEAR ls_toolbar.
- ls_toolbar-function = gc_commands-display.
- ls_toolbar-icon = icon_display.
- ls_toolbar-quickinfo = 'Diplay SPD'(DIS).
- APPEND ls_toolbar TO e_object->mt_toolbar.
- ls_toolbar-function = gc_commands-edit.
- ls_toolbar-icon = icon_change.
- ls_toolbar-quickinfo = 'Change SPD'(CHS).
- APPEND ls_toolbar TO e_object->mt_toolbar.
- ls_toolbar-function = gc_commands-delete.
- ls_toolbar-icon = icon_delete.
- ls_toolbar-quickinfo = 'Delete SPD'(DES).
- APPEND ls_toolbar TO e_object->mt_toolbar.
- ls_toolbar-function = gc_commands-create_corr.
- ls_toolbar-icon = icon_create.
- ls_toolbar-quickinfo = 'Create corr SPD'(CRE).
- ls_toolbar-text = 'Create corr SPD'(CRE).
- APPEND ls_toolbar TO e_object->mt_toolbar.
- gr_app->tb_add_separator( CHANGING ce_object = e_object ).
- gr_app->tb_add_button(
- EXPORTING iv_button = gc_commands-create_pdf
- CHANGING ce_object = e_object
- ).
- gr_app->tb_add_separator( CHANGING ce_object = e_object ).
- gr_app->tb_add_button(
- EXPORTING iv_button = gc_commands-show_log
- CHANGING ce_object = e_object
- ).
- ENHANCEMENT-POINT ES_J3RF_SPDL_TOOLBAR_L SPOTS ES_J3RF_SPDL .
- ENDMETHOD.
- METHOD hotspot_click.
- DATA:
- ls_line LIKE LINE OF me->loc_alv_data,
- lv_int TYPE i,
- ls_header TYPE j_3rfspd_header,
- lv_updated TYPE boole_d.
- READ TABLE me->loc_alv_data INTO ls_line INDEX e_row_id.
- IF sy-subrc NE 0.
- RETURN.
- ENDIF.
- lv_int = e_row_id.
- ENHANCEMENT-POINT ES_J3RF_SPDL_HOTSPOT_L SPOTS ES_J3RF_SPDL .
- CASE e_column_id-fieldname.
- WHEN 'INTPODNUM' OR 'EXTPODNUM'.
- CALL METHOD cl_j3rf_spd=>show_deal_pass
- EXPORTING
- iv_intpodnum = ls_line-intpodnum.
- WHEN 'INTCNUM' OR 'EXTCNUM'.
- CALL METHOD cl_j3rf_spd=>show_contract
- EXPORTING
- iv_intcnum = ls_line-intcnum
- iv_bukrs = ls_line-bukrs.
- WHEN 'SPD_ID'.
- MOVE-CORRESPONDING ls_line TO ls_header.
- * IF ls_data IS INITIAL.
- * me->set_ucomm( space ).
- * RETURN.
- * ENDIF.
- lv_updated = gr_app->set_spd_header( ls_header ).
- IF lv_updated EQ abap_true.
- gr_app->set_pd_data( ls_header-intpodnum ).
- ENDIF.
- gp_rwmod = 'D'. "disable editing for GOS
- gos_functionality( p_spd_id = ls_header-spd_id p_spd_gjahr = ls_header-spd_gjahr ).
- gr_app->load_and_display_spd( gc_commands-display ).
- me->refresh_stable( ).
- me->set_ucomm( space ).
- ENDCASE.
- ENDMETHOD.
- METHOD edit_auth_check.
- AUTHORITY-CHECK OBJECT 'J3RF_SPD'
- ID 'ACTVT' FIELD '23'.
- IF sy-subrc <> 0.
- MESSAGE e096(j3rspd).
- rv_error = abap_true.
- ENDIF.
- ENDMETHOD.
- *&-------------------------------
- ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement