Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI_SALESORDER_CREATEFROMDAT2 link order and quotation

Former Member
0 Likes
1,149

Hi,

Object: Create a sales order and link it with a quotation.

I have created first a quotation VA21 for a customer and a material.

I am using function BAPI_SALESORDER_CREATEFROMDAT2 in a Sap 5.0 to create a TA order in a program with a BAPI_TRANSACTION_COMMIT.

The creation is well working

but I do not obtain a link between the new orders and the quotation

.

What I have forgotten?

Is it well this function to use to create an order and link with a quotation?

Thank for your help.

Regards

Henri

____________________________________________________________________

To do this I fill in for


    SALESDOCUMENTIN               = P_new “new order number
    ORDER_HEADER_IN               = order_header_in1
    ORDER_HEADER_INX              = order_header_intX
*   SENDER                        =
*   BINARY_RELATIONSHIPTYPE       =
*   INT_NUMBER_ASSIGNMENT         =
*   BEHAVE_WHEN_ERROR             =
*   LOGIC_SWITCH                  =
*   TESTRUN                       =
*   CONVERT                       = ' '
  IMPORTING
    SALESDOCUMENT                 = SALESDOCUMENT1
  TABLES
      RETURN                               = RETURN1
      ORDER_ITEMS_IN                = ORDER_ITEMS_IN1
*   ORDER_ITEMS_INX               =
    ORDER_PARTNERS               = order_partners1
    ORDER_SCHEDULES_IN        = ORDER_SCHEDULES_IN1
*   ORDER_SCHEDU

And in ORDER_HEADER_I


  order_header_in1-doc_type           = 'TA'.
  order_header_in1-sales_org          =  vbak-vkorg.
  order_header_in1-distr_chan         =  vbak-vtweg.
  order_header_in1-division             =  vbak-spart.
  order_header_in1-REQ_DATE_H   =  sy-datum + 20.
  order_header_in1-PURCH_NO_C  = 'HBR_Commande'.
  order_header_in1-REF_1             = 'E-DISTR'.
  order_header_in1-SD_DOC_CAT  = 'C'.
  order_header_in1-REF_DOC        =  P_quote. “Number of quotation
  order_header_in1-REFDOC_CAT  = 'B'.
  order_header_in1-INCOTERMS1   = vbkd-inco1.
  order_header_in1-INCOTERMS2   = vbkd-inco2.
  order_header_in1-PMNTTRMS      = vbkd-zterm.
  order_header_in1-SALES_OFF     = vbak-vkbur.

ORDER_HEADER_INX is just filled in with order_header_intX-REF_DOC = 'U'.

In return I get

233 |SALES_HEADER_IN has been processed successfully

233 |SALES_ITEM_IN has been processed successfully

233 |SALES_SCHEDULES_IN has been processed successfully

311 |Standard Order 5000027 has been saved

Hi,

Object: Create a sales order and link it with a quotation.

I have created first a quotation VA21 for a customer and a material.

I am using function BAPI_SALESORDER_CREATEFROMDAT2 in a Sap 5.0 to create a TA order in a program with a BAPI_TRANSACTION_COMMIT.

The creation is well working

but I do not obtain a link between the new orders and the quotation

.

What I have forgotten?

Is it well this function to use to create an order and link with a quotation?

Thank for your help.

Regards

Henri

____________________________________________________________________

To do this I fill in for


    SALESDOCUMENTIN               = P_new “new order number
    ORDER_HEADER_IN               = order_header_in1
    ORDER_HEADER_INX              = order_header_intX
*   SENDER                        =
*   BINARY_RELATIONSHIPTYPE       =
*   INT_NUMBER_ASSIGNMENT         =
*   BEHAVE_WHEN_ERROR             =
*   LOGIC_SWITCH                  =
*   TESTRUN                       =
*   CONVERT                       = ' '
  IMPORTING
    SALESDOCUMENT                 = SALESDOCUMENT1
  TABLES
      RETURN                               = RETURN1
      ORDER_ITEMS_IN                = ORDER_ITEMS_IN1
