Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => SE37 - Построитель функций => Тема начата: Uukrul от Сентябрь 06, 2007, 04:02:28 pm

Название: Заказы ММ, изменение документа BAPI_PO_CHANGE
Отправлено: Uukrul от Сентябрь 06, 2007, 04:02:28 pm
Ну в общем если не очень подробно то для изменения заказов есть ФМ BAPI_PO_CHANGE

Примеры объявления для этого ФМ параметров могут быть в таком виде:
Код: You are not allowed to view links. Register or Login
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.

Собственно пример вызова ФМ типа так.
Код: You are not allowed to view links. Register or Login
  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, например в заголовке заказа изменили дату начала и конца действия договора.
Код: You are not allowed to view links. Register or Login
po_header-vper_start = sy-datum.
po_header-vper_end   = sy-datum+100.

То обязательно в зеркальной структуре po_headerx, для соответствующих полей поставьте = X.
Код: You are not allowed to view links. Register or Login
po_headerx-vper_start = 'X'.
po_headerx-vper_end   = 'X'.

Ну и COMMIT WORK после вызова, ну если хотите чтобы оно таки действительно сохранилось. Кстати, результат работы смотрим в структуре po_bapiret2.
Название: Re: Заказы ММ, изменение документа BAPI_PO_CHANGE
Отправлено: themax от Декабрь 22, 2015, 02:05:51 pm
Доброго времени суток Uukrul. Как раз мне этот БАПИ будет полезен для того чтобы изменить все заказы на поставку и поставить в них галочку Инд. последнего счета-фактуры, конечно же у все тех у кого были выписаны счета фактур. Пытаюсь сделать для проверки один заказ
Код: You are not allowed to view links. Register or Login
tables: bapimepoheader,
        bapimepoitem,
        sscrfields.
data:
ret2 like bapiret2 occurs 50 with header line,
  it_bapi like bapimepoitem occurs 0 with header line,
  it_bapi2 like BAPIMEPOITEMX occurs 0 with header line.

bapimepoheader-po_number = '0000600121'.
it_bapi-po_item     = '0010'.
it_bapi-final_inv   = 'X'.
it_bapi2-PO_ITEM    = 'X'.
it_bapi2-final_inv   = 'X'.


call function 'BAPI_PO_CHANGE'
  exporting
    purchaseorder                = bapimepoheader-po_number
*   POHEADER                     =
*   POHEADERX                    =

* IMPORTING
*   EXPHEADER                    =
*   EXPPOEXPIMPHEADER            =
 TABLES
   RETURN                       = ret2
   POITEM                       = it_bapi
   POITEMX                      = it_bapi2.

IF ret2-type = space.
    COMMIT WORK AND WAIT.
    ENDIF.

Но изменения в заказе не происходят. Смотрю в отладчике табличку ret2 пишет что Данные не были изменены, тип сообщения S 06 022 Данные не были изменены, т.е. эта даже не ошибка, а  просто информационное сообщение о том что ни каких действий над заказом не делались. Что я делаю не так не пойму?
Название: Re: Заказы ММ, изменение документа BAPI_PO_CHANGE
Отправлено: themax от Декабрь 23, 2015, 06:25:17 am
Предыдущий вопрос вроде бы снимается, поскольку вроде бы удалось запустить и изменить заказ на поставку. Спасибо за полезный ФМ