Текущее время: Чт, сен 18 2025, 09:50

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Пн, апр 04 2011, 21:19 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1597
Откуда: Москва, Минск
Пол: Мужской
Народ поделитесь плиз примером заполнения для ФМ-ов WS_DELIVERY_UPDATE или SD_DELIVERY_UPDATE_PACKING табличек VERKO и VERPO для создания ЕО и упаковки исходящих поставок.

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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Чт, апр 07 2011, 11:07 
Начинающий
Начинающий

Зарегистрирован:
Чт, апр 07 2011, 10:55
Сообщения: 3
День добрый!

Решали обе эти задачи. Что конкретно интересует: создание ЕО самой по себе, упаковка позиций в исходящей поставке или добавление уже созданной ЕО в исходящую поставку?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Чт, апр 07 2011, 17:40 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 31 2008, 09:21
Сообщения: 88
XoXoL написал(а):

Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках Ответить с цитатой
День добрый!

Решали обе эти задачи. Что конкретно интересует: создание ЕО самой по себе, упаковка позиций в исходящей поставке или добавление уже созданной ЕО в исходящую поставку?


Добрый день, очень интерессна и актуальна данная тема.
Как автоматически присвоить ЕО в исходящей поставки
вопрос уже задавал в теме viewtopic.php?f=4&t=67540 что-то VL10HU не подходит.
Делаю через БАПИ создание поставки со сылкой на заказ клиента партии выбираю автоматически теперь необходимо автоматически подставить уже созданные ЕО. Пробовал через Бади по автоматической упаковке и USER-EXIT они все работают с инструкц. по упаковке и создают новую ЕО а мне нужно присвоить существующую.
Подскажите как вы подобное решали интерессная сама мысль(направление) а то совсем запутался как сделать, может меня натолкнёте на решение.

P.S. Batch-input (пакетный ввод) не рассматриваю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Пт, апр 08 2011, 11:22 
Начинающий
Начинающий

Зарегистрирован:
Чт, апр 07 2011, 10:55
Сообщения: 3
Перед нами стояла следующая задача:
1. Создать ЕО;
2. Упаковать в нее материалы и другие ЕО;
3. ЕО и неупакованные материалы поместить в заказ на перемещение (MO) аналогично работе тр. VL10B и VL10HU;
4. На основе MO создать исходящую поставку (OD) таким образом, чтобы в нее попали материалы и ЕО из MO.

1. Создание ЕО реализовано с помощью BAPI.
Code:
  LS_HUHEADER-PACK_MAT = U_VHILM.
  LS_HUHEADER-EXT_ID_HU_2 = U_EXIDV2.

  call function 'BAPI_HU_CREATE'
    exporting
      HEADERPROPOSAL = LS_HUHEADER
    importing
      HUHEADER       = LS_HUHEADER_E
      HUKEY          = C_EXIDV
    tables
      RETURN         = LT_RETURN.

  call function 'BAPI_TRANSACTION_COMMIT'
    exporting
      WAIT   = 'X'
    importing
      RETURN = LS_RETURN.

2.1 Упаковка материалов в ЕО. Не забыдь вызвать 'BAPI_TRANSACTION_COMMIT'.
Code:
form HU_PACK_MATERIAL using U_EXIDV   type EXIDV
                            US_HUITEM type TYPE_HUITEM.
  data
    :
      LS_HUITEM type BAPIHUITMPROPOSAL
    , LT_RETURN type table of BAPIRET2
    , LS_RETURN type BAPIRET2
    .

  LS_HUITEM-MATERIAL      = US_HUITEM-MATNR. " Номер материала
  LS_HUITEM-BATCH         = US_HUITEM-CHARG. " Номер партии
  LS_HUITEM-PACK_QTY      = US_HUITEM-MENGE. " Упакованное базисное количество в позиции ЕО
  LS_HUITEM-BASE_UNIT_QTY = US_HUITEM-MEINS.
  LS_HUITEM-PLANT         = US_HUITEM-WERKS. " Завод
  LS_HUITEM-STGE_LOC      = US_HUITEM-LGORT. " Склад
  LS_HUITEM-SPEC_STOCK    = US_HUITEM-SOBKZ. " Код особого запаса
  LS_HUITEM-SP_STCK_NO    = US_HUITEM-SONUM. " Номер особого запаса
  LS_HUITEM-HU_ITEM_TYPE  = '1'.

  clear: LT_RETURN, LS_RETURN.

  call function 'BAPI_HU_PACK'
    exporting
      HUKEY               = U_EXIDV
      ITEMPROPOSAL        = LS_HUITEM
    tables
      RETURN              = LT_RETURN
            .

endform.                    " HU_PACK_MATERIAL

2.2. Упаковка ЕО в ЕО. Не забыдь вызвать 'BAPI_TRANSACTION_COMMIT'.
Code:
form HU_PACK_HU using U_EXIDV type EXIDV
                      US_HUITEM type TYPE_HUITEM.
  data
    :
      LS_HUITEM type BAPIHUITMPROPOSAL
    , LT_RETURN type table of BAPIRET2
    , LS_RETURN type BAPIRET2
    .

  LS_HUITEM-LOWER_LEVEL_EXID = US_HUITEM-EXIDV. " Внешний ид. единицы обработки
  LS_HUITEM-HU_ITEM_TYPE = '3'.

  clear: LT_RETURN, LS_RETURN.

  call function 'BAPI_HU_PACK'
    exporting
      HUKEY               = U_EXIDV
      ITEMPROPOSAL        = LS_HUITEM
    tables
      RETURN              = LT_RETURN.

endform.                    " HU_PACK_HU

3. Создание заказа к делу не относится, поэтому здесь описывать не буду. Если будет необходимо, спрашивайте, отвечу.
4.1. Создание OD. В нашем случае выбор позиций из MO, поэтому SELECT по EKPO.
Code:
  clear : LT_STITEM, LT_HU, LT_HUS.
  select * into LS_EKPO from EKPO where EBELN = PA_EBELN and LOEKZ = ''.
    " Данные позиций для создания поставки
    LS_STITEM-REF_DOC    = LS_EKPO-EBELN.
    LS_STITEM-REF_ITEM   = LS_EKPO-EBELP.
    LS_STITEM-DLV_QTY    = LS_EKPO-MENGE.
    LS_STITEM-SALES_UNIT = LS_EKPO-MEINS.
    append LS_STITEM to LT_STITEM.
    " Данные ЕО для соединения с позициями поставки
    clear LS_HU.
    select HURES~VENUM HURES~VEPOS VEKP~EXIDV VEKP~CHARG
      into (LS_HU-VENUM, LS_HU-VEPOS, LS_HU-TOP_HU_EXTERNAL, LS_HU-CHARG)
      from HURES join VEKP on HURES~VENUM = VEKP~VENUM
      where HURES~OBJECT = 'PO'
        and HURES~OBJKEY = LS_EKPO-EBELN
        and HURES~OBJITM = LS_EKPO-EBELP.

      LS_HU-TOP_HU_INTERNAL = LS_HU-VENUM.
      LS_HU-RFBEL = LS_EKPO-EBELN.
      LS_HU-RFPOS = LS_EKPO-EBELP.
      append LS_HU to LT_HU.

      LS_HUS-EXIDV = LS_HU-TOP_HU_EXTERNAL.
      append LS_HUS to LT_HUS.
    endselect.
  endselect.

  clear: LS_RETURN, LT_RETURN.

  set update task local.
  " создаем исходящую поставку
  call function 'BAPI_OUTB_DELIVERY_CREATE_STO'
    importing
      DELIVERY                = LV_DELIVERY
    tables
      STOCK_TRANS_ITEMS       = LT_STITEM
      RETURN                  = LT_RETURN.
  .
  if LV_DELIVERY is initial.
    exit.
  endif.

  call function 'BAPI_TRANSACTION_COMMIT'
    exporting
      WAIT          = 'X'.

4.2. Включение ЕО в OD.
Code:
  data: LS_VBKOK type VBKOK,
        LT_PROT  type table of PROTT.

  data: LV_ERRCODE type SY-SUBRC,
        LT_HUS_O    type VSEP_T_EXIDV.
  data: LS_LIKP type LIKP.

  constants: LC_HUOBJ01 type HU_OBJECT value '01'. " исходящая поставка (см. диапазон значений домена HU_OBJECT)
  constants: LC_KOMUE1  type KOMUE value '01'. " Копирование комплектуемого количества из интерфейса

  " считываем в память таблицы, относящиеся к поставке (ls_object)
  clear LS_OBJECT.
  LS_OBJECT-OBJECT = LC_HUOBJ01. " исходящая поставка (см. диапазон значений домена HU_OBJECT)
  LS_OBJECT-OBJKEY = LV_DELIVERY.
  call function 'V51P_GET_TABLES'
    exporting
      IS_OBJECT   = LS_OBJECT
    exceptions
      HUS_LOCKED  = 1
      NO_HU_FOUND = 2
      FATAL_ERROR = 3
      others      = 4.
  if SY-SUBRC <> 0.
  endif.

  " добавляем ЕО к поставке
  call function 'V51P_ADD_HU_TO_OBJEKT'
    exporting
      IT_HUS        = LT_HUS
    importing
      EF_RCODE      = LV_ERRCODE
      ET_HUS        = LT_HUS_O
      ET_MESSAGES   = LT_MESSAGES
    exceptions
      HUS_LOCKED    = 1
      NOT_POSSIBLE  = 2
      NOTHING_FOUND = 3
      FATAL_ERROR   = 4
      others        = 5.
  if SY-SUBRC <> 0.
  endif.

  call function 'HU_PACKING_UPDATE'
    exporting
      IF_SYNCHRON = 'X'.

  " обновляем данные поставки (с учетом упакованного материала)
  select single *
    into LS_LIKP
    from LIKP
    where VBELN = LV_DELIVERY.
  clear LS_VBKOK.
  LS_VBKOK-VBELN = LS_VBKOK-VBELN_VL = LV_DELIVERY.
  LS_VBKOK-VBTYP_VL = LS_LIKP-VBTYP.
  LS_VBKOK-KOMUE = LC_KOMUE1.
  LS_VBKOK-PACKING_REFRESH = 'X'.
  LS_VBKOK-PACKING_FINAL = 'X'.
  call function 'WS_DELIVERY_UPDATE'
    exporting
      VBKOK_WA       = LS_VBKOK
      SYNCHRON       = 'X'
      COMMIT         = 'X'
      DELIVERY       = LV_DELIVERY
      UPDATE_PICKING = 'X'
      NICHT_SPERREN  = ' '
    tables
      PROT           = LT_PROT.

  if SY-SUBRC <> 0.
    rollback work.
  else.
    commit work and wait.
  endif.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Пт, апр 08 2011, 11:41 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 31 2008, 09:21
Сообщения: 88
XoXoL
Спасибо за подбробный ответ, буду пробовать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Вс, апр 10 2011, 09:04 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 31 2008, 09:21
Сообщения: 88
Цитата:
select HURES~VENUM HURES~VEPOS VEKP~EXIDV VEKP~CHARG
into (LS_HU-VENUM, LS_HU-VEPOS, LS_HU-TOP_HU_EXTERNAL, LS_HU-CHARG)
from HURES join VEKP on HURES~VENUM = VEKP~VENUM
where HURES~OBJECT = 'PO'
and HURES~OBJKEY = LS_EKPO-EBELN
and HURES~OBJITM = LS_EKPO-EBELP.



Ещё пока разбираюсь, как работают функциональные модули.
Есть пару маленьких вопросов:
1. VEKP~CHARG как вы используете данное поле, если делать в диалоге упаковку, через HU02 данное поле всегда закрыто, можно присваивать только на уровне позиции VEPO-CHARG. Если я напрямую в таблице заполняю данное поле тогда при выходе из упаковке автом. данная партия подтягивается в позицию упаковки, а если в поставке две и более ЕО с одинаковым материалом упаковки VHILM, тогда создаётся только одна позиция поставки с кол-во два и более в зависимости сколько ЕО в упаковке, и партия подставляется из первой попавшейся ЕО. Посмотрел код не нашёл где данное поле заполняется, Искал ноты по этому полю ничего нет, на форумах тоже ничего не нашёл. Дома стоит IDES в 5.0 от 2008 последние обновление, так поля VEKP-CHARG вообще нет.
2. HURES как используется данная таблица? пока смотрю только в домашним IDESe она пустая.
3.
Цитата:
where HURES~OBJECT = 'PO'
вообще такого значения в данном элементе данных нет, грешу на старую версию SAP. Посмотрю на работе.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Ср, апр 13 2011, 11:00 
Начинающий
Начинающий

