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

TABLE CONTROL

Former Member
0 Likes
466

can anybody provide me the sample code for table control in dialog prog...

i want to display a table control and when user enters values and on click of save those values should be saved in db table....

how to get those table control values?

thankx

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
430

Hi lucky ,

******program to create table control thru dialog programming*********

PROCESS BEFORE OUTPUT.

MODULE STATUS_0100.

LOOP WITH CONTROL TCTRL_USERDATA.

MODULE DISPLAY_USERDATA.

ENDLOOP.

MODULE AFTER_LOOPING.

*

PROCESS AFTER INPUT.

MODULE USER_COMMAND_0100.

LOOP WITH CONTROL TCTRL_USERDATA.

MODULE EXTRACT_USERDATA.

ENDLOOP.

MODULE USER_COMMAND_0100_AFTER_LOOP.

-


ZTBLDTOP

&----


*& Include ZTBLDEMO Report ZTBLDEMO *

*& *

&----


REPORT ZTBLDEMO MESSAGE-ID AT .

DATA: BEGIN OF RECORD,

NAME(30),

PHONE(20),

EMAIL(50),

END OF RECORD.

DATA: ITAB_PHONELIST LIKE RECORD OCCURS 0 WITH HEADER LINE.

CONTROLS: TCTRL_PHONELIST TYPE TABLEVIEW USING SCREEN 100.

DATA: SAVE_CODE(4),

OK_CODE(4),

FILENAME LIKE RLGRAP-FILENAME,

CONFIRMATION,

SELECTION.

-


ZTBLDEMO

&----


*& Report ZUSRDATA *

*& *

&----


*& *

*& *

&----


INCLUDE ZTBLDTOP. " global Data

  • INCLUDE ZUSRDO01. " PBO-Modules *

  • INCLUDE ZUSRDI01. " PAI-Modules *

  • INCLUDE ZUSRDF01. " FORM-Routines *

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'FOR100'.

SET TITLEBAR '100'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module DISPLAY_USERDATA OUTPUT

&----


  • text

----


MODULE DISPLAY_USERDATA OUTPUT.

READ TABLE ITAB_PHONELIST INDEX TCTRL_PHONELIST-CURRENT_LINE.

IF SY-SUBRC EQ 0.

RECORD-NAME = ITAB_PHONELIST-NAME.

RECORD-PHONE = ITAB_PHONELIST-PHONE.

RECORD-EMAIL = ITAB_PHONELIST-EMAIL.

ELSE.

EXIT FROM STEP-LOOP.

ENDIF.

ENDMODULE. " DISPLAY_USERDATA OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

SAVE_CODE = OK_CODE.

CLEAR OK_CODE.

CASE SAVE_CODE.

WHEN 'BACK'.

CALL FUNCTION 'COPO_POPUP_TO_GOON'

EXPORTING

TEXTLINE1 = 'Any modifications will be lost!'

TEXTLINE2 = 'Are you sure?'

TITEL = 'Exit The Program'

IMPORTING

answer = confirmation.

if confirmation = 'G'.

LEAVE PROGRAM.

ENDIF.

WHEN 'DELE'.

CALL FUNCTION 'COPO_POPUP_TO_GOON'

EXPORTING

TEXTLINE1 = 'Selected rows will be deleted!'

TEXTLINE2 = 'Are you sure?'

TITEL = 'Delete rows'

IMPORTING

answer = confirmation.

IF CONFIRMATION = 'G'.

REFRESH ITAB_PHONELIST.

CLEAR ITAB_PHONELIST.

ENDIF.

WHEN 'SAVE'.

REFRESH ITAB_PHONELIST.

CLEAR ITAB_PHONELIST.

WHEN 'APND'.

REFRESH ITAB_PHONELIST.

CLEAR ITAB_PHONELIST.

WHEN 'READ'.

IF NOT FILENAME IS INITIAL.

CALL FUNCTION 'COPO_POPUP_TO_GOON'

EXPORTING

TEXTLINE1 = 'Any modifications will be lost!'

TEXTLINE2 = 'Are you sure?'

TITEL = 'Read Another File'

IMPORTING

answer = confirmation.

ENDIF.

if confirmation = 'G' or

FILENAME IS INITIAL.

CALL FUNCTION 'UPLOAD'

EXPORTING

FILENAME =

'c:\temp\fonelist.txt'

IMPORTING

ACT_FILENAME = FILENAME

TABLES

DATA_TAB = ITAB_PHONELIST.

ENDIF.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module EXTRACT_USERDATA INPUT

&----


  • text

----


MODULE EXTRACT_USERDATA INPUT.

CASE SAVE_CODE.

WHEN 'DELE'.

IF SELECTION IS INITIAL AND

confirmation = 'G'.

