cancel
Showing results for 
Search instead for 
Did you mean: 

Help with BAPI_SALESORDER_CHANGE

LucianoBentiveg
Active Contributor
0 Kudos

Hi, i need to change partner´s address... I´m trying using BAPI_SALESORDER_CHANGE, but i can´t do that works.

Somebody with an example to do that?

Accepted Solutions (1)

Accepted Solutions (1)

former_member188685
Active Contributor
0 Kudos

Check this one also...

this is also helpful to you..


REPORT  Z_BAPI_SO_CHANGE
        NO STANDARD PAGE HEADING
        LINE-SIZE  132
        LINE-COUNT 65(0)
        MESSAGE-ID ZZ.

TABLES: VBAP.

DATA:
V_FILEIN(90)   TYPE C,
V_RECIN        TYPE I,
V_RECVBAP      TYPE I,
V_RECORDER     TYPE I,
V_VBELN        LIKE VBAP-VBELN,
ORDERHEADERINX LIKE BAPISDH1X.

DATA: BEGIN OF I_ORDERS OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
BRGEW(18) TYPE C,
VOLUM(18) TYPE C,
END OF I_ORDERS.

DATA: BEGIN OF I_OUTPUT OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
* GEWEI LIKE VBAP-GEWEI,
BRGEW LIKE VBAP-BRGEW,
VOLUM LIKE VBAP-VOLUM,
CKWGT TYPE C,
CKVOL TYPE C,
END OF I_OUTPUT.

DATA: BEGIN OF ORDERITEMIN OCCURS 0.
        INCLUDE STRUCTURE BAPISDITM.
DATA: END OF ORDERITEMIN.

DATA: BEGIN OF ORDERITEMINX OCCURS 0.
        INCLUDE STRUCTURE BAPISDITMX.
DATA: END OF ORDERITEMINX.

DATA: BEGIN OF RETURN OCCURS 0.
        INCLUDE STRUCTURE BAPIRET2.
DATA: END OF RETURN.

DATA: BEGIN OF BAPIRETURN OCCURS 0.
        INCLUDE STRUCTURE BAPIRET2.
DATA: END OF BAPIRETURN.

PARAMETERS:
P_PATH(45) TYPE C DEFAULT '/usr/users/ftpsapom/' LOWER CASE,
P_FNAME(32) TYPE C DEFAULT '/sweetjo.txt' LOWER CASE.

START-OF-SELECTION.
* CONCATENATE PATH AND FILE NAME INTO ONE VARIABLE
  CONCATENATE P_PATH P_FNAME INTO V_FILEIN.
* OPEN DATASET
  IF V_FILEIN IS INITIAL.
    MESSAGE E002 WITH 'FILE' V_FILEIN 'DOES NOT CONTAIN ANY DATA!'.
*   & & & &
  ELSE.
    OPEN DATASET V_FILEIN
         FOR INPUT
         IN TEXT MODE.
    IF SY-SUBRC = 0.
* READ DATASET
      DO.
        READ DATASET V_FILEIN INTO I_ORDERS.
        IF SY-SUBRC = 0.
          APPEND I_ORDERS.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
* CLOSE DATASET
      CLOSE DATASET V_FILEIN.
      IF SY-SUBRC <> 0.
        MESSAGE E002 WITH 'ERROR - CLOSING' V_FILEIN.
*   & & & &
      ENDIF.
    ELSE.
      MESSAGE E002 WITH 'ERROR - COULD NOT OPEN' V_FILEIN.
*   & & & &
    ENDIF.
  ENDIF.
* SORT AND REMOVE DUPLICATES FROM I_ORDERS
  SORT I_ORDERS BY VBELN POSNR.
  DELETE ADJACENT DUPLICATES FROM I_ORDERS.
* POPULATE I_OUTPUT
  LOOP AT I_ORDERS.
    SHIFT I_ORDERS-POSNR LEFT  DELETING LEADING SPACE.
    CONCATENATE '0' I_ORDERS-POSNR INTO I_ORDERS-POSNR.
    SELECT SINGLE BRGEW VOLUM
    FROM VBAP
    INTO (VBAP-BRGEW, VBAP-VOLUM)
    WHERE VBELN = I_ORDERS-VBELN
      AND POSNR = I_ORDERS-POSNR.
    IF SY-SUBRC = 0.
      IF VBAP-BRGEW = 0.
        I_OUTPUT-CKWGT = 'X'.
      ENDIF.
      IF VBAP-VOLUM = 0.
        I_OUTPUT-CKVOL = 'X'.
      ENDIF.
      I_OUTPUT-VBELN = I_ORDERS-VBELN.
      I_OUTPUT-POSNR = I_ORDERS-POSNR.
*     I_OUTPUT-GEWEI = 'ST'.
      I_OUTPUT-BRGEW = I_ORDERS-BRGEW.
      I_OUTPUT-VOLUM = I_ORDERS-VOLUM.
      APPEND I_OUTPUT.
      CLEAR: I_OUTPUT.
    ENDIF.
    V_RECIN = V_RECIN + 1.
  ENDLOOP.
* POPULATE BAPI DATA AND RUN BAPI
  CLEAR: ORDERHEADERINX, ORDERITEMIN, ORDERITEMINX,
         RETURN, BAPIRETURN.
  REFRESH: ORDERITEMIN, ORDERITEMINX, RETURN, BAPIRETURN.
  ORDERHEADERINX-UPDATEFLAG = 'U'.
  LOOP AT I_OUTPUT WHERE CKWGT = 'X' OR CKVOL = 'X'.

    V_RECVBAP = V_RECVBAP + 1.

    IF I_OUTPUT-VBELN <> V_VBELN AND SY-TABIX <> 1.
      V_RECORDER = V_RECORDER + 1.
      CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
           EXPORTING
                SALESDOCUMENT    = V_VBELN
                ORDER_HEADER_INX = ORDERHEADERINX
           TABLES
                RETURN           = RETURN
                ORDER_ITEM_IN    = ORDERITEMIN
                ORDER_ITEM_INX   = ORDERITEMINX.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
           EXPORTING
                WAIT   = 'X'
           IMPORTING
                RETURN = BAPIRETURN.
* WRITE OUT RETURN
      LOOP AT RETURN.
        WRITE: / RETURN.
      ENDLOOP.
      WRITE: / BAPIRETURN.
      SKIP.
      CLEAR: ORDERITEMIN, ORDERITEMINX,
             RETURN, BAPIRETURN.
      REFRESH: ORDERITEMIN, ORDERITEMINX, RETURN, BAPIRETURN.
    ENDIF.

    ORDERITEMIN-ITM_NUMBER = I_OUTPUT-POSNR.
*   ORDERITEMIN-UNTOF_WGHT = I_OUTPUT-GEWEI.
    IF NOT I_OUTPUT-CKWGT IS INITIAL.
      ORDERITEMIN-GROSS_WGHT = I_OUTPUT-BRGEW.
      ORDERITEMINX-GROSS_WGHT = 'X'.
    ENDIF.
    IF NOT I_OUTPUT-CKVOL IS INITIAL.
      ORDERITEMIN-VOLUME = I_OUTPUT-VOLUM.
      ORDERITEMINX-VOLUME = 'X'.
    ENDIF.
    APPEND ORDERITEMIN.
    ORDERITEMINX-ITM_NUMBER = I_OUTPUT-POSNR.
*   ORDERITEMINX-UNTOF_WGHT = 'X'.
    ORDERITEMINX-UPDATEFLAG = 'U'.
    APPEND ORDERITEMINX.

    V_VBELN = I_OUTPUT-VBELN.

  ENDLOOP.
