ABAP面试大全.docx

上传人:b****6 文档编号:7045879 上传时间:2023-01-16 格式:DOCX 页数:35 大小:45.23KB
下载 相关 举报
ABAP面试大全.docx_第1页
第1页 / 共35页
ABAP面试大全.docx_第2页
第2页 / 共35页
ABAP面试大全.docx_第3页
第3页 / 共35页
ABAP面试大全.docx_第4页
第4页 / 共35页
ABAP面试大全.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

ABAP面试大全.docx

《ABAP面试大全.docx》由会员分享,可在线阅读,更多相关《ABAP面试大全.docx(35页珍藏版)》请在冰豆网上搜索。

ABAP面试大全.docx

ABAP面试大全

1.报表知识

1基础知识

1.1.1报表事件,有哪些?

1.1.1.1过程化事件

INITIALIZATION

START-OF-SELECTION

END-OF-SELECTION

1.1.1.2选择屏幕事件

ATSELECTION-SCREENOUTPUT选择屏幕PBO事件,每次选择屏幕调用之前触发,在其中进行选择屏幕输出之前的准备工作,如确定屏幕各元素的输出状态。

ATSELECTION-SCREEN选择屏幕最后被触发的事件,用户在选择屏幕上回车、选择某个GUI按钮、功能键或者菜单项时触发

ATSELECTION-SCREENONfield

ATSELECTION-SCREENONBLOCKblock

ATSELECTION-SCREENONRADIOBUTTONGROUPgroup1

ATSELECTION-SCREENONseltab

ATSELECTION-SCREENONENDOFseltab,

ATSELECTION-SCREENONHELP-REQUESTFORfield选择屏幕的POH事件,F1事件,定义字段帮助

ATSELECTION-SCREENONVALUE-REQUESTFORfield选择屏幕的POV事件,F4事件,定义字段输入帮助

1.1.1.3在使用到逻辑数据库时,比如HR报表,涉及到的逻辑数据库事件:

GETnode

GETnodeLATE

1.1.1.4列表事件

TOP-OF-PAGE

END-OF-PAGE

AT-LINE-SELECTION

AT-USER-COMMAND用户交互控制,选择某个GUI功能出发,用于交互式报表

1.1.1.5AT事件

ATFIRST功能

循环时第一条记录时调用

ATLAST功能

循环中最后一条记录时调用

ATNEW功能

循环中当指定字段之前(包括指定字段)的组合和上一条记录不一样的时候调用

ATENDOF功能

循环中当指定字段之前(包括指定字段)的组合和下一条记录不一样的时候调用

AT事件的注意点

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中可以控制事务的同时提交和回滚

2.1.4简述modify、insert、update对数据库表做操作时的影响

Modify操作数据库时,可以使用from内表或者工作区来进行多条和单条的更新,要求内表或工作区跟数据库表的结构一致,当数据库表中存在重复记录时,执行更新操作,更新的值为内表或工作区的值,,当数据库表中不存在记录时,执行插入,插入的值为内表或工作区的值

Insert操作数据库时,可以用from内表或者工作区进行多条和单条的插入,要求内表或工作区跟数据库表的结构一致,如果数据库中不存在重复记录时,执行插入,插入的值为内表或工作区的值;如果已经存在重复记录,会出现更新异常

Update操作数据库时,可以直接set来进行单值更新,可以用fromtable和工作区进行批量更新,要求内表和工作区跟数据库表的结构一致,当存在记录时执行更新,当不存在记录时,没有数据会被更新,同时也不会产生异常,sy-subrc=0

2.1.5要描述域、数据元素、表字段之间的关系

域为数据字典中最小的单元数据元素是基于域进行定义的表字段则是通过数据元素进行定义的

2.1.6数据字典有几种缓冲方式,适用范围?

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层的一个物理表

2.2.4什么是簇表(clustertable)?

举出知道的簇表。

簇表是逻辑上有关联的几个表,在定义的时候分配给一个表簇。

