2008 Jan 14 4:36 AM
client using ECC6.0 ,, Actually we are converting legacy data (Excel) in to SAP R/3 . we are writing BDC program for this.
Any functional modules or BAPI are avilabe for convert data in to SAP R/3 for CS01 transaction. If any one know exact information give example and
parameters also..
2008 Jan 14 4:47 AM
Check this BDC of CS01
&----
*& Report YCS01_TEST
*&
&----
*&
*&
&----
REPORT ycs01_test.
TYPE-POOLS truxs.
DATA:f_file TYPE string.
*TYPES: BEGIN OF ty_flat, " structure for flat file
*string(200),
*END OF ty_flat.
TYPES: BEGIN OF ty_head, " structure for header file
ind(2) TYPE n,
matnr(18) ,
werks(4) ,
stlan(1) ,
stlal(2) ,
datuv(10) ,
ztext(40),
bmeng(13) ,
bmein(3),
stlst(2) ,
END OF ty_head.
TYPES :BEGIN OF ty_item, "structure for item file
ind(2) TYPE n,
postp(1) ,
posnr(4) ,
idnrk(18) ,
menge(13),
meins(3) ,
potx1(40),
lgort(4) ,
sanka(1),
END OF ty_item.
TYPES :BEGIN OF ty_flat, " structure for final file
matnr(18) ,
werks(4) ,
stlan(1) ,
stlal(2) ,
datuv(10) ,
ztext(40),
bmeng(13) ,
bmein(3),
stlst(2) ,
postp(1) ,
posnr(4) ,
idnrk(18) ,
menge(13),
meins(3) ,
potx1(40),
lgort(4) ,
sanka(1),
END OF ty_flat.
-
INTERNAL TABLE DECLARATIONS *
-
DATA : t_flat TYPE TABLE OF ty_flat,
*t_flat1 TYPE TABLE OF ty_flat1,
t_head TYPE TABLE OF ty_head,
t_item TYPE TABLE OF ty_item,
t_bdcdata TYPE TABLE OF bdcdata,
t_bdcmsg TYPE TABLE OF bdcmsgcoll.
-
WORK AREA DECLARATIONS *
-
DATA : st_flat LIKE LINE OF t_flat,
*st_flat1 LIKE LINE OF t_flat1,
st_head LIKE LINE OF t_head,
st_item LIKE LINE OF t_item,
st_bdcdata LIKE LINE OF t_bdcdata,
st_bdcmsg LIKE LINE OF t_bdcmsg.
-
VARIABLES *
-
DATA : v_ind(2) TYPE n, " value 1,
v_fld(20),
v_no(2) TYPE n.
-
SELECTION SCREEN *
-
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. "selection screen
PARAMETERS: p_fnam TYPE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fnam.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ' '
IMPORTING
file_name = p_fnam.
IF p_fnam IS NOT INITIAL.
VALIDATE FILE TYPE
PERFORM sub_validate_txt_type.
ENDIF.
START-OF-SELECTION.
f_file = p_fnam.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = f_file
filetype = 'ASC'
has_field_separator = '#'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
data_tab = t_flat
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17
.
IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
SORT t_flat BY posnr .
LOOP AT t_flat INTO st_flat.
MOVE :
st_flat-matnr TO st_head-matnr,
st_flat-werks TO st_head-werks,
st_flat-stlan TO st_head-stlan,
st_flat-stlal TO st_head-stlal,
st_flat-datuv TO st_head-datuv,
st_flat-ztext TO st_head-ztext,
st_flat-bmeng TO st_head-bmeng,
st_flat-bmein TO st_head-bmein,
st_flat-stlst TO st_head-stlst.
at new posnr.
move:
st_flat-posnr to st_item-posnr,
st_flat-postp to st_item-postp,
st_flat-idnrk to st_item-idnrk,
st_flat-menge to st_item-menge,
st_flat-potx1 to st_item-potx1,
st_flat-lgort to st_item-lgort,
st_flat-sanka to st_item-sanka.
ADD 1 TO v_ind.
ENDAT.
MOVE v_ind TO st_head-ind.
MOVE v_ind TO st_item-ind.
APPEND st_head TO t_head.
APPEND st_item TO t_item.
CLEAR st_head.
CLEAR st_item.
*CLEAR v_ind.
ENDLOOP.
CLEAR v_ind.
*perform open_group.
SORT t_item BY ind.
SORT t_head BY ind.
DELETE ADJACENT DUPLICATES FROM t_head.
DELETE ADJACENT DUPLICATES FROM t_item.
LOOP AT t_head INTO st_head.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29N-STLAN'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RC29N-MATNR'
st_head-matnr.
PERFORM bdc_field USING 'RC29N-WERKS'
st_head-werks.
PERFORM bdc_field USING 'RC29N-STLAN'
st_head-stlan.
PERFORM bdc_field USING 'RC29N-STLAL'
st_head-stlal.
PERFORM bdc_field USING 'RC29N-DATUV'
st_head-datuv.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29K-ZTEXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RC29K-ZTEXT'
st_head-ztext.
PERFORM bdc_field USING 'RC29K-BMENG'
st_head-bmeng.
PERFORM bdc_field USING 'RC29K-STLST'
st_head-stlst.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0111'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29K-LABOR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
LOOP AT t_item INTO st_item WHERE ind = st_head-ind.
ADD 1 TO v_no.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29P-POSTP(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
CONCATENATE 'RC29P-IDNRK(' v_no ')' INTO v_fld.
CONDENSE v_fld.
PERFORM bdc_field USING v_fld
st_item-idnrk.
CONCATENATE 'RC29P-MENGE(' v_no ')' INTO v_fld.
CONDENSE v_fld.
PERFORM bdc_field USING v_fld
st_item-menge.
CONCATENATE 'RC29P-MEINS(' v_no ')' INTO v_fld.
CONDENSE v_fld.
PERFORM bdc_field USING v_fld
st_item-meins.
CONCATENATE 'RC29P-POSTP(' v_no ')' INTO v_fld.
CONDENSE v_fld.
PERFORM bdc_field USING v_fld
st_item-postp.
PERFORM bdc_field USING 'BDC_SUBSCR'
'SAPLCSDI'.
v_no = 1.
ENDLOOP.
CLEAR v_no.
PERFORM bdc_field USING 'BDC_OKCODE'
'=FCBU'.
CALL TRANSACTION 'CS01' USING t_bdcdata MODE 'A'
UPDATE 'A' MESSAGES INTO t_bdcmsg.
REFRESH t_bdcdata.
CLEAR t_bdcdata.
*
ENDLOOP.
PERFORM fr_format_message.
-
Start new screen *
-
FORM bdc_dynpro USING program dynpro.
CLEAR st_bdcdata.
st_bdcdata-program = program.
st_bdcdata-dynpro = dynpro.
st_bdcdata-dynbegin = 'X'.
APPEND st_bdcdata TO t_bdcdata.
ENDFORM. "BDC_DYNPRO
-
Insert field *
-
FORM bdc_field USING fnam fval.
IF fval space. "NODATA.
CLEAR st_bdcdata.
st_bdcdata-fnam = fnam.
st_bdcdata-fval = fval.
APPEND st_bdcdata TO t_bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
&----
FORM sub_validate_txt_type .
DATA : str1 TYPE localfile,
str2 TYPE char3.
SPLIT p_fnam AT '.'
INTO str1 str2.
TRANSLATE str2 TO LOWER CASE.
IF str2 NE 'txt'.
please enter '.txt' file format
MESSAGE i001(zmsg).
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. "sub_validate_txt_type.
Regards.
client using ECC6.0 ,, Actually we are converting legacy data (Excel) in to SAP R/3 . we are writing BDC program for this.
Any functional modules or BAPI are avilabe for convert data in to SAP R/3 for CS01 transaction. If any one know exact information give example and
parameters also..
2008 Jan 14 4:43 AM
BAPI related to BOM:
BAPI_MATERIAL_BOM_GROUP_CREATE Creation of a material BOM group
BAPI_MAT_BOM_EXISTENCE_CHECK Check whether BOM for material exists
BAPI_BOM_UPLOAD_SAVE Main Module for BOM Update (Upload from CRM)
Regards.
2008 Jan 14 4:47 AM
Check this BDC of CS01
&----
*& Report YCS01_TEST
*&
&----
*&
*&
&----
REPORT ycs01_test.
TYPE-POOLS truxs.
DATA:f_file TYPE string.
*TYPES: BEGIN OF ty_flat, " structure for flat file
*string(200),
*END OF ty_flat.
TYPES: BEGIN OF ty_head, " structure for header file
ind(2) TYPE n,
matnr(18) ,
werks(4) ,
stlan(1) ,
stlal(2) ,
datuv(10) ,
ztext(40),
bmeng(13) ,
bmein(3),
stlst(2) ,
END OF ty_head.
TYPES :BEGIN OF ty_item, "structure for item file
ind(2) TYPE n,
postp(1) ,
posnr(4) ,
idnrk(18) ,
menge(13),
meins(3) ,
potx1(40),
lgort(4) ,
sanka(1),
END OF ty_item.
TYPES :BEGIN OF ty_flat, " structure for final file
matnr(18) ,
werks(4) ,
stlan(1) ,
stlal(2) ,
datuv(10) ,
ztext(40),
bmeng(13) ,
bmein(3),
stlst(2) ,
postp(1) ,
posnr(4) ,
idnrk(18) ,
menge(13),
meins(3) ,
potx1(40),
lgort(4) ,
sanka(1),
END OF ty_flat.
-
INTERNAL TABLE DECLARATIONS *
-
DATA : t_flat TYPE TABLE OF ty_flat,
*t_flat1 TYPE TABLE OF ty_flat1,
t_head TYPE TABLE OF ty_head,
t_item TYPE TABLE OF ty_item,
t_bdcdata TYPE TABLE OF bdcdata,
t_bdcmsg TYPE TABLE OF bdcmsgcoll.
-
WORK AREA DECLARATIONS *
-
DATA : st_flat LIKE LINE OF t_flat,
*st_flat1 LIKE LINE OF t_flat1,
st_head LIKE LINE OF t_head,
st_item LIKE LINE OF t_item,
st_bdcdata LIKE LINE OF t_bdcdata,
st_bdcmsg LIKE LINE OF t_bdcmsg.
-
VARIABLES *
-
DATA : v_ind(2) TYPE n, " value 1,
v_fld(20),
v_no(2) TYPE n.
-
SELECTION SCREEN *
-
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. "selection screen
PARAMETERS: p_fnam TYPE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fnam.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ' '
IMPORTING
file_name = p_fnam.
IF p_fnam IS NOT INITIAL.
VALIDATE FILE TYPE
PERFORM sub_validate_txt_type.
ENDIF.
START-OF-SELECTION.
f_file = p_fnam.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = f_file
filetype = 'ASC'
has_field_separator = '#'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
data_tab = t_flat
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17
.
IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
SORT t_flat BY posnr .
LOOP AT t_flat INTO st_flat.
MOVE :
st_flat-matnr TO st_head-matnr,
st_flat-werks TO st_head-werks,
st_flat-stlan TO st_head-stlan,
st_flat-stlal TO st_head-stlal,
st_flat-datuv TO st_head-datuv,
st_flat-ztext TO st_head-ztext,
st_flat-bmeng TO st_head-bmeng,
st_flat-bmein TO st_head-bmein,
st_flat-stlst TO st_head-stlst.
at new posnr.
move:
st_flat-posnr to st_item-posnr,
st_flat-postp to st_item-postp,
st_flat-idnrk to st_item-idnrk,
st_flat-menge to st_item-menge,
st_flat-potx1 to st_item-potx1,
st_flat-lgort to st_item-lgort,
st_flat-sanka to st_item-sanka.
ADD 1 TO v_ind.
ENDAT.
MOVE v_ind TO st_head-ind.
MOVE v_ind TO st_item-ind.
APPEND st_head TO t_head.
APPEND st_item TO t_item.
CLEAR st_head.
CLEAR st_item.
*CLEAR v_ind.
ENDLOOP.
CLEAR v_ind.
*perform open_group.
SORT t_item BY ind.
SORT t_head BY ind.
DELETE ADJACENT DUPLICATES FROM t_head.
DELETE ADJACENT DUPLICATES FROM t_item.
LOOP AT t_head INTO st_head.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29N-STLAN'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RC29N-MATNR'
st_head-matnr.
PERFORM bdc_field USING 'RC29N-WERKS'
st_head-werks.
PERFORM bdc_field USING 'RC29N-STLAN'
st_head-stlan.
PERFORM bdc_field USING 'RC29N-STLAL'
st_head-stlal.
PERFORM bdc_field USING 'RC29N-DATUV'
st_head-datuv.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29K-ZTEXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RC29K-ZTEXT'
st_head-ztext.
PERFORM bdc_field USING 'RC29K-BMENG'
st_head-bmeng.
PERFORM bdc_field USING 'RC29K-STLST'
st_head-stlst.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0111'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29K-LABOR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
LOOP AT t_item INTO st_item WHERE ind = st_head-ind.
ADD 1 TO v_no.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RC29P-POSTP(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
CONCATENATE 'RC29P-IDNRK(' v_no ')' INTO v_fld.
CONDENSE v_fld.
PERFORM bdc_field USING v_fld
st_item-idnrk.
CONCATENATE 'RC29P-MENGE(' v_no ')' INTO v_fld.
CONDENSE v_fld.
PERFORM bdc_field USING v_fld
st_item-menge.
CONCATENATE 'RC29P-MEINS(' v_no ')' INTO v_fld.
CONDENSE v_fld.
PERFORM bdc_field USING v_fld
st_item-meins.
CONCATENATE 'RC29P-POSTP(' v_no ')' INTO v_fld.
CONDENSE v_fld.
PERFORM bdc_field USING v_fld
st_item-postp.
PERFORM bdc_field USING 'BDC_SUBSCR'
'SAPLCSDI'.
v_no = 1.
ENDLOOP.
CLEAR v_no.
PERFORM bdc_field USING 'BDC_OKCODE'
'=FCBU'.
CALL TRANSACTION 'CS01' USING t_bdcdata MODE 'A'
UPDATE 'A' MESSAGES INTO t_bdcmsg.
REFRESH t_bdcdata.
CLEAR t_bdcdata.
*
ENDLOOP.
PERFORM fr_format_message.
-
Start new screen *
-
FORM bdc_dynpro USING program dynpro.
CLEAR st_bdcdata.
st_bdcdata-program = program.
st_bdcdata-dynpro = dynpro.
st_bdcdata-dynbegin = 'X'.
APPEND st_bdcdata TO t_bdcdata.
ENDFORM. "BDC_DYNPRO
-
Insert field *
-
FORM bdc_field USING fnam fval.
IF fval space. "NODATA.
CLEAR st_bdcdata.
st_bdcdata-fnam = fnam.
st_bdcdata-fval = fval.
APPEND st_bdcdata TO t_bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
&----
FORM sub_validate_txt_type .
DATA : str1 TYPE localfile,
str2 TYPE char3.
SPLIT p_fnam AT '.'
INTO str1 str2.
TRANSLATE str2 TO LOWER CASE.
IF str2 NE 'txt'.
please enter '.txt' file format
MESSAGE i001(zmsg).
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. "sub_validate_txt_type.
Regards.
2008 Jan 14 5:36 AM
Hi Sravan,
Thanks for your qucik answer.
Which method is the best method for uploading data from legacy to R/3 for CS01 Trnasaction Data is not huge. here is my flat file structute.
I am creating BDC call transaction method.. is it fine .. whats your suggestion..
MATNR 18
WERKS 4
STLAN 1
AENNR 12
DATUV 8
ZTEXT 40
BMENG 13
STLST 2
IDNRK 18
MENGE 13
MEINS 3
POSTP 1
KTEXT 40
PREIS 11
EKGRP 3
MATKL 9
**
And can you tell me any relation in Header Table Entries or Item level entries After inserting data what are the
tables i need to check for the data is loading correctly or not like MARA and what other tables
i have to check for CS01 Transaction
2008 Jan 14 5:39 AM
Hi
You can FM : CSAP_MAT_BOM_MAINTAIN. It is working fine to create material bom.
L.Velu
2008 Jan 14 6:07 AM
velu,
can you provide one example on this .
CSAP_MAT_BOM_MAINTAIN
2008 Jan 14 6:11 AM
CSAP_MAT_BOM_READ
Sample (from http://www.erpgenie.com/abap/functions.htm)
data: begin of tstk2 occurs 0.
include structure stko_api02.
data: end of tstk2.
data: begin of tstp2 occurs 0.
include structure stpo_api02.
data: end of tstp2.
data: begin of tdep_data occurs 0.
include structure csdep_data.
data: end of tdep_data.
data: begin of tdep_descr occurs 0.
include structure csdep_descr.
data: end of tdep_descr.
data: begin of tdep_source occurs 0.
include structure csdep_source.
data: end of tdep_source.
data: begin of tdep_order occurs 0.
include structure csdep_order.
data: end of tdep_order.
data: begin of tdep_doc occurs 0.
include structure csdep_doc.
data: end of tdep_doc.
data: flg_warning like capiflag-flwarning.
call function 'CSAP_MAT_BOM_READ'
exporting
material = 'MAT100'
plant = '0001'
bom_usage = '1'
valid_from = '20.12.1996'
valid_to
importing
fl_warning = flg_warning
tables
t_stko = tstk2
t_stpo = tstp2
t_dep_data = tdep_data
t_dep_descr = tdep_descr
t_dep_source = tdep_source
t_dep_order = tdep_order
t_dep_doc = tdep_doc
exceptions
error = 1.
Reward if useful
Edited by: Sravan Prakash.V on Jan 14, 2008 11:42 AM
2008 Jan 14 6:24 AM
sravan,
BDC code is usefull...
Can you answer my previous question in same thread related to BDC.
Vamsii...
2008 Jan 14 7:40 AM
Hi ,
As BOM is critical data. Manage to write a program using recoding would be time consuming.
If you have already developed a program using the FM and its working fine then its Ok.
If the client is giving the excel sheet to the upload the data then try to use the lsmw program using the std sap program given.
Thanks
Ravi
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |