SAPфорум.RU https://www.sapboard.ru/forum/ |
|
Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки? https://www.sapboard.ru/forum/viewtopic.php?f=95&t=97749 |
Страница 1 из 1 |
Автор: | LKU [ Пн, июл 08 2019, 12:19 ] |
Заголовок сообщения: | Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки? |
Коллеги, всем доброго дня. Бизнес-процесс такой: 1. Есть заказы на отгрузки (sd-заказы) и к ним исходящие поставки 2. Поставки упаковываем в коробки (создаем соответствующую ЕО в функциональности упаковки исходящей поставки) 3. Коробки от двух разных поставок упаковываем на одну паллету (в одну ЕО верхнего уровня). 4. Несколько разных паллет отгружаем в машине (хотим отразить документом "транспортировка") Вопрос в том как сделать шаг 3 отдельно от шага 4 Сейчас я вижу только способ выполнить их вместе - создать транспортировку, включить в нее две поставки и в функционале упаковки упаковать в Ео верхнего уровня. Хотелось бы уметь упаковку на паллеты делать ДО создания транспортировок в отдельной функциональности, а потом в транспортировку добавлять уже упакованные на ЕО-паллеты поставки. Возможно ли это и если да,то как сделать? |
Автор: | LKU [ Пн, июл 08 2019, 17:59 ] |
Заголовок сообщения: | Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки? |
Как выяснилось, требуемую функциональность SAP реализовал для интеграции EWM с ERP, под названием cross delivery handling unit. В результате в таблице vekp создается ЕО со значением VPOBJ = 21 (это тот самый cross delivery HU). Без EWM в ERP удалось в первом приближении повторить эту логику с использованием ФМ BAPI_OUTB_DELIVERY_CONFIRM_DEC (заполняем HANDLING_UNIT_HEADER, HANDLING_UNIT_ITEM и HANDLING_UNIT_HEADER_CROSS ) и подмены в дебагере lf_x_hu_active= X в строке 182 ФМ V51S_CREATE_HU_HEADER. |
Автор: | LKU [ Пн, сен 09 2019, 11:40 ] |
Заголовок сообщения: | Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки? |
Забавно, нашел на просторах интернета документ "Using-bapi Outb Delivery Confirm Dec-cross-hu" где аж на 22 страницы автор объясняет, почему поставленную задачу решить ему не удалось: https://ru.scribd.com/doc/19837595/Usin ... c-cross-hu Для истории - итоговое решение выглядит так: 1. Вызов BAPI. Важно поле HANDLE у нашей ЕО верхнего уровня (передается в таблицу HANDLING_UNIT_HEADER_CROSS). При вызове упаковки следующей поставки в ту же ЕО надо указывать тот же handle Генерацию HANDLE сделал так: l_handle = cl_system_uuid=>create_uuid_c22_static( ). 2. Хак ФМ V51S_CREATE_HU_HEADER, чтобы получить результат lf_x_hu_active= X в строке 182 . Например, в самом начале читаем переменную из памяти и если она установлена, заполняем поле IS_HU_MM-LGNUM кодом склада, для которого активирован EWM. Код к пункту 1: Code: FORM pack_dlv USING it_pack type ZIMK_TTMEO_PACKING_2_PALLET_V2
i_pack_matnr type matnr iv_delivery type vbeln_vl CHANGING CT_BALMI type BALMI_TAB. *готовим данные для bapi types: begin of ts_pal, exidv type vekp-exidv, handle type vekp-handle, exidv2 TYPE vekp-exidv2, END OF ts_pal. DATA: * wa_items TYPE zewms_packpost_items, * wa_huheader TYPE zewms_packpost_huheader, * wa_huitem TYPE zewms_packpost_huitem, ls_header_data TYPE bapiobdlvhdrcon, ls_header_control TYPE bapiobdlvhdrctrlcon, ls_tech_control TYPE bapidlvcontrol, ls_header_data_spl TYPE /spe/bapiobdlvhdrconf, ls_header_control_spl TYPE /spe/bapiobdlvhdrctrlcon, "lt_item_data TYPE TABLE OF bapiobdlvitemcon, "wa_item_data TYPE bapiobdlvitemcon, "lt_item_control TYPE TABLE OF bapiobdlvitemctrlcon, "wa_item_control TYPE bapiobdlvitemctrlcon, lt_unit_header TYPE TABLE OF bapidlvhdunhdr, wa_unit_header TYPE bapidlvhdunhdr, lt_unit_item TYPE TABLE OF bapidlvhdunitm, wa_unit_item TYPE bapidlvhdunitm, "lt_marm TYPE TABLE OF marm, "wa_marm TYPE marm, lv_logsys TYPE tbdls-logsys, lt_return TYPE TABLE OF bapiret2, ls_return TYPE bapiret2, ls_pal type ts_pal, lt_pal type HASHED TABLE OF ts_pal WITH UNIQUE KEY exidv, ls_hu_cross type BAPIDLVHDUNHDR, lt_hu_cross type table of BAPIDLVHDUNHDR, l_pack_matnr_meo type matnr, LT_CURR_HEADER type table of BAPIHUHEADER, LT_CURR_ITEM type table of BAPIHUITEM, LT_HUOBJECTS type TABLE OF BAPIHUOBJECT . l_pack_matnr_meo = zcl_cmn_param=>get_param_single_value( im_parnr = 'ZIMK_PACKING_MAT_MEO' im_seqnr = 1 ). *читаем текущую упаковку поставки в ЕО нижнего уровня APPEND INITIAL LINE TO LT_HUOBJECTS ASSIGNING FIELD-SYMBOL(<huobj>). <huobj>-OBJECT = '01'. <huobj>-OBJKEY = iv_delivery. CALL FUNCTION 'BAPI_HU_GETLIST' EXPORTING * NOTEXT = ' ' ONLYKEYS = '' TABLES * HUNUMBERS = HUOBJECTS = LT_HUOBJECTS * HUKEY = HUHEADER = LT_CURR_HEADER HUITEM = LT_CURR_ITEM * HUHISTORY = * NOTFOUNDHUS = * HIGHESTLEVEL = RETURN = LT_RETURN. . loop at LT_CURR_HEADER ASSIGNING FIELD-SYMBOL(<curr_header>). *таблица заголовков Ео нижнего уровня clear wa_unit_header. wa_unit_header-deliv_numb = iv_delivery. wa_unit_header-hdl_unit_exid = <curr_header>-HU_EXID. wa_unit_header-hdl_unit_exid_ty = 'F'. wa_unit_header-ship_mat = <curr_header>-PACK_MAT. APPEND wa_unit_header TO lt_unit_header. endloop. LOOP at LT_CURR_ITEM ASSIGNING FIELD-SYMBOL(<curr_item>). *таблица упаковки позиций поставки в ЕО нижнего уровня clear wa_unit_item. wa_unit_item-hdl_unit_exid_into = <curr_item>-HU_EXID. wa_unit_item-deliv_numb = <curr_item>-OBJECT_DOC. wa_unit_item-deliv_item = <curr_item>-OBJ_ITEM_NUMBER. wa_unit_item-pack_qty = <curr_item>-PACK_QTY. wa_unit_item-sales_unit = <curr_item>-BASE_UNIT_QTY. wa_unit_item-material = <curr_item>-MATERIAL. wa_unit_item-hu_item_type = <curr_item>-HU_ITEM_TYPE. APPEND wa_unit_item TO lt_unit_item. endloop. LOOP AT it_pack ASSIGNING FIELD-SYMBOL(<pack>). *таблица упаковки ЕО нижнего уровня в cross-delivery HU clear wa_unit_item. wa_unit_item-hdl_unit_exid_into = <pack>-EXIDV_PAL. wa_unit_item-hdl_unit_exid = <pack>-EXIDV_MEO. wa_unit_item-deliv_numb = <pack>-vbeln_vl. "wa_unit_item-deliv_item = <ordp>-posnr_vl. " wa_unit_item-pack_qty = <pack_pos>-kwmeng. "wa_unit_item-sales_unit = <pack_pos>-vrkme. "wa_unit_item-material = <pack_pos>-matnr. wa_unit_item-hu_item_type = '3'. APPEND wa_unit_item TO lt_unit_item. *таблица cross-delivery HU clear ls_pal. ls_pal-EXIDV = <pack>-EXIDV_PAL. ls_pal-HANDLE = <pack>-HANDLE. ls_pal-exidv2 = <pack>-NUM12_PAL. INSERT ls_pal into TABLE lt_pal. ENDLOOP. * IF sy-subrc <> 0. * MESSAGE e000(zim_cockpit) WITH 'Пустой список позиций' INTO sy-lisel. * zcl_utils_sbal=>appe_syst_balmi( EXPORTING level = '3' CHANGING balmi = ct_balmi ). * RETURN. * ENDIF. LOOP AT lt_pal ASSIGNING FIELD-SYMBOL(<pal>). clear ls_hu_cross. ls_hu_cross-deliv_numb = iv_delivery. ls_hu_cross-hdl_unit_exid = <pal>-EXIDV. ls_hu_cross-ZZEXIDV2 = <pal>-EXIDV2. ls_hu_cross-HDL_UNIT_GUID = <pal>-HANDLE. ls_hu_cross-hdl_unit_exid_ty = 'F'. ls_hu_cross-ship_mat = i_pack_matnr. APPEND ls_hu_cross TO lt_hu_cross. ENDLOOP. ls_header_data-deliv_numb = iv_delivery. ls_header_control-deliv_numb = iv_delivery. ls_header_control-ship_cond_flg = 'X'. CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET' IMPORTING own_logical_system = lv_logsys EXCEPTIONS own_logical_system_not_defined = 0. ls_tech_control-recv_sys = lv_logsys. ls_header_data_spl-deliv_numb = iv_delivery. ls_header_data_spl-hu_update_request = 'A'. ls_header_control_spl-deliv_numb = iv_delivery. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CONFIRM_DEC' EXPORTING header_data = ls_header_data header_control = ls_header_control delivery = iv_delivery techn_control = ls_tech_control header_data_spl = ls_header_data_spl header_control_spl = ls_header_control_spl TABLES " item_data = lt_item_data " item_control = lt_item_control handling_unit_header = lt_unit_header handling_unit_item = lt_unit_item HANDLING_UNIT_HEADER_CROSS = lt_hu_cross return = lt_return. LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'. EXIT. ENDLOOP. IF sy-subrc <> 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X' IMPORTING return = ls_return. *сообщение об удаче ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. *сообщение об ошибке endif. ENDFORM. |
Автор: | DED_MOROZ [ Пн, сен 09 2019, 12:05 ] |
Заголовок сообщения: | Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки? |
Молодец! Ну все, ДМЦ будет счастлив |
Автор: | Kengur [ Пн, сен 09 2019, 15:26 ] |
Заголовок сообщения: | Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки? |
А просто завернуть один HU в другой? |
Автор: | LKU [ Вт, сен 10 2019, 12:58 ] |
Заголовок сообщения: | Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки? |
Kengur написал(а): А просто завернуть один HU в другой? Можно просто создать ЕО верхнего уровня типа 12 (свободная ЕО) и положить туда ЕО нижнего уровня из двух поставок через бапи BAPI_HU_CREATE. И в отличие от VL02N стандарт в этот момент даже не ругнется. И даже ОМ и сторно к поставке провести будет можно. А вот повторный ОМ к поставке - уже извините, будет дамп в стандарте. И при попытке провалиться в просмотр этой ЕО из интерфейса упаковки транспортировки тоже будет дамп в стандарте. Это только то что нашлось при беглом тестировании.. |
Автор: | Kengur [ Ср, сен 11 2019, 09:29 ] |
Заголовок сообщения: | Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки? |
А как выглядит дамп? |
Автор: | LKU [ Ср, сен 11 2019, 10:40 ] |
Заголовок сообщения: | Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки? |
"Field symbol has not been assigned yet." ФМ HU_CONSISTENZ_CHECK, строка 205 Code: IF <vekp>-kzunt IS INITIAL.
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |