‎2009 May 06 7:28 PM
Hi experts,
I m looking for a sample program of an editable table control, where i can add/modify rows (without popup screens) to a control table , and restore the result in an internal table.
table control must have 4 columns : position , material number, material description and quantity.
The columns position and material description are not editable.
The value of positions is an integer : every new row results : last position + 1.
material description will be filled automatically after filling the material number.
Thanks.
‎2009 May 06 7:34 PM
Using a Table control with an internal table
Table control : TC1
Internal table : it_zsd00003
In the attributes of the table control, select w/SelColumn to get a selection
column on the table control, and give a name (In this example IT_ZSD00003-LINESEL).
Remember to include the field IT_ZSD00003-LINESEL in the
internal table ( linesel(1) type c, ).
When used with an internal table, remember to program
the update functionality of the database tables. Update and
validation can be done when leaving the screen or in PAI using controlname-
current_line (E.g. TC1-current_line ) to indentify the entry in the internal table.
process before output.
module status_0100.
loop at it_zsd00003 with control tc1 cursor tc1-
current_line.
module tc1_set_field_attr. "Optional
endloop.
module status_0100 output.
set pf-status 'SCREEN0100'.
* OPTIONAL: If it_zsd00003 hasn't allready been filled with
* data, you can do it the first time PBO is called
module read_data.
* Setting the number of lines of the table control
describe table it_zsd00003 lines tc1-lines.
* Optional: Place the cursor on line g_current_line e.g. after a
* validation error has occured
if not ( g_current_line is initial ).
tc1-top_line = g_current_line.
clear g_current_line.
endif.
endmodule. " STATUS_0100 OUTPUT
module read_data.
if flag is initial.
perform read_data.
flag = 1.
endif.
endmodule.
module tc1_set_field_attr output.
* Optional: Protect some of the columns on the
* table control
loop at screen.
if screen-group1 = 'X'.
screen-input = 0.
modify screen.
endif.
endloop.
endif.
endmodule. " tc1_set_field_attr OUTPUT
process after input.
loop at it_zsd00003.
module modify_tc1.
endloop.
module user_command_0100.
module modify_tc1 input.
* Modify an existing entry
modify it_zsd00003 index tc1-current_line.
* OR
* Appending a new entry
append it_zsd00003.
endmodule. " modify_tc1 INPUT
Deleting a single line selected with the selection column:
form delete_record.
loop at it_zsd00003.
if it_zsd00003-linesel = 'X'.
exit.
endif.
endloop.
delete from zsd00003
where zdriftscenter = it_zsd00003-zdriftscenter
.................................
endform.
Regards,
Prabhudas
‎2009 May 06 7:40 PM
You can check programs : DEMO_DYNPRO_TABLE_CONTROL_1 & DEMO_DYNPRO_TABLE_CONTROL_2