Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: sergiucz от Декабрь 01, 2012, 02:47:48 pm
-
Добрый день господа гуру !
Не могу найти где заполняется это поле в BAPI_PO_CREATE1.
Я нашел где Отпускающий склад при заказе на транспортировку
t_po_items-suppl_stloc = gs_header-scladp.
заполняется но он не активен он заполняется автоматически когда пишешь в RESLO_BEZ в транзакций Me21n.
И при этом бапи не вставляет t_po_items-suppl_stloc в заказ.
Подскажите плз где найти.
-
Эпилог: Трудно найти черную кошку в темной комнате, особенно если ее там нет.
Ну что я могу сказать... новые транзакции системы похоже умеют вогнать в ступор не окрепшие умы. И так что мы имеем, SAP сделал такую вещь как вывод наименований в полях ввода, вместо кодов. Это привело к тому, что поле типа отпускающий склад в транзакции имеет длину CHAR(16) хотя на самом деле код склада CHAR(4). Просто в транзакции вы вводите код склада, а система автоматом ищет его описание и вставляет в данном поле и как следствие не окрепшие умы начинающих абаперов бесполезно ищут в разных BAPI поле типа CHAR(16). Хотя для BAPI это поле и даром не нужно, так как это только в диалоге и требуется, чтобы к коду склада, показать его текстовое описание. Поэтому я не понимаю зачем вы ищете где в BAPI именно это поле.
Далее, если у вас что-то там вы заполняете, но у вас это не работает, это значит что у вас вид заказа не является типа UB - т.е. заказ на перемещение запаса, а просто заказ на закупку. Так вот для заказа на закупку поле отпускающий код склада не может быть определено, поэтому идете к специалисту по ММ и он пусть вам покажет какой вид документа он предполагал вводить в систему и т.д.
-
Спасибо за быстрый ответ.
Группа ММ дала задачу на разработку программы для создания заказов из внешнего файла .
Я программно создаю заказ перемещ вн БЕ (TEM) или перемещ в БЕ (TIM). И потом появилась задача автоматически там поставить Отпускающий склад.
вот и здесь начались вопросы у меня.
Из ваше ответа я уже понял с чем имею дело.
-
Я программно создаю заказ перемещ вн БЕ (TEM) или перемещ в БЕ (TIM). И потом появилась задача автоматически там поставить Отпускающий склад.
Ну я заказ на перемещение запаса программно не помню, чтобы создавал, но проверь у себя что заполняется поле RESWK (SUPPL_PLNT) в заголовке структуры POHEADER, это отпускающий код завода. Если оно не заполнено, то отпускающий склад будет при заполнении очищаться.
-
но проверь у себя что заполняется поле RESWK (SUPPL_PLNT) в заголовке структуры POHEADER, это отпускающий код завода. Если оно не заполнено, то отпускающий склад будет при заполнении очищаться.
Заполнил в заголовке SUPPL_PLNT . Но тоже эффекта 0.
"----------- Заголовок --------------------
l_po_header-comp_code = pa_bukrs. "-- Балансовая единица
l_po_header-doc_type = gs_header-auart. " 'TEM' -- Вид документа закупки
l_po_header-creat_date = sy-datum. "-- Дата создания записи
l_po_header-created_by = sy-uname. "-- Имя исполнителя
l_po_header-vendor = gs_header-kunnr. " 'R001' -- Номер счета поставщика
l_po_header-langu = sy-langu. "-- Код языка
l_po_header-purch_org = gs_header-vkorg ." 'Z006' -- Закупочная организация
l_po_header-pur_group = gs_header-vtweg. " 'G02' -- Группа закупок
l_po_header-currency = 'MDL'. "-- Код валюты
l_po_header-doc_date = sy-datum. "-- Дата документа закупки
l_po_header-suppl_plnt = gs_header-scladp.
* l_po_header-ref_1 = 'test'.
CLEAR : l_po_headerx.
l_po_headerx-comp_code = 'X'.
l_po_headerx-doc_type = 'X'.
l_po_headerx-creat_date = 'X'.
l_po_headerx-created_by = 'X'.
l_po_headerx-vendor = 'X'.
l_po_headerx-langu = 'X'.
l_po_headerx-purch_org = 'X'.
l_po_headerx-pur_group = 'X'.
l_po_headerx-currency = 'X'.
l_po_headerx-doc_date = 'X'.
l_po_header-suppl_plnt = 'X'.
по позициям
SHIFT gt_poz-matnr RIGHT DELETING TRAILING space.
OVERLAY gt_poz-matnr WITH '000000000000000000'.
SELECT matnr charg clabs FROM mchb INTO CORRESPONDING FIELDS OF TABLE gt_charg
WHERE matnr EQ gt_poz-matnr
AND werks EQ gs_header-zterm
AND lgort EQ gs_header-scladp
AND clabs EQ
( SELECT MAX( clabs ) FROM mchb
WHERE matnr EQ gt_poz-matnr
AND werks EQ gs_header-zterm
AND lgort EQ gs_header-scladp ).
IF sy-subrc EQ 0.
READ TABLE gt_charg INDEX 1.
CLEAR : lv_taklv,t_po_items,t_po_itemsx,po_schedule,po_schedulex.
IF gg_zakaz > 0.
t_po_items-po_item = i. "-- Номер позиции
t_po_items-material = gt_poz-matnr. "-- '000000000000100053'.
t_po_items-plant = gs_header-zavod."-- 'M006'. "-- Завод
t_po_items-stge_loc = gs_header-sclad."-- '0001'. "-- Склад
t_po_items-batch = gt_charg-charg. "-- Партия
t_po_items-suppl_stloc = gs_header-scladp.
* t_po_items-info_rec = space.
IF gt_charg-clabs < gt_poz-zakaz.
t_po_items-quantity = gt_charg-clabs. "-- Количество с партии
gt_poz-zakaz = gt_poz-zakaz - gt_charg-clabs.
ELSE.
t_po_items-quantity = gt_poz-zakaz. " '11' "-- Количество с партии.
gg_zakaz = 0.
ENDIF.