Зарегистрирован:
Чт, апр 07 2011, 10:55
Сообщения: 3
День добрый!

Вот по первому вопросу я так и не смог разобраться, что получается не так при реализации того когда, который я привел.

В таблице HURES хранятся данные ЕО, которые входят в Заказ на перемещение. После создания исходящей поставки к этому заказу, данные из HURES удаляются.

Возможно, что значение HURES-OBJECT = 'PO' отсутствует из-за разницы версий, по крайней мере в нашей версии системы в домене HU_OBJECT в дипазоне значение 'PO' есть. Версия компонетов SAP ECC 6.0.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Чт, май 05 2011, 10:01 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1597
Откуда: Москва, Минск
Пол: Мужской
Спасибо за советы и помощь.
Для тех кто будет читать на будущее - данный алгоритм работает в случае если последовательно создаётся поставка, а потом упаковывается.
Если поставка существует за ранее надо дополнительно начитывать данные в 51 структуры - подробно не об этом.
Проблема создания ЕО, упаковки ЕО в ЕО, упаковки поставки в данные ЕО уже описывалась на данном форуме.
Всё делается в один присест ФМом SD_DELIVERY_UPDATE_PACKING либо WS_DELIVERY_UPDATE.
Проблема была в поиске необходимых параметров.
По сути:
VERKO - EXIDV - $1,$2,... - будут созданы ЕО согласно внутренней нумерации.
VERPO - EXIDV_OB - $1,$2,... для позиций соответствующих ЕО. TMENG - количество на создание/изменение в позиции, создание если новая ЕО, изменение если для уже существующей( -2 уменьшит количество в позиции на 2).
В остальном думаю всё просто.

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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Ср, май 11 2011, 05:55 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, авг 05 2008, 19:46
Сообщения: 96
Откуда: С Урала
Хоть тема и помечена как решенная - встряну со своим вопросом - по упаковке исходящей поставки, благо люди решали подобную проблему. Для упаковки использую BAPI_OUTB_DELIVERY_CONFIRM_DEC, сводящуюся в конечном счете к вызову WS_DELIVERY_UPDATE2. Проблема в том что при отличии продажной ЕИ от складской (MEINS от VRKME) при упаковке существующей поставки происходит две неприятные вещи. Первая - изменяется отгруженное количество в LIPS- происходит пересчет количества по к-там UMVKZ и UMVKN. Ну и вторая это такой же пересчет вернее округление упакованого количества в VEPO-VEMNG_FLO.Везде отличия в третьем знаке, но все равно не порядок.
Первую проблему я решил в - при сохранении поставки в MV50AFZ1 USEREXIT_SAVE_DOCUMENT_PREPARE переписываю по ранее сохраненным данным, а ко второй не знаю как подступиться - то же переписывать или есть более корректное решение этой проблемы? Подбор к-тов не предлагать - это невозможно :D
Забыл добавить система 4.7


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Чт, май 19 2011, 16:00 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 31 2008, 09:21
Сообщения: 88
У меня 6.0 при программной или ручной упаковке таких проблем не обнаружил.
Т.е. Если поставка на 10 кг ЕО на 10000 г тогда ни каких проблем с пересчётами не возникает и всё упаковывается как надо.
buruchaga написал(а):
XoXoL
Огромное спасибо у меня всё получилось очень вожно использовать ФМ
call function 'V51P_GET_TABLES'
call function 'V51P_ADD_HU_TO_OBJEKT'
call function 'HU_PACKING_UPDATE'
call function 'WS_DELIVERY_UPDATE'

Вот SAP могли бы БАПИ доработать чтобы работал с ЕО при создании.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание+упаковка ЕО в исх.поставках
СообщениеДобавлено: Вт, май 24 2011, 18:58 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, авг 05 2008, 19:46
Сообщения: 96
Откуда: С Урала
buruchaga написал(а):
У меня 6.0 при программной или ручной упаковке таких проблем не обнаружил.
Т.е. Если поставка на 10 кг ЕО на 10000 г тогда ни каких проблем с пересчётами не возникает и всё упаковывается как надо.
buruchaga написал(а):
XoXoL

Ну я имел в виду более экзотические сочетания метры или футы продажные тонны учетные


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

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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