понедельник, 17 сентября 2018 г.

BAPI_EXCHANGERATE_CREATE/BAPI_EXCHRATE_CREATEMULTIPLE. Ошибка E! 005

Однако, со старыми ФМниками нужно осторожнее работать.

Курсы валют хотели загружать, через PI\PO, так как централизованно ведутся в MDM, а ERP на общем типе валют ведёт свои z-пересчёты.

Стандартное решение - BAPI_EXCHANGERATE_CREATE/BAPI_EXCHRATE_CREATEMULTIPLE. Особенность в том, что руками эти ФМ не протестировать, так как нужен commit после вызова.


Пример кода, чтобы не забыть:

DATA: exch_rate LIKE bapi1093_0   OCCURS 1 WITH HEADER LINE,
      rettab    LIKE bapiret2   OCCURS 1 WITH HEADER LINE.

exch_rate-rate_type   = 'M'.
exch_rate-from_curr   = 'USD'.
exch_rate-to_currncy  = 'RUB'.
exch_rate-valid_from  = '20180918'.
exch_rate-exch_rate   = '66'.
exch_rate-from_factor = 1.
exch_rate-to_factor   = 1.

CALL FUNCTION 'BAPI_EXCHANGERATE_CREATE'
  EXPORTING
    exch_rate = exch_rate
*   UPD_ALLOW = ' '
*   CHG_FIXED = ' '
*   DEV_ALLOW = '000'
  IMPORTING
    return    = rettab
*   RATE_TYPE =
*   FROM_CURR =
*   TO_CURRNCY       =
  .

READ TABLE rettab INTO DATA(ls_return) WITH KEY type = 'E'.
IF sy-subrc = 0.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.

cl_demo_output=>display( rettab ).

Комментариев нет:

Отправить комментарий