Hi ,
You can use below program.Essentialy you update STPO, STKO & MAST tables... that's all BOM is all about.... Mass upload or what ever.
&---------------------------------------------------------------------*
*& Report ZPPC0001
*&
*&---------------------------------------------------------------------*
REPORT ZPPC0001 NO STANDARD PAGE HEADING LINE-SIZE 255.
DATA: BEGIN OF itab OCCURS 0,
material(18) TYPE c,
plant(5) TYPE c,
usage(1) TYPE c,
date(10) TYPE c,
baseqty(25) TYPE c,
component(25) TYPE c,
qty(25) TYPE c,
meins(5) TYPE c,
category(2) TYPE c,
opscrap(20) TYPE c,
netid(1) TYPE c,
compscrap(20) TYPE c,
END OF itab.
DATA: BEGIN OF jtab OCCURS 0,
component(25) TYPE c,
qty(25) TYPE c,
category(2) TYPE c,
opscrap(20) TYPE c,
netid(1) TYPE c,
compscrap(20) TYPE c,
meins(5) TYPE c,
END OF jtab.
DATA: count1 TYPE i.
DATA: ccount(4) TYPE c.
DATA: count TYPE i.
DATA: zcount(4) TYPE c.
DATA: material(18) TYPE c,
plant(5) TYPE c,
usage(1) TYPE c,
date(10) TYPE c,
baseqty(25) TYPE c,
meins(5) TYPE c.
DATA: param1(15) TYPE c.
DATA: param2(15) TYPE c.
DATA: param3(15) TYPE c.
DATA bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: t_msgtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF i_t100 OCCURS 0.
INCLUDE STRUCTURE t100.
DATA: END OF i_t100.
* S E L E C T I O N S C R E E N
PARAMETERS: p_fname LIKE rlgrap-filename DEFAULT 'C:/bom.TXT'.
PARAMETERS: s_mode TYPE ctu_mode.
*R E P O R T E V E N T S
START-OF-SELECTION.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
codepage = 'SDG'
filename = p_fname
filetype = 'DAT'
TABLES
data_tab = itab
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 10
OTHERS = 11.
LOOP AT itab.
material = itab-material.
plant = itab-plant.
usage = itab-usage.
date = itab-date.
baseqty = itab-baseqty.
meins = itab-meins.
MOVE-CORRESPONDING itab TO jtab.
APPEND jtab.
AT END OF material.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29N-DATUV'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RC29N-MATNR' material.
PERFORM bdc_field USING 'RC29N-WERKS' plant.
PERFORM bdc_field USING 'RC29N-STLAN' usage.
PERFORM bdc_field USING 'RC29N-DATUV' date.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29K-BMENG'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RC29K-BMENG' baseqty.
PERFORM bdc_field USING 'RC29K-STLST' '1'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0111'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29K-LABOR'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
LOOP AT jtab.
count = count + 1.
zcount = count.
CONDENSE zcount.
CONCATENATE 'RC29P-IDNRK(0' zcount ')' INTO param1.
CONCATENATE 'RC29P-MENGE(0' zcount ')' INTO param2.
CONCATENATE 'RC29P-POSTP(0' zcount ')' INTO param3.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.
PERFORM bdc_field USING 'BDC_CURSOR' param3.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING param1 jtab-component.
PERFORM bdc_field USING param2 jtab-qty.
PERFORM bdc_field USING param3 jtab-category.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0130'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-AUSCH'.
PERFORM bdc_field USING 'RC29P-MEINS' jtab-meins.
PERFORM bdc_field USING 'RC29P-AVOAU' jtab-opscrap.
PERFORM bdc_field USING 'RC29P-NETAU' 'X'.
PERFORM bdc_field USING 'RC29P-AUSCH' jtab-compscrap.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0131'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-POTX1'.
PERFORM bdc_field USING 'RC29P-SANKA' 'X'.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.
PERFORM bdc_field USING 'BDC_OKCODE' '=FCBU'.
CALL TRANSACTION 'CS01' USING bdcdata MODE s_mode
MESSAGES INTO t_msgtab.
REFRESH jtab.
CLEAR: count , count1, ccount, zcount.
ENDAT.
REFRESH bdcdata.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
IF fval <> space.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD