‎2008 Jan 25 8:23 AM
‎2008 Jan 25 8:27 AM
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
‎2008 Jan 25 8:25 AM
&----
*& 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.
‎2008 Jan 25 8:27 AM
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