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

BDC3

Former Member
0 Likes
873

Hi,

please send bdc code for t-code CS01.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
663

Hi if need full to u please give me max reward point.

&*********************************************************************

&*********************************************************************

report ZPP_CS01_BDC

no standard page heading line-size 255.

************************************************************************

  • D A T A D E C L A R A T I O N *

************************************************************************

TYPES: BEGIN OF TY_TABDATA,

MATNR TYPE RC29N-MATNR,"equipmnet no

WERKS TYPE RC29N-WERKS,"storage location

STLAN TYPE RC29N-STLAN,"BOM Usage

STLAL TYPE RC29N-STLAL,"Alternative

  • BOMTXT(1000),"HEADER TEXT

BMENG(16),"BASIS QUANTITY

END OF TY_TABDATA.

TYPES: BEGIN OF TY_BOMTXT,

MATNR TYPE RC29N-MATNR,"equipmnet no

WERKS TYPE RC29N-WERKS,"storage location

STLAN TYPE RC29N-STLAN,"BOM Usage

STLAL TYPE RC29N-STLAL,"Alternative

BOMTXT(1000),"HEADER TEXT

END OF TY_BOMTXT.

types: begin of ty_matl,

MATNR TYPE RC29N-MATNR,"equipmnet no

WERKS TYPE RC29N-WERKS,"storage location

STLAN TYPE RC29N-STLAN,"BOM Usage

STLAL TYPE RC29N-STLAL,"Alternative

POSTP TYPE RC29P-POSTP,"item category

IDNRK TYPE RC29P-IDNRK,"component

MENGE(17) ,"quantity

SANKA TYPE RC29P-SANKA,"COST RELEVANCY

FMENG TYPE RC29P-FMENG,"FIXED QUANTITY

end of ty_matl.

*TYPE-POOLS: SYDES.

*----


  • Declaration of the Internal Table & Work Area.

*----


DATA: IT_TABDATA TYPE SORTED TABLE OF TY_TABDATA

WITH UNIQUE KEY MATNR WERKS STLAN STLAL, " Interbnal table for Plant and Storage Location

WA_TABDATA TYPE TY_TABDATA,

IT_MATL TYPE STANDARD TABLE OF TY_MATL,"Internal Table for component and QUANTITY

WA_MATL TYPE TY_MATL,

IT_UPLTXT1 TYPE STANDARD TABLE OF TY_BOMTXT,

WA_UPLTXT1 TYPE TY_BOMTXT.

*----


  • Global data Declaration

*----


DATA: gv_year(4) type c,

gv_mnth(2) type c,

gv_date(2) type c,

gv_datum(10) type c,

GV_ANS TYPE C,

w_filename TYPE string.

*----


  • Declaration of the Internal Table with Header Line comprising of the uploaded data.

*----


DATA: BEGIN OF IT_FILE_UPLOAD OCCURS 0.

INCLUDE STRUCTURE ALSMEX_TABLINE. " Rows for Table with Excel Data

DATA: END OF IT_FILE_UPLOAD.

*----


  • Batch Input Data for a single Transaction.

  • Message of Call Transaction.

*----


DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

MSGTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

************************************************************************

  • S E L E C T I O N - S C R E E N *

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

SELECTION-SCREEN COMMENT /1(75) TEXT-001.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.

PARAMETERS: P_FNAME LIKE RLGRAP-FILENAME OBLIGATORY,

p_file LIKE RLGRAP-FILENAME .

SELECTION-SCREEN: END OF BLOCK B2,

END OF BLOCK B1.

************************************************************************

  • E V E N T : AT S E L E C T I O N - S C R E E N *

************************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

  • PROGRAM_NAME = SYST-REPID

  • DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = ' '

STATIC = 'X'

  • MASK = '.'

CHANGING

FILE_NAME = P_FNAME

  • EXCEPTIONS

  • MASK_TOO_LONG = 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.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

call function 'KD_GET_FILENAME_ON_F4'

EXPORTING

  • PROGRAM_NAME = SYST-REPID

  • DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = ' '

STATIC = 'X'

  • MASK = ' '

changing

file_name = p_file

exceptions

mask_too_long = 1

others = 2

.

if sy-subrc <> 0.

  • message e000(zp) with 'File name invalid'.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

************************************************************************

  • E V E N T : S T A R T - O F - S E L E C T I O N *

************************************************************************

START-OF-SELECTION.

  • --------------------------------------

  • Upload Excel file into Internal Table.

  • --------------------------------------

PERFORM UPLOAD_EXCEL_FILE.

if p_file is not initial.