PERFORM TRANSFER.

ENDIF.

WHEN 'SAVE'.

PERFORM TRANSFER.

WHEN 'APND'.

PERFORM TRANSFER.

ENDCASE.

ENDMODULE. " EXTRACT_USERDATA INPUT

&----


*& Form TRANSFER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM TRANSFER.

CLEAR ITAB_PHONELIST.

ITAB_PHONELIST-NAME = RECORD-NAME.

ITAB_PHONELIST-PHONE = RECORD-PHONE.

ITAB_PHONELIST-EMAIL = RECORD-EMAIL.

APPEND ITAB_PHONELIST.

ENDFORM. " TRANSFER

&----


*& Module USER_COMMAND_0100_AFTER_LOOP INPUT

&----


  • text

----


MODULE USER_COMMAND_0100_AFTER_LOOP INPUT.

CASE SAVE_CODE.

WHEN 'SAVE'.

CALL FUNCTION 'DOWNLOAD'

EXPORTING

FILENAME = FILENAME

TABLES

DATA_TAB = ITAB_PHONELIST.

WHEN 'APND'.

CLEAR ITAB_PHONELIST. " a blank row being created.

APPEND ITAB_PHONELIST. " a blank row being added.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100_AFTER_LOOP INPUT

see these system defined programs

DEMO_DYNPRO_TABCONT_LOOP,

DEMO_DYNPRO_TABCONT_LOOP_AT

RSDEMO_TABLE_CONTROL

DEMO_DYNPRO_TABLE_CONTROL_1

DEMO_DYNPRO_TABLE_CONTROL_2

These r the web-sites which give step-by-step solution 2 solve u'r problem:

http://help.sap.com/saphelp_nw04/helpdata/en/9f/dbac1d35c111d1829f0000e829fbfe/content.htm

http://www.planetsap.com/online_pgm_main_page.htm

http://www.marist.idcp.org/shaine/ABAP/ABAP%20Programming/Dialog%20Programming%20-%20Table%20Control...

http://www.sapdevelopment.co.uk/dialog/tabcontrol/tc_basic.htm

http://sap.niraj.tripod.com/id29.html

***Pls reward points if u find this useful.

cheers,

gyanaraj

3 REPLIES 3
Read only

Former Member
0 Likes
430

<b>table control with scrolling:</b>

REPORT demo_dynpro_tabcont_loop.

CONTROLS flights TYPE TABLEVIEW USING SCREEN 100.

DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

DATA: itab TYPE TABLE OF demo_conn,
      fill TYPE i.
TABLES demo_conn.

DATA: lines TYPE i,
      limit TYPE i.

SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE itab.

CALL SCREEN 100.

MODULE status_0100 OUTPUT.
  SET PF-STATUS 'SCREEN_100'.
  DESCRIBE TABLE itab LINES fill.
  flights-lines = fill.
ENDMODULE.

MODULE fill_table_control OUTPUT.
  READ TABLE itab INTO demo_conn INDEX flights-current_line.
ENDMODULE.

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE read_table_control INPUT.
  lines = sy-loopc.
  MODIFY itab FROM demo_conn INDEX flights-current_line.
ENDMODULE.

MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'NEXT_LINE'.
      flights-top_line = flights-top_line + 1.
      limit = fill - lines + 1.
      IF flights-top_line > limit.
        flights-top_line = limit.
      ENDIF.
    WHEN 'PREV_LINE'.
      flights-top_line = flights-top_line - 1.
      IF flights-top_line < 0.
        flights-top_line = 0.
      ENDIF.
    WHEN 'NEXT_PAGE'.
      flights-top_line = flights-top_line + lines.
      limit = fill - lines + 1.
      IF flights-top_line > limit.
        flights-top_line = limit.
      ENDIF.
    WHEN 'PREV_PAGE'.
      flights-top_line = flights-top_line - lines.
      IF flights-top_line < 0.
        flights-top_line = 0.
      ENDIF.
    WHEN 'LAST_PAGE'.
      flights-top_line =  fill - lines + 1.
    WHEN 'FIRST_PAGE'.
      flights-top_line = 0.
  ENDCASE.
ENDMODULE.

<u>screen 100</u>


PROCESS BEFORE OUTPUT.
  MODULE STATUS_0100.
  LOOP WITH CONTROL FLIGHTS.
    MODULE FILL_TABLE_CONTROL.
  ENDLOOP.

PROCESS AFTER INPUT.
  MODULE CANCEL AT EXIT-COMMAND.
  LOOP WITH CONTROL FLIGHTS.
    module read_table_control.
  ENDLOOP.
  module user_command_0100.

Read only

0 Likes
430

<b>table control with modifications:</b>

REPORT demo_dynpro_tabcont_loop_at.

