Application Development 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: 

bapi_salesorder_createfromdat2 extensionin not updating

rakesh_saragadi
Explorer
0 Kudos

Hi gurus,

i have created a 'z' functional module to  create  sales order. as per my requirement we have made a Z FM in that i am using 'bapi_salesorder_createfromdat2  '  Bapi for creating sales order . sales order is creating properly with out any errors.

but now the problem is  we have an appended structure in VBAK table around 20 fields  so created designed these  fields in va01 ADDITIONAL DATA B tab in the header level. now the problem is when i run this FM by passing all data sales order number is generated properly but the fields in additional data B tab are not updated. but while debugging all the values in the EXTENSIONIN fields are available . can any one plz suggest how its possible.

here is the coding

*"*"Local Interface:

*"  IMPORTING

*"     VALUE(IM_HEADER) TYPE  ZORD_HD

*"     VALUE(IM_PAYMENT) TYPE  ZADD_PAYDET

*"     VALUE(IM_SHIPMENT) TYPE  ZADD_SHIPDET

*"     VALUE(IM_TEXT) TYPE  ZADD_TEXT

*"  EXPORTING

*"     VALUE(SAL_DOC_NUM) TYPE  VBRK-VBELN

*"  TABLES

*"      IM_ITEM STRUCTURE  ZORD_ITEM OPTIONAL

*"      ORD_EXT STRUCTURE  ZBAPE_VBAK OPTIONAL

*"----------------------------------------------------------------------

   DATA : CR_HEADER TYPE BAPISDHD1,

          CR_ITEM TYPE STANDARD TABLE OF BAPISDITM WITH HEADER LINE,

          CR_SCHD TYPE STANDARD TABLE OF BAPISCHDL WITH HEADER LINE,

          CR_SCHDX TYPE STANDARD TABLE OF BAPISCHDLX WITH HEADER LINE,

          CR_PAY_SHIP  TYPE  STANDARD TABLE OF BAPIPAREX WITH HEADER LINE ,

*         ORD_EXT TYPE standard table of ZBAPE_VBAK with header line,

          CR_PART TYPE STANDARD TABLE OF BAPIPARNR WITH HEADER LINE,

          CR_RETURN TYPE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE ,

          COMMENT TYPE STRING.

   TYPES : BEGIN OF TY_ORD,

             ZZOCT_ORDNO   TYPE ZBAPE_VBAK-ZZOCT_ORDNO ,

             ZZOR_DAT      TYPE ZBAPE_VBAK-ZZOR_DAT    ,

             ZZPAY_MODE    TYPE ZBAPE_VBAK-ZZPAY_MODE ,

             ZZZPAY_DAT    TYPE ZBAPE_VBAK-ZZZPAY_DAT ,

             ZZSHIP_CHARG  TYPE ZBAPE_VBAK-ZZSHIP_CHARG,

             ZZCOUP_NUM    TYPE ZBAPE_VBAK-ZZCOUP_NUM  ,

             ZZCOUP_AMT    TYPE ZBAPE_VBAK-ZZCOUP_AMT  ,

             ZZDISC_NUM    TYPE ZBAPE_VBAK-ZZDISC_NUM  ,

             ZZDISC_AMT    TYPE ZBAPE_VBAK-ZZDISC_AMT  ,

             ZZZCUST_EID   TYPE ZBAPE_VBAK-ZZZCUST_EID ,

             ZZCUST_NAME   TYPE ZBAPE_VBAK-ZZCUST_NAME ,

           END OF TY_ORD.

DATA: IRD_EXT TYPE STANDARD TABLE OF TY_ORD WITH HEADER LINE.

***************************HEADER DETAILS*************************************

   CR_HEADER-DOC_TYPE    =   IM_HEADER-DOC_TYPE ."SO_TYPE.

   CR_HEADER-SALES_ORG   =   IM_HEADER-SALES_ORG."SO_ORGN.

   CR_HEADER-DISTR_CHAN  =   IM_HEADER-DISTR_CHAN."SO_DIST.

   CR_HEADER-DIVISION    =   IM_HEADER-DIVISION. "SO_DIVI.

   CR_HEADER-PURCH_NO_C  =   IM_HEADER-PO_NUMBER.

   CR_HEADER-PURCH_DATE  =   IM_HEADER-PO_DATE.

   CR_HEADER-REQ_DATE_H  =   IM_HEADER-REQ_DEL_DATE.

