abap面试的例子

来源:互联网 发布:python 多进程 速度 编辑:程序博客网 时间:2024/04/30 01:29

 http://kemiya.net/thread-3395-1-1.html

 

ABAP 面试问题及答案(一)
. E. d9 l7 {3 ?6 ?- u* i$ E
4 ~$ C. F. |. M( CABAP 面试问题及答案(一):数据库更新及更改
' p% H% _( ?8 H) \1 \' f  u  d6 D/ d( }7 q; ?
前言
6 w2 x* j7 f1 M9 I+ H0 Q
: z7 _8 z" |/ f最近在准备面试,在网上找了一份英文文档: ABAP 面试问题及答案。该文档的英文原标题为: SAP ABAP Interview Questions, Answers,and Explanations: ABAP Certification Review,作者为 Barry Fewer。! L4 v; a& v; X9 B, l- f
现将其翻译出来,全当在做笔记。
8 z4 |+ B* p! I& RPS,实际上,就我经过的几次面试看,没有问得这么详细的。就把这当作是学习笔记吧,这些细节对平时的开发也非常有用。* U5 f/ A) J- j2 z1 ^7 I
! l# n7 s: V0 d1 ?

1 Y9 _0 ~( G) `7 K7 q; w$ K9 B) _% j! {! a
% s+ N+ U9 Q1 a( k  o' o" L) z2 e/ N
问题一:锁对象(Lock Object)和FM(Function Module)6 X& b- ^# ?- X& P6 w2 U3 L4 P9 m/ P
激活锁定对象时,产生的 FM 的名字是什么?/ Z' @8 R+ q9 S: J! f: |  D
答案:首先要在 ABAP 字典中创建锁对象,然后才能在 ABAP 程序中设锁。创建锁对象时,系统会自动生成两个 FM 来进行锁管理。
  H5 y3 J: ^7 {1 A
1 D- v6 H$ q7 c) H- b8 V用于设锁的 FM 为: ENQUEUE_<锁对象名>。它用于在锁表(Lock Table)中生成一个锁项(Lock Entry)。若设锁不成功的话,就会在 Return 中反映出来。* b1 t/ y' V; X
6 E$ W6 }. B' v! Z
用于释放锁的 FM 为:DEQUEUE_<锁对象名>。它用于从锁表中删除一个锁项。
. t9 ]6 m, t" D$ G" ^: ]9 Y/ G- u2 ]5 Y, ]3 R9 H  o) m2 Q/ C
在 ABAP 程序中,只需使用 "CALL FUNCITION ..." 语句就可以调用它们。
1 x& L- I4 B1 r* p6 L4 i# n6 H/ @, g5 `( q+ C& @
这两个锁 FM 是在 SAP 系统的一个特殊工作进程中执行的,专门进行锁管理。它运行在一个单独的服务器上,而该服务器专门用于维护整个 SAP 系统的主锁表(Central Locak Table)。5 m: _$ G) Z5 a0 ?

4 D1 a( m" ]; j2 {( d有两种锁类型:) z1 _# D, o7 G$ m7 [7 N- u, F; O5 j" r

" D# N* S7 \1 m共享锁——只读锁,一个用户正在读数据时,阻止其他用户更改该数据。% a* Y% K8 t7 ~5 g/ g; |
) j8 p8 P/ a  T& N2 t/ g  g$ Y& g
独占锁——可写锁,一个用户正在修改数据时,阻止其他用户更改该数据。
7 u7 L# v3 A7 g7 q+ h: O
0 e+ n: Q. I  S$ i. s, I: O) _ & d% v# ]- l; j3 ~; C8 O6 V
5 y' C/ ?! d" N. Z4 X; A  B8 K
问题二:更新方面的 FM) F' s' `; Q4 |2 [# j* [
4 y: e$ I/ i7 p: E+ |+ [6 P6 {
更新 FM 分为 V1 和 V2,那么首先会执行哪一种更新类型呢?每种类型又是以哪种模式(异步、同步或本地)执行的呢?; n( r( n) t5 @# }. f

9 h1 G' i6 A* q答案:V1 更新类型比 V2 更新类型的优先级高,因此,V1 比 V2 行执行。V1 的执行模式可以为异步、同步或本地;V2 只能为异步执行。- D: Q  X7 p3 b
# s4 O7 C5 A1 K

. O- z8 ?+ U- x/ _
* ]; \. n) Y* v  B1 j* q5 z   Q# r7 P3 l: x) b% n& l7 N
问题三:ABAP 内存(ABAP Memory)交换
, l2 `: T2 O$ J  I% i5 e4 c4 H- U1 z2 l) `% [+ _# ]- S# x! v0 W
在使用 ABAP 内存的程序间进行数据交换时用到的两个语句是什么?0 D! S2 L- A" h

5 I8 S  i& J* W# R6 J/ M* |答案:EXPORT to MEMORY ID <id> 用于将数据复制到 ABAP 内存,IMPORT from MEMORYID <id> 用于将数据从 ABAP 内存复制到程序中。
& f& y% T! g3 g4 A8 f" t在 ABAP 内存间进行交换的数据必须在两个程序中都进行声明,并包含同样的数据声明。
% T; h* u4 f' j; o' Z
) l) b# ]* K$ |# h
# C& `2 I0 Z8 r' t7 r) S( {' Y9 C$ Z1 Q. J- L! z; Z  L. \
( ~0 x% w8 {' g, m0 G4 k
问题四:授权对象(Authorization Objects)- E( o2 J. I0 i! H
什么是授权对象?在 ABAP 程序中使用哪条语句进行授权检查?& b7 L& a; T1 j, q
答案:授权对象由一组字段组成,这些字段中的值将被用于进行授权检查。ABAP 程序中使用 AUTHORITY-CHECK 语句根据授权对象进行授权检查。在 AUTHORITY-CHECK 语句中,必须指明授权对象的所有字段,但有一个例外,可以用 DUMMY 关键字来绕过某个字段的检查。& {7 J( v0 a: t& _1 t( J2 l/ ~% _9 @7 l
一个授权对象中最多可以定义 10 个字段。7 c) A$ ?5 m' D  Y, E: ^
& q# T* w8 {3 d8 x8 Z

% c& ]5 g2 G9 g6 f0 O+ I: [8 \9 C6 I4 t
( x1 n* H$ C8 q, e 0 r/ k! ?3 b( E: P$ l
问题五:修改(Modifications)
3 S$ L. \9 o9 F- W( g在 SAP 系统中是怎样定义"修改"的?它们对更新(upgrade)有怎样的影响?
, {4 e3 d. k: l5 C! r% c/ U4 C答案:修改是指用户对 SAP 发布的库对象(Repository Object)进行的更改。* |& p! E/ q$ Y3 O8 ~
必须在更新期间对修改进行评审(Review),来决定是否应该使用新的 SAP 对象,以及将来使用时是否需要进一步修改该对象。" B& W6 ^, Y6 _% ?* m* h2 a

9 j) |) q4 \+ [1 J0 i
6 u; o6 ]9 t3 {5 ^. e
2 p0 q, p* u1 L8 U) Q2 L# ^
0 p- T" t4 d) r( n. X: n问题六:修改助手(Modification Assistant)
+ G" A/ Z9 G5 Z$ |5 O  P' L什么是修改助手?  d6 r) b' u3 H! s0 O% n
9 e* f; \; ^9 r" p. A5 H; H8 e: K( p
答案:修改助手是 4.5 版中引入的一个工具,用于简化更新过程。可以通过 ABAP 编辑器触发修改助手,它会记录对系统进行的修改。修改助手支持通过 ABAP 编辑器、Screen Painter、Menu Painter、文本元素维护、Function Builder 和 ABAP 字典进行的修改。" S5 Z0 w. I" H( a3 I( ?

! u5 S. ^2 M; w% T3 z
/ t& w8 F$ M0 Q6 t# E
) t: ]. f" t: ?# ~* @7 I
) x8 B; Q5 x$ y4 H+ o5 T4 j1 \" {' k/ Q% L/ A# n9 ?- u) ?
问题七:功能模块出口(Function Module Exit)& ~: e# A( `7 v5 H. d$ u$ H8 q
实现功能模块出口时 SAP 应用程序中应使用哪条语句?
* s0 G8 C0 k" d3 j% y& C1 M3 A答案:某些 SAP 应用程序中存在功能模块出口,它使用户能够向 SAP 程序中添加一些功能。通过搜索 "CALLCUSTOMER" 可以发现是否存在功能模块出口。, ]% u0 C5 ?* y* d8 p6 K

; u" l+ V4 X0 n% w/ ]$ w
! W% Y1 A3 H. `5 f0 a3 o* Z  B6 v1 \! r
1 `1 b  u# b; ?: q
问题八:事务变式(Transaction Variants)
* ^* e2 L. d4 y6 ^; O什么是事务变式?为何要使用它?
3 R+ u. C/ C9 c% q1 t8 `9 {答案:事务变式是一组屏幕变式,用于预定义屏幕行为和默认值。通过使用变式功能,可以将用户不需要的字段、子屏幕及全屏幕从用户视图中取消。可以给任何输入字段设置默认值,字段也可以不用带 "Ready forInput" 状态。7 O2 q+ ^8 e9 A0 ]7 z( g& t' M
只能为对话和报表事务创建事务变式;变式中只能包含普通屏幕、子屏幕及对话屏幕。
# R& R& t* R0 R" p9 s1 N开发人员可以使用 GuiXT 脚本语言通过事务变式维护对屏幕进行修改。修改屏幕布局的方式有:插入按钮、值帮助(Value Helps)、移动对象、插入屏幕等等。$ K- z2 h7 R. X8 R& v

9 B, Q, E4 ^6 G8 e1 X! }
9 S( i" {, X* b, I. o7 f& h/ n; I$ U2 _* t) x
( r" U6 E6 K  `
问题九:更改 SAP (Changing SAP)
$ s7 b( t7 l% Q1 V请列出用户修改 SAP 标准功能的不同方式。; R, g' C4 O; r4 D0 Z, ?3 N
答案:SAP Standard 可以通过 Personalization、Customizing、Modifications、Enhancements 及自定义 ABAP 程序进行更改。这些方式的示例如下:
7 N- M* A& c. b" y! CPersonalization——Personalization 技术包含创建变式、设置/获取参数及活动组(Activity Groups)。; K5 \+ n, G3 m5 `2 z
Customizing ——是最常用的使用 SAP 工具(如 R/3 Reference Modeland Implementation Guide)更改 SAP Standard 的方式。可以认为 Customizing 是实施 R/3 所必需的,通常由 Functional Team 来执行。
' r8 u% o' {+ C: G+ FEnhancements——常由开发 Team 执行,包含的活动有:字典增强、Funciton Module Exits、菜单和屏幕出口及 Business Add-ins (BADI)。
2 |* W$ |. h0 P4 p* ^自定义 ABAP 程序——可以与 SAP 对象或自定义开发的对象一起工作。
8 ^: c! M) H% `5 n1 I3 F% oModifications——不建议对 SAP 对象使用 Modifications。使用 SSCR (SAP Software Change Registration)注册所有对 SAP 对象的手动修改。9 R; J7 j' ]5 R' {& T, A7 W

# t$ `! {' T! t : ^+ U" x, Q0 w7 E5 `9 ~
$ B3 i. ]! C3 T. U  ]. q+ ?" o
- _. Q/ c( ]2 }% [' v
问题十:添加字段# p3 J$ B# l8 J# ^9 }
向 SAP 表中添加字段的方法是哪两种?
/ L4 B) b4 [* c' u答案:这两种方法是:Append 结构(Append Structure)和自定义 Include(Customizing Include)。Append 结构是在向表尾添加字段时创建的,自定义 Include 由 SAP 开发人员指定,以使用户可以创建新字段。
' c( M# F. R" {; N; b+ J1 a! ]
! g5 q' C9 h+ a/ A 4 o  B4 \0 t' T
$ [$ X- m. u  K5 B1 E
* \& o  R% f4 C- p! P
问题十一:什么是 BADI?3 r6 K& C, _1 h/ M0 K
答案:BADI 是 Business Add-in 的缩写。它是一种新的功能增强概念,使用 ABAP 对象技术。这是一种使用面向对象的方法来进行 SAP 增强。实现 BADI 要用到类、接口及方法等面向对象的概念。
, |* \( J- d! s0 f3 \3 t/ G6 C要对一个 SAP 应用程序进行增强,必须首先定义 BADI。为 BADI 创建一个接口,接着创建一个适配器类(Adapter Class)来实现这个接口, 然后创建这个适配器类的实例。

 

原创粉丝点击