CONTROLS flights TYPE TABLEVIEW USING SCREEN 100.
DATA: cols LIKE LINE OF flights-cols,
      lines TYPE i.

DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

DATA: itab TYPE TABLE OF demo_conn.
TABLES demo_conn.

SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE itab.

LOOP AT flights-cols INTO cols WHERE index GT 2.
  cols-screen-input = '0'.
  MODIFY flights-cols FROM cols INDEX sy-tabix.
ENDLOOP.

CALL SCREEN 100.

MODULE status_0100 OUTPUT.
  SET PF-STATUS 'SCREEN_100'.
  DESCRIBE TABLE itab LINES lines.
  flights-lines = lines.
ENDMODULE.

MODULE cancel INPUT.
  LEAVE PROGRAM.
ENDMODULE.

MODULE read_table_control INPUT.
  MODIFY itab FROM demo_conn INDEX flights-current_line.
ENDMODULE.

MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'TOGGLE'.
      LOOP AT flights-cols INTO cols WHERE index GT 2.
        IF  cols-screen-input = '0'.
          cols-screen-input = '1'.
        ELSEIF  cols-screen-input = '1'.
          cols-screen-input = '0'.
        ENDIF.
        MODIFY flights-cols FROM cols INDEX sy-tabix.
      ENDLOOP.
    WHEN 'SORT_UP'.
      READ TABLE flights-cols INTO cols WITH KEY selected = 'X'.
      IF sy-subrc = 0.
        SORT itab STABLE BY (cols-screen-name+10) ASCENDING.
        cols-selected = ' '.
        MODIFY flights-cols FROM cols INDEX sy-tabix.
      ENDIF.
    WHEN 'SORT_DOWN'.
      READ TABLE flights-cols INTO cols WITH KEY selected = 'X'.
      IF sy-subrc = 0.
        SORT itab STABLE BY (cols-screen-name+10) DESCENDING.
        cols-selected = ' '.
        MODIFY flights-cols FROM cols INDEX sy-tabix.
      ENDIF.
    WHEN 'DELETE'.
      READ TABLE flights-cols INTO cols WITH KEY screen-input = '1'.
      IF sy-subrc = 0.
        LOOP AT itab INTO demo_conn WHERE mark = 'X'.
          DELETE itab.
        ENDLOOP.
      ENDIF.
  ENDCASE.
ENDMODULE.

<u>screen 100</u>

PROCESS BEFORE OUTPUT.
  MODULE STATUS_0100.
    LOOP AT ITAB INTO DEMO_CONN WITH CONTROL FLIGHTS.
  ENDLOOP.

PROCESS AFTER INPUT.
  MODULE CANCEL AT EXIT-COMMAND.
  LOOP AT ITAB.
    module read_table_control.
  ENDLOOP.
  module user_command_0100.

Read only

Former Member
0 Likes
431

Hi lucky ,

******program to create table control thru dialog programming*********

PROCESS BEFORE OUTPUT.

MODULE STATUS_0100.

LOOP WITH CONTROL TCTRL_USERDATA.

MODULE DISPLAY_USERDATA.

ENDLOOP.

MODULE AFTER_LOOPING.

*

PROCESS AFTER INPUT.

MODULE USER_COMMAND_0100.

LOOP WITH CONTROL TCTRL_USERDATA.

MODULE EXTRACT_USERDATA.

ENDLOOP.

MODULE USER_COMMAND_0100_AFTER_LOOP.

-


ZTBLDTOP

&----


*& Include ZTBLDEMO Report ZTBLDEMO *

*& *

&----


REPORT ZTBLDEMO MESSAGE-ID AT .

DATA: BEGIN OF RECORD,

NAME(30),

PHONE(20),

EMAIL(50),

END OF RECORD.

DATA: ITAB_PHONELIST LIKE RECORD OCCURS 0 WITH HEADER LINE.

CONTROLS: TCTRL_PHONELIST TYPE TABLEVIEW USING SCREEN 100.

DATA: SAVE_CODE(4),

OK_CODE(4),

FILENAME LIKE RLGRAP-FILENAME,

CONFIRMATION,

SELECTION.

-


ZTBLDEMO

&----


*& Report ZUSRDATA *

*& *

&----


*& *

*& *

&----


INCLUDE ZTBLDTOP. " global Data

  • INCLUDE ZUSRDO01. " PBO-Modules *

  • INCLUDE ZUSRDI01. " PAI-Modules *

  • INCLUDE ZUSRDF01. " FORM-Routines *

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'FOR100'.

SET TITLEBAR '100'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module DISPLAY_USERDATA OUTPUT

&----


  • text

----


MODULE DISPLAY_USERDATA OUTPUT.

READ TABLE ITAB_PHONELIST INDEX TCTRL_PHONELIST-CURRENT_LINE.

