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

Dear All .

can you give me some idea how to do BDC with tbale Control . Any documentation on the same or some simple example .

11 REPLIES 11

former_member188685
Active Contributor
0 Kudos

Former Member
0 Kudos

Hi

Herewith i am attaching a reoprt,you can go through them to clear your doubts.

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.

Thanks

Mrutyunjaya Tripathy

ferry_lianto
Active Contributor

abdul_hakim
Active Contributor
0 Kudos

hi

you can fill as many no of lines visible to u.Afterwards u need to scroll down by using the scroll icon and start populating the value..

Cheers,

Abdul

Former Member
0 Kudos

Handling Table Control in BDC

An example abap program of handling Table Control during bdc programming.

REPORT zmm_bdcp_purchaseorderkb02

NO STANDARD PAGE HEADING LINE-SIZE 255.

----


  • Declaring internal tables *

----


*-----Declaring line structure

DATA : BEGIN OF it_dummy OCCURS 0,

dummy(255) TYPE c,

END OF it_dummy.

*-----Internal table for line items

DATA : BEGIN OF it_idata OCCURS 0,

ematn(18), "Material Number.

menge(13), "Qyantity.

netpr(11), "Net Price.

werks(4), "Plant.

ebelp(5), "Item Number.

END OF it_idata.

*-----Deep structure for header data and line items

DATA : BEGIN OF it_me21 OCCURS 0,

lifnr(10), "Vendor A/c No.

bsart(4), "A/c Type.

bedat(8), "Date of creation of PO.

ekorg(4), "Purchasing Organisation.

ekgrp(3), "Purchasing Group.

x_data LIKE TABLE OF it_idata,

END OF it_me21.

DATA : x_idata LIKE LINE OF it_idata.

DATA : v_delimit VALUE ','.

DATA : v_indx(3) TYPE n.

DATA : v_fnam(30) TYPE c.

DATA : v_count TYPE n.

DATA : v_ne TYPE i.

DATA : v_ns TYPE i.

*include bdcrecx1.

INCLUDE zmm_incl_purchaseorderkb01.

----


  • Search help for file *

----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

IMPORTING

file_name = p_file.

START-OF-SELECTION.

----


  • To upload the data into line structure *

----


CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = p_file

filetype = 'DAT'

TABLES

data_tab = it_dummy.

----


  • Processing the data from line structure to internal tables *

----


REFRESH:it_me21.

CLEAR :it_me21.

LOOP AT it_dummy.

IF it_dummy-dummy+0(01) = 'H'.

v_indx = v_indx + 1.

CLEAR it_idata.

REFRESH it_idata.

CLEAR it_me21-x_data.

REFRESH it_me21-x_data.

SHIFT it_dummy.

SPLIT it_dummy AT v_delimit INTO it_me21-lifnr

it_me21-bsart

it_me21-bedat

it_me21-ekorg

it_me21-ekgrp.

APPEND it_me21.

ELSEIF it_dummy-dummy+0(01) = 'L'.

SHIFT it_dummy.

SPLIT it_dummy AT v_delimit INTO it_idata-ematn

it_idata-menge

it_idata-netpr

it_idata-werks

it_idata-ebelp.

APPEND it_idata TO it_me21-x_data.

MODIFY it_me21 INDEX v_indx.

ENDIF.

ENDLOOP.

----


  • To open the group *

----


PERFORM open_group.

----


  • To populate the bdcdata table for header data *

----


LOOP AT it_me21.

v_count = v_count + 1.

REFRESH it_bdcdata.

PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0100',

' ' 'BDC_CURSOR' 'EKKO-LIFNR',

' ' 'BDC_OKCODE' '/00',

' ' 'EKKO-LIFNR' it_me21-lifnr,

' ' 'RM06E-BSART' it_me21-bsart,

' ' 'RM06E-BEDAT' it_me21-bedat,

' ' 'EKKO-EKORG' it_me21-ekorg,

