2008 Jan 17 6:26 AM
Hi guys,
I am performing BDC on table control.
But its not happening
can any one send some sample code which is simple to understand.
Thanks in advance
Martin
2008 Jan 17 6:27 AM
HI,
Refer the link:
http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
The concept is easy: it has to indicate the index of the table control in the field name, so if you have to populate the first record of table control:
BDC-FIELDNAME = <FIELDNAME>(01).
If you fill the second row:
BDC-FIELDNAME = <FIELDNAME>(02).
and so....
Now the problem is usually on how many records you have to load, because u can fill only the rows of table control available in the screen, If you have more records than it can be displayed yuo have to simulate the command to go next page.
The number of recod can be displayed can depend on pc resolution and many program haven't command to go to next page (in this case it could be impossible create a BDC program9.
A way to create a bdc program resolution indipendent is to work on the first and second row.
- Place the first hit in the first row of bdc;
- Place the second insert in the second row of bdc;
- Place the last hit to the top of table control;
- Place the next hit in the second row;
- Place the last hit to the top of table control;
- Place the next hit in the second row;
- .... and so
For more info: Search in SDN with TABLE CONTROL IN BDC.
Will get a lot of related links.
Reward points if this Helps.
Manish
Hi guys,
I am performing BDC on table control.
But its not happening
can any one send some sample code which is simple to understand.
Thanks in advance
Martin
2008 Jan 17 6:27 AM
HI,
Refer the link:
http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
The concept is easy: it has to indicate the index of the table control in the field name, so if you have to populate the first record of table control:
BDC-FIELDNAME = <FIELDNAME>(01).
If you fill the second row:
BDC-FIELDNAME = <FIELDNAME>(02).
and so....
Now the problem is usually on how many records you have to load, because u can fill only the rows of table control available in the screen, If you have more records than it can be displayed yuo have to simulate the command to go next page.
The number of recod can be displayed can depend on pc resolution and many program haven't command to go to next page (in this case it could be impossible create a BDC program9.
A way to create a bdc program resolution indipendent is to work on the first and second row.
- Place the first hit in the first row of bdc;
- Place the second insert in the second row of bdc;
- Place the last hit to the top of table control;
- Place the next hit in the second row;
- Place the last hit to the top of table control;
- Place the next hit in the second row;
- .... and so
For more info: Search in SDN with TABLE CONTROL IN BDC.
Will get a lot of related links.
Reward points if this Helps.
Manish
2008 Jan 17 6:32 AM
Hello,
This is simple sample code just for table control
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.
Also you can check out following links
[http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm]
[http://www.sap-basis-abap.com/abap/handling-table-control-in-bdc.htm]
Do reward if useful.
Madhura
2008 Jan 17 6:40 AM
Following is a sample code of handling table control in BDC.
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.
Reward points if useful.
2008 Jan 17 7:58 AM
REPORT zxk_01
NO STANDARD PAGE HEADING LINE-SIZE 255.
include bdcrecx1.
TYPES : BEGIN OF ty_data,
line(100) TYPE c,
END OF ty_data.
PARAMETERS: p_pcfile LIKE ibipparms-path DEFAULT 'D:\NKS.TXT'.
DATA : g_filename TYPE string.
TYPES : BEGIN OF ty_file,
lifnr(16) TYPE c, " vendor
bukrs(4) TYPE c, "company code
ktokk(4) TYPE c, " Acc grp
anred(15) TYPE c, " Title
name1(35) TYPE c, " name
sortl(10) TYPE c, " search term
stras(35) TYPE c, " street
ort01(35) TYPE c, " city
ort02(35) TYPE c, " district
land1(3) TYPE c, " country
pfach(10) TYPE c, " PO BOx
spras(2) TYPE c, " language
kunnr(10) TYPE c, " Customer
vbund(6) TYPE c, " trading partner
banks(3) TYPE c, " BANK COUNTRY
bankl(15) TYPE c, " BANK KEY
bankn(18) TYPE c, " BANK ACC
koinh(60) TYPE c, " ACC HOLDER
bkont(2) TYPE c, " CK
bvtyp(4) TYPE c, " BNKT
bkref(20) TYPE c, " REFERENCE DETAILS
namev(35) TYPE c, " first NAME
name2(35) TYPE c, " NAME
telf1(16) TYPE c, " TELEPHONE
abtnr(4) TYPE c, " DEPTT
pafkt(2) TYPE c, " FUNCTION
akont(10) TYPE c, " REC ACCOUNT
zuawa(3) TYPE c, " SORT KEY
lnrze(10) TYPE c, "HEAD OFFICE
fdgrv(10) TYPE c, " CASH MGMT GRP,
frgrp(4) TYPE c, " RELEASE GRP
zterm(4) TYPE c, " PAY TERMS
togru(4) TYPE c, " TOLERENCE GRP,
reprf, "CHECK DOUBLE INV
zwels(10) TYPE c, " PAYMENTS METHODS
zahls, " PAYMENTS BLOCK
hbkid(5) TYPE c, " house bank
zgrup(2) TYPE c, " grouping key
mahna(4) TYPE c, " dunn procedure
mansp, " DUNNING BLOCK'
gmvdt(10) TYPE c, " LEGAL DONE PROCEDURE
lfrma(10) TYPE c, " DUNN RECEPIENT
madat(10) TYPE c, " LAST DUNNED
mahns(1) TYPE c, " dunning level
mgrup(2) TYPE c, " grouping key
busab(2) TYPE c, "dunning clerk
END OF ty_file.
DATA : BEGIN OF it_xk01 OCCURS 0,
lifnr(16) TYPE c, " vendor
bukrs(4) TYPE c, "company code
ktokk(4) TYPE c, " Acc grp
anred(15) TYPE c, " Title
name1(35) TYPE c, " name
sortl(10) TYPE c, " search term
stras(35) TYPE c, " street
ort01(35) TYPE c, " city
ort02(35) TYPE c, " district
land1(3) TYPE c, " country
pfach(10) TYPE c, " PO BOx
spras(2) TYPE c, " language
kunnr(10) TYPE c, " Customer
vbund(6) TYPE c, " trading partner
akont(10) TYPE c, " REC ACCOUNT
zuawa(3) TYPE c, " SORT KEY
lnrze(10) TYPE c, "HEAD OFFICE
fdgrv(10) TYPE c, " CASH MGMT GRP,
frgrp(4) TYPE c, " RELEASE GRP
zterm(4) TYPE c, " PAY TERMS
togru(4) TYPE c, " TOLERENCE GRP,
reprf, "CHECK DOUBLE INV
zwels(10) TYPE c, " PAYMENTS METHODS
zahls, " PAYMENTS BLOCK
hbkid(5) TYPE c, " house bank
zgrup(2) TYPE c, " grouping key
mahna(4) TYPE c, " dunn procedure
mansp, " DUNNING BLOCK'
gmvdt(10) TYPE c, " LEGAL DONE PROCEDURE
lfrma(10) TYPE c, " DUNN RECEPIENT
madat(10) TYPE c, " LAST DUNNED
mahns(1) TYPE c, " dunning level
mgrup(2) TYPE c, " grouping key
busab(2) TYPE c, "dunning clerk
END OF it_xk01.
internal table for bank detaiils
DATA : BEGIN OF it_bank OCCURS 0,
banks(3) TYPE c, " BANK COUNTRY
bankl(15) TYPE c, " BANK KEY
bankn(18) TYPE c, " BANK ACC
koinh(60) TYPE c, " ACC HOLDER
bkont(2) TYPE c, " CK
bvtyp(4) TYPE c, " BNKT
bkref(20) TYPE c, " REFERENCE DETAILS
lifnr(16) TYPE c, " vendor
xezer, " CHECK
END OF it_bank.
INTERNAL TABLE FOR CONTACT PERSON
TYPES : BEGIN OF ty_cust,
lifnr(16) TYPE c,
namev(35) TYPE c, " first NAME
name1(35) TYPE c, " NAME
telf1(16) TYPE c, " TELEPHONE
abtnr(4) TYPE c, " DEPTT
pafkt(2) TYPE c, " FUNCTION
END OF ty_cust.
INTERNAL TABLES DECLARATION
DATA : it_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
it_bdcmsgcoll LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
it_file TYPE TABLE OF ty_file,
it_data TYPE TABLE OF ty_data,
it_cust TYPE TABLE OF ty_cust.
WORK AREAS FOR TYPES
DATA : wa_xk01 LIKE it_xk01,
wa_data TYPE ty_data,
wa_file TYPE ty_file,
wa_bank LIKE it_bank,
wa_cust TYPE ty_cust.
*CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lt_file
filetype = 'ASC'
CHANGING
data_tab = iT_DATA.
IF sy-subrc <> 0.
ENDIF.
g_filename = p_pcfile.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = g_filename "'D:\TESTDATA1_XK01.txt'
filetype = 'TXT'
has_field_separator = 'X'
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 = it_file
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.
LOOP AT it_file INTO wa_file .
ON CHANGE OF WA_FILE-LIFNR.
wa_xk01-lifnr = wa_file-lifnr.
wa_xk01-bukrs = wa_file-bukrs.
wa_xk01-ktokk = wa_file-ktokk.
wa_xk01-anred = wa_file-anred.
wa_xk01-name1 = wa_file-name1.
wa_xk01-sortl = wa_file-sortl.
wa_xk01-stras = wa_file-stras.
wa_xk01-ort01 = wa_file-ort01.
wa_xk01-ort02 = wa_file-ort02.
wa_xk01-land1 = wa_file-land1.
wa_xk01-pfach = wa_file-pfach.
wa_xk01-spras = wa_file-spras.
wa_xk01-kunnr = wa_file-kunnr.
wa_xk01-vbund = wa_file-vbund.
wa_xk01-akont = wa_file-akont.
wa_xk01-zuawa = wa_file-zuawa.
wa_xk01-lnrze = wa_file-lnrze.
wa_xk01-fdgrv = wa_file-fdgrv.
wa_xk01-frgrp = wa_file-frgrp.
wa_xk01-zterm = wa_file-zterm.
wa_xk01-togru = wa_file-togru.
wa_xk01-reprf = wa_file-reprf.
wa_xk01-zwels = wa_file-zwels.
wa_xk01-zahls = wa_file-zahls.
wa_xk01-hbkid = wa_file-hbkid.
wa_xk01-zgrup = wa_file-zgrup.
wa_xk01-mahna = wa_file-mahna.
wa_xk01-mansp = wa_file-mansp.
wa_xk01-gmvdt = wa_file-gmvdt.
wa_xk01-lfrma = wa_file-lfrma.
wa_xk01-madat = wa_file-madat.
wa_xk01-mahns = wa_file-mahns.
wa_xk01-mgrup = wa_file-mgrup.
wa_xk01-busab = wa_file-busab.
APPEND wa_xk01 TO it_xk01.
CLEAR : WA_XK01.
CONTINUE.
ENDON.
IF WA_FILE-BANKS NE ''.
wa_bank-lifnr = wa_file-lifnr.
wa_bank-banks = wa_file-banks.
wa_bank-bankl = wa_file-bankl.
wa_bank-bankn = wa_file-bankn.
wa_bank-koinh = wa_file-koinh.
wa_bank-bkont = wa_file-bkont.
wa_bank-bvtyp = wa_file-bvtyp.
wa_bank-bkref = wa_file-bkref.
wa_cust-lifnr = wa_file-lifnr.
wa_cust-namev = wa_file-namev.
wa_cust-name1 = wa_file-name2.
wa_cust-telf1 = wa_file-telf1.
wa_cust-abtnr = wa_file-abtnr.
wa_cust-pafkt = wa_file-pafkt.
APPEND wa_bank TO it_bank.
APPEND wa_cust TO it_cust.
APPEND wa_xk01 TO it_xk01.
CLEAR : wa_bank , wa_cust.
ENDIF.
ENDLOOP.
START-OF-SELECTION.
LOOP AT it_xk01 INTO wa_xk01.
REFRESH it_bdcdata.
PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF02K-KTOKK'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RF02K-LIFNR'
wa_xk01-lifnr. " vendor
PERFORM bdc_field USING 'RF02K-BUKRS'
wa_xk01-bukrs. " company cpode
PERFORM bdc_field USING 'RF02K-KTOKK'
wa_xk01-ktokk. " Acc group
PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-SPRAS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'LFA1-ANRED'
wa_xk01-anred. " title
PERFORM bdc_field USING 'LFA1-NAME1'
wa_xk01-name1. " name
PERFORM bdc_field USING 'LFA1-SORTL'
wa_xk01-sortl. " ' search term'
PERFORM bdc_field USING 'LFA1-STRAS'
wa_xk01-stras. "street'
PERFORM bdc_field USING 'LFA1-PFACH'
wa_xk01-pfach. " po box
PERFORM bdc_field USING 'LFA1-ORT01'
wa_xk01-ort01. " city
PERFORM bdc_field USING 'LFA1-ORT02'
wa_xk01-ort02. " district
PERFORM bdc_field USING 'LFA1-LAND1'
wa_xk01-land1. " country
PERFORM bdc_field USING 'LFA1-SPRAS'
wa_xk01-spras. " language
PERFORM bdc_dynpro USING 'SAPMF02K' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-VBUND'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'LFA1-KUNNR' " customer
wa_xk01-kunnr.
PERFORM bdc_field USING 'LFA1-VBUND'
wa_xk01-vbund. " trading partner
PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFBK-BKREF(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
DATA : fnam(20) TYPE c,
int TYPE c.
MOVE 1 TO int.
CLEAR wa_bank.
LOOP AT it_bank INTO wa_bank WHERE lifnr = wa_xk01-lifnr.
CONCATENATE 'LFBK-BANKS(' int ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_bank-banks. " city
CONCATENATE 'LFBK-BANKL(' int ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_bank-bankl.
CONCATENATE 'LFBK-BANKN(' int ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_bank-bankn.
CONCATENATE 'LFBK-KOINH(' int ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_bank-koinh.
CONCATENATE 'LFBK-BKONT(' int ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_bank-bkont.
CONCATENATE 'LFBK-BVTYP(' int ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_bank-bvtyp.
CONCATENATE 'LFBK-BKREF(' int ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_bank-bkref.
int = int + 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' '0380'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KNVK-PAFKT(05)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
DATA : fnam1(20) TYPE c,
cnt.
cnt = 1.
CLEAR : wa_cust.
LOOP AT it_cust INTO wa_cust WHERE lifnr = wa_xk01-lifnr.
CONCATENATE 'KNVK-NAMEV(' cnt ')' INTO fnam1.
PERFORM bdc_field USING fnam1
wa_cust-namev.
CONCATENATE 'KNVK-NAME1(' cnt ')' INTO fnam1.
PERFORM bdc_field USING fnam1
wa_cust-name1.
CONCATENATE 'KNVK-TELF1(' cnt ')' INTO fnam1.
PERFORM bdc_field USING fnam1
wa_cust-telf1.
CONCATENATE 'KNVK-ABTNR(' cnt ')' INTO fnam1.
PERFORM bdc_field USING fnam1
wa_cust-abtnr.
CONCATENATE 'KNVK-PAFKT(' cnt ')' INTO fnam1.
PERFORM bdc_field USING fnam1
wa_cust-pafkt.
cnt = cnt + 1.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMF02K' '0380'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KNVK-NAMEV(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0210'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFB1-FRGRP'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'LFB1-AKONT'
wa_xk01-akont. " REC aCC
PERFORM bdc_field USING 'LFB1-ZUAWA'
wa_xk01-zuawa. " SORT KEY
PERFORM bdc_field USING 'LFB1-LNRZE'
wa_xk01-lnrze. " HEAD OFFICE
PERFORM bdc_field USING 'LFB1-FDGRV'
wa_xk01-fdgrv. " CASH MGMT GRP
PERFORM bdc_field USING 'LFB1-FRGRP'
wa_xk01-frgrp. " RELEASE GRP
PERFORM bdc_field USING 'LFB1-CERDT'
''.
PERFORM bdc_dynpro USING 'SAPMF02K' '0215'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFB1-ZGRUP'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'LFB1-ZTERM'
wa_xk01-zterm. " PAYMENT TERMS'
PERFORM bdc_field USING 'LFB1-TOGRU'
wa_xk01-togru. " TOLERENCE GRP
PERFORM bdc_field USING 'LFB1-REPRF'
wa_xk01-reprf. " CHECK DOUBLE INV
PERFORM bdc_field USING 'LFB1-ZWELS'
wa_xk01-zwels. " PAYMENT METHOD
PERFORM bdc_field USING 'LFB1-ZAHLS'
wa_xk01-zahls. " PAYMENT BLOCK
PERFORM bdc_field USING 'LFB1-HBKID'
wa_xk01-hbkid. " HOUSE BANK
PERFORM bdc_field USING 'LFB1-ZGRUP'
wa_xk01-zgrup. " GROUPING KEY
PERFORM bdc_dynpro USING 'SAPMF02K' '0220'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFB5-BUSAB'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'LFB5-MAHNA'
wa_xk01-mahna. " DUNN PROCEDURE
PERFORM bdc_field USING 'LFB5-MANSP'
wa_xk01-mansp. " DUNNING BLOCK
PERFORM bdc_field USING 'LFB5-LFRMA'
wa_xk01-lfrma. " Dunn representative
PERFORM bdc_field USING 'LFB5-GMVDT'
wa_xk01-gmvdt. " legal dunn proc
PERFORM bdc_field USING 'LFB5-MADAT'
wa_xk01-madat. " last dunned
PERFORM bdc_field USING 'LFB5-MAHNS'
wa_xk01-mahns. " dunn level
PERFORM bdc_field USING 'LFB5-BUSAB'
wa_xk01-busab. " dunning clerk
PERFORM bdc_field USING 'LFB1-MGRUP'
wa_xk01-mgrup. " grouping key
CALL TRANSACTION 'XK01' USING it_bdcdata
MODE 'A'.
ENDLOOP.
----
Start new screen *
----
FORM bdc_dynpro USING program dynpro.
CLEAR it_bdcdata.
it_bdcdata-program = program.
it_bdcdata-dynpro = dynpro.
it_bdcdata-dynbegin = 'X'.
APPEND it_bdcdata.
ENDFORM. "BDC_DYNPRO
*----
*
Insert field
*
*----
*
FORM bdc_field USING fnam fval TYPE any.
CLEAR it_bdcdata.
it_bdcdata-fnam = fnam.
it_bdcdata-fval = fval.
APPEND it_bdcdata.
ENDFORM. "bdc_field
*perform close_group.
2008 Jan 17 12:05 PM
hi martin,
i am sending the code for performing bdc on XK01 transaction.
i hope u could easily create the flat file as i have taken all mandatory fields.
REPORT ZNSK_TABLE_CONTROL
NO STANDARD PAGE HEADING LINE-SIZE 255.
&----
*& Structure Declarations
&----
Structure declaration for Header STRUCTURE
TYPES: BEGIN OF TY_HEADER,
LIFNR TYPE LIF16,
BUKRS TYPE BUKRS,
EKORG TYPE EKORG,
KTOKK TYPE KTOKK,
ANRED TYPE ANRED,
NAME1 TYPE NAME1_GP,
SORTL TYPE SORTL,
LAND1 TYPE LAND1_GP,
AKONT TYPE AKONT,
FDGRV TYPE FDGRV,
WAERS TYPE BSTWA,
END OF TY_HEADER,
STRUCTURE DECLARATION FOR ITEM STRUCTURE
BEGIN OF TY_ITEM,
LIFNR TYPE LIF16,
BANKS TYPE BANKS,
BANKL TYPE BANKK,
BANKN TYPE BANKN,
KOINH TYPE KOINH_FI,
END OF TY_ITEM,
STRUCTURE DECLARATION FOR SOURCE STRUCTURE
BEGIN OF TY_UPLOAD,
F1 TYPE CHAR16,
F2 TYPE CHAR4,
F3 TYPE CHAR15,
F4(18) TYPE C,
F5(60) TYPE C,
F6 TYPE CHAR35,
F7 TYPE CHAR10,
F8 TYPE CHAR3,
F9 TYPE CHAR10,
F10 TYPE CHAR10,
F11 TYPE CHAR13,
END OF TY_UPLOAD.
&----
*& Internal table Declarations
&----
INTERNAL TABLE FOR TY_UPLOAD
DATA: T_UPLOAD TYPE STANDARD TABLE OF TY_UPLOAD INITIAL SIZE 0,
INTENAL TABLE FOR TY_HEADER
T_HEADER TYPE STANDARD TABLE OF TY_HEADER INITIAL SIZE 0,
INTERNAL TABLE FOR TY_ITEM
T_ITEM TYPE STANDARD TABLE OF TY_ITEM INITIAL SIZE 0,
INTERNAL TABLE FOR BDCDATA
T_BDCDATA TYPE STANDARD TABLE OF BDCDATA INITIAL SIZE 0,
&----
*& WORK AREA Declarations
&----
WORK AREA FOR SOURCE STRUCTURE
W_UPLOAD TYPE TY_UPLOAD,
WORK AREA FOR HEADER STRUCTURE
W_HEADER TYPE TY_HEADER,
WORK AREA FOR ITEM STRUCTURE
W_ITEM TYPE TY_ITEM,
WORK AREA FOR BDCDATA.
W_BDCDATA TYPE BDCDATA,
ADDITIONAL WORK AREA FOR UPLOAD STRUCTURE
L_UPLOAD TYPE TY_UPLOAD.
&----
*& SELECTION-SCREEN Declarations
&----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS: P_FLNAME TYPE FILENAME.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
UPLOADING THE DATA
PERFORM UPLOAD_DATA.
POPULATING THE BDCDATA TABLE
PERFORM BDC_DATA.
INCLUDE BDCRECX1.
START-OF-SELECTION.
&----
*& Form UPLOAD_DATA
&----
text
----
FORM UPLOAD_DATA .
DATA: L_FLNAME TYPE STRING .
L_FLNAME = P_FLNAME.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_FLNAME
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = T_UPLOAD.
LOOP AT T_UPLOAD INTO L_UPLOAD.
W_UPLOAD = L_UPLOAD.
AT NEW F1.
W_HEADER-LIFNR = W_UPLOAD-F1.
W_HEADER-BUKRS = W_UPLOAD-F2.
W_HEADER-EKORG = W_UPLOAD-F3.
W_HEADER-KTOKK = W_UPLOAD-F4.
W_HEADER-ANRED = W_UPLOAD-F5.
W_HEADER-NAME1 = W_UPLOAD-F6.
W_HEADER-SORTL = W_UPLOAD-F7.
W_HEADER-LAND1 = W_UPLOAD-F8.
W_HEADER-AKONT = W_UPLOAD-F9.
W_HEADER-FDGRV = W_UPLOAD-F10.
W_HEADER-WAERS = W_UPLOAD-F11.
APPEND W_HEADER TO T_HEADER.
CLEAR W_UPLOAD.
CONTINUE.
ENDAT.
W_ITEM-LIFNR = W_UPLOAD-F1.
W_ITEM-BANKS = W_UPLOAD-F2.
W_ITEM-BANKL = W_UPLOAD-F3.
W_ITEM-BANKN = W_UPLOAD-F4.
W_ITEM-KOINH = W_UPLOAD-F5.
APPEND W_ITEM TO T_ITEM.
CLEAR W_ITEM.
ENDLOOP.
ENDFORM. " UPLOAD_DATA
&----
*& Form BDC_DATA
&----
text
----
FORM BDC_DATA .
HEADER SCREEN(1)
CLEAR W_HEADER.
LOOP AT T_HEADER INTO W_HEADER.
REFRESH T_BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02K-EKORG'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RF02K-LIFNR'
W_HEADER-LIFNR.
PERFORM BDC_FIELD USING 'RF02K-BUKRS'
W_HEADER-BUKRS.
PERFORM BDC_FIELD USING 'RF02K-EKORG'
W_HEADER-EKORG.
PERFORM BDC_FIELD USING 'RF02K-KTOKK'
W_HEADER-KTOKK.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-LAND1'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'LFA1-ANRED'
W_HEADER-ANRED.
PERFORM BDC_FIELD USING 'LFA1-NAME1'
W_HEADER-NAME1.
PERFORM BDC_FIELD USING 'LFA1-SORTL'
W_HEADER-SORTL.
PERFORM BDC_FIELD USING 'LFA1-LAND1'
W_HEADER-LAND1.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0120'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
ITEM SCREEN
DATA: N TYPE C.
N = 1.
CLEAR W_ITEM.
LOOP AT T_ITEM INTO W_ITEM WHERE LIFNR = W_HEADER-LIFNR.
DATA: L_BANKS TYPE CHAR20,
L_BANKL TYPE CHAR20,
L_BANKN TYPE CHAR20,
L_BANKK TYPE CHAR20.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-KOINH(03)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
CONCATENATE 'LFBK-BANKS' '(' '0' N ')' INTO L_BANKS.
PERFORM BDC_FIELD USING L_BANKS
W_ITEM-BANKS.
CONCATENATE 'LFBK-BANKL' '(' '0' N ')' INTO L_BANKL.
PERFORM BDC_FIELD USING L_BANKL
W_ITEM-BANKL.
CONCATENATE 'LFBK-BANKN' '(' '0' N ')' INTO L_BANKN.
PERFORM BDC_FIELD USING L_BANKN
W_ITEM-BANKN.
CONCATENATE 'LFBK-KOINH' '(' '0' N ')' INTO L_BANKK.
PERFORM BDC_FIELD USING L_BANKK
W_ITEM-KOINH.
N = N + 1.
ENDLOOP.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
HEADER SCREEN(2).
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'
W_HEADER-AKONT.
PERFORM BDC_FIELD USING 'LFB1-FDGRV'
W_HEADER-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'
W_HEADER-WAERS.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0320'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02K-LIFNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION 'XK01' USING T_BDCDATA MODE 'A'.
ENDLOOP.
ENDFORM. " BDC_DATA
----
Start new screen *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR W_BDCDATA.
W_BDCDATA-PROGRAM = PROGRAM.
W_BDCDATA-DYNPRO = DYNPRO.
W_BDCDATA-DYNBEGIN = 'X'.
APPEND W_BDCDATA TO T_BDCDATA.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM BDC_FIELD USING FNAM FVAL.
CLEAR W_BDCDATA.
W_BDCDATA-FNAM = FNAM.
W_BDCDATA-FVAL = FVAL.
APPEND W_BDCDATA TO T_BDCDATA.
ENDFORM. "BDC_FIELD
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |