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

Table Controls using BDC

Former Member
0 Likes
756

Hi all,

I would like to know about "Table controls using BDC" & what are the major problems that occur while using table controls in BDC.I need a documentation of these.and also a code with step by step procedure .

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
726

Hi Sriram,

For detail info , check this link.

www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm

Hope this resolves your query.

Reward all the helpful answers.

Regards

6 REPLIES 6
Read only

Former Member
0 Likes
726

Hi,

*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.

http://sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm

reward if helpful.

regards,

kiran kumar k

Message was edited by:

kiran kumar

Read only

0 Likes
726

hI KIRAN,

can u pls explain 2 queries regarding ur code:-

1>LOOP AT IT_DUMMY.

IF IT_DUMMY-DUMMY+0(2) = '11'.

-


-


ELSE.

-


-


ENDIF.

ENDLOOP.

what is the significance of -dummy +0(2) = '11' in the code?pls explain the logic behind the loop statement?

2>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.

what is this statement doing?

PLS REPLY.

Read only

Former Member
0 Likes
726

in TC u have to make use of ok_code P+ for page down after uploading data into visible lines.

also check CTU_PARAMS in se11

Regards

Prabhu

Read only

Former Member
0 Likes
727

Hi Sriram,

For detail info , check this link.

www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm

Hope this resolves your query.

Reward all the helpful answers.

Regards

Read only

Former Member
0 Likes
726

Hi

While writing the code for BDC,if you want to add or delete multiple record in the table control than note that after adding or deleting a single record please press enter once you have modified the row and leave the screen and come back to the screen containing Table control to add second row .

This is the main thing that has to be kept in mind while coding

Thanks

Mohit

Read only

Former Member
0 Likes
726

Hi,

This code is BDC for ME51 Transaction,

First you should eliminate Header part and Item Part, Item part means all the table control values will come under Item part.

report ZUDAY_BDC_TCL1 no standard page heading line-size 255.

include bdcrecx1.

TABLES EBAN.

DATA: BEGIN OF ITAB OCCURS 0,

NUMBER(3) TYPE C,

MATNR LIKE EBAN-MATNR,

TXZ01 LIKE EBAN-TXZ01,

MENGE(13) TYPE C,

MEINS LIKE EBAN-MEINS,

EEIND TYPE RM06B-EEIND,

EKGRP LIKE EBAN-EKGRP,

MATKL LIKE EBAN-MATKL,

WERKS(4) TYPE C,

END OF ITAB.

DATA: LVALUE TYPE I,

COUNT TYPE I,

TEMP(20) TYPE C,

CTRL TYPE I,

CTRL1(3) TYPE C,

PAGES(5) TYPE c VALUE '10',

PVALUE(3) TYPE C VALUE 0.

start-of-selection.

PERFORM GETDATA.

SORT ITAB BY NUMBER.

perform open_group.

LOOP AT ITAB.

IF ITAB-NUMBER <> LVALUE.

COUNT = 0.

LOOP AT ITAB WHERE NUMBER = ITAB-NUMBER.

COUNT = COUNT + 1.

ENDLOOP.

perform bdc_dynpro using 'SAPMM06B' '0100'.

perform bdc_field using 'BDC_CURSOR'

'EBAN-BSART'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'EBAN-BSART'

'NB'.

perform bdc_field using 'RM06B-LPEIN'

'T'.

perform bdc_field using 'EBAN-EKGRP'

'008'.

perform bdc_dynpro using 'SAPMM06B' '0106'.

perform bdc_field using 'BDC_CURSOR'

'EBAN-MATNR(01)'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

********HEADER PART IS OVER****************

PAGES = 10.

CTRL = 0.

DO COUNT TIMES.

CTRL = CTRL + 1.

IF CTRL >= 19.

PAGES = PAGES + 10.

ENDIF.

CTRL1 = CTRL.

IF CTRL >= 19.

CTRL1 = '19'.

ENDIF.

IF CTRL >= 10.

PVALUE = ''.

ENDIF.

perform bdc_field using 'RM06B-BNFPO'

PAGES.

Concatenate 'EBAN-MATNR(' PVALUE CTRL1 ')' into Temp.

CONDENSE Temp NO-GAPS.

perform bdc_field using Temp itab-MATNR.

Concatenate 'EBAN-TXZ01(' PVALUE CTRL1 ')' into Temp.

CONDENSE Temp NO-GAPS.

perform bdc_field using Temp itab-TXZ01.

Concatenate 'EBAN-MENGE(' PVALUE CTRL1 ')' into Temp.

CONDENSE Temp NO-GAPS.

perform bdc_field using Temp itab-MENGE.

Concatenate 'EBAN-MEINS(' PVALUE CTRL1 ')' into Temp.

CONDENSE Temp NO-GAPS.

perform bdc_field using Temp itab-MEINS.

Concatenate 'RM06B-EEIND(' PVALUE CTRL1 ')' into Temp.

CONDENSE Temp NO-GAPS.

perform bdc_field using Temp itab-EEIND.

Concatenate 'EBAN-EKGRP(' PVALUE CTRL1 ')' into Temp.

CONDENSE Temp NO-GAPS.

perform bdc_field using Temp itab-EKGRP.

Concatenate 'EBAN-MATKL(' PVALUE CTRL1 ')' into Temp.

CONDENSE Temp NO-GAPS.

perform bdc_field using Temp itab-MATKL.

Concatenate 'EBAN-WERKS(' PVALUE CTRL1 ')' into Temp.

CONDENSE Temp NO-GAPS.

perform bdc_field using Temp itab-WERKS.

perform bdc_dynpro using 'SAPMM06B' '0102'.

perform bdc_field using 'BDC_CURSOR'

'EBAN-MENGE'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'EBAN-TXZ01'

ITAB-TXZ01. "'HD GLAD BOY tank silver'.

perform bdc_field using 'EBAN-MENGE'

ITAB-MENGE. "'500'.

perform bdc_field using 'RM06B-EEIND'

ITAB-EEIND."'27.06.2007'.

perform bdc_field using 'EBAN-EKGRP'

ITAB-EKGRP. "'001'.

perform bdc_field using 'EBAN-BADAT'

'15.06.2007'.

perform bdc_field using 'EBAN-FRGDT'

'26.06.2007'.

perform bdc_field using 'EBAN-PREIS'

' 55.48'.

perform bdc_field using 'EBAN-WAERS'

'GBP'.

perform bdc_field using 'EBAN-PEINH'

'1'.

perform bdc_field using 'EBAN-REPOS'

'X'.

perform bdc_dynpro using 'SAPMM06B' '0106'.

Concatenate 'EBAN-MATNR(' PVALUE CTRL1 ')' into Temp.

CONDENSE Temp NO-GAPS.

perform bdc_field using 'BDC_CURSOR' Temp.

perform bdc_field using 'BDC_OKCODE'

'/00'.

ENDDO.

LVALUE = ITAB-NUMBER.

perform bdc_dynpro using 'SAPMM06B' '0106'.

perform bdc_field using 'BDC_CURSOR'

'RM06B-BNFPO'.

perform bdc_field using 'BDC_OKCODE'

'=BU'.

perform bdc_field using 'RM06B-BNFPO'

'80'.

*AT END OF NUMBER.

perform bdc_transaction using 'ME51'.

REFRESH BDCDATA.

*ENDAT.

ENDIF.

ENDLOOP.

perform close_group.

&----


*& Form GETDATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GETDATA .

CALL FUNCTION 'UPLOAD'

EXPORTING

FILENAME = ' '

FILETYPE = ' '

TABLES

DATA_TAB = ITAB

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. " GETDATA