SAP ABAP经典面试题大全(超详细,附实例)

1. ABAP表和结构的区别?

在ABAP(Advanced Business Application Programming)中,表(Table)和结构(Structure)是两种重要的数据类型。它们有不同的用途和特点。下面是它们的主要区别:

特性 表(Table) 结构(Structure)
定义 用于存储多条记录的数据库表。每个表由多个字段组成,字段数据可以从数据库中查询、插入、更新或删除。 用于定义一个单一的数据记录或数据单元,包含多个字段。通常用于数据处理和传输。
数据存储 存储在数据库中,可以持久化存储。 不存储数据,仅在程序运行时存在于内存中。
用途 存储和管理应用程序中的数据,如用户信息、交易记录等。 定义数据的结构,以便在程序中处理数据,例如传递参数或返回值。
访问 可以通过ABAP语句(如SELECT、INSERT、UPDATE、DELETE)访问和操作。 主要用于内存中的数据处理,没有直接的数据库操作。
维护 可以在SAP系统中维护,包含在数据字典中。 只能在程序中定义,不能在数据字典中维护。

表(Table)

  • 创建:通过SE11(数据字典)创建表。
  • 属性:包括表名、字段名、字段类型、主键、外键等。
  • 操作:可以使用SQL语句进行操作,如SELECT查询、INSERT插入、UPDATE更新、DELETE删除等。

结构(Structure)

  • 创建:通过SE11(数据字典)创建结构。
  • 属性:包括字段名、字段类型、字段长度等。
  • 用途:常用于定义数据传输接口、内存中的数据结构、程序的内部数据处理等。

在ABAP开发中,表和结构都非常重要,选择合适的类型可以提高程序的效率和灵活性。

2、请描述下SAP ABAP的三层结构?

SAP ABAP的三层结构是指其应用程序架构的分层设计,这种设计帮助实现了清晰的分离和模块化,确保了系统的稳定性和可维护性。三层结构通常包括:

1. 表示层(Presentation Layer)

  • 功能:提供用户界面,用于与用户交互。表示层将用户的输入传递到应用层,并将应用层的处理结果显示给用户。
  • 工具:SAP GUI(Graphical User Interface)、Web Dynpro、SAP Fiori、SAP Business Client等。
  • 特点:用户界面层不包含业务逻辑,只负责展示数据和接收用户输入。

2. 应用层(Application Layer)

  • 功能:处理业务逻辑和数据处理。应用层接收来自表示层的请求,执行必要的业务逻辑,然后与数据库层交互以存取数据,最后将处理结果返回给表示层。
  • 组件:ABAP程序、功能模块(Function Modules)、类(Classes)、方法(Methods)、BAPIs(Business Application Programming Interfaces)、事务(Transactions)等。
  • 特点:包含业务规则和计算逻辑,是实现系统核心功能的地方。可以将其进一步划分为多个应用服务器,来分担负载和提高系统的可靠性。

3. 数据库层(Database Layer)

  • 功能:存储持久化的数据。数据库层负责数据的存储、检索和管理。
  • 工具:SAP HANA、SAP ASE、Oracle、Microsoft SQL Server等数据库系统。
  • 特点:与具体的数据库系统交互,提供数据存储和管理服务。数据的持久性和完整性在这一层得到保障。

总结

  • 表示层(用户界面) → 应用层(业务逻辑处理) → 数据库层(数据存储)

这种三层结构分离了用户界面、业务逻辑和数据存储,提供了系统的灵活性、可扩展性和可维护性。

3、ABAP的数据字典是什么?

SAP ABAP的数据字典(Data Dictionary)是一个核心组件,用于定义、管理和维护SAP系统中的数据库对象。它提供了一个统一的视图来管理数据库表、视图、数据元素、域等。数据字典确保了数据的一致性、完整性和标准化。