* RUN BAPI ON LAST ORDER
  IF NOT ORDERITEMIN IS INITIAL.
    V_RECORDER = V_RECORDER + 1.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
         EXPORTING
              SALESDOCUMENT    = V_VBELN
              ORDER_HEADER_INX = ORDERHEADERINX
         TABLES
              RETURN           = RETURN
              ORDER_ITEM_IN    = ORDERITEMIN
              ORDER_ITEM_INX   = ORDERITEMINX.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
         EXPORTING
              WAIT   = 'X'
         IMPORTING
              RETURN = BAPIRETURN.
* WRITE OUT RETURN
    LOOP AT RETURN.
      WRITE: / RETURN.
    ENDLOOP.
    WRITE: / BAPIRETURN.
    SKIP.

  ENDIF.
* WRITE OUT RECORD COUNT FROM FILE
  WRITE: / 'RECORD COUNT FROM FILE ', V_RECIN.
  SKIP.
* WRITE OUT RECORD COUNT FROM FILE
  WRITE: / 'RECORD COUNT OF LINES TO CHANGE ', V_RECVBAP.
  SKIP.
* WRITE OUT RECORD COUNT FROM FILE
  WRITE: / 'RECORD COUNT OF ORDERS TO CHANGE ', V_RECORDER.
  SKIP.

* TOP OF PAGE
TOP-OF-PAGE.
  WRITE:/1(5)    TEXT-H01,    6(8) SY-DATUM MM/DD/YY,
        100(8)   TEXT-H02,  126(8) SY-PAGNO.
  WRITE:/1(5)    TEXT-H03,    6(8) SY-UZEIT USING EDIT MASK '__:__:__',
        20(77)   TEXT-H04,
       100(8)    TEXT-H05, 108(25) SY-REPID.
  WRITE:/1(6)    TEXT-H06,   8(12) SY-UNAME,
        20(4)    TEXT-H07,  25(32) SY-HOST,
       100(13)   TEXT-H08,  121(8) SY-SYSID,
       129 '/',             130(3) SY-MANDT.
  ULINE.
  SKIP.

Regards

vijay

Answers (1)

Answers (1)

former_member188685
Active Contributor
0 Kudos

check this BAPI..


REPORT  ZTEST_BAPI                              .
Data: salesd like BAPIVBELN-VBELN.
data: it_BAPISDH1 type BAPISDH1.
data: it_BAPISDH1X type BAPISDH1X.
data: it_BAPIPARNR type BAPIPARNR occurs 0 with header line.
data: it_BAPIRET2 type BAPIRET2 occurs 0 with header line.
data: it_BAPIPARNRC type BAPIPARNRC occurs 0 with header line.
data: it_BAPISDITMX type BAPISDITMX occurs 0 with header line.
data: it_BAPISDITM type standard table of BAPISDITM with header line.
constants: c_bp(2) type c value 'BP'.

it_BAPISDH1X-UPDATEFLAG = 'U'.
it_BAPISDH1X-SALES_ORG = 'X'.
it_BAPISDH1X-DISTR_CHAN = 'X'.
it_BAPISDH1X-DIVISION = 'X'.
it_BAPISDH1X-PURCH_NO_C = 'X'.
it_BAPISDH1X-CUST_GROUP = 'X'.

it_BAPISDH1-SALES_ORG = '1000'.
it_BAPISDH1-DISTR_CHAN = '01'.
it_BAPISDH1-DIVISION = '00'.
it_BAPISDH1-PURCH_NO_C = 'Test1'.

***it_BAPIPARNR-PARTN_ROLE = 'RE'.
***it_BAPIPARNR-PARTN_NUMB = '0000000171'.
***it_BAPIPARNR-ITM_NUMBER = '00000'.
***append it_BAPIPARNR.
***it_BAPIPARNR-PARTN_ROLE = 'RE'.
***it_BAPIPARNR-PARTN_NUMB = '0000000179'.
***it_BAPIPARNR-ITM_NUMBER = '000000'.
***append it_BAPIPARNR.

