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 CONTROL IN BDC

Former Member
0 Kudos

hello,

can any one tell me how to handle the table control in bdc ?

and

what is a multiple line field ?

Thank you very much in advance.

6 REPLIES 6

Former Member
0 Kudos

Hi,

You need to use buttom "PAGE DOWN(P+)".

Use this source code:

data: v_nrline type I,

v_campo(30).

LOOP AT s_docnum.

v_nrline = v_nrline + 1.

PERFORM bdc_tela USING 'SAPLALDB' '3000'.

CONCATENATE 'RSCSEL-SLOW_I(' v_nrline ')' INTO v_campo.

PERFORM bdc_campo USING:

v_campo s_docnum-low.

IF v_nrline = 8.

PERFORM bdc_campo USING:

'BDC_OKCODE' '=P+'.

CLEAR v_nrline.

ENDIF.

ENDLOOP.

Regards,

Fernando

Former Member
0 Kudos

Hi,

Following is a sample code of handling table control in BDC.


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

Hope that would clear the matters for freshers

Thanks

Sarada

Former Member
0 Kudos

Hi Lakshmi,

what data are u trying to upload? If BDC is a must then use it or you can also look for BAPI

which will do the same thing and you can eliminate all the BDC coding.

If you must do BDC you cal look if the tcode has a + button to add lines. If its there then that

is the best way to use. after each line that you add you need to press + button to add one more

line - that way you dont have to scroll and also use indexes. However not all transactions have

this + buttons.

former_member200338
Active Contributor
0 Kudos

Hi,

Each row in the table control id identified by the row number. for example, say IT_output is your internal table for table and it has fields like VBELN, ERDAT, AUART etc..

Now to upload data in the first row, you need to concatenate the row number with the field. like this

IT_OUTPUT-VBELN(01) = 'ur value'.

IT_OUTPUT-ERDAT(01)= '.....'.

...

for second row it will be,

IT_OUTPUT-VBELN(02) = 'ur value'.

IT_OUTPUT-ERDAT(02)= '.....'.

Declare a variable of numc to store the row number. now concatenate this with the table value. pass thi concatenated string in the BDC.

Note: when u scroll down, SAP will treat the first entry as 01 not the line count(say 10).

Regards,

Niyaz

Former Member
0 Kudos

hi,

BDC table control is an area on the screen in which you can display data in tabular form. You process it using a loop. Table controls are comparable to step loop tables. While a table control consists of a single definition row, step loop blocks may extend over more than one row. Table controls are more flexible than step loops, and are intended to replace them

When you need to handle a scenario like in sales order,it may contain more than one material,if you have more than one material We have to use table control,it will have number of columns and number of rows.

Table controls allow you to enter, display, and modify tabular data easily on the screen

Check this code,

PARAMETERS: file1 LIKE rlgrap-filename.

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

*Internal Table Declarations

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

DATA: BEGIN OF itab OCCURS 0,

matnr(18) TYPE c, "MaterialNumber

werks(4) TYPE c, "Plant

vdatu(10) TYPE c, "Valid From Date

bdatu(10) TYPE c, "Valid To Date

lifnr(10) TYPE c, "Vendor Number

ekorg(4) TYPE c, "Purchasing Organization

feskz TYPE c, "Fixed

autet TYPE c, "MRP Indicator

END OF itab.

DATA: bdcdata LIKE TABLE OF bdcdata WITH HEADER LINE.

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

*VARIABLES Declarations

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

DATA: wa1 LIKE LINE OF itab. "Workarea for ITAB

DATA: n TYPE i, "Check

count TYPE i.

DATA: cnt(2), "Counter

wa(15). "Workarea to hold concatenatedvalue

DATA v_msg(100).

DATA: flag.

DATA: file TYPE string.

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

*Initialization event

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

INITIALIZATION.

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

*At-selection-screen event

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

*To provide Input help for file name

AT SELECTION-SCREEN ON VALUE-REQUEST FOR file1.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

IMPORTING

file_name = file1.

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

*START-OF-SELECTION EVENT

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

START-OF-SELECTION.

MOVE file1 TO file.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = file

filetype = 'ASC'

has_field_separator = 'X'

TABLES

data_tab = itab

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.

*To populate BDCDATA and start data transfer

LOOP AT itab .

  • To validate Plant range

IF itab-werks = '1000' OR itab-werks = '2000'

OR itab-werks = '1008'.

AT NEW werks.

CLEAR: n.

cnt = 1.

PERFORM bdc_dynpro USING 'SAPLMEOR' '0200'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EORD-MATNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'EORD-MATNR'

itab-matnr.

PERFORM bdc_field USING 'EORD-WERKS'

itab-werks.

PERFORM bdc_dynpro USING 'SAPLMEOR' '0205'.

CONCATENATE 'EORD-EKORG(' cnt ')' INTO wa.

PERFORM bdc_field USING 'BDC_CURSOR'

wa.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

ENDAT.

IF n = 12.

READ TABLE bdcdata WITH KEY fval = '=BU'.

bdcdata-fval = '=NS'.

MODIFY bdcdata INDEX sy-tabix TRANSPORTING fval.

PERFORM bdc_dynpro USING 'SAPLMEOR' '0205'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EORD-VDATU(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

cnt = 2.

n = 2.

ENDIF.

CONCATENATE 'EORD-VDATU(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-vdatu.

CONCATENATE 'EORD-BDATU(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-bdatu.

CONCATENATE 'EORD-LIFNR(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-lifnr.

CONCATENATE 'EORD-EKORG(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-ekorg.

CONCATENATE 'RM06W-FESKZ(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-feskz.

CONCATENATE 'EORD-AUTET(' cnt ')' INTO wa.

PERFORM bdc_field USING wa

itab-autet.

IF n <> 12.

n = cnt.

ENDIF.

cnt = cnt + 1.

AT END OF werks.

CALL TRANSACTION 'ME01' USING bdcdata

UPDATE 'S'

MODE 'A'.

CLEAR:bdcdata,bdcdata[].

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = sy-msgid

lang = 'EN'

no = sy-msgno

v1 = sy-msgv1

v2 = sy-msgv2

v3 = sy-msgv3

v4 = sy-msgv4

IMPORTING

msg = v_msg.

WRITE:/ v_msg.

CLEAR: bdcdata,bdcdata[],flag.

ENDAT.

ENDIF.

ENDLOOP.

----


  • Start new screen *

----


FORM bdc_dynpro USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM.

----


  • Insert field values

----


FORM bdc_field USING fnam fval.

IF NOT fval IS INITIAL.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDIF.

CLEAR wa.

ENDFORM.

A multiple line field is a special kind of field which allows the user to enter multiple lines of data into it.

To populate data into a multiple line field, an index is added to the field name to indicate which line is to be populated by the BDC session (Line index).

pls reward if helpful.

Former Member
0 Kudos