数据字典的主要组成部分

  1. 表(Tables)
    • 定义:数据库表用于存储持久化的数据。它们可以是透明表(即物理存在于数据库中)或池表/索引表(存储在数据库表中的逻辑表)。
    • 功能:定义表结构、字段、数据类型、键、索引等。
  2. 视图(Views)
    • 定义:视图是从一个或多个表中选择和展示数据的虚拟表。视图本身不存储数据,而是从底层表中动态获取数据。
    • 功能:用于简化数据访问、提供数据的逻辑视图、进行数据筛选和聚合。
  3. 数据元素(Data Elements)
    • 定义:数据元素是字段的语义描述,定义了字段的类型和属性。
    • 功能:为字段提供一致的定义和描述,使得字段的使用更加标准化。
  4. 域(Domains)
    • 定义:域定义了字段的数据类型和属性,例如长度、数值范围、格式等。
    • 功能:确定数据的有效值范围和数据类型,为数据元素提供基础定义。
  5. 搜索帮助(Search Helps)
    • 定义:搜索帮助是用于辅助用户在输入字段时查找和选择数据的工具。
    • 功能:提供用户友好的数据选择和查找功能,简化数据录入过程。
  6. 类型池(Type Pools)
    • 定义:类型池包含了ABAP类型定义的集合,可以在程序中引用这些类型。
    • 功能:提供类型定义的重用,确保类型一致性。
  7. 锁对象(Lock Objects)
    • 定义:锁对象用于控制对数据的并发访问,确保数据的一致性。
    • 功能:防止数据冲突和损坏,提供数据访问的安全性。
  8. 表维护生成(Table Maintenance Generator)
    • 定义:自动生成用于维护表数据的维护视图。
    • 功能:提供用户友好的界面,方便用户对表数据进行增加、修改和删除操作。

数据字典的特点

  • 集中管理:所有数据定义都集中在数据字典中,确保数据一致性和完整性。
  • 自动化:数据字典可以自动生成相关对象,如维护视图、查询等。
  • 集成性:与ABAP程序、报表、事务等紧密集成,提供统一的数据访问和处理方式。

数据字典是SAP系统中一个重要的组件,通过规范化数据管理,提高了系统的可维护性和可靠性。

4、ABAP中的函数组是用来做什么的?

在ABAP(Advanced Business Application Programming)中,函数组(Function Groups)是用于组织和管理功能模块(Function Modules)的容器。函数组帮助将相关的功能模块分组在一起,以便更好地管理和复用这些模块。函数组可以被视为一个功能模块的集合,它们在应用程序中提供了一种结构化的方式来组织和调用不同的业务逻辑和功能。

函数组的主要作用

  1. 组织功能模块
    • 函数组用于将功能模块按逻辑关系组织在一起。每个函数组通常包含多个功能模块,这些模块实现了相关的业务功能或操作。
  2. 管理共享资源
    • 函数组可以定义和管理共享资源,如全局数据、子程序等。这些资源可以在函数组内的所有功能模块之间共享,从而提高代码的复用性和维护性。
  3. 控制访问
    • 函数组控制功能模块的访问权限。可以设定哪些功能模块是公开的,哪些是私有的,从而确保业务逻辑的安全性。
  4. 结构化开发
    • 通过将功能模块组织到函数组中,可以更好地结构化开发工作。函数组提供了一个清晰的逻辑结构,使得功能模块的管理和维护更加高效。
  5. 功能模块调用
    • 函数组允许功能模块之间的调用。可以在一个功能模块中调用同一函数组内的其他功能模块,从而实现复杂的业务逻辑。

函数组的主要组件

  1. 功能模块(Function Modules)
    • 功能模块是函数组中的基本组成部分。它们封装了一段特定的业务逻辑或操作,可以被其他功能模块或程序调用。
  2. 全局数据(Global Data)
    • 在函数组中定义的全局数据可以被该函数组中的所有功能模块访问和修改。这些全局数据通常用于存储共享的信息。
  3. 子程序(Subroutines)
    • 函数组可以包含一些通用的子程序,这些子程序在函数组中的多个功能模块中使用,减少重复代码。
  4. 接口(Interface)
    • 功能模块的接口定义了其输入和输出参数。函数组提供了一个统一的接口来调用这些功能模块。
  5. 异常处理(Exception Handling)
    • 函数组可以定义异常处理机制,以便在功能模块执行过程中出现错误时进行适当的处理。

创建和管理函数组

  • 创建:可以通过事务码 SE80(对象导航器)或 SE37(功能模块)创建和管理函数组。在创建函数组时,通常需要定义功能模块及其相关的全局数据和子程序。
  • 维护:可以在函数组中添加、删除或修改功能模块,并管理其相关的全局数据和子程序。

总结

