Текущее время: Сб, май 10 2025, 08:50

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




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

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1592
Откуда: Москва, Минск
Пол: Мужской
Народ поделитесь плиз примером заполнения для ФМ-ов 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
Сообщения: 1592
Откуда: Москва, Минск
Пол: Мужской
Спасибо за советы и помощь.
Для тех кто будет читать на будущее - данный алгоритм работает в случае если последовательно создаётся поставка, а потом упаковывается.
Если поставка существует за ранее надо дополнительно начитывать данные в 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 часа


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

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


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

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