PERFORM UPLOAD_TEXT_FILE.

endif.

IF NOT IT_FILE_UPLOAD IS INITIAL.

  • IF NOT IT_UPLTXT1 IS INITIAL.

  • ----------------------------------------------------

  • Confirm whether you want to proceed with the Upload.

  • ----------------------------------------------------

PERFORM CONFIRM_UPLOAD.

IF GV_ANS EQ '1'.

  • -------------------------------------------------------

  • Organize the uploaded data into another Internal Table.

  • -------------------------------------------------------

PERFORM ORGANIZE_UPLOADED_DATA.

  • -----------------------------------

  • Kick-start BDC Operation

  • ------------------------

PERFORM BDC_OPERATION.

ENDIF.

ELSE.

LEAVE PROGRAM.

  • ENDIF.

ENDIF.

&----


*& Form UPLOAD_EXCEL_FILE

&----


----


FORM UPLOAD_EXCEL_FILE .

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = P_FNAME

I_BEGIN_COL = 2

I_BEGIN_ROW = 6

I_END_COL = 10

I_END_ROW = 9999

TABLES

INTERN = IT_FILE_UPLOAD

EXCEPTIONS

INCONSISTENT_PARAMETERS = 1

UPLOAD_OLE = 2

OTHERS = 3

.

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

&----


*& Form CONFIRM_UPLOAD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CONFIRM_UPLOAD .

CALL FUNCTION 'POPUP_TO_CONFIRM'

EXPORTING

TITLEBAR = 'Pop-Up to Confirm'

  • DIAGNOSE_OBJECT = ' '

TEXT_QUESTION = 'Do you like to proceed with the Upload ???'

  • TEXT_BUTTON_1 = 'Ja'(001)

  • ICON_BUTTON_1 = ' '

  • TEXT_BUTTON_2 = 'Nein'(002)

  • ICON_BUTTON_2 = ' '

  • DEFAULT_BUTTON = '1'

  • DISPLAY_CANCEL_BUTTON = 'X'

  • USERDEFINED_F1_HELP = ' '

  • START_COLUMN = 25

  • START_ROW = 6

  • POPUP_TYPE =

  • IV_QUICKINFO_BUTTON_1 = ' '

  • IV_QUICKINFO_BUTTON_2 = ' '

IMPORTING

ANSWER = GV_ANS

  • TABLES

  • PARAMETER =

EXCEPTIONS

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

ENDIF.

ENDFORM. " CONFIRM_UPLOAD

&----


*& Form ORGANIZE_UPLOADED_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ORGANIZE_UPLOADED_DATA .

DATA : GV_TOTROW TYPE I,"No of records

GV_ROW TYPE I.

GV_TOTROW = 1.

SORT IT_FILE_UPLOAD BY ROW

COL.

LOOP AT IT_FILE_UPLOAD. " WHERE VALUE <> space.

GV_TOTROW = IT_FILE_UPLOAD-ROW.

ENDLOOP.

GV_ROW = 1.

WHILE GV_ROW <= GV_TOTROW.

LOOP AT IT_FILE_UPLOAD WHERE ROW = GV_ROW.

CASE IT_FILE_UPLOAD-COL.

WHEN '0001'.

WA_TABDATA-MATNR = IT_FILE_UPLOAD-VALUE.

WA_MATL-MATNR = IT_FILE_UPLOAD-VALUE.

WHEN '0002'.

WA_TABDATA-WERKS = IT_FILE_UPLOAD-VALUE.

WA_MATL-WERKS = IT_FILE_UPLOAD-VALUE.

WHEN '0003'.

WA_MATL-STLAN = IT_FILE_UPLOAD-VALUE.

WA_TABDATA-STLAN = IT_FILE_UPLOAD-VALUE.

WHEN '0004'.

WA_MATL-STLAL = IT_FILE_UPLOAD-VALUE.

WA_TABDATA-STLAL = IT_FILE_UPLOAD-VALUE.

WHEN '0005'.

WA_TABDATA-BMENG = IT_FILE_UPLOAD-VALUE.

WHEN '0006'.

WA_MATL-POSTP = IT_FILE_UPLOAD-VALUE.

WHEN '007'.

WA_MATL-IDNRK = IT_FILE_UPLOAD-VALUE.

WHEN '0008'.

WA_MATL-MENGE = IT_FILE_UPLOAD-VALUE.

WHEN '009'.

WA_MATL-FMENG = IT_FILE_UPLOAD-VALUE.

ENDCASE.

ENDLOOP.

GV_ROW = GV_ROW + 1.

INSERT WA_TABDATA INTO TABLE IT_TABDATA .

APPEND WA_MATL TO IT_MATL.

CLEAR :WA_TABDATA,WA_MATL.

ENDWHILE.

ENDFORM. " ORGANIZE_UPLOADED_DATA

&----


*& Form BDC_OPERATION

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BDC_OPERATION .

DATA: LC_TEXT(40) TYPE C VALUE 'TEST',

LC_TEXT2(40) TYPE C ,

LC_VAR1(4) TYPE N,

LC_VAR2(4) TYPE N VALUE 40,

LOOP_CNTR(3) TYPE N VALUE 3,

FNAM(40),

LC_ROWCNTR(3) TYPE N,

LC_FLDLTH(3) TYPE N,

LINE_CNTR(3) TYPE N value 2,

GV_TXPARGRAPH(40).

LOOP AT IT_TABDATA INTO WA_TABDATA.

CLEAR BDCDATA.

REFRESH BDCDATA.

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'

WA_TABDATA-MATNR.

perform bdc_field using 'RC29N-WERKS'

WA_TABDATA-WERKS.

perform bdc_field using 'RC29N-STLAN'

WA_TABDATA-STLAN.

perform bdc_field using 'RC29N-STLAL'

WA_TABDATA-STLAL.

gv_year = sy-datum+0(4).

gv_mnth = sy-datum+4(2).

gv_date = sy-datum+6(2).

concatenate gv_date '.' gv_mnth '.' gv_year into gv_datum.

perform bdc_field using 'RC29N-DATUV'

GV_DATUM.

***CHECK FOR THE EXISTENCE OF BOM HEADER TEXT*******************************

READ TABLE IT_UPLTXT1 INTO WA_UPLTXT1 WITH KEY MATNR = WA_TABDATA-MATNR

WERKS = WA_TABDATA-WERKS

STLAN = WA_TABDATA-STLAN

STLAL = WA_TABDATA-STLAL.

******************************************************************************

                    • IF BOM HEADER TEXT DOES NOT EXIST BY PASS THE OK-CODE**************

IF SY-SUBRC EQ 0.

perform bdc_dynpro using 'SAPLCSDI' '0110'.

perform bdc_field using 'BDC_OKCODE'

'=LTZU'.

perform bdc_field using 'RC29K-BMENG'

WA_TABDATA-BMENG.

perform bdc_field using 'RC29K-STLST'

'1'.

perform bdc_field using 'BDC_CURSOR'

'RC29K-EXSTL'.

LOOP AT IT_UPLTXT1 INTO WA_UPLTXT1 WHERE MATNR = WA_TABDATA-MATNR AND

WERKS = WA_TABDATA-WERKS AND

STLAN = WA_TABDATA-STLAN AND

STLAL = WA_TABDATA-STLAL.

CLEAR: LC_FLDLTH, LC_ROWCNTR,LC_VAR1.

*********ONLY 40 CHARACTERS CAN BE UPLOADED IN BDC LONG TEXT FOR A SINGLWE LINE******************

LC_VAR2 = 40.

LC_TEXT = 'TEST'.

*********LOGIC FOR AVOIDING WORD BREAKING*********************************************************

WHILE NOT LC_TEXT IS INITIAL. "LINE_CNTR >= LC_ROWCNTR.

CLEAR LC_TEXT.

CONDENSE WA_UPLTXT1-BOMTXT.

LC_TEXT = WA_UPLTXT1-BOMTXT+LC_VAR1(40).

if LC_TEXT+39 <> SPACE.

LC_FLDLTH = 39.

WHILE LC_TEXT+LC_FLDLTH(1) <> SPACE.

LC_FLDLTH = LC_FLDLTH - 1.

ENDWHILE.

LC_TEXT = WA_UPLTXT1-BOMTXT+LC_VAR1(LC_FLDLTH).

LC_VAR1 = LC_VAR1 + LC_FLDLTH.

LC_VAR2 = LC_VAR2 + LC_FLDLTH.

ELSE.

LC_VAR1 = LC_VAR1 + 40.

LC_VAR2 = LC_VAR2 + 40.

ENDIF.

****************END OF LOGIC TO AVOID WORD BREAKING***************************************************

perform bdc_dynpro using 'SAPLSTXX' '1100'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RSTXT-TXLINE(02)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=POSF'.

CONCATENATE 'RSTXT-TXLINE(' line_cntr ')' INTO FNAM.

***********INSERT * TO UNDERSTAND SYSTEM FOR NEW LINE*************************************************

CONCATENATE 'RSTXT-TXPARGRAPH(' '3' ')' INTO GV_TXPARGRAPH.