' ' 'EKKO-EKGRP' it_me21-ekgrp,

' ' 'RM06E-LPEIN' 'T'.

PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',

' ' 'BDC_CURSOR' 'RM06E-EBELP',

' ' 'BDC_OKCODE' '/00'.

MOVE 1 TO v_indx.

*-----To populate the bdcdata table for line item data

LOOP AT it_me21-x_data INTO x_idata.

CONCATENATE 'EKPO-EMATN(' v_indx ')' INTO v_fnam.

PERFORM subr_bdc_table USING ' ' v_fnam x_idata-ematn.

CONCATENATE 'EKPO-MENGE(' v_indx ')' INTO v_fnam.

PERFORM subr_bdc_table USING ' ' v_fnam x_idata-menge.

CONCATENATE 'EKPO-NETPR(' v_indx ')' INTO v_fnam.

PERFORM subr_bdc_table USING ' ' v_fnam x_idata-netpr.

CONCATENATE 'EKPO-WERKS(' v_indx ')' INTO v_fnam.

PERFORM subr_bdc_table USING ' ' v_fnam x_idata-werks.

v_indx = v_indx + 1.

PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',

' ' 'BDC_CURSOR' 'RM06E-EBELP',

' ' 'BDC_OKCODE' '/00'.

ENDLOOP.

PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',

' ' 'BDC_CURSOR' 'RM06E-EBELP',

' ' 'BDC_OKCODE' '=BU'.

PERFORM bdc_transaction USING 'ME21'.

ENDLOOP.

PERFORM close_group.

----


  • End of selection event *

----


END-OF-SELECTION.

IF session NE 'X'.

*-----To display the successful records

WRITE :/10 text-001. "Sucess records

WRITE :/10 SY-ULINE(20).

SKIP.

IF it_sucess IS INITIAL.

WRITE 😕 text-002.

ELSE.

WRITE 😕 text-008, "Total number of Succesful records

35 v_ns.

SKIP.

WRITE:/ text-003, "Vendor Number

17 text-004, "Record number

30 text-005. "Message

ENDIF.

LOOP AT it_sucess.

WRITE:/4 it_sucess-lifnr,

17 it_sucess-tabix CENTERED,

30 it_sucess-sucess_rec.

ENDLOOP.

SKIP.

*-----To display the erroneous records

WRITE:/10 text-006. "Error Records

WRITE:/10 SY-ULINE(17).

SKIP.

IF it_error IS INITIAL.

WRITE:/ text-007. "No error records

ELSE.

WRITE:/ text-009, "Total number of erroneous records

35 v_ne.

SKIP.

WRITE:/ text-003, "Vendor Number

17 text-004, "Record number

30 text-005. "Message

ENDIF.

LOOP AT it_error.

WRITE:/4 it_error-lifnr,

17 it_error-tabix CENTERED,

30 it_error-error_rec.

ENDLOOP.

REFRESH it_sucess.

REFRESH it_error.

ENDIF.

CODE IN INCLUDE.

----


  • Include ZMM_INCL_PURCHASEORDERKB01

----


DATA: it_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

DATA: it_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

DATA: E_GROUP_OPENED.

*-----Internal table to store sucess records

DATA:BEGIN OF it_sucess OCCURS 0,

msgtyp(1) TYPE c,

lifnr LIKE ekko-lifnr,

tabix LIKE sy-tabix,

sucess_rec(125),

END OF it_sucess.

DATA: g_mess(125) type c.

*-----Internal table to store error records

DATA:BEGIN OF it_error OCCURS 0,

msgtyp(1) TYPE c,

lifnr LIKE ekko-lifnr,

tabix LIKE sy-tabix,

error_rec(125),

END OF it_error.

----


  • Selection screen

----


SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS session RADIOBUTTON GROUP ctu. "create session

SELECTION-SCREEN COMMENT 3(20) text-s07 FOR FIELD session.

