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

bdc table control ( screen resolution )

Former Member
0 Likes
661

hai,

in the transaction xk01 if i recording in shdb for vendor account details my screen resolution is 5 so only 5 records is reflecting in the transaction xk01 while i entering more than 5 rows.pls tell the solution as soon as possible.

with regards,

r.dhineshraj.

1 ACCEPTED SOLUTION
Read only

former_member69765
Contributor
0 Likes
615

The exact solution to your problem is given here :

check my reply here .. there is sample code also ..

http://www.abaplearning.com/index.php?option=com_fireboard&Itemid=2&func=view&id=11&catid=8

and also here :

Edited by: Varun Verma on Jul 1, 2008 10:32 AM

5 REPLIES 5
Read only

Former Member
0 Likes
615

Hi,

Go through this

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 concatenated value

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.

Thanks

Ankur Sharma

Read only

former_member69765
Contributor
0 Likes
616

The exact solution to your problem is given here :

check my reply here .. there is sample code also ..

http://www.abaplearning.com/index.php?option=com_fireboard&Itemid=2&func=view&id=11&catid=8

and also here :

Edited by: Varun Verma on Jul 1, 2008 10:32 AM

Read only

Former Member
0 Likes
615

Hi,

To do this you have to capture the Page Down Tcode... Just keep a counter in place and call the PageDOwn function so that you can enter more data.

Remember When you do a page down.. the last record becomes the first. So the fresh data will start from row 2.

Regards

VIjay

Read only

Former Member
0 Likes
615

hi dineesh,

When you are populating the table control data... check for the logic and apply the following code.

LOOP AT itab_fields WHERE count EQ w_index.

ADD 1 TO w_tabix.

IF w_tabix gt 5.

PERFORM bdc_dynpro USING 'SAPLSD41' '2200'.

PERFORM bdc_field USING 'BDC_CURSOR'

w_fname.

PERFORM bdc_field USING 'BDC_OKCODE'

'=P+'.

w_tabix = 2.

ENDIF. CONCATENATE 'DD03P-FIELDNAME(' w_tabix ')' INTO w_fname.

CONCATENATE 'DD03P-KEYFLAG(' w_tabix ')' INTO w_fkey.

CONCATENATE 'DD03D-DATATYPE(' w_tabix ')' INTO w_ftype.

CONCATENATE 'DD03P-LENG(' w_tabix ')' INTO w_flen.

CONCATENATE 'DD03P-DDTEXT(' w_tabix ')' INTO w_fdesc.

Note: This code consists of fieldnames of se11 transaction... please do the necessary changes

this should definitely help you....

reward points if useful

regards

padma

Read only

Former Member
0 Likes
615

Check this on for XK01

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

Ankur Sharma