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 with table control

Former Member
0 Kudos

Hi all,

Give a example program for Table control in BDC.

Regards

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Lakshmi,

Check this sample code.

report zcustomer_change_bict

no standard page heading line-size 255.

include bdcrecx1.

data: begin of it_record occurs 0,

kunnr like rf02d-kunnr,

d0360 like rf02d-d0360,

anred(30) type c,

name1(35) type c,

namev(35) type c,

telf1(35) type c,

abtnr(10) type c,

end of it_record.

data: begin of it_knvk1 occurs 0,

anred like knvk-anred,

end of it_knvk1.

data: begin of it_knvk2 occurs 0,

name1 like knvk-name1,

end of it_knvk2.

data: begin of it_knvk3 occurs 0,

namev like knvk-namev,

end of it_knvk3.

data: begin of it_knvk4 occurs 0,

telf1 like knvk-telf1,

end of it_knvk4.

data: begin of it_knvk5 occurs 0,

abtnr like knvk-abtnr,

end of it_knvk5.

data : fld(20) type c,

cnt(2) type n.

start-of-selection.

call function 'GUI_UPLOAD'

exporting

filename = 'C:\CUSTCH.TXT'

filetype = 'ASC'

has_field_separator = 'X'

tables

data_tab = it_record

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.

perform open_group.

loop at it_record.

refresh bdcdata.

refresh: it_knvk1,it_knvk2,it_knvk3,it_knvk4,it_knvk5.

split it_record-anred at ',' into table it_knvk1.

split it_record-name1 at ',' into table it_knvk2.

split it_record-namev at ',' into table it_knvk3.

split it_record-telf1 at ',' into table it_knvk4.

split it_record-abtnr at ',' into table it_knvk5.

screen 101

perform bdc_dynpro using 'SAPMF02D' '0101'.

perform bdc_field using 'BDC_CURSOR'

'RF02D-D0360'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RF02D-KUNNR'

it_record-kunnr.

perform bdc_field using 'RF02D-D0360'

it_record-d0360.

screen 360

perform bdc_dynpro using 'SAPMF02D' '0360'.

perform bdc_field using 'BDC_CURSOR'

'KNVK-ABTNR(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

*perform bdc_field using 'KNVK-ANRED(01)'

  • record-ANRED_01_003.

*perform bdc_field using 'KNVK-NAMEV(01)'

  • record-NAMEV_01_004.

*perform bdc_field using 'KNVK-NAME1(01)'

  • record-NAME1_01_005.

*perform bdc_field using 'KNVK-TELF1(01)'

  • record-TELF1_01_006.

*perform bdc_field using 'KNVK-ABTNR(01)'

  • record-ABTNR_01_007.

move 1 to cnt.

loop at it_knvk1 .

concatenate 'knvk-anred( ' cnt ' ) ' into fld.

perform bdc_field using fld it_knvk1-anred.

cnt = cnt + 1.

endloop.

move 1 to cnt.

loop at it_knvk2 .

concatenate 'knvk-name1( ' cnt ' ) ' into fld.

perform bdc_field using fld it_knvk2-name1.

cnt = cnt + 1.

endloop.

move 1 to cnt.

loop at it_knvk3 .

concatenate 'knvk-namev( ' cnt ' ) ' into fld.

perform bdc_field using fld it_knvk3-namev.

cnt = cnt + 1.

endloop.

move 1 to cnt.

loop at it_knvk4 .

concatenate 'knvk-telf1( ' cnt ' ) ' into fld.

perform bdc_field using fld it_knvk4-telf1.

cnt = cnt + 1.

endloop.

move 1 to cnt.

loop at it_knvk5 .

concatenate 'knvk-abtnr( ' cnt ' ) ' into fld.

perform bdc_field using fld it_knvk5-abtnr.

cnt = cnt + 1.

endloop.

screen 360

perform bdc_dynpro using 'SAPMF02D' '0360'.

perform bdc_field using 'BDC_CURSOR'

'KNVK-NAMEV(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_transaction using 'XD02'.

endloop.

perform close_group.

Hope this resolves your query.

<b>Reward all the helpful answers.</b>

Regards

5 REPLIES 5

Former Member
0 Kudos

Hi,

this below program is for tcode me21n(purchase order).it will contain a table control.

check this code and flat file.

report ZBH_PURORDER no standard page heading line-size 255.

PARAMETERS:P_FILE LIKE IBIPPARMS-PATH.

DATA FILENAME TYPE STRING.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = sy-cprog

dynpro_number = sy-dynnr

IMPORTING

file_name = P_FILE.

START-OF-SELECTION.

FILENAME = P_FILE.

DATA:BEGIN OF XTAB OCCURS 0,

TYP,

DES(255) TYPE C,

END OF XTAB.

DATA:BEGIN OF ITAB OCCURS 0,

