Коллеги, помогите с этим ФМ
Заполняю bapimepoitem и bapimepoitemx:
Code:
DATA
:
ls_poheader TYPE bapimepoheader
, ls_poheaderx TYPE bapimepoheaderx
, lt_return TYPE TABLE OF bapiret2
, ls_return TYPE bapiret2
, lt_poitem TYPE TABLE OF bapimepoitem
, lt_poitemx TYPE TABLE OF bapimepoitemx
DATA
:
ls_poitem TYPE bapimepoitem
, ls_poitemx TYPE bapimepoitemx
.
CLEAR: t_poitem, t_poitemx.
LOOP AT gt_moitems INTO gs_moitem WHERE exist <> 'X'.
CLEAR: ls_poitem, ls_poitemx.
ls_poitem-po_item = sy-tabix * 10. "GS_MOITEM-EBELP. "НОМЕР ПОЗИЦИИ ДОКУМЕНТА ЗАКУПКИ
ls_poitem-item_cat = '7'.
ls_poitem-acctasscat = gs_moitem-knttp.
ls_poitem-short_text = gs_moitem-txz01. "КРАТКИЙ ТЕКСТ
ls_poitem-material = gs_moitem-matnr. "НОМЕР МАТЕРИАЛА
ls_poitem-batch = gs_moitem-charg. "Партия
ls_poitem-val_type = gs_moitem-charg. "Вид оценки
ls_poitem-plant = gs_moitem-werks. "ЗАВОД
ls_poitem-stge_loc = zmm_s_awssk_mo_header-lgort. "'0002'. "GS_MOITEM-LGORT. "СКЛАД ПОЛУЧАТЕЛЬ
ls_poitem-suppl_stloc = gs_moitem-lgort. "ОТПУСКАЮЩИЙ СКЛАД
ls_poitem-matl_group = gs_moitem-matkl. "ГРУППА МАТЕРИАЛОВ
ls_poitem-quantity = gs_moitem-menge. "ОБЪЕМ ЗАКАЗА НА ПОСТАВКУ
ls_poitem-po_unit = gs_moitem-meins. "ЕИ ЗАКАЗА НА ПОСТАВКУ
SELECT SINGLE vrkme lfimg FROM lips INTO (ls_poitem-po_unit, ls_poitem-quantity)
WHERE vbeln = gs_moitem-likp_vbeln AND posnr = gs_moitem-lips_posnr.
IF gs_moitem-lfimg > 1.
ls_poitem-quantity = gs_moitem-lfimg. "ОБЪЕМ ЗАКАЗА НА ПОСТАВКУ
ELSE.
ls_poitem-quantity = gs_moitem-lfimg + 1.
ENDIF.
ls_poitem-po_unit = gs_moitem-vrkme. "ЕИ ЗАКАЗА НА ПОСТАВКУ
SELECT SINGLE banfn bnfpo INTO (ls_poitem-preq_no, ls_poitem-preq_item)
FROM eket JOIN lips ON eket~ebeln = lips~vgbel AND eket~ebelp = lips~vgpos
WHERE lips~vbeln = gs_moitem-likp_vbeln
AND lips~posnr = gs_moitem-lips_posnr.
APPEND ls_poitem TO t_poitem.
ls_poitemx-po_item = ls_poitem-po_item.
ls_poitemx-item_cat = 'X'.
ls_poitemx-acctasscat = 'X'.
ls_poitemx-short_text = 'X'.
ls_poitemx-material = 'X'.
ls_poitemx-batch = 'X'.
ls_poitemx-val_type = 'X'.
ls_poitemx-plant = 'X'.
ls_poitemx-stge_loc = 'X'.
ls_poitemx-suppl_stloc = 'X'.
ls_poitemx-matl_group = 'X'.
ls_poitemx-quantity = 'X'.
ls_poitemx-po_unit = 'X'.
ls_poitemx-preq_no = 'X'.
ls_poitemx-preq_item = 'X'.
APPEND ls_poitemx TO t_poitemx.
ENDLOOP.
Так вот в ls_poitem-quantity попадает число меньше 1 (0.33 например) и как результат выдаются ошибки:
Заказ на поставку еще содержит позиции с ошибками
Эта дата поставки может быть соблюдена?
Введите объем заказа на поставку
Ни одной инстанции типа объекта PurchaseOrder не создано. Внешняя ссы
Единица измерения заказа на поставку Т разрешает меньше десятич. разр
Объем заказа не соответствует правилам округления.
Укажите количество.
Продебажил, и выяснил, что в ФМ PERFORM get_current_data quantity сбрасывается до 0. Вследствие чего возникает ошибка.
Как с этим бороться??