2007 Mar 05 7:08 AM
Hi,
i got a task for the dataconversion for BOM data.And they need this should be done with BDC recording.and also i got the flat file.Anyone please help me in doin this.I need the complete description for it from beginning to end.
Hi,
i got a task for the dataconversion for BOM data.And they need this should be done with BDC recording.and also i got the flat file.Anyone please help me in doin this.I need the complete description for it from beginning to end.
2007 Mar 05 7:18 AM
Hi,
See the Sample Program for BOM Uplaod and do the changes as per your requirement;
REPORT ZPPBDCP_BOM_EXTENSION NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE ZBDCRECX1.
DATA : BEGIN OF IT_DATA OCCURS 0,
RC29N_bismt LIKE MAra-bismt,
RC29N_WERKS LIKE RC29N-WERKS,
RC29N_STLAN LIKE RC29N-STLAN,
RC29P_SELPO LIKE RC29P-SELPO,
RC29N_BISMT1 LIKE MAra-BISMT,
RCUKD_KNNAM01 LIKE RCUKD-KNNAM,
RCUKD_KNNAM02 LIKE RCUKD-KNNAM,
RCUKD_KNNAM03 LIKE RCUKD-KNNAM,
RCUKD_KNNAM04 LIKE RCUKD-KNNAM,
RCUKD_KNNAM05 LIKE RCUKD-KNNAM,
RCUKD_KNNAM06 LIKE RCUKD-KNNAM,
RCUKD_KNNAM07 LIKE RCUKD-KNNAM,
RCUKD_KNNAM08 LIKE RCUKD-KNNAM,
RCUKD_KNNAM09 LIKE RCUKD-KNNAM,
RCUKD_KNNAM10 LIKE RCUKD-KNNAM,
RCUKD_KNNAM11 LIKE RCUKD-KNNAM,
RCUKD_KNNAM12 LIKE RCUKD-KNNAM,
RCUKD_KNNAM13 LIKE RCUKD-KNNAM,
RCUKD_KNNAM14 LIKE RCUKD-KNNAM,
RCUKD_KNNAM15 LIKE RCUKD-KNNAM,
RCUKD_KNNAM16 LIKE RCUKD-KNNAM,
RCUKD_KNNAM17 LIKE RCUKD-KNNAM,
RCUKD_KNNAM18 LIKE RCUKD-KNNAM,
RCUKD_KNNAM19 LIKE RCUKD-KNNAM,
RCUKD_KNNAM20 LIKE RCUKD-KNNAM,
END OF IT_DATA.
DATA : IT_STPO LIKE STPO_API02 OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF IT_MATNR OCCURS 0,
SNO(5),
MATNR LIKE MAKT-MATNR,
BISMT LIKE MAra-BISMT,
WERKS LIKE RC29N-WERKS,
STLAN LIKE RC29N-STLAN,
SELPO LIKE RC29P-SELPO,
MATNR1 LIKE MARA-MATNR,
END OF IT_MATNR.
DATA : BEGIN OF IT_ITEMS OCCURS 0,
SNO(5),
MATNR LIKE MAKT-MATNR,
WERKS LIKE RC29N-WERKS,
STLAN LIKE RC29N-STLAN,
SELPO LIKE RC29P-SELPO,
MATNR1 LIKE MARA-MATNR,
BISMT1 LIKE MARA-BISMT,
END OF IT_ITEMS.
DATA : BEGIN OF IT_DEPENDENCIES OCCURS 0,
SNO(5),
SELPO LIKE RC29P-SELPO,
KNNAM LIKE RCUKD-KNNAM,
END OF IT_DEPENDENCIES.
DATA : BEGIN OF IT_ERROR OCCURS 0,
MATNR LIKE MARA-MATNR,
BISMT LIKE MARA-BISMT,
SELPO LIKE RC29P-SELPO,
MATNR1 LIKE MARA-MATNR,
BISMT1 LIKE MARA-BISMT,
END OF IT_ERROR.
DATA : V_FIRST,
V_TABIX type i,
V_LINES TYPE I,
V_INDEX(2) TYPE N,
V_SNO(5),
V_FNAME(40),
V_DATE(10),
V_TIME(8),
V_MODE VALUE 'A',
V_ROWS TYPE I,
V_SKIP.
DATA : V_ITEM_NO(4) TYPE N,
V_COMPONENT(18).
DATA : V_MATNR LIKE MARA-MATNR,
V_MATNR1 LIKE MARA-MATNR.
FIELD-SYMBOLS <F>.
DATA : BEGIN OF IT OCCURS 0,
PROGRAM(10),
DYNPRO(10),
DYNBEGIN(10),
FNAM(20),
FVAL(20),
END OF IT.
START-OF-SELECTION.
PERFORM OPEN_GROUP.
WRITE : / 'Upload of BOM Extn. from ', P_FNAME, ' on ', SY-DATUM.
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = '\BOMExtension.txt'
FILETYPE = 'DAT'
TABLES
DATA_TAB = IT_DATA
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
OPEN DATASET P_FNAME FOR INPUT IN TEXT MODE.
IF SY-SUBRC NE 0.
WRITE : / 'Could not upload the file.. please try again.'.
ENDIF.
CLEAR : IT_DATA[], IT_DATA.
DO.
READ DATASET P_FNAME INTO V_STR.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
write v_str.
translate v_str using '#/'.
SPLIT V_STR AT ',' INTO IT_DATA-RC29N_BISMT
IT_DATA-RC29N_WERKS
IT_DATA-RC29N_STLAN
IT_DATA-RC29P_SELPO
IT_DATA-RC29N_BISMT1
IT_DATA-RCUKD_KNNAM01
IT_DATA-RCUKD_KNNAM02
IT_DATA-RCUKD_KNNAM03
IT_DATA-RCUKD_KNNAM04
IT_DATA-RCUKD_KNNAM05
IT_DATA-RCUKD_KNNAM06
IT_DATA-RCUKD_KNNAM07
IT_DATA-RCUKD_KNNAM08
IT_DATA-RCUKD_KNNAM09
IT_DATA-RCUKD_KNNAM10
IT_DATA-RCUKD_KNNAM11
IT_DATA-RCUKD_KNNAM12
IT_DATA-RCUKD_KNNAM13
IT_DATA-RCUKD_KNNAM14
IT_DATA-RCUKD_KNNAM15
IT_DATA-RCUKD_KNNAM16
IT_DATA-RCUKD_KNNAM17
IT_DATA-RCUKD_KNNAM18
IT_DATA-RCUKD_KNNAM19
IT_DATA-RCUKD_KNNAM20.
translate it_data-rc29n_bismt to upper case.
APPEND IT_DATA.
CLEAR IT_DATA.
ENDDO.
IF IT_DATA[] IS INITIAL.
WRITE : / 'No data found to upload'.
STOP.
ENDIF.
LOOP AT IT_DATA.
IF IT_DATA-RC29N_BISMT NE SPACE.
SELECT SINGLE MATNR INTO (V_MATNR) FROM MARA
WHERE BISMT = IT_DATA-RC29N_BISMT.
SPRAS = 'EN'.
V_SNO = V_SNO + 1.
IT_MATNR-SNO = V_SNO.
IT_MATNR-MATNR = V_MATNR.
IT_MATNR-BISMT = IT_DATA-RC29N_BISMT.
IT_MATNR-WERKS = IT_DATA-RC29N_WERKS.
IT_MATNR-STLAN = IT_DATA-RC29N_STLAN.
APPEND IT_MATNR.
ENDIF.
SELECT SINGLE MATNR INTO (V_MATNR1) FROM MARA
WHERE BISMT = IT_DATA-RC29N_BISMT1.
IT_DEPENDENCIES-SNO = V_SNO.
IT_DEPENDENCIES-SELPO = IT_DATA-RC29P_SELPO.
IT_ITEMS-SNO = V_SNO.
IT_MATNR-SELPO = IT_DATA-RC29P_SELPO.
IT_MATNR-MATNR1 = V_MATNR1.
APPEND IT_MATNR.
IT_ITEMS-SELPO = IT_DATA-RC29P_SELPO.
IT_ITEMS-MATNR1 = V_MATNR1.
IT_ITEMS-BISMT1 = IT_DATA-RC29N_BISMT1.
APPEND IT_ITEMS.
DO 20 TIMES.
CLEAR V_FNAME.
V_INDEX = SY-INDEX.
CONCATENATE 'IT_DATA-RCUKD_KNNAM' V_INDEX INTO V_FNAME.
ASSIGN (V_FNAME) TO <F>.
IF <F> EQ SPACE.
EXIT.
ENDIF.
IT_DEPENDENCIES-KNNAM = <F>.
APPEND IT_DEPENDENCIES.
ENDDO.
ENDLOOP.
LOOP AT IT_MATNR.
V_TABIX = SY-TABIX.
CALL FUNCTION 'CSAP_MAT_BOM_READ'
EXPORTING
MATERIAL = IT_MATNR-MATNR
PLANT = IT_MATNR-WERKS
BOM_USAGE = IT_MATNR-STLAN
ALTERNATIVE =
VALID_FROM =
VALID_TO =
CHANGE_NO =
REVISION_LEVEL =
IMPORTING
FL_WARNING =
TABLES
T_STPO = IT_STPO
T_STKO =
T_DEP_DATA =
T_DEP_DESCR =
T_DEP_ORDER =
T_DEP_SOURCE =
T_DEP_DOC =
EXCEPTIONS
ERROR = 1
OTHERS = 2.
CLEAR V_SKIP.
IF SY-SUBRC EQ 0.
LOOP AT IT_ITEMS WHERE SNO = IT_MATNR-SNO.
V_ITEM_NO = IT_ITEMS-SELPO.
WRITE : IT_ITEMS-MATNR1 TO V_COMPONENT NO-ZERO.
READ TABLE IT_STPO WITH KEY ITEM_NO = V_ITEM_NO
COMPONENT = V_COMPONENT.
IF SY-SUBRC NE 0.
V_SKIP = 'X'.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
IF V_SKIP = 'X'.
IT_ERROR-MATNR = IT_MATNR-MATNR.
IT_ERROR-BISMT = IT_MATNR-BISMT.
IT_ERROR-SELPO = IT_ITEMS-SELPO.
IT_ERROR-MATNR1 = IT_ITEMS-MATNR1.
IT_ERROR-BISMT1 = IT_ITEMS-BISMT1.
APPEND IT_ERROR.
DELETE IT_DEPENDENCIES WHERE SNO = IT_MATNR-SNO.
DELETE IT_ITEMS WHERE SNO = IT_MATNR-SNO.
DELETE IT_MATNR INDEX V_TABIX.
ENDIF.
ENDLOOP.
WRITE : / 'Item Numbers and Components does not match for following :'.
LOOP AT IT_ERROR.
WRITE : /5 IT_ERROR-BISMT, IT_ERROR-SELPO, IT_ERROR-BISMT1.
ENDLOOP.
DATA : BEGIN OF IT_KNNAM OCCURS 0,
KNNAM LIKE CUKB-KNNAM,
END OF IT_KNNAM.
SELECT KNNAM INTO TABLE IT_KNNAM FROM CUKB
FOR ALL ENTRIES IN IT_DEPENDENCIES
WHERE KNNAM = IT_DEPENDENCIES-KNNAM.
SKIP.
WRITE : / 'Dependencies does not exist :'.
LOOP AT IT_DEPENDENCIES.
READ TABLE IT_KNNAM WITH KEY KNNAM = IT_DEPENDENCIES-KNNAM.
IF SY-SUBRC NE 0.
READ TABLE IT_MATNR WITH KEY SNO = IT_DEPENDENCIES-SNO.
WRITE : /5 IT_MATNR-BISMT, IT_DEPENDENCIES-SELPO,
IT_DEPENDENCIES-KNNAM.
DELETE IT_DEPENDENCIES WHERE SNO = IT_MATNR-SNO.
DELETE IT_ITEMS WHERE SNO = IT_MATNR-SNO.
DELETE IT_MATNR WHERE SNO = IT_MATNR-SNO.
ENDIF.
ENDLOOP.
V_ROWS = SY-SROWS - 7.
DESCRIBE TABLE IT_MATNR LINES V_LINES.
IF V_LINES EQ 0.
WRITE : / 'No materials found to process'.
STOP.
ENDIF.
SKIP.
DATA : V_TOTAL(4) TYPE C.
DATA : V_CURRE(4) TYPE C.
DATA : V_TEXT(25).
DATA : V_PERC TYPE I.
DESCRIBE TABLE IT_MATNR LINES V_TOTAL.
LOOP AT IT_MATNR.
V_CURRE = SY-TABIX.
CONDENSE : V_TOTAL, V_CURRE.
CONCATENATE V_CURRE '/' V_TOTAL INTO V_TEXT.
V_PERC = V_TOTAL * ( V_CURRE / 100 ).
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = V_PERC
TEXT = V_TEXT.
PERFORM BDC_DYNPRO USING 'SAPLCSDI' '0100'.
PERFORM BDC_FIELD1 USING 'BDC_CURSOR'
'RC29N-STLAN'.
PERFORM BDC_FIELD1 USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD1 USING 'RC29N-MATNR'
IT_MATNR-MATNR. " '933'.
PERFORM BDC_FIELD1 USING 'RC29N-WERKS'
IT_MATNR-WERKS. " '2000'.
PERFORM BDC_FIELD1 USING 'RC29N-STLAN'
IT_MATNR-STLAN. " '3'.
PERFORM BDC_FIELD1 USING 'RC29N-STLAL'
'1'.
PERFORM BDC_FIELD1 USING 'RC29N-DATUV'
'17.07.2001'.
LOOP AT IT_ITEMS WHERE SNO = IT_MATNR-SNO.
PERFORM BDC_DYNPRO USING 'SAPLCSDI' '0150'.
PERFORM BDC_FIELD1 USING 'BDC_CURSOR'
'RC29P-POSNR(01)'.
PERFORM BDC_FIELD1 USING 'BDC_OKCODE'
'=SETP'.
PERFORM BDC_DYNPRO USING 'SAPLCSDI' '0708'.
PERFORM BDC_FIELD1 USING 'BDC_OKCODE'
'=CLWI'.
PERFORM BDC_FIELD1 USING 'BDC_CURSOR'
'RC29P-SELPO'.
PERFORM BDC_FIELD1 USING 'RC29P-SELPO'
IT_ITEMS-SELPO. " '0040'.
PERFORM BDC_DYNPRO USING 'SAPLCSDI' '0150'.
PERFORM BDC_FIELD1 USING 'BDC_CURSOR'
'RC29P-AUSKZ(01)'.
PERFORM BDC_FIELD1 USING 'BDC_OKCODE'
'=WIZU'.
PERFORM BDC_FIELD1 USING 'RC29P-AUSKZ(01)'
'X'.
PERFORM BDC_DYNPRO USING 'SAPLCUKD' '0130'.
PERFORM BDC_FIELD1 USING 'BDC_CURSOR'
'RCUKD-KNNAM(02)'.
PERFORM BDC_FIELD1 USING 'BDC_OKCODE'
'/00'.
V_SNO = 0.
LOOP AT IT_DEPENDENCIES WHERE SNO = IT_ITEMS-SNO AND
SELPO = IT_ITEMS-SELPO.
PERFORM BDC_DYNPRO USING 'SAPLCUKD' '0130'.
PERFORM BDC_FIELD1 USING 'BDC_CURSOR'
'RCUKD-KNNAM(02)'.
PERFORM BDC_FIELD1 USING 'BDC_OKCODE'
'=SICH'.
PERFORM BDC_FIELD1 USING 'RCUKD-KNNAM(01)'
IT_DEPENDENCIES-KNNAM." 'test6'.
V_SNO = V_SNO + 1.
CONDENSE V_SNO.
CONCATENATE 'RCUKD-KNNAM(' V_SNO ')' INTO V_FNAME.
PERFORM BDC_FIELD USING V_FNAME
IT_DEPENDENCIES-KNNAM." 'test6'.
IF V_SNO = 13.
PERFORM BDC_DYNPRO USING 'SAPLCUKD' '0130'.
PERFORM BDC_FIELD1 USING 'BDC_CURSOR'
'RCUKD-KNNAM(01)'.
PERFORM BDC_FIELD1 USING 'BDC_OKCODE'
'=NEWZ'.
PERFORM BDC_DYNPRO USING 'SAPLCUKD' '0130'.
PERFORM BDC_FIELD1 USING 'BDC_CURSOR'
'RCUKD-KNNAM(02)'.
PERFORM BDC_FIELD1 USING 'BDC_OKCODE'
'/00'.
V_SNO = 1.
ENDIF.
ENDLOOP.
PERFORM BDC_DYNPRO USING 'SAPLCUKD' '0130'.
PERFORM BDC_FIELD1 USING 'BDC_CURSOR'
'RCUKD-KNNAM(01)'.
PERFORM BDC_FIELD1 USING 'BDC_OKCODE'
'=SICH'.
ENDLOOP.
PERFORM BDC_DYNPRO USING 'SAPLCSDI' '0150'.
PERFORM BDC_FIELD1 USING 'BDC_CURSOR'
'RC29P-POSNR(01)'.
PERFORM BDC_FIELD1 USING 'BDC_OKCODE'
'=FCBU'.
WRITE : / 'Messages returned for ', IT_MATNR-BISMT,
IT_MATNR-WERKS, IT_MATNR-STLAN.
SKIP.
PERFORM BDC_TRANSACTION USING 'CS02'.
ENDLOOP.
PERFORM CLOSE_GROUP.
----
Insert field *
----
FORM BDC_FIELD1 USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM.
Regards,
Anji
2007 Mar 05 7:20 AM
Reema,
Your question does not say much. Meanwhile please have a look at the following SE38 objects:
RCSBI010 Create BOM
RCSBI020 Change BOM
These are standard BDC for BOM
-
SANDEEP
| User | Count |
|---|---|
| 5 | |
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |