ABAP 面试问题及答案(一):数据库更新及更改 SAP Standard (转)

最近在准备面试,在网上找了一份英文文档: ABAP 面试问题及答案。该文档的英文原标题为: SAP ABAP Interview Questions, Answers, and Explanations: ABAP Certification Review,作者为 Barry Fewer。
现将其翻译出来,权当在做笔记。
PS,实际上,就我经过的几次面试看,没有问得这么详细的。就把这当作是学习笔记吧,这些细节对平时的开发也非常有用。

问题一:锁对象(Lock Object)和 FM(Function Module)
激活锁定对象时,产生的 FM 的名字是什么?
答案:首先要在 ABAP 字典中创建锁对象,然后才能在 ABAP 程序中设锁。创建锁对象时,系统会自动生成两个 FM 来进行锁管理。
用于设锁的 FM 为: ENQUEUE_。它用于在锁表(Lock Table)中生成一个锁项(Lock Entry)。若设锁不成功的话,就会在 Return 中反映出来。

用于释放锁的 FM 为:DEQUEUE_。它用于从锁表中删除一个锁项。

在 ABAP 程序中,只需使用 "CALL FUNCITION ..." 语句就可以调用它们。

这两个锁 FM 是在 SAP 系统的一个特殊工作进程中执行的,专门进行锁管理。它运行在一个单独的服务器上,而该服务器专门用于维护整个 SAP 系统的主锁表(Central Locak Table)。

有两种锁类型:

共享锁——只读锁,一个用户正在读数据时,阻止其他用户更改该数据。

独占锁——可写锁,一个用户正在修改数据时,阻止其他用户更改该数据。

问题二:更新方面的 FM

更新 FM 分为 V1 和 V2,那么首先会执行哪一种更新类型呢?每种类型又是以哪种模式(异步、同步或本地)执行的呢?

答案:V1 更新类型比 V2 更新类型的优先级高,因此,V1 比 V2 行执行。V1 的执行模式可以为异步、同步或本地;V2 只能为异步执行。

问题三:ABAP 内存(ABAP Memory)交换

在使用 ABAP 内存的程序间进行数据交换时用到的两个语句是什么?

答案:EXPORT to MEMORY ID 用于将数据复制到 ABAP 内存,IMPORT from MEMORY ID 用于将数据从 ABAP 内存复制到程序中。

在 ABAP 内存间进行交换的数据必须在两个程序中都进行声明,并包含同样的数据声明。

问题四:授权对象(Authorization Objects)
什么是授权对象?在 ABAP 程序中使用哪条语句进行授权检查?
答案:授权对象由一组字段组成,这些字段中的值将被用于进行授权检查。ABAP 程序中使用 AUTHORITY-CHECK 语句根据授权对象进行授权检查。在 AUTHORITY-CHECK 语句中,必须指明授权对象的所有字段,但有一个例外,可以用 DUMMY 关键字来绕过某个字段的检查。
一个授权对象中最多可以定义 10 个字段。

问题五:修改(Modifications)
在 SAP 系统中是怎样定义"修改"的?它们对更新(upgrade)有怎样的影响?
答案:修改是指用户对 SAP 发布的库对象(Repository Object)进行的更改。
必须在更新期间对修改进行评审(Review),来决定是否应该使用新的 SAP 对象,以及将来使用时是否需要进一步修改该对象。

问题六:修改助手(Modification Assistant)
什么是修改助手?
答案:修改助手是 4.5 版中引入的一个工具,用于简化更新过程。可以通过 ABAP 编辑器触发修改助手,它会记录对系统进行的修改。修改助手支持通过 ABAP 编辑器、Screen Painter、Menu Painter、文本元素维护、Function Builder 和 ABAP 字典进行的修改。
问题七:功能模块出口(Function Module Exit)
实现功能模块出口时 SAP 应用程序中应使用哪条语句?
答案:某些 SAP 应用程序中存在功能模块出口,它使用户能够向 SAP 程序中添加一些功能。通过搜索 "CALL CUSTOMER" 可以发现是否存在功能模块出口。

问题八:事务变式(Transaction Variants)
什么是事务变式?为何要使用它?
答案:事务变式是一组屏幕变式,用于预定义屏幕行为和默认值。通过使用变式功能,可以将用户不需要的字段、子屏幕及全屏幕从用户视图中取消。可以给任何输入字段设置默认值,字段也可以不用带 "Ready for Input" 状态。
只能为对话和报表事务创建事务变式;变式中只能包含普通屏幕、子屏幕及对话屏幕。
开发人员可以使用 GuiXT 脚本语言通过事务变式维护对屏幕进行修改。修改屏幕布局的方式有:插入按钮、值帮助(Value Helps)、移动对象、插入屏幕等等。

问题九:更改 SAP (Changing SAP)
请列出用户修改 SAP 标准功能的不同方式。
答案:SAP Standard 可以通过 Personalization、Customizing、Modifications、Enhancements 及自定义 ABAP 程序进行更改。这些方式的示例如下:
Personalization——Personalization 技术包含创建变式、设置/获取参数及活动组(Activity Groups)。
Customizing ——是最常用的使用 SAP 工具(如 R/3 Reference Model and Implementation Guide)更改 SAP Standard 的方式。可以认为 Customizing 是实施 R/3 所必需的,通常由 Functional Team 来执行。
Enhancements——常由开发 Team 执行,包含的活动有:字典增强、Funciton Module Exits、菜单和屏幕出口及 Business Add-ins (BADI)。