IF SY-SUBRC EQ 0.

RECORD-NAME = ITAB_PHONELIST-NAME.

RECORD-PHONE = ITAB_PHONELIST-PHONE.

RECORD-EMAIL = ITAB_PHONELIST-EMAIL.

ELSE.

EXIT FROM STEP-LOOP.

ENDIF.

ENDMODULE. " DISPLAY_USERDATA OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

SAVE_CODE = OK_CODE.

CLEAR OK_CODE.

CASE SAVE_CODE.

WHEN 'BACK'.

CALL FUNCTION 'COPO_POPUP_TO_GOON'

EXPORTING

TEXTLINE1 = 'Any modifications will be lost!'

TEXTLINE2 = 'Are you sure?'

TITEL = 'Exit The Program'

IMPORTING

answer = confirmation.

if confirmation = 'G'.

LEAVE PROGRAM.

ENDIF.

WHEN 'DELE'.

CALL FUNCTION 'COPO_POPUP_TO_GOON'

EXPORTING

TEXTLINE1 = 'Selected rows will be deleted!'

TEXTLINE2 = 'Are you sure?'

TITEL = 'Delete rows'

IMPORTING

answer = confirmation.

IF CONFIRMATION = 'G'.

REFRESH ITAB_PHONELIST.

CLEAR ITAB_PHONELIST.

ENDIF.

WHEN 'SAVE'.

REFRESH ITAB_PHONELIST.

CLEAR ITAB_PHONELIST.

WHEN 'APND'.

REFRESH ITAB_PHONELIST.

CLEAR ITAB_PHONELIST.

WHEN 'READ'.

IF NOT FILENAME IS INITIAL.

CALL FUNCTION 'COPO_POPUP_TO_GOON'

EXPORTING

TEXTLINE1 = 'Any modifications will be lost!'

TEXTLINE2 = 'Are you sure?'

TITEL = 'Read Another File'

IMPORTING

answer = confirmation.

ENDIF.

if confirmation = 'G' or

FILENAME IS INITIAL.

CALL FUNCTION 'UPLOAD'

EXPORTING

FILENAME =

'c:\temp\fonelist.txt'

IMPORTING

ACT_FILENAME = FILENAME

TABLES

DATA_TAB = ITAB_PHONELIST.

ENDIF.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module EXTRACT_USERDATA INPUT

&----


  • text

----


MODULE EXTRACT_USERDATA INPUT.

CASE SAVE_CODE.

WHEN 'DELE'.

IF SELECTION IS INITIAL AND

confirmation = 'G'.

PERFORM TRANSFER.

ENDIF.

WHEN 'SAVE'.

PERFORM TRANSFER.

WHEN 'APND'.

PERFORM TRANSFER.

ENDCASE.

ENDMODULE. " EXTRACT_USERDATA INPUT

&----


*& Form TRANSFER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM TRANSFER.

CLEAR ITAB_PHONELIST.

ITAB_PHONELIST-NAME = RECORD-NAME.

ITAB_PHONELIST-PHONE = RECORD-PHONE.

ITAB_PHONELIST-EMAIL = RECORD-EMAIL.

APPEND ITAB_PHONELIST.

ENDFORM. " TRANSFER

&----


*& Module USER_COMMAND_0100_AFTER_LOOP INPUT

&----


  • text

----


MODULE USER_COMMAND_0100_AFTER_LOOP INPUT.

CASE SAVE_CODE.

WHEN 'SAVE'.

CALL FUNCTION 'DOWNLOAD'

EXPORTING

FILENAME = FILENAME

TABLES

DATA_TAB = ITAB_PHONELIST.

WHEN 'APND'.

CLEAR ITAB_PHONELIST. " a blank row being created.

APPEND ITAB_PHONELIST. " a blank row being added.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100_AFTER_LOOP INPUT

see these system defined programs

DEMO_DYNPRO_TABCONT_LOOP,

DEMO_DYNPRO_TABCONT_LOOP_AT

RSDEMO_TABLE_CONTROL

DEMO_DYNPRO_TABLE_CONTROL_1

DEMO_DYNPRO_TABLE_CONTROL_2

These r the web-sites which give step-by-step solution 2 solve u'r problem:

http://help.sap.com/saphelp_nw04/helpdata/en/9f/dbac1d35c111d1829f0000e829fbfe/content.htm

http://www.planetsap.com/online_pgm_main_page.htm

http://www.marist.idcp.org/shaine/ABAP/ABAP%20Programming/Dialog%20Programming%20-%20Table%20Control...

http://www.sapdevelopment.co.uk/dialog/tabcontrol/tc_basic.htm

http://sap.niraj.tripod.com/id29.html

***Pls reward points if u find this useful.

cheers,

gyanaraj