函数组在ABAP中用于组织和管理功能模块,使得业务逻辑的开发、维护和复用更加高效。通过函数组,开发人员可以更好地结构化代码,管理共享资源,并控制功能模块的访问权限。

5、ABAP的消息类型

在ABAP(Advanced Business Application Programming)中,消息类型(Message Types)用于处理系统中的消息和错误信息。它们在程序运行时向用户展示反馈信息,并用于在系统中传递状态、错误或警告信息。消息类型定义了消息的性质以及如何处理这些消息。

消息类型

  1. 信息(I)
    • 描述:用于提供一般性的信息或通知,告知用户某个操作或事件已经成功完成。
    • 用途:显示操作成功的通知或提示用户某个操作的结果。
    • 示例:用户成功创建了一个新的记录,系统会显示“记录已成功创建”这样的信息。
  2. 警告(W)
    • 描述:用于提醒用户注意某些可能需要关注的情况或潜在的问题。警告通常不阻止程序的继续执行,但提示用户可能需要采取行动。
    • 用途:警告用户注意某些操作的潜在影响或提醒用户检查某些数据。
    • 示例:系统显示“您即将删除一个重要记录,请确认是否继续”。
  3. 错误(E)
    • 描述:用于表示发生了错误,通常会中断程序的执行并要求用户采取措施纠正错误。错误消息会停止当前的事务或操作。
    • 用途:通知用户操作失败的原因,并要求用户纠正错误后重试。
    • 示例:系统显示“记录创建失败:缺少必填字段”这样的错误消息。
  4. 中止(A)
    • 描述:用于表示严重错误,导致程序或事务的执行被强制中止。中止消息会立即停止当前操作,并通常需要用户采取措施纠正问题。
    • 用途:表示严重的错误或系统状态,使得操作不能继续进行。
    • 示例:系统显示“
ABAP面试大全 目录 1. 报知识 6 1.1 基础知识 6 1.1.1 报事件,有哪些? 6 1.1.2 报选择画面 7 1.2 ALV报 8 1.2.1 ALV报实现的流程 8 1.2.2 显示ALV常用的两个FM 8 1.2.3 如何设置ALV中的热键 8 1.2.4 ALV显示中的小计 8 1.2.5 FM ALV 和 OO ALV的比较 8 1.3 WRITE LIST 8 2. 数据库知识 9 2.1 基础知识 9 2.1.1 ABAP数据字典有哪些对象或元素? 9 2.1.2 据库提交确认和数据库回滚取消语句 9 2.1.3 什么是LUW 9 2.1.4简述modify 、insert、update对数据库做操作时的影响 9 2.1.5 要描述域、数据元素、字段之间的关系 9 2.1.6数据字典有几种缓冲方式,适用范围? 9 2.2 ABAP数据库 10 2.2.1 ABAP 数据的主索引是什么?索引的好处与坏处?与建索引的注意事项! 10 2.2.2 ABAP透明有哪几种数据类(data class)?对数据的存储有什么影响? 10 2.2.3 SAP中有几种,他们的区别是什么? 10 2.2.4什么是簇(cluster table)?举出知道的簇。 10 2.2.5找数据库,有哪些常用的方法。 10 2.2.6如何建立数据库锁对象,激活锁对象产生的Function Module的名字为什么,在何处查看锁的情况? 10 2.2.7更新 FM 分为 V1 和 V2,那么首先会执行哪一种更新类型呢?每种类型又是以哪种模式(异步、同步或本地)执行的呢? 11 2.2.7使用OPEN SQL注意原则 11 2.3 与相关 11 2.3.1 MM模块有哪些常用格 11 2.3.2 HR模块知识:HR里面存储HR主数据主要用到了哪些? 11 2.3.3 HR模块知识:HR程序在开发中常用的两个逻辑数据库是什么?分别对其进行描述 12 2.3.4 HR模块知识:HR模块里面,如何修改HR的信息类型,具体如何实现 12 2.3.5财务模块:财务模块开发中常用的有哪些,简单举例说明: 12 2.3.6 PM 常用的TABLE 12 2.3.6 inner join 与 left-outer join的区别? 13 3. 权限相关 14 3.1 什么是权限对象(Authorization Objects)?在 ABAP 程序中使用哪条语句进行授权检查? 14 3.2 与权限对象有关的事务代码有哪些? 14 4. DIALOG 15 4.1 DIALOG 中的几个事件 15 4.2 何在TABLE CONTROL中实现选中一行或多行的效果 15 4.3 DIALOG 开发的常用几个控件是什么? 15 5. BDC 16 5.1 BDC录屏的事务代码 16 5.2 BDC与BAPI之间的区别 16 5.3 BDC录屏的注意事项 16 5.4谈谈BDC的运行模式和更新模式 16 6. 增强 17 6.1什么叫增强?有哪些方式进行增强? 17 6.1.1 User EXIT 17 6.1.2 Customer exit 17 6.1.3 BADI 17 6.1.4 Enhancement Spot 17 6.2如何建立增强? 17 6.3与增强相关的事务代码有哪些 18 6.4如何进行数据库字段的增强?Append和Include的方式有何区别? 18 7. SMARTFORMS 19 7.1谈谈SmartForm中,Template和Table格的区别 19 7.2 SMART FORM如何实现公司LOG打印,其步骤是什么? 19 7.3 smartform 中如何控制段落、单个字符输出格式? 19 8. RFC和 BAPI 20 8.1 RFC 20 8.1.1什么是RFC,有哪些通信模式? 20 8.1.2 RFC中涉及到常用的事务代码有哪些? 20 8.1.3根据调用方式的不同,RFC接口提供了什么样的服务? 20 8.1.4 RFC接口的具体功能包括哪些? 20 8.1.5在通过CALL FUNCTION语句进行远程功能调用的基本模式有哪些 20 8.1.6怎么创建一个支持远程调用的RFC 21 8.1.7怎么调用一个SAP标准RFC 21 8.1.8怎样建立RFC程序?RFC程序传递的参数都是传递值还是引用?如何建立函数组? 21 8.1.9怎么来维护这个DESTINATION(远程目标) 21 8.2 BAPI 21 8.2.1什么是BAPI?你使用过哪些BAPI实现什么功能? 21 8.2.2什么是业务对象类型?它包含哪些主件? 21 8.2.3如何创建一个BAPI? 22 8.2.4编写BAPI的注意事项有哪些? 22 8.2.5谈谈与BAPI相关的事务代码。 22 8.3 RFC 和BAPI的相同之处和不同之处 22 8.3.1 RFC和BAPI的区别? 22 9.其他 23 9.1 基础知识 23 9.1.1 CHECK、EXIT、RETURN命令的区别? 23 9.1.2初始化内有几种方式? 23 9.1.3 一个程序如何调用另外一个程序 24 9.1.4 在一个程序中如何调用其他事物代码 24 9.1.5在进行画面跳转时,CALL SCREEN与LEAVE TO SCREEN的区别? 24 9.1.6 LOOP 循环和系统字段? 24 9.1.7 MESSAGE消息有哪些类型,含义?如何自定义MESSAGE消息类? 24 9.1.8 ABAP中,如何自定义异常类?如何捕捉异常? 24 9.1.9什么是事物变式?事务变式有什么用? 25 9.1.10 RANGE 25 9.1.11对于FIELD SYMBOL赋值将使用 25 9.1.12 Perform 调用子程序时,using ,tables,changing 3个参数分别有什么影响? 25 9.1.13如何在程序间传送数据? 25 9.2 延伸 26 9.2.1自定义搜索帮助有几种方式?如何实现 26 9.2.2怎么创建number range 26 9.2.3 function module中,如何给出错误消息? 26 9.2.4如何优化ABAP程序? 26 9.2.5前导零的处理方式 27 9.2.6 程序事件和系统事件 27 9.2.7如何建立一个外部数据库的连接 27 9.2.8怎样从文件服务器上读取文件?和写文件到文件服务器上? 27 9.2.9 SAP 包括哪些传输技术 27 9.2.10如何将内数据转换成一个XML文件? 28 9.2.11怎么导出一个WSDL文件? 28 9.2.12怎么导入一个WSDL文件? 28 9.2.13创建后台程序的TCODE是什么,如何在程序里面调用后台程序 28 9.2.14 webservice 28 9.2.15什么叫BTE (Business Transaction Event),BTE的两种类型? 28 9.2.16现阶段接口开发使用的技术 29 9.2.17将一个RFM(Remote-Enabled Module)创建一个WEB SERVICE都有什么相关的事务代码? 29 9.2.18 esb使用 29 10.常用T-CODE 30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李威威wiwi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值