Текущее время: Сб, сен 21 2019, 13:27

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки?
СообщениеДобавлено: Пн, июл 08 2019, 13:19 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 14:35
Сообщения: 4510
Откуда: Москва
Коллеги, всем доброго дня.

Бизнес-процесс такой:
1. Есть заказы на отгрузки (sd-заказы) и к ним исходящие поставки
2. Поставки упаковываем в коробки (создаем соответствующую ЕО в функциональности упаковки исходящей поставки)
3. Коробки от двух разных поставок упаковываем на одну паллету (в одну ЕО верхнего уровня) и отгружаем.
4. Несколько разных паллет отгружаем в машине (хотим отразить документом "транспортировка")

Вопрос в том как сделать шаг 3 отдельно от шага 4
Сейчас я вижу только способ выполнить их вместе - создать транспортировку, включить в нее две поставки и в функционале упаковки упаковать в Ео верхнего уровня.

Хотелось бы уметь упаковку на паллеты делать ДО создания транспортировок в отдельной функциональности, а потом в транспортировку добавлять уже упакованные на ЕО-паллеты поставки. Возможно ли это и если да,то как сделать?

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки?
СообщениеДобавлено: Пн, июл 08 2019, 18:59 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 14:35
Сообщения: 4510
Откуда: Москва
Как выяснилось, требуемую функциональность 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.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки?
СообщениеДобавлено: Пн, сен 09 2019, 12:40 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 14:35
Сообщения: 4510
Откуда: Москва
Забавно, нашел на просторах интернета документ "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.


_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки?
СообщениеДобавлено: Пн, сен 09 2019, 13:05 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 10:59
Сообщения: 1224
Откуда: Москва, Минск
Пол: Мужской
Молодец!
Ну все, ДМЦ будет счастлив :)

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки?
СообщениеДобавлено: Пн, сен 09 2019, 16:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 19:21
Сообщения: 1350
А просто завернуть один HU в другой?

_________________
я твой сап эфай внедрял
BAdI-позитив


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки?
СообщениеДобавлено: Вт, сен 10 2019, 13:58 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 14:35
Сообщения: 4510
Откуда: Москва
Kengur написал(а):
А просто завернуть один HU в другой?

Можно просто создать ЕО верхнего уровня типа 12 (свободная ЕО) и положить туда ЕО нижнего уровня из двух поставок через бапи BAPI_HU_CREATE.
И в отличие от VL02N стандарт в этот момент даже не ругнется.
И даже ОМ и сторно к поставке провести будет можно.

А вот повторный ОМ к поставке - уже извините, будет дамп в стандарте.
И при попытке провалиться в просмотр этой ЕО из интерфейса упаковки транспортировки тоже будет дамп в стандарте.
Это только то что нашлось при беглом тестировании..

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки?
СообщениеДобавлено: Ср, сен 11 2019, 10:29 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 19:21
Сообщения: 1350
А как выглядит дамп?

_________________
я твой сап эфай внедрял
BAdI-позитив


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли упаковать в одну ЕО две другие ЕО из разных поставок до создания транспортировки?
СообщениеДобавлено: Ср, сен 11 2019, 11:40 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 14:35
Сообщения: 4510
Откуда: Москва
"Field symbol has not been assigned yet."
ФМ HU_CONSISTENZ_CHECK, строка 205
Code:
IF <vekp>-kzunt IS INITIAL.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB