Application Development 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: 

BDC pls help

Former Member
0 Kudos
224

i want to upload (vendor master) data from an excel file to sap using bdc.

can u pls guide me with a sample program.

1 ACCEPTED SOLUTION

gopi_narendra
Active Contributor
0 Kudos
175

Use the BAPI: BAPI_VENDOR_CREATE

See its documentation of how to use it.

Regards

Gopi

7 REPLIES 7

gopi_narendra
Active Contributor
0 Kudos
176

Use the BAPI: BAPI_VENDOR_CREATE

See its documentation of how to use it.

Regards

Gopi

Former Member
0 Kudos
175

I don't think you can use BAPI,

See the example program :

REPORT zmm_vendor_master_upload

NO STANDARD PAGE HEADING

LINE-SIZE 255.

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

  • ABAP Name : ZMM_VENDOR_MASTER_UPLOAD

  • Description : This Program is used to Upload the Vendor Master.

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

  • Standard Include for Selection Screen

INCLUDE bdcrecx1.

  • Internal Table for Upload Data

DATA: BEGIN OF i_vendor OCCURS 0,

bukrs(004), " Company Code

ekorg(004), " Purchase Orgn

ktokk(004), " Account Group

  • Address Screen

anred(015), " Title

name1(035), " Name1

sortl(010), " Sort Field

name2(035), " Name2

name3(035), " Contact Person1

name4(035), " Contact Person 2

stras(035), " Street

pfach(010), " PO Box

ort01(035), " City

pstlz(010), " Postal Code

land1(003), " Country

spras(002), " Language

telf1(016), " Telephone No

telfx(031), " Fax Number

lfurl(132), " URL-Mail Id

  • Material Group Characteristics

  • klart(003), " Class Type '010'

  • class(018), " Class 'Vendor'

  • mname_01(030), " Characteristic

  • mname_02(030), " Characteristic

  • mname_03(030), " Characteristic

mwert_01(030), " Charct.Value

mwert_02(030), " Charct.Value

mwert_03(030), " Charct.Value

  • Control Data

emnfr(010), " Manufact.Part No

  • Bank Details

banks_01(003), " Country of Bank1

banks_02(003), " Country of Bank2

bankl_01(015), " Bank Key of 1

bankl_02(015), " Bank Key of 2

bankn_01(018), " Account No Bank1

bankn_02(018), " Account No Bank2

  • Accounting Info

akont(010), " Reconcillation Account

zuawa(003), " Sort Key

fdgrv(010), " Cash Management Group

  • Payment Transactions

zterm(004), " Payment terms

  • reprf(001), " Check Double Inv.

zwels(010), " Payment Method

hbkid(005), " House Bank

  • xpore(001), " Individ.Payment

  • Correspondence

mahns(001), " Dunning Level

xausz(001), " Account Statement

  • Withholding Tax Details

qland(003), " Withholding Tax Country

witht_01(002), " WH tax Type

  • wt_withcd(002), " WH Tax Code

  • wt_subjct(001), " Indicator:WH Tax

  • Purchasing Data

waers(005), " Currency

zterm1(004), " Payment Terms

END OF i_vendor.

  • Data Variables & Constants

CONSTANTS : c_x VALUE 'X'. " Flag

  • Paramters

PARAMETERS: p_file LIKE ibipparms-path. " Filename

  • At selection-screen on Value Request for file Name

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

  • Get the F4 Values for the File

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

IMPORTING

file_name = p_file.

  • Start of Selection

START-OF-SELECTION.

  • Open the BDC Session

PERFORM open_group.

  • Upload the File into internal Table

CALL FUNCTION 'UPLOAD'

EXPORTING

filename = p_file

filetype = 'DAT'

TABLES

data_tab = i_vendor

EXCEPTIONS

conversion_error = 1

invalid_table_width = 2

invalid_type = 3

no_batch = 4

unknown_error = 5

gui_refuse_filetransfer = 6

OTHERS = 7.

IF sy-subrc <> 0.

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

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

ENDIF.

  • Upload the Data from Internal Table

LOOP AT i_vendor.

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-BUKRS'

i_vendor-bukrs.

PERFORM bdc_field USING 'RF02K-EKORG'

i_vendor-ekorg.

PERFORM bdc_field USING 'RF02K-KTOKK'

i_vendor-ktokk.

PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFA1-SPRAS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=KLAS'.

PERFORM bdc_field USING 'LFA1-ANRED'

i_vendor-anred.

