Текущее время: Сб, май 26 2018, 02:10

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Добавить позицию к поставке
СообщениеДобавлено: Ср, мар 01 2017, 07:35 
Специалист
Специалист

Зарегистрирован:
Пн, дек 29 2008, 08:19
Сообщения: 114
Откуда: г. Москва
Пол: Мужской
Всем привет, подскажите каким BAPI необходимо воспользоваться или сам сценарий, добавления позиции к существующей поставке..?
Заранее благодарю..!
P/S
BAPI_DELIVERYPROCESSING_EXEC
BAPI_OUTB_DELIVERY_CHANGE не добавляют.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Чт, мар 09 2017, 11:58 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 10:59
Сообщения: 1103
Откуда: Москва, Минск
Пол: Мужской
В исходящую поставку добавлял с помощью GN_DELIVERY_CREATE.
Пример вызова:

" Общие данные
ls_delivery_extend-delivery-vbeln = <data>-vbeln.
ls_control-no_commit = 'X'.
ls_control-spe_add_items = 'X'.

APPEND VALUE komdlgn(
matnr =материал
pstyv = тип позиции
lfimg = кол-во в ПЕИ
vrkme = ПЕИ
lgmng = кол-во в БЕИ
meins = БЕИ
werks = завод
lgort = склад
kunwe = получатель материала
vstel = пункт отгрузки
vkorg = Сбытовая организация
vtweg = канал сбыта
lfart = вид поставки
spart = сектор
lfdat = дата поставки
kzazu = 'X'
vbeln = номер поставки
posnr =номер позиции поставки
spe_le_scenario = 'K'
spe_lifex_type = 'K'
spe_posnr =номер позиции поставки ) TO lt_komdlgn.

IF lt_komdlgn IS NOT INITIAL.
CALL FUNCTION 'GN_DELIVERY_CREATE'
EXPORTING
vbsk_i = ls_vbsk
no_commit = 'X'
is_delivery_extend = ls_delivery_extend
is_control = ls_control
TABLES
xkomdlgn = lt_komdlgn
xvbfs = lt_vbfs
xvbls = lt_vbls
EXCEPTIONS
error_message = 1
OTHERS = 2.

LOOP AT lt_vbfs ASSIGNING FIELD-SYMBOL(<vbfs>).
MOVE-CORRESPONDING <vbfs> TO sy.
PERFORM add_msg_to_log USING sy.
ENDLOOP.

IF line_exists( lt_vbfs[ msgty = 'E' ] ) OR line_exists( lt_vbfs[ msgty = 'A' ] ).
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
CONTINUE.
ENDIF.
ENDIF.

Большую часть данных брал из поставки, нужно четко передать все параметры.

Еще можешь глянуть инклюд /SPE/LDIRDLVF27.
Я вроде оттуда брал пример в свое время.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Пт, мар 10 2017, 14:33 
Специалист
Специалист

Зарегистрирован:
Пн, дек 29 2008, 08:19
Сообщения: 114
Откуда: г. Москва
Пол: Мужской
спасибо за ответ, но у меня не создается...сделал след-им образом..
Data:
ls_vbsk like vbsk,
ls_delivery_extend type leshp_delivery_extend_rv,
ls_control type leshp_delivery_proc_control_in,
lt_komdlgn type standard table of komdlgn with header line,
lt_vbfs type standard table of vbfs with header line,
lt_vbls type standard table of vbls with header line .

ls_delivery_extend-delivery-vbeln = p_vbeln.
ls_control-no_commit = 'X'.
ls_control-spe_add_items = 'X'.


lt_komdlgn-posnr = ls_posnr.
lt_komdlgn-matnr = '000000000043000031'."материал
lt_komdlgn-pstyv = pf_lips-pstyv."тип позиции
lt_komdlgn-lfimg = pf_lips-lfimg.""кол-во в ПЕИ
lt_komdlgn-vrkme = pf_lips-vrkme."ПЕИ
lt_komdlgn-lgmng = pf_lips-lgmng."кол-во в БЕИ
lt_komdlgn-meins = pf_lips-meins."БЕИ
lt_komdlgn-werks = pf_lips-werks."завод
lt_komdlgn-lgort = pf_lips-lgort."склад


select single vstel vkorg lfart lfdat from likp into (lt_komdlgn-vstel, lt_komdlgn-vkorg, lt_komdlgn-lfart, lt_komdlgn-lfdat)
where
vbeln eq p_vbeln.
"получатель материала
"пункт отгрузки
"Сбытовая организация
lt_komdlgn-vtweg = pf_lips-vtweg."канал сбыта
"вид поставки
lt_komdlgn-spart = pf_lips-spart."сектор
"дата поставки
lt_komdlgn-kzazu = 'X'.
lt_komdlgn-vbeln = p_vbeln."номер поставки
lt_komdlgn-posnr = ls_posnr."номер позиции поставки
lt_komdlgn-spe_le_scenario = 'K'.
lt_komdlgn-spe_lifex_type = 'K'.
lt_komdlgn-spe_posnr = ls_posnr."номер позиции поставки ) TO lt_komdlgn.

append lt_komdlgn.

IF lt_komdlgn IS NOT INITIAL.
CALL FUNCTION 'GN_DELIVERY_CREATE'
EXPORTING
vbsk_i = ls_vbsk
no_commit = 'X'
is_delivery_extend = ls_delivery_extend
is_control = ls_control
TABLES
xkomdlgn = lt_komdlgn
xvbfs = lt_vbfs
xvbls = lt_vbls
EXCEPTIONS
error_message = 1
OTHERS = 2.

получаю ошибки
VL 565
VL 561
VHUPD 43


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Пт, мар 10 2017, 15:32 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 10:59
Сообщения: 1103
Откуда: Москва, Минск
Пол: Мужской
Ссылку нужно указать на позицию предшествующего документа( сбытовой или закупочный заказ)
В моем примере поставка была без ссылки на пред. документ.

Если у вас добавляется позиция поставки со ссылкой на пред. документ,
Заполните поля:

lt_komdlgn-vgbel
lt_komdlgn-vgpos
lt_komdlgn-vgtyp

В сообщении VHUPD 043 речь идет об упаковке.
У вас поставка уже упакована?
Если да, то позицию в нее вы не добавите.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Пн, мар 13 2017, 05:58 
Специалист
Специалист

Зарегистрирован:
Пн, дек 29 2008, 08:19
Сообщения: 114
Откуда: г. Москва
Пол: Мужской
Да, поставка упакована...
походу пакетником, только вопрос решиться...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Пн, мар 13 2017, 11:40 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 10:59
Сообщения: 1103
Откуда: Москва, Минск
Пол: Мужской
Пакетник на какую транзакцию?
Если у вас исходящая поставка, разве через Vl02n вы можете добавить позицию в упакованную поставку?

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Добавить позицию к поставке  Тема решена
СообщениеДобавлено: Ср, мар 15 2017, 08:21 
Специалист
Специалист

Зарегистрирован:
Пн, дек 29 2008, 08:19
Сообщения: 114
Откуда: г. Москва
Пол: Мужской
спасибо, работу с пакетником хотелось избежать...сделал следующим образом...
с помощью ФМ sd_salesdocument_change, добавил позиции в заказ и от заказа обновил поставку...все легло красиво..! vl02n - > меню исходящая поставка -> поставка по заказу -> выбираем свой заказ - > сохранить.

спасибо за помощь!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Пн, ноя 27 2017, 09:39 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 14:29
Сообщения: 379
Пол: Мужской
Добрый день.
Сделал по примеру, заполнил дополнительно VGBEL, VGPOS, VGTYP. Но позиция не добавляется, сообщение: E(VL732) Непредусмотренное разделение при создании поставки.
Поставка со сбытового заказа. В чем может быть проблема? Может кто знает еще ФМ на добавление позиции?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Пн, ноя 27 2017, 10:11 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 10:59
Сообщения: 1103
Откуда: Москва, Минск
Пол: Мужской
Этот ФМ точно работает.
Посмотри инклюд /SPE/LDIRDLVF27.
Там полей, конечно, заполняется намного больше чем в примере на форуме :)
Можешь прям как там сделать :)

Если вручную позиция добавляется без проблем, то и ФМ должен работать.
Вручную же строка добавляется?

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Пн, ноя 27 2017, 15:19 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 14:29
Сообщения: 379
Пол: Мужской
Вручную добавляется без проблем. Сколько бы полей не заполнял, постоянно упираюсь в сообщение E(VL732) Непредусмотренное разделение при создании поставки.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Пн, ноя 27 2017, 18:04 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 10:59
Сообщения: 1103
Откуда: Москва, Минск
Пол: Мужской
а в каком месте оно хоть вызывается можешь сказать?

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Вт, ноя 28 2017, 09:20 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 14:29
Сообщения: 379
Пол: Мужской
form check_max_numbers_deliveries(LV50SF05) считает количество поставок по xlips и сравнивает с v50agl-max_number_deliveries. Т.к. они равны (1 = 1), то ошибка.

v50agl-max_number_deliveries перезаписывается на 1 здесь: FORM init_delivery_extend(LV50SIDE)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Вт, ноя 28 2017, 16:39 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 10:59
Сообщения: 1103
Откуда: Москва, Минск
Пол: Мужской
только что сделал пример, все работает.

В указанное тобой место form check_max_numbers_deliveries(LV50SF05) не заходит, потому что у меня вызов подпрограммы выполняется если выполняется условие:
if kopf_gefunden = space.
if not v50agl-max_number_deliveries is initial.
perform check_max_numbers_deliveries changing dc_subrc.
check dc_subrc = 0.
endif.


Переменная kopf_gefunden изначально объявлена с пустым значением, а заполняется она вот тут:
стр. 53 этой же подпрограммы:
ELSEIF v50agl-spe_add_items NE space. "n_1547939
kopf_tabix = 1.
kopf_gefunden = charx.
....


Проанализируй почему у тебя не заполняется kopf_gefunden.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Вт, ноя 28 2017, 17:45 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, сен 19 2011, 14:29
Сообщения: 379
Пол: Мужской
Посмотрел, v50agl-spe_add_items - пустое. Можешь посмотреть где заполняется v50agl-spe_add_items в работающем примере?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Добавить позицию к поставке
СообщениеДобавлено: Вт, ноя 28 2017, 19:16 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 10:59
Сообщения: 1103
Откуда: Москва, Минск
Пол: Мужской
Ну ты даешь :)

в ФМ подается, в примере ж было:
ls_control-spe_add_items = 'X'.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

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


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

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


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

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