Ну в общем если не очень подробно то для изменения заказов есть ФМ BAPI_PO_CHANGE
Примеры объявления для этого ФМ параметров могут быть в таком виде:
DATA: bapi_number LIKE bapimepoheader-po_number VALUE space.
DATA: po_header LIKE bapimepoheader,
po_headerx LIKE bapimepoheaderx,
po_bapiret2 LIKE bapiret2 OCCURS 5 WITH HEADER LINE,
po_items LIKE bapimepoitem OCCURS 5 WITH HEADER LINE,
po_itemsx LIKE bapimepoitemx OCCURS 5 WITH HEADER LINE,
po_schedule LIKE bapimeposchedule OCCURS 5 WITH HEADER LINE,
po_schedulex LIKE bapimeposchedulx OCCURS 5 WITH HEADER LINE,
po_account LIKE bapimepoaccount OCCURS 5 WITH HEADER LINE,
po_accountx LIKE bapimepoaccountx OCCURS 5 WITH HEADER LINE,
po_addr LIKE bapimepoaddrdelivery OCCURS 5 WITH HEADER LINE,
po_extensionin LIKE bapiparex OCCURS 5 WITH HEADER LINE,
po_extensionout LIKE bapiparex OCCURS 5 WITH HEADER LINE,
po_textheader LIKE bapimepotextheader OCCURS 0 WITH HEADER LINE.
Собственно пример вызова ФМ типа так.
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = ph_ebeln
poheader = po_header
poheaderx = po_headerx
* POADDRVENDOR =
* TESTRUN =
* MEMORY_UNCOMPLETE =
* MEMORY_COMPLETE =
* NO_MESSAGING =
* NO_MESSAGE_REQ =
* NO_AUTHORITY =
* NO_PRICE_FROM_PO =
* IMPORTING
* EXPHEADER =
TABLES
return = po_bapiret2
poitem = po_items
poitemx = po_itemsx
* POADDRDELIVERY =
poschedule = po_schedule
poschedulex = po_schedulex
poaccount = po_account
* POACCOUNTPROFITSEGMENT =
poaccountx = po_accountx
* POCONDHEADER =
* POCONDHEADERX =
* POCOND =
* POCONDX =
* POLIMITS =
* POCONTRACTLIMITS =
* POSERVICES =
* POSRVACCESSVALUES =
* POSERVICESTEXT =
extensionin = po_extensionin.
* extensionout =
* potextheader =
* POTEXTITEM =
* POPARTNER =
Параметры и поля описаны в структурах, на что следует обратить внимание, если вы изменили какое-то поле в структуре po_header, например в заголовке заказа изменили дату начала и конца действия договора.
po_header-vper_start = sy-datum.
po_header-vper_end = sy-datum+100.
То обязательно в зеркальной структуре po_headerx, для соответствующих полей поставьте = X.
po_headerx-vper_start = 'X'.
po_headerx-vper_end = 'X'.
Ну и COMMIT WORK после вызова, ну если хотите чтобы оно таки действительно сохранилось. Кстати, результат работы смотрим в структуре po_bapiret2.