Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *&---------------------------------------------------------------------*
- *& Проверка диапазонов номеров
- *&---------------------------------------------------------------------*
- report yecc_bc_check_09.
- data: begin of gs_report,
- status type icon-id,
- object type tnro-object,
- devclass type tadir-devclass,
- yearind type tnro-yearind,
- dtelsobj type tnro-dtelsobj,
- next_year type char1,
- is_used type char1,
- txtshort type tnrot-txtshort,
- code type tnro-code,
- nrrangenr type nriv-nrrangenr,
- percentage type tnro-percentage,
- percentage_f type tnro-percentage,
- txt type tnrot-txt,
- include type cross-include,
- messages type bapiret2_tab,
- msgty type sy-msgty,
- end of gs_report.
- selection-screen begin of block b_sel with frame title text-001.
- select-options: s_obj for gs_report-object default 'Z*' option cp.
- parameters: p_year type nriv-toyear obligatory memory id gjr.
- selection-screen end of block b_sel.
- data: gt_report like gs_report occurs 0 with header line.
- field-symbols: <fs_report> like gs_report.
- data: gr_table type ref to cl_salv_table.
- data: p_year_next type nriv-toyear.
- start-of-selection.
- p_year_next = p_year + 1.
- perform select_data.
- perform display_alv.
- end-of-selection.
- form select_data.
- select *
- into corresponding fields of table gt_report
- from tnro
- where tnro~object in s_obj.
- loop at gt_report assigning <fs_report>.
- select single txt txtshort
- from tnrot
- into corresponding fields of <fs_report>
- where object = <fs_report>-object
- and langu = sy-langu.
- select single devclass from tadir into corresponding fields of <fs_report>
- where pgmid = 'R3TR'
- and object = 'NROB'
- and obj_name = <fs_report>-object.
- endloop.
- loop at gt_report assigning <fs_report>.
- data: lt_nriv type standard table of nriv with header line.
- clear lt_nriv.
- clear lt_nriv[].
- if <fs_report>-yearind = 'X'.
- lt_nriv-toyear = p_year.
- else.
- lt_nriv-toyear = ''.
- endif.
- lt_nriv-object = <fs_report>-object.
- select * from nriv into table lt_nriv
- where object = lt_nriv-object
- and toyear = lt_nriv-toyear.
- if lines( lt_nriv ) = 0.
- <fs_report>-is_used = '-'.
- else.
- if lines( lt_nriv ) = 1.
- <fs_report>-nrrangenr = lt_nriv[ 1 ]-nrrangenr.
- else.
- <fs_report>-nrrangenr = 'XX'.
- endif.
- loop at lt_nriv.
- if lt_nriv-nrlevel ne space.
- <fs_report>-is_used = 'X'.
- data: lv_percentage type f.
- lv_percentage = ( lt_nriv-nrlevel - lt_nriv-fromnumber ) / ( lt_nriv-tonumber - lt_nriv-fromnumber ) * 100.
- if lv_percentage > <fs_report>-percentage_f.
- <fs_report>-percentage_f = lv_percentage.
- endif.
- endif.
- endloop.
- data: lt_nriv_next type standard table of nriv with header line.
- clear lt_nriv_next.
- clear lt_nriv_next[].
- if <fs_report>-yearind = 'X'.
- select * from nriv into table lt_nriv_next
- where object = <fs_report>-object
- and toyear = p_year_next.
- if lines( lt_nriv_next ) > 0.
- <fs_report>-next_year = 'X'.
- endif.
- endif.
- endif.
- endloop.
- data: lt_cross type standard table of cross with header line.
- select * from cross into table lt_cross
- where type = 'F'
- and name = 'NUMBER_GET_NEXT'
- and ( include like 'Z%' or include like 'LZ%' ).
- data: lt_abap type abaptxt255_tab.
- data: lv_abap type abaptxt255.
- data: lv_fm_begin type char1.
- loop at lt_cross.
- clear lt_abap[].
- read report lt_cross-include into lt_abap.
- assert sy-subrc = 0.
- lv_fm_begin = ' '.
- loop at lt_abap into lv_abap.
- if lv_abap cs 'NUMBER_GET_NEXT'.
- if lv_abap(1) ne '*'.
- lv_fm_begin = 'X'.
- endif.
- endif.
- if lv_fm_begin = 'X' and lv_abap cs '.'.
- lv_fm_begin = ' '.
- endif.
- if lv_fm_begin = 'X'.
- data: lt_result type match_result_tab.
- find regex `OBJECT.*=.*'(.*)'`
- in lv_abap
- ignoring case
- submatches data(lv_obj).
- if sy-subrc = 0.
- read table gt_report assigning <fs_report> with key object = lv_obj.
- if sy-subrc = 0.
- if <fs_report>-include = space.
- <fs_report>-include = lt_cross-include.
- else.
- <fs_report>-include = '*'.
- endif.
- endif.
- endif.
- endif.
- endloop.
- endloop.
- data: lv_message type string.
- loop at gt_report assigning <fs_report>.
- if <fs_report>-yearind = 'X' and <fs_report>-is_used = 'X' and <fs_report>-next_year = 'X'.
- message i000(xt) with 'Перенесен в следующий год' into lv_message.
- perform append_message using lv_message changing <fs_report>-messages <fs_report>-msgty.
- endif.
- if <fs_report>-yearind = 'X' and <fs_report>-is_used = 'X' and <fs_report>-next_year = ' '.
- case <fs_report>-object.
- when 'FIAA-BELNR'
- or 'SO_OBJ_ADR'
- or 'SO_OBJ_ALI'
- or 'SO_OBJ_DLI'
- or 'SO_OBJ_EXT'
- or 'SO_OBJ_FOL'
- or 'SO_OBJ_OBJ'
- or 'SO_OBJ_RAW'
- or 'SO_OBJ_RCP'
- or 'SO_OBJ_USR'.
- message w000(xt) with 'Не перенесен в следующий год' into lv_message.
- perform append_message using lv_message changing <fs_report>-messages <fs_report>-msgty.
- when others.
- message e000(xt) with 'Не перенесен в следующий год' into lv_message.
- perform append_message using lv_message changing <fs_report>-messages <fs_report>-msgty.
- endcase.
- endif.
- if ( <fs_report>-percentage_f + <fs_report>-percentage ) >= 100.
- message w000(xt) with 'Диапазон кончается' into lv_message.
- perform append_message using lv_message changing <fs_report>-messages <fs_report>-msgty.
- endif.
- endloop.
- loop at gt_report assigning <fs_report>.
- if <fs_report>-object(1) = 'Z' and <fs_report>-include = space.
- message w000(xt) with 'Не найдено использование объекта' into lv_message.
- perform append_message using lv_message changing <fs_report>-messages <fs_report>-msgty.
- endif.
- endloop.
- loop at gt_report assigning <fs_report>.
- case <fs_report>-msgty.
- when 'I'. <fs_report>-status = '@5B@'.
- when 'W'. <fs_report>-status = '@5D@'.
- when 'E'. <fs_report>-status = '@5C@'.
- endcase.
- endloop.
- endform.
- form append_message using iv_message changing ct_messages type bapiret2_tab
- cv_msgty type sy-msgty.
- data: ls_bapiret type bapiret2.
- ls_bapiret-message = iv_message.
- ls_bapiret-type = sy-msgty.
- ls_bapiret-id = sy-msgid.
- ls_bapiret-number = sy-msgno.
- ls_bapiret-message_v1 = sy-msgv1.
- ls_bapiret-message_v2 = sy-msgv2.
- ls_bapiret-message_v3 = sy-msgv3.
- ls_bapiret-message_v4 = sy-msgv4.
- append ls_bapiret to ct_messages.
- if cv_msgty = space.
- cv_msgty = sy-msgty.
- elseif cv_msgty = 'I' and ( sy-msgty = 'W' or sy-msgty = 'E' ).
- cv_msgty = sy-msgty.
- elseif cv_msgty = 'W' and ( sy-msgty = 'E' ).
- cv_msgty = sy-msgty.
- endif.
- endform.
- class lcl_handle_events definition.
- public section.
- methods:
- on_double_click for event double_click of cl_salv_events_table
- importing row column.
- endclass. "lcl_handle_events DEFINITION
- *----------------------------------------------------------------------*
- * CLASS lcl_handle_events IMPLEMENTATION
- *----------------------------------------------------------------------*
- *
- *----------------------------------------------------------------------*
- class lcl_handle_events implementation.
- method on_double_click.
- perform show_cell_info using row column.
- endmethod. "on_double_click
- endclass. "lcl_handle_events IMPLEMENTATION
- form show_cell_info using row type salv_de_row
- column type salv_de_column.
- check row ne 0.
- read table gt_report index row.
- case column.
- when 'STATUS'.
- call function 'FINB_BAPIRET2_DISPLAY'
- exporting
- it_message = gt_report-messages[].
- when others.
- endcase.
- endform.
- form display_alv.
- try.
- call method cl_salv_table=>factory
- importing
- r_salv_table = gr_table
- changing
- t_table = gt_report[].
- data: gr_layout type ref to cl_salv_layout.
- data: ls_key type salv_s_layout_key.
- gr_layout = gr_table->get_layout( ).
- ls_key-report = sy-repid.
- gr_layout->set_key( ls_key ).
- gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
- data: lr_columns type ref to cl_salv_columns_table,
- lr_column type ref to cl_salv_column_table.
- lr_columns = gr_table->get_columns( ).
- lr_columns->set_optimize( 'X' ).
- lr_column ?= lr_columns->get_column( 'MSGTY' ). lr_column->set_visible( ' ' ).
- lr_column ?= lr_columns->get_column( 'PERCENTAGE' ). lr_column->set_visible( ' ' ).
- lr_column ?= lr_columns->get_column( 'STATUS' ). lr_column->set_short_text( '' ). lr_column->set_medium_text( '' ).
- lr_column->set_long_text( 'Статус' ).
- lr_column->set_alignment( 3 ).
- lr_column ?= lr_columns->get_column( 'IS_USED' ). lr_column->set_short_text( '' ). lr_column->set_medium_text( '' ).
- lr_column->set_long_text( 'Используется' ).
- lr_column ?= lr_columns->get_column( 'NEXT_YEAR' ). lr_column->set_short_text( '' ). lr_column->set_medium_text( '' ).
- lr_column->set_long_text( 'Следующий год' ).
- lr_column ?= lr_columns->get_column( 'PERCENTAGE_F' ). lr_column->set_short_text( '' ). lr_column->set_medium_text( '' ).
- lr_column->set_long_text( 'Факт.исп.' ).
- data: lr_events type ref to lcl_handle_events.
- data: lr_events_table type ref to cl_salv_events_table.
- lr_events_table = gr_table->get_event( ).
- create object lr_events.
- set handler lr_events->on_double_click for lr_events_table.
- data: gr_functions type ref to cl_salv_functions_list.
- gr_functions = gr_table->get_functions( ).
- gr_functions->set_default( ).
- gr_table->display( ).
- catch cx_root.
- message 'Ошибка ALV' type 'A'.
- endtry.
- endform.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement