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/ |