Bseg

2.2.5找数据库表,有哪些常用的方法。

(1)通过点击画面上需要查找的字段,点击F1,在弹出画面中的技术信息。

(2)通过ST05进行数据库操作的跟踪,对于在前台界面进行数据的新增或更新,在数据库中都会有所体现

(3)通过事务SE80->RepositoryInformationSystem->ABAP字典->数据库表格中,对某个字段进行查询

2.2.6如何建立数据库锁对象,激活锁对象产生的FunctionModule的名字为什么,在何处查看锁表的情况?

在SE11中,选择“锁对象”,即可建立。

用于设锁的FM为:

ENQUEUE_<锁对象名>。

它用于在锁表(LockTable)中生成一个锁项(LockEntry)。

若设锁不成功的话,就会在Return中反映出来。

用于释放锁的FM为:

DEQUEUE_<锁对象名>。

它用于从锁表中删除一个锁项。

在SM12中查看锁表的情况。

这两个锁FM是在SAP系统的一个特殊工作进程中执行的,专门进行锁管理。

它运行在一个单独的服务器上,而该服务器专门用于维护整个SAP系统的主锁表(CentralLocakTable)。

有两种锁类型:

共享锁——只读锁,一个用户正在读数据时,阻止其他用户更改该数据。

独占锁——可写锁,一个用户正在修改数据时,阻止其他用户更改该数据。

2.2.7更新FM分为V1和V2,那么首先会执行哪一种更新类型呢?

每种类型又是以哪种模式(异步、同步或本地)执行的呢?

V1更新类型比V2更新类型的优先级高,因此,V1比V2行执行。

V1的执行模式可以为异步、同步或本地;V2只能为异步执行。

2.2.7使用OPENSQL注意原则

(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

2.3.5财务模块:

财务模块开发中常用的表有哪些,简单举例说明:

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

8.1.1什么是RFC,有哪些通信模式?

RFC是(RemoteFunctionCall)的简称,是SAP系统和其他系统之间的重要而常用的双向接口技术,它包含同步RFC,异步RFC,事务性RFC,队列RFC和并行RFC。

8.1.2RFC中涉及到常用的事务代码有哪些?

SM51:

查看当前SAP系统中活动的应用服务器,包括Server_Names,Hostname和Ty(服务类型)

查看外部命令设定

SM59:

配置RFC连接,其中相同类型的RFC目标被组合至同一个目录。

这些远程目标的定义将保存在表RFCDES中。

8.1.3根据调用的不同,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.处理通信过程中的错误

8.1.5在通过CALLFUNCTION语句进行远程功能调用的基本模式有哪些

a.CALLFUNCTION-DESTINCTION:

以同步RFC方式实现的RFM调用。

如果DESTINATION后无其它附加项,则形成同步RFC调用,调用程序等待远程调用的结果以继续执行。

b.CALLFUNCTION-STARTINGNEWTASK:

以异步RFC方式实现的RFM调用。

通过STARTINGNEWTASK附加项形成异步RFC调用,调用程序不等待返回结果继续执行,结果将在回调子程序(callbacksubroutine)中接收。

c.CALLFUNCTION-INBACKGROUNDTASK:

以事务性RFC方式实现的RFM调用。

通过INBACKGROUNDTASK形成事务性RFC调用,远程功能暂不开始执行,等待COMMITWORK语句出现是,一次性执行一个或多个远程功能。

8.1.6怎么创建一个支持远程调用的RFC

在SAP系统中,RFC的创建方式与普通功能模块类似,只是编写功能模块时需要在Attribute选项卡中将ProcessingType选项设为Remote-EnableModule,在传入传出参数那里需要选择参数为Passingvalue。

8.1.7怎么调用一个SAP标准RFC

在SAP中,功能模块的调用通过CALLFUNCTION语句实现。

远程功能作为普通功能模块调用的扩展,可通过在CALLFUNCTION语句中添加DES

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1