自定义 ABAP 程序——可以与 SAP 对象或自定义开发的对象一起工作。
Modifications——不建议对 SAP 对象使用 Modifications。使用 SSCR (SAP Software Change Registration)注册所有对 SAP 对象的手动修改。

问题十:添加字段
向 SAP 表中添加字段的方法是哪两种?
答案:这两种方法是:Append 结构(Append Structure)和自定义 Include(Customizing Include)。Append 结构是在向表尾添加字段时创建的,自定义 Include 由 SAP 开发人员指定,以使用户可以创建新字段。

问题十一:什么是 BADI?
答案:BADI 是 Business Add-in 的缩写。它是一种新的功能增强概念,使用 ABAP 对象技术。这是一种使用面向对象的方法来进行 SAP 增强。实现 BADI 要用到类、接口及方法等面向对象的概念。
要对一个 SAP 应用程序进行增强,必须首先定义 BADI。为 BADI 创建一个接口,接着创建一个适配器类(Adapter Class)来实现这个接口, 然后创建这个适配器类的实例。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1752173

时间: 2024-09-22 14:10:05

ABAP 面试问题及答案(一):数据库更新及更改 SAP Standard (转)的相关文章

给linux用户的11个高级MySQL数据库面试问题和答案

给linux用户的11个高级MySQL数据库面试问题和答案 我们已经发表了两篇MySQL的文章,非常感谢Tecmint社区的大力支持.这是MySQL面试系列的第三篇文章,并且在面试专栏中排第16. 15个 MySQL 基础面试题,DBA 们准备好了吗? 给中级人员的10个MySQL面试问题 11个MySQL面试问题 因为有大家的支持,我们才能做到现在,感谢你们这一路上对我们的支持.在这篇文章中,我们将主要针对MySQL的实用技巧,讲讲面试中相关的问题. 1. 如何使用SELECT语句找到你正在运

app-手机本地数据库更新问题

问题描述 手机本地数据库更新问题 求问,做一个手机app,网站向手机传数据,数据需更新,给我个提示我在决定是否更新,采用什么方法做这个. 解决方案 iOS app更新数据库数据迁移问题关于数据库view更新的问题从数据库丢失更新想到的一些问题

求一个面试算法题答案。

问题描述 求一个面试算法题答案. 已知函数f()以相同的概率返回0或者1,求一个函数g()以相同的概率返回0-7之间的任意一个数字. 解决方案 其实这个题不难,可以考虑用2进制的方式来做.g(){return 4*f()+2*f()+f();} 希望能帮到你. 解决方案二: #includeint g(){srand(time(NULL));ret = rand()%8;return ret;}

Android 通过ContentProvider数据库更新UI

这篇用到的知识点有几个:SQLiteOpenHelper,Cursor,CursorAdapter,ContentProvider,ContentObserver 对于数据库的操控一般都是用SQLiteOpenHelper,创建该类实例,可以得到一个SQLiteDatabase,而实际上操作数据库用的还是这个. (一)我们先看下SQLiteOpenHelper这个类的实例 package com.bvin.study.observer; import android.content.Contex

net-为什么EF从数据库更新模型更新不上去

问题描述 为什么EF从数据库更新模型更新不上去 3C 我EF映射里面缺了一张视图,我的数据库是有这张表的,所以我就更新ExamEvalModel.edmx,但是更新完成之后还是没有,请问为什么? 解决方案 更新视图怎么做的,选择从数据库更新模型,在第一个对话框勾选视图.

ASP.NET MVC服务器数据库更新问题

问题描述 之前一直用webform开发,最近项目升级到了ASP.NETMVC,本地开发的时候数据库更新用的codefirst方法进行更新的.现在项目做得差不多了,可以发布到服务器了,不过有一个困扰,希望各个大牛帮忙解答一下:1.项目发布到服务器之后,数据库是拷贝本地的数据库到服务器么?2.项目到服务器运行之后,本地开发时如果数据库用codefirst修改了,那么远程服务器的数据库我应该怎么进行同步更新呢?是拷贝新的到服务器,还是手动修改数据库,或者其他什么方法呢?这点一直困扰着小弟,希望各位大牛

图片-oracle数据库更新问题,求大神解决

问题描述 oracle数据库更新问题,求大神解决 如图,t1,t2表,我想通过t2来更新t1的name,试着写了一个 update t1 a set a.name=(select b.name from t2 b where a.id=b.id) 但这样的话,在t2中不存在的id=3的name就会成空,该怎么写呢? 解决方案 update t1 A a set name= ( select b.name from t2 B where ID = a.ID ) where exists(selec

gridview中添加dropdownlist后实现数据库更新

问题描述 gridview中添加dropdownlist后实现数据库更新 背景描述:gridview已经通过选择数据源实现了数据绑定,并选择了编辑操作,并在gridview中添加dropdownlist. 目的:点击编辑,然后选择dropdownlist,然后在数据库中更新该row(只需要更新update dropdownlist所选),并在当前gridview中显示最终结果. DropDownList ddl = GridView1.Rows[e.RowIndex].FindControl("

java 数据库更新没反应

问题描述 java 数据库更新没反应 我写了这段代码.为什么数据库那边数据没更新呢. 解决方案 看看这个的写法,http://www.cnblogs.com/hongten/archive/2011/06/19/2084696.html. 解决方案二: 你的查询语句可以查询到数据吗 解决方案三: 事务没有提交吧 解决方案四: 还可以在数据库里追踪看一下,是否有语句执行,执行的是什么 解决方案五: hql里面的冒号... 解决方案六: 你写的是select语句啊,跟 更数据没半毛关系 解决方案七: