Skip to Content
1
Former Member
Jul 11, 2007 at 09:32 PM

Issue with BAPI parameters

35 Views

Hi,

I am trying to use BAPI_SALESORDER_CHANGE to modify the contents of the sales order item quantity. but the below code was not working, can any one correct the below program.

I have seen the same type of post few months back but no one provided the solution till now. I hope experts can correct my program. Surely i will reward.

regards

jaya

-


REPORT y_bapi1 .

TABLES: vbap.

DATA:

bapichdr LIKE bapisdh1,

bapichdrx LIKE bapisdh1x,

bapirtn LIKE bapiret2 OCCURS 0 WITH HEADER LINE,

bapiitm LIKE bapisditm OCCURS 0 WITH HEADER LINE,

bapiitmx LIKE bapisditmx OCCURS 0 WITH HEADER LINE.

DATA: s_vbap LIKE vbap.

PARAMETERS: p_vbeln LIKE vbap-vbeln DEFAULT '40486',

p_posnr LIKE vbap-posnr DEFAULT '20'.

  • start-of-selection.

START-OF-SELECTION.

PERFORM get_data_4m_vbap.

PERFORM fill_header_in.

PERFORM fill_header_inx.

PERFORM fill_item_in.

PERFORM fill_item_inx.

PERFORM call_bapi_so_change.

PERFORM call_bapi_commit.

&----


*& Form get_data_4m_vbap

&----


  • text

----


FORM get_data_4m_vbap.

SELECT SINGLE * FROM

vbap

INTO s_vbap

WHERE vbeln = p_vbeln

AND posnr = p_posnr.

ENDFORM. " get_data_4m_vbap

&----


*& Form fill_header_in

&----


  • text

----


FORM fill_header_in.

*bapichdr

ENDFORM. " fill_header_in

&----


*& Form fill_header_inx

&----


  • text

----


FORM fill_header_inx.

bapichdrx-updateflag = 'U'.

ENDFORM. " fill_header_inx

&----


*& Form fill_item_in

&----


  • text

----


FORM fill_item_in.

bapiitm-itm_number = p_posnr.

bapiitm-target_qty = s_vbap-kwmeng + 5.

APPEND bapiitm.

CLEAR bapiitm.

ENDFORM. " fill_item_in

&----


*& Form fill_item_inx

&----


  • text

----


FORM fill_item_inx.

bapiitmx-itm_number = p_posnr.

bapiitmx-updateflag = 'U'. " I for insert & D for Delete

bapiitmx-TARGET_QTY = 'X'.

APPEND bapiitmx.

CLEAR bapiitmx.

bapiitmx-itm_number = p_posnr.

bapiitmx-updateflag = 'I'. " I for insert & D for Delete

bapiitmx-target_qty = 'X'.

APPEND bapiitmx.

CLEAR bapiitmx.

ENDFORM. " fill_item_inx

&----


*& Form call_bapi_SO_change

&----


  • text

----


FORM call_bapi_so_change.

CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

EXPORTING

salesdocument = p_vbeln

order_header_in = bapichdr

order_header_inx = bapichdrx

  • SIMULATION =

  • BEHAVE_WHEN_ERROR = ' '

  • INT_NUMBER_ASSIGNMENT = ' '

  • LOGIC_SWITCH =

  • NO_STATUS_BUF_INIT = ' '

TABLES

return = bapirtn

order_item_in = bapiitm

order_item_inx = bapiitmx

  • 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 =

  • CONDITIONS_INX =

  • EXTENSIONIN =

.

READ TABLE bapirtn WITH KEY id = 'V1' number = '311'.

IF sy-subrc <> 0.

PERFORM bapi_errorlist.

ENDIF.

ENDFORM. " call_bapi_SO_change

&----


*& Form call_bapi_commit

&----


  • text

----


FORM call_bapi_commit.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'

  • IMPORTING

  • RETURN =

.

ENDFORM. " call_bapi_commit

&----


*& Form bapi_errorlist

&----


  • text

----


FORM bapi_errorlist.

DATA: bapierr TYPE c,

string TYPE string,

i TYPE i.

bapierr = 'X'.

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

LEAVE TO LIST-PROCESSING.

SET PF-STATUS 'LIST'.

FORMAT INTENSIFIED ON.

WRITE: / 'BAPI ERROR OCCURED' COLOR COL_NEGATIVE INVERSE ON.

SKIP 1.

LOOP AT bapirtn.

CONCATENATE bapirtn-type bapirtn-number '(' bapirtn-id ')'

INTO string.

WRITE: / string.

i = strlen( bapirtn-message ).

WRITE bapirtn-message(i).

ENDLOOP.

LEAVE TO SCREEN 0100.

ENDFORM. " bapi_errorlist

-