‎2006 Aug 29 8:09 AM
Hi Friends.
Can u give me simple BDC program to upload data in table from .txt file
‎2006 Aug 29 8:12 AM
hi
good
go through this
REPORT Y730_BDC5 .
*HANDLING TABLE CONTROL IN BDC
DATA : BEGIN OF IT_DUMMY OCCURS 0,
DUMMY(100) TYPE C,
END OF IT_DUMMY.
DATA : BEGIN OF IT_XK01 OCCURS 0,
LIFNR(10) TYPE C,
BUKRS(4) TYPE C,
EKORG(4) TYPE C,
KTOKK(4) TYPE C,
NAME1(30) TYPE C,
SORTL(10) TYPE C,
LAND1(3) TYPE C,
SPRAS(2) TYPE C,
AKONT(6) TYPE C,
FDGRV(2) TYPE C,
WAERS(3) TYPE C,
END OF IT_XK01,
BEGIN OF IT_BANK OCCURS 0,
BANKS(3) TYPE C,
BANKL(10) TYPE C,
BANKN(10) TYPE C,
KOINH(30) TYPE C,
LIFNR(10) TYPE C,
END OF IT_BANK.
DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = 'C:\VENDOR.TXT'
FILETYPE = 'ASC'
TABLES
DATA_TAB = IT_DUMMY.
LOOP AT IT_DUMMY.
IF IT_DUMMY-DUMMY+0(2) = '11'.
IT_XK01-LIFNR = IT_DUMMY-DUMMY+2(10).
IT_XK01-BUKRS = IT_DUMMY-DUMMY+12(4).
IT_XK01-EKORG = IT_DUMMY-DUMMY+16(4).
IT_XK01-KTOKK = IT_DUMMY-DUMMY+20(4).
IT_XK01-NAME1 = IT_DUMMY-DUMMY+24(30).
IT_XK01-SORTL = IT_DUMMY-DUMMY+54(10).
IT_XK01-LAND1 = IT_DUMMY-DUMMY+64(3).
IT_XK01-SPRAS = IT_DUMMY-DUMMY+67(2).
IT_XK01-AKONT = IT_DUMMY-DUMMY+69(6).
IT_XK01-FDGRV = IT_DUMMY-DUMMY+75(2).
IT_XK01-WAERS = IT_DUMMY-DUMMY+77(3).
APPEND IT_XK01.
ELSE.
IT_BANK-BANKS = IT_DUMMY-DUMMY+2(3).
IT_BANK-BANKL = IT_DUMMY-DUMMY+5(10).
IT_BANK-BANKN = IT_DUMMY-DUMMY+15(10).
IT_BANK-KOINH = IT_DUMMY-DUMMY+25(30).
IT_BANK-LIFNR = IT_DUMMY-DUMMY+55(10).
APPEND IT_BANK.
ENDIF.
ENDLOOP.
LOOP AT IT_XK01.
REFRESH IT_BDCDATA.
perform bdc_dynpro using 'SAPMF02K' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF02K-REF_LIFNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02K-LIFNR'
IT_XK01-LIFNR.
perform bdc_field using 'RF02K-BUKRS'
IT_XK01-BUKRS.
perform bdc_field using 'RF02K-EKORG'
IT_XK01-EKORG.
perform bdc_field using 'RF02K-KTOKK'
IT_XK01-KTOKK.
perform bdc_dynpro using 'SAPMF02K' '0110'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-TELX1'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFA1-NAME1'
IT_XK01-NAME1.
perform bdc_field using 'LFA1-SORTL'
IT_XK01-SORTL.
perform bdc_field using 'LFA1-LAND1'
IT_XK01-LAND1.
perform bdc_field using 'LFA1-SPRAS'
IT_XK01-SPRAS.
perform bdc_dynpro using 'SAPMF02K' '0120'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0130'.
perform bdc_field using 'BDC_CURSOR'
'LFBK-KOINH(02)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
DATA : FNAM(20) TYPE C,
IDX TYPE C.
MOVE 1 TO IDX.
LOOP AT IT_BANK WHERE LIFNR = IT_XK01-LIFNR.
CONCATENATE 'LFBK-BANKS(' IDX ')' INTO FNAM.
perform bdc_field using FNAM
IT_BANK-BANKS.
CONCATENATE 'LFBK-BANKL(' IDX ')' INTO FNAM.
perform bdc_field using FNAM
IT_BANK-BANKL.
CONCATENATE 'LFBK-BANKN(' IDX ')' INTO FNAM.
perform bdc_field using FNAM
IT_BANK-BANKN.
CONCATENATE 'LFBK-KOINH(' IDX ')' INTO FNAM.
perform bdc_field using FNAM
IT_BANK-KOINH.
IDX = IDX + 1.
ENDLOOP.
perform bdc_dynpro using 'SAPMF02K' '0130'.
perform bdc_field using 'BDC_CURSOR'
'LFBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02K' '0210'.
perform bdc_field using 'BDC_CURSOR'
'LFB1-FDGRV'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFB1-AKONT'
IT_XK01-AKONT.
perform bdc_field using 'LFB1-FDGRV'
IT_XK01-FDGRV.
perform bdc_dynpro using 'SAPMF02K' '0215'.
perform bdc_field using 'BDC_CURSOR'
'LFB1-ZTERM'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0220'.
perform bdc_field using 'BDC_CURSOR'
'LFB5-MAHNA'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0310'.
perform bdc_field using 'BDC_CURSOR'
'LFM1-WAERS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFM1-WAERS'
IT_XK01-WAERS.
perform bdc_dynpro using 'SAPMF02K' '0320'.
perform bdc_field using 'BDC_CURSOR'
'WYT3-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION 'XK01' USING IT_BDCDATA
MODE 'A'
UPDATE 'S'
MESSAGES INTO IT_BDCMSGCOLL.
ENDLOOP.
FORM BDC_DYNPRO USING PROG SCR.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROG.
IT_BDCDATA-DYNPRO = SCR.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ENDFORM.
FORM BDC_FIELD USING FNAM FVAL.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.
IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA.
ENDFORM.
thanks
mrutyun
‎2006 Aug 29 8:19 AM
hi puru ,
hope this prog. help u.
REPORT ZTESTAB6 .
data P_ROW TYPE I VALUE 1.
data P_ROW1 TYPE I VALUE 1.
INCLUDE bdcrecx1.
DATA: BEGIN OF record OCCURS 0,
lifnr_001(010),
bsart_002(004),
bedat_003(010),
ekorg_004(004),
ekgrp_005(003),
lpein_006(001),
werks_007(004),
ematn_01_008(018),
menge_01_009(017),
ebelp_010(005),
X(3),
END OF record.
START-OF-SELECTION.
PERFORM download.
PERFORM upload.
PERFORM open_group.
LOOP AT record.
PERFORM bdc_dynpro USING 'SAPMM06E' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EKKO-LIFNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EKKO-LIFNR'
record-lifnr_001.
PERFORM bdc_field USING 'RM06E-BSART'
record-bsart_002.
PERFORM bdc_field USING 'RM06E-BEDAT'
record-bedat_003.
PERFORM bdc_field USING 'EKKO-EKORG'
record-ekorg_004.
PERFORM bdc_field USING 'EKKO-EKGRP'
record-ekgrp_005.
PERFORM bdc_field USING 'RM06E-LPEIN'
record-lpein_006.
PERFORM bdc_field USING 'RM06E-WERKS'
record-werks_007.
PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EKPO-MENGE(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EKPO-EMATN(01)'
record-ematn_01_008.
PERFORM bdc_field USING 'EKPO-MENGE(01)'
record-menge_01_009.
PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06E-EBELP'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'RM06E-EBELP'
record-ebelp_010.
PERFORM bdc_transaction USING 'ME21'.
ENDLOOP.
PERFORM close_group.
&----
*& Form download
&----
text
----
--> p1 text
<-- p2 text
----
form download.
DATA: flength TYPE i.
clear : record, record[].
record-lifnr_001 = '5900'.
record-bsart_002 = 'NB'.
record-bedat_003 = '14.07.2005'.
record-ekorg_004 = '3000'.
record-ekgrp_005 = '001'.
record-lpein_006 = 'T'.
record-werks_007 = '3000'.
record-ematn_01_008 = '100-100'.
record-menge_01_009 = '1'.
record-ebelp_010 = '10'.
APPEND record.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
CODEPAGE = 'IBM'
FILENAME = 'D:/Abhi1.xls'
FILETYPE = 'DAT'
ITEM = ' '
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
FILEMASK_MASK = ' '
FILEMASK_TEXT = ' '
FILETYPE_NO_CHANGE = ' '
FILEMASK_ALL = ' '
FILETYPE_NO_SHOW = ' '
SILENT = 'S'
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
ACT_FILENAME =
ACT_FILETYPE =
FILESIZE = flength
CANCEL =
TABLES
data_tab = record
FIELDNAMES =
EXCEPTIONS
INVALID_FILESIZE = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
CUSTOMER_ERROR = 7
OTHERS = 8
.
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. " download
&----
*& Form upload
&----
text
----
--> p1 text
<-- p2 text
----
form upload.
FIELD-SYMBOLS: <f1> TYPE ANY.
data itab like ALSMEX_TABLINE occurs 0 with header line.
DATA COUNTER TYPE I VALUE 1.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = 'D:/Abhi.xls'
i_begin_col = 1
i_begin_row = 1
i_end_col = 11
i_end_row = 2
tables
intern = itab[]
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.
LOOP AT ITAB.
ASSIGN COMPONENT COUNTER OF STRUCTURE RECORD TO <F1>.
<F1> = ITAB-VALUE.
COUNTER = COUNTER + 1.
*IF COUNTER = 11.
IF ITAB-VALUE = 'EOR'.
APPEND RECORD.
COUNTER = 1.
ENDIF.
ENDLOOP.
*LOOP AT ITAB.
*case itab-col.
*when 1.
*record-lifnr_001 = itab-value.
*when 2.
*record-bsart_002 = itab-value.
*when 3.
*record-bedat_003 = itab-value.
*when 4.
*record-ekorg_004 = itab-value.
*when 5.
*record-ekgrp_005 = itab-value.
*when 6.
*record-lpein_006 = itab-value.
*when 7.
*record-werks_007 = itab-value.
*when 8.
*record-ematn_01_008 = itab-value.
*when 9.
*record-menge_01_009 = itab-value.
*when 10.
*record-ebelp_010 = itab-value.
*ENDCASE.
*P_ROW = P_ROW + 1.
*IF P_ROW = 10 OR P_ROW = 20.
*APPEND RECORD.
*ENDIF.
*ENDLOOP.
endform. " upload
‎2006 Aug 29 8:33 AM
hi puru,
ARAMETERS:
P_INFL like RLGRAP-FILENAME.
DATA:
BEGIN OF T_DATA1 OCCURS 0,
RESOURCE(25) TYPE C,
DATE(10) TYPE C,
DURATION TYPE P DECIMALS 2,
ACTIVITY(25) TYPE C,
B_NBILL(1) TYPE C,
END OF T_DATA1,
T_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE,
BEGIN OF T_FINAL OCCURS 0,
RESOURCE(25) TYPE C,
DATE(10) TYPE C,
DURATION(15) TYPE C,
ACTIVITY(25) TYPE C,
B_NBILL(10) TYPE C,
END OF T_FINAL.
DATA : HEADER TYPE XSTRING.
Work Variables Declaration.
CONSTANTS:
W_Y TYPE C VALUE 'Y',
W_N TYPE C VALUE 'N'.
Work area.
DATA:
WA_DATA LIKE T_FINAL.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_INFL.
PERFORM GET_FILENAME CHANGING P_INFL.
----
START-OF-SELECTION.
----
PERFORM UPLOAD_DATA_FROMEXCEL.
PERFORM PROCESS_DATA.
&----
*& Form download_data
&----
text
----
FORM UPLOAD_DATA_FROMEXCEL.
Downloading the data from presentation server
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = p_infl
I_BEGIN_COL = 1
I_BEGIN_ROW = 2
I_END_COL = 8
I_END_ROW = 1000
TABLES
INTERN = T_DATA
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_data_fromexcel
&----
*& Form process_data
&----
text
----
FORM PROCESS_DATA .
T_FINAL-RESOURCE = 'Resource'.
T_FINAL-DATE = 'Date'.
T_FINAL-DURATION = 'Duration'.
T_FINAL-ACTIVITY = 'Activity'.
T_FINAL-B_NBILL = 'Billable'.
APPEND T_FINAL.
SORT T_DATA BY ROW COL.
LOOP AT T_DATA.
CASE T_DATA-COL.
WHEN 3.
T_DATA1-RESOURCE = T_DATA-VALUE.
WHEN 4.
T_DATA1-DATE = T_DATA-VALUE.
WHEN 5.
T_DATA1-DURATION = T_DATA-VALUE.
WHEN 6.
t_data1-activity = t_data-value.
WHEN 7.
T_DATA1-B_NBILL = T_DATA-VALUE.
ENDCASE.
AT END OF ROW.
COLLECT T_DATA1.
ENDAT.
ENDLOOP.
LOOP AT T_DATA1.
T_FINAL-RESOURCE = T_DATA1-RESOURCE.
T_FINAL-DATE = T_DATA1-DATE.
T_FINAL-DURATION = T_DATA1-DURATION.
T_FINAL-ACTIVITY = T_DATA1-ACTIVITY.
T_FINAL-B_NBILL = T_DATA1-B_NBILL.
APPEND T_FINAL.
ENDLOOP.
ENDFORM. " process_data
hope this helps,
do reward if it helps,
priya.
Message was edited by: Priya
‎2006 Aug 30 8:27 AM
loop at itab.
...
...
CALL TRANSACTION 'VD51' USING BDCDATA UPDATE 'S' MODE V_MODE MESSAGES INTO MESSTAB.
CLEAR MESSTAB.
LOOP AT MESSTAB.
MOVE : MESSTAB-msgv1 to v_v1,
MESSTAB-msgv2 to v_v2,
MESSTAB-msgv3 to v_v3,
MESSTAB-msgv4 to v_v4.
CALL FUNCTION 'MESSAGE_PREPARE'
EXPORTING
LANGUAGE = sy-langu
MSG_ID = MESSTAB-MSGID
MSG_NO = MESSTAB-MSGNR
msg_var1 = v_v1
msg_var2 = v_v2
msg_var3 = v_v3
msg_var4 = v_v4
IMPORTING
MSG_TEXT = V_TEXT
EXCEPTIONS
FUNCTION_NOT_COMPLETED = 1
MESSAGE_NOT_FOUND = 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.
move-corresponding wa_itab1 to error_file.
move v_text to error_file-text.
append error_file.
clear v_text.
ENDLOOP.
endloop.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = p_error
FILETYPE = 'DAT'
TABLES
DATA_TAB = ERROR_FILE.
Hope this code may be helpful to u.
I yes reward points.
regards,
sumeet