SELECTION-SCREEN POSITION 45.

PARAMETERS ctu RADIOBUTTON GROUP ctu. "call transaction

SELECTION-SCREEN COMMENT 48(20) text-s08 FOR FIELD ctu.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 3(20) text-s01 FOR FIELD group.

SELECTION-SCREEN POSITION 25.

PARAMETERS group(12). "group name of session

SELECTION-SCREEN COMMENT 48(20) text-s05 FOR FIELD ctumode.

SELECTION-SCREEN POSITION 70.

PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'.

"A: show all dynpros

"E: show dynpro on error only

"N: do not display dynpro

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 48(20) text-s06 FOR FIELD cupdate.

SELECTION-SCREEN POSITION 70.

PARAMETERS cupdate LIKE ctu_params-updmode DEFAULT 'L'.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 3(20) text-s03 FOR FIELD keep.

SELECTION-SCREEN POSITION 25.

PARAMETERS: keep AS CHECKBOX. "' ' = delete session if finished

"'X' = keep session if finished

SELECTION-SCREEN COMMENT 48(20) text-s09 FOR FIELD e_group.

SELECTION-SCREEN POSITION 70.

PARAMETERS e_group(12). "group name of error-session

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 51(17) text-s03 FOR FIELD e_keep.

SELECTION-SCREEN POSITION 70.

PARAMETERS: e_keep AS CHECKBOX. "' ' = delete session if finished

"'X' = keep session if finished

SELECTION-SCREEN END OF LINE.

PARAMETERS:p_file LIKE rlgrap-filename.

----


  • at selection screen *

----


AT SELECTION-SCREEN.

  • group and user must be filled for create session

IF SESSION = 'X' AND

GROUP = SPACE. "OR USER = SPACE.

MESSAGE E613(MS).

ENDIF.

----


  • create batchinput session *

----


FORM OPEN_GROUP.

IF SESSION = 'X'.

SKIP.

WRITE: /(20) 'Create group'(I01), GROUP.

SKIP.

*----open batchinput group

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = GROUP

USER = sy-uname.

WRITE:/(30) 'BDC_OPEN_GROUP'(I02),

(12) 'returncode:'(I05),

SY-SUBRC.

ENDIF.

ENDFORM. "OPEN_GROUP

----


  • end batchinput session *

----


FORM CLOSE_GROUP.

IF SESSION = 'X'.

*------close batchinput group

CALL FUNCTION 'BDC_CLOSE_GROUP'.

WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),

(12) 'returncode:'(I05),

SY-SUBRC.

ELSE.

IF E_GROUP_OPENED = 'X'.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

WRITE: /.

WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06).

ENDIF.

ENDIF.

ENDFORM. "CLOSE_GROUP

----


  • Start new transaction according to parameters *

----


FORM BDC_TRANSACTION USING TCODE TYPE ANY.

DATA: L_SUBRC LIKE SY-SUBRC.

*------batch input session

IF SESSION = 'X'.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = TCODE

TABLES

DYNPROTAB = it_BDCDATA.

WRITE: / 'BDC_INSERT'(I03),

TCODE,

'returncode:'(I05),

SY-SUBRC,

'RECORD:',

SY-INDEX.

ELSE.

REFRESH it_MESSTAB.

CALL TRANSACTION TCODE USING it_BDCDATA

MODE CTUMODE

UPDATE CUPDATE

MESSAGES INTO it_MESSTAB.

L_SUBRC = SY-SUBRC.

WRITE: / 'CALL_TRANSACTION',

TCODE,

'returncode:'(I05),

L_SUBRC,

'RECORD:',

SY-INDEX.

ENDIF.

----


  • Message handling for Call Transaction *

----


perform subr_mess_hand using g_mess.

*-----Erzeugen fehlermappe

IF L_SUBRC <> 0 AND E_GROUP <> SPACE.

IF E_GROUP_OPENED = ' '.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = E_GROUP