*   ORDER_ITEMS_INX               =
    ORDER_PARTNERS               = order_partners1
    ORDER_SCHEDULES_IN        = ORDER_SCHEDULES_IN1
*   ORDER_SCHEDU

And in ORDER_HEADER_I


  order_header_in1-doc_type           = 'TA'.
  order_header_in1-sales_org          =  vbak-vkorg.
  order_header_in1-distr_chan         =  vbak-vtweg.
  order_header_in1-division             =  vbak-spart.
  order_header_in1-REQ_DATE_H   =  sy-datum + 20.
  order_header_in1-PURCH_NO_C  = 'HBR_Commande'.
  order_header_in1-REF_1             = 'E-DISTR'.
  order_header_in1-SD_DOC_CAT  = 'C'.
  order_header_in1-REF_DOC        =  P_quote. “Number of quotation
  order_header_in1-REFDOC_CAT  = 'B'.
  order_header_in1-INCOTERMS1   = vbkd-inco1.
  order_header_in1-INCOTERMS2   = vbkd-inco2.
  order_header_in1-PMNTTRMS      = vbkd-zterm.
  order_header_in1-SALES_OFF     = vbak-vkbur.

ORDER_HEADER_INX is just filled in with order_header_intX-REF_DOC = 'U'.

In return I get

233 |SALES_HEADER_IN has been processed successfully

233 |SALES_ITEM_IN has been processed successfully

233 |SALES_SCHEDULES_IN has been processed successfully

311 |Standard Order 5000027 has been saved

2 REPLIES 2
Read only

Former Member
0 Likes
537

Hi All,

I have found wy it was nor working. When you want to create a sales order linked to a quotation (VA21 - 22 - 23), you need to fill in the fill related to the quotation in

the header and the item lines.



*&---------------------------------------------------------------------*
*& Report  Z_ORDER_CREATE_SPA_HBR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  Z_ORDER_CREATE_SPA_HBR.


*----------------------------------------------------------------------*
* Parameters
*----------------------------------------------------------------------*

Parameters: P_order like vbak-vbeln.
Parameters: P_quote like BAPIVBELN-VBELN.
Parameters: P_new   like BAPIVBELN-VBELN.
*
* We need to create a new order number P_New from an existing order P_order
* linked to an existing quotation P_quote
*----------------------------------------------------------------------*
* Tables
*----------------------------------------------------------------------*
Tables: VBAK,
        VBAP,
        VBKD. "Sales Document: Business Data

*----------------------------------------------------------------------*
* Data and internal table
*----------------------------------------------------------------------*

DATA:  order_header_in1       LIKE BAPISDHD1.
DATA:  order_header_intX      like BAPISDHD1X.
DATA : SALESDOCUMENT1         TYPE BAPIVBELN-VBELN.
DATA : RETURN2                TYPE BAPIRET2.
DATA:  order_partners1        type BAPIPARNR  occurs 0 with header line.
DATA:  ORDER_ITEMS_IN1        type BAPISDITM  occurs 0 with header line.
DATA:  ORDER_ITEMS_IN1X       type BAPISDITMX occurs 0 with header line.
DATA:  ORDER_SCHEDULES_IN1    type BAPISCHDL  occurs 0 with header line.
DATA:  ORDER_SCHEDULES_IN1X   type BAPISCHDLX occurs 0 with header line.
DATA : RETURN1                TYPE BAPIRET2   OCCURS 0 with header line.

Start-of-selection.

  Select single * from vbak where vbeln = p_quote.

  if not sy-subrc = 0.
    write:/ text-e02.
    exit.
  endif.

  Select single * from vbak where vbeln = p_order.

  if not sy-subrc = 0.
    write:/ text-e01.
    exit.
  endif.

  Select single * from vbkd where vbeln = p_order.

  if not sy-subrc = 0.
    write:/ text-e03.
    exit.
  endif.

  order_header_in1-doc_type   = 'TA'.
  order_header_in1-sales_org  =  vbak-vkorg.
  order_header_in1-distr_chan =  vbak-vtweg.
  order_header_in1-division   =  vbak-spart.
  order_header_in1-REQ_DATE_H =  sy-datum + 20.
  order_header_in1-PURCH_NO_C = 'HBR_Commande'.
  order_header_in1-REF_1      = 'E-DISTR'.
  order_header_in1-SD_DOC_CAT = 'C'.
  order_header_in1-REF_DOC    =  P_quote.
  order_header_in1-REF_DOC_L  =  P_quote.
  order_header_in1-REFDOC_CAT = 'B'.
  order_header_in1-INCOTERMS1 = vbkd-inco1.
  order_header_in1-INCOTERMS2 = vbkd-inco2.
  order_header_in1-PMNTTRMS   = vbkd-zterm.
  order_header_in1-SALES_OFF  = vbak-vkbur.

  select * from vbap where vbeln = vbak-vbeln.
    clear ORDER_ITEMS_IN1.
    ORDER_ITEMS_IN1-PO_ITM_NO        = vbap-posnr.
    ORDER_ITEMS_IN1-material         = vbap-MATNR.
    ORDER_ITEMS_IN1-TARGET_QU        = vbap-zieme.
    ORDER_ITEMS_IN1-REF_DOC          = P_quote.
    ORDER_ITEMS_IN1-REF_DOC_IT       = vbap-posnr.
    ORDER_ITEMS_IN1-REF_DOC_CA       = 'B'.
    append ORDER_ITEMS_IN1.
*
    clear ORDER_SCHEDULES_IN1.
    ORDER_SCHEDULES_IN1-ITM_NUMBER   = vbap-posnr.
    ORDER_SCHEDULES_IN1-REQ_DATE     = sy-datum + 20.
    ORDER_SCHEDULES_IN1-REQ_QTY      = vbap-KWMENG.
    append ORDER_SCHEDULES_IN1.
*
  endselect.

  order_partners1-PARTN_ROLE         = 'WE'.
  order_partners1-PARTN_NUMB         = vbak-KUNNR.
  APPEND order_partners1.

  order_partners1-PARTN_ROLE         = 'AG'.
  APPEND order_partners1.

 
  Perform call_function.

*&---------------------------------------------------------------------*
*& Form call_function
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form call_function .


  CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
    EXPORTING
    SALESDOCUMENTIN               = P_new
    ORDER_HEADER_IN               = order_header_in1
*   ORDER_HEADER_INX              = order_header_intX
*   SENDER                        =
*   BINARY_RELATIONSHIPTYPE       =
*   INT_NUMBER_ASSIGNMENT         =
*   BEHAVE_WHEN_ERROR             =
*   LOGIC_SWITCH                  =
*   TESTRUN                       =
*   CONVERT                       = ' '
  IMPORTING
    SALESDOCUMENT                 = SALESDOCUMENT1
  TABLES
    RETURN                        = RETURN1
    ORDER_ITEMS_IN                = ORDER_ITEMS_IN1
*   ORDER_ITEMS_INX               = ORDER_ITEMS_IN1X
    ORDER_PARTNERS                = order_partners1
    ORDER_SCHEDULES_IN            = ORDER_SCHEDULES_IN1
*   ORDER_SCHEDULES_INX           = ORDER_SCHEDULES_IN1X
*   ORDER_CONDITIONS_IN           =
*   ORDER_CONDITIONS_INX          =
*   ORDER_CFGS_REF                =
*   ORDER_CFGS_INST               =
*   ORDER_CFGS_PART_OF            =
*   ORDER_CFGS_VALUE              =
*   ORDER_CFGS_BLOB               =
*   ORDER_CFGS_VK                 =
*   ORDER_CFGS_REFINST            =
*   ORDER_CCARD                   =
*   ORDER_TEXT                    =
*   ORDER_KEYS                    =
*   EXTENSIONIN                   =
*   PARTNERADDRESSES              =
            .

*

  IF NOT SALESDOCUMENT1 IS INITIAL.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT   = 'X'
      IMPORTING
        RETURN = RETURN2.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ENDIF.
endform.                    "call_function

<b></b>

Read only

0 Likes
537

Thanks!! i can confirm this works.