SAPфорум.RU
https://sapboard.ru/forum/

Добавить позицию к поставке
https://sapboard.ru/forum/viewtopic.php?f=13&t=94472
Страница 1 из 2

Автор:  Malych [ Ср, мар 01 2017, 06:35 ]
Заголовок сообщения:  Добавить позицию к поставке

Всем привет, подскажите каким BAPI необходимо воспользоваться или сам сценарий, добавления позиции к существующей поставке..?
Заранее благодарю..!
P/S
BAPI_DELIVERYPROCESSING_EXEC
BAPI_OUTB_DELIVERY_CHANGE не добавляют.

Автор:  DED_MOROZ [ Чт, мар 09 2017, 10:58 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

В исходящую поставку добавлял с помощью 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.
Я вроде оттуда брал пример в свое время.

Автор:  Malych [ Пт, мар 10 2017, 13:33 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

спасибо за ответ, но у меня не создается...сделал след-им образом..
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

Автор:  DED_MOROZ [ Пт, мар 10 2017, 14:32 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

Ссылку нужно указать на позицию предшествующего документа( сбытовой или закупочный заказ)
В моем примере поставка была без ссылки на пред. документ.

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

lt_komdlgn-vgbel
lt_komdlgn-vgpos
lt_komdlgn-vgtyp

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

Автор:  Malych [ Пн, мар 13 2017, 04:58 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

Да, поставка упакована...
походу пакетником, только вопрос решиться...

Автор:  DED_MOROZ [ Пн, мар 13 2017, 10:40 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

Пакетник на какую транзакцию?
Если у вас исходящая поставка, разве через Vl02n вы можете добавить позицию в упакованную поставку?

Автор:  Malych [ Ср, мар 15 2017, 07:21 ]
Заголовок сообщения:  Re: Добавить позицию к поставке  Тема решена

спасибо, работу с пакетником хотелось избежать...сделал следующим образом...
с помощью ФМ sd_salesdocument_change, добавил позиции в заказ и от заказа обновил поставку...все легло красиво..! vl02n - > меню исходящая поставка -> поставка по заказу -> выбираем свой заказ - > сохранить.

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

Автор:  Korvax [ Пн, ноя 27 2017, 08:39 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

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

Автор:  DED_MOROZ [ Пн, ноя 27 2017, 09:11 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

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

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

Автор:  Korvax [ Пн, ноя 27 2017, 14:19 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

Вручную добавляется без проблем. Сколько бы полей не заполнял, постоянно упираюсь в сообщение E(VL732) Непредусмотренное разделение при создании поставки.

Автор:  DED_MOROZ [ Пн, ноя 27 2017, 17:04 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

а в каком месте оно хоть вызывается можешь сказать?

Автор:  Korvax [ Вт, ноя 28 2017, 08:20 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

form check_max_numbers_deliveries(LV50SF05) считает количество поставок по xlips и сравнивает с v50agl-max_number_deliveries. Т.к. они равны (1 = 1), то ошибка.

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

Автор:  DED_MOROZ [ Вт, ноя 28 2017, 15:39 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

только что сделал пример, все работает.

В указанное тобой место 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.

Автор:  Korvax [ Вт, ноя 28 2017, 16:45 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

Посмотрел, v50agl-spe_add_items - пустое. Можешь посмотреть где заполняется v50agl-spe_add_items в работающем примере?

Автор:  DED_MOROZ [ Вт, ноя 28 2017, 18:16 ]
Заголовок сообщения:  Re: Добавить позицию к поставке

Ну ты даешь :)

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

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/