SAP-Dialog

it2024-06-29  43

1.T1

1.主窗体和子窗体之间执行顺序 主窗体PAI->子窗体PAI->主窗体->PBO->子窗体PBO 造成问题: 因此如果在主窗体和子窗体共用同一个组件,在主窗体修改后回车数据还是之前数据,并没有更新.

2.T2

*&---------------------------------------------------------------------* *& Modulpool ZWXT_10 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* PROGRAM ZWXT_10. INCLUDE ZWXT_10_TOP. INCLUDE ZWXT_10_PBO. INCLUDE ZWXT_10_PAI. *&SPWizard: Include inserted by SP Wizard. DO NOT CHANGE THIS LINE! INCLUDE ZWXT_10_SUB. INCLUDE ZWXT_10_FRM.

3.TOP

*&---------------------------------------------------------------------* *& 包含 ZWXT_10_TOP *&---------------------------------------------------------------------* DATA:GV_ZCODE TYPE ZWXSTUDENT_02-ZCODE, GV_ZNAME TYPE ZWXSTUDENT_02-ZNAME, GV_ZSEX TYPE ZWXSTUDENT_02-ZSEX, GV_ZSCHOOL TYPE ZWXSTUDENT_02-ZSCHOOL, GV_ZWEIGHT TYPE ZWXSTUDENT_02-ZWEIGHT, GV_ZUNIT TYPE ZWXSTUDENT_02-ZUNIT, GV_DATE TYPE D, GV_TIME TYPE T. TYPES: BEGIN OF GTY_STUDENT. TYPES: SEQ TYPE I. INCLUDE STRUCTURE ZWXSTUDENT_02. TYPES: END OF GTY_STUDENT. DATA:GT_STUDENT TYPE STANDARD TABLE OF GTY_STUDENT, GS_STUDENT TYPE GTY_STUDENT. "排除的STATUS DATA STATUS TYPE STANDARD TABLE OF SY-UCOMM WITH HEADER LINE. "光标位置 DATA CURSOR_FLAG TYPE C. "TITLEBAR DATA TITLEBAR TYPE C LENGTH 10 VALUE '新建'. TYPES:BEGIN OF GTY_STUDENT_02, CHECK TYPE C, SEQ TYPE I. INCLUDE STRUCTURE ZWXSTUDENT_02. TYPES:END OF GTY_STUDENT_02. DATA:GT_STUDENT_02 TYPE STANDARD TABLE OF GTY_STUDENT_02, GS_STUDENT_02 TYPE GTY_STUDENT_02. *&SPWIZARD: FUNCTION CODES FOR TABSTRIP 'TAB_CTRL_100' CONSTANTS: BEGIN OF C_TAB_CTRL_100, TAB1 LIKE SY-UCOMM VALUE 'TAB_CTRL_100_FC1', TAB2 LIKE SY-UCOMM VALUE 'TAB_CTRL_100_FC2', TAB3 LIKE SY-UCOMM VALUE 'TAB_CTRL_100_FC3', TAB4 LIKE SY-UCOMM VALUE 'TAB_CTRL_100_FC4', END OF C_TAB_CTRL_100. *&SPWIZARD: DATA FOR TABSTRIP 'TAB_CTRL_100' CONTROLS: TAB_CTRL_100 TYPE TABSTRIP. DATA: BEGIN OF G_TAB_CTRL_100, SUBSCREEN LIKE SY-DYNNR, PROG LIKE SY-REPID VALUE 'ZWXT_10', PRESSED_TAB LIKE SY-UCOMM VALUE C_TAB_CTRL_100-TAB1, END OF G_TAB_CTRL_100. DATA: OK_CODE LIKE SY-UCOMM. DATA: OK_SAVE LIKE SY-UCOMM. *&SPWIZARD: DECLARATION OF TABLECONTROL 'TAB_CTRL_130' ITSELF CONTROLS: TAB_CTRL_130 TYPE TABLEVIEW USING SCREEN 0130. *&SPWIZARD: LINES OF TABLECONTROL 'TAB_CTRL_130' DATA: G_TAB_CTRL_130_LINES LIKE SY-LOOPC. *&SPWIZARD: DECLARATION OF TABLECONTROL 'TAB_CTRL_120' ITSELF CONTROLS: TAB_CTRL_120 TYPE TABLEVIEW USING SCREEN 0120. *&SPWIZARD: LINES OF TABLECONTROL 'TAB_CTRL_120' DATA: G_TAB_CTRL_120_LINES LIKE SY-LOOPC. SELECTION-SCREEN BEGIN OF SCREEN 0111 AS SUBSCREEN. SELECT-OPTIONS S_ZCODE FOR GS_STUDENT-ZCODE. SELECTION-SCREEN END OF SCREEN 0111.

