‎2007 Oct 23 12:02 PM
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
‎2007 Oct 23 2:13 PM
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.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
‎2007 Oct 23 12:05 PM
<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.
‎2007 Oct 23 12:06 PM
<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.
‎2007 Oct 23 2:13 PM
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.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