Текущее время: Вт, июл 01 2025, 20:23

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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