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

bdc

Former Member
0 Likes
493

Hi All,

i want to uplode data to xk01can any one give the code for me.if my problem will solve i will give max Reward.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
455

Hi Akas,

i thing this code will help u.

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.

3 REPLIES 3
Read only

Former Member
0 Likes
456

Hi Akas,

i thing this code will help u.

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.

Read only

Former Member
0 Likes
455

Hi,

Check this sample code

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.

Regards,

Satish

Read only

Former Member
0 Likes
455

Why don't you use a recording to generate your abap coding automatically?

transaction SM35

Menu "go to recording"

push button "create new recording"

Fill in XK01 and start filling the screens as if you would post data manually.

Once a recording was created, you can generate an abap program automatically: position on your recording and press the "create program" button...