USER = sy-uname

KEEP = E_KEEP.

E_GROUP_OPENED = 'X'.

ENDIF.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = TCODE

TABLES

DYNPROTAB = it_BDCDATA.

ENDIF.

REFRESH it_BDCDATA.

ENDFORM. "BDC_TRANSACTION

----


  • Form subr_bdc_table *

----


  • text

----


  • -->P_0220 text *

  • -->P_0221 text *

  • -->P_0222 text *

----


FORM subr_bdc_table USING VALUE(P_0220) TYPE ANY

VALUE(P_0221) TYPE ANY

VALUE(P_0222) TYPE ANY.

CLEAR it_bdcdata.

IF P_0220 = ' '.

CLEAR it_bdcdata.

it_bdcdata-fnam = P_0221.

it_bdcdata-fval = P_0222.

APPEND it_bdcdata.

ELSE.

it_bdcdata-dynbegin = P_0220.

it_bdcdata-program = P_0221.

it_bdcdata-dynpro = P_0222.

APPEND it_bdcdata.

ENDIF.

ENDFORM. " subr_bdc_table

----


  • Form subr_mess_hand *

----


  • text *

----


  • -->P_G_MESS text *

----


FORM subr_mess_hand USING P_G_MESS TYPE ANY.

LOOP AT IT_MESSTAB.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = it_messtab-msgid

LANG = it_messtab-msgspra

NO = it_messtab-msgnr

v1 = it_messtab-msgv1

v2 = it_messtab-msgv2

IMPORTING

MSG = P_G_MESS

EXCEPTIONS

OTHERS = 0.

CASE it_messtab-msgtyp.

when 'E'.

it_error-error_rec = P_G_MESS.

it_error-lifnr = it_me21-lifnr.

it_error-tabix = v_count.

APPEND IT_ERROR.

when 'S'.

it_sucess-sucess_rec = P_G_MESS.

it_sucess-lifnr = it_me21-lifnr.

it_sucess-tabix = v_count.

APPEND IT_SUCESS.

endcase.

ENDLOOP.

Describe table it_sucess lines v_ns.

Describe table it_error lines v_ne.

ENDFORM. " subr_mess_hand

former_member201285
Active Participant
0 Kudos

Hello All,

what about adding lines when the table control is already full? I want to add a new bank account for a customer (FK02) with several bank accounts. In dialog I must scroll until a new empty line appears. How can I realize that with BDC?

Obviously the index refers to the visible part of the table control. So it is not possible e.g. to qualify index 6 when the table control contains only 5 (visible) lines.

Regards,

Uli

Former Member
0 Kudos

Hi,

This code is BDC for ME51, first you finish recording and then do my code, it will execute perfectly, and you should create flat file for ME41 screen.

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.

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

PAGES = 10.

CTRL = 0.

LOOP AT ITAB WHERE NUMBER = ITAB-NUMBER.

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 'ElBAN-MATNR(' PVALUE CTRL1 ')' into Temp.

CONDENSE Temp NO-GAPS.

perform bdc_field using 'BDC_CURSOR' Temp.

perform bdc_field using 'BDC_OKCODE'

'/00'.

ENDLOOP.

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

IF USEFULL REWARD

0 Kudos

Hi,

I think the decisive point is the field RM06B-BNFPO which makes it possible to set the position in the table control.

Unfortunately, the transaction FK02 does not have such a field...

Former Member
0 Kudos

Create Table Control

• Step 1 (Create new structure for table control)

Type is name of structure (ZTC_EKKO) and press create

• Step 2 (Create Program)

Goto transaction SE80(Object Navigator) -> Repository Browser -> Program.

Enter your program name, please ensure that is begins with SAPMZ…… as this is a module pool (dialog program).

Press enter to create, and press yes!

Ensure that you create a top include, and press Enter.

Accept the name created for the top include.

Press Enter.

Press Save

