Ну в общем тут по ходу пришлось набросать такую программу, ну и может еще кому пригодится...
*&**********************************************************************
*& Comments : Установка индикатора удаления на позиции невыполненных
*& заявок по заданным критериям обработки
*& Platform : SAP R/3 V4.6C or later
*& Autor :
*& Date create :
*& Date change :
*&**********************************************************************
*& Date change :
*&**********************************************************************
*& Текстовые элементы:
*& P_BADAT Датат создания документа
*& P_BANFN Номера документа заявки
*& P_BSART Вид документа
*& P_COMMIT COMMIT WORK
*& P_EBAKZ Только открытые позиции заявок
*& P_EKGRP Группа закупки
*& P_EKORG Закупочная организация
*& P_ERNAM Автор документа
*& P_IDNLF Номер материала поставщика
*& P_LGORT Код склада
*& P_MATKL Группа материалов
*& P_MATNR Код материала
*& P_TXZ01 Текст позиции/материала
*& P_WERKS Код завода
*&
*& 001 Дополнительные критерии выбора
*&**********************************************************************
REPORT y_set_delete_ind_eban MESSAGE-ID yy LINE-SIZE 100.
TABLES eban.
*&**********************************************************************
SELECT-OPTIONS: p_bsart FOR eban-bsart DEFAULT 'NB',
p_banfn FOR eban-banfn,
p_badat FOR eban-badat.
SELECTION-SCREEN BEGIN OF BLOCK block001 WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_ekorg FOR eban-ekorg,
p_ekgrp FOR eban-ekgrp,
p_werks FOR eban-werks,
p_lgort FOR eban-lgort,
p_idnlf FOR eban-idnlf,
p_ernam FOR eban-ernam,
p_matkl FOR eban-matkl,
p_matnr FOR eban-matnr,
p_txz01 FOR eban-txz01.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_ebakz LIKE eban-ebakz DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK block001.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_commit(1) TYPE c DEFAULT space.
*&**********************************************************************
DATA: BEGIN OF it_eban OCCURS 10,
banfn LIKE eban-banfn,
bnfpo LIKE eban-bnfpo,
ebakz LIKE eban-ebakz,
END OF it_eban.
DATA: l_subrc LIKE sy-subrc.
*&**********************************************************************
PERFORM read_data CHANGING l_subrc.
IF l_subrc = 0.
PERFORM set_delete_indicator CHANGING l_subrc.
ELSE.
WRITE: / 'Данные для обработки отсутствуют'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form read_data
*&---------------------------------------------------------------------*
* Выбрать заявки по заданным критериям
*----------------------------------------------------------------------*
* --> ... - Параметры селекционного экрана
* <-- IT_EBAN - Список выбранных заявок
* <-- P_SUBRC - Код возврата 0 - записи есть, 4 - данные не считаны
*----------------------------------------------------------------------*
FORM read_data CHANGING p_subrc.
SELECT banfn
bnfpo
ebakz
INTO CORRESPONDING FIELDS OF TABLE it_eban
FROM eban
WHERE banfn IN p_banfn AND
badat IN p_badat AND
bsart IN p_bsart AND
loekz <> 'X' AND
ekorg IN p_ekorg AND
ekgrp IN p_ekgrp AND
werks IN p_werks AND
lgort IN p_lgort AND
idnlf IN p_idnlf AND
ernam IN p_ernam AND
matkl IN p_matkl AND
matnr IN p_matnr AND
txz01 IN p_txz01.
p_subrc = sy-subrc.
IF p_ebakz = 'X'. DELETE it_eban WHERE ebakz = p_ebakz. ENDIF.
SORT it_eban BY banfn bnfpo.
ENDFORM. " read_data
*&---------------------------------------------------------------------*
*& Form set_delete_indicator
*&---------------------------------------------------------------------*
* Установить инидкатор удаления на выбранные позиции заявок
*----------------------------------------------------------------------*
* --> IT_EBAN - Список выбранных позиций заявок для обработки
* <-- P_SUBRC - Код возврата 0 - записи есть, 4 - данные не считаны
*----------------------------------------------------------------------*
FORM set_delete_indicator CHANGING p_subrc.
DATA: lt_eban LIKE it_eban OCCURS 10 WITH HEADER LINE.
CLEAR: lt_eban[].
LOOP AT it_eban.
ON CHANGE OF it_eban-banfn.
PERFORM set_indicator TABLES lt_eban.
CLEAR: lt_eban[].
ENDON.
lt_eban = it_eban.
APPEND lt_eban.
ENDLOOP.
PERFORM set_indicator TABLES lt_eban.
ENDFORM. " set_delete_indicator
*&---------------------------------------------------------------------*
*& Form set_indicator
*&---------------------------------------------------------------------*
* Обработать заявку
*----------------------------------------------------------------------*
* --> PT_EBAN - Позиции заявки для обработки
*----------------------------------------------------------------------*
FORM set_indicator TABLES pt_eban STRUCTURE it_eban.
DATA: lt_return LIKE bapireturn OCCURS 10 WITH HEADER LINE,
lt_items_to_delete LIKE bapieband OCCURS 10 WITH HEADER LINE.
READ TABLE pt_eban INDEX 1.
IF sy-subrc <> 0. EXIT. ENDIF.
CLEAR: lt_items_to_delete[].
WRITE: / 'Заявка:', pt_eban-banfn.
LOOP AT pt_eban.
lt_items_to_delete-preq_item = pt_eban-bnfpo.
lt_items_to_delete-delete_ind = 'X'.
APPEND lt_items_to_delete.
WRITE: /10 'Позиции:', pt_eban-bnfpo.
ENDLOOP.
IF p_commit = 'X'.
CLEAR: lt_return[].
CALL FUNCTION 'BAPI_REQUISITION_DELETE'
EXPORTING
number = pt_eban-banfn
TABLES
requisition_items_to_delete = lt_items_to_delete
return = lt_return.
LOOP AT lt_return WHERE type = 'E' OR type = 'A'.
WRITE: / 'Код:', lt_return-code, '-', lt_return-message.
ENDLOOP.
IF sy-subrc = 0.
ROLLBACK WORK.
ELSE.
COMMIT WORK.
WRITE: / 'Код:', lt_return-message COLOR 5.
ENDIF.
ELSE.
WRITE: / 'Код: Тестовый прогон'.
ENDIF.
WRITE: / sy-uline(90).
ENDFORM. " set_indicator