-------------------------------------------------2007-07-13-----------------------------------
来源:互联网 发布:aop切面编程面试题 编辑:程序博客网 时间:2024/05/21 15:41
-------------------------------------------------2007-07-13-----------------------------------
处理错误和消息
在屏幕表格中循环和在内表与屏幕表格中同时循环的区别
在屏幕表格中放入内表(工作区).是屏幕表格和程序内表关联.
再说表格控制器
ABAP---读取DB中前n行
在屏幕编辑器中设置必须输入的栏位
定义内表的时候OCCURS 0 表示无限大
处理错误和消息
1. 自动字段检查(由系 统执行)
2. FIELD和CHAIN语句(在流逻辑语言中)
FIELD和CHAIN流逻辑语句允许用户设计自己的字段检查。FIELD和CHAIN告诉系统正在检查哪些字段,以及系统是在流逻辑中进行检查还是调用ABAP/4模块。如果发现错误,则系统为用户输入一错误对话。
3. MESSAGE 语句(在 ABAP/4中 )
MESSAGE语句(在ABAP/4中)允许用户从ABAP/4 程序中输出消息。ABAP/4 程序通过输出错误消息或警告将错误通知系统.相应地,系统为用户输入错误对话。
4. 错误对话(由系统执行)
系统或 ABAP/4 模块都可以检测错误。无论是哪种情况,只要发现错误,系统就自动重新显示屏幕并输出消息。错误通常是由于特定字段。重新显示时,引起错误的字段允许输入,而其它所有字段则禁止输入。系统将光标定位于错误字段中,并且要求用户重新输入。然后重复字段检查的过程。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
检查屏幕字段的有效性
方法 :
1. 自动字段检查
2. 在屏幕流逻辑中进行的检查
FIELD...VALUES... 来完成此操作。
3. 在 ABAP/4 中进行检查
要触发该模块的调用,则可以在屏幕流逻辑中编码FIELD...MODULE... 流逻辑语句 。
4. 用CHAIN……ENDCHAIN链接多个FIELD语句.
5. 条件FIELD语句
ON INPUT
只有当字段包含初始值以外的值时,才调用 ABAP/4 模块。
ON REQUEST
只有自上一屏幕显示以来用户已输入字段值时,才调用 ABAP/4 模块。即使用户键入已存在的值,值也象已变化了一样予以记数。
ON *-INPUT
如果用户在 字段的首字 符中已经输 入“*”, 并且该字段在屏幕制作器中具有属性 *-entry, 则调用ABAP/4 模块。可以在想只检查某些输入类
型的例外情况下使用该选项。
6. 条件 CHAIN 语句
ON CHAIN-INPUT
类似于 ON INPUT。
ON CHAIN-REQUEST
该条件功能类似ON REQUEST, 但是如果链中的任一字段的值发生更改,则调ABAP/4模块。
在屏幕表格中循环和在内表与屏幕表格中同时循环的区别
只在屏幕表格中循环,会以屏幕表格为主,在显示的时候需要使所要显示的内表适应屏幕,如果屏幕表格的行数比内表的行数多的话仍然会显示一些空行如
//逻辑流
LOOP WITH CONTROL CTRL1.
MODULE DISPLAY_CTRL1_101 .
ENDLOOP.
//程序
READ TABLE IMAKT INDEX CTRL1-CURRENT_LINE.
IF SY-SUBRC = 0.
MAKT-SPRAS = IMAKT-SPRAS.
MAKT-MAKTX = IMAKT-MAKTX.
CTRL1-FLAG = IMAKT-CKBOX.
ENDIF.
在内表与屏幕表格中同时循环可以使屏幕表格和内表同时循环.不必严格控制内表要读取那一行(个人效率较前者要高,因为不用再次搜索和判断),而且,不会显示多于的空白行.
//逻辑流
LOOP AT IMAKT WITH CONTROL CTRL1 CURSOR CTRL1-TOP_LINE.
MODULE DISPLAY_CTRL1_101 .
ENDLOOP.
//程序
MAKT-SPRAS = IMAKT-SPRAS.
MAKT-MAKTX = IMAKT-MAKTX.
CTRL1-FLAG = IMAKT-CKBOX.
在屏幕表格中放入内表(工作区).是屏幕表格和程序内表关联.
1. 所要放入的itab一定要使有表头的(其实屏幕要的是wa)
2. 注意选择的时候要写入内表名称,选择后面的按钮
3. 操作的时候直接modify那个内表系统就能自动识别user的更新.只是循环的时候要注意指针的运动,尽量使屏幕和内表一起循环.
4. 由于屏幕表格和程序内表关联,所以在PAI中LOOP AT <ITAB>的时候仍然可以使用屏幕表格的各种参数eg. index ctrl1-current_line
//逻辑流(PAI)
LOOP AT IMAKT.
MODULE SET_LINE_COUNT_0901.
ENDLOOP.
//程序
module SET_LINE_COUNT_0901 input
MODIFY IMAKT index ctrl1-current_line.
endmodule.
再说表格控制器
1. 在layout中设置的表格控制器和.net中的gridview有点类似,其中的各个列必须和要和与之关联的内表的字段名称一样,否则将无法访问,或者是置无法取出.
2. 另外,那个 w/SelColumn选项可以和itab中的一个C类型的字段关联以判断表格行的选中情况.
ABAP---读取DB中前n行
SELECT * UP TO <N> ROWS………
在屏幕编辑器中设置必须输入的栏位
- -------------------------------------------------2007-07-13-----------------------------------
- 《纵横天下》开发日志[2007-07-13]
- topcoder srm357(2007-07-13 17:24)
- 本周学习的东西(2007-07-13)
- POJ 2441 Arrange the Bulls(2007-06-07 13:08)
- java--自定义类型排序(2007-07-13 17:34)
- [转]java--BigInteger(2007-07-13 17:37)
- -------------------------------------------------2007-07-04~2007-07-06--------------------------------------------------
- 2007-07-07 ~ 2007-08-31计划
- ------------------------------2007-07-11~2007-07-12---------------------------
- --------------------------------------------------2007-07-16~2007-07-17-------------------------------------------
- My Linux 让人高兴的新进展(博客搬家 2007-07-14 13:05)
- 备份澳洲blog 杀人游戏的某些言论2007-05-16 13:20:07
- 讨论 2007/06/07
- 2007-06-07
- 日记(2007-07-01)
- -------------------------------------------2007-07-10-----------------------
- 2007-07-16
- VC++快捷键
- C#的事件机制
- C#获取CPU的利用率
- c#生成图片缩略图的类
- 注册按钮
- -------------------------------------------------2007-07-13-----------------------------------
- 转别人的贴子,vc右键菜单
- 发现一个很有趣的事情
- tomcat 连接池泄露的问题:org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted, cause:java.util.NoSuchEleme
- parentNode 来获取一个或多个 HTML 元素.
- javascript中Style之visibility与display的比较.
- java的事件处理
- linux下top命令参数解释
- 使用C#进行Word 2002和Excel 2002编程