PERFORM bdc_field USING 'LFA1-NAME1'

i_vendor-name1.

PERFORM bdc_field USING 'LFA1-SORTL'

i_vendor-sortl.

PERFORM bdc_field USING 'LFA1-NAME2'

i_vendor-name2.

PERFORM bdc_field USING 'LFA1-NAME3'

i_vendor-name3.

PERFORM bdc_field USING 'LFA1-NAME4'

i_vendor-name4.

PERFORM bdc_field USING 'LFA1-STRAS'

i_vendor-stras.

PERFORM bdc_field USING 'LFA1-PFACH'

i_vendor-pfach.

PERFORM bdc_field USING 'LFA1-ORT01'

i_vendor-ort01.

PERFORM bdc_field USING 'LFA1-PSTLZ'

i_vendor-pstlz.

PERFORM bdc_field USING 'LFA1-LAND1'

i_vendor-land1.

PERFORM bdc_field USING 'LFA1-SPRAS'

i_vendor-spras.

PERFORM bdc_field USING 'LFA1-TELF1'

i_vendor-telf1.

PERFORM bdc_field USING 'LFA1-TELFX'

i_vendor-telfx.

PERFORM bdc_field USING 'LFA1-LFURL'

i_vendor-lfurl.

PERFORM bdc_dynpro USING 'SAPLCLCA' '0602'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RMCLF-KLART'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

PERFORM bdc_field USING 'RMCLF-KLART'

'010'. "i_vendor-klart.

PERFORM bdc_dynpro USING 'SAPLCLFM' '0500'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RMCLF-CLASS(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=AUSW'.

PERFORM bdc_field USING 'RMCLF-CLASS(01)'

'Vendor'."i_vendor-class.

PERFORM bdc_dynpro USING 'SAPLCTMS' '0109'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RCTMS-MWERT(03)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BACK'.

PERFORM bdc_field USING 'RCTMS-MNAME(01)'

'MATERIALGROUP'." i_vendor-mname_01.

PERFORM bdc_field USING 'RCTMS-MNAME(02)'

'MATERIALGROUP'." i_vendor-mname_02.

PERFORM bdc_field USING 'RCTMS-MNAME(03)'

'MATERIALGROUP'." i_vendor-mname_03.

PERFORM bdc_field USING 'RCTMS-MWERT(01)'

i_vendor-mwert_01.

PERFORM bdc_field USING 'RCTMS-MWERT(02)'

i_vendor-mwert_02.

PERFORM bdc_field USING 'RCTMS-MWERT(03)'

i_vendor-mwert_03.

PERFORM bdc_dynpro USING 'SAPLCLFM' '0500'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RMCLF-CLASS(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENDE'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFA1-ANRED'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0120'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFA1-EMNFR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'LFA1-EMNFR'

i_vendor-emnfr.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKN(02)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'LFBK-BANKS(01)'

i_vendor-banks_01.

PERFORM bdc_field USING 'LFBK-BANKS(02)'

i_vendor-banks_02.

PERFORM bdc_field USING 'LFBK-BANKL(01)'

i_vendor-bankl_01.

PERFORM bdc_field USING 'LFBK-BANKL(02)'

i_vendor-bankl_02.

PERFORM bdc_field USING 'LFBK-BANKN(01)'

i_vendor-bankn_01.

PERFORM bdc_field USING 'LFBK-BANKN(02)'

i_vendor-bankn_02.

  • PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

  • PERFORM bdc_field USING 'BDC_CURSOR'

  • 'LFBK-BANKS(01)'.

  • PERFORM bdc_field USING 'BDC_OKCODE'

  • '=VW'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0210'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFB1-FDGRV'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'LFB1-AKONT'

i_vendor-akont.

PERFORM bdc_field USING 'LFB1-ZUAWA'

i_vendor-zuawa.

PERFORM bdc_field USING 'LFB1-FDGRV'

i_vendor-fdgrv.

PERFORM bdc_dynpro USING 'SAPMF02K' '0215'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFB1-XPORE'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'LFB1-ZTERM'

i_vendor-zterm.

PERFORM bdc_field USING 'LFB1-REPRF'

c_x. "i_vendor-reprf.

PERFORM bdc_field USING 'LFB1-ZWELS'

i_vendor-zwels.

PERFORM bdc_field USING 'LFB1-HBKID'

i_vendor-hbkid.

PERFORM bdc_field USING 'LFB1-XPORE'

c_x. "i_vendor-xpore.

PERFORM bdc_dynpro USING 'SAPMF02K' '0220'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFB5-MAHNS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'LFB5-MAHNS'

i_vendor-mahns.

PERFORM bdc_field USING 'LFB1-XAUSZ'

i_vendor-xausz.

PERFORM bdc_dynpro USING 'SAPMF02K' '0610'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBW-WT_SUBJCT(01)'.

PERFORM bdc_field USING 'LFB1-QLAND'

i_vendor-qland.

PERFORM bdc_field USING 'LFBW-WITHT(01)'

i_vendor-witht_01.

  • PERFORM bdc_field USING 'LFBW-WT_WITHCD(01)'

  • i_vendor-wt_withcd.

PERFORM bdc_field USING 'LFBW-WT_SUBJCT(01)'

c_x.

PERFORM bdc_dynpro USING 'SAPMF02K' '0310'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFM1-ZTERM'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_field USING 'LFM1-WAERS'

i_vendor-waers.

PERFORM bdc_field USING 'LFM1-ZTERM'

i_vendor-zterm1.

PERFORM bdc_dynpro USING 'SAPMF02K' '0320'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02K-LIFNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=VW'.

PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=YES'.

  • Call the Transaction

PERFORM bdc_transaction USING 'XK01'.

ENDLOOP.

  • Close the BDc Session

PERFORM close_group.

Use ALSM_EXCEL_TO_INTERNAL_TABLE Instead of GUI_UPLOAD ,ALSM_EXCEL_TO_INTERNAL_TABLE - XL file data

Thanks

Seshu

0 Kudos
175

Hi Seshu,

Greetings...

Can you please let me know or correct me why a BAPI can not be used for this purpose of Vendor Creation.

Regards

Gopi

0 Kudos
175

You can either use FM, BAPI_VENDOR_CREATE or you can do recording and create session or transaction method.

Regards,

SaiRam

0 Kudos
175

Hello Gopi,

did you see BAPI Function module ? It will not create vendor Bank details and additional details.

I have tried and no sucess ..

Thanks

Seshu

Former Member
0 Kudos
175

Hi Dinesh,

Check it out.

<code>

report ZREC_XK01 no standard page heading line-size 255.

  • Internal table for Loading flat file data

types : begin of ty_data,

data(300) type c,

end of ty_data.

DATA : V_DATA TYPE TY_DATA.

DATA : t_data type table of ty_data.

  • Iternal table for loading transactional data

types : begin of ty_header,

lifnr type rf02k-lifnr,

bukrs type rf02k-bukrs,

ekorg type rf02k-ekorg,

ktokk type rf02k-ktokk,

anred type lfa1-anred,

name1 type lfa1-name1,

sortl type lfa1-sortl,

land1 type lfa1-land1,

fdgrv type lfb1-fdgrv,

akont type lfb1-akont,

waers type lfm1-waers,

end of ty_header.

data : v_header type ty_header.

data : t_header type table of ty_header.

  • internal table for loading the bank details

types : begin of ty_bank,

banks type lfbk-banks,

bankl type lfbk-bankl,

bankn type lfbk-bankn,

banka type bnka-banka,

end of ty_bank.

data : v_bank type ty_bank.

data : t_bank type table of ty_bank.

data : cnt(2) type c,

cntr(2) type c,

fld(50) type c.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = 'C:\Documents and Settings\rajeshpa\Desktop\flat'

  • FILETYPE = 'asc'

  • HAS_FIELD_SEPARATOR = 'X'

  • IMPORTING

TABLES

data_tab = t_data

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 T_DATA INTO V_DATA.

IF V_DATA(02) = '10'.

MOVE V_DATA-DATA+2 TO V_HEADER.

APPEND V_HEADER TO T_HEADER.

ELSEIF V_DATA(02) = '20'.

MOVE V_DATA-DATA+2 TO V_BANK.

APPEND V_BANK TO T_BANK.

ENDIF.

ENDLOOP.

include bdcrecx1.

start-of-selection.

perform open_group.

LOOP AT T_HEADER INTO V_HEADER.

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' v_header-lifnr.

perform bdc_field using 'RF02K-BUKRS'

v_header-bukrs.

perform bdc_field using 'RF02K-EKORG'

v_header-ekorg.

perform bdc_field using 'RF02K-KTOKK'

v_header-ktokk.

  • screen one complete

perform bdc_dynpro using 'SAPMF02K' '0110'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-LAND1'.

perform bdc_field using 'BDC_OKCODE'

'=VW'.

perform bdc_field using 'LFA1-ANRED'

v_header-anred.

perform bdc_field using 'LFA1-NAME1'

v_header-name1.

perform bdc_field using 'LFA1-SORTL'

v_header-sortl.

perform bdc_field using 'LFA1-LAND1'

v_header-land1.

perform bdc_dynpro using 'SAPMF02K' '0120'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-KUNNR'.

perform bdc_field using 'BDC_OKCODE'

'=VW'.

  • end of 2nd screen

LOOP AT T_BANK INTO V_BANK.

cnt = cnt + 1.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'BANKNAM(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

concatenate 'LFBK-BANKS(' CNT ')' into fld.

perform bdc_field using 'LFBK-BANKS(01)'

v_bank-banks.

concatenate 'LFBK-BANKL(' CNT ')' into fld.

perform bdc_field using 'LFBK-BANKL(01)'

v_bank-bankl.

concatenate 'LFBK-BANKN(' CNT ')' into fld.

perform bdc_field using 'LFBK-BANKN(01)'

v_bank-bankn.

  • counter for pop up box to maintain bank name

Cntr = cntr + 1.

perform bdc_dynpro using 'SAPLBANK' '0100'.

perform bdc_field using 'BDC_CURSOR'

'BNKA-BANKA'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

  • begin of pop-up screen in bank table control

concatenate 'BNKA-BANKA( ' CNTR ' )' INTO FLD.

perform bdc_field using 'BNKA-BANKA'

v_bank-banka.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-KOINH(02)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'LFBK-BANKS(02)'

v_bank-banks.

perform bdc_field using 'LFBK-BANKL(02)'

v_bank-bankl.

perform bdc_field using 'LFBK-BANKN(02)'

v_bank-bankn.

perform bdc_dynpro using 'SAPLBANK' '0100'.

perform bdc_field using 'BDC_CURSOR'

'BNKA-BANKA'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'BNKA-BANKA'

v_bank-banka.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-KOINH(03)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'LFBK-BANKS(03)'

v_bank-banks.

perform bdc_field using 'LFBK-BANKL(03)'

v_bank-bankl.

perform bdc_field using 'LFBK-BANKN(03)'

v_bank-bankn.

perform bdc_dynpro using 'SAPLBANK' '0100'.

perform bdc_field using 'BDC_CURSOR'

'BNKA-BANKA'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'BNKA-BANKA'

v_bank-banka.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-BANKN(04)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'LFBK-BANKS(04)'

v_bank-banks.

perform bdc_field using 'LFBK-BANKL(04)'

v_bank-bankl.

perform bdc_field using 'LFBK-BANKN(04)'

v_bank-bankn.

perform bdc_dynpro using 'SAPLBANK' '0100'.

perform bdc_field using 'BDC_CURSOR'

'BNKA-BANKA'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'BNKA-BANKA'

v_bank-banka.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-BANKN(05)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'LFBK-BANKS(05)'

v_bank-banks.

perform bdc_field using 'LFBK-BANKL(05)'

v_bank-bankl.

perform bdc_field using 'LFBK-BANKN(05)'

v_bank-bankn.

perform bdc_dynpro using 'SAPLBANK' '0100'.

perform bdc_field using 'BDC_CURSOR'

'BNKA-BANKA'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'BNKA-BANKA'

v_bank-banka.

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'

'=UPDA'.

perform bdc_field using 'LFB1-AKONT'

v_header-akont.

perform bdc_field using 'LFB1-FDGRV'

v_header-fdgrv.

perform bdc_dynpro using 'SAPMF02K' '0310'.

perform bdc_field using 'BDC_CURSOR'

'LFM1-WAERS'.

perform bdc_field using 'BDC_OKCODE'

'=UPDA'.

perform bdc_field using 'LFM1-WAERS'

v_header-waers.

perform bdc_transaction using 'XK01'.

perform close_group.

endloop.

endloop.

Test data

10aaa 0001 0001 0001 Mr ramu mu in 31000 a1 inr

20in 2001 201 ind

20in 2002 202 ind1

20in 2003 203 ind2

10aba 0001 0001 0001 Mr ratna ru in 31000 a1 inr

20in 2004 204 ind3

</code>

Plz reward points if u find it helpful

Thanks & regards,

Rajesh

Former Member
0 Kudos
175

Hi,

Refer these complete codes:

BDC XK01 using Table control:
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.
LFBK-BANKS(3)
  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.

Jogdand M B