Транзакция ZDELETE_COGI. Удаление записей из COGI (Ошибки при автоматических движениях материалов).


При удалении записи копируются в таблицу zaffw_copy.
Для выполнения необходим объект полномочий ZPP_ADMIN операция ’02’.
Запуск возможен только в одном экземпляре.

ABAP Code

*&---------------------------------------------------------------------*
*& Report ZDELETE_COGI
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZDELETE_COGI.
tables: affw,zaffw_copy.
data: it_affw type table of affw,
it_affwb type table of affwb,
ls_affw type zaffw_copy,
error type char01.
field-symbols: type affw,
type affwb.
select-options: so_lgort for affw-lgort.
parameters: p_vernut as checkbox default ''.
*-->Блокировка повторного запуска программы
data: repid type indx_srtfd,
msg(255) type c.
repid = sy-repid.
call function 'ENQUEUE_ESINDX'
exporting
relid = 'Z2'
srtfd = repid
srtf2 = 0
exceptions
foreign_lock = 1
system_failure = 2.
if sy-subrc ne 0.
concatenate 'Программа уже запущена пользователем' sy-msgv1 into msg.
message msg type 'E'.
leave program.
endif.
*<--Блокировка повторного запуска программы
authority-check object 'ZPP_ADMIN'
id 'ACTVT' field '02'.
if sy-subrc <> 0.
message 'Ошибка авторизации' type 'E'.
else.
if p_vernut = ''.
perform select_data using error.
loop at it_affw assigning .
move-corresponding to ls_affw.
ls_affw-user_create = sy-uname.
ls_affw-data_create = sy-datum.
ls_affw-time_create = sy-uzeit.
insert zaffw_copy from ls_affw.
append initial line to it_affwb assigning .
move-corresponding to .
-vbkz = 'D'.
unassign .
endloop.
set update task local.
do 10 times.
call function 'CO_FW_AFFW_POST' "Удаление записей из COGI (Ошибки при автоматических движениях материалов)
tables
affw_bt = it_affwb.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
perform select_data using error.
if error = ''.exit.endif.
enddo.
else.
select * from zaffw_copy into corresponding fields of table it_affw where lgort in so_lgort.
insert affw from table it_affw.
clear it_affwb.
it_affwb = it_affw.
endif.
include zdelete_cogi_output.
endif.
*-->Разблокировка повторного запуска программы
call function 'DEQUEUE_ESINDX'
exporting
relid = 'Z2'
srtfd = repid
srtf2 = 1.
*<--Разблокировка повторного запуска программы
form select_data using error type char01.
select * from affw into corresponding fields of table it_affw where lgort in so_lgort.
if sy-subrc <> 0.error = ''.else.error = 'X'.endif.
endform.

ABAP Code

*&---------------------------------------------------------------------*
*& Include ZDELETE_COGI_OUTPUT
*&---------------------------------------------------------------------*
* Объявляем объект типа cl_salv_table, который выведет наши данные в виде ALV
data: gc_alv_table type ref to cl_salv_table,
gc_functions type ref to cl_salv_functions,
gc_layout type ref to cl_salv_layout,
keys type salv_s_layout_key,
gc_columns type ref to cl_salv_columns_table,
gc_sorts type ref to cl_salv_sorts,
gc_colwork type ref to cl_salv_column_table,
gc_display type ref to cl_salv_display_settings,
gc_aggr type ref to cl_salv_aggregations.
* Статический метод класса для создания объекта и связывания с нашей таблицей
cl_salv_table=>factory( importing r_salv_table = gc_alv_table
changing t_table = it_affwb ).

*gc_columns = gc_alv_table->get_columns( ).
*gc_colwork ?= gc_columns->get_column( 'ERFMG' ).
*gc_colwork->set_long_text( 'Количество в БЕИ' ).
*gc_colwork->set_medium_text( 'КолБЕИ' ).
*gc_colwork->set_short_text( 'КБЕИ' ).
*gc_colwork->set_alignment( '1' ).
*gc_colwork->set_lowercase( 'X' ).
*gc_colwork->set_output_length( '10' ).
*
*gc_colwork ?= gc_columns->get_column( 'SCHET' ).
*gc_colwork->set_long_text( 'Счётчик' ).
*gc_colwork->set_medium_text( 'Счётчик' ).
*gc_colwork->set_short_text( 'Счётчик' ).
*gc_colwork->set_output_length( '1' ).