***************************ITEM DETAILS*************************************

   LOOP AT IM_ITEM.

     CR_ITEM-ITM_NUMBER    =  IM_ITEM-ITEM_NUMBER.

     CR_ITEM-MATERIAL      =  IM_ITEM-MATERIAL.

     CR_ITEM-TARGET_QTY    =  IM_ITEM-TARGET_QTY.

     APPEND CR_ITEM.

     CR_SCHD-ITM_NUMBER =  IM_ITEM-ITEM_NUMBER.

     CR_SCHD-SCHED_LINE =  0001.

     CR_SCHD-REQ_QTY    =  CR_ITEM-TARGET_QTY .

     APPEND CR_SCHD.

     CR_SCHDX-ITM_NUMBER =  IM_ITEM-ITEM_NUMBER.

     CR_SCHDX-SCHED_LINE =  0001.

     CR_SCHDX-REQ_QTY    =  'X'.

     CR_SCHDX-UPDATEFLAG =  'I'.

     APPEND CR_SCHDX.

   ENDLOOP.

***********************PAYMENT  DETAILS *******************

clear : ord_ext.

   CR_PAY_SHIP-STRUCTURE     = 'ZBAPE_VBAK'.

   ORD_EXT-ZZOCT_ORDNO   =  IM_HEADER-PO_NUMBER.

   ORD_EXT-ZZOR_DAT      =  IM_HEADER-PO_DATE.

   ORD_EXT-ZZPAY_MODE    =  IM_PAYMENT-ZZPAY_MODE.

   ORD_EXT-ZZZPAY_DAT    =  IM_PAYMENT-ZZZPAY_DAT.

   ORD_EXT-ZZSHIP_CHARG  =  IM_PAYMENT-ZZSHIP_CHARG.

   ORD_EXT-ZZCOUP_NUM    =  IM_PAYMENT-ZZCOUP_NUM.

   ORD_EXT-ZZCOUP_AMT    =  IM_PAYMENT-ZZCOUP_AMT.

   ORD_EXT-ZZDISC_NUM    =  IM_PAYMENT-ZZDISC_NUM.

   ORD_EXT-ZZDISC_AMT    =  IM_PAYMENT-ZZDISC_AMT.

*

*************************SHIPMENT DETAILS *************

   ORD_EXT-ZZZCUST_EID    =  IM_SHIPMENT-ZZZCUST_EID.

   ORD_EXT-ZZCUST_NAME    =  IM_SHIPMENT-ZZCUST_NAME.

   ORD_EXT-ZZADDR1       =  IM_SHIPMENT-ZZADDR1 .

   ORD_EXT-ZZADDR2       =  IM_SHIPMENT-ZZADDR2 .

   ORD_EXT-ZZADDR3       =  IM_SHIPMENT-ZZADDR3 .

   ORD_EXT-ZZADDR4       =  IM_SHIPMENT-ZZADDR4 .

   ORD_EXT-ZZPINCODE     =  IM_SHIPMENT-ZZCITY .

   ORD_EXT-ZZCITY        =  IM_SHIPMENT-ZZPHONE_NUM .

   ORD_EXT-ZZDISTRICT    =  IM_SHIPMENT-ZZPINCODE .

   ORD_EXT-ZZPHONE_NUM   =  IM_SHIPMENT-ZZDISTRICT .

   ORD_EXT-ZZMOB_NUM     =  IM_SHIPMENT-ZZMOB_NUM .

*  APPEND ORD_EXT.

*  APPEND ORD_EXT1.

   CR_PAY_SHIP-VALUEPART1    =  ORD_EXT.

   CR_PAY_SHIP-VALUEPART2    =  ORD_EXT+240(230).

   append CR_PAY_SHIP.

**************** pARTNER dETAILS  **********************

   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

     EXPORTING

       INPUT  = IM_HEADER-CUST_NUM

     IMPORTING

       OUTPUT = CR_PART-PARTN_NUMB.

   CR_PART-PARTN_ROLE      =  'AG'.

   APPEND CR_PART.

   CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' " TEST RUN PROGRAM

     EXPORTING

       ORDER_HEADER_IN       = CR_HEADER

       INT_NUMBER_ASSIGNMENT = 'X'

       CONVERT               = 'X'

       TESTRUN               = 'X'

     IMPORTING

       SALESDOCUMENT         = SAL_DOC_NUM

     TABLES

       RETURN                = CR_RETURN

       ORDER_ITEMS_IN        = CR_ITEM

       ORDER_PARTNERS        = CR_PART

       ORDER_SCHEDULES_IN    = CR_SCHD

       ORDER_SCHEDULES_INX   = CR_SCHDX

*     ORDER_TEXT            =    CR_TEXT

       EXTENSIONIN           = CR_PAY_SHIP.

  READ TABLE CR_RETURN INTO CR_RETURN  WITH KEY  TYPE = 'S'.

   IF SY-SUBRC EQ 0.

*  IF CR_RETURN[] IS INITIAL.  " IF NO ERROR OCUURS THEN ONLY CREATE ORDER

     CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'

       EXPORTING

         ORDER_HEADER_IN       = CR_HEADER

         INT_NUMBER_ASSIGNMENT = 'X'

