SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

SD_SALESDOCUMENT_CREATE



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
andry_moz
Участник
Участник



Joined: 29 Aug 2008
Posts: 6

PostPosted: Mon Dec 29, 2008 7:07 pm    Post subject: SD_SALESDOCUMENT_CREATE Reply with quote

Создаю два совершенно одинаковых заказа клиента через
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
и транзакцию VA02.

почему то в таблице VBAP позиции отличаются полями
VBELV (инициатор ) и POSNV.
Если создавать по этим заказам поставки то позиции будут отличаться полем "Особый запас."
В случае поставки по заказу созданному через VA02 - поле "Особый запас" заполен правильно, а через CALL FUNCTION 'SD_SALESDOCUMENT_CREATE' - неверно ( я подозреваю из-за VBAP-VBELV и POSNV).

Возможно ли через 'SD_SALESDOCUMENT_CREATE' указывать VBAP-VBELV и POSNV ?
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 165
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Mon Dec 29, 2008 11:29 pm    Post subject: Reply with quote

Или покажите ваш код, или попробуйте
Сreate sales order using BAPI_SALESDOCU_CREATEFROMDATA1
Back to top
View user's profile Send private message Blog Visit poster's website
andry_moz
Участник
Участник



Joined: 29 Aug 2008
Posts: 6

PostPosted: Tue Dec 30, 2008 11:05 am    Post subject: Reply with quote

vga wrote:
Или покажите ваш код


Code:
FUNCTION Z_CREATE_SO.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     REFERENCE(DOGOVOR) LIKE  VBAP-VBELN
*"  TABLES
*"      ACTTABLE STRUCTURE  VBAP
*"      MESSAGES STRUCTURE  BAPIRET2
*"  EXCEPTIONS
*"      BAPIERROR
*"      NOTHINGTODO
*"      WRONGDOC
*"      WRONGAVR
*"      OTHERS
*"----------------------------------------------------------------------

type-pools: cs01.

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.

* Тип документа
  xvbak-doc_type   = 'ZZO4'.
  xvbak-REF_DOC    = vbeln.
  xvbak-REFDOC_CAT = 'G'.

* Сбытовская организация
  xvbak-SALES_ORG = tvbak-vkorg.

  xvbak-DISTR_CHAN = tvbak-vtweg.

* Сектор сбыта
  xvbak-DIVISION   = tvbak-spart.

* условие платежа
  xvbak-PMNTTRMS = xvbkd-zterm.

  select single * from vbpa into xvbpa where vbeln = vbeln
  and parvw = 'AG'.

  tvbpa-PARTN_ROLE = 'AG'.
  tvbpa-PARTN_NUMB = xvbpa-kunnr.
  tvbpa-ADDRESS = xvbpa-adrnr.
  tvbpa-COUNTRY = xvbpa-land1.
  append tvbpa.

  select single * from vbpa into xvbpa where vbeln = vbeln
  and parvw = 'WE'.

  tvbpa-PARTN_ROLE = 'WE'.
  tvbpa-PARTN_NUMB = xvbpa-kunnr.
  tvbpa-ADDRESS = xvbpa-adrnr.
  tvbpa-COUNTRY = xvbpa-land1.
  append tvbpa.

Data: cur_posnr like vbap-posnr.

cur_posnr = 0.
loop at acttable.
  cur_posnr = cur_posnr + 10.

  tvbap-itm_number = cur_posnr.
  tvbap-material = acttable-matnr.
  tvbap-plant = acttable-werks.
  tvbap-store_loc = acttable-lgort.
  tvbap-REF_DOC = acttable-vbeln.
  tvbap-REF_DOC_IT = acttable-posnr.
  tvbap-REF_DOC_CA = 'G'.
  tvbap-PMNTTRMS = '04'.

  append tvbap.

  tshdl-itm_number = cur_posnr.
  tshdl-SCHED_LINE = 1.
  tshdl-REQ_QTY = acttable-kwmeng.
  append tshdl.

endloop.

  xvbak-ref_1 = 'BAPI'.
  CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
    EXPORTING
*   SALESDOCUMENT                 =
      SALES_HEADER_IN               = xvbak
