SAP ABAP 面试题与答案
SAP ABAP 是 SAP 系统的核心开发语言。以下是 SAP ABAP 面试中常见的 40 道问题与答案,覆盖 ABAP 基础、数据字典、增强、Web 开发等技术。
- 什么是 SAP ABAP?ABAP 全称是什么? ABAP 全称是 Advanced Business Application Programming(高级业务应用程序编程语言),是 SAP 系统的主要编程语言。
- 什么是 ABAP 工作台(ABAP Workbench)? ABAP 工作台是 SAP 提供的集成开发环境(IDE),包含 ABAP 编辑器、数据字典、功能构建器、菜单构建器、屏幕生成器和对象浏览器等。
- 什么是 ABAP 数据字典(ABAP Data Dictionary)? ABAP 数据字典(事务代码 SE11)集中管理和定义数据对象,包括数据库表、数据元素、域、结构、视图、搜索帮助和锁对象。
- 如何在数据字典中创建表? 使用事务代码 SE11,输入表名,选择创建,定义字段、数据元素、主键和技术设置(如表分类、数据类、大小类别),激活后生成数据库表。
- 什么是透明表、池表和簇表的区别? 透明表在数据库中有同名物理表,每条记录对应一行。池表将多条记录合并到单个物理表。簇表将多个逻辑表存储在同一个物理表中。
- 什么是逻辑数据库(Logical Database)? 逻辑数据库是一个预定义的程序,用于从多个关联的数据库表中读取数据,常用于报表程序的数据检索。
- 什么是内表(Internal Table)?有哪几种类型? 内表是 ABAP 程序中的运行时动态数组。类型包括:标准表(Standard Table)、排序表(Sorted Table)和哈希表(Hashed Table)。
- 什么是工作区(Work Area)和表头线(Header Line)? 工作区是与内表行结构相同的单行数据容器。表头线是在旧版 ABAP 中内表附带的工作区(使用 WITH HEADER LINE 声明)。
- 什么是 OPEN SQL 和 NATIVE SQL 的区别? OPEN SQL 是 SAP 标准化的 SQL 语句,跨数据库兼容,由 SAP 内核自动转换。NATIVE SQL 直接针对底层数据库方言编写,可执行数据库特定功能但不具移植性。
- 什么是 ABAP 报表类型(Classical vs Interactive)? Classical 报表以标准列表输出,使用 WRITE 语句。Interactive 报表支持用户交互,如点击行可触发深层详情展示,使用 TOP-OF-PAGE 和 AT LINE-SELECTION 等事件。
- 什么是 ALV 报表?ALV 有哪些类型? ALV(ABAP List Viewer)是 SAP 的高级报表输出工具,支持交互功能。类型包括:函数 ALV(REUSE_ALV_GRID_DISPLAY)、OO ALV(CL_GUI_ALV_GRID 类)和 IDA ALV(CL_SALV_TABLE 类)。
- 什么是模块池编程(Module Pool Programming)? 模块池编程是创建 ABAP 对话框程序的技术,通过屏幕(Screen)和用户交互实现数据录入和调整功能。
- 什么是 PBO 和 PAI? PBO(Process Before Output)是屏幕显示前的处理逻辑,用于初始化屏幕字段。PAI(Process After Input)是用户输入后的处理逻辑,用于校验和处理数据。
- 什么是 BDC(Batch Data Communication)? BDC 是将外部数据批量导入 SAP 系统的技术,通过录制事务操作生成批输入会话(Session)或调用事务(Call Transaction)。
- 什么是 LSMW?LSMW 的步骤有哪些? LSMW(Legacy System Migration Workbench)是数据迁移工具。步骤包括:定义项目、定义源结构、定义目标结构、定义映射、转换数据和导入数据。
- 什么是 BAPI?如何使用 BAPI? BAPI(Business Application Programming Interface)是 SAP 业务对象的标准化接口方法,用于外部系统与 SAP 的系统交互。使用 CALL FUNCTION 'BAPI_*' 调用。
- 什么是 BADI(Business Add-In)? BADI 是 SAP 面向对象的增强技术,允许用户在标准程序中插入自定义逻辑。通过 SE18 定义 BADI,SE19 实现 BADI。
- 什么是隐式增强和显式增强? 隐式增强(Implicit Enhancement)是 SAP 预定义的增强点,在任何程序中可用。显式增强(Explicit Enhancement)是开发者在代码中显式声明的增强点(ENHANCEMENT-POINT / ENHANCEMENT-SECTION)。
- 什么是 SmartForms 和 SAPScript 的区别? SAPScript 是旧版表单技术,使用 SE71 维护,不支持图形化设计。SmartForms(事务代码 SMARTFORMS)是新一代表单技术,支持图形化设计、表格、样式和增强集成。
- 什么是 Adobe Forms? Adobe Forms 是基于 Adobe LiveCycle Designer 的 SAP 表单解决方案,支持交互式表单、PDF 输出和 Web 服务集成。
- 什么是 RFC?有哪些类型? RFC(Remote Function Call)是 SAP 系统间或 SAP 与外部系统的远程函数调用协议。类型包括:同步 RFC(sRFC)、异步 RFC(aRFC)、事务性 RFC(tRFC)和队列 RFC(qRFC)。
- 什么是 IDoc?IDoc 的结构是什么? IDoc(Intermediate Document)是 SAP EDI 的标准数据交换格式。结构包括:控制记录(Control Record)、数据记录(Data Record)和状态记录(Status Record)。
- 什么是 ALE 和 EDI? ALE(Application Link Enabling)支持 SAP 系统间通过 IDoc 分发业务数据。EDI(Electronic Data Interchange)是不同企业间电子数据交换标准。
- 什么是 User Exit 和 Customer Exit? User Exit 是 SAP 提供的标准代码中的空子程序,用户可填入代码(如 PROJECT 中的 USEREXIT*)。Customer Exit 是基于函数模块的增强(如 EXIT_SAPMM06B_001),通过 SMOD/CMOD 管理。
- 什么是 Enhancement Spot 和 Enhancement Section? Enhancement Spot 是 SAP 显式增强点的容器。Enhancement Section 是替换式增强,允许用自定义代码替换标准代码的一部分。
- 什么是 ABAP 对象(ABAP Objects / OOABAP)? ABAP Objects 是 ABAP 的面向对象扩展,支持类、接口、继承、多态和事件等 OOP 特性。
- 什么是类(Class)和接口(Interface)? 类是对象的模板,包含属性和方法。接口定义了一组方法的声明,类可以通过实现接口获得方法定义。
- 什么是事件(Event)? 事件是 ABAP 对象中对象间通信的机制,通过 RAISE EVENT 触发,HANDLER 方法处理事件。
- 什么是锁对象(Lock Object)? 锁对象在数据字典(SE11)中定义,自动生成 ENQUEUE_* 和 DEQUEUE_* 功能模块,用于控制数据并发访问。
- 什么是授权对象(Authorization Object)? 授权对象定义权限检查规则(如活动、事务代码等),通过 AUTHORITY-CHECK 语句在程序中实现权限控制。
- 什么是 ABAP 调试器(ABAP Debugger)? ABAP 调试器(事务代码 SE38 输入程序后按 /H)用于逐行执行 ABAP 代码,设置断点、观察变量、修改内存值。
- 什么是运行时分析(SAT/SE30)? 运行时分析工具(SAT / SE30)用于分析 ABAP 程序性能,识别瓶颈,显示各语句的执行时间和调用次数。
- 什么是 ABAP Test Cockpit(ATC)? ATC(事务代码 ATC)是 SAP 提供的代码质量检查工具,统一执行标准检查和自定义检查,确保代码质量、安全性和性能。
- 什么是代码推送(Code Pushdown)技术? 代码推送指将数据处理逻辑从 ABAP 应用层推送到 HANA 数据库层执行,充分利用 HANA 的计算能力,减少数据传输量。
- 什么是 CDS View?有哪些类型? CDS(Core Data Services)View 是 SAP HANA 的数据库视图定义,用于建模数据。类型包括:基础视图、组合视图、消耗视图和扩展视图。
- 什么是 ABAP RESTful Application Programming (RAP)? RAP 是 SAP S/4HANA 的现代 ABAP 编程模型,支持 RESTful API、CDS View、Behavior Definition 和 Service Binding。
- 什么是表缓冲(Table Buffer)? 表缓冲将数据库表的部分数据缓存在应用服务器内存中,减少数据库访问,提高查询性能。缓冲类型包括:单记录缓冲、通用区域缓冲和完全缓冲。
- 什么是数据元素(Data Element)和域(Domain)? 数据元素是描述字段业务含义的元数据,域是描述字段技术属性的元数据(如数据类型、长度、小数位、输出格式等)。一个域可被多个数据元素使用。
- 什么是搜索帮助(Search Help)? 搜索帮助(SE11)为屏幕字段提供值选择功能,支持集合搜索和自定义搜索逻辑。
- 什么是功能模块(Function Module)和函数组(Function Group)? 功能模块是 ABAP 的封装函数,可在程序中调用。函数组是功能模块的逻辑容器(如 SAPF001),相同函数组的功能模块共享全局数据。
参考来源:本文内容参考自 SAP 官方文档及网络公开资料,仅供学习参考。