ABAP面试大全Word文档下载推荐.docx
《ABAP面试大全Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ABAP面试大全Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
AT事件中的工作区不同于LOOP循环的工作区该工作区中位于指定字段后面的值将不会被读取如果需要用到则需重新抽取一次
1.1.1.6交互式报表事件
ATUSER-COMMAND.
ATLINE-SELECTION
ATPF-FUNCTIONKEY(设置功能键)
1.1.2报表选择画面
1.1.2.1报表的选择画面上能否添加自定义工具栏?
能够添加,通过语句SELECTION-SCREENFUNCTIONKEYn(n为1至5,最多定义5个)。
1.1.2.2如何对报表的选择画面元素进行分组?
在PARAMETERS或SELECT-OPTIONS后使用附加语句“MODIFID+组名”
1.1.2.3如何更改屏幕各元素的状态?
举例一些比较常用的屏幕属性
在报表ATSELECTION-SCREENOUTPUT事件中或PBO(PROCESS
BEFORE
OUTPUT)中,
LOOPATSCREEN.
….
MODIFYSCREEN.
ENDLOOP.
SCREEN-NAME画面元素的名称
SCREEN-GROUP1~SCREEN-GROUP4对画面元素的分组
SCREEN-INPUT能否输入
SCREEN-INVISIBLE是否可见
SCREEN-LENGTH可见长度
SCREEN-ACTIVE是否是可用的状态
2ALV报表
2.1.1ALV报表实现的流程
声明数据对象→定义选择画面→从数据库取数→处理数据→显示数据
2.1.2显示ALV常用的两个FM
REUSE_ALV_GRID_DISPLAY,REUSE_ALV_LIST_DISPLAY,REUSE_ALV_GRID_DISPLAY_LVC
2.1.3如何设置ALV中的热键
setparameterid'
BES'
fieldgw_itab-ebeln.
calltransaction'
ME23N'
andskipfirstscreen.
2.1.4ALV显示中的小计
(1)使用SUBTOT
alv可以实现自动小计,首先fieldcat参数中添加DO_SUM=X,然后传入sorttable,可以在sorttable中指定需要小计的列
(2)使用AT语句
在LOOP循环中使用ATENDOFFIELD
2.1.5FMALV和OOALV的比较
FMalv和OOalv都能够实现按钮自定义、数据修改、按钮处理自定义等操作,通常情况下FMalv主要用于报表数据展示及简单交互,OOalv主要用于dialog程序开发,可以进行复杂的控制,比如单元格的修改控制(FM只能控制到列修改性)、自定义F4等,OOalv可以根据容器排列很方便的定义布局,一个屏幕可以放多个alv,但是FMalv只能一屏显示一个alv。
3WRITELIST
WRITELIST可以输出一些比较复杂的报表格式。
WRITELIST也是一种报表的输出方式,要注重的就是一些WRITE的基本语法就可以了!
在这里不一一列举。
2.数据库知识
2.1基础知识
2.1.1ABAP数据字典有哪些对象或元素?
Dataelement,Domain,structure,lockobject,views
2.1.2据库提交确认和数据库回滚取消语句
COMMITWORKROLLBACKWORK
2.1.3什么是LUW
LUW称为逻辑工作单位同一个逻辑工作单元共享一段内存将操作放置在同一个LUW中可以控制事务的同时提交和回滚
、insert、update对数据库表做操作时的影响
Modify操作数据库时,可以使用from内表或者工作区来进行多条和单条的更新,要求内表或工作区跟数据库表的结构一致,当数据库表中存在重复记录时,执行更新操作,更新的值为内表或工作区的值,,当数据库表中不存在记录时,执行插入,插入的值为内表或工作区的值
Insert操作数据库时,可以用from内表或者工作区进行多条和单条的插入,要求内表或工作区跟数据库表的结构一致,如果数据库中不存在重复记录时,执行插入,插入的值为内表或工作区的值;
如果已经存在重复记录,会出现更新异常
Update操作数据库时,可以直接set来进行单值更新,可以用fromtable和工作区进行批量更新,要求内表和工作区跟数据库表的结构一致,当存在记录时执行更新,当不存在记录时,没有数据会被更新,同时也不会产生异常,sy-subrc=0
2.1.5要描述域、数据元素、表字段之间的关系
域为数据字典中最小的单元数据元素是基于域进行定义的表字段则是通过数据元素进行定义的
,适用范围?
fullbuffer(全缓冲),一个表的数据要么全在内存中要么全不在。
当表记录很少,访问非常频繁且很少进行修改时使用:
genericareabuffer(常规区域缓冲),语言代码相关的表时最常使用的情况,如文本描述表,缓存满足在generickeys中定义的字段(个数介于1个和表主键数减1)的值得记录:
Single-recordbuffer(单记录缓冲),数据库表记录比较大,并且经常都是读取一条记录如selectsingle
2.2ABAP和数据库
2.2.1ABAP数据表的主索引是什么?
索引的好处与坏处?
与建索引的注意事项!
ABAP数据表的主索引是什么?
数据表的主键即是表的主索引;
好的索引能加快数据读取的速度但会增加更新数据库表的时间;
建立次级索引时应尽量选取那些查询条件经常使用到得字段
2.2.2ABAP透明表有哪几种数据类(dataclass)?
对数据的存储有什么影响?
主数据类,经常读取,很少修改的数据;
业务数据类,经常更新的数据;
组织数据类,系统初始化时存在的数据,也很少修改。
决定了数据实际存放的物理区域
2.2.3SAP中有几种表,他们的区别是什么?
transparenttable透明表,pooledtable(共享表)andclustertable(簇表).对于透明表是和DB层的physicaltable对应的.对于后俩者,是不对应到DB表的.比如TBSL就是一个pooledtable,你在DB层找不到此表.然后多个cluster(pooled)tables组成一个tablecluster和tablepool.tablecluster和tablepool是DB层的一个物理表
table)?
举出知道的簇表。
簇表是逻辑上有关联的几个表,在定义的时候分配给一个表簇。
Bseg
,有哪些常用的方法。
(1)通过点击画面上需要查找的字段,点击F1,在弹出画面中的技术信息。
(2)通过ST05进行数据库操作的跟踪,对于在前台界面进行数据的新增或更新,在数据库中都会有所体现
(3)通过事务SE80->
RepositoryInformationSystem->
ABAP字典->
数据库表格中,对某个字段进行查询
,激活锁对象产生的FunctionModule的名字为什么,在何处查看锁表的情况?
在SE11中,选择“锁对象”,即可建立。
用于设锁的FM为:
ENQUEUE_<
锁对象名>
。
它用于在锁表(LockTable)中生成一个锁项(LockEntry)。
若设锁不成功的话,就会在Return中反映出来。
用于释放锁的FM为:
DEQUEUE_<
它用于从锁表中删除一个锁项。
在SM12中查看锁表的情况。
这两个锁FM是在SAP系统的一个特殊工作进程中执行的,专门进行锁管理。
它运行在一个单独的服务器上,而该服务器专门用于维护整个SAP系统的主锁表(CentralLocakTable)。
有两种锁类型:
共享锁——只读锁,一个用户正在读数据时,阻止其他用户更改该数据。
独占锁——可写锁,一个用户正在修改数据时,阻止其他用户更改该数据。
FM分为V1和V2,那么首先会执行哪一种更新类型呢?
每种类型又是以哪种模式(异步、同步或本地)执行的呢?
V1更新类型比V2更新类型的优先级高,因此,V1比V2行执行。
V1的执行模式可以为异步、同步或本地;
V2只能为异步执行。
SQL注意原则
(1)a、尽可能减少满足条件的数据条目数量。
b、减少数据的传输量,以减少网络流量。
c、减少访问的数据库表量。
d、减少查询难度,可以通过整理选择标准来实现。
e、减少数据库负载。
(2)不要在LOOP中访问数据库尽量将数据预先提取到内表中然后再通过内表进行数据的整合
(3)SELECT语句尽量提取需要的字段对于不需要的字段避免抽取
(4)SELECT语句WHERE条件,应该先将主键相关条件放在前面然后按照比较符
=<
>
<
>
LIKEIN的顺序排列WHERE条件
(5)读取内表使用二分查找方式BINARYSEARCH
2.3与表相关
2.3.1MM模块有哪些常用表格
物料相关:
MARA常规物料数据,MAKT物料描述
采购申请相关:
EBAN采购申请,EBKN采购申请帐户设置
采购订单相关:
EKKO采购凭证抬头,EKPO采购凭证项目,EKKN采购凭证中的帐户设置
凭证相关:
MKPF抬头:
物料凭证,MSEG凭证段:
物料,等等。
2.3.2HR模块知识:
HR里面存储HR主数据主要用到了哪些表?
PA打头的是记录人员对象的相关信息,如:
PAXXXX,后面是X表示四个数字
HRP打头的是记录对象关系(组织机构)的相关信息。
如:
HRPXXXX.
2.3.3HR模块知识:
HR程序在开发中常用的两个逻辑数据库是什么?
分别对其进行描述
PNP和PCH
PNP是以人员编号为核心进行关联的,统计的是人员的信息
PCH是对象关系视图,记录组织机构相关对象的东西
2.3.4HR模块知识:
HR模块里面,如何修改HR的信息类型,具体如何实现
第一步:
锁定用户BAPI_EMPLOYEE_ENQUEUE
第二步:
调用HR里面操作信息类型的BAPI:
HR_INFOTYPE_OPERATION
第三步:
解锁用户:
BAPI_EMPLOYEE_DEQUEUE
,简单举例说明:
FAGLFLEXT
总账:
总计
FAGLFLEXA
实际行项目
ANEK
凭证抬头资产过账
ANEP
资产行项目
BKPF
会计核算凭证标题
BSEG
会计核算凭证段
KNA1
客户主记录(交易额)
LFA1
供应商主数据(业务额)
2.3.6PM常用的TABLE
EQUI设备主数据
EQKT设备短文本
EQUZ设备时间段
ILOAPM对象位置和帐户分配
IFLOT功能位置(表)
IFLOTX功能位置:
短文本
AFKO订单表头数据PP订单
AFPO订单项
AFVC订单的工序
2.3.6innerjoin与left-outerjoin的区别?
生成的结果集中left-outerjoin将主表(左表)中的所有满足查询条件的数据都会包括,若相同的查询条件下在右表中不存在记录也会包括;
innerjoin只包括左表与右表中都满足查询条件的数据
3.权限相关
3.1什么是权限对象(AuthorizationObjects)?
在ABAP程序中使用哪条语句进行授权检查?
权限对象由一组字段组成,这些字段中的值将被用于进行权限检查。
ABAP程序中使用AUTHORITY-CHECK语句根据权限对象进行权限检查。
在AUTHORITY-CHECK语句中,必须指明权限对象的所有字段,但有一个例外,可以用DUMMY关键字来绕过某个字段的检查。
通过SY-SUBRC的返回值进行检查,0为通过检查,其他均为错误,一个授权对象中最多可以定义10个字段。
3.2与权限对象有关的事务代码有哪些?
SU20定义,查看和建立权限字段;
SU21查看系统已有权限对象,定义新的权限对象;
SU53显示权限检查出错的原因:
对于调用Function时,返回无权限的错误后,能在此事务代码中查找到错误信息,PFCG角色维护,将所建的权限对象,与某个角色关联,将角色分配给某个用户后,就能够检查该用户是否有进行操作的某权限。
4.DIALOG
4.1DIALOG中的几个事件
PBOPAIPOVPOH
4.2何在TABLECONTROL中实现选中一行或多行的效果
将内表第一个字段定义为一个长度为一类型为C的变量并在TABLECONTROL属性框中将该字段填写到选择字段中去
4.3DIALOG开发的常用几个控件是什么?
子屏幕、文本、输入输出框、框、容器、表控制、按钮等等
5.BDC
5.1BDC录屏的事务代码
SHDB
5.2BDC与BAPI之间的区别
都可以用作数据导入但是BDC是完全模拟前台操作而BAPI是SAP提供的标准API通过调用BAPI在后台生成相应数据性能高于BDC导入方式
5.3BDC录屏的注意事项
将要填写的字段全部输入保证其能正确被录制下来不需要填写的字段不要操作以免录制后产生冗余字段
5.4谈谈BDC的运行模式和更新模式
运行模式包括:
A.全屏幕显示;
E.只有在发生错误时,显示屏幕;
N.不进行屏幕的显示,将相关信息记录到信息内表里;
P.不进行屏幕的显示,可进行DEBUG测试。
更新模式包括:
A.异步更新;
S.同步更新;
L.本地更新;
6.增强
6.1什么叫增强?
有哪些方式进行增强?
增强就是ERP系统中标准程序的出口,在该出口中由用户根据企业实际需求编写客户化逻辑代码。
6.1.1UserEXIT
通过SE37,以EXIT*开头,找到的函数大都是做系统预留的出口函数,前面说过,用户出口是标准程序留给用户的接口,标准程序通常不允许用户任意修改,如果修改需要申请AccessKey。
而且修改标准程序可能导致的错误erp公司通常是不负责的。
在SAP中,自定义的程序通常以保留字Y或Z开头,因此,出口函数中都预包含了一个Z开头的程序。
6.1.2Customerexit
客户自定义程序是通过CallFunction来调用SAP库中的一些系统函数,而用户增强的概念刚刚和这个相反,你可以使用一个由SAP功能模块调用的功能模块出口
可以在下面这几个层面对模块进行增强:
在ABAP程序中的FunctionModuleExit(E类),在Gui接口中的MenuExit(C类),在指定区域插入一个子窗口的ScreenExit(S类),
ABAP数据字典中表和结构的增强TableEnhancement(T类),还有在屏幕指定区域添加一用户自定义功能的FieldExit和keywordexit
6.1.3BADI
即BusinessAdd-in,是基于ABAP对象的一种增强技术。
SAP预定了一些接口,供客户进行实现,完成增强。
在进行增强时,必须首先定义BADI。
为BADI创建一个接口,接着创建一个适配器类(AdapterClass)来实现这个接口,然后创建这个适配器类的实例。
6.1.4EnhancementSpot
可称为隐式增强,在代码中,可插入增强点,对代码进行增强。
对于EnhancementSpot分为ENHANCEMENT-POINT与ENHANCEMENT-SECTION
ENHANCEMENT-POINT向其中添加的新代码,能够与旧代码一起运行
ENHANCEMENT-SECTION增加的新代码,将覆盖旧代码
6.2如何建立增强?
(1)找到增强
(2)建立增强项目
(3)添加增强的组件添加进增强项目
(4)编辑增强,添加自己的代码
(5)激活增强代码
6.3与增强相关的事务代码有哪些
对于Customerexit:
SMOD查看增强组件
CMOD建立项目后,实现增强
对于BADI:
SE18查找接口
SE19对接口进行实现
6.4如何进行数据库表字段的增强?
Append和Include的方式有何区别?
Append结构(AppendStructure)和自定义Include(CustomizingInclude)。
Append结构是在向表尾添加字段时创建的,自定义Include由SAP开发人员指定,以使用户可以创建新字段。
它们之间的区别在于:
Append的结构只能由该表使用,其他表使用不可;
Include能够插入任意一个结构或表,其中当插入表时,该表会自动转换为相同字段的结构。
7.SMARTFORMS
7.1谈谈SmartForm中,Template和Table表格的区别
Template是静态表格,单元格的输出是一定的,
Table是动态表格,包含在循环内,能够内表按条输出。
7.2SMARTFORM如何实现公司LOG打印,其步骤是什么?
1.用SE78导入公司logo,导入时只能导入位图、GIF文件,导入位图时,要注意用256色,否则会导致图片打印有问题
2.在smartform中添加图片即可
7.3smartform中如何控制段落、单个字符输出格式?
用smartstyles可以定义不同的段落、字符格式,在文本输出时可以指定格式
8.RFC和BAPI
8.1RFC
,有哪些通信模式?
RFC是(RemoteFunctionCall)的简称,是SAP系统和其他系统之间的重要而常用的双向接口技术,它包含同步RFC,异步RFC,事务性RFC,队列RFC和并行RFC。
8.1.2RFC中涉及到常用的事务代码有哪些?
SM51:
查看当前SAP系统中活动的应用服务器,包括Server_Names,Hostname和Ty(服务类型)
:
查看外部命令设定
SM59:
配置RFC连接,其中相同类型的RFC目标被组合至同一个目录。
这些远程目标的定义将保存在表RFCDES中。
,RFC接口提供了什么样的服务?
a.ABAP程序的调用接口,任何的ABAP程序都可以使用CALLFUNCTION...DESTINATION预计调用远程功能。
DESTINATION参数告诉SAP系统被调用的功能将在调用者之外的系统上运行,通过RFC接口与远程系统进行通信。
如果远程功能来自SAP系统,则必须是时间的功能模块,并在功能库中注册为“支持远程调用REMOTE-FUNCTION-ENABLE”,通信双规都通过ABAP的RFC接口实现。
b.非SAPABAP程序的调用接口,在RFC的实现过程中,如果调用或被调用一方是非ABAP程序,则非ABAP程序必须以特点的规格进行变成,确保它可作为RFC通信的一方。
SAP系统为外部程序提供RFC支持接口(RFC-supportedinterface)和GUI支持接口(GUI-supportedinterface)。
这样,在非SAP系统中,外部程序就可以调用并执行SAPRFM。
8.1.4RFC接口的具体功能包括哪些?
a.登录并退出远程系统,并执行权限检查
b.调用并管理远程系统会话所需的通信例程
c.将参数转换成远程系统所需的格式
d.处理通信过程中的错误
FUNCTION语句进行远程功能调用的基本模式有哪些
a.CALLFUNCTION-DESTINCTION:
以同步RFC方式实现的RFM调用。
如果DESTINATION后无其它附加项,则形成同步RFC调用,调用程序等待远程调用的结果以继续执行。
b.CALLFUNCTION-STARTINGNEWTASK:
以异步RFC方式实现的RFM调用。
通过STARTINGNEWTASK附加项形成异步RFC调用,调用程序不等待返回结果继续执行,结果将在回调子程序(callbacksubroutine)中接收。
c.CALLFUNCTION-INBACKGROUNDTASK:
以事务性RFC方式实现的RFM调用。
通过INBACKGROUNDTASK形成事务性RFC调用,远程功能暂不开始执行,等待COMMITWORK语句出现是,一次性执行一个或多个远程功能。
在SAP系统中,RFC的创建方式与普通功能模块类似,只是编写功能模块时需要在Attribute选项卡中将ProcessingType选项设为Remote-EnableModule,在传入传出参数那里需要选择参数为Passingvalue。
在SAP中,功能模块的调用通过CALLFUNCTION语句实现。
远程功能作为普通功能模块调用的扩展,可通过在CALLFUNCTION语句中添加DESTINATION子句完成,其语法格式与普通调用完全相同。
在SE37中建立函数模块的时候,attributes选项卡中将remotefunction前面的圆圈勾选上。
传递引用。
可以SE80进入,选中屏幕左边的repositorybrowser选项,在第一个输入框中选中函数组,在第二个输入框中输入需建立的函数组名,再回车就可以了;
或者从se37进入,在menubar上选中go