SAP ABAP 面试问题与答案

2025年3月17日 | 阅读 10 分钟

下面列出了最常问的 SAP ABAP 面试问题和答案。


1) 什么是 ABAP?

ABAP 代表 高级业务应用程序编程(Advanced Business Application Programming)。它是由德国软件公司 SAP SE 创建的一种高级编程语言。目前它与 Java 一起被定位为 SAP NetWeaver 应用服务器的编程语言,该服务器是 SAP NetWeaver 平台的一部分,用于构建业务应用程序。

它是众多第四代特定应用程序语言之一,开发于 20 世纪 80 年代。


2) 描述 SAP R/3?

它是一个由 3 层组成的 3 层架构。

  • 呈现
  • 应用
  • 数据库
ABAP Interview Questions

它是一个客户端-服务器架构。R 代表实时系统,3 代表 3 层架构。


3) 有多少种方式可以访问 SAP 系统?

用户可以通过两种方式访问 SAP 系统。

  • 通过 SAP GUI
  • 通过网页浏览器

这称为前端。用户只能安装前端,不能安装应用程序数据库服务器。前端接受用户对数据库服务器和应用服务器的请求。


4) 什么是池表和簇表?

池表和簇表是 ABAP 字典中特殊的表类型。我们可以将来自多个不同表的数据存储到一个表池或表簇中。分配给表池或表簇的表称为池表或簇表。

我们应该使用表池,特别是用于存储内部控制信息。控制信息可以是屏幕序列、程序参数、临时数据和连续文本,例如文档。

商业相关数据存储在透明表中。


5) 池表和透明表的主要区别是什么?

池表和透明表的主要区别在于,池表与数据库表之间存在多对一关系,而透明表与数据库表之间存在一对一关系。


6) 解释 ABAP 中的数据字典?

ABAP 字典用于创建和管理数据定义(元数据)。ABAP 字典允许对系统中使用的所有数据进行基本描述,而无需冗余。新信息或更新的信息会自动提供给所有系统组件。这确保了数据完整性、数据安全性和数据一致性。

ABAP 字典支持用户定义的数据元素、结构和表类型的定义。您可以使用这些数据定义在基本关系数据库中创建相关对象(表或视图)。ABAP 字典描述了用于应用程序开发的对象的逻辑结构。这些对象显示了与基础关系数据库中的表或视图的连接。

ABAP Interview Questions

ABAP 字典还支持一些屏幕上字段编辑的标准功能,例如为屏幕字段分配输入帮助。


7) 解释 ABAP 字典中的一些基本对象?

ABAP 字典中的一些基本对象类型如下。

表在 ABAP 字典中独立于数据库定义。

视图

视图是多个表的合理视图。视图结构在 ABAP 字典中定义。可以从该结构创建数据库的概览。

类型

类型结构可以在 ABAP 程序中全局定义。对类型的更改会在所有使用该类型的程序中自动激活。

锁定对象

锁定对象用于同步不同用户对相似数据的访问。

域可以将具有相同技术类型的不同字段组合在一起。域定义了所有引用该域的表字段和结构模块的值范围。


8) 定义 ABAP 数据字典中的结构?

结构是一个数据对象,由分别存储在内存中的各种数据类型的组件组成。结构就像用户定义的数据类型。它就像数据字典的表,可以从 ABAP 程序中访问。结构在运行时保存数据。


9) 什么是内表和工作区?

内表和工作区是用于在运行时存储数据的临时内存区域。它们是数据库表和内表的实例。工作区是标准数据类型对象。这些表仅在程序执行期间存在。它用于对数据库表的子集执行表操作,以根据用户需要重新组织数据库表的内容。


10) 什么是 ITS?ITS 有什么优点?

ITS 代表 互联网事务服务器(Internet Transaction Server)。它在 HTTP 服务器和 R/3 系统之间创建接口,将 R/3 系统提供的屏幕数据转换为 HTML 文档,反之亦然。

ITS 的优点

  • 可以在 R/3 系统中开发和测试全面的 Web 事务。
  • 它作用于所有事务组件,包括那些由 ITS 在外部使用的组件。
  • R/3 系统中自动语言处理的优势在于,我们可以在运行时利用与语言相关的 HTML 文档。

11) 什么是 SAP Script?描述其组件。

SAP Script 是 SAP 系统本身的文本处理系统。它非常类似于其他领先的文本处理系统。它用于以各自的格式打印预格式化文本。

ABAP Interview Questions

SAP Script 是一个用于文字处理的 SAP 工具。SAP Script 具有以下组件:

标准文本

它类似于标准普通文档。

布局集

布局集包含以下组件:

  • Sap Script 的格式组件是窗口和页面、段落格式、字符。
  • R/3 系统中的表单。
  • 每个布局集都包含 ABAP/4 程序中的一个标题、段落和字符串。

12) 什么是外键关系?

外键关系可以在表之间定义,并且应该在字段级别明确定义。外键用于确保数据的一致性。必须根据现有数据检查输入的数据,以确保没有矛盾。在定义外键关系时必须指定基数。基数表示可能有多少个依赖记录和引用记录。


13) 列出各种数据库完整性。

不同类型的数据库完整性如下。

  • 语义完整性
  • 主键完整性
  • 关系完整性
  • 值集完整性
  • 操作完整性
  • 外键完整性

14) 区分 ABAP 内存和 SAP 内存。

ABAP 内存被视为一个内存区域,其中 ABAP 程序在内部部分可用。数据存储在程序调用中。这些程序调用允许数据从一个程序调用传递到另一个程序调用。

通过 SAP 内存可以将数据从一个会话传递到另一个会话。SAP GUI 的所有会话都怀疑到名为 SAP 内存的内存区域。数据从编程系统的一个会话传输到另一个会话是毫不费力的。