*   SALES_HEADER_INX              =
*   SENDER                        =
*   BINARY_RELATIONSHIPTYPE       = ' '
*   INT_NUMBER_ASSIGNMENT         = ' '
*   BEHAVE_WHEN_ERROR             = ' '
*   LOGIC_SWITCH                  = ' '
*   BUSINESS_OBJECT               = ' '
*   TESTRUN                       =
*   CONVERT_PARVW_AUART           = ' '
*   STATUS_BUFFER_REFRESH         = 'X'
    IMPORTING
      SALESDOCUMENT_EX              = xvbak-collect_no
*   SALES_HEADER_OUT              =
    TABLES
      RETURN                        = messtab
      SALES_ITEMS_IN                = tvbap
*   SALES_ITEMS_INX               =
      SALES_PARTNERS                = tvbpa
      SALES_SCHEDULES_IN            = tshdl
*   SALES_SCHEDULES_INX           =
*      SALES_CONDITIONS_IN           =
*   SALES_CFGS_REF                =
*   SALES_CFGS_INST               =
*   SALES_CFGS_PART_OF            =
*   SALES_CFGS_VALUE              =
*   SALES_CFGS_BLOB               =
*   SALES_CFGS_VK                 =
*   SALES_CFGS_REFINST            =
*   SALES_CCARD                   =
*   SALES_TEXT                    =
*   SALES_KEYS                    =
*   SALES_CONTRACT_IN             =
*   SALES_CONTRACT_INX            =
*   EXTENSIONIN                   =
*   PARTNERADDRESSES              =
*   SALES_SCHED_CONF_IN           =
*       ITEMS_EX                      = torder
*   SCHEDULE_EX                   =
*   BUSINESS_EX                   =
*   INCOMPLETE_LOG                =
*   EXTENSIONEX                   =
*   CONDITIONS_EX                 =
          .

messages[] = messtab[].

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'  EXPORTING WAIT = 'X'
                                         IMPORTING RETURN = return.

ENDFUNCTION.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 165
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Dec 30, 2008 12:31 pm    Post subject: Reply with quote

Попробовал в песочнице создать через 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.

CALL FUNCTION 'Z_CREATE_SO'
  EXPORTING
    DOGOVOR = c_vbeln
  TABLES
     ACTTABLE = ACTTABLE
     MESSAGES = MESSAGES
  EXCEPTIONS
      OTHERS = 1.

LOOP AT MESSAGES.
  WRITE / MESSAGES-MESSAGE.
ENDLOOP.

Code:
FUNCTION Z_CREATE_SO.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(DOGOVOR) LIKE  VBAP-VBELN
*"  TABLES
*"      ACTTABLE STRUCTURE  VBAP
*"      MESSAGES STRUCTURE  BAPIRET2
*"  EXCEPTIONS
*"      BAPIERROR
*"      NOTHINGTODO
*"      WRONGDOC
*"      WRONGAVR
*"      OTHERS
*"----------------------------------------------------------------------

type-pools: cs01.

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.

* Тип документа
*  xvbak-doc_type   = 'ZZO4'.
  xvbak-doc_type   = 'TA'.
  xvbak-REF_DOC    = vbeln.
  xvbak-REFDOC_CAT = 'C'.

* Сбытовская организация
  xvbak-SALES_ORG = tvbak-vkorg.

  xvbak-DISTR_CHAN = tvbak-vtweg.

* Сектор сбыта
  xvbak-DIVISION   = tvbak-spart.

* условие платежа
  xvbak-PMNTTRMS = xvbkd-zterm.

  select single * from vbpa into xvbpa where vbeln = vbeln
  and parvw = 'AG'.

  tvbpa-PARTN_ROLE = 'AG'.
  tvbpa-PARTN_NUMB = xvbpa-kunnr.
  tvbpa-ADDRESS = xvbpa-adrnr.
  tvbpa-COUNTRY = xvbpa-land1.
  append tvbpa.

  select single * from vbpa into xvbpa where vbeln = vbeln
  and parvw = 'WE'.

  tvbpa-PARTN_ROLE = 'WE'.
  tvbpa-PARTN_NUMB = xvbpa-kunnr.
  tvbpa-ADDRESS = xvbpa-adrnr.
  tvbpa-COUNTRY = xvbpa-land1.
  append tvbpa.