it_BAPIPARNRC-DOCUMENT = '000000375'.
it_BAPIPARNRC-ITM_NUMBER = '000000'.
it_BAPIPARNRC-UPDATEFLAG = 'U'.
it_BAPIPARNRC-PARTN_ROLE = 'WE'.
it_BAPIPARNRC-P_NUMB_OLD = '0000000171'.
it_BAPIPARNRC-P_NUMB_NEW = '0000000179'.
***it_BAPIPARNRC-ADDRESS = '26324'.
it_BAPIPARNRC-ADDR_LINK = '0000000003'.
***it_BAPIPARNRC-REFOBJTYPE = 'BUS2032'.
***it_BAPIPARNRC-REFOBJKEY = '000000375'.
append it_BAPIPARNRC.

data PARTNERADDRESSES like BAPIADDR1 occurs 0 with header line.

PARTNERADDRESSES-ADDR_NO = '0000000003'.
PARTNERADDRESSES-NAME = 'Test Cust'.
PARTNERADDRESSES-STREET = '222nd AVE'.
PARTNERADDRESSES-NAME_2 = 'NEW Bldg A2'.
PARTNERADDRESSES-CITY = 'MILPITAS'.
***PARTNERADDRESSES-REGION = 'CA'.
PARTNERADDRESSES-POSTL_COD1 = '950351'.
PARTNERADDRESSES-COUNTRY = 'IN'.
PARTNERADDRESSES-LANGU = 'E'.

APPEND PARTNERADDRESSES. CLEAR PARTNERADDRESSES.


*it_BAPISDITMX-ITM_NUMBER = '00010'.
*it_BAPISDITMX-UPDATEFLAG = 'U'.
*it_BAPISDITMX-MATERIAL = 'X'.
*it_BAPISDITMX-CUST_GROUP = 'X'.
*append it_BAPISDITMX.

*it_BAPISDITM-ITM_NUMBER = '00010'.
*it_BAPISDITM-MATERIAL = '946'.
*append it_BAPISDITM.

break-point.

salesd = '0000000375'.

call function 'BAPI_SALESORDER_CHANGE'
  exporting
    salesdocument               = salesd
   ORDER_HEADER_IN             = it_BAPISDH1
    order_header_inx            = it_BAPISDH1X
*   SIMULATION                  =
*   BEHAVE_WHEN_ERROR           = ' '
*   INT_NUMBER_ASSIGNMENT       = ' '
*   LOGIC_SWITCH                =
  tables
*   ORDER_ITEM_IN               = it_BAPISDITM
*   ORDER_ITEM_INX              = it_BAPISDITMX
*   PARTNERS                    = it_BAPIPARNR
    return                      = it_BAPIRET2
   PARTNERCHANGES              = it_BAPIPARNRC
   PARTNERADDRESSES            = PARTNERADDRESSES
*   ORDER_CFGS_REF              =
*   ORDER_CFGS_INST             =
*   ORDER_CFGS_PART_OF          =
*   ORDER_CFGS_VALUE            =
*   ORDER_CFGS_BLOB             =
*   ORDER_CFGS_VK               =
*   ORDER_CFGS_REFINST          =
*   SCHEDULE_LINES              =
*   SCHEDULE_LINESX             =
*   ORDER_TEXT                  =
*   ORDER_KEYS                  =
*   CONDITIONS_IN               =
*   CONDITIONS_INX              =
*   EXTENSIONIN                 =
          .


If sy-subrc = 0.
  break-point.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
*   WAIT          =
* IMPORTING
*   RETURN        =
            .
endif.

Regards

vijay

LucianoBentiveg
Active Contributor
0 Kudos

Thanx Vijay.

I´m trying your solution but i´m still getting message:

FB call: insufficient parameters (PARAMETER ORDER_HEADER_IN)

Any idea?

former_member188685
Active Contributor
0 Kudos

hi peluka,

for me it was working , just pass the order which is there in your system instead of the order which i am using.

Regards

vijay