-------------------------------------------------2007-07-13-----------------------------------

 

-------------------------------------------------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 ………
 
 
在屏幕编辑器中设置必须输入的栏位

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值