sap abap中广核技术面试题目: 1、ABAP中三种基本的数据对象是什么? 答案:内表、结构、基本数据对象 2、下面的语句中,哪一个语句编译会报错(假设XXX 和结构sflight都已经定义). ( B) A)write sy-datum+3. B)data type type sflight.(原因变量名不能和关键字同名) C)if 'a'=1. 'a'=2. endif. D)write sy-vline. 3、程序中执行了这么一段代码 DATA it_sflight type sflight with header line. Loop at it_sflight. it_sflight-carrid = 'AA'. Modify it_sflight. Endloop. 该段语法中出现了四次it_sflight,其中后四次分别代表的是内表还是结构. (A) A)内表 内表 结构 内表 B)内表 内表 内表 内表 C)内表 结构 结构 内表 D)内表 内表 结构 结构 4、选择事件的执行顺序正确的一组. (A) A)INITIALIZATION / START-OF-SELECTION / TOP-OF-PAGE / AT LINE-SELECTION B)INITIALIZATION / TOP-OF-PAGE / START-OF-SELECTION / AT LINE-SELECTION C)START-OF-SELECTION/ INITIALIZATION / TOP-OF-PAG / AT LINE-SELECTION D)INITIALIZATION / TOP-OF-PAGE / AT LINE-SELECTION / START-OF-SELECTION 补充:按顺序举例说明Report各事件及其作用? LOAD-OF-PROGRAM 程序执行时,自动触发该EVENT INITIALIZTION 对程序变量进行初始化 AT SELECTION-SCREEN OUTPUT 选择屏幕PBO事件,显示选择屏幕之前触发 AT SELECTION-SCREEN 选择屏幕PAI事件,用户在选择屏幕上执行某些功能 START-OF-SELECTION 选择开始事件 END-OF-SELECTION 选择结束事件,一般在该事件中输出列表 TOP-OF-PAGE 页眉控制 END-OF-PAGE 页角控制 AT LINE-SELECTION 行选择控制,用户选择某列表行时触发 AT USER-COMMAND 用户交互控制,用户选择某个GUI功能时触发 5、如果屏幕A 的下一个屏幕仍然是A , 那么当执行程序时,对于屏幕的主要事件,下面哪种顺序是正确的. (D) A)A 的 PAI A 的 PBO A 的 PAI A 的 PBO B)A 的 PBO A 的 PAI A 的 PAI A 的 PBO C)A 的 PAI A 的 PAI A 的 PBO A 的 PBO D)A 的 PBO A 的 PAI A 的 PBO A 的 PAI 补充:怎样理解Dynpro的PAI,PBO事件? Dynpro程序运行时,首先触发PBO事件,然后显示Dynpro画面,当在Dynpro画面触发一个功能键时,这时会触发PAI事件,当PAI事件执行完毕,重新显示Dynpro画面时又将执行PBO事件。当不断触发功能键时,PBO和PAI事件会不断交替执行 6、屏幕编程中一个屏幕所使用的工具栏应如何设计. (A) A) 先设计一个Gui Status,再在程序中绑定 B) 先设计一个Gui Titles,再在程序中绑定 C) 在程序中用Add button 语法添加 D)在屏幕设计格式的界面上添加工具栏及其按钮 7、以下四种系统变量,各是什么含意. (D) SY-UCOMM SY-DATUM SY-SUBRC SY-TABIX A)用户触发的屏幕上的功能码当前日期当前时间循环次数 B)当前日期当前时间 循环次数 用户触发的屏幕上的功能码 C)用户触发的屏幕上的功能码循环次数语句执行结果返回值当前日期 D)用户触发的屏幕上的功能码当前日期语句执行结果返回值循环次数 8、ABAP的OPEN SQL的取数语句是否可以实现数据库无关性,其原因是什么. (A) A)不可以,数据库的SQL格式不同 B)可以,因为它的名字叫做OPEN SQL C)可以,因为中间有一层DB Interface做转换 D)不可以,各种数据库的版本不同 9、对ABAP的OPEN SQL语句的两个返回系统变量,描述正确的是. () A)Sy-dbcnt表示执行结果是否正确,sy-subrc表示执行影响到的数据条数 B)Sy-dbcnt表示执行影响到的数据条数,sy-subrc表示执行结果是否正确 C)Sy-dbamt表示执行结果是否正确,sy-sudnc表示执行影响到的数据条数 D)Sy-dbamt表示执行影响到的数据条数,sy-sudnc表示执行结果是否正确 注意:要记住各种系统的这种变量代表的含义 10、一个表TA有三个字段,其中第一个字段是主键,目前有一条记录是1 /‘first’/ 19,结构wa_result是和表相同类型的,当前值是2 / ‘second’ / 20 .执行OPEN SQL语句:modify TA from wa_result.执行后对系统的影响为. (B) A)没有任何影响 B)TA有两条记录1 / ‘first’/ 19 和 2 / ‘second’ / 20(注意modify的使用语法以及达到的效果) C)TA有一条记录2 / ‘second’ / 20 D)系统出错退出,对表没有任何影响 11、具体题目我没有记住,但考察的要点是:要知道系统表和自定义表的命名规则(一般自定义表都是以Z或Y开头) 12、SAP的三层架构,以及具体实现方式是怎样?(自己查查标准答案,我当时是根据自己的理解答的) 13、常用的T-CODE要记住: se11:数据字典(显示、编辑、变更) se12:数据字典(显示) se24:Class维护 sm35:Batch Input Session OverView sm36:定义后台Job sm37:Simple Job Selection se37:创建Function se38:Abap编辑器 se80:对象导航器 se91:message维护 se93:Transcation维护 smartforms:smartforms维护 14、sap memory 和 abap memory的区别? ① 读法和使用方法不同。 Sap内存: set parameter /get parameter Abap内存:export to memory / import from memory ② 共享范围不同。 Sap内存可以被所有的主session访问,内存数据可以同一个session中不同程序之间或不同session之间。 Abap内存只能在同一个session的不同程序之间共享数据。 ③ 作用范围不同。 Sap内存在整个终端session时间内有效。 Abap内存只在一个session时间内存放。 ④ 使用一般原则。 Sap内存用于屏幕默认值输入。 Abap内存用于模块之间传递数据。 15、Doman,data element,table之间的关系,为什么要分三层? domain是对字段的类型、长度等的封装,而data element是对domain的再一次封装,可以说数据元素是字段与域之间的链接桥梁,而table是存储这些元素的一个存储区间。 16、具体题目忘了,主要考查的是append和sy-tabix的具体用法,问sy-tabix在每一次append执行后的输出值。(自己可以做做相关题目感受下) 17、向 SAP 表中添加字段的方法是哪两种? 这两种方法是:Append 结构(Append Structure)和自定义 Include(Customizing Include)。Append 结构是在向表尾添加字段时创建的,自定义 Include 由 SAP 开发人员指定,以使用户可以创建新字段。 18、锁对象(Lock Object)和 FM(Function Module),激活Lock Object时,产生的 FM 的名字是什么? 首先要在 ABAP 字典中创建锁对象,然后才能在 ABAP 程序中设锁。创建锁对象时,系统会自动生成两个 FM 来进行锁管理。 用于设锁的 FM 为: ENQUEUE_<锁对象名>。它用于在锁表(Lock Table)中生成一个锁项(Lock Entry)。若设锁不成功的话,就会在 Return 中反映出来。 用于释放锁的 FM 为:DEQUEUE_<锁对象名>。它用于从锁表中删除一个锁项。在 ABAP 程序中,只需使用 "CALL FUNCITION ..." 语句就可以调用它们。 这两个锁 FM 是在 SAP 系统的一个特殊工作进程中执行的,专门进行锁管理。它运行在一个单独的服务器上,而该服务器专门用于维护整个 SAP 系统的主锁表(Central Lock Table)。 19、SELECT SINGLE 和SELECT UP TO 1 ROWS 的区别是什么? 在指定数据库表中所有选择KEY字段(指定查询条件时要用“=”号)时,使用“SELECT SINGLE”;在没有指定数据库表中所有选择KEY字段,且只取一条记录时使用“SELECT UP TO 1 ROWS”,其后要使用语句“ENDSELECT”结束。 20、清空内表命令clear和refresh的区别? 当为带表头的内表时,Clear清空的是表头,refresh清空的是表体。当为不带表头的内表时,Clear和refresh都可以清空表体 21、AT FIRST, AT NEW, AT END OF 有什么区别? AT FIRST:当前循环内表的第一行,即当第一次循环操作时,系统会执行控制语句块。 AT NEW:如果行组(对象字段及其前面的全部字段)中的任何字段内容不同于上一行,执行语句块中的内容。 AT END OF:如果下一行行组中的任何字段内容不同于上一行,执行语句块中的内容 22、数据库中内连接、左连接以及右连接的区别举例说明?(这个自己看书就可以弄明白,数据库书上说的很清楚) 23、对内表操作collect和append之间的区别,以及collect的用法的考虑是什么? 要逐行填充内表,可以使用APPEND、COLLECT或INSERT语句 Collect用于添加无相同表关键字的内表行 Append可以添加相同表关键字的内表行 Collect命令的限制事项: ①要填充没有重复条目的内表,应该使用COLLECT ② COLLECT语句无法用于带深层结构的内表(组件中不可以包含内表)。 ③为COLLECT指定的工作区域必须与内表的行类型兼容,(不仅仅是可互相转换)。 ④所有的非表关键字段必须是数字类型。 24、什么时候使用For all entries命令及其使用时的注意事项? 当需要在LOOP中使用查询语句时,一般使用For all entries。 注意事项: ①IN条件所在的内表不能为空(如为空将取出全部的数据); ②数据库字段与内表中的关联比较字段必须具有相同的类型和长度,且不能在比较中使用操作符LIKE、BETWEEN和IN,同时不能使用ORDER BY子句。 ③为避免删除并不重复的纪录,在定义内表时应尽可能多的指定关键字。 25、给表中添加字段结构的两种方法:append和include 26、在屏幕流程中,pai是指process after input,pbo是指process before output 27、内表的三种形式:标准表、排序表、哈希表 28、还有两道编程题:一道是用form来编写一个把一个浮点类型的数据处理成只带有两个小数点的数据 另一道是:让编写一个子程序,实现字符串的倒序输出(这两道题还是让老师讲讲吧,我当时是根据自己的想法做的) 29、有关功能函数等相关定义问题 30、with header line和 with header out line的区别?(这个题目自己查查资料,我觉着我回答的不是很清楚) 柯莱特面试题目: 1、parameters和select-option区别? 2、loop中长使用的,如:at new/at end of一般什么时候使用? 3、常用的事件? 4、内表的几种定义方法的区别? 5、debug调试的几个常用功能键? 6、dialogue中的常用按钮? 7、常用功能代码? 8、function创建的相关知识? 9、功能模块出口(Function Module Exit) 实现功能模块出口时 SAP 应用程序中应使用哪条语句? 答案:某些 SAP 应用程序中存在功能模块出口,它使用户能够向 SAP 程序中添加一些功能。通过搜索 "CALL CUSTOMER" 可以发现是否存在功能模块出口。 10、总结一下自己所编过的程序? 更多行业内容,关注SAP培训桔子学院,由20多名高级顾问和项目经理共同组建。以自身的项目案例带领大家,手把手教授,进行弯道超车,零基础快速拥有3年行业经验,入职SAP领域。 |