SAP ABAP 面试题与答案

2025-01-01 SAP ABAP

SAP ABAP 是 SAP 系统的核心开发语言。以下是 SAP ABAP 面试中常见的 40 道问题与答案,覆盖 ABAP 基础、数据字典、增强、Web 开发等技术。

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