4.PBO

*&---------------------------------------------------------------------* *& 包含 ZWXT_10_PBO *&---------------------------------------------------------------------* *&SPWIZARD: OUTPUT MODULE FOR TS 'TAB_CTRL_100'. DO NOT CHANGE THIS LINE *&SPWIZARD: SETS ACTIVE TAB MODULE TAB_CTRL_100_ACTIVE_TAB_SET OUTPUT. TAB_CTRL_100-ACTIVETAB = G_TAB_CTRL_100-PRESSED_TAB. CASE G_TAB_CTRL_100-PRESSED_TAB. WHEN C_TAB_CTRL_100-TAB1. G_TAB_CTRL_100-SUBSCREEN = '0110'. WHEN C_TAB_CTRL_100-TAB2. G_TAB_CTRL_100-SUBSCREEN = '0120'. WHEN C_TAB_CTRL_100-TAB3. G_TAB_CTRL_100-SUBSCREEN = '0130'. WHEN C_TAB_CTRL_100-TAB4. G_TAB_CTRL_100-SUBSCREEN = '0140'. WHEN OTHERS. *&SPWIZARD: DO NOTHING ENDCASE. ENDMODULE. *&---------------------------------------------------------------------* *& Module SET_STATUS OUTPUT *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* MODULE set_status_0100 OUTPUT. SET PF-STATUS '0100_STATUS' EXCLUDING STATUS. SET TITLEBAR '0100_TITLEBAR' WITH TITLEBAR. ENDMODULE. *&---------------------------------------------------------------------* *& Module DATA_INIT_0110 OUTPUT *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* MODULE data_init_0110 OUTPUT. GV_DATE = SY-DATUM. GV_TIME = SY-UZEIT. CASE CURSOR_FLAG. WHEN 'A'. SET CURSOR FIELD 'GV_ZCODE'. WHEN 'B'. SET CURSOR FIELD 'GV_ZSCHOOL'. WHEN 'C'. SET CURSOR FIELD 'GV_ZNAME'. WHEN 'D'. SET CURSOR FIELD 'GV_ZSEX'. WHEN 'E'. SET CURSOR FIELD 'GV_ZWEIGHT'. WHEN 'F'. SET CURSOR FIELD 'GV_ZUNIT'. WHEN '1'. SET CURSOR FIELD 'GV_ZSCHOOL'. WHEN '2'. SET CURSOR FIELD 'GV_ZNAME'. ENDCASE. ENDMODULE. *&SPWIZARD: OUTPUT MODULE FOR TC 'TAB_CTRL_130'. DO NOT CHANGE THIS LINE *&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR MODULE TAB_CTRL_130_CHANGE_TC_ATTR OUTPUT. DESCRIBE TABLE GT_STUDENT LINES TAB_CTRL_130-lines. ENDMODULE. *&SPWIZARD: OUTPUT MODULE FOR TC 'TAB_CTRL_130'. DO NOT CHANGE THIS LINE *&SPWIZARD: GET LINES OF TABLECONTROL MODULE TAB_CTRL_130_GET_LINES OUTPUT. G_TAB_CTRL_130_LINES = SY-LOOPC. ENDMODULE. *&---------------------------------------------------------------------* *& Module DATA_INIT_130 OUTPUT *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* MODULE data_init_0130 OUTPUT. DATA LV_DIG TYPE I. SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_STUDENT FROM ZWXSTUDENT_02 WHERE ZCODE IN S_ZCODE. CLEAR LV_DIG. LOOP AT GT_STUDENT INTO GS_STUDENT. LV_DIG = LV_DIG + 1. GS_STUDENT-SEQ = LV_DIG. MODIFY GT_STUDENT FROM GS_STUDENT. ENDLOOP. ENDMODULE. *&SPWIZARD: OUTPUT MODULE FOR TC 'TAB_CTRL_120'. DO NOT CHANGE THIS LINE *&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR MODULE TAB_CTRL_120_CHANGE_TC_ATTR OUTPUT. DESCRIBE TABLE GT_STUDENT_02 LINES TAB_CTRL_120-lines. ENDMODULE. *&SPWIZARD: OUTPUT MODULE FOR TC 'TAB_CTRL_120'. DO NOT CHANGE THIS LINE *&SPWIZARD: GET LINES OF TABLECONTROL MODULE TAB_CTRL_120_GET_LINES OUTPUT. G_TAB_CTRL_120_LINES = SY-LOOPC. ENDMODULE. *&---------------------------------------------------------------------* *& Module DATA_INIT_0120 OUTPUT *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* MODULE data_init_0120 OUTPUT. IF GT_STUDENT_02[] IS INITIAL. SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_STUDENT_02 FROM ZWXSTUDENT_02. CLEAR LV_DIG. LOOP AT GT_STUDENT_02 INTO GS_STUDENT_02. LV_DIG = LV_DIG + 1. GS_STUDENT_02-SEQ = LV_DIG. MODIFY GT_STUDENT_02 FROM GS_STUDENT_02. ENDLOOP. ENDIF. ENDMODULE.

