‎2007 Nov 06 6:41 AM
I am facing problem in changing SO using BAPI_SALESORDER_CHANGE.
I am updating conditions. I want to change the condition value but its not changing. Its creating a new condition instead.
everytime a BAPI is executed, a new condition is added to item.
any idea??
My code is as below::
====
LOOP AT ITAB_DESC1.
N = 10.
READ TABLE ITAB_FATU WITH KEY INVNO = ITAB_DESC1-INVNO.
READ TABLE ITAB_ORDERS WITH KEY BSTNK = ITAB_FATU-PONUM.
HEADERX-UPDATEFLAG = 'U'.
SALESORDER = ITAB_ORDERS-VBELN.
LOOP AT ITAB_DESC WHERE INVNO = ITAB_DESC1-INVNO.
SOCOND-ITM_NUMBER = N.
SOCOND-COND_ST_NO = 12.
SOCOND-COND_COUNT = 0.
SOCOND-COND_TYPE = 'ZDPR'.
SOCOND-COND_VALUE = ITAB_DESC-UNITPRICE.
SOCOND-CONDCHAMAN = 'X'.
SOCOND-COND_UPDAT = 'X'.
APPEND SOCOND.
CLEAR SOCOND.
SOCOND-ITM_NUMBER = N.
SOCOND-COND_ST_NO = 427.
SOCOND-COND_COUNT = 0.
SOCOND-COND_TYPE = 'ZPAC'.
SOCOND-COND_VALUE = ITAB_DESC-PACKING.
SOCOND-CONDCHAMAN = 'X'.
SOCOND-COND_UPDAT = 'X'.
APPEND SOCOND.
CLEAR SOCOND.
SOCOND-ITM_NUMBER = N.
SOCOND-COND_ST_NO = 422.
SOCOND-COND_COUNT = 0.
SOCOND-COND_TYPE = 'ZFRD'.
SOCOND-COND_VALUE = ITAB_DESC-NATIONAL.
SOCOND-CONDCHAMAN = 'X'.
SOCOND-COND_UPDAT = 'X'.
APPEND SOCOND.
CLEAR SOCOND.
SOCOND-ITM_NUMBER = N.
SOCOND-COND_ST_NO = 425.
SOCOND-COND_COUNT = 0.
SOCOND-COND_TYPE = 'ZFRE'.
SOCOND-COND_VALUE = ITAB_DESC-INTERNATIONAL.
SOCOND-COND_UPDAT = 'X'.
SOCOND-CONDCHAMAN = 'X'.
APPEND SOCOND.
CLEAR SOCOND.
SOCONDX-ITM_NUMBER = N.
SOCONDX-COND_ST_NO = 'X'.
SOCONDX-COND_COUNT = 'X'.
SOCONDX-COND_TYPE = 'X'.
SOCONDX-UPDATEFLAG = 'U'.
SOCONDX-COND_VALUE = 'X'.
APPEND SOCONDX.
CLEAR SOCONDX.
N = N + 10.
ENDLOOP.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = SALESORDER
ORDER_HEADER_IN =
ORDER_HEADER_INX = HEADERX
SIMULATION =
BEHAVE_WHEN_ERROR = ' '
INT_NUMBER_ASSIGNMENT = ' '
LOGIC_SWITCH = logic_switch
NO_STATUS_BUF_INIT = ' '
TABLES
RETURN = RET
ORDER_ITEM_IN =
ORDER_ITEM_INX =
PARTNERS =
PARTNERCHANGES =
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 = SOCOND
CONDITIONS_INX = SOCONDX
EXTENSIONIN =
NFMETALLITMS =
.
IF RET-TYPE = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = RET1.
WRITE : 'SALES ORDER CHANGED : ', SALESORDER.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN = RET1.
ENDIF.
ENDLOOP.
====
‎2007 Nov 06 9:43 AM
hi,
i am trying to answer upto my knowledge, if that is useful kindly allocate reward points
LOOP AT ITAB_DESC1.
N = 10.
READ TABLE ITAB_FATU WITH KEY INVNO = ITAB_DESC1-INVNO.
READ TABLE ITAB_ORDERS WITH KEY BSTNK = ITAB_FATU-PONUM.
HEADERX-UPDATEFLAG = 'U'.
SALESORDER = ITAB_ORDERS-VBELN.
LOOP AT ITAB_DESC WHERE INVNO = ITAB_DESC1-INVNO.
SOCOND-ITM_NUMBER = N.
SOCOND-COND_ST_NO = 12.
SOCOND-COND_COUNT = 0.
SOCOND-COND_TYPE = 'ZDPR'.
SOCOND-COND_VALUE = ITAB_DESC-UNITPRICE.
SOCOND-CONDCHAMAN = 'X'.
SOCOND-COND_UPDAT = 'X'.
APPEND SOCOND.
CLEAR SOCOND.
SOCOND-ITM_NUMBER = N.
SOCOND-COND_ST_NO = 427.
SOCOND-COND_COUNT = 0.
SOCOND-COND_TYPE = 'ZPAC'.
SOCOND-COND_VALUE = ITAB_DESC-PACKING.
SOCOND-CONDCHAMAN = 'X'.
SOCOND-COND_UPDAT = 'X'.
APPEND SOCOND.
CLEAR SOCOND.
SOCOND-ITM_NUMBER = N.
SOCOND-COND_ST_NO = 422.
SOCOND-COND_COUNT = 0.
SOCOND-COND_TYPE = 'ZFRD'.
SOCOND-COND_VALUE = ITAB_DESC-NATIONAL.
SOCOND-CONDCHAMAN = 'X'.
SOCOND-COND_UPDAT = 'X'.
APPEND SOCOND.
CLEAR SOCOND.
SOCOND-ITM_NUMBER = N.
SOCOND-COND_ST_NO = 425.
SOCOND-COND_COUNT = 0.
SOCOND-COND_TYPE = 'ZFRE'.
SOCOND-COND_VALUE = ITAB_DESC-INTERNATIONAL.
SOCOND-COND_UPDAT = 'X'.
SOCOND-CONDCHAMAN = 'X'.
APPEND SOCOND.
CLEAR SOCOND.
<b><u><i><b>SOCONDX-ITM_NUMBER = N.</b></i></u> This is line is not required
SOCONDX-UPDATEFLAG = 'U'.</b>
SOCONDX-COND_ST_NO = 'X'.
SOCONDX-COND_COUNT = 'X'.
SOCONDX-COND_TYPE = 'X'.
SOCONDX-COND_VALUE = 'X'.
APPEND SOCONDX.
CLEAR SOCONDX.
N = N + 10.
ENDLOOP.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = SALESORDER
ORDER_HEADER_IN =
ORDER_HEADER_INX = HEADERX
SIMULATION =
BEHAVE_WHEN_ERROR = ' '
INT_NUMBER_ASSIGNMENT = ' '
LOGIC_SWITCH = logic_switch
NO_STATUS_BUF_INIT = ' '
TABLES
RETURN = RET
ORDER_ITEM_IN =
ORDER_ITEM_INX =
PARTNERS =
PARTNERCHANGES =
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 = SOCOND
CONDITIONS_INX = SOCONDX
EXTENSIONIN =
NFMETALLITMS =
.
IF RET-TYPE = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = RET1.
WRITE : 'SALES ORDER CHANGED : ', SALESORDER.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN = RET1.
ENDIF.
ENDLOOP.
regards,
pavan