一、SAP ABAP 面试基础认知
SAP ABAP 作为一种重要的企业级开发语言,在面试中有着广泛的考察点。本文将深入探讨 SAP ABAP 面试中的常见问题与答案,帮助读者更好地准备面试。
SAP ABAP 在企业应用开发中占据着重要地位。它主要用于开发和定制 SAP 系统中的各种应用程序,涵盖了从企业资源规划(ERP)到客户关系管理(CRM)等多个领域。
在 SAP ABAP 的面试中,面试官通常会关注候选人对 ABAP 基础知识的掌握程度。例如,对 ABAP 表和结构的理解就是一个常见的考察点。ABAP 中的表可以通过 SE11 创建,具有表名、字段名、字段类型、主键、外键等属性,可以使用 SQL 语句进行操作。而结构则常用于定义数据传输接口、内存中的数据结构等,通过 SE11 创建,包含字段名、字段类型、字段长度等属性。
SAP ABAP 的三层结构也是重要的知识点。表示层提供用户界面,工具包括 SAP GUI、Web Dynpro 等,负责展示数据和接收用户输入。应用层处理业务逻辑和数据处理,包含 ABAP 程序、功能模块等组件。数据库层存储持久化的数据,与 SAP HANA、Oracle 等数据库系统交互。
此外,ABAP 的数据字典也是面试中常出现的内容。数据字典用于定义、管理和维护 SAP 系统中的数据库对象,包括表、视图、数据元素、域等。它确保了数据的一致性、完整性和标准化,集中管理所有数据定义,可自动生成相关对象,与 ABAP 程序等紧密集成。
了解这些基础知识,对于准备 SAP ABAP 面试至关重要。候选人需要深入理解这些概念,并能够在实际的面试问题中准确地回答和应用。
二、关键面试问题解析
(一)锁对象与功能模块
当激活锁定对象时,系统会自动生成两个功能模块。用于设锁的功能模块为ENQUEUE_<对象名>,它用于在锁表中生成一个锁项。若设锁不成功,会在返回值中反映出来。用于释放锁的功能模块为DEQUEUE_<对象名>,用于从锁表中删除一个锁项。在 SAP ABAP 系统中有两种锁类型:共享锁和排他锁。共享锁是只读锁,当一个用户正在读数据时,阻止其他用户更改该数据;排他锁是可写锁,当一个用户正在修改数据时,阻止其他用户更改该数据。
(二)更新方面的功能模块
更新功能模块分为 V1 和 V2 两种类型。V1 更新类型比 V2 更新类型的优先级高,所以 V1 比 V2 先执行。V1 的执行模式可以为异步、同步或本地。所有会话程序中的 V1 请求都在独立的数据库 LUWU 中执行;同步或异步请求创建在表 VBLOGK,本地更新请求保留在主内存中。而 V2 只能为异步执行,分类集体运行用在 V2 模块内部,相应的请求只有在收集程序 RSM13005t 调用后执行,请求总是存储在 VBLOG3H 中。
(三)内存交换语句
在 ABAP 内存程序间进行数据交换时用到两个关键语句:EXPORT to MEMORY ID用于将数据复制至 ABAP 内存;IMPORT from MEMORY ID用于将数据从 ABAP 内存复制到程序中。在 ABAP 内存间进行交换的数据必须在两个程序中都进行声明,并包含同样的数据声明。
(四)授权对象与检查语句
授权对象由一组字段组成,这些字段中的值将被用于进行授权检查。在 ABAP 程序中使用AUTHORITY-CHECK语句根据授权对象进行授权检查。在该语句中,必须指明授权对象的所有字段,但有一个例外,可以用DUMMY关键字来绕过某个字段的检查。一个授权对象中最多可以定义 10 个字段。
(五)修改及其对更新的影响
在 SAP 系统中,修改是指用户对 SAP 发布的库对象进行的更改。在更新期间,必须对修改进行评审,以决定是否应该使用新的 SAP 对象,以及将来使用时是否需要进一步修改该对象。修改可能会对系统升级产生影响,需要谨慎处理,确保修改后的对象与新的 SAP 版本兼容。
(六)修改助手
修改助手是 4.5 版中引入的一个工具,用于简化更新过程。可以通过 ABAP 编辑器触发修改助手,它会记录对系统进行的修改。修改助手支持通过 ABAP 编辑器、Screen Painter、Menu Painter、文本元素维护、Function Builder 和 ABAP 字典进行的修改。在更新过程中,修改助手可以帮助开发人员快速识别和处理修改,提高更新效率。
(七)功能模块出口语句
某些 SAP 应用程序中存在功能模块出口,它使用户能够向 SAP 程序中添加一些功能。通过搜索 “CALL CUSTOMER” 可以发现是否存在功能模块出口。
(八)事务变式
事务变式是一组屏幕变式,用于预定义屏幕行为和默认值。通过使用变式功能,可以将用户不需要的字段、子屏幕及全屏幕从用户视图中取消。可以给任何输入字段设置默认值,字段也可以不用带 “Ready for Input” 状态。只能为对话和报表事务创建事务变式;变式中只能包含普通屏幕、子屏幕及对话屏幕。开发人员可以使用 GuiXT 脚本语言通过事务变式维护对屏幕进行修改。修改屏幕布局的方式有:插入按钮、值帮助、移动对象、插入屏幕等等。
(九)更改 SAP 的方式
用户修改 SAP 标准功能的方式包括个性化和定制化等。个性化是指根据用户的特定需求对系统进行配置,而定制化则是对系统进行更深入的开发和修改,以满足特定的业务需求。在进行更改时,需要谨慎考虑对系统的影响,并遵循 SAP 的最佳实践和开发规范。
(十)添加字段的方法
向 SAP 表中添加字段有两种方法:一种是通过 ABAP 字典进行添加,这种方法可以定义字段的属性,如数据类型、长度、必填项等;另一种是通过数据库直接添加,但这种方法可能会导致数据不一致和系统不稳定。
(十一)BADI 概念
BADI 是 Business Add-In 的缩写,即业务增强接口。它是一种功能增强概念,允许开发人员在不修改标准 SAP 代码的情况下,通过实现特定的接口来增强系统的功能。实现 BADI 的方法是在 ABAP 字典中定义 BADI 接口,然后在开发项目中实现该接口。通过 BADI,可以在不影响系统稳定性的情况下,灵活地扩展系统功能。
三、ABAP 重要概念解读
(一)表与结构的区别
在 ABAP 中,表和结构有着明显的不同。从创建方式来看,表是通过 SE11 创建,而结构同样也是通过 SE11 创建。在属性方面,表包括表名、字段名、字段类型、主键、外键等。例如,一个物料表可能有 “物料编号” 为主键,字段类型可以是字符型、数字型等。而结构包含字段名、字段类型、字段长度等属性。比如一个用于数据传输的结构,可能包含 “客户名称” 字段,类型为字符型,长度为一定值。
在用途上,表主要用于存储持久化的数据,可以使用 SQL 语句进行操作,如 SELECT 查询、INSERT 插入、UPDATE 更新、DELETE 删除等。而结构常用于定义数据传输接口、内存中的数据结构、程序的内部数据处理等。选择合适的类型对于提高程序的效率和灵活性至关重要。如果需要存储大量的持久化数据并进行复杂的数据库操作,表是合适的选择。而如果只是在程序内部进行数据传递或临时存储,结构可能更加便捷。
(二)三层结构
1.表示层介绍
1.功能:表示层主要提供用户界面,用于与用户进行交互。它将用户的输入传递到应用层,并将应用层的处理结果显示给用户。
2.工具:包括 SAP GUI(Graphical User Interface)、Web Dynpro、SAP Fiori、SAP Business Client 等。这些工具为用户提供了直观、便捷的操作界面。
3.特点:用户界面层不包含业务逻辑,只负责展示数据和接收用户输入。它确保了用户与系统的交互简洁高效,同时将复杂的业务逻辑处理隔离在应用层。
2.应用层阐述
1.功能:应用层负责处理业务逻辑和数据处理。它接收来自表示层的请求,执行必要的业务逻辑,然后与数据库层交互以存取数据,最后将处理结果返回给表示层。
2.组件:包含 ABAP 程序、功能模块(Function Modules)、类(Classes)、方法(Methods)、BAPIs(Business Application Programming Interfaces)、事务(Transactions)等。这些组件共同协作,实现了系统的核心功能。
3.特点:应用层包含业务规则和计算逻辑,是实现系统核心功能的地方。可以将其进一步划分为多个应用服务器,来分担负载和提高系统的可靠性。这样的设计使得系统能够处理大量的业务请求,同时保证了系统的稳定性和可扩展性。
3.数据库层说明
1.功能:数据库层负责存储持久化的数据。它负责数据的存储、检索和管理。
2.工具:包括 SAP HANA、SAP ASE、Oracle、Microsoft SQL Server 等数据库系统。这些数据库系统为数据的存储和管理提供了强大的支持。
3.特点:与具体的数据库系统交互,提供数据存储和管理服务。数据的持久性和完整性在这一层得到保障。数据库层确保了数据的安全存储和高效检索,为整个系统的稳定运行提供了基础。
(三)数据字典
4.主要组成部分
1.表(Tables):数据库表用于存储持久化的数据。它们可以是透明表(即物理存在于数据库中)或池表 / 索引表(存储在数据库表中的逻辑表)。定义表结构、字段、数据类型、键、索引等。例如,一个员工表可以包含 “员工编号”“姓名”“部门” 等字段,通过主键 “员工编号” 来确保数据的唯一性。
2.视图(Views):视图是从一个或多个表中选择和展示数据的虚拟表。视图本身不存储数据,而是从底层表中动态获取数据。用于简化数据访问、提供数据的逻辑视图、进行数据筛选和聚合。比如,一个部门员工视图可以从员工表和部门表中获取数据,展示特定部门的员工信息。
3.数据元素(Data Elements):数据元素是字段的语义描述,定义了字段的类型和属性。为字段提供一致的定义和描述,使得字段的使用更加标准化。例如,一个名为 “员工姓名” 的数据元素可以定义为字符型,长度为一定值,并提供相关的描述信息。
4.域(Domains):域定义了字段的数据类型和属性,例如长度、数值范围、格式等。确定数据的有效值范围和数据类型,为数据元素提供基础定义。比如,一个数字域可以定义为整数类型,范围在一定值之间。
5.特点
1.集中管理:所有数据定义都集中在数据字典中,确保数据一致性和完整性。这样的设计使得开发人员可以在一个统一的地方管理数据定义,避免了数据不一致的问题。
2.自动化:数据字典可以自动生成相关对象,如维护视图、查询等。这大大提高了开发效率,减少了手动创建对象的工作量。
3.集成性:与 ABAP 程序、报表、事务等紧密集成,提供统一的数据访问和处理方式。使得开发人员可以方便地在 ABAP 程序中使用数据字典中的对象,提高了开发的便捷性。
(四)函数组的作用
函数组在 ABAP 中起着重要的组织和管理作用。一方面,它用于组织功能模块,将功能模块按逻辑关系组织在一起。每个函数组通常包含多个功能模块,这些模块实现了相关的业务功能或操作。例如,一个用于订单处理的函数组可能包含多个功能模块,分别用于订单创建、订单修改、订单查询等操作。另一方面,函数组可以管理共享资源,如全局数据、子程序等。这些资源可以在函数组内的所有功能模块之间共享,从而提高代码的复用性和维护性。例如,一个函数组中的全局数据可以被多个功能模块访问和修改,避免了重复定义和数据不一致的问题。
(五)其他重要概念
6.内部表
1.定义:内部表是一种临时的数据表,它并不建立在 Database Server 上,而是建立在本地内存空间中。
2.用途:内部表主要用于在程序运行时进行表计算和数据重组。它可以用来处理(增加、查询、修改、删除)一系列具有相同结构的数据。例如,在处理一批订单数据时,可以使用内部表来存储订单信息,然后进行批量处理。
7.ITS 的优点
1.作用:ITS(Internet Transaction Server)在 R/3 系统中开发和测试 web 事务。
2.优点:它提供了一种便捷的方式来开发和测试 web 应用程序,使得开发人员可以在 R/3 系统中快速构建和部署 web 事务。例如,通过 ITS,可以将传统的 R/3 事务转换为 web 事务,方便用户通过浏览器进行访问。
8.DynPro 的含义
1.概念:DynPro(Dynamic Programming)是屏幕与相关流程逻辑的组合。
2.解释:它将屏幕设计与业务逻辑紧密结合,使得开发人员可以创建交互式的用户界面。例如,一个订单输入 DynPro 可以包含订单输入屏幕和相关的业务逻辑,如数据验证、保存订单等。
9.屏幕画家和菜单画家
1.屏幕画家:屏幕画家是一种用于设计用户界面屏幕的工具。它可以帮助开发人员创建和编辑屏幕布局、添加字段、设置输入验证等。例如,通过屏幕画家,可以创建一个美观、易用的订单输入屏幕。
2.菜单画家:菜单画家用于创建和编辑应用程序的菜单结构。它可以定义菜单选项、子菜单、快捷方式等。例如,通过菜单画家,可以为一个应用程序创建一个清晰、便捷的菜单结构,方便用户操作。
10.SAP 脚本的组件
1.标准文本:SAP 脚本中的标准文本是预先定义的文本模板,可以在文档中重复使用。例如,一个公司的信头可以作为标准文本,在多个文档中使用。
2.布局集:布局集定义了文档的页面布局、字体、颜色等格式设置。例如,通过布局集,可以为公司的文档设置统一的格式风格。
11.ALV 编程
1.作用:ALV(Application List viewer)在 ABAP 中用于显示和管理列表数据。
2.使用场景:它可以用于显示复杂的表格数据,支持排序、筛选、分页等功能。例如,在显示销售订单列表时,可以使用 ALV 来提供用户友好的界面,方便用户查看和操作数据。