Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

any BAPI s or functional modules avilabe for Create BOM -- CS01

Former Member
0 Likes
1,565

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..

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,372

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..

8 REPLIES 8
Read only

Former Member
0 Likes
1,372

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.

Read only

Former Member
0 Likes
1,373

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.

Read only

0 Likes
1,372

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

Read only

Former Member
0 Likes
1,372

Hi

You can FM : CSAP_MAT_BOM_MAINTAIN. It is working fine to create material bom.

L.Velu

Read only

0 Likes
1,372

velu,

can you provide one example on this .

CSAP_MAT_BOM_MAINTAIN

Read only

0 Likes
1,372

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

Read only

0 Likes
1,372

sravan,

BDC code is usefull...

Can you answer my previous question in same thread related to BDC.

Vamsii...

Read only

Former Member
0 Likes
1,372

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