2010 Feb 23 6:43 PM
hai gurus.
from flatfile i uploading data in internal table...
but how place in table control all data... by using this one only first two lines of particular material enteries.
flat file is like that
ex
1000 1 1 2000a 45 54
2000b 54 46
2000 1 1 1000a 24 23
3000 1 1 2000d 33
Moderator message - Please respect the 2,500 character maximum when posting. Post only the relevant portions of code
Edited by: Rob Burbank on Feb 23, 2010 2:01 PM
You can try with the standard fm's instead of BDC
link:[CSAP_MAT_BOM_CREATE|http://help.sap.com/saphelp_40b/helpdata/en/92/58b514417011d189ec0000e81ddfac/content.htm]
RFC_CREATE_BILL_OF_MATERIAL
2010 Feb 23 8:37 PM
You can try with the standard fm's instead of BDC
link:[CSAP_MAT_BOM_CREATE|http://help.sap.com/saphelp_40b/helpdata/en/92/58b514417011d189ec0000e81ddfac/content.htm]
RFC_CREATE_BILL_OF_MATERIAL
2010 Feb 25 9:30 AM
Hi,
You can use LSMW to create Material BOM.
See with ObjectType
Object 0030 Material BOM
Method 0001 Create
this methode used program RCSBI010 (See documentation. )
If you want you can used directly program RCSBI010.
Rgds
2010 Feb 25 1:37 PM
Please go through this code for same example ... I am already developed BDC for this same reqirement ,...
REPORT zoct30.
TYPE-POOLS: truxs,slis.
TABLES : mara.
TYPES: BEGIN OF t_tab,
col1(1) TYPE n,
col2(20) TYPE c,
col3(3) TYPE n,
col4(20) TYPE c,
col5(3) TYPE n,
END OF t_tab.
TYPES: BEGIN OF it_bom_data ,
posnr(4), "ITEM NO
idnrk(18), "COMPONENT
kmptx(30), "discription
menge(3), "QUANTITY
matnr(18), "MATERIAL
werks(4), "PLANT
stlan(1), "BOM USAGE
datuv(10), "DATE
bmeng(3), " material quantity
benge(18),
meins(3), "UNIT
postp(1), "Item category
alpgr(2), "AltItemGroup
alpst(1), "Strategy
alprf(2), "Priority
ewahr(3), "Usage probability(%)
lgort(4), "SLOC
END OF it_bom_data.
DATA : BEGIN OF it_bom_err OCCURS 0,
col1(1) TYPE n,
col2(20) TYPE c,
col3(3) TYPE n,
col4(20) TYPE c,
col5(3) TYPE n,
msg(150),
END OF it_bom_err.
DATA:it_bom_err1 LIKE it_bom_err OCCURS 0 WITH HEADER LINE.
* ----------------------------------------------------------------
*
* DATA
*
* ----------------------------------------------------------------
DATA : wa1 TYPE STANDARD TABLE OF t_tab WITH HEADER LINE.
DATA : wa2 LIKE wa1.
DATA : itab1 TYPE STANDARD TABLE OF it_bom_data WITH HEADER LINE.
DATA : itab2 TYPE STANDARD TABLE OF it_bom_data WITH HEADER LINE.
DATA it_type TYPE truxs_t_text_data.
DATA : bdcdata TYPE bdcdata OCCURS 10 WITH HEADER LINE.
DATA : it_msg LIKE bdcmsgcoll OCCURS 1 WITH HEADER LINE.
DATA v_cnt(2) TYPE c.
DATA v_cnt1 TYPE i.
DATA: v_msg(150).
DATA v_fldnm(20) TYPE c.
data : F2CODE LIKE SY-UCOMM VALUE '&ETA'.
**************alv declaration************
DATA: fld TYPE slis_t_fieldcat_alv WITH HEADER LINE,
fld1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
lay TYPE slis_layout_alv,
event TYPE slis_t_event.
PARAMETER p_file TYPE rlgrap-filename.
DATA ttab TYPE tabname.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM file_browse.
START-OF-SELECTION.
IF NOT p_file IS INITIAL.
PERFORM read_flat_file.
ENDIF.
END-OF-SELECTION.
PERFORM populate_bdcdata.
IF NOT it_bom_err[] IS INITIAL.
* LOOP AT it_bom_err.
* WRITE : it_bom_err-col1 , it_bom_err-col2, it_bom_err-col3 , it_bom_err-col4 , it_bom_err-col5 , it_bom_err-msg.
* ENDLOOP.
*******************************************
PERFORM fldcat.
*** PERFORM fldcat1.
PERFORM BUILD_LAYOUT USING LAY.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = lay
it_fieldcat = fld[]
TABLES
t_outtab = it_bom_err
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
FORM file_browse .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
ENDFORM. " FILE_BROWSE
*&---------------------------------------------------------------------*
*& Form READ_FLAT_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_flat_file .
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_type
i_filename = p_file
TABLES
i_tab_converted_data = wa1[]
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " READ_FLAT_FILE
*&---------------------------------------------------------------------*
*& Form POPULATE_BDCDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_bdcdata .
LOOP AT wa1 .
MOVE : wa1-col1 TO itab2-stlan,
wa1-col2 TO itab2-matnr,
wa1-col3 TO itab2-bmeng,
wa1-col4 TO itab2-idnrk,
wa1-col5 TO itab2-menge.
APPEND itab2 TO itab1.
CLEAR itab2.
ENDLOOP.
itab2[] = itab1[].
DELETE ADJACENT DUPLICATES FROM itab1 COMPARING stlan matnr bmeng.
* ----------------------------------------------------------------
*
* BDC RECORDING
*
* ----------------------------------------------------------------
REFRESH bdcdata.
LOOP AT itab1.
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' itab1-matnr.
PERFORM bdc_field USING 'RC29N-WERKS' '1000'.
PERFORM bdc_field USING 'RC29N-STLAN' itab1-stlan.
PERFORM bdc_field USING 'RC29N-DATUV' '01/01/2003'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0110'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RC29K-BMENG' itab1-bmeng.
PERFORM bdc_field USING 'RC29K-STLST' '1'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29K-EXSTL'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0111'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29K-LABOR'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-POSTP(01)'.
PERFORM bdc_field USING 'BDC_OKCODE' '=FCBU'.
v_cnt = '01'.
v_cnt1 = '0010'.
LOOP AT itab2 WHERE matnr = itab1-matnr.
CONCATENATE 'RC29P-IDNRK(' v_cnt ')' INTO v_fldnm.
PERFORM bdc_field USING v_fldnm itab2-idnrk.
CONCATENATE 'RC29P-MENGE(' v_cnt ')' INTO v_fldnm.
PERFORM bdc_field USING v_fldnm itab2-menge.
CONCATENATE 'RC29P-POSTP(' v_cnt ')' INTO v_fldnm.
PERFORM bdc_field USING v_fldnm 'l'.
v_cnt = v_cnt + 1.
ENDLOOP.
LOOP AT itab2 WHERE matnr = itab1-matnr.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0130'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RC29P-MENGE'.
PERFORM bdc_field USING 'RC29P-POSNR' v_cnt1.
PERFORM bdc_field USING 'RC29P-IDNRK' itab2-idnrk.
PERFORM bdc_field USING 'RC29P-MENGE' itab2-menge.
PERFORM bdc_field USING 'RC29P-MEINS' mara-meins.
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'.
v_cnt1 = v_cnt1 + 10.
ENDLOOP.
* CALL TRANSACTION 'CS01' USING BDCDATA MODE 'A'.
* REFRESH BDCDATA.
CALL TRANSACTION 'CS01'
USING bdcdata
MODE 'N'
UPDATE 'S'
MESSAGES INTO it_msg.
IF sy-subrc = 0.
PERFORM handle_succ_recs.
ELSE.
PERFORM handle_err_recs.
ENDIF.
CLEAR: bdcdata,
it_msg,
bdcdata[],
it_msg[],
v_msg.
ENDLOOP.
ENDFORM. " POPULATE_BDCDATA
*&---------------------------------------------------------------------*
*& Form HANDLE_SUCC_RECS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM handle_succ_recs .
READ TABLE it_msg WITH KEY msgtyp = 'S'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_msg-msgid
lang = sy-langu
no = it_msg-msgnr
v1 = it_msg-msgv1
v2 = it_msg-msgv2
v3 = it_msg-msgv3
v4 = it_msg-msgv4
IMPORTING
msg = v_msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
* LOOP AT itab1.
* MOVE itab1 TO it_bom_err.
* it_bom_err-msg = v_msg.
* APPEND it_bom_err.
* DELETE itab1.
* ENDLOOP.
LOOP AT wa1.
MOVE wa1 TO it_bom_err.
it_bom_err-msg = v_msg.
APPEND it_bom_err.
DELETE wa1.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM. " HANDLE_SUCC_RECS
*&---------------------------------------------------------------------*
*& Form HANDLE_ERR_RECS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM handle_err_recs .
READ TABLE it_msg WITH KEY msgtyp = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_msg-msgid
lang = sy-langu
no = it_msg-msgnr
v1 = it_msg-msgv1
v2 = it_msg-msgv2
v3 = it_msg-msgv3
v4 = it_msg-msgv4
IMPORTING
msg = v_msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
* LOOP AT itab1.
* MOVE itab1 TO it_bom_err.
* it_bom_err-msg = v_msg.
* APPEND it_bom_err.
* DELETE itab1.
* ENDLOOP.
LOOP AT wa1.
MOVE wa1 TO it_bom_err.
it_bom_err-msg = v_msg.
APPEND it_bom_err.
* DELETE ITAB1.
DELETE wa1.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM. " HANDLE_ERR_RECS
**********fieldcatlog*************
FORM fldcat.
fld-col_pos = '1'.
fld-seltext_l = 'Bom Usage'.
fld-fieldname = 'COL1'.
fld-tabname = 'IT_BOM_ERR'.
APPEND fld.
fld-col_pos = '2'.
fld-seltext_l = 'Material'.
fld-fieldname = 'COL2'.
fld-tabname = 'IT_BOM_ERR'.
APPEND fld.
CLEAR fld.
fld-col_pos = '3'.
fld-seltext_l = 'Materail Quantity'.
fld-fieldname = 'COL3'.
fld-tabname = 'IT_BOM_ERR'.
APPEND fld.
CLEAR fld.
fld-col_pos = '4'.
fld-seltext_l = 'componet'.
fld-fieldname = 'COL4'.
fld-tabname = 'IT_BOM_ERR'.
APPEND fld.
CLEAR fld.
fld-col_pos = '5'.
fld-seltext_l = 'Component Quantity'.
fld-fieldname = 'COL5'.
fld-tabname = 'IT_BOM_ERR'.
APPEND fld.
CLEAR fld.
fld-col_pos = '6'.
fld-seltext_l = 'Error Message'.
fld-fieldname = 'MSG'.
fld-tabname = 'IT_BOM_ERR'.
APPEND fld.
CLEAR fld.
ENDFORM. "fldcat
*****&---------------------------------------------------------------------*
*****& Form FLDCAT1
*****&---------------------------------------------------------------------*
***** text
*****----------------------------------------------------------------------*
****FORM fldcat1.
**** fld1-col_pos = '1'.
**** fld1-seltext_l = 'Bom Usage'.
**** fld1-fieldname = 'COL1'.
**** fld1-tabname = 'IT_BOM_ERR1'.
**** APPEND fld1.
****
**** fld1-col_pos = '2'.
**** fld1-seltext_l = 'Material'.
**** fld1-fieldname = 'COL2'.
**** fld1-tabname = 'IT_BOM_ERR1'.
**** APPEND fld1.
**** CLEAR fld1.
****
**** fld1-col_pos = '3'.
**** fld1-seltext_l = 'Materail Quantity'.
**** fld1-fieldname = 'COL3'.
**** fld1-tabname = 'IT_BOM_ERR1'.
**** APPEND fld1.
**** CLEAR fld1.
****
**** fld1-col_pos = '4'.
**** fld1-seltext_l = 'componet'.
**** fld1-fieldname = 'COL4'.
**** fld1-tabname = 'IT_BOM_ERR1'.
**** APPEND fld1.
**** CLEAR fld1.
****
**** fld1-col_pos = '5'.
**** fld1-seltext_l = 'Component Quantity'.
**** fld1-fieldname = 'COL5'.
**** fld1-tabname = 'IT_BOM_ERR1'.
**** APPEND fld1.
**** CLEAR fld1.
****
**** fld1-col_pos = '6'.
**** fld1-seltext_l = 'Error Message'.
**** fld1-fieldname = 'MSG'.
**** fld1-tabname = 'IT_BOM_ERR1'.
**** APPEND fld1.
**** CLEAR fld1.
****ENDFORM. "FLDCAT1
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
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
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LAYOUT text
*----------------------------------------------------------------------*
form BUILD_LAYOUT using p_layout type SLIS_LAYOUT_ALV.
P_LAYOUT-F2CODE = F2CODE.
P_LAYOUT-ZEBRA = 'X'.
P_LAYOUT-DETAIL_POPUP = 'X'.
endform. " BUILD_LAYOUT Edited by: ajay KOLLA on Feb 25, 2010 2:38 PM
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |