TABLE CONTROL 跳转代码总结,TABLE CONTROL的名字是SCR_RESULT,
屏幕上分别有四个按钮:第一页,上一页,下一页和最后一页
定义全局变量:
DATA: G_SCR_RESULT_LINES LIKE SY-LOOPC.
在屏幕PBO里面设置G_SCR_RESULT_LINES 的值:
PROCESS BEFORE OUTPUT.
...
LOOP AT SCREEN_RESULT
INTO SCREEN_RESULT
WITH CONTROL SCR_RESULT
CURSOR SCR_RESULT-CURRENT_LINE.
MODULE SET_4103_TC_LINES.
*&SPWIZARD: MODULE SCR_RESULT_CHANGE_FIELD_ATTR
ENDLOOP.
...
MODULE SET_4103_TC_LINES OUTPUT.
G_SCR_RESULT_LINES = SY-LOOPC.
ENDMODULE.
...
以下就是详细调用代码:
"跳到第一页
PERFORM COMPUTE_SCROLLING_IN_TC USING 'SCR_RESULT' 'P--'.
"跳到上一页
PERFORM COMPUTE_SCROLLING_IN_TC USING 'SCR_RESULT' 'P-'.
"跳到下一页
PERFORM COMPUTE_SCROLLING_IN_TC USING 'SCR_RESULT' 'P+'.
"跳到最后一页
PERFORM COMPUTE_SCROLLING_IN_TC USING 'SCR_RESULT' 'P++'.
"跳转代码
"说明: P_TC_NAME -- TABLE CONTROL的名字
" P_OK -- 屏幕跳转按钮的功能码
" 固定值:P-- (第一页) P- (上一页)
" P+ (下一页) p++(最后一页)
FORM COMPUTE_SCROLLING_IN_TC USING P_TC_NAME P_OK.
DATA L_TC_NEW_TOP_LINE TYPE I.
DATA L_TC_NAME LIKE FELD-NAME.
DATA L_TC_LINES_NAME LIKE FELD-NAME.
DATA L_TC_FIELD_NAME LIKE FELD-NAME.
DATA: L_SCR_RESULT_LINES LIKE SY-LOOPC.
FIELD-SYMBOLS <TC> TYPE CXTAB_CONTROL.
FIELD-SYMBOLS <LINES> TYPE I.
ASSIGN (P_TC_NAME) TO <TC>.
CONCATENATE 'L_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME.
ASSIGN (L_TC_LINES_NAME) TO <LINES>.
IF <TC>-LINES = 0.
L_TC_NEW_TOP_LINE = 1.
ELSE.
CALL FUNCTION 'SCROLLING_IN_TABLE'
EXPORTING
ENTRY_ACT = <TC>-TOP_LINE
ENTRY_FROM = 1
ENTRY_TO = <TC>-LINES
LAST_PAGE_FULL = 'X'
LOOPS = <LINES>
OK_CODE = P_OK
OVERLAPPING = 'X'
IMPORTING
ENTRY_NEW = L_TC_NEW_TOP_LINE
EXCEPTIONS
OTHERS = 0.
ENDIF.
GET CURSOR FIELD L_TC_FIELD_NAME
AREA L_TC_NAME.
IF SYST-SUBRC = 0.
IF L_TC_NAME = P_TC_NAME.
SET CURSOR FIELD L_TC_FIELD_NAME LINE 1.
ENDIF.
ENDIF.
<TC>-TOP_LINE = L_TC_NEW_TOP_LINE.
ENDFORM.