15) 解释 ABAP 中的 BADI。

BADI 代表 业务附加组件(Business Add-In)。它是一种新的 SAP 面向对象的增强技术。BADI 用于将我们的业务功能实现到现有的 SAP 标准功能中。

BADI 在 SAP R/3 中从系统发布版本 4.6c 开始可用

BADI 遵循面向对象的方法来重用增强技术。我们可以多次使用 BADI。


16) 在 ABAP 程序中,需要哪两个语句才能使用写语句输出图标?

ABAP 程序中需要两个语句

INCLUDE

Include 语句是程序必需的语句。

WRITE

写语句的语法如下所示:


17) 如何将行插入 ABAP 内表?

我们可以使用 INSERT 语句 将一行或多行插入 ABAP 内表。要插入一行,首先将要插入的值放入工作区,然后使用 INSERT 语句将工作区中的值插入内表。

将行插入内表的语法:


18) 什么是 ABAP Web Dynpro?

Web Dynpro (WD) 是 SAP ABAP 的一个 Web 界面模型。它用于在 SAP 中开发 Web 应用程序。它提供了一个前端用户界面,可以直接连接到后端 SAP R/3。它访问数据和功能以进行报告。


19) BDC(批处理数据通信)编程是什么意思?

BDC 是一种将大量或外部数据转发到 SAP 系统的自动程序。队列文件是传输的关键组件。队列文件通过批处理输入程序和关联到“会话”的组接收数据。


20) 描述数据类?

数据类可以分为以下几类。

主数据

主类中的数据很少更改。

事务数据

在事务类中,数据可以频繁更改。

组织数据

在组织数据类中,数据是定制数据,在系统配置时输入到系统中。它很少更改。

系统数据

R/3 系统本身使用此数据。


21) LUW 有哪些不同类型?

LUW(逻辑工作单元) 是一个附带的数据库操作序列,必须要么完全执行,要么完全不执行。因此,它构成了数据库系统的一个单元。

LUW 有两种类型:

DB LUW

数据库 LUW 是数据库用于确保数据一致性的一种方法。它是一个附带的数据库操作序列,以数据库提交结束。如果数据库 LUW 已成功执行,数据库将处于一致状态。如果数据库 LUW 包含错误,则所有受此错误影响的数据库都将回滚。这使得数据库恢复到启动时的状态。

SAP LUW

它是一个由对话步骤组成的逻辑单元。这些步骤的更改在一个数据库 LUW 中写入数据库,称为 SAP LUW。一个 SAP LUW 可以跨越多个对话步骤。它可以通过一系列不同的工作进程执行。


22) 列出 ABAP 编程中的一些重要事件。

以下是 ABAP 编程中的一些重要事件:

LOAD-OF-PROGRAM

这是在处理任何其他 ABAP 代码之前调用的第一个事件。

INITIALIZATION

它在处理 ABAP 选择屏幕代码之后调用。此事件用于初始化选择屏幕的输入字段或更改这些字段的默认值。

AT SELECTION-SCREEN OUTPUT

此事件在显示选择屏幕之前调用。它可用于使用循环屏幕功能操作实际选择屏幕属性。此事件允许隐藏字段、将其变灰(使其仅输出)或使其增强等功能。

TOP-OF-PAGE

此事件在 ABAP 列表开始新页面时调用。它用于显示列表的标题。

TOP-OF-PAGE During LINE_SELECTION

此事件在创建详细列表时也会激活。

END-OF-PAGE

此事件在每页末尾显示。


23) 宏和子例程有什么区别?

宏只用于定义它们的程序中。宏的定义可以在编译/生成时扩展。

子例程(FORM)可以从任何程序中调用,无论它们是在当前程序中定义还是在其他程序中定义。

MACRO 是用于多次使用的几行代码的缩写。它是一个局部子例程。

由于 MACRO 无法调试,所以我们避免使用它们。如果子例程仅用作局部子例程,请使用 FORM。对于外部使用,请使用 FUNCTION。


24) 指定数据字典对象的类型。

SAP 数据字典空间中使用了各种类型的对象。此类对象列表如下:

  • 视图
  • 领域
  • 数据元素
  • 类型组
  • 搜索帮助/匹配代码对象
  • 锁定对象
  • 结构
  • 表类型

25) 区分数据库索引和匹配代码。

数据库索引只包含来自一个表的字段;另一方面,匹配代码对象可以构建在簇表、透明表和池表上。


26) 为什么我们在 Web Dynpro 中使用事件和操作?

在 Web Dynpro 中,可以创建事件以在控制器之间建立连接。通过连接,一个控制器可以触发其他控制器中的事件。所有事件都组织在组件控制器中,并在特定组件中可用。


27) 什么是子例程?

子例程是可重用的代码段。它是 ABAP 程序中定制的单元,其中函数以其源代码的形式封装。程序的一部分可以被调用到子例程中,以更好地概览主程序。


28) 用户出口和 BADI 之间的区别?

用户出口用于单一实现,它是一种过程式方法。在 BADI 的情况下,它们用于多重实现和面向对象的方法。

这里多重实现意味着对象的重用性。


29) ABAP 中有哪些控制中断事件?

一些控制中断事件如下:

AT-FIRST

此事件用于在记录处理之前执行语句。

AT-LAST

此事件用于在所有记录处理之后执行语句。

AT-NEW

此事件用于在记录集合处理之前执行语句。

AT-END

此事件用于在处理完一组记录后执行语句。


30) ABAP 程序中的提取语句做什么?

提取数据集包含一系列记录。这些记录可能具有不同的结构。

记录类型是具有相同结构的所有记录的格式。第一个提取语句创建提取数据集并向其中添加第一个提取记录。