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: 

table controls

Former Member
0 Kudos

Hi Guys,

i have been trying to understand table controls in BDC but i just cannot help myself. Please send me an explanatory code of BDC where table controls has been used. I would really be grateful to all who could solve my problem

PLEASE DO NOT PROVIDE ANY LINKS FOR THE SAME.

3 REPLIES 3

Former Member
0 Kudos

Hi,

Go through the code and try to understand.

THis is example to upload the Bank details of the Vendor which has the TC.

REPORT zprataptable2

NO STANDARD PAGE HEADING LINE-SIZE 255.

DATA : BEGIN OF itab OCCURS 0,

i1 TYPE i,

lifnr LIKE rf02k-lifnr,

bukrs LIKE rf02k-bukrs,

ekorg LIKE rf02k-ekorg,

ktokk LIKE rf02k-ktokk,

anred LIKE lfa1-anred,

name1 LIKE lfa1-name1,

sortl LIKE lfa1-sortl,

land1 LIKE lfa1-land1,

akont LIKE lfb1-akont,

fdgrv LIKE lfb1-fdgrv,

waers LIKE lfm1-waers,

END OF itab.

DATA : BEGIN OF jtab OCCURS 0,

j1 TYPE i,

banks LIKE lfbk-banks,

bankl LIKE lfbk-bankl,

bankn LIKE lfbk-bankn,

END OF jtab.

DATA : cnt(4) TYPE n.

DATA : fdt(20) TYPE c.

DATA : c TYPE i.

INCLUDE bdcrecx1.

START-OF-SELECTION.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = 'C:\first1.txt'

filetype = 'DAT'

TABLES

data_tab = itab.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = 'C:\second.txt'

filetype = 'DAT'

TABLES

data_tab = jtab.

LOOP AT itab.

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'

itab-lifnr.

PERFORM bdc_field USING 'RF02K-BUKRS'

itab-bukrs.

PERFORM bdc_field USING 'RF02K-EKORG'

itab-ekorg.

PERFORM bdc_field USING 'RF02K-KTOKK'

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

itab-anred.

PERFORM bdc_field USING 'LFA1-NAME1'

itab-name1.

PERFORM bdc_field USING 'LFA1-SORTL'

itab-sortl.

PERFORM bdc_field USING 'LFA1-LAND1'

itab-land1.

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-BANKN(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

cnt = 0.

LOOP AT jtab WHERE j1 = itab-i1.

cnt = cnt + 1.

CONCATENATE 'LFBK-BANKS(' cnt ')' INTO fdt.

PERFORM bdc_field USING fdt jtab-banks.

CONCATENATE 'LFBK-BANKL(' cnt ')' INTO fdt.

PERFORM bdc_field USING fdt jtab-bankl.

CONCATENATE 'LFBK-BANKN(' cnt ')' INTO fdt.

PERFORM bdc_field USING fdt jtab-bankn.

IF cnt = 5.

cnt = 0.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKS(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=P+'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKN(02)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

ENDIF.

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'

itab-akont.

PERFORM bdc_field USING 'LFB1-FDGRV'

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

itab-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'.

PERFORM bdc_transaction USING 'XK01'.

ENDLOOP.

PERFORM close_group.

Header file:

1 63190 0001 0001 0001 mr bal188 b in 31000 a1 inr

2 63191 0001 0001 0001 mr bal189 b in 31000 a1 inr

TC file:

1 in sb 11000

1 in sb 12000

1 in sb 13000

1 in sb 14000

1 in sb 15000

1 in sb 16000

1 in sb 17000

1 in sb 18000

1 in sb 19000

1 in sb 20000

1 in sb 21000

1 in sb 22000

2 in sb 21000

2 in sb 22000

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

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

  • ABAP Name : ZMM_PR_UPLOAD_MAT

  • Description : PR Upload BDC Program(With Material)

  • Created by : Anji Reddy V

  • Created on : 04/11/2004

  • Description : This Program is used to Upload the Purchase

  • Requisition data Using the Transaction ME51N.

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

  • Modification Log:

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

  • Date Programmer Correction Description

  • ---- ---------- ---------- -----------

  • 04/11/2004 Anji Reddy Initial

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

REPORT zmm_pr_upload_mat

NO STANDARD PAGE HEADING

LINE-SIZE 255.

  • Standard Include for Selection Screen

INCLUDE bdcrecx1.

  • Internal Table for Upload Data

DATA: BEGIN OF i_pr OCCURS 0,

  • Header Screen

sno(3), " SNo

bsart(004), " PR Type

epstp(001), " Item Category

knttp(001), " Account Assignment

eeind(010), " Delivery Date

  • lpein(001), " Category of Del Date

werks(004), " Plant

lgort(004), " Storage Location

ekgrp(003), " Purchasing Group

matkl(009), " Material Group

bednr(010), " Tracking No

afnam(012), " Requisitioner

  • Item Details

matnr(018), " Material No

menge(017), " Quantity

  • badat(010),

  • frgdt(010),

preis(014), " Valuation Price

  • waers(005), " Currency

  • peinh(005),

  • wepos(001),

  • repos(001),

sakto(010), " GL Account

kostl(010), " Cost Center

  • bnfpo(005),

END OF i_pr.

  • Internal Table for header Data

DATA: BEGIN OF it_header OCCURS 0,

sno(3), " SNo

bsart(004), " PR Type

epstp(001), " Item Category

knttp(001), " Account Assignment

eeind(010), " Delivery Date

werks(004), " Plant

lgort(004), " Storage Location

ekgrp(003), " Purchasing Group

matkl(009), " Material Group

bednr(010), " Tracking No

afnam(012), " Requisitioner

END OF it_header.

  • Internal Table for Item Data

DATA: BEGIN OF it_item OCCURS 0,

sno(3), " SNo

matnr(018), " Material No

menge(017), " Quantity

preis(014), " Valuation Price

sakto(010), " GL Account

kostl(010), " Cost Center

END OF it_item.

  • Data Variables & Constants

CONSTANTS : c_x VALUE 'X'. " Flag

DATA : v_l(2), " Counter

v_rowno(5), " Row No

v_2(2), " Counter

v_rows LIKE sy-srows, " Rows in TC

v_field(45). " String

  • Parameters

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_pr

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.

SORT i_pr BY sno.

LOOP AT i_pr.

MOVE-CORRESPONDING i_pr TO it_item.

APPEND it_item.

CLEAR it_item.

AT END OF sno.

READ TABLE i_pr INDEX sy-tabix.

MOVE-CORRESPONDING i_pr TO it_header.

APPEND it_header.

CLEAR it_header.

ENDAT.

ENDLOOP.

SORT it_header BY sno.

SORT it_item BY sno.

v_rows = sy-srows - 6.

  • Upload the Data from Internal Table

LOOP AT it_header.

  • Header Data

PERFORM bdc_dynpro USING 'SAPMM06B' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EBAN-BEDNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'EBAN-BSART'

it_header-bsart.

PERFORM bdc_field USING 'RM06B-EPSTP'

it_header-epstp.

PERFORM bdc_field USING 'EBAN-KNTTP'

it_header-knttp.

PERFORM bdc_field USING 'RM06B-EEIND'

it_header-eeind.

  • PERFORM bdc_field USING 'RM06B-LPEIN'

  • it_header-lpein.

PERFORM bdc_field USING 'EBAN-WERKS'

it_header-werks.

PERFORM bdc_field USING 'EBAN-LGORT'

it_header-lgort.

PERFORM bdc_field USING 'EBAN-EKGRP'

it_header-ekgrp.

PERFORM bdc_field USING 'EBAN-MATKL'

it_header-matkl.

PERFORM bdc_field USING 'EBAN-BEDNR'

it_header-bednr.

PERFORM bdc_field USING 'EBAN-AFNAM'

it_header-afnam.

  • Item Details

v_l = 0.

  • To add no. of rows

v_2 = 0 .

  • As the screen is showing 13 rows defaulted to 130

v_rowno = 130 .

LOOP AT it_item WHERE sno = it_header-sno.

v_l = v_l + 1.

IF v_l = 14 .

IF v_2 = 12 .

v_2 = 12 .

v_l = 2 .

  • From second time onwards it is displaying 12 rows only

v_rowno = v_rowno + 120 .

PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06B-BNFPO'.

PERFORM bdc_field USING 'RM06B-BNFPO'

v_rowno.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

ELSE.

  • V_2 initialized to 12 for second screen purpose

v_2 = 12 .

v_l = 2 .

PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06B-BNFPO'.

PERFORM bdc_field USING 'RM06B-BNFPO'

v_rowno .

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

ENDIF.

ENDIF.

PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

CLEAR v_field.

CONCATENATE 'EBAN-MATNR(' v_l ')' INTO v_field.

PERFORM bdc_field USING v_field it_item-matnr.

CLEAR v_field.

CONCATENATE 'EBAN-MENGE(' v_l ')' INTO v_field.

PERFORM bdc_field USING v_field it_item-menge.

PERFORM bdc_dynpro USING 'SAPMM06B' '0102'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EBAN-PREIS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'EBAN-PREIS'

it_item-preis.

PERFORM bdc_dynpro USING 'SAPMM06B' '0505'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EBKN-SAKTO'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

PERFORM bdc_field USING 'EBKN-SAKTO'

it_item-sakto.

  • Cost Center

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_CURSOR'

'COBL-KOSTL'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

PERFORM bdc_field USING 'COBL-KOSTL'

it_item-kostl.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

ENDLOOP.

PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06B-BNFPO'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

  • Call The Transaction

PERFORM bdc_transaction USING 'ME51'.

ENDLOOP.

  • Close the BDC Session

PERFORM close_group.

reward if useful

Regards,

Anji

Former Member
0 Kudos

hi

check the below link for table control

Table control in BDC

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

If you find it useful mark the points

~~Guduri

Former Member
0 Kudos

hi ,

Please go thru this example.

FORM bdc_detail .

DATA: w_ktmng_tx(11),

w_peinh_tx(5) TYPE c,

w_price_p(13) TYPE p DECIMALS 6,

w_price2_p(13) TYPE p DECIMALS 2,

w_price3_p(13) TYPE p DECIMALS 3,

w_price0_p(13) TYPE p DECIMALS 0,

w_cent_p TYPE p DECIMALS 2,

w_peinh_n(5) TYPE n,

w_price_tx(14).

  • accumulate lines to determine if page_down required

ADD 1 TO w_addit_i.

ADD 1 TO w_dtl_cnt_i.

ADD 1 TO w_line_i.

IF w_line_i > 12.

w_line_i = 2.

PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.

PERFORM bdc_field USING 'BDC_OKCODE' '=NP'.

ENDIF.

  • get material unit of measure

CLEAR mara-meins.

SELECT SINGLE * FROM mara WHERE matnr = g_t_itab-matnr.

w_price_tx = g_t_itab-netpr.

w_peinh_tx = g_t_itab-peinh.

IF g_t_itab-ktmng = 0.

g_t_itab-ktmng = 1.

ENDIF.

w_ktmng_tx = g_t_itab-ktmng.

  • get decimal places of currency

TCURX-CURRDEC = 2.

SELECT SINGLE * FROM TCURX WHERE CURRKEY = g_t_itab-waers.

  • multiply Price

W_PRICE_P = g_t_itab-netpr.

CASE TCURX-CURRDEC.

WHEN 0.

W_PRICE_P = g_t_itab-netpr * 100.

W_PRICE0_P = W_PRICE_P.

W_PRICE_TX = W_PRICE0_P.

WHEN 2.

W_PRICE2_P = W_PRICE_P.

W_PRICE_TX = W_PRICE2_P.

WHEN 3.

W_PRICE3_P = W_PRICE_P.

W_PRICE_TX = W_PRICE3_P.

ENDCASE.

  • material overview screen (with enter)

PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.

PERFORM bdc_field USING 'BDC_OKCODE' '=DETA'.

PERFORM bdc_field_idx USING 'RM06E-TCSELFLAG' 'X' w_line_i.

PERFORM bdc_field_idx USING 'EKPO-EMATN' g_t_itab-matnr w_line_i.

PERFORM bdc_field_idx USING 'EKPO-KTMNG' w_ktmng_tx w_line_i.

PERFORM bdc_field_idx USING 'EKPO-NETPR' w_price_tx w_line_i.

PERFORM bdc_field_idx USING 'EKPO-PEINH' w_peinh_tx w_line_i.

PERFORM bdc_field_idx USING 'EKPO-BPRME' mara-meins w_line_i.

PERFORM bdc_field_idx USING 'EKPO-WERKS' p_nwerks w_line_i.

PERFORM bdc_field_idx USING 'EKPO-LGORT' g_t_itab-lgort w_line_i.

  • IF g_t_itab-pstyp = '3'.

  • g_t_itab-pstyp = 'L'.

  • ELSE.

  • CLEAR g_t_itab-pstyp.

  • ENDIF.

  • PERFORM bdc_field_idx USING 'RM06E-EPSTP' g_t_itab-pstyp w_line_i.

*

  • item details screen

PERFORM bdc_dynpro USING 'SAPMM06E' '0211'.

PERFORM bdc_field USING 'BDC_OKCODE' '=OR'.

PERFORM bdc_field USING 'EKPO-SPINF' 'B'.

PERFORM bdc_field USING 'EKPO-BSTAE' '0001'.

PERFORM bdc_field USING 'EKPO-MWSKZ' g_t_itab-mwskz.

PERFORM bdc_field USING 'EKPO-IDNLF' g_t_itab-idnlf.

PERFORM bdc_field USING 'EKPO-REPOS' 'X'.

PERFORM bdc_field USING 'EKPO-EVERS' g_t_itab-evers.

PERFORM bdc_field USING 'EKPO-KZABS' 'X'.

PERFORM bdc_field USING 'EKPO-NETPR' w_price_tx. "deliberate

PERFORM bdc_field USING 'EKPO-PEINH' w_peinh_tx . "Overwriting

  • Source list

PERFORM bdc_dynpro USING 'SAPLMEOR' '0220'.

PERFORM bdc_field USING 'BDC_OKCODE' 'EN'.

PERFORM bdc_field USING 'BDC_CURSOR' 'EORD-AUTET(01)'.

PERFORM bdc_field USING 'EORD-VDATU(01)' '01062004'.

PERFORM bdc_field USING 'EORD-BDATU(01)' '31122999'.

PERFORM bdc_field USING 'EORD-FEBEL(01)' ' '.

PERFORM bdc_field USING 'EORD-AUTET(01)' '1'.

  • GOTO Conditions

PERFORM bdc_dynpro USING 'SAPMM06E' '0211'.

PERFORM bdc_field USING 'BDC_OKCODE' '=KO'.

PERFORM bdc_dynpro USING 'SAPMV13A' '0201'.

PERFORM bdc_field USING 'BDC_OKCODE' '=BACK'.

ENDFORM. " BDC_DETAIL

FORM bdc_field_idx USING field LIKE bdcdata-fnam

value p_index TYPE i.

DATA: w_index_tx(2).

UNPACK p_index TO w_index_tx.

CLEAR bdcdata.

CONCATENATE field '(' w_index_tx ')' INTO field.

bdcdata-fnam = field.

bdcdata-fval = value.

APPEND bdcdata.

ENDFORM. " BDC_FIELD_IDX

Regards,