Data: cur_posnr like vbap-posnr.

cur_posnr = 0.
loop at acttable.
  cur_posnr = cur_posnr + 10.

  tvbap-itm_number = cur_posnr.
  tvbap-material = acttable-matnr.
  tvbap-plant = acttable-werks.
  tvbap-store_loc = acttable-lgort.
  tvbap-REF_DOC = acttable-vbeln.
  tvbap-REF_DOC_IT = acttable-posnr.
  tvbap-REF_DOC_CA = 'C'.
*  tvbap-PMNTTRMS = '04'.

  append tvbap.

  tshdl-itm_number = cur_posnr.
  tshdl-SCHED_LINE = 1.
  tshdl-REQ_QTY = acttable-kwmeng.
  append tshdl.

endloop.

  xvbak-ref_1 = 'BAPI'.
  CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
    EXPORTING
*   SALESDOCUMENT                 =
      SALES_HEADER_IN               = xvbak
*   SALES_HEADER_INX              =
*   SENDER                        =
*   BINARY_RELATIONSHIPTYPE       = ' '
*   INT_NUMBER_ASSIGNMENT         = ' '
*   BEHAVE_WHEN_ERROR             = ' '
*   LOGIC_SWITCH                  = ' '
*   BUSINESS_OBJECT               = ' '
*   TESTRUN                       =
*   CONVERT_PARVW_AUART           = ' '
*   STATUS_BUFFER_REFRESH         = 'X'
    IMPORTING
      SALESDOCUMENT_EX              = xvbak-collect_no
*   SALES_HEADER_OUT              =
    TABLES
      RETURN                        = messtab
      SALES_ITEMS_IN                = tvbap
*   SALES_ITEMS_INX               =
      SALES_PARTNERS                = tvbpa
      SALES_SCHEDULES_IN            = tshdl
*   SALES_SCHEDULES_INX           =
*      SALES_CONDITIONS_IN           =
*   SALES_CFGS_REF                =
*   SALES_CFGS_INST               =
*   SALES_CFGS_PART_OF            =
*   SALES_CFGS_VALUE              =
*   SALES_CFGS_BLOB               =
*   SALES_CFGS_VK                 =
*   SALES_CFGS_REFINST            =
*   SALES_CCARD                   =
*   SALES_TEXT                    =
*   SALES_KEYS                    =
*   SALES_CONTRACT_IN             =
*   SALES_CONTRACT_INX            =
*   EXTENSIONIN                   =
*   PARTNERADDRESSES              =
*   SALES_SCHED_CONF_IN           =
*       ITEMS_EX                      = torder
*   SCHEDULE_EX                   =
*   BUSINESS_EX                   =
*   INCOMPLETE_LOG                =
*   EXTENSIONEX                   =
*   CONDITIONS_EX                 =
          .

messages[] = messtab[].

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'  EXPORTING WAIT = 'X'
                                         IMPORTING RETURN = return.

ENDFUNCTION.
Back to top
View user's profile Send private message Blog Visit poster's website
andry_moz
Участник
Участник



Joined: 29 Aug 2008
Posts: 6

PostPosted: Tue Dec 30, 2008 12:55 pm    Post subject: Reply with quote

vga wrote:
Попробовал в песочнице создать через 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
а как у вас?
Back to top
View user's profile Send private message
andry_moz
Участник
Участник



Joined: 29 Aug 2008
Posts: 6

PostPosted: Tue Dec 30, 2008 6:52 pm    Post subject: Reply with quote

vga wrote:
попробуйте
Сreate sales order using BAPI_SALESDOCU_CREATEFROMDATA1


попробовал BAPI_SALESDOCU_CREATEFROMDATA1,
ситуация та же, в случае ссылки заголовка и позиции по разным документам
поля VBAP-VBELV и VBAP-POSNV равны VBAP-VBELN и VBAP-POSNR соответсвенно.
И при указании партии в последующей поставке неверно определяется особый запас со всеми вытекающими последствиями.



в случае же VA01:
VBAP-VBELV = VBAP-VGBEL
VBAP-POSNV = VBAP-VGPOS
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.