Текущее время: Пт, июн 27 2025, 21:44

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Опять BAPI_PO_CREATE
СообщениеДобавлено: Пн, янв 23 2006, 09:44 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, сен 21 2005, 06:12
Сообщения: 32
Здравствуйте всем! Практически крик отчаяния!
Уже писал по поводу этой бапишки.
Документы создаются, но теперь появились другие проблемы!
:(
1. К каждой позиции создается максимум одна услуга вместо нескольких :(
2. в созданном документе в полях количество и цена висят единички.
не понятно почему это происходит. Уже устал искать глюки. :(
Если кто знает в чем проблема, подскажите плз. Очень надо.
Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Примерчик!
СообщениеДобавлено: Пн, янв 23 2006, 10:50 
Гость
Похоже проблема в правильном заполнении структур.
В приведенном ниже примере данные считываются из файла и аккуратно заполняют структуры.
Надо тольно выполнять условия:

CLEAR POHEADER.
POHEADER-COMP_CODE = '1000'.
POHEADER-DOC_TYPE = 'UB'.
POHEADER-ITEM_INTVL = '00010'.
POHEADER-SUPPL_PLNT = '2000'.
POHEADER-PURCH_ORG = '1000'.
POHEADER-PUR_GROUP = '100'.
POHEADER-DOC_DATE = DATT_SAP.
POHEADER-COLLECT_NO = WA_ITAB-CMR.
POHEADER-CREATED_BY = USERNM.
APPEND POHEADER.

CLEAR POHEADERX.
POHEADERX-COMP_CODE = 'X'.
POHEADERX-DOC_TYPE = 'X'.
POHEADERX-ITEM_INTVL = 'X'.
POHEADERX-SUPPL_PLNT = 'X'.
POHEADERX-PURCH_ORG = 'X'.
POHEADERX-PUR_GROUP = 'X'.
POHEADERX-DOC_DATE = 'X'.
POHEADERX-COLLECT_NO = 'X'.
POHEADERX-CREATED_BY = 'X'.
APPEND POHEADERX.

заполняются только один раз - те одна запись - один заголовок!

POSIT = 0.
CLEAR POITEM.
REFRESH POITEM.
CLEAR POITEMX.
REFRESH POITEMX.
CLEAR POSCHEDULE.
REFRESH POSCHEDULE.
CLEAR POSCHEDULEX.
REFRESH POSCHEDULEX.

LOOP AT ITAB INTO WA_ITAB.

это цикл по структуре хранящей данные, загруженные из файла.

POSIT = POSIT + 10.

CLEAR POITEM.
POITEM-PO_ITEM = POSIT.
POITEM-EMATERIAL = WA_ITAB-MATNR.
POITEM-PLANT = '1000'.
POITEM-STGE_LOC = WA_ITAB-STLOC.
POITEM-SUPPL_STLOC = WA_ITAB-STLOC.
POITEM-VAL_TYPE = BATCHNM.
POITEM-QUANTITY = WA_ITAB-QUAN.
POITEM-PO_UNIT = 'ST'.
POITEM-PO_PRICE = '1'.
POITEM-BATCH = PARTIA.
* POITEM-CALCTYPE = 'B'.
APPEND POITEM.

CLEAR POITEMX.
POITEMX-PO_ITEM = POSIT.
POITEMX-EMATERIAL = 'X'.
POITEMX-PLANT = 'X'.
POITEMX-STGE_LOC = 'X'.
POITEMX-SUPPL_STLOC = 'X'.
POITEMX-VAL_TYPE = 'X'.
POITEMX-QUANTITY = 'X'.
POITEMX-PO_UNIT = 'X'.
POITEMX-PO_PRICE = 'X'.
POITEMX-BATCH = 'X'.
* POITEMX-CALCTYPE = 'X'.
APPEND POITEMX.

DATT_SAP2 = DATT_SAP + 14.
* POSCHEDULE-DELIVERY_DATE = DATT_EVR.
* POSCHEDULE-STAT_DATE = DATT_SAP + 14.

CLEAR POSCHEDULE.
POSCHEDULE-PO_ITEM = POSIT.
POSCHEDULE-SCHED_LINE = '0001'.
MOVE DATT_SAP2 TO POSCHEDULE-DELIVERY_DATE.
MOVE DATT_SAP2 TO POSCHEDULE-STAT_DATE.
POSCHEDULEX-DEL_DATCAT_EXT = 'D'.
POSCHEDULE-QUANTITY = WA_ITAB-QUAN.
APPEND POSCHEDULE.

CLEAR POSCHEDULEX.
POSCHEDULEX-PO_ITEM = POSIT.
POSCHEDULEX-SCHED_LINE = '0001'.
POSCHEDULEX-DELIVERY_DATE = 'X'.
POSCHEDULEX-STAT_DATE = 'X'.
POSCHEDULEX-DEL_DATCAT_EXT = 'X'.
POSCHEDULEX-QUANTITY = 'X'.
APPEND POSCHEDULEX.

это было заполнение позиций.

AT END OF CMR.

это конец данных для позиций (т.к. CRM изменился - значит начинается новый ордер) и начало заполнения заголовков!

CLEAR POHEADER.
POHEADER-COMP_CODE = '1000'.
POHEADER-DOC_TYPE = 'UB'.
POHEADER-ITEM_INTVL = '00010'.
POHEADER-SUPPL_PLNT = '2000'.
POHEADER-PURCH_ORG = '1000'.
POHEADER-PUR_GROUP = '100'.
POHEADER-DOC_DATE = DATT_SAP.
POHEADER-COLLECT_NO = WA_ITAB-CMR.
POHEADER-CREATED_BY = USERNM.
APPEND POHEADER.

CLEAR POHEADERX.
POHEADERX-COMP_CODE = 'X'.
POHEADERX-DOC_TYPE = 'X'.
POHEADERX-ITEM_INTVL = 'X'.
POHEADERX-SUPPL_PLNT = 'X'.
POHEADERX-PURCH_ORG = 'X'.
POHEADERX-PUR_GROUP = 'X'.
POHEADERX-DOC_DATE = 'X'.
POHEADERX-COLLECT_NO = 'X'.
POHEADERX-CREATED_BY = 'X'.
APPEND POHEADERX.

это было заполнение заголовка.

CMR первое поле WA_ITAB - ссылочный номер заказа.

* CREATE ORDER ( Создание заказа! )
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = POHEADER
poheaderx = POHEADERX
TESTRUN = ''
NO_PRICE_FROM_PO = 'X'
IMPORTING
exppurchaseorder = EXPPURCHASEORDER
TABLES
* POCOND = POCOND
* POCONDX = POCONDX
return = RETURN
poitem = POITEM
poitemx = POITEMX
poschedule = POSCHEDULE
poschedulex = POSCHEDULEX.
* popartner = POPARTNER.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.

это печать ошибок

LOOP AT RETURN.
WRITE: / RETURN-TYPE, RETURN-MESSAGE.
ENDLOOP.

* TEST PRINT DATA HEADER( Тестовая печать данных заказа )
WRITE: / 'Данные для заголовка заказа:'.

WRITE: /
POHEADER-COMP_CODE,
POHEADER-DOC_TYPE,
POHEADER-ITEM_INTVL,
POHEADER-SUPPL_PLNT,
POHEADER-PURCH_ORG,
POHEADER-PUR_GROUP,
POHEADER-DOC_DATE,
POHEADER-COLLECT_NO,
POHEADER-CREATED_BY.

* TEST PRINT DATA BODY( Тестовая печать данных заказа )
WRITE: / 'Данные для позиций заказа:'.

LOOP AT POITEM.

WRITE: /
POITEM-PO_ITEM,
POITEM-EMATERIAL,
POITEM-PLANT,
POITEM-STGE_LOC,
POITEM-SUPPL_STLOC,
* POITEM-VAL_TYPE,
POITEM-QUANTITY,
POITEM-PO_UNIT,
POITEM-PO_PRICE,
POITEM-BATCH.
* POITEM-CALCTYPE,

ENDLOOP.

* Обнуление данных позиций
POSIT = 0.
CLEAR POITEM.
REFRESH POITEM.
CLEAR POITEMX.
REFRESH POITEMX.
CLEAR POSCHEDULE.
REFRESH POSCHEDULE.
CLEAR POSCHEDULEX.
REFRESH POSCHEDULEX.

CLEAR EXPPURCHASEORDER.


ENDAT.

ENDLOOP.

Вопрос о заполнении:

CLEAR POCOND.
* POCOND-COND_NO = WA_A900-KNUMH.
POCOND-ITM_NUMBER = '00010'.
POCOND-COND_TYPE = 'PB00'.
POCOND-COND_VALUE = '100.00'.
POCOND-CURRENCY = 'USD'.
POCOND-CURRENCY_ISO = 'USD'.
POCOND-COND_UNIT = 'ST'.
POCOND-COND_P_UNT = '1'.
POCOND-CHANGE_ID = 'U'.
APPEND POCOND.

CLEAR POCONDX.
* POCONDX-COND_NO = WA_A900-KNUMH.
POCONDX-ITM_NUMBERX = '00010'.
POCONDX-COND_TYPE = 'X'.
POCONDX-COND_VALUE = 'X'.
POCONDX-CURRENCY = 'X'.
POCONDX-CURRENCY_ISO = 'X'.
POCONDX-COND_UNIT = 'X'.
POCONDX-COND_P_UNT = 'X'.
POCONDX-CHANGE_ID = 'X'.
APPEND POCONDX.

Мне и самому не ясен!


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 23 2006, 11:04 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, сен 21 2005, 06:12
Сообщения: 32
спасибо.
в очередной раз попробуем разобраться


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 23 2006, 11:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Коллеги! К сожалению, я утерял рабочий пример создания PO с услугами, но это точно работало через BAPI_PO_CREATE1. Для услуг там нужно сформировать некоторую иерархическую структуру - каталог услуг, как они это называют. Я бы рекомендовал попросить кого-нибудь из ММ создать обычным образом PO с услугами, а потом внимательно поглядеть, что возвращает BAPI_PO_GETDETAIL в услугах. Еще есть внутренние (не BAPI) функции считывания PO, типа ME_READ_DOCUMENT (не ручаюсь за название).

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 23 2006, 11:15 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, сен 21 2005, 06:12
Сообщения: 32
Т.е. советуешь использовать BAPI_PO_CREATE1 вместо BAPI_PO_CREATE?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 23 2006, 11:47 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Именно. См. OSS ноты 372976, 197958.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 23 2006, 12:08 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Ср, сен 21 2005, 06:12
Сообщения: 32
А не подскажете как прикрутить поля "тип банка" и "позиция контракта" :(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 23 2006, 13:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Возможно подойдет параметр ExtensionIN

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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


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

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


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

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