data:beginof itab occurs0. includestructure mara. data:mark type char1. data:endof itab.
DATA: OK_CODE LIKE SY-UCOMM, S_OK_CODE LIKE SY-UCOMM.
select * from mara into corresponding fieldsoftable itab .
*&SPWIZARD: DECLARATION OF TABLECONTROL 'MYTC' ITSELF CONTROLS: MYTC TYPE TABLEVIEW USINGSCREEN0120.
*&SPWIZARD: LINES OF TABLECONTROL 'MYTC' DATA: G_MYTC_LINES LIKE SY-LOOPC.
CALLSCREEN120. "调用屏幕 ,需要自己增加
*&SPWIZARD: OUTPUT MODULE FOR TC 'MYTC'. DO NOT CHANGE THIS LINE! *&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR MODULE MYTC_CHANGE_TC_ATTR OUTPUT. DESCRIBETABLE ITAB LINES MYTC-lines. ENDMODULE.
*&SPWIZARD: OUTPUT MODULE FOR TC 'MYTC'. DO NOT CHANGE THIS LINE! *&SPWIZARD: GET LINES OF TABLECONTROL MODULE MYTC_GET_LINES OUTPUT. G_MYTC_LINES = SY-LOOPC. ENDMODULE.
*&SPWIZARD: INPUT MODULE FOR TC 'MYTC'. DO NOT CHANGE THIS LINE! *&SPWIZARD: MODIFY TABLE MODULE MYTC_MODIFY INPUT. MODIFY ITAB INDEX MYTC-CURRENT_LINE. ENDMODULE.
*&SPWIZARD: INPUT MODUL FOR TC 'MYTC'. DO NOT CHANGE THIS LINE! *&SPWIZARD: MARK TABLE MODULE MYTC_MARK INPUT. DATA: g_MYTC_wa2 likelineof ITAB. if MYTC-line_sel_mode = 1 and ITAB-MARK = 'X'. loopat ITAB into g_MYTC_wa2 where MARK = 'X'. g_MYTC_wa2-MARK = ''. modify ITAB from g_MYTC_wa2 transporting MARK. endloop. endif. MODIFY ITAB INDEX MYTC-CURRENT_LINE TRANSPORTING MARK. ENDMODULE.
*&SPWIZARD: INPUT MODULE FOR TC 'MYTC'. DO NOT CHANGE THIS LINE! *&SPWIZARD: PROCESS USER COMMAND MODULE MYTC_USER_COMMAND INPUT. OK_CODE = SY-UCOMM. PERFORM USER_OK_TC USING'MYTC' 'ITAB' 'MARK' CHANGING OK_CODE. SY-UCOMM = OK_CODE. ENDMODULE.
*----------------------------------------------------------------------* * INCLUDE TABLECONTROL_FORMS * *----------------------------------------------------------------------*
*&---------------------------------------------------------------------* *& Form USER_OK_TC * *&---------------------------------------------------------------------* FORM USER_OK_TC USING P_TC_NAME TYPE DYNFNAM P_TABLE_NAME P_MARK_NAME CHANGING P_OK LIKE SY-UCOMM.
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* DATA: L_OK TYPE SY-UCOMM, L_OFFSET TYPEI. *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
*&SPWIZARD: Table control specific operations * *&SPWIZARD: evaluate TC name and operations * SEARCH P_OK FOR P_TC_NAME. IF SY-SUBRC <> 0. EXIT. ENDIF. L_OFFSET = STRLEN( P_TC_NAME ) + 1. L_OK = P_OK+L_OFFSET. *&SPWIZARD: execute general and TC specific operations * CASE L_OK. WHEN'INSR'. "insert row PERFORM FCODE_INSERT_ROW USING P_TC_NAME P_TABLE_NAME. CLEAR P_OK.
WHEN'P--'OR"top of list 'P-'OR"previous page 'P+'OR"next page 'P++'. "bottom of list PERFORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME L_OK. CLEAR P_OK. * WHEN 'L--'. "total left * PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME. * * WHEN 'L-'. "column left * PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME. * * WHEN 'R+'. "column right * PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME. * * WHEN 'R++'. "total right * PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME. * WHEN'MARK'. "mark all filled lines PERFORM FCODE_TC_MARK_LINES USING P_TC_NAME P_TABLE_NAME P_MARK_NAME . CLEAR P_OK.
WHEN'DMRK'. "demark all filled lines PERFORM FCODE_TC_DEMARK_LINES USING P_TC_NAME P_TABLE_NAME P_MARK_NAME . CLEAR P_OK.
* WHEN 'SASCEND' OR * 'SDESCEND'. "sort column * PERFORM FCODE_SORT_TC USING P_TC_NAME * l_ok.
ENDCASE.
ENDFORM. " USER_OK_TC
*&---------------------------------------------------------------------* *& Form FCODE_INSERT_ROW * *&---------------------------------------------------------------------* FORM fcode_insert_row USING P_TC_NAME TYPE DYNFNAM P_TABLE_NAME .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* DATA L_LINES_NAME LIKE FELD-NAME. DATA L_SELLINE LIKE SY-STEPL. DATA L_LASTLINE TYPEI. DATA L_LINE TYPEI. DATA L_TABLE_NAME LIKE FELD-NAME. FIELD-SYMBOLS TYPE CXTAB_CONTROL. FIELD-SYMBOLS
TYPESTANDARDTABLE. FIELD-SYMBOLS TYPEI. *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO.
*&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]'INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO
. "not headerline
*&SPWIZARD: get looplines of TableControl * CONCATENATE'G_' P_TC_NAME '_LINES'INTO L_LINES_NAME. ASSIGN (L_LINES_NAME) TO.
*&SPWIZARD: get current line * GETCURSORLINE L_SELLINE. IF SY-SUBRC <> 0. " append line to table L_SELLINE = -LINES + 1. *&SPWIZARD: set top line * IF L_SELLINE > . -TOP_LINE = L_SELLINE - + 1 . ELSE. -TOP_LINE = 1. ENDIF. ELSE. " insert line into table L_SELLINE = -TOP_LINE + L_SELLINE - 1. L_LASTLINE = -TOP_LINE + - 1. ENDIF. *&SPWIZARD: set new cursor line * L_LINE = L_SELLINE - -TOP_LINE + 1.
*&SPWIZARD: insert initial line * INSERTINITIALLINEINTO
INDEX L_SELLINE. -LINES = -LINES + 1. *&SPWIZARD: set cursor * SETCURSORLINE L_LINE.
ENDFORM. " FCODE_INSERT_ROW
*&---------------------------------------------------------------------* *& Form FCODE_DELETE_ROW * *&---------------------------------------------------------------------* FORM fcode_delete_row USING P_TC_NAME TYPE DYNFNAM P_TABLE_NAME P_MARK_NAME .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS TYPE cxtab_control. FIELD-SYMBOLS
TYPESTANDARDTABLE. FIELD-SYMBOLS . FIELD-SYMBOLS . *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO.
*&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]'INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO
. "not headerline
*&SPWIZARD: delete marked lines * DESCRIBETABLE
LINES-LINES.
LOOPAT
ASSIGNING.
*&SPWIZARD: access to the component 'FLAG' of the table header * ASSIGNCOMPONENT P_MARK_NAME OFSTRUCTURETO.
IF = 'X'. DELETE
INDEX SYST-TABIX. IF SY-SUBRC = 0. -LINES = -LINES - 1. ENDIF. ENDIF. ENDLOOP.
ENDFORM. " FCODE_DELETE_ROW
*&---------------------------------------------------------------------* *& Form COMPUTE_SCROLLING_IN_TC *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_TC_NAME name of tablecontrol * -->P_OK ok code *----------------------------------------------------------------------* FORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME P_OK. *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* DATA L_TC_NEW_TOP_LINE TYPEI. DATA L_TC_NAME LIKE FELD-NAME. DATA L_TC_LINES_NAME LIKE FELD-NAME. DATA L_TC_FIELD_NAME LIKE FELD-NAME.
FIELD-SYMBOLS TYPE cxtab_control. FIELD-SYMBOLS TYPEI. *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO. *&SPWIZARD: get looplines of TableControl * CONCATENATE'G_' P_TC_NAME '_LINES'INTO L_TC_LINES_NAME. ASSIGN (L_TC_LINES_NAME) TO.
*&SPWIZARD: get actual tc and column * GETCURSORFIELD L_TC_FIELD_NAME AREA L_TC_NAME.
IF SYST-SUBRC = 0. IF L_TC_NAME = P_TC_NAME. *&SPWIZARD: et actual column * SETCURSORFIELD L_TC_FIELD_NAME LINE1. ENDIF. ENDIF.
*&SPWIZARD: set the new top line * -TOP_LINE = L_TC_NEW_TOP_LINE.
ENDFORM. " COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------* *& Form FCODE_TC_MARK_LINES *&---------------------------------------------------------------------* * marks all TableControl lines *----------------------------------------------------------------------* * -->P_TC_NAME name of tablecontrol *----------------------------------------------------------------------* FORM FCODE_TC_MARK_LINES USING P_TC_NAME P_TABLE_NAME P_MARK_NAME. *&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------* DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS TYPE cxtab_control. FIELD-SYMBOLS
TYPESTANDARDTABLE. FIELD-SYMBOLS . FIELD-SYMBOLS . *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO.
*&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]'INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO
. "not headerline
*&SPWIZARD: mark all filled lines * LOOPAT
ASSIGNING.
*&SPWIZARD: access to the component 'FLAG' of the table header * ASSIGNCOMPONENT P_MARK_NAME OFSTRUCTURETO.
= 'X'. ENDLOOP. ENDFORM. "fcode_tc_mark_lines
*&---------------------------------------------------------------------* *& Form FCODE_TC_DEMARK_LINES *&---------------------------------------------------------------------* * demarks all TableControl lines *----------------------------------------------------------------------* * -->P_TC_NAME name of tablecontrol *----------------------------------------------------------------------* FORM FCODE_TC_DEMARK_LINES USING P_TC_NAME P_TABLE_NAME P_MARK_NAME . *&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------* DATA L_TABLE_NAME LIKE FELD-NAME.
FIELD-SYMBOLS TYPE cxtab_control. FIELD-SYMBOLS
TYPESTANDARDTABLE. FIELD-SYMBOLS . FIELD-SYMBOLS . *&SPWIZARD: END OF LOCAL DATA------------------------------------------*
ASSIGN (P_TC_NAME) TO.
*&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]'INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO
. "not headerline
*&SPWIZARD: demark all filled lines * LOOPAT
ASSIGNING.
*&SPWIZARD: access to the component 'FLAG' of the table header * ASSIGNCOMPONENT P_MARK_NAME OFSTRUCTURETO.