12-06-2008 3:27 AM
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
12-06-2008 4:37 AM
12-06-2008 4:45 AM
hi
You can use ORDER_ITEMS_IN. For further details use the documentation of the function module.This must help you in your requirement.
regards
Aakash Banga