ABAP面试及答案Interview+Questions.docx
《ABAP面试及答案Interview+Questions.docx》由会员分享,可在线阅读,更多相关《ABAP面试及答案Interview+Questions.docx(37页珍藏版)》请在冰豆网上搜索。
ABAP面试及答案Interview+Questions
面试问题集
1.数据效率?
尽量使用Select(max,min,sum,avg)和selectsingle,forallenteris,二分法,append和collect
loop里不能套select;避免使用selectdistinct,代替先sort,再delete;
1抽取数据时,避免使用SELECT*,尽量使用SELECTABINTOTABLEITAB这样的语句。
2不要使用SELECT...ENDSELECT语句。
3尽量避免在LOOP中访问数据库。
可以在之前先把数据取到内表,在LOOP中用READTABLEWITHKEY...BINARYSEARCH.进行读取对应的数据。
4用SORT代替ORDERBY。
⑤使用二分查找法。
READTABLE的之前使用SORTTABLEBY对内表进行排序,然后使用READTABLEWITHKEY...BINARYSEARCH.
6避免使用SELECTDISTINCT语句。
在抽取数据到内表后用DELETEADJACENTDUPLICATES语句来消除重复行。
7尽量多指定WHERE语句条件。
8在WHERE语句指定查询条件时,在同等条件下把包含等号的查询条件放到前边。
2.什么时候使用Forallentries命令及其使用时的注意事项?
当需要在LOOP中使用查询语句时,一般使用Forallentries。
注意事项:
1IN条件所在的内表不能为空(如为空将取出全部的数据);
2数据库字段与内表中的关联比较字段必须具有相同的类型和长度,且不能在比较中使用操作符LIKE、BETWEEN和IN,同时不能使用ORDERBY子句。
3为避免删除并不重复的纪录,在定义内表时应尽可能多的指定关键字。
3.如何设置ALV的鼠标双击事件。
如何设置ALV的页眉和页脚?
ALV的鼠标双击事件:
构造LS_LAYOUT的F2CODE属性设置为”&ETA”即可。
ALV的页眉:
利用Function“REUSE_ALV_COMMENTARY_WRITE”来进行设置。
4.FTP文件上传,下载,在哪句中需要做异常捕获?
5.SQL文的性能举例?
1对同一数据库表存取的场合,能一次把多条记录放到内表中进行处理,不要多次反复存取;
2只选择必要的字段,应避免使用”SELECT*”;
3在WHERE语句指定查询条件时,要写全查询条件;
4在WHERE语句指定查询条件时,应把包含数据库关键字段的条件列在前边。
5在WHERE语句指定查询条件时,在同等条件下把包含等号的查询条件放到前边。
6.怎样理解Dynpro的PAI,PBO事件?
Dynpro程序运行时,首先触发PBO事件,然后显示Dynpro画面,当在Dynpro画面触发一个功能键时,这时会触发PAI事件,当PAI事件执行完毕,重新显示Dynpro画面时又将执行PBO事件。
当不断触发功能键时,PBO和PAI事件会不断交替执行。
povpoh
7.按顺序举例说明Report各事件及其作用?
1LOAD-OF-PROGRAM程序执行时,自动触发该EVENT
2INITIALIZTION对程序变量进行初始化
3ATSELECTION-SCREENOUTPUT选择屏幕PBO事件,显示选择屏幕之前触发
4ATSELECTION-SCREEN选择屏幕PAI事件,用户在选择屏幕上执行某些功能
5START-OF-SELECTION选择开始事件
6END-OF-SELECTION选择结束事件,一般在该事件中输出列表
7TOP-OF-PAGE页眉控制
8END-OF-PAGE页角控制
9ATLINE-SELECTION行选择控制,用户选择某列表行时触发
10ATUSER-COMMAND用户交互控制,用户选择某个GUI功能时触发
8.能否自行创建SD、MM、FI模块相关数据并说明其过程?
9.是否使用过Query,说明其创建过程?
用到过哪些T-CODE?
meng
10.BDC执行出错时,为查看设置错误处,显示模式应怎样设置,A、E、N分别代表什么含义?
显示模式DISMODE应设置为“A”或“E”。
A:
代表无论出错与否每个画面都显示;
E:
只是在出错时显示;
N:
代表无论出错与否每个画面都不显示。
11.是否做过数据库表维护?
meng
12.删除内表重复数据前应该做什么,如果要按照给定字段如何删除?
meng
应该对内表进行排序。
13.Job管理?
14.SAP有哪些外部接口及其内容?
RFC,BAPI,IDOC。
RFC:
RFC是SAP系统和其他(SAP或非SAP)系统间的一个重要而常用的双向接口技术,也被视为SAP与外部通信的基本协议。
简单地说,RFC过程就是系统调用当前系统外的程序模块,从而实现某个功能,而且调用系统和被调用系统中至少有一个必须是SAPABAP系统。
这种远程功能调用也可在同一系统内部进行(如本地SAP系统内的远程调用);但通常情况下,调用程序和被调用程序处于不同系统。
BAPI:
BAPI全称BusinessApplicationProgrammingInterfaces,即业务应用编成接口,在SAP内部组件及SAP与非SAP组件之间的技术整合和业务数据交换过程中起着非常重要的作用。
(BAPI是基于RFC实现的)
IDOC:
IDOC是SAP系统之间或SAP系统与外部系统之间电子数据交换的标准数据格式。
在事务处理过程中,随时会生成IDOC。
15.在什么时候触发Topofpage语句?
在3种情况下可以触发Topofpage语句。
1遇到第一个WRITE语句时;
2当页面行数超过LINE-COUNT里定义的行数时;
3遇到NEW-PAGE命令时。
16.本地文件上传成CSV文件的function?
17.Hashtable和Sorttable的注意事项?
Hashed表的除了数字字段以外,其余字段必须指定为key字段,不能使用APPEND语句,Sort为non-unique时不能使用INSERT语句。
18.Report的跳转语句是什么?
pick是什么?
怎么用?
Report的跳转语句是“HIDE和ATLINE-SELECTION”。
“pick”是在Report一览画面双击或按F2键时触发的功能键键值。
19.FTP文件的上传下载操作是什么?
FTP程序大致流程为:
FTP_CONNECT,FTP_COMMAND,FTP_DISCONNECT。
FTP_COMMAND中输入标准的FTP命令。
如:
更改FTP目录"cddir",更改本地目录"lcdlocaldir",上传文件"putfile"。
FTP_CONNECT–打开并登陆FTP服务器的连接。
FTP_COMMAND–在FTP服务器上执行一个命令。
FTP_DISCONNECT–关闭指向FTP服务器的连接。
20.加锁,解锁的2种方式是什么?
加锁的2种方式:
①E模式。
同一个terminalsession的不同externalsession之间不受上锁的影响,可以使用锁住的对象;
②X模式。
上锁的对象只能由externalsession中的一个internalsession使用。
21.MM、PP、SD、FI、HR模块的主要流程,MM、PP、SD、FI、HR模块主要数据库表?
MM模块的主要流程:
1接到客户的采购订单后,由营业员进行库存确认,如果库存不足则由其提出采购申请。
2购买担任者接到采购申请经审查合格后,向供应商下达采购订单。
3入库等相关管理人员对供应商送达的商品进行入库确认。
4由购担任者对供应商提出支付请求进行确认,经确认无误后,向财务部门提出支付申请,财务部门对支付申请进行审核合格后,进行支付处理。
SD模块的主要流程:
①销售担任者接到客户寻价后,在系统中登录客户的寻价信息。
2相关人员对登录的寻价信息进行价格确认,并在系统中登录报价信息。
3客户对收到的报价信息审核合格后,提出采购申请。
销售担任者接到采购申请后,在系统中登录采购订单。
4相关人员对客户所订购的商品进行筹措完毕后,进行出库处理,并在系统中登录出库单。
5相关人员向客户提出支付请求,客户支付后,给客户出具红头发票,在系统中登录开票信息。
22.update,delete数据库时的注意事项?
1正确指定数据库表的KEY字段,防止更改了不应更改的记录,同时要正确指定要更改纪录的中需要变更的字段;
2要注意保持关联表的数据一致性;
3变更前要注意上锁,变更后要注意解锁。
23.怎样做带按钮的选择画面?
1TABLESSSCRFIELDS.
2SELECTION-SCREENPUSHBUTTON/[/][MODIFID].
3INITIALIZATION.
MOVE'Mytext'TO.
4ATSELECTION-SCREEN.
5IFSSCRFIELDS-UCOMM=.
ENDIF.
上述代码的描述:
①定义构造SSCRFIELDS;
②使用命令Selection-screenpushbutton定义PushButton;
③在事件Initialization中定义pushbutton的文本;
④在事件AtSelection-Screen中定义pushbutton按下后,所执行的处理。
24.求和函数(Collect)的注意事项?
①要填充没有重复条目的内表,应该使用COLLECT
②COLLECT语句无法用于带深层结构的内表(组件中不可以包含内表)。
③为COLLECT指定的工作区域必须与内表的行类型兼容,(不仅仅是可互相转换)。
④所有的非表关键字段必须是数字类型。
25.举例说明MM、SD、FI、PP模块的主要t-code?
MM模块的主要t-code:
MMBE库存总览
ME51N采购申请
ME21N采购订单
MIGO收货
MIRO后勤发票校验
SD模块的主要t-code:
VA11询价
VA21报价
VA01销售订单
VL01N出库
VF01开具发票
FI模块的主要t-code:
总账:
FS00 创建科目
F.10 查看会计科目表
F.01 查看会计科目余额表
FB50 制总账凭证
FB08 冲销凭证
FS10N 科目余额查询
FBV0 成批过账
FBV3 显示预制凭证
OBR2 删除会计科目
KOB1查看订单明细
KB31 统计指标赋值
F-04 过账并清账
FAGL_FC_VAL外币评估
FB70 输入客户发票(员工借款)
F-22 输入客户发票
F-30 过账并清账(客户)
F-53 付款记账
F-42 输入结转过账
F-43 输入供应商发票
F-51 过账并清账(供应商)
应付会计:
FB01输入凭证分录
F-53 银行付款清账(支付货款、银兑到期付款、信用证到期付款)
F-51 带清账的转账业务(如需调整的业务或凭证、退回客户多付货款、上线前的发票校验)
F-48 预付定金
F-43输入供应商发票(不通过采购订单形成的应付账款)
F-42 不带清账的转账业务(如需进期初差异的发票校验)
F-40 应付票据清账
F-57 开立信用证、信用证到期冲销
F-32 应收票据背书清应付账款
F-44 供应商预付与应付账款对冲
FB50付银兑保证金、信用证保证金、支票重开、电汇退回重付
FB03 显示凭证
FB08冲销未清账凭证
FBRA 冲销已清账凭证
MIRO 后勤发票校验
MR8M 冲销发票
FK10N 查供应商余额
FBL1N 供应商行项目显示
F.42供应商明细账显示
应收会计:
F-21 预收银兑
F-28 收款、银兑到期托收
F-29预收款
F-30 银兑清账
F-32 应收预收清账
FB50 总账科目过账
FB70 手工开发票
FB75手工开贷方发票(红字)
资产会计
AR01 调用资产清单
AS01资产主数据创建
ABZON 资产购置-损赠等、增值
F-90 资产购置
ABGL资产减值(本年)
ABGF 资产减值(上年)
AIAB 在建工程资本化
ABAVN资产报废
AS93显示遗产数据
信贷管理
FD32 信用风险、例外信用额度的建立及信用时间的控制,另取消信贷也在此处理
FD33 查询信用风险、例外信用额度及信用时间
VKM1在信贷额度之内取消销售订单
F-49 制作在途资金虑拟凭证
FB08在途资金到账后冲销制作的在途资金虑拟凭证
VK13 查看冻结销售订单的单价、金额
FBL5N 客户行项目显示
FBL3N 总账科目行项目显示
F.23 查询以本币计的客户余额
VA05 出具发票凭证清单
FD10N 客户余额显示
开票员
FB03查看凭证
VF01开具发票
VF02修改发票
VF03 查看发票
VF04 查看已发货未开票清单
VL03N 查看交货单
F-22 客户发票(一般)
FB75 客户贷项发票
FB08 冲销凭证
FD03查看客户主数据
FB70 客户发票
VA03 查看销售订单
VF05 查看销售订单清单
MB51 查看物料移动记录
VK13 查看定价
PP模块的主要t-code:
CS01创建BOM
CS07将BOM分配给工厂
CR01创建工作中心
CA01创建工艺路线
MD61创建独立需求计划
MD05显示MRP清单
MD04库存需求订单
MD02运行物料需求计划
COOIS显示生产订单清单
CO02更改生产订单(下达生产订单)
MD42对成品的生产计划
PM模块的主要t-code:
CO01创建生产订单
CO11N工序确认(生产订单确认)
(MPS是确定每一具体的最终产品在每一具体时间段内生产数量的计划)
26.SAPR/3包含哪些模块?
FInancialmanagement(FI,财务会计)
COstmanagementandcontrolling(CO,管理会计)
MaterialManagement(MM,物料管理)
ProductionPlanning(PP,生产计划和控制)
SalesandDistribution(SD,销售和分销)
ProductionPlanning(PP,工程/项目管理)
QualityManagement(QM,质量管理)
ProjectManagement(PM,工厂维护与管理)
HumanResource(HR,人力资源)
EnterpriseControl(EC,企业控制)
Treasury(TR,财务管理)
InvestmentManagement(IM,投资管理)
27.什么是batchinput(bdc)并简单介绍其流程?
BDC调查有哪些方式?
BDC有几种,分别是什么?
流程:
①进行BDC调查(使用事务SHDB);
②提炼数据;
③把提炼的数据转换到内表‘BDCDATA’中;
④调用calltransaction把数据导入系统。
BDC类型:
①通过calltransaction形式执行;
②通过session方式形式执行,如果session执行成功,数据将被传送成功。
BDC调查方式:
①使用事务SHDB调查;
②把光标置到需要调查的事务的项目上:
通过按F1键→技术设定→项目名来进行调查。
29.请列举abap程序的运行方式?
它们一般表现为什么类型的程序?
①可以分配事务代码并通过事务代码运行,用于完成一项系统功能,可以添加到最终用户的系统定制菜单中。
可执行程序(report),模块池程序。
②不能直接通过事务代码运行的程序。
功能组,ABAP类库,ABAP接口库,子程序,类型组包含程序。
30.alv是什么,能简单介绍一下alv的作用吗?
ALV是abaplistview.是ABAP的报表显示工具。
它把内表中的内容以设定的格式,显示出来,附加一些功能,如下载为本地文件等。
31.下拉式报表(下钻式报表)做过吗,介绍一下下拉列表多用到的技术?
Hide,
atline-selection定义用户双击列表某行时触发的事件,
atuser-command定义用户按下某按钮,菜单项或输入命令后触发的事件,
atPF用户按下功能代码,(p307BCDWBDIC.HLP)
32.sap文件操作都有哪几种?
分别有什么操作?
版本有什么限制?
顺次文件(服务器文件)
本地文件(客户端文件)
顺次文件的操作包括:
打开,读取,写入,关闭,删除
本地文件的操作:
4、7版本
GUI_DOWNLOAD
GUI_UPLOAD
4、6版本以前的,性能不好。
WS_DOWNLOAD
WS_UPLOAD
DOWNLOAD
UPLOAD
33.dynpro程序结构以及运行机制,介绍一下。
逻辑上分为PBO,PAI以及POV,POH
建立程序时物理上TOP,O01,I01,F01.
运行机制:
T-CODE->PBO->PAI……………
34.如果bdc出错时我们应该如何处理?
可以设置“出错时转前台运行”。
有机会输入修正数据。
如果不想马上转前台,用insert_group插入一个session。
35.如果我们想把一个batch的程序定义为零点开始启动应该怎么做?
在sm36下,通过给出job名称,job类,和jobsteps创建一个后台job。
36.alv的处理需要2小时或者更长的时间才能显示出来,应该怎么处理?
①把标准表改称sorted表或hash表;
②检查取数逻辑,特别是数据库取数逻辑是否有影响效率的地方而加以改进;
③判断在选择画面上增加查询条件;
37.如果发现报表性能问题,应如何去处理?
首先要检查代码,检查代码是不是有误,看看能不能进行常做的代码优化。
查找耗费资源的原因。
如果是数据太多,可以增加筛选数据的条件,如在画面上增加查询条件。
se30定位错误。
有一个运行分析图示,找到瓶颈:
是数据库操作还是代码运行的问题。
如果是代码运行的时间较长,把标准内表类型改成sorted或者hash的内表
38.经常暴露的性能问题一般体现的什么语句上,举例说明?
Select和selectsingle,forallenteris,二分法,append和collect,loop里不能套select,where条件,避免使用selectdistinct,代替先sort,delete。
39.sorted内表在使用时,有什么注意的地方?
read时可否删除内表的记录?
不能删除。
40.在什么情况下要用forallentries,用应该注意什么?
类似外连接的时候,用一个表的某一字段为条件,从另一数据库中表的数据。
Loop套select的时候用,2个表,forallentries。
forallentries,用它应该注意什么:
使用前要检查内表是否为空,否则会查询出全部数据。
要尽可能多的用关键字,否则会把重复的删掉。
41.打印报表时,想实现直接打印不显示在屏幕上应如何处理?
可以通过new-pageprinton语句,将生成的列表直接发送到spool,系统进行打印处理,不再屏幕中进行显示。
在write语句之前,打印函数之后。
42.解释一下pbopaipovpoh?
PBO:
ProcessBeforeOutput(显示前处理过程)
在向用户显示屏幕GUI之前进行触发,一般作画面初始化和设定status,title,动态设定画面属性,清空变量
PAI:
ProcessAfterInput(输入后处理过程)在用户进行某些屏幕行为后触发,对应一些用户操作,画面check。
POV:
ProcessOnValue-request对应功能键F4用户对画面上某个字段按F4,类似检索help值table
POH:
ProcessOnHelp-request对应功能键F1
43.在dynpro想实现双击,取出对应屏幕上的字段的名字的值,如何处理?
44.dynpro的动态属性,有哪些举例说明?
NAME屏幕字段名称
GROUP1,2,3,4,屏幕字段属于哪个组
ACTIVE1克用,0不可用
REQUIRED1必入力,0非必入力
INPUT1可入力,0不可入力
OUTPUT1可显示,0不可显示
INTENSIFIED1强调显示,0非强调显示
INVISIBLE1为*,0为输入即可见
LENGTH字段输出长度
DISPLAY_3D以三维框架显示字段
VALUE_HELP 有查询帮助的字段
45.在pov中,如果数据的选择条件为屏幕上的值的时候如何处理?
46.dynpro逻辑块中,field的作用是什么?
进行字段输入检查。
(防止所有控件都变灰)
47.列举abap数据字典中的对象及作用?
三层结构?
数据字典中的对象:
①Tables
②Views
③Dataelements
④Structure
⑤Domains
⑥SearchHelps
⑦LocalObjects
三层结构:
Domains、Dataelements、Tables(Views)。
48.Function所涉及到的参数及其作用
Se37功能组添加FM
Attribute:
设定功能模块类型,名称等通用属性
Import:
定义输入参数,从程序传递到功能模块。
Export:
定义输出参数,从功能模块传递到程序中的参数
Tables:
定义内表参数,将内表整体输入输出
Exceptions:
定义可能出现的异常
Changing:
定义输入输出参数。
49.使用Calltransaction进行BDC处理时,定义项目名、实行参数、处理结果的构造分别是什么,bdctable所用的构造包含哪些字段?
项目名构造:
BDCDDATA。
实行参数构造:
CTU_PARAMS。
处理结果构造:
BDCMSGCOLL。
BDCDATA构造:
FieldNAME
Type
Description
Program
Char(8)
ProgramnameofTransaction
Dynpro
Char(4)
ScreennumberofTransaction
Dynbegin
Char
(1)
IndicatorfornewScreen
Fnam
Cha