5.PAI

*&---------------------------------------------------------------------* *& 包含 ZWXT_10_PAI *&---------------------------------------------------------------------* *&SPWIZARD: INPUT MODULE FOR TS 'TAB_CTRL_100'. DO NOT CHANGE THIS LINE! *&SPWIZARD: GETS ACTIVE TAB MODULE TAB_CTRL_100_ACTIVE_TAB_GET INPUT. OK_CODE = SY-UCOMM. CLEAR STATUS[]. CASE OK_CODE. WHEN C_TAB_CTRL_100-TAB1. TITLEBAR = '新建'. G_TAB_CTRL_100-PRESSED_TAB = C_TAB_CTRL_100-TAB1. WHEN C_TAB_CTRL_100-TAB2. APPEND 'SAVE' TO STATUS. TITLEBAR = '修改'. G_TAB_CTRL_100-PRESSED_TAB = C_TAB_CTRL_100-TAB2. WHEN C_TAB_CTRL_100-TAB3. APPEND 'SAVE' TO STATUS. TITLEBAR = '显示'. G_TAB_CTRL_100-PRESSED_TAB = C_TAB_CTRL_100-TAB3. WHEN C_TAB_CTRL_100-TAB4. APPEND 'SAVE' TO STATUS. TITLEBAR = '删除'. G_TAB_CTRL_100-PRESSED_TAB = C_TAB_CTRL_100-TAB4. WHEN OTHERS. *&SPWIZARD: DO NOTHING ENDCASE. ENDMODULE. *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_0100 INPUT. OK_SAVE = SY-UCOMM. CLEAR SY-UCOMM. CLEAR OK_CODE. CASE OK_SAVE. WHEN 'BACK'. LEAVE TO SCREEN 0. WHEN 'EXIT'. LEAVE PROGRAM. WHEN 'CANCEL'. LEAVE PROGRAM. WHEN 'SAVE'. DATA LS_STUDENT TYPE ZWXSTUDENT_02. "插入数据库 CLEAR GS_STUDENT. LS_STUDENT-ZCODE = GV_ZCODE. LS_STUDENT-ZSCHOOL = GV_ZSCHOOL. LS_STUDENT-ZNAME = GV_ZNAME. LS_STUDENT-ZSEX = GV_ZSEX. LS_STUDENT-ZWEIGHT = GV_ZWEIGHT. LS_STUDENT-ZUNIT = GV_ZUNIT. INSERT INTO ZWXSTUDENT_02 VALUES LS_STUDENT. IF SY-SUBRC = 0. MESSAGE '插入成功' TYPE 'S'. ELSE. MESSAGE '插入失败' TYPE 'S' DISPLAY LIKE 'E'. ENDIF. ENDCASE. ENDMODULE. *&---------------------------------------------------------------------* *& Module CHECK_ZCODE_0110 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE check_zcode_0110 INPUT. SELECT SINGLE * INTO CORRESPONDING FIELDS OF GS_STUDENT FROM ZWXSTUDENT_02 WHERE ZCODE = GV_ZCODE. IF SY-SUBRC <> 0. CURSOR_FLAG = '1'. MESSAGE '该学号可用!' TYPE 'S'. ELSE. CURSOR_FLAG = 'A'. MESSAGE '该学号不可用!' TYPE 'S' DISPLAY LIKE 'E'. ENDIF. ENDMODULE. *&---------------------------------------------------------------------* *& Module CHECK_ZSCHOOL_0110 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE check_zschool_0110 INPUT. SELECT SINGLE * INTO CORRESPONDING FIELDS OF GS_STUDENT FROM ZWXSCHOOL_01 WHERE ZSCHOOL = GV_ZSCHOOL. IF SY-SUBRC = 0. CURSOR_FLAG = '2'. MESSAGE '该学校编号存在,可用!' TYPE 'S'. ELSE. CURSOR_FLAG = 'B'. MESSAGE '该学校编号不存在,不可用!' TYPE 'S' DISPLAY LIKE 'E'. ENDIF. ENDMODULE. *&---------------------------------------------------------------------* *& Module CHECK_NOT_EMPTY_0110 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE check_not_empty_0110 INPUT. IF GV_ZNAME IS INITIAL. CURSOR_FLAG = 'C'. MESSAGE '姓名不可为空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF GV_ZSEX IS INITIAL. CURSOR_FLAG = 'D'. MESSAGE '性别不可为空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF GV_ZWEIGHT IS INITIAL. CURSOR_FLAG = 'E'. MESSAGE '体重不可为空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF GV_ZUNIT IS INITIAL. CURSOR_FLAG = 'F'. MESSAGE '单位不可为空!' TYPE 'S' DISPLAY LIKE 'E'. ENDIF. ENDMODULE. *&SPWIZARD: INPUT MODULE FOR TC 'TAB_CTRL_130'. DO NOT CHANGE THIS LINE! *&SPWIZARD: PROCESS USER COMMAND MODULE TAB_CTRL_130_USER_COMMAND INPUT. OK_CODE = SY-UCOMM. PERFORM USER_OK_TC USING 'TAB_CTRL_130' 'GT_STUDENT' ' ' CHANGING OK_CODE. SY-UCOMM = OK_CODE. ENDMODULE. *&SPWIZARD: INPUT MODULE FOR TC 'TAB_CTRL_120'. DO NOT CHANGE THIS LINE! *&SPWIZARD: MODIFY TABLE MODULE TAB_CTRL_120_MODIFY INPUT. MODIFY GT_STUDENT_02 FROM GS_STUDENT_02 INDEX TAB_CTRL_120-CURRENT_LINE. ENDMODULE. *&SPWIZARD: INPUT MODUL FOR TC 'TAB_CTRL_120'. DO NOT CHANGE THIS LINE! *&SPWIZARD: MARK TABLE MODULE TAB_CTRL_120_MARK INPUT. DATA: g_TAB_CTRL_120_wa2 like line of GT_STUDENT_02. if TAB_CTRL_120-line_sel_mode = 1 and GS_STUDENT_02-CHECK = 'X'. loop at GT_STUDENT_02 into g_TAB_CTRL_120_wa2 where CHECK = 'X'. g_TAB_CTRL_120_wa2-CHECK = ''. modify GT_STUDENT_02 from g_TAB_CTRL_120_wa2 transporting CHECK. endloop. endif. MODIFY GT_STUDENT_02 FROM GS_STUDENT_02 INDEX TAB_CTRL_120-CURRENT_LINE TRANSPORTING CHECK. ENDMODULE. *&SPWIZARD: INPUT MODULE FOR TC 'TAB_CTRL_120'. DO NOT CHANGE THIS LINE! *&SPWIZARD: PROCESS USER COMMAND MODULE TAB_CTRL_120_USER_COMMAND INPUT. OK_CODE = SY-UCOMM. PERFORM USER_OK_TC USING 'TAB_CTRL_120' 'GT_STUDENT_02' 'CHECK' CHANGING OK_CODE. SY-UCOMM = OK_CODE. ENDMODULE. *&---------------------------------------------------------------------* *& Module USER_COMMAND_0120 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_0120 INPUT. CASE SY-UCOMM. WHEN 'NAME_EDIT'. PERFORM MODIFY_COL. ENDCASE. ENDMODULE.