SUPERFIELD LIKE MEPO_TOPLINE-SUPERFIELD,

EKORG LIKE MEPO1222-EKORG,

EKGRP LIKE MEPO1222-EKGRP,

BUKRS LIKE MEPO1222-BUKRS,

END OF ITAB.

DATA:BEGIN OF JTAB OCCURS 0,

N(4) TYPE C,

EMATN LIKE MEPO1211-EMATN,

MENGE(13) TYPE C,

NETPR(13) TYPE C,

NAME1 LIKE MEPO1211-NAME1,

END OF JTAB.

DATA:BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

DATA:DELIMITER VALUE '*'.

DATA A TYPE I.

DATA M(4) TYPE N.

DATA L_FNAM(30) TYPE C.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = FILENAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = XTAB.

LOOP AT XTAB.

IF XTAB-TYP = 'H'.

SPLIT XTAB-DES AT DELIMITER INTO ITAB-SUPERFIELD ITAB-EKORG ITAB-EKGRP

ITAB-BUKRS.

JTAB-N = JTAB-N + 1.

APPEND ITAB.

ELSEIF XTAB-TYP = 'I'.

SPLIT XTAB-DES AT DELIMITER INTO JTAB-EMATN JTAB-MENGE JTAB-NETPR

JTAB-NAME1.

APPEND JTAB.

ENDIF.

ENDLOOP.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = 'PORDER'

KEEP = 'X'

USER = SY-UNAME.

LOOP AT ITAB.

A = SY-TABIX.

REFRESH BDCTAB.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_CURSOR'

'MEPO_TOPLINE-SUPERFIELD'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

'NB'.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

ITAB-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

'09.02.2007'.

perform bdc_field using 'DYN_6000-LIST'

' 1'.

perform bdc_field using 'BDC_OKCODE'

'=MEV4000BUTTON'.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

'NB'.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

ITAB-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

'09.02.2007'.

perform bdc_field using 'BDC_CURSOR'

'MEPO1222-EKORG'.

perform bdc_field using 'MEPO1222-EKORG'

ITAB-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

ITAB-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

ITAB-BUKRS.

perform bdc_field using 'DYN_6000-LIST'

' 1'.

perform bdc_field using 'BDC_OKCODE'

'=MEV4001BUTTON'.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

'NB'.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

ITAB-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

'09.02.2007'.

perform bdc_field using 'MEPO1222-EKORG'

ITAB-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

ITAB-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

ITAB-BUKRS.

M = 1.

LOOP AT JTAB.

IF JTAB-N = A.

WRITE:/ JTAB.

CONCATENATE 'MEPO1211-EMATN(' M ')' INTO L_FNAM.

perform bdc_field using 'BDC_CURSOR'

L_FNAM.

perform bdc_field using L_FNAM

JTAB-EMATN.

CONCATENATE 'MEPO1211-MENGE(' M ')' INTO L_FNAM.

perform bdc_field using L_FNAM

JTAB-MENGE.

CONCATENATE 'MEPO1211-NETPR(' M ')' INTO L_FNAM.

perform bdc_field using L_FNAM

JTAB-NETPR.

CONCATENATE 'MEPO1211-NAME1(' M ')' INTO L_FNAM.

perform bdc_field using L_FNAM

JTAB-NAME1.

M = M + 1.

ENDIF.

ENDLOOP.

perform bdc_field using 'DYN_6000-LIST'

' 1'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

'NB'.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

ITAB-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

'09.02.2007'.

perform bdc_field using 'MEPO1222-EKORG'

ITAB-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

ITAB-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

ITAB-BUKRS.

perform bdc_field using 'DYN_6000-LIST'

' 1'.

perform bdc_field using 'BDC_CURSOR'

'MEPO1319-MATKL'.

perform bdc_field using 'MEPO1319-SPINF'

'X'.

perform bdc_field using 'BDC_OKCODE'

'=MESAVE'.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'ME21N'

TABLES

DYNPROTAB = BDCTAB.

ENDLOOP.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDCTAB.

BDCTAB-PROGRAM = PROGRAM.

BDCTAB-DYNPRO = DYNPRO.

BDCTAB-DYNBEGIN = 'X'.

APPEND BDCTAB.

ENDFORM.

FORM BDC_FIELD USING FNAM FVAL.

CLEAR BDCTAB.

BDCTAB-FNAM = FNAM.

BDCTAB-FVAL = FVAL.

APPEND BDCTAB.

ENDFORM.

<b>FLAT FILE:</b>

H1171611000001*1000

ICPU116000*1000

ILEY BOARD1010000*1000

IMOUSE66000*1000

H1171711000001*1000

ICPU580000*1000

H1171701000001*1000

IMOUSE33000*1000

ILEY BOARD1010000*1000

rgds,