*        CONVERT               = 'X'

       IMPORTING

         SALESDOCUMENT         = SAL_DOC_NUM

       TABLES

         RETURN                = CR_RETURN

         ORDER_ITEMS_IN        = CR_ITEM

         ORDER_PARTNERS        = CR_PART

         ORDER_SCHEDULES_IN    = CR_SCHD

         ORDER_SCHEDULES_INX   = CR_SCHDX

*       ORDER_TEXT            =    CR_TEXT

         EXTENSIONIN           = CR_PAY_SHIP.

   ELSE.

     LOOP AT CR_RETURN WHERE TYPE = 'E'.

       CONCATENATE COMMENT ' : ' CR_RETURN-MESSAGE INTO COMMENT RESPECTING BLANKS.

     ENDLOOP.

   ENDIF.

       CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

         EXPORTING

           WAIT = 'X'.

ENDFUNCTION.

7 REPLIES 7

Former Member
0 Kudos

Please check the BAPI documentation..It clearly specifies what needs to be done..

5. Adjust the following structures for customer enhancements to table VBAK:

a) VBAKKOZ

b) VBAKKOZX

c) BAPE_VBAK

d) BAPE_VBAKX

Fill the extension structures accordingly..Hope this will resolve your issue..

0 Kudos

Extend below structures this will work.

BAPE_VBAK

BAPE_VBAKX

VBAKKOM

VBAKKOMX

-Venkat

rakesh_saragadi
Explorer
0 Kudos

Dear Alexander/Venkat

i Have already maintained the structures

0 Kudos

Hi Rakesh,

Few days back I have faced the same problem. Even after extending the structures given in standard documentation, I failed to achieve the desired output. In debugging I found these structures needs to be extended VBAKKOM, VBAKKOMX rather than VBAKKOZ, VBAKKOZX. Once I did this everything worked fine.

Please confirm the structures you have extended.

-Venkat

rakesh_saragadi
Explorer
0 Kudos

Dear Venkat,

I have already updated these structures

BAPE_VBAK

BAPE_VBAKX

VBAKKOM

VBAKKOMX

VBAKKOZ

VBAKKOZX

when i call this rfc from external system it is i.e( JAVA 3rd party)   then these fields are updating

but when i try to check this in SAP then it is not Updating .

in the third party  For temporary purpose they are calling 'BAPI_SALESORDER_CREATEFROMDAT2 '

this BAPI . And now the requirement is i need  a Z bapi  so i made the program as the coding is shown above

but when i pass the details it is not updating .

0 Kudos

Check my code for your reference, I know it's different BAPI but for both Create/Update it should work same.

IF p_shipping_ref IS NOT INITIAL OR

      p_carrier_name IS NOT INITIAL OR

      p_tracking_num IS NOT INITIAL.

*--populate Credit Memo Request number

     lv_credit_memo = p_credit_memo.

*--Order check list for updating Credit Memo

     lwa_order_check_list-updateflag = 'U'. "U -> Update

     IF p_shipping_ref IS NOT INITIAL.

       lwa_order_header-purch_no_c = p_shipping_ref.

       lwa_order_check_list-purch_no_c = 'X'.

     ELSE.

       lwa_bape_vbak-vbeln     = p_credit_memo. "Credit Memo

       IF p_carrier_name IS NOT INITIAL.

         lwa_bape_vbak-zzcarr = p_carrier_name. "Carrier Name

       ENDIF.

       IF p_tracking_num IS NOT INITIAL.

         lwa_bape_vbak-zzcustref = p_tracking_num. "Tracking Number

       ENDIF.

       lwa_extension-structure = 'BAPE_VBAK'. "Structure Name

       lwa_extension+30        = lwa_bape_vbak.

       APPEND lwa_extension TO lt_extension.

*--update flags

       lwa_bape_vbakx-vbeln      = p_credit_memo.

       IF p_carrier_name IS NOT INITIAL.

         lwa_bape_vbakx-zzcarr     = 'X'.

       ENDIF.

       IF p_tracking_num IS NOT INITIAL.

         lwa_bape_vbakx-zzcustref  = 'X'.

       ENDIF.

       lwa_extension-structure   = 'BAPE_VBAKX'. "Structure Name

       lwa_extension+30          = lwa_bape_vbakx.

       APPEND lwa_extension TO lt_extension.

     ENDIF.

*--BAPI to update Order

     CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

       EXPORTING

         salesdocument    = lv_credit_memo

         order_header_in  = lwa_order_header

         order_header_inx = lwa_order_check_list

       TABLES

         return           = lt_return

         extensionin      = lt_extension.

You are not updating structure 'BAPE_VBAKX', please pass 'X' value for all the custom fields which you would like to update.

This should work for sure.

-Venkat

rakesh_saragadi
Explorer
0 Kudos

Dear gurus,

Thanks for u r help ,

But i  Have solved the issue by my self

I have declared a variable of the type  valuepart1 in the extensionin

and passed the values. Then the fields updated.

thanks and regards.

Rakesh S