Возникла необходимость указывать вид фактуры в ОУР при создании движения ФМ-ом BAPI_GOODSMVT_CREATE.
В интернете описание решения нашел только на англоязычных сайтах и без примера. Может кому-то понадобится.
Для того чтобы вручную заполнить все поля ОУР нужно его создать ФМ-ом COPA_PROFITABILITY_SEGMENT, а потом передать его ID (E_COBL-PAOBJNR) в ФМ BAPI_GOODSMVT_CREATE в поле GOODSMVT_ITEM-PROFIT_SEGM_NO.
И обязательно нужно заполнять год в I_COBL, иначе ФМ выдаст непонятную ошибку "Учет результатов не активиен!", хотя учет активен.
Пример кода:
Code:
* данные для BAPI
data GOODSMVT_HEADER LIKE BAPI2017_GM_HEAD_01.
data GOODSMVT_CODE LIKE BAPI2017_GM_CODE.
data TESTRUN LIKE BAPI2017_GM_GEN-TESTRUN.
data GOODSMVT_ITEM type table of BAPI2017_GM_ITEM_CREATE.
data w_GOODSMVT_ITEM type BAPI2017_GM_ITEM_CREATE.
data GOODSMVT_HEADRET LIKE BAPI2017_GM_HEAD_RET.
data MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC.
data MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR.
data RETURN type table of BAPIRET2.
* создаем объект ОУР и передаем его в goodsmvt_item
DATA l_vbrk like VBRK.
SELECT SINGLE *
INTO l_vbrk
FROM vbrk
WHERE VBELN = goodsmvt_header-REF_DOC_NO.
DATA l_vbrp like VBRP.
SELECT SINGLE *
INTO l_vbrp
FROM vbrp
WHERE VBELN = goodsmvt_header-REF_DOC_NO.
DATA: l_cobl_i like cobl,
l_cobl_e like cobl.
l_cobl_i-KUNNR = l_vbrk-kunrg. "клнт
l_cobl_i-matnr = w_goodsmvt_item-material. "материал
l_cobl_i-fkart = l_vbrk-fkart. "вид фактуры
l_cobl_i-kdauf = w_goodsmvt_item-SALES_ORD. "заказ клиента
l_cobl_i-kdpos = w_goodsmvt_item-S_ORD_ITEM. "позЗаказКлиента
l_cobl_i-bukrs = l_vbrk-bukrs. "БЕ
l_cobl_i-gjahr = fkdat(4). "год
l_cobl_i-werks = w_goodsmvt_item-PLANT. "Завод
l_cobl_i-gsber = l_vbrp-gsber. "Бизнес-сфера
l_cobl_i-vkorg = l_vbrk-vkorg. "сбытовая организация
l_cobl_i-vtweg = l_vbrk-vtweg. "канал сбыта
l_cobl_i-spart = l_vbrk-spart. "сектор
CALL FUNCTION 'COPA_PROFITABILITY_SEGMENT'
EXPORTING
DIALOG = ' ' "без диалога
I_COBL = l_cobl_i
IMPORTING
E_COBL = l_cobl_e
EXCEPTIONS
ABNORMAL_LEAVE = 1
BTRANS_NOT_RELEVANT = 2
ERROR_COPA = 3
OTHERS = 4
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID
TYPE SY-MSGTY
NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
w_goodsmvt_item-PROFIT_SEGM_NO = l_cobl_e-paobjnr.
INSERT w_goodsmvt_item INTO TABLE goodsmvt_item.
* движение
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = goodsmvt_header
goodsmvt_code = code_mb1a
* TESTRUN = ' '
IMPORTING
goodsmvt_headret = goodsmvt_headret
materialdocument = materialdocument
matdocumentyear = matdocumentyear
TABLES
goodsmvt_item = goodsmvt_item
* GOODSMVT_SERIALNUMBER =
return = return
.