*gc_colwork ?= gc_columns->get_column( 'MENGE_COUNT' ).
*gc_colwork->set_long_text( 'Потребность' ).
*gc_colwork->set_medium_text( 'Потр' ).
*gc_colwork->set_short_text( 'Потр' ).
*gc_colwork->set_alignment( '1' ).
*gc_colwork->set_lowercase( 'X' ).
*gc_colwork->set_output_length( '10' ).
*gc_colwork ?= gc_columns->get_column( 'VERPR_COUNT_NORM' ).
*gc_colwork->set_long_text( 'Нормативная потребность, BYR' ).
*gc_colwork->set_medium_text( 'НормПотр, BYR' ).
*gc_colwork->set_short_text( 'НПтр, BYR' ).
*gc_colwork->set_alignment( '1' ).
*gc_colwork->set_lowercase( 'X' ).
*gc_colwork->set_output_length( '10' ).
*gc_colwork->set_zero( '' ).
*gc_colwork->set_output_length( '12' ).
*gc_colwork ?= gc_columns->get_column( 'VERPR_COUNT' ).
*gc_colwork->set_long_text( 'Потребность, BYR' ).
*gc_colwork->set_medium_text( 'Потр, BYR' ).
*gc_colwork->set_short_text( 'Птр, BYR' ).
*gc_colwork->set_alignment( '1' ).
*gc_colwork->set_lowercase( 'X' ).
*gc_colwork->set_output_length( '10' ).
*gc_colwork->set_zero( '' ).
*gc_colwork->set_output_length( '12' ).
*gc_colwork ?= gc_columns->get_column( 'TYPE_END' ).
*gc_colwork->set_long_text( 'Закупка' ).
*gc_colwork->set_medium_text( 'Закуп' ).
*gc_colwork->set_short_text( 'Е' ).
*gc_colwork->set_alignment( '1' ).
*gc_colwork->set_output_length( '1' ).
*gc_colwork ?= gc_columns->get_column( 'LABST' ).
*gc_colwork->set_long_text( 'Запас весь' ).
*gc_colwork->set_medium_text( 'Запас' ).
*gc_colwork->set_short_text( 'Запас' ).
*gc_colwork->set_alignment( '1' ).
*gc_colwork->set_output_length( '12' ).
*gc_colwork ?= gc_columns->get_column( 'MATNR_EXT' ).
*gc_colwork->set_alignment( '1' ).
*gc_colwork->set_output_length( '60' ).
** Получить список полей для сортировки
*gc_sorts = gc_alv_table->get_sorts( ).
** Задать сортировку по колонкам
*gc_sorts->add_sort( columnname = 'VID_MASH' sequence = '2' subtotal = 'X').
*gc_sorts->add_sort( columnname = 'TORGMARKA' sequence = '2').
*gc_sorts->add_sort( columnname = 'MAKTX' sequence = '2').
gc_display = gc_alv_table->get_display_settings( ).
if p_vernut = ''.
gc_display->set_list_header( 'Обработанные записи(попытка удаления):' ).
else.
gc_display->set_list_header( 'Обработанные записи(попытка восстановления):' ).
endif.
*Включить функции грида
gc_functions = gc_alv_table->get_functions( ).
gc_functions->set_all( 'X' ).
** Выполнить агрегирование
*gc_aggr = gc_alv_table->get_aggregations( ).
*gc_aggr->add_aggregation( 'MENGE_COUNT' ).
*gc_aggr->add_aggregation( 'VERPR_COUNT' ).
*gc_aggr->add_aggregation( 'MENGE_COUNT_NORM' ).
*gc_aggr->add_aggregation( 'VERPR_COUNT_NORM' ).
*gc_aggr->add_aggregation( 'ZCOUNT1' ).
* Добавим ведение вариантов отражения таблицы
gc_layout = gc_alv_table->get_layout( ).
keys-report = sy-repid.
gc_layout->set_key( keys ).
gc_layout->set_default( 'X' ).
gc_layout->set_save_restriction( '3' ).
* Вывести ALV-таблицу на экран
gc_alv_table->display( ).

Добавить комментарий