6.SUB

*&---------------------------------------------------------------------* *& Include ZWXT_10_SUB *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * 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 TYPE I. *&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 'DELE'. "delete row PERFORM FCODE_DELETE_ROW USING P_TC_NAME P_TABLE_NAME P_MARK_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 TYPE I. DATA L_LINE TYPE I. DATA L_TABLE_NAME LIKE FELD-NAME. FIELD-SYMBOLS <TC> TYPE CXTAB_CONTROL. FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE. FIELD-SYMBOLS <LINES> TYPE I. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: get looplines of TableControl * CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_LINES_NAME. ASSIGN (L_LINES_NAME) TO <LINES>. *&SPWIZARD: get current line * GET CURSOR LINE L_SELLINE. IF SY-SUBRC <> 0. " append line to table L_SELLINE = <TC>-LINES + 1. *&SPWIZARD: set top line * IF L_SELLINE > <LINES>. <TC>-TOP_LINE = L_SELLINE - <LINES> + 1 . ELSE. <TC>-TOP_LINE = 1. ENDIF. ELSE. " insert line into table L_SELLINE = <TC>-TOP_LINE + L_SELLINE - 1. L_LASTLINE = <TC>-TOP_LINE + <LINES> - 1. ENDIF. *&SPWIZARD: set new cursor line * L_LINE = L_SELLINE - <TC>-TOP_LINE + 1. *&SPWIZARD: insert initial line * INSERT INITIAL LINE INTO <TABLE> INDEX L_SELLINE. <TC>-LINES = <TC>-LINES + 1. *&SPWIZARD: set cursor * SET CURSOR LINE 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 <TC> TYPE cxtab_control. FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE. FIELD-SYMBOLS <WA>. FIELD-SYMBOLS <MARK_FIELD>. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: delete marked lines * DESCRIBE TABLE <TABLE> LINES <TC>-LINES. LOOP AT <TABLE> ASSIGNING <WA>. *&SPWIZARD: access to the component 'FLAG' of the table header * ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>. IF <MARK_FIELD> = 'X'. DELETE <TABLE> INDEX SYST-TABIX. IF SY-SUBRC = 0. <TC>-LINES = <TC>-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 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. FIELD-SYMBOLS <TC> TYPE cxtab_control. FIELD-SYMBOLS <LINES> TYPE I. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get looplines of TableControl * CONCATENATE 'G_' P_TC_NAME '_LINES' INTO L_TC_LINES_NAME. ASSIGN (L_TC_LINES_NAME) TO <LINES>. *&SPWIZARD: is no line filled? * IF <TC>-LINES = 0. *&SPWIZARD: yes, ... * L_TC_NEW_TOP_LINE = 1. ELSE. *&SPWIZARD: no, ... * 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 * NO_ENTRY_OR_PAGE_ACT = 01 * NO_ENTRY_TO = 02 * NO_OK_CODE_OR_PAGE_GO = 03 OTHERS = 0. ENDIF. *&SPWIZARD: get actual tc and column * GET CURSOR FIELD L_TC_FIELD_NAME AREA L_TC_NAME. IF SYST-SUBRC = 0. IF L_TC_NAME = P_TC_NAME. *&SPWIZARD: et actual column * SET CURSOR FIELD L_TC_FIELD_NAME LINE 1. ENDIF. ENDIF. *&SPWIZARD: set the new top line * <TC>-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 <TC> TYPE cxtab_control. FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE. FIELD-SYMBOLS <WA>. FIELD-SYMBOLS <MARK_FIELD>. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: mark all filled lines * LOOP AT <TABLE> ASSIGNING <WA>. *&SPWIZARD: access to the component 'FLAG' of the table header * ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>. <MARK_FIELD> = '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 <TC> TYPE cxtab_control. FIELD-SYMBOLS <TABLE> TYPE STANDARD TABLE. FIELD-SYMBOLS <WA>. FIELD-SYMBOLS <MARK_FIELD>. *&SPWIZARD: END OF LOCAL DATA------------------------------------------* ASSIGN (P_TC_NAME) TO <TC>. *&SPWIZARD: get the table, which belongs to the tc * CONCATENATE P_TABLE_NAME '[]' INTO L_TABLE_NAME. "table body ASSIGN (L_TABLE_NAME) TO <TABLE>. "not headerline *&SPWIZARD: demark all filled lines * LOOP AT <TABLE> ASSIGNING <WA>. *&SPWIZARD: access to the component 'FLAG' of the table header * ASSIGN COMPONENT P_MARK_NAME OF STRUCTURE <WA> TO <MARK_FIELD>. <MARK_FIELD> = SPACE. ENDLOOP. ENDFORM. "fcode_tc_mark_lines

7.FRM

*&---------------------------------------------------------------------* *& 包含 ZWXT_10_FRM *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form MODIFY_COL *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM modify_col . DATA LS_COL LIKE LINE OF TAB_CTRL_120-COLS. LOOP AT TAB_CTRL_120-COLS INTO LS_COL. IF LS_COL-INDEX = '3'. IF LS_COL-SCREEN-INPUT = '1'. LS_COL-SCREEN-INPUT = '0'. ELSE. LS_COL-SCREEN-INPUT = '1'. ENDIF. MODIFY TAB_CTRL_120-COLS FROM LS_COL. ENDIF. ENDLOOP. ENDFORM.

8.页面效果

最新回复(0)