10-04-2008 1:14 PM
Hi Experts..
Is there any class available to handle table control ...
as there is class for grid control - CL_GUI_ALV_GRID
if yes what is the name and how to handle it...
Also like to know where i can get list of all classes and documentation related to it
..
Thanks
..Ashish
10-04-2008 3:09 PM
Hi
Try to use class CL_TABLECONTROL. I never used it, but method names and descriptions to them makes me think that table control is handled by this class.
10-04-2008 3:09 PM
Hi
Try to use class CL_TABLECONTROL. I never used it, but method names and descriptions to them makes me think that table control is handled by this class.
10-04-2008 9:34 PM
Hello Ashish
I have neither known nor used this class before. Therefore, I tried to write a small sample report which shows how to get the marked rows from a table control with MARK row (see FORM execute_tabctrl_methods ).
Screen '0100' flow logic (I used the table control wizard):
PROCESS BEFORE OUTPUT.
MODULE status_0100.
*&SPWIZARD: MODULE TABCTRL1_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE TABCTRL1_CHANGE_COL_ATTR.
LOOP AT gt_outtab
INTO gs_outtab
WITH CONTROL tabctrl1
CURSOR tabctrl1-current_line.
*&SPWIZARD: MODULE TABCTRL1_CHANGE_FIELD_ATTR
MODULE tabctrl1_move.
MODULE tabctrl1_get_lines.
ENDLOOP.
*
PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'TABCTRL1'
LOOP AT gt_outtab.
CHAIN.
FIELD knb1-mandt.
FIELD knb1-kunnr.
FIELD knb1-bukrs.
FIELD knb1-pernr.
FIELD knb1-erdat.
FIELD knb1-ernam.
FIELD knb1-sperr.
FIELD knb1-loevm.
FIELD knb1-zuawa.
FIELD knb1-busab.
FIELD knb1-akont.
MODULE tabctrl1_modify ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.
MODULE tabctrl1_user_command.
*&SPWIZARD: MODULE TABCTRL1_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE TABCTRL1_CHANGE_COL_ATTR.
MODULE user_command_0100.
Screen '0100' contains table control TABCTRL1 with some fields of KNB1.
The ok-code field is assigned to GD_OKCODE.
" Element list:
TABCTRL1
KNB1-MANDT
KNB1-KUNNR
KNB1-BUKRS
KNB1-PERNR
KNB1-ERDAT
KNB1-ERNAM
KNB1-SPERR
KNB1-LOEVM
KNB1-ZUAWA
KNB1-BUSAB
KNB1-AKONT " all text fields
MARK " MARK column
KNB1-MANDT " I/O fields
KNB1-KUNNR
KNB1-BUKRS
KNB1-PERNR
KNB1-ERDAT
KNB1-ERNAM
KNB1-SPERR
KNB1-LOEVM
KNB1-ZUAWA
KNB1-BUSAB
KNB1-AKONT
GD_OKCODE " ok-code field
Sample report ZUS_SDN_TABLECONTROL:
*&---------------------------------------------------------------------*
*& Report ZUS_SDN_TABLECONTROL
*&
*&---------------------------------------------------------------------*
*& Thread: Class available to handle table control
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1074146"></a>
*&---------------------------------------------------------------------*
REPORT zus_sdn_tablecontrol.
TYPE-POOLS: abap.
TYPES: BEGIN OF ty_s_outtab.
TYPES: mark TYPE abap_bool.
INCLUDE TYPE knb1.
TYPES: END OF ty_s_outtab.
TYPES: ty_t_outtab TYPE STANDARD TABLE OF ty_s_outtab
WITH DEFAULT KEY.
DATA: gt_outtab TYPE ty_t_outtab,
gs_outtab TYPE ty_s_outtab.
DATA:
gd_okcode TYPE ui_func,
gd_repid TYPE syrepid.
***&SPWIZARD: DATA DECLARATION FOR TABLECONTROL 'TABCTRL1'
*&SPWIZARD: DEFINITION OF DDIC-TABLE
TABLES: knb1.
*&SPWIZARD: DECLARATION OF TABLECONTROL 'TABCTRL1' ITSELF
CONTROLS: tabctrl1 TYPE TABLEVIEW USING SCREEN 0100.
*&SPWIZARD: LINES OF TABLECONTROL 'TABCTRL1'
DATA: g_tabctrl1_lines LIKE sy-loopc.
DATA: go_tabctrl TYPE REF TO cl_tablecontrol,
go_tc_data TYPE REF TO cl_satt_tc_data.
PARAMETERS:
p_bukrs TYPE bukrs DEFAULT '2000' OBLIGATORY.
START-OF-SELECTION.
SELECT * FROM knb1 INTO CORRESPONDING FIELDS OF TABLE gt_outtab
UP TO 20 ROWS
WHERE bukrs = p_bukrs.
TRY.
CREATE OBJECT go_tc_data
EXPORTING
i_t_values = gt_outtab
i_markfield = 'MARK'.
CREATE OBJECT go_tabctrl
EXPORTING
i_tc = tabctrl1
i_table_data = go_tc_data
i_mode = 'C'
* i_empty_lines = 15
* i_ok_delete_row = 'satt14'
* i_ok_deselect_all = 'satt02'
* i_ok_first_page = 'satt06'
* i_ok_insert_multiple_lines = 'satt12'
* i_ok_insert_row = 'satt13'
* i_ok_last_page = 'satt09'
* i_ok_next_page = 'satt08'
* i_ok_previous_page = 'satt07'
* i_ok_select_all = 'satt01'
* i_ok_sort_down = 'satt10'
* i_ok_sort_up = 'satt11'
* i_ok_system_copy = 'satt04'
* i_ok_system_cut = 'satt03'
* i_ok_system_paste = 'satt05'
* i_ok_undo = 'satt15'
EXCEPTIONS
canceled = 1
error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CATCH cx_satt_wrong_fieldname .
CATCH cx_satt_error .
ENDTRY.
* ok-code field = GD_OKCODE
CALL SCREEN '0100'.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
* SET TITLEBAR 'xxx'.
** CALL METHOD go_grid1->refresh_table_display
*** EXPORTING
*** IS_STABLE =
*** I_SOFT_REFRESH =
** EXCEPTIONS
** FINISHED = 1
** others = 2
** .
** IF sy-subrc <> 0.
*** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
** ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
WHEN OTHERS.
PERFORM execute_tabctrl_methods.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form EXECUTE_TABCTRL_METHODS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM execute_tabctrl_methods .
DATA: lt_marked_rows TYPE satt_tabix_t.
break-point.
TRY.
CALL METHOD go_tabctrl->get_marked_rows
RECEIVING
e_t_index = lt_marked_rows.
CATCH cx_satt_error .
ENDTRY.
ENDFORM. " EXECUTE_TABCTRL_METHODS
*&SPWIZARD: OUTPUT MODULE FOR TC 'TABCTRL1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MOVE ITAB TO DYNPRO
MODULE tabctrl1_move OUTPUT.
MOVE-CORRESPONDING gs_outtab TO knb1.
ENDMODULE. "TABCTRL1_MOVE OUTPUT
*&SPWIZARD: OUTPUT MODULE FOR TC 'TABCTRL1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE tabctrl1_get_lines OUTPUT.
g_tabctrl1_lines = sy-loopc.
ENDMODULE. "TABCTRL1_GET_LINES OUTPUT
*&SPWIZARD: INPUT MODULE FOR TC 'TABCTRL1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: MODIFY TABLE
MODULE tabctrl1_modify INPUT.
MOVE-CORRESPONDING knb1 TO gs_outtab.
MODIFY gt_outtab
FROM gs_outtab
INDEX tabctrl1-current_line.
ENDMODULE. "TABCTRL1_MODIFY INPUT
*----------------------------------------------------------------------*
* INCLUDE TABLECONTROL_FORMS *
*----------------------------------------------------------------------*
Regards
Uwe
10-06-2008 7:03 AM
Can You send me link related to table control class documentation
10-06-2008 8:23 AM
Hello Ashih
Actually I was hoping that you are taking my little input to dig deeper into this class and share your knowledge and experiences with us (SDN members).
As I said I have never used this class before and it is unlikely that I will use in the future because I basically cannot program table controls anymore. I will always replace them by editable ALV grids which are much more powerful.
Regards
Uwe
11-11-2008 8:43 AM