При удалении записи копируются в таблицу zaffw_copy.
Для выполнения необходим объект полномочий ZPP_ADMIN операция ’02’.
Запуск возможен только в одном экземпляре.
ABAP Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | *&---------------------------------------------------------------------* *& 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | *&---------------------------------------------------------------------* *& 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( ). |