03-02-2007 5:25 AM
Hi to all,
I am new to bdc. Can any body send me sample code of bdc call transaction . also clarify the what is field mapping.
Thanks in advance
Surendra
03-02-2007 5:30 AM
Hi Surendra,
Check this 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 *
----
........ *
----
--> PROG *
--> SCR *
----
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 *
----
........ *
----
--> FNAM *
--> FVAL *
----
FORM bdc_field USING fnam fval.
CLEAR it_bdcdata.
it_bdcdata-fnam = fnam.
it_bdcdata-fval = fval.
APPEND it_bdcdata.
ENDFORM.
-
<b>Check the below links also
https://www.sappoint.com/abap/bdcconcept.pdf
https://www.sap-img.com/abap/learning-bdc-programming.htm
https://www.sap-img.com/abap/question-about-bdc-program.htm
https://www.sapdevelopment.co.uk/bdc/bdchome.htm
https://www.planetsap.com/bdc_main_page.htm
<b>Reward Points if Useful</b>
All the Best
Gokul
03-02-2007 5:34 AM
Hi Kumar,
data: begin of lt_status occurs 0,
char(2) type c,
end of lt_status.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
messages of call transaction
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
error session opened (' ' or 'X')
DATA: e_group_opened.
message texts
DATA: cupdate LIKE ctu_params-updmode VALUE IS INITIAL.
DATA: ctumode LIKE ctu_params-dismode VALUE 'D'.
DATA: nodata VALUE '/'.
TABLES: t100.
perfom fpcpl.
perform fpcrpo.
form fpcpl.
perform bdc_dynpro using 'SAPLSSEL' '0100'.
perform bdc_field using 'BDC_CURSOR'
'%%DYN001-LOW'.
perform bdc_field using 'BDC_OKCODE'
'=%026'.
*perform bdc_field using '%%DYN014-LOW'
' '.
perform bdc_dynpro using 'SAPLALDB' '3000'.
perform bdc_field using 'BDC_OKCODE'
'=ACPT'.
perform bdc_field using 'BDC_CURSOR'
'RSCSEL-SLOW_I(03)'.
perform bdc_field using 'RSCSEL-SLOW_I(01)'
'01'.
perform bdc_field using 'RSCSEL-SLOW_I(02)'
'02'.
perform bdc_field using 'RSCSEL-SLOW_I(03)'
'03'.
perform bdc_field using 'RSCSEL-SLOW_I(04)'
''.
perform bdc_field using 'RSCSEL-SLOW_I(05)'
''.
perform bdc_field using 'RSCSEL-SLOW_I(06)'
''.
perform bdc_field using 'RSCSEL-SLOW_I(07)'
''.
perform bdc_field using 'RSCSEL-SLOW_I(08)'
''.
perform bdc_dynpro using 'SAPLSSEL' '0100'.
*perform bdc_field using 'BDC_CURSOR'
'%%DYN014-LOW'.
*perform bdc_field using 'BDC_OKCODE'
'/00'.
*perform bdc_field using '%%DYN012-LOW'
'01'.
perform bdc_field using '%%DYN013-LOW'
'DEVUSER'.
*perform bdc_field using '%%DYN014-LOW'
''.
*perform bdc_dynpro using 'SAPLSSEL' '0100'.
*perform bdc_field using 'BDC_CURSOR'
'%%DYN014-LOW'.
perform bdc_field using 'BDC_OKCODE'
'=CRET'.
sy-ucomm = 'CRET'.
perform bdc_transaction using 'FPCPL'.
endform.
FORM bdc_transaction USING tcode.
DATA: l_mstring(480).
DATA: l_subrc LIKE sy-subrc.
batch input session
IF SESSION = 'X'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE = TCODE
TABLES DYNPROTAB = BDCDATA.
IF SMALLLOG <> 'X'.
WRITE: / 'BDC_INSERT'(I03),
TCODE,
'returncode:'(I05),
SY-SUBRC,
'RECORD:',
SY-INDEX.
ENDIF.
call transaction using
ELSE.
REFRESH messtab.
CALL TRANSACTION tcode USING bdcdata
MODE ctumode
UPDATE cupdate
MESSAGES INTO messtab.
l_subrc = sy-subrc.
IF smalllog <> 'X'.
WRITE: / 'CALL_TRANSACTION',
tcode,
'returncode:'(i05),
l_subrc,
'RECORD:',
sy-index.
endform.
----
Start new screen *
----
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro
----
Insert field *
----
FORM bdc_field USING fnam fval.
IF fval <> nodata.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM.
check these.
For BDC:
http://myweb.dal.ca/hchinni/sap/bdc_home.htm
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/home/bdc&;
http://www.sap-img.com/abap/learning-bdc-programming.htm
http://www.sapdevelopment.co.uk/bdc/bdchome.htm
http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
http://help.sap.com/saphelp_47x200/helpdata/en/69/c250684ba111d189750000e8322d00/frameset.htm
http://www.sapbrain.com/TUTORIALS/TECHNICAL/BDC_tutorial.html
Regards,
Priyanka.
03-02-2007 6:37 AM
Hi,
REPORT ZSYSTEM LINE-SIZE 255.
TABLES: T100.
Batch-input data
DATA: BEGIN OF G_BDCDATA OCCURS 100.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF G_BDCDATA.
DATA: G_MESSAGE(200).
PERFORM FILL_BDCDATA.
CALL TRANSACTION 'FI01' USING G_BDCDATA MODE 'N'.
of course it is nicer with a message itab, but this example
should also demostrate the use of system variables.
SELECT SINGLE * FROM T100 WHERE
SPRSL = 'E'
AND ARBGB = SY-MSGID
AND MSGNR = SY-MSGNO.
G_MESSAGE = T100-TEXT.
PERFORM REPLACE_PARAMETERS USING SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4
CHANGING G_MESSAGE.
WRITE: / 'System variables:'.
SKIP.
WRITE: / ' Sy-msgty:', SY-MSGTY.
WRITE: / ' Sy-msgid:', SY-MSGID.
WRITE: / ' Sy-msgno:', SY-MSGNO.
WRITE: / ' Sy-msgv1:', SY-MSGV1.
WRITE: / ' Sy-msgv2:', SY-MSGV2.
WRITE: / ' Sy-msgv3:', SY-MSGV3.
WRITE: / ' Sy-msgv4:', SY-MSGV4.
SKIP.
WRITE: / 'The transaction was called with a wrong country code.'.
WRITE: / 'The error message should be either that or that you have'.
WRITE: / ' no authorisation to execute the transaction'.
SKIP.
WRITE: / 'Message:'.
SKIP.
WRITE: / SY-MSGTY, G_MESSAGE.
----
Build up the BDC-table *
----
FORM FILL_BDCDATA.
REFRESH G_BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPMF02B' '0100'.
PERFORM BDC_FIELD USING 'BNKA-BANKS' 'ZZZ'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'QQQQQ'.
ENDFORM.
----
FORM BDC_DYNPRO *
----
Batchinput: Start new Dynpro *
----
FORM BDC_DYNPRO USING P_PROGRAM P_DYNPRO.
CLEAR G_BDCDATA.
G_BDCDATA-PROGRAM = P_PROGRAM.
G_BDCDATA-DYNPRO = P_DYNPRO.
G_BDCDATA-DYNBEGIN = 'X'.
APPEND G_BDCDATA.
ENDFORM. " BDC_DYNPRO
----
FORM BDC_FIELD *
----
Batchinput: Feld hinzufugen *
----
FORM BDC_FIELD USING P_FNAM P_FVAL.
CLEAR G_BDCDATA.
G_BDCDATA-FNAM = P_FNAM.
G_BDCDATA-FVAL = P_FVAL.
APPEND G_BDCDATA.
ENDFORM. " BDC_FIELD
----
FORM REPLACE_PARAMETERS *
----
........ *
----
--> P_PAR_1 *
--> P_PAR_2 *
--> P_PAR_3 *
--> P_PAR_4 *
--> P_MESSAGE *
----
FORM REPLACE_PARAMETERS USING P_PAR_1
P_PAR_2
P_PAR_3
P_PAR_4
CHANGING P_MESSAGE.
erst mal pruefen, ob numerierte Parameter verwendet wurden
DO.
REPLACE '&1' WITH P_PAR_1 INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&2' WITH P_PAR_2 INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&3' WITH P_PAR_3 INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
DO.
REPLACE '&4' WITH P_PAR_4 INTO P_MESSAGE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
ENDDO.
falls keine numerierten Parameter vorh., ersetzen wie gehabt
REPLACE '&' WITH P_PAR_1 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
IF SY-SUBRC EQ 0.
REPLACE '&' WITH P_PAR_2 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
IF SY-SUBRC EQ 0.
REPLACE '&' WITH P_PAR_3 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
IF SY-SUBRC EQ 0.
REPLACE '&' WITH P_PAR_4 INTO P_MESSAGE.
CONDENSE P_MESSAGE.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
03-02-2007 10:27 AM
HI ,
please go thru this code.
report yramu_bdc_stvg
no standard page heading line-size 255.
----
INTERNAL TABLES *
----
DATA: BEGIN OF IT_KNA1 OCCURS 0,
CUSTOMER LIKE RF02D-KUNNR,
COMPANY_CODE LIKE RF02D-BUKRS,
ACCOUNT_GROUP LIKE RF02D-KTOKD,
TITLE LIKE KNA1-ANRED,
NAME LIKE KNA1-NAME1,
SEARCH_TERM LIKE KNA1-SORTL,
STREET LIKE KNA1-STRAS,
CITY LIKE KNA1-ORT01,
POSTAL_CODE LIKE KNA1-PSTLZ,
COUNTRY LIKE KNA1-LAND1,
LANGUAGE_KEY LIKE KNA1-SPRAS,
CNTRY LIKE KNBK-BANKS,
BANK_KEY LIKE KNBK-BANKL,
BANK_ACCOUNT LIKE KNBK-BANKN,
REC_ACCOUNT LIKE KNB1-AKONT,
END OF IT_KNA1.
DATA: IT_BDCDATA TYPE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA: IT_MESSAGES TYPE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
----
SELECTION SCREEN *
----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER P_FILE TYPE RLGRAP-FILENAME DEFAULT 'C:\CUSTOMER.TXT'
OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
----
AT SELECTION SCREEN *
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM HELP_FILE USING P_FILE.
----
START OF SELECTION *
----
START-OF-SELECTION.
*UPLOADING THE FILE FROM WORKSTATION
PERFORM UPLOAD_FILE USING P_FILE.
*POPULATING DATA.
PERFORM POPULATE_FILE.
&----
*& Form HELP_FILE
&----
text
----
-->P_P_FILE text
----
form HELP_FILE using p_p_file.
DATA: L_FILE TYPE IBIPPARMS-PATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = L_FILE.
P_P_FILE = L_FILE.
endform. " HELP_FILE
&----
*& Form UPLOAD_FILE
&----
text
----
-->P_P_FILE text
----
form UPLOAD_FILE using p_p_file.
CALL FUNCTION 'UPLOAD'
EXPORTING
CODEPAGE = ' '
FILENAME = 'P_P_FILE'
FILETYPE = 'DAT'
ITEM = ' '
FILEMASK_MASK = ' '
FILEMASK_TEXT = ' '
FILETYPE_NO_CHANGE = ' '
FILEMASK_ALL = ' '
FILETYPE_NO_SHOW = ' '
LINE_EXIT = ' '
USER_FORM = ' '
USER_PROG = ' '
SILENT = 'S'
IMPORTING
FILESIZE =
CANCEL =
ACT_FILENAME =
ACT_FILETYPE =
TABLES
data_tab = IT_KNA1
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.
endform. " UPLOAD_FILE
&----
*& Form POPULATE_FILE
&----
text
----
--> p1 text
<-- p2 text
----
form POPULATE_FILE .
DATA: L_STRING TYPE STRING,
L_COUNTER(2) TYPE N,
V_INDEX TYPE SY-TABIX.
LOOP AT IT_KNA1.
V_INDEX = SY-TABIX.
AT NEW CUSTOMER.
READ TABLE IT_KNA1 INDEX V_INDEX.
IF SY-SUBRC = 0.
perform bdc_dynpro using 'SAPMF02D' '0105'.
perform bdc_field using 'BDC_CURSOR'
'RF02D-KTOKD'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02D-KUNNR'
IT_KNA1-CUSTOMER.
perform bdc_field using 'RF02D-BUKRS'
IT_KNA1-COMPANY_CODE.
perform bdc_field using 'RF02D-KTOKD'
IT_KNA1-ACCOUNT_GROUP.
*PERFORM BDC_FIELD USING 'RF02D-D0130'
'X'.
perform bdc_dynpro using 'SAPMF02D' '0110'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-SPRAS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KNA1-ANRED'
IT_KNA1-TITLE.
perform bdc_field using 'KNA1-NAME1'
IT_KNA1-NAME.
perform bdc_field using 'KNA1-SORTL'
IT_KNA1-SEARCH_TERM.
perform bdc_field using 'KNA1-STRAS'
IT_KNA1-STREET.
perform bdc_field using 'KNA1-ORT01'
IT_KNA1-CITY.
perform bdc_field using 'KNA1-PSTLZ'
IT_KNA1-POSTAL_CODE.
perform bdc_field using 'KNA1-LAND1'
IT_KNA1-COUNTRY.
perform bdc_field using 'KNA1-SPRAS'
IT_KNA1-LANGUAGE_KEY.
perform bdc_dynpro using 'SAPMF02D' '0120'.
perform bdc_field using 'BDC_CURSOR'
'KNA1-LIFNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02D' '0130'.
PERFORM BDC_FIELD USING 'RF02D-D0130'
'X'.
perform bdc_field using 'BDC_CURSOR'
'KNBK-BANKN(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02D' '0210'.
perform bdc_field using 'BDC_CURSOR'
'KNB1-AKONT'.
perform bdc_field using 'BDC_OKCODE'
'=UPDA'.
perform bdc_field using 'KNB1-AKONT'
IT_KNA1-REC_ACCOUNT.
perform bdc_dynpro using 'SAPLRSFH' '0100'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'RSIODYNP4-LOW(01)'.
ENDIF.
ENDAT.
L_COUNTER = L_COUNTER + 1.
CLEAR L_STRING.
CONCATENATE 'KNBK-BANKS(' L_COUNTER ')' INTO L_STRING.
PERFORM BDC_FIELD USING L_STRING
IT_KNA1-CNTRY.
CLEAR L_STRING.
CONCATENATE 'KNBK-BANKL(' L_COUNTER ')' INTO L_STRING.
PERFORM BDC_FIELD USING L_STRING
IT_KNA1-BANK_KEY.
CLEAR L_STRING.
CONCATENATE 'KNBK-BANKN(' L_COUNTER ')' INTO L_STRING.
PERFORM BDC_FIELD USING L_STRING
IT_KNA1-BANK_ACCOUNT.
AT END OF CUSTOMER.
READ TABLE IT_KNA1 INDEX V_INDEX.
IF SY-SUBRC = 0.
CALL TRANSACTION 'FD01' USING IT_BDCDATA MODE 'A' UPDATE 'S' MESSAGES
INTO IT_MESSAGES.
IF SY-SUBRC <> 0.
PERFORM EMPLOYEEID_ERROR.
*ELSE.
ENDIF.
WRITE: SY-SUBRC.
perform message_format_write.
*ENDIF.
*WRITE: SY-SUBRC.
CLEAR IT_BDCDATA.
REFRESH IT_BDCDATA.
ENDIF.
ENDAT.
ENDLOOP.
endform. " POPULATE_FILE
&----
*& Form bdc_dynpro
&----
text
----
-->P_0224 text
-->P_0225 text
----
form bdc_dynpro using value(p_0224)
value(p_0225).
IT_BDCDATA-PROGRAM = P_0224.
IT_BDCDATA-DYNPRO = P_0225.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.
endform. " bdc_dynpro
&----
*& Form bdc_field
&----
text
----
-->P_0229 text
-->P_0230 text
----
form bdc_field using value(p_0229)
value(p_0230).
IT_BDCDATA-FNAM = P_0229.
IT_BDCDATA-FVAL = P_0230.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.
endform. " bdc_field
&----
*& Form EMPLOYEEID_ERROR
&----
text
----
--> p1 text
<-- p2 text
----
form EMPLOYEEID_ERROR .
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
DEST = FILLER8
GROUP = 'Z50583_REC1'
HOLDDATE = FILLER8
KEEP = 'X'
USER = SY-UNAME
RECORD = FILLER1
PROG = SY-CPROG
IMPORTING
QID =
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'FD01'
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
SIMUBATCH = ' '
CTUPARAMS = ' '
TABLES
dynprotab = IT_BDCDATA
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 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.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 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. " EMPLOYEEID_ERROR
&----
*& Form message_format_write
&----
text
----
--> p1 text
<-- p2 text
----
form message_format_write .
DATA: L_MSG(200).
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = SY-LANGU
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = L_MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
WRITE: / L_MSG.
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. " message_format_write
flat file :
<b>115 0001 0002 sunil test ford 1001 chenn 500016 in EN in 007 100 00019000
033 0001 0002 sunil test ford 1001 chenn 500016 in EN in 007 100 00019000</b>