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内存用于模块之间传替数据。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。