• Step 3 (Create TOP include)

Double click on the top include and enter following ABAP code:

Tables: ZTC_EKKO.

controls: tc100 type tableview using screen 100.

data: ok_code type sy-ucomm.

data: it_ekko type standard

table of ZTC_EKKO initial size 0,

wa_ekko type ZTC_EKKO.

data: ok_code type sy-ucomm.

Press Save and Activate

• Step 4 (Create screen)

Right click the program to create a screen 100 for the dialog. Enter Short description, set screen type to Normal and enter 0 or blank into Next screen. Then move to Element List tab and enter the OK code as OK_CODE (i.e. the same as what you declared in the top include with data: ok_code type sy-ucomm).

• Step 5 (Create table control)

Press the Layout button to bring up the screen painter editor.

Press table control button and drag it on to the screen, enter the name of table control created in TOP include (TC100). Now press the yellow button for attributes and set the table control as below options

• Step 6 (Populate table control )

Press the orange button (Fields). On the next screen enter ZTC_EKKO and press the ‘Get from Dict’ button. Select the fields you want (all) and press enter. Now drag them onto your Table Control.

Below is the result, there will been syntax errors if we check now! So Save and go back into the flow logic tab.

• Step 7 (Create flow control )

Within the flow logic of screen 100 and create two modules, one to select the data from the database and the other to move the selected fields into the table control. Also insert the two loop statements to populate and retrieve the lines of the table control.

PROCESS BEFORE OUTPUT.

  • MODULE STATUS_0100.

module data_retrieval.

loop at it_ekko into wa_ekko with control TC100.

module populate_screen.

endloop.

*

PROCESS AFTER INPUT.

loop at it_ekko.

endloop.

  • MODULE USER_COMMAND_0100.

Double click the module data_retrieval to create and click yes to get past the popup. Ensure that a new include is created to hold all the PBO modules (default). Press enter.

Select 10 rows of data from the EKKO table and load into the internal table it_ekko. Go back to the flow logic to load this data into the Table Control.

----


***INCLUDE MZ_TCONTROL_DATA_RETRIEVALO01 .

----


&----


*& Module data_retrieval OUTPUT

&----


  • text

----


MODULE data_retrieval OUTPUT.

  • select data from ekko table

SELECT ebeln bukrs bstyp bsart

bsakz loekz statu aedat

UP TO 10 ROWS

FROM ekko

INTO CORRESPONDING FIELDS OF TABLE it_ekko.

ENDMODULE. " data_retrieval OUTPUT

Double click the module populate_screen to create. Now move the values in this loop from the wa_ekko into the Table Control with the move-corresponding statement.

MODULE populate_screen OUTPUT.

DATA: ld_line TYPE i.

  • Set which line of table is a top of displayed table control

IF sy-stepl = 1.

tc100-lines =

tc100-top_line + sy-loopc - 1.

ENDIF.

  • move fields from work area to scrren fields

MOVE-CORRESPONDING wa_ekko TO ztc_ekko.

ENDMODULE. " populate_screen OUTPUT

• Step 8 (Create transaction )

Now create a transaction to test the table control program. Right click the Program and select create-> transaction.

• Step 9 (Execute transaction )

Execute transaction ZTC

Former Member
0 Kudos

HI,

see this program for purchase order(tcode me21n)which is having a table control.

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.

FLAT FILE:

H1171611000001*1000

ICPU116000*1000

ILEY BOARD1010000*1000

IMOUSE66000*1000

H1171711000001*1000

ICPU580000*1000

H1171701000001*1000

IMOUSE33000*1000

ILEY BOARD1010000*1000

<b>reward all helpful answers</b>

rgds,

bharat.

Former Member
0 Kudos

hi

just refer to the link below

http://www.sapmaterial.com/?gclid=CN322K28t4sCFQ-WbgodSGbK2g

regards

ravish

<b>plz dont forget to reward points if helpful</b>