Skip to Content
0
Former Member
Dec 06, 2008 at 03:27 AM

sales order change through bapi

946 Views

iam uploading va02 changes through bapi..but its not changing the sales order

details in bapi_change function module item number its taking as zero. plz can any one

say where iam going wrong.this is my code

*______BAPI STRUCTURES

data : bapi_header type BAPISDH1 occurs 0 with header line,

bapi_item type BAPISDITM occurs 0 with header line,

bapi_header_x like BAPISDH1X occurs 0 with header line,

bapi_item_x type BAPISDITMX occurs 0 with header line,

it_return type BAPIRET2 occurs 0 with header line.

data: v_vbeln like BAPIVBELN-VBELN,

v_bstkd like bapisdh1-purch_no_c,

v_zterm like bapisdh1-pmnttrms,

v_inco1 like bapisdh1-incoterms1,

v_inco2 like bapisdh1-incoterms2,

v_arktx like bapisditm-short_text,

v_koe1n like bapisditm-currency.

*_____ Internal to hold the records in the text file

DATA : BEGIN OF it_header OCCURS 100,

VBELN(10) ,

BSTKD(35) ,

ZTERM(4) ,

INCO1(3) ,

INCO2(28) ,

POSNR(6) ,

matnr(18) ,

ARKTX(40) ,

END OF it_header.

*_____ Internal table to hold excel file data

DATA : it_intern TYPE alsmex_tabline OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK scr1 WITH FRAME TITLE text-111.

PARAMETER : p_file TYPE rlgrap-filename OBLIGATORY .

*paRAMETERS : p_header TYPE i DEFAULT 0.

parameters : p_begcol TYPE i DEFAULT 1 NO-DISPLAY,

p_begrow TYPE i DEFAULT 1 NO-DISPLAY,

p_endcol TYPE i DEFAULT 100 NO-DISPLAY,

p_endrow TYPE i DEFAULT 32000 NO-DISPLAY.

SELECTION-SCREEN END OF BLOCK scr1.

___________START-OF-SELECTION________________

START-OF-SELECTION.

PERFORM convert_xls_itab. "to convert excel data into internal table

___________END-OF-SELECTION________________

END-OF-SELECTION.

&----


*& Form convert_xls_itab

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM convert_xls_itab .

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_file

i_begin_col = p_begcol

i_begin_row = p_begrow

i_end_col = p_endcol

i_end_row = p_endrow

TABLES

intern = it_intern.

  • EXCEPTIONS

  • INCONSISTENT_PARAMETERS = 1

  • UPLOAD_OLE = 2

  • OTHERS = 3

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

PERFORM move_data. " to move the data into an internal table

ENDFORM. " convert_xls_itab

___________END-OF-SELECTION________________

END-OF-SELECTION.

PERFORM upload_so. "to upload salesorder changes

&----


*& Form upload_so

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


&----


*& Form move_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM move_data .

DATA : lv_index TYPE i.

FIELD-SYMBOLS <fs>.

SORT it_intern BY row col. "Sorting Internal Table

CLEAR it_intern.

LOOP AT it_intern.

MOVE it_intern-col TO lv_index.

ASSIGN COMPONENT lv_index OF STRUCTURE it_header TO <fs>. " assigning each record to internal table row

MOVE it_intern-value TO <fs>.

AT END OF row.

APPEND it_header.

CLEAR it_header.

ENDAT.

ENDLOOP.

ENDFORM. " MOVE_DATA

" move_data

&----


*& Form upload_so

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM upload_so .

LOOP AT it_header.

  • Header

v_vbeln = it_header-VBELN.

bapi_header-purch_no_c = it_header-BSTKD.

bapi_header-pmnttrms = it_header-ZTERM.

bapi_header-incoterms1 = it_header-INCO1.

bapi_header-incoterms2 = it_header-INCO2.

APPEND BAPI_header.

bapi_header_x-updateflag = 'U'.

bapi_header_x-purch_no_c = 'X'.

bapi_header_x-pmnttrms = 'X'.

bapi_header_x-incoterms1 = 'X'.

bapi_header_x-incoterms2 = 'X'.

APPEND BAPI_header_x.

  • item

  • REFRESH BAPI_item.

bapi_item-ITM_NUMBER = it_header-POSNR.

bapi_item-material = it_header-matnr.

bapi_item-short_text = it_header-arktx.

  • bapi_item-currency = it_item-koein.

APPEND BAPI_item.

bapi_item_x-updateflag = 'U'.

bapi_item_x-ITM_NUMBER = it_header-POSNR.

bapi_item_x-MATERIAL = 'X'.

bapi_item_x-short_text = 'X'.

  • bapi_item_x-currency = 'X'.

APPEND bapi_item_x.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = V_VBELN

IMPORTING

OUTPUT = V_VBELN.

*

  • BAPI to change sales order

CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

EXPORTING

SALESDOCUMENT = v_vbeln

ORDER_HEADER_IN = bapi_header

ORDER_HEADER_INX = bapi_header_x

  • SIMULATION =

  • BEHAVE_WHEN_ERROR = ' '

  • INT_NUMBER_ASSIGNMENT = ' '

  • LOGIC_SWITCH =

  • NO_STATUS_BUF_INIT = ' '

TABLES

RETURN = it_return

ORDER_ITEM_IN = bapi_item

ORDER_ITEM_INX = bapi_item_x

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

.

COMMIT WORK.

ENDLOOP.

IF IT_return-type = 'E'.

WRITE: / 'Error :', IT_return-message, / 'for VBELN:',it_HEADER-VBELN.

ELSEIF IT_return-type = 'S'.

WRITE: / 'Successfully CHANGED', it_HEADER-VBELN.

ENDIF.

ENDFORM. " upload_so

thanks