理论教育 基础知识:AND RETURN关键字、事务变式和RANGE表

基础知识:AND RETURN关键字、事务变式和RANGE表

时间:2023-06-12 理论教育 版权反馈
【摘要】:使用AND RETURN关键字,可在该程序执行完毕后,自动返回调用它的程序。事务变式是一组屏幕变式,用于预定义屏幕行为和默认值。开发人员可以使用GuiXT脚本语言通过事务变式维护对屏幕进行修改。RANGE表包括SIGN、OPTION、LOW、HIGH四个字段。

基础知识:AND RETURN关键字、事务变式和RANGE表

1.CHECK、EXIT、RETURN命令的区别?

■CHECK

●CHECK后面要跟一个表达式,当表达式值为假(false)时,CHECK发生作用,退出循环(LOOP)或处理程序(Processing Block)。

●如果CHECK出现在循环中,则发生作用时,退出的是当前一次循环操作,程序会继续执行下一次循环操作,其作用类似于Continue(Java或C++中Continue也是如此)。

●如果CHECK出现在循环以外,则发生作用时,退出的是当前执行的程序块,例如一个FORM、METHOD或EVENT。

■EXIT

●EXIT如果出现在循环中,退出的是整个循环操作,程序会从循环结束处开始继续执行,其作用相当于Java与C++中的Break。

●EXIT如果出现在循环之外,退出的是当前执行的程序块(Processing Block),例如一个FORM、METHOD或EVENT,其作用与RETURN类似。

■RETURN

●RETURN用来退出当前执行的程序块,例如一个FORM、METHOD或EVENT。不管是否出现在循环(LOOP)中,RETURN都会退出当前执行的程序块,而不仅仅是退出循环。

●虽然ABAP中EXIT和RETURN都可以用来实现退出当前执行的语句块,但SAP的帮助文件建议只在循环中使用EXIT,其他情况下要退出当前执行进程,使用RETURN。

2.初始化内表有几种方式?

■要初始化有或没有表头的内表,用REFRESH语句。

■如果使用没有表格工作区域的内表,可以使用CLEAR语句代替REFRESH语。

■如果使用有表头行的内表,CLEAR语句仅清除表格工作区域,要重置整个内表而不清除表格工作区域,使用REFRESH语句或CLEAR语句。

■使用REFRESH或CLEAR初始化内表后,系统保持在内存中保留的空间。可以用FREE语句释放内存。

3.一个程序如何调用另外一个程序?

调用其他可执行程序使用“SUBMIT+程序名”语句,使用WITH关键字,可传递选择画面参数。使用AND RETURN关键字,可在该程序执行完毕后,自动返回调用它的程序。

4.在一个程序中如何调用其他事物代码?

调用其他事务代码使用“CALL TRANSACTION+事务代码”,使用AND SKIP FIRST SCREEN可以跳过第一个画面,进入下一个画面。

5.在进行画面跳转时,CALL SCREEN与LEAVE TO SCREEN的区别?

CALL SCREEN是将正在运行的画面挂起,进入所调用的画面,当使用LEAVE TO SCREEN 0时,能够返回原画面,可理解为嵌套调用;而LEAVE TO SCREEN是立即结束本画面的执行,调用所指定的画面,在调用画面中,无法再返回原画面。

6.与索引相关的系统字段有哪些?分别有什么作用?

SY-INDEX存储DO循环的索引,SY-TABIX存储LOOP循环到内表的第几行,SY-DBCNT存储从数据库中读取到的满足条件的记录条数,SY-LISEL存储被选中行的内容,在事件AT LINE-SELECTION时起作用,该系统字段中的内容到下一个屏幕的时候还存在。

7.LOOP循环中AT控制逻辑有哪些?分别有什么作用?

■AT FIRST功能:循环中第一条记录时调用。

■AT LAST功能:循环中最后一条记录时调用。

■AT NEW功能:循环中当指定字段之前(包括指定字段)的组合和上一条记录不一样时调用。

