Posted: Mon Dec 29, 2008 7:07 pm Post subject: SD_SALESDOCUMENT_CREATE
Создаю два совершенно одинаковых заказа клиента через
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
и транзакцию VA02.
почему то в таблице VBAP позиции отличаются полями
VBELV (инициатор ) и POSNV.
Если создавать по этим заказам поставки то позиции будут отличаться полем "Особый запас."
В случае поставки по заказу созданному через VA02 - поле "Особый запас" заполен правильно, а через CALL FUNCTION 'SD_SALESDOCUMENT_CREATE' - неверно ( я подозреваю из-за VBAP-VBELV и POSNV).
Возможно ли через 'SD_SALESDOCUMENT_CREATE' указывать VBAP-VBELV и POSNV ?
data:
vbeln like vbak-vbeln,
tvbak like vbak,
answer,
xvbak like BAPISDHD1,
messtab like table of BAPIRET2 with header line,
return like BAPIRET2,
tvbpa like table of BAPIPARNR with header line,
tvbap like table of BAPISDITM with header line,
tshdl like table of BAPISCHDL with header line,
xvbap like table of vbap with header line,
xvbpa like table of vbpa with header line,
xvbkd like table of vbkd with header line,
tcond like table of bapicond with header line,
xkonv like table of konv with header line,
xmast type CS01_MASTB_TAB with header line,
xstko type CS01_STKOB_TAB with header line,
xstzu type CS01_STZUB_TAB with header line,
tknvv like table of KNVV with header line,
msgtxt(200).
unpack acttable-vbeln to vbeln.
select single * from vbak into tvbak where vbeln = vbeln.
unpack dogovor to vbeln.
select single * from vbak into tvbak where vbeln = vbeln.
Select Single * Into xvbkd From VBKD
Where vbeln = vbeln And posnr = 0.
Age: 165 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Tue Dec 30, 2008 12:31 pm Post subject:
Попробовал в песочнице создать через va01 со ссылкой на SO и вашим ФМ, поля VBELV и POSNV заполнились одинаково. Едиственное, что тип документа был Стандартный ордер и категория C, а не G.
Последовательность действий:
1) Вызвал программу по ссылке выше.
2) Заполнил сел. экран.
Code:
Order type OR
Sales Org 1000
Distribution channel 10
Division 00
Sold-to 1000
Ship-to 1000
Material PA-1000
Quantity 10,000
Plant 1000
3) На основе созданного SO 9210 вызвал программу создания SO со ссылкой на референс (ваш ФМ немного подправлен)
Code:
REPORT Z_COPY_SO .
TABLES: vbap.
CONSTANTS: c_vbeln TYPE vbeln VALUE '0000009210'.
DATA: ACTTABLE TYPE TABLE OF VBAP WITH HEADER LINE,
MESSAGES TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
SELECT * FROM vbap WHERE vbeln = c_vbeln.
MOVE-CORRESPONDING vbap TO ACTTABLE.
APPEND ACTTABLE.
ENDSELECT.
data:
vbeln like vbak-vbeln,
tvbak like vbak,
answer,
xvbak like BAPISDHD1,
messtab like table of BAPIRET2 with header line,
return like BAPIRET2,
tvbpa like table of BAPIPARNR with header line,
tvbap like table of BAPISDITM with header line,
tshdl like table of BAPISCHDL with header line,
xvbap like table of vbap with header line,
xvbpa like table of vbpa with header line,
xvbkd like table of vbkd with header line,
tcond like table of bapicond with header line,
xkonv like table of konv with header line,
xmast type CS01_MASTB_TAB with header line,
xstko type CS01_STKOB_TAB with header line,
xstzu type CS01_STZUB_TAB with header line,
tknvv like table of KNVV with header line,
msgtxt(200).
unpack acttable-vbeln to vbeln.
select single * from vbak into tvbak where vbeln = vbeln.
unpack dogovor to vbeln.
select single * from vbak into tvbak where vbeln = vbeln.
Select Single * Into xvbkd From VBKD
Where vbeln = vbeln And posnr = 0.
Попробовал в песочнице создать через va01 со ссылкой на SO и вашим ФМ, поля VBELV и POSNV заполнились одинаково. Едиственное, что тип документа был Стандартный ордер и категория C, а не G.
я наверное забыл уточнить, что заголовок создаваемого SO ссылается на DOGOVOR, а позиции на ACTTABLE-vbeln ( <> DOGOVOR !!! ) и ACTTABLE-posnr.
еще хочется уточнить у меня при:
VA01 у созданного SO: vbelv = vgbel
posnv = vgpos
vbeln <> vbelv
а через ФМ:
VA01 у созданного SO: vbelv <> vgbel
posnv <> vgpos
vbeln = vbelv
posnr = posnv
а как у вас?
попробовал BAPI_SALESDOCU_CREATEFROMDATA1,
ситуация та же, в случае ссылки заголовка и позиции по разным документам
поля VBAP-VBELV и VBAP-POSNV равны VBAP-VBELN и VBAP-POSNR соответсвенно.
И при указании партии в последующей поставке неверно определяется особый запас со всеми вытекающими последствиями.
в случае же VA01:
VBAP-VBELV = VBAP-VGBEL
VBAP-POSNV = VBAP-VGPOS
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.