TABLE CONTROL使用方法(待整理)
来源:互联网 发布:大数据时代 四大挑战 编辑:程序博客网 时间:2024/06/08 17:23
原文地址haixuan-2004的博客
1、使用向导创建table control时,提示“specify the work area of the table or a table with a header line”。检查系统定义,所绑定的内表已很明确地定义了内表的具有表头。后来摸索到,一个屏幕只允许使用向导创建一个table control,如果手工创建则不受限制。
2、 系统提示:Cannot currently edit include Repeat step?想了好久,在SAP论坛上发现老外也存在同样的问题待解决,http://forums.sdn.sap.com/thread.jspa?threadID=1195809
重复了几次,后来仔细想想,include是一个包,screen与程序绑定的,会不会是因为正在打开绑定的程序呢,于时在SE38中退出正在编辑的程序,重新操作则成功。
3、关于这个控件很好的学习资料。见http://blog.chinaunix.net/space.php?uid=150062&do=blog&id=2780070
4、table control配套按钮的设计。今年6月在使用时,为了设计配套按钮(如翻页、全选、全不选、新增、删除等)费了好多时间,还背了一段代码,而如果采用向导创建table Control,系统会自动帮我们设置,具体操作如下
-
一般情况下配置选择列。 在“line selectability"中勾选“line selection col”,并指定列名,同时可以指定是否允许选中 多行。如:
*
-
配置实现可编辑的table control。
1、在input/output attributes选项面板中,勾选“input control”。
2、在维护函数选项中,勾选“SCROLL”,“Insert/delete line”,“select/deselect all”选项,系统自动配套设计好相关操作按钮。
3、在屏幕被调用前,指定table control的长度。 如:
* 如果表格不允许空行的存在,则取消此处的注析,系统在显示前都会告知系统要显示的行数.
*&SPWIZARD:OUTPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD:UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TBL2_CHANGE_TC_ATTR OUTPUT.
* DESCRIBE TABLE SP1 LINES TBL2-lines.
ENDMODULE.
*&SPWIZARD:
*&SPWIZARD:
MODULE
*
ENDMODULE.
-
自动录入功能增强。
流逻辑中监控字段的值是否改变
PROCESS AFTER INPUT.
*&SPWIZARD:PAI FLOW LOGIC FOR TABLECONTROL 'TBL2'
LOOP AT SP1.
CHAIN.
FIELD SP1-ISSEL.
FIELD SP1-CARRID.
FIELD SP1-CONNID.
FIELD SP1-COUNTRYFR.
FIELD SP1-CITYFROM.
FIELD SP1-AIRPFROM.
FIELD SP1-COUNTRYTO.
FIELD SP1-CITYTO.
FIELD SP1-AIRPTO.
MODULE TBL2_MODIFY ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.
*&SPWIZARD:
在程序中自动赋值:
* 当用户更改表格中的数据后,触发该事件
* 第一个SP1是内表,第二个SP1是表工作区,这个工作区和SP1表格控制绑定,在流逻辑中指定
* 在这里可以实现信息提示,根据之前输入的字段内容,确定后面的字段内容,
MODULE TBL2_MODIFY INPUT.
IF SP1-COUNTRYFR = 'US'.
SP1-COUNTRYTO = 'CHI'.
ENDIF.
IF SP1-COUNTRYFR = 'CHI'.
SP1-COUNTRYTO = 'US'.
ENDIF.
MODIFY SP1 FROM SP1 INDEX TBL2-CURRENT_LINE.
ENDMODULE.
*
*
MODULE
ENDMODULE.
这两天自已做的一个案例的全部内容如下:
*&---------------------------------------------------------------------*
*&Report ZTABCON_HX_01_04
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTABCON_HX_01_04.
TABLES:SPFLI.
* 创建带有选择列的内表
TYPES:BEGIN OF SP1_TYPE,
ISSEL TYPE C,
CARRID LIKE SPFLI-CARRID,
CONNID LIKE SPFLI-CONNID,
COUNTRYFR LIKE SPFLI-COUNTRYFR,
CITYFROM LIKE SPFLI-CITYFROM,
AIRPFROM LIKE SPFLI-AIRPFROM,
COUNTRYTO LIKE SPFLI-COUNTRYTO,
CITYTO LIKE SPFLI-CITYTO,
AIRPTO LIKE SPFLI-AIRPTO,
END OF SP1_TYPE.
DATA:OK_CODE TYPE SY-UCOMM,
SP1 TYPE STANDARD TABLE OF SP1_TYPE WITH HEADER LINE,
SP2 TYPE STANDARD TABLE OF SP1_TYPE WITH HEADER LINE.
* SP1 TYPE STANDARD TABLE OF SPFLI WITH HEADER LINE."采用这种方式创建的表格控件是没有选择列的,因为选择列还需要有额外的一个标记
SELECT * INTO CORRESPONDING FIELDS OF TABLE SP1
FROM SPFLI.
* 表格控件控件
* &SPWIZARD: DECLARATION OF TABLECONTROL 'TBL2' ITSELF
CONTROLS: TBL2 TYPE TABLEVIEW USING SCREEN 0100.
* &SPWIZARD: LINES OF TABLECONTROL 'TBL2'
DATA: G_TBL2_LINES LIKE SY-LOOPC.
* 表格控制的行数固定为1000行,如果内表不足一千行,用空行代替,当从屏幕更新数据到内表时,系统会跳过为空的行,所以不用担心这样做会造成内表有很多空行.
* 一般情况下,当要求可编辑时,要求预留空行,否则,用TBL2_CHANGE_TC_ATTR控制.
TBL2-LINES = 1000.
CALL SCREEN 100.
* 监控用户触发的事件
MODULE USER_COMMAND_0100 INPUT.
CASE OK_CODE.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
* 当用户更改表格中的数据后,触发该事件
* 第一个SP1是内表,第二个SP1是表工作区,这个工作区和SP1表格控制绑定,在流逻辑中指定
* 在这里可以实现信息提示,根据之前输入的字段内容,确定后面的字段内容,
MODULE TBL2_MODIFY INPUT.
IF SP1-COUNTRYFR = 'US'.
SP1-COUNTRYTO = 'CHI'.
ENDIF.
IF SP1-COUNTRYFR = 'CHI'.
SP1-COUNTRYTO = 'US'.
ENDIF.
MODIFY SP1 FROM SP1 INDEX TBL2-CURRENT_LINE.
ENDMODULE.
* 如果表格不允许空行的存在,则取消此处的注析,系统在显示前都会告知系统要显示的行数.
*&SPWIZARD:OUTPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD:UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TBL2_CHANGE_TC_ATTR OUTPUT.
* DESCRIBE TABLE SP1 LINES TBL2-lines.
ENDMODULE.
*&SPWIZARD:OUTPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD:GET LINES OF TABLECONTROL
MODULE TBL2_GET_LINES OUTPUT.
G_TBL2_LINES = SY-LOOPC.
ENDMODULE.
*&SPWIZARD:INPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD:PROCESS USER COMMAND
MODULE TBL2_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'TBL2'
'SP1'
*&
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT
*
*
*
*
*
*
*
*
MODULE
ENDMODULE.
*
*
*
MODULE
ENDMODULE.
*
*&SPWIZARD:
*&SPWIZARD:
MODULE
*
ENDMODULE.
*&SPWIZARD:
*&SPWIZARD:
MODULE
ENDMODULE.
*&SPWIZARD:
*&SPWIZARD:
MODULE