■AT END OF功能:循环中当指定字段之前(包括指定字段)的组合和下一条记录不一样时调用。

■AT事件的注意点:AT事件中的工作区不同于LOOP循环的工作区,该工作区中位于指定字段后面的值将不会被读取,如果需要用到则需read重新抽取一次。

8.MESSAGE消息有哪些类型和含义?如何自定义MESSAGE消息类?

A:Abend,立刻终止当前事务,弹出终止对话框。

X:Exit,立刻终止当前事务,进入DUMP的界面。

E:错误,画面的状态栏会弹出一个错误提示信息。

I:信息,弹出一个消息对话框。

S:确认,画面的状态栏会弹出一个正确提示信息。(www.daowen.com)

W:警告,画面的状态栏会弹出一个警告提示信息。

可以通过语句DISPLAY LIKE mtype取代原错误图标;自定义MESSAGE消息类,通过事务代码SE91。

9.ABAP中,如何自定义异常类?如何捕捉异常?

通过事务代码SE24,在Class Type中,选择Exception Class即可定义,在TRY CATCH语句中就能够使用。

10.什么是事物变式?事务变式有什么用?

事务变式是一组屏幕变式,用于预定义屏幕行为和默认值。通过使用变式功能,可以将用户不需要的字段、子屏幕及全屏幕从用户视图中取消。可以给任何输入字段设置默认值,字段也可以不用带"Ready for Input"状态。只能为对话和报表事务创建事务变式;变式中只能包含普通屏幕、子屏幕及对话屏幕。

开发人员可以使用GuiXT脚本语言通过事务变式维护对屏幕进行修改。修改屏幕布局的方式有:插入按钮、值帮助(Value Helps)、移动对象、插入屏幕等。

11.RANGE表内的字段有哪些?分别有什么含义?

RANGE表包括SIGN、OPTION、LOW、HIGH四个字段。RANGE表和select-option的变量差不多,sign='I'或sign='E'是指INCLUDE和EXCLUDE,OPTION='EQ'或其他操作符,LOW是指最少值(操作符是范围的话),HIGH指最大值(如果操作符是‘EQ’,该字段不起作用)。

12.对于FIELD SYMBOL赋值将使用什么关键字?

ASSIGN。

13.PERFORM调用子程序时,分别对USING、TABLES、CHANGING 3个参数有什么影响?

USING可以传入单值、工作区,加VALUE参数后只能使用,不能对值做修改,PERFORM结束后传入参数的值还是传入之前的状态。

TABLES只能传入一个内表,程序逻辑可以对其进行修改,PERFORM结束后内表的值是影响后的值。

CHANGING可以传入内表、单值,程序逻辑可以对其进行修改,PERFORM结束后传入参数的值是影响后的值。

注意,在传入工作区、单值的情况下,USING不加VALUE参数与CHANGING结果相同。

14.如何在程序间传送数据?

可以使用EXPORT语句在ABAP/4内存中存储数据字段簇。

语句为:EXPORT<OBJECT1><OBJECT2>...<OBJECTN>TO MEMORY ID<ID-NAME>。

而调用程序就会检索数据。

语句为:IMPORT<OBJECT1><OBJECT2>...<OBJECTN>FROM MEMORY ID<ID-NAME>。

其中:ID参数标识唯一的数据簇。

15.SAP和ABAP内存的区别?

■读取时使用方法不同

SAP内存使用SET/GET parameters方法。

ABAP内存使用EXPORT和IMPORT方法。

■共享范围不同

SAP内存可以被所有的主Session访问,内存数据可以在同一个Session中的不同程序或者不同Session之间共享数据。

ABAP只能在同个Session的不同程序之间共享数据。

■作用范围不同

SAP内存在整个终端Session时间内都有效。

ABAP内存只能在一个Session时间内有效。

■使用一般原则

SAP内存用于屏幕默认值输入。

ABAP内存用于模块之间传替数据。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