PERFORM BDC_FIELD USING GV_TXPARGRAPH '*'.

perform bdc_field using FNAM LC_TEXT.

LC_TEXT2 = WA_UPLTXT1-BOMTXT+LC_VAR2(40).

LINE_CNTR = LINE_CNTR + 1.

LOOP_CNTR = LOOP_CNTR + 1.

IF LOOP_CNTR = 14.

LOOP_CNTR = 3.

ENDIF.

LINE_CNTR = 2.

ENDWHILE.

ENDLOOP.

perform bdc_dynpro using 'SAPLSTXX' '1100'.

perform bdc_field using 'BDC_CURSOR'

FNAM.

perform bdc_field using 'BDC_OKCODE'

'=TXBA'.

perform bdc_dynpro using 'SAPLCSDI' '0110'.

perform bdc_field using 'BDC_CURSOR'

'RC29K-BMENG'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

ELSE.

perform bdc_dynpro using 'SAPLCSDI' '0110'.

perform bdc_field using 'RC29K-BMENG'

WA_TABDATA-BMENG.

perform bdc_field using 'BDC_OKCODE'

'/00'.

ENDIF.

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'

'/00'.

DATA : FNAM1(20) TYPE C,"concatenated field name

IDX1(3) TYPE N VALUE 1."index

IDX1 = 1.

loop at IT_MATL INTO WA_MATL

WHERE MATNR = WA_TABDATA-MATNR AND

WERKS = WA_TABDATA-WERKS AND

STLAN = WA_TABDATA-STLAN AND

STLAL = WA_TABDATA-STLAL.

**************END OF PAGE***********************************

IF IDX1 = 15.

perform bdc_dynpro using 'SAPLCSDI' '0140'.

perform bdc_field using 'BDC_CURSOR'

'RC29P-POSNR(01)'.

perform bdc_field using 'BDC_OKCODE'

'=FCNP'.

MOVE 2 TO IDX1.

ENDIF.

**************************************************************

perform bdc_dynpro using 'SAPLCSDI' '0140'.

perform bdc_field using 'BDC_CURSOR'

'RC29P-POSNR(02)'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

CONCATENATE 'RC29P-IDNRK(' IDX1 ')' INTO FNAM.

perform bdc_field using FNAM

WA_MATL-IDNRK.

CONCATENATE 'RC29P-MENGE(' IDX1 ')' INTO FNAM.

perform bdc_field using FNAM

WA_MATL-MENGE.

CONCATENATE 'RC29P-POSTP(' IDX1 ')' INTO FNAM.

perform bdc_field using FNAM

WA_MATL-POSTP.

perform bdc_dynpro using 'SAPLCSDI' '0130'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'BDC_CURSOR'

'RC29P-FMENG'.

perform bdc_field using 'RC29P-FMENG'

WA_MATL-FMENG.

perform bdc_dynpro using 'SAPLCSDI' '0131'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'BDC_CURSOR'

'RC29P-SANKA'.

  • perform bdc_field using 'RC29P-LGORT'"STORAGE LOACTION FOR PO

  • 'A004'.

perform bdc_field using 'RC29P-SANKA'

'X'.

IDX1 = IDX1 + 1.

ENDLOOP.

perform bdc_dynpro using 'SAPLCSDI' '140'.

perform bdc_field using 'BDC_OKCODE'

'=FCBU'.

  • perform bdc_field using 'BDC_CURSOR'

  • 'RC29K-EXSTL'.

CALL transaction 'CS01' USING BDCDATA

MODE 'E' UPDATE 'A'

MESSAGES INTO MSGTAB.

ENDLOOP.

ENDFORM. " BDC_OPERATION

&----


*& Form UPLOAD_TEXT_FILE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM UPLOAD_TEXT_FILE .

w_filename = P_FILE.

call function 'GUI_UPLOAD'

exporting

filename = w_filename

filetype = 'ASC'

has_field_separator = 'X'

tables

data_tab = IT_UPLTXT1

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.

  • message e000(zp) with 'Error occured while opening file'.

endif.

  • if itab[] is initial.

  • message e000(zp) with 'No records found to upload'.

  • endif.

ENDFORM. " UPLOAD_TEXT_FILE

&----


*& Form BDC_DYNPRO

&----


  • text

----


FORM BDC_DYNPRO USING PROGRAM

DYNPRO.

CLEAR: BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM. " BDC_DYNPRO

&----


*& Form BDC_FIELD

&----


  • text

----


FORM BDC_FIELD USING FNAM

FVAL.

CLEAR: BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

ENDFORM. " BDC_FIELD

2 REPLIES 2
Read only

Former Member
0 Likes
663

&----


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

Reward if useful.

Read only

Former Member
0 Likes
664

Hi if need full to u please give me max reward point.

&*********************************************************************

&*********************************************************************

report ZPP_CS01_BDC

no standard page heading line-size 255.

************************************************************************

  • D A T A D E C L A R A T I O N *

************************************************************************

TYPES: BEGIN OF TY_TABDATA,

MATNR TYPE RC29N-MATNR,"equipmnet no

WERKS TYPE RC29N-WERKS,"storage location

STLAN TYPE RC29N-STLAN,"BOM Usage

STLAL TYPE RC29N-STLAL,"Alternative

  • BOMTXT(1000),"HEADER TEXT

BMENG(16),"BASIS QUANTITY

END OF TY_TABDATA.

TYPES: BEGIN OF TY_BOMTXT,

MATNR TYPE RC29N-MATNR,"equipmnet no

WERKS TYPE RC29N-WERKS,"storage location

STLAN TYPE RC29N-STLAN,"BOM Usage

STLAL TYPE RC29N-STLAL,"Alternative

BOMTXT(1000),"HEADER TEXT

END OF TY_BOMTXT.

types: begin of ty_matl,

MATNR TYPE RC29N-MATNR,"equipmnet no

WERKS TYPE RC29N-WERKS,"storage location

STLAN TYPE RC29N-STLAN,"BOM Usage

STLAL TYPE RC29N-STLAL,"Alternative

POSTP TYPE RC29P-POSTP,"item category

IDNRK TYPE RC29P-IDNRK,"component

MENGE(17) ,"quantity

SANKA TYPE RC29P-SANKA,"COST RELEVANCY

FMENG TYPE RC29P-FMENG,"FIXED QUANTITY

end of ty_matl.

*TYPE-POOLS: SYDES.

*----


  • Declaration of the Internal Table & Work Area.

*----


DATA: IT_TABDATA TYPE SORTED TABLE OF TY_TABDATA

WITH UNIQUE KEY MATNR WERKS STLAN STLAL, " Interbnal table for Plant and Storage Location

WA_TABDATA TYPE TY_TABDATA,

IT_MATL TYPE STANDARD TABLE OF TY_MATL,"Internal Table for component and QUANTITY

WA_MATL TYPE TY_MATL,

IT_UPLTXT1 TYPE STANDARD TABLE OF TY_BOMTXT,

WA_UPLTXT1 TYPE TY_BOMTXT.

*----


  • Global data Declaration

*----


DATA: gv_year(4) type c,

gv_mnth(2) type c,

gv_date(2) type c,

gv_datum(10) type c,

GV_ANS TYPE C,

w_filename TYPE string.

*----


  • Declaration of the Internal Table with Header Line comprising of the uploaded data.

*----


DATA: BEGIN OF IT_FILE_UPLOAD OCCURS 0.

INCLUDE STRUCTURE ALSMEX_TABLINE. " Rows for Table with Excel Data

DATA: END OF IT_FILE_UPLOAD.

*----


  • Batch Input Data for a single Transaction.

  • Message of Call Transaction.

*----


DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

MSGTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

************************************************************************

  • S E L E C T I O N - S C R E E N *

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

SELECTION-SCREEN COMMENT /1(75) TEXT-001.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.

PARAMETERS: P_FNAME LIKE RLGRAP-FILENAME OBLIGATORY,

p_file LIKE RLGRAP-FILENAME .

SELECTION-SCREEN: END OF BLOCK B2,

END OF BLOCK B1.

************************************************************************

  • E V E N T : AT S E L E C T I O N - S C R E E N *

************************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

  • PROGRAM_NAME = SYST-REPID

  • DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = ' '

STATIC = 'X'

  • MASK = '.'

CHANGING

FILE_NAME = P_FNAME

  • EXCEPTIONS

  • MASK_TOO_LONG = 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.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

call function 'KD_GET_FILENAME_ON_F4'

EXPORTING

  • PROGRAM_NAME = SYST-REPID

  • DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = ' '

STATIC = 'X'

  • MASK = ' '

changing

file_name = p_file

exceptions

mask_too_long = 1

others = 2

.

if sy-subrc <> 0.

  • message e000(zp) with 'File name invalid'.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

************************************************************************

  • E V E N T : S T A R T - O F - S E L E C T I O N *

************************************************************************

START-OF-SELECTION.

  • --------------------------------------

  • Upload Excel file into Internal Table.

  • --------------------------------------

PERFORM UPLOAD_EXCEL_FILE.

if p_file is not initial.

PERFORM UPLOAD_TEXT_FILE.

endif.

IF NOT IT_FILE_UPLOAD IS INITIAL.

  • IF NOT IT_UPLTXT1 IS INITIAL.

  • ----------------------------------------------------

  • Confirm whether you want to proceed with the Upload.

  • ----------------------------------------------------

PERFORM CONFIRM_UPLOAD.

IF GV_ANS EQ '1'.

  • -------------------------------------------------------

  • Organize the uploaded data into another Internal Table.

  • -------------------------------------------------------

PERFORM ORGANIZE_UPLOADED_DATA.

  • -----------------------------------

  • Kick-start BDC Operation

  • ------------------------

PERFORM BDC_OPERATION.

ENDIF.

ELSE.

LEAVE PROGRAM.

  • ENDIF.

ENDIF.

&----


*& Form UPLOAD_EXCEL_FILE

&----


----


FORM UPLOAD_EXCEL_FILE .

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = P_FNAME

I_BEGIN_COL = 2

I_BEGIN_ROW = 6

I_END_COL = 10

I_END_ROW = 9999

TABLES

INTERN = IT_FILE_UPLOAD

EXCEPTIONS

INCONSISTENT_PARAMETERS = 1

UPLOAD_OLE = 2

OTHERS = 3

.

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

&----


*& Form CONFIRM_UPLOAD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CONFIRM_UPLOAD .

CALL FUNCTION 'POPUP_TO_CONFIRM'

EXPORTING

TITLEBAR = 'Pop-Up to Confirm'

  • DIAGNOSE_OBJECT = ' '

TEXT_QUESTION = 'Do you like to proceed with the Upload ???'

  • TEXT_BUTTON_1 = 'Ja'(001)

  • ICON_BUTTON_1 = ' '

  • TEXT_BUTTON_2 = 'Nein'(002)

  • ICON_BUTTON_2 = ' '

  • DEFAULT_BUTTON = '1'

  • DISPLAY_CANCEL_BUTTON = 'X'

  • USERDEFINED_F1_HELP = ' '

  • START_COLUMN = 25

  • START_ROW = 6

  • POPUP_TYPE =

  • IV_QUICKINFO_BUTTON_1 = ' '

  • IV_QUICKINFO_BUTTON_2 = ' '

IMPORTING

ANSWER = GV_ANS

  • TABLES

  • PARAMETER =

EXCEPTIONS

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

ENDIF.

ENDFORM. " CONFIRM_UPLOAD

&----


*& Form ORGANIZE_UPLOADED_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ORGANIZE_UPLOADED_DATA .

DATA : GV_TOTROW TYPE I,"No of records

GV_ROW TYPE I.

GV_TOTROW = 1.

SORT IT_FILE_UPLOAD BY ROW

COL.

LOOP AT IT_FILE_UPLOAD. " WHERE VALUE <> space.

GV_TOTROW = IT_FILE_UPLOAD-ROW.

ENDLOOP.

GV_ROW = 1.

WHILE GV_ROW <= GV_TOTROW.

LOOP AT IT_FILE_UPLOAD WHERE ROW = GV_ROW.

CASE IT_FILE_UPLOAD-COL.

WHEN '0001'.

WA_TABDATA-MATNR = IT_FILE_UPLOAD-VALUE.

WA_MATL-MATNR = IT_FILE_UPLOAD-VALUE.

WHEN '0002'.

WA_TABDATA-WERKS = IT_FILE_UPLOAD-VALUE.

WA_MATL-WERKS = IT_FILE_UPLOAD-VALUE.

WHEN '0003'.

WA_MATL-STLAN = IT_FILE_UPLOAD-VALUE.

WA_TABDATA-STLAN = IT_FILE_UPLOAD-VALUE.

WHEN '0004'.

WA_MATL-STLAL = IT_FILE_UPLOAD-VALUE.

WA_TABDATA-STLAL = IT_FILE_UPLOAD-VALUE.

WHEN '0005'.

WA_TABDATA-BMENG = IT_FILE_UPLOAD-VALUE.

WHEN '0006'.

WA_MATL-POSTP = IT_FILE_UPLOAD-VALUE.

WHEN '007'.

WA_MATL-IDNRK = IT_FILE_UPLOAD-VALUE.

WHEN '0008'.

WA_MATL-MENGE = IT_FILE_UPLOAD-VALUE.

WHEN '009'.

WA_MATL-FMENG = IT_FILE_UPLOAD-VALUE.

ENDCASE.

ENDLOOP.

GV_ROW = GV_ROW + 1.

INSERT WA_TABDATA INTO TABLE IT_TABDATA .

APPEND WA_MATL TO IT_MATL.

CLEAR :WA_TABDATA,WA_MATL.

ENDWHILE.

ENDFORM. " ORGANIZE_UPLOADED_DATA

&----


*& Form BDC_OPERATION

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BDC_OPERATION .

DATA: LC_TEXT(40) TYPE C VALUE 'TEST',

LC_TEXT2(40) TYPE C ,

LC_VAR1(4) TYPE N,

LC_VAR2(4) TYPE N VALUE 40,

LOOP_CNTR(3) TYPE N VALUE 3,

FNAM(40),

LC_ROWCNTR(3) TYPE N,

LC_FLDLTH(3) TYPE N,

LINE_CNTR(3) TYPE N value 2,

GV_TXPARGRAPH(40).

LOOP AT IT_TABDATA INTO WA_TABDATA.

CLEAR BDCDATA.

REFRESH BDCDATA.

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'

WA_TABDATA-MATNR.

perform bdc_field using 'RC29N-WERKS'

WA_TABDATA-WERKS.

perform bdc_field using 'RC29N-STLAN'

WA_TABDATA-STLAN.

perform bdc_field using 'RC29N-STLAL'

WA_TABDATA-STLAL.

gv_year = sy-datum+0(4).

gv_mnth = sy-datum+4(2).

gv_date = sy-datum+6(2).

concatenate gv_date '.' gv_mnth '.' gv_year into gv_datum.

perform bdc_field using 'RC29N-DATUV'

GV_DATUM.

***CHECK FOR THE EXISTENCE OF BOM HEADER TEXT*******************************

READ TABLE IT_UPLTXT1 INTO WA_UPLTXT1 WITH KEY MATNR = WA_TABDATA-MATNR

WERKS = WA_TABDATA-WERKS

STLAN = WA_TABDATA-STLAN

STLAL = WA_TABDATA-STLAL.

******************************************************************************

                    • IF BOM HEADER TEXT DOES NOT EXIST BY PASS THE OK-CODE**************

IF SY-SUBRC EQ 0.

perform bdc_dynpro using 'SAPLCSDI' '0110'.

perform bdc_field using 'BDC_OKCODE'

'=LTZU'.

perform bdc_field using 'RC29K-BMENG'

WA_TABDATA-BMENG.

perform bdc_field using 'RC29K-STLST'

'1'.

perform bdc_field using 'BDC_CURSOR'

'RC29K-EXSTL'.

LOOP AT IT_UPLTXT1 INTO WA_UPLTXT1 WHERE MATNR = WA_TABDATA-MATNR AND

WERKS = WA_TABDATA-WERKS AND

STLAN = WA_TABDATA-STLAN AND

STLAL = WA_TABDATA-STLAL.

CLEAR: LC_FLDLTH, LC_ROWCNTR,LC_VAR1.

*********ONLY 40 CHARACTERS CAN BE UPLOADED IN BDC LONG TEXT FOR A SINGLWE LINE******************

LC_VAR2 = 40.

LC_TEXT = 'TEST'.

*********LOGIC FOR AVOIDING WORD BREAKING*********************************************************

WHILE NOT LC_TEXT IS INITIAL. "LINE_CNTR >= LC_ROWCNTR.

CLEAR LC_TEXT.

CONDENSE WA_UPLTXT1-BOMTXT.

LC_TEXT = WA_UPLTXT1-BOMTXT+LC_VAR1(40).

if LC_TEXT+39 <> SPACE.

LC_FLDLTH = 39.

WHILE LC_TEXT+LC_FLDLTH(1) <> SPACE.

LC_FLDLTH = LC_FLDLTH - 1.

ENDWHILE.

LC_TEXT = WA_UPLTXT1-BOMTXT+LC_VAR1(LC_FLDLTH).

LC_VAR1 = LC_VAR1 + LC_FLDLTH.

LC_VAR2 = LC_VAR2 + LC_FLDLTH.

ELSE.

LC_VAR1 = LC_VAR1 + 40.

LC_VAR2 = LC_VAR2 + 40.

ENDIF.

****************END OF LOGIC TO AVOID WORD BREAKING***************************************************

perform bdc_dynpro using 'SAPLSTXX' '1100'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RSTXT-TXLINE(02)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=POSF'.

CONCATENATE 'RSTXT-TXLINE(' line_cntr ')' INTO FNAM.

***********INSERT * TO UNDERSTAND SYSTEM FOR NEW LINE*************************************************

CONCATENATE 'RSTXT-TXPARGRAPH(' '3' ')' INTO GV_TXPARGRAPH.

PERFORM BDC_FIELD USING GV_TXPARGRAPH '*'.

perform bdc_field using FNAM LC_TEXT.

LC_TEXT2 = WA_UPLTXT1-BOMTXT+LC_VAR2(40).

LINE_CNTR = LINE_CNTR + 1.

LOOP_CNTR = LOOP_CNTR + 1.

IF LOOP_CNTR = 14.

LOOP_CNTR = 3.

ENDIF.

LINE_CNTR = 2.

ENDWHILE.

ENDLOOP.

perform bdc_dynpro using 'SAPLSTXX' '1100'.

perform bdc_field using 'BDC_CURSOR'

FNAM.

perform bdc_field using 'BDC_OKCODE'

'=TXBA'.

perform bdc_dynpro using 'SAPLCSDI' '0110'.

perform bdc_field using 'BDC_CURSOR'

'RC29K-BMENG'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

ELSE.

perform bdc_dynpro using 'SAPLCSDI' '0110'.

perform bdc_field using 'RC29K-BMENG'

WA_TABDATA-BMENG.

perform bdc_field using 'BDC_OKCODE'

'/00'.

ENDIF.

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'

'/00'.

DATA : FNAM1(20) TYPE C,"concatenated field name

IDX1(3) TYPE N VALUE 1."index

IDX1 = 1.

loop at IT_MATL INTO WA_MATL

WHERE MATNR = WA_TABDATA-MATNR AND

WERKS = WA_TABDATA-WERKS AND

STLAN = WA_TABDATA-STLAN AND

STLAL = WA_TABDATA-STLAL.

**************END OF PAGE***********************************

IF IDX1 = 15.

perform bdc_dynpro using 'SAPLCSDI' '0140'.

perform bdc_field using 'BDC_CURSOR'

'RC29P-POSNR(01)'.

perform bdc_field using 'BDC_OKCODE'

'=FCNP'.

MOVE 2 TO IDX1.

ENDIF.

**************************************************************

perform bdc_dynpro using 'SAPLCSDI' '0140'.

perform bdc_field using 'BDC_CURSOR'

'RC29P-POSNR(02)'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

CONCATENATE 'RC29P-IDNRK(' IDX1 ')' INTO FNAM.

perform bdc_field using FNAM

WA_MATL-IDNRK.

CONCATENATE 'RC29P-MENGE(' IDX1 ')' INTO FNAM.

perform bdc_field using FNAM

WA_MATL-MENGE.

CONCATENATE 'RC29P-POSTP(' IDX1 ')' INTO FNAM.

perform bdc_field using FNAM

WA_MATL-POSTP.

perform bdc_dynpro using 'SAPLCSDI' '0130'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'BDC_CURSOR'

'RC29P-FMENG'.

perform bdc_field using 'RC29P-FMENG'

WA_MATL-FMENG.

perform bdc_dynpro using 'SAPLCSDI' '0131'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'BDC_CURSOR'

'RC29P-SANKA'.

  • perform bdc_field using 'RC29P-LGORT'"STORAGE LOACTION FOR PO

  • 'A004'.

perform bdc_field using 'RC29P-SANKA'

'X'.

IDX1 = IDX1 + 1.

ENDLOOP.

perform bdc_dynpro using 'SAPLCSDI' '140'.

perform bdc_field using 'BDC_OKCODE'

'=FCBU'.

  • perform bdc_field using 'BDC_CURSOR'

  • 'RC29K-EXSTL'.

CALL transaction 'CS01' USING BDCDATA

MODE 'E' UPDATE 'A'

MESSAGES INTO MSGTAB.

ENDLOOP.

ENDFORM. " BDC_OPERATION

&----


*& Form UPLOAD_TEXT_FILE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM UPLOAD_TEXT_FILE .

w_filename = P_FILE.

call function 'GUI_UPLOAD'

exporting

filename = w_filename

filetype = 'ASC'

has_field_separator = 'X'

tables

data_tab = IT_UPLTXT1

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.

  • message e000(zp) with 'Error occured while opening file'.

endif.

  • if itab[] is initial.

  • message e000(zp) with 'No records found to upload'.

  • endif.

ENDFORM. " UPLOAD_TEXT_FILE

&----


*& Form BDC_DYNPRO

&----


  • text

----


FORM BDC_DYNPRO USING PROGRAM

DYNPRO.

CLEAR: BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM. " BDC_DYNPRO

&----


*& Form BDC_FIELD

&----


  • text

----


FORM BDC_FIELD USING FNAM

FVAL.

CLEAR: BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

ENDFORM. " BDC_FIELD