bharat.

Former Member
0 Kudos

Hi,

Check this link.This contains very good example.

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

Former Member

Former Member
0 Kudos

Hi Lakshmi,

Check this sample code.

report zcustomer_change_bict

no standard page heading line-size 255.

include bdcrecx1.

data: begin of it_record occurs 0,

kunnr like rf02d-kunnr,

d0360 like rf02d-d0360,

anred(30) type c,

name1(35) type c,

namev(35) type c,

telf1(35) type c,

abtnr(10) type c,

end of it_record.

data: begin of it_knvk1 occurs 0,

anred like knvk-anred,

end of it_knvk1.

data: begin of it_knvk2 occurs 0,

name1 like knvk-name1,

end of it_knvk2.

data: begin of it_knvk3 occurs 0,

namev like knvk-namev,

end of it_knvk3.

data: begin of it_knvk4 occurs 0,

telf1 like knvk-telf1,

end of it_knvk4.

data: begin of it_knvk5 occurs 0,

abtnr like knvk-abtnr,

end of it_knvk5.

data : fld(20) type c,

cnt(2) type n.

start-of-selection.

call function 'GUI_UPLOAD'

exporting

filename = 'C:\CUSTCH.TXT'

filetype = 'ASC'

has_field_separator = 'X'

tables

data_tab = it_record

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.

perform open_group.

loop at it_record.

refresh bdcdata.

refresh: it_knvk1,it_knvk2,it_knvk3,it_knvk4,it_knvk5.

split it_record-anred at ',' into table it_knvk1.

split it_record-name1 at ',' into table it_knvk2.

split it_record-namev at ',' into table it_knvk3.

split it_record-telf1 at ',' into table it_knvk4.

split it_record-abtnr at ',' into table it_knvk5.

screen 101

perform bdc_dynpro using 'SAPMF02D' '0101'.

perform bdc_field using 'BDC_CURSOR'

'RF02D-D0360'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RF02D-KUNNR'

it_record-kunnr.

perform bdc_field using 'RF02D-D0360'

it_record-d0360.

screen 360

perform bdc_dynpro using 'SAPMF02D' '0360'.

perform bdc_field using 'BDC_CURSOR'

'KNVK-ABTNR(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

*perform bdc_field using 'KNVK-ANRED(01)'

  • record-ANRED_01_003.

*perform bdc_field using 'KNVK-NAMEV(01)'

  • record-NAMEV_01_004.

*perform bdc_field using 'KNVK-NAME1(01)'

  • record-NAME1_01_005.

*perform bdc_field using 'KNVK-TELF1(01)'

  • record-TELF1_01_006.

*perform bdc_field using 'KNVK-ABTNR(01)'

  • record-ABTNR_01_007.

move 1 to cnt.

loop at it_knvk1 .

concatenate 'knvk-anred( ' cnt ' ) ' into fld.

perform bdc_field using fld it_knvk1-anred.

cnt = cnt + 1.

endloop.

move 1 to cnt.

loop at it_knvk2 .

concatenate 'knvk-name1( ' cnt ' ) ' into fld.

perform bdc_field using fld it_knvk2-name1.

cnt = cnt + 1.

endloop.

move 1 to cnt.

loop at it_knvk3 .

concatenate 'knvk-namev( ' cnt ' ) ' into fld.

perform bdc_field using fld it_knvk3-namev.

cnt = cnt + 1.

endloop.

move 1 to cnt.

loop at it_knvk4 .

concatenate 'knvk-telf1( ' cnt ' ) ' into fld.

perform bdc_field using fld it_knvk4-telf1.

cnt = cnt + 1.

endloop.

move 1 to cnt.

loop at it_knvk5 .

concatenate 'knvk-abtnr( ' cnt ' ) ' into fld.

perform bdc_field using fld it_knvk5-abtnr.

cnt = cnt + 1.

endloop.

screen 360

perform bdc_dynpro using 'SAPMF02D' '0360'.

perform bdc_field using 'BDC_CURSOR'

'KNVK-NAMEV(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_transaction using 'XD02'.

endloop.

perform close_group.

Hope this resolves your query.

<b>Reward all the helpful answers.</b>

Regards

hymavathi_oruganti
Active Contributor
0 Kudos

note that <b>CONACTENATE</b> stmt is very very important while handling table control in bdc.

while u record the records in table contrl,

example they will be stored as ebelp(1), ebelp(2).....ebelp(20).

(1)----implies row.

to handle that its not possible, as we cant declare , DATA A(N) TYPE CHAR.

so, we can handle like this,

declare,

DATA VALUE(10) TYPE CHAR, n type i.

loop .......

n = 1.

concatenate <b>'ebelp('</b> <b>n ')'</b> into value.

n = n + 1.

endloop.

now value contaions ebelp(1), ebelp(2)................