面试问题集
- 1. 数据效率?
尽量使用Select(max,min,sum,avg)和select single,for all enteris,二分法,append和collect
loop里不能套select;避免使用select distinct,代替先sort,再delete;
① 抽取数据时,避免使用SELECT *, 尽量使用SELECT A B INTO TABLE ITAB这样的语句。
② 不要使用SELECT...ENDSELECT语句。
③ 尽量避免在LOOP中访问数据库。可以在之前先把数据取到内表,在LOOP中用READ TABLE WITH KEY ... BINARY SEARCH.进行读取对应的数据。
④ 用SORT代替ORDER BY。
⑤ 使用二分查找法。READ TABLE的之前使用SORT TABLE BY对内表进行排序, 然后使用READ TABLE WITH KEY ...BINARY SEARCH.
⑥ 避免使用SELECT DISTINCT语句。在抽取数据到内表后用DELETE ADJACENT DUPLICATES语句来消除重复行。
⑦ 尽量多指定WHERE语句条件。
⑧ 在WHERE语句指定查询条件时,在同等条件下把包含等号的查询条件放到前边。
- 2. 什么时候使用For all entries命令及其使用时的注意事项?
当需要在LOOP中使用查询语句时,一般使用For all entries。
注意事项:
① IN条件所在的内表不能为空(如为空将取出全部的数据);
② 数据库字段与内表中的关联比较字段必须具有相同的类型和长度,且不能在比较中使用操作符LIKE、BETWEEN和IN,同时不能使用ORDER BY子句。
③ 为避免删除并不重复的纪录,在定义内表时应尽可能多的指定关键字。
- 3. 如何设置ALV的鼠标双击事件。如何设置ALV的页眉和页脚?
ALV的鼠标双击事件:构造LS_LAYOUT的F2CODE属性设置为”&ETA”即可。
ALV的页眉:利用Function“REUSE_ALV_COMMENTARY_WRITE”来进行设置。
- 4. FTP文件上传,下载,在哪句中需要做异常捕获?
- 5. SQL性能举例?
① 对同一数据库表存取的场合,能一次把多条记录放到内表中进行处理,不要多次反复存取;
② 只选择必要的字段,应避免使用”SELECT *”;
③ 在WHERE语句指定查询条件时,要写全查询条件;
④ 在WHERE语句指定查询条件时,应把包含数据库关键字段的条件列在前边。
⑤ 在WHERE语句指定查询条件时,在同等条件下把包含等号的查询条件放到前边。
- 6. 怎样理解Dynpro的PAI,PBO事件?
Dynpro程序运行时,首先触发PBO事件,然后显示Dynpro画面,当在Dynpro画面触发一个功能键时,这时会触发PAI事件,当PAI事件执行完毕,重新显示Dynpro画面时又将执行PBO事件。当不断触发功能键时,PBO和PAI事件会不断交替执行。
pov poh
- 7. 按顺序举例说明Report各事件及其作用?
① LOAD-OF-PROGRAM 程序执行时,自动触发该EVENT
② INITIALIZTION 对程序变量进行初始化
③ AT SELECTION-SCREEN OUTPUT 选择屏幕PBO事件,显示选择屏幕之前触发
④ AT SELECTION-SCREEN 选择屏幕PAI事件,用户在选择屏幕上执行某些功能
⑤ START-OF-SELECTION 选择开始事件
⑥ END-OF-SELECTION 选择结束事件,一般在该事件中输出列表
⑦ TOP-OF-PAGE 页眉控制
⑧ END-OF-PAGE 页角控制
⑨ AT LINE-SELECTION 行选择控制,用户选择某列表行时触发
⑩ AT USER-COMMAND 用户交互控制,用户选择某个GUI功能时触发
- 8. 能否自行创建SD、MM、FI模块相关数据并说明其过程?
- 9. 是否使用过Query,说明其创建过程?用到过哪些T-CODE?meng
- 10. BDC执行出错时,为查看设置错误处,显示模式应怎样设置,A、E、N分别代表什么含义?
显示模式DISMODE应设置为“A”或“E”。
A:代表无论出错与否每个画面都显示;
E:只是在出错时显示;
N:代表无论出错与否每个画面都不显示。
- 11. 是否做过数据库表维护?meng
- 12. 删除内表重复数据前应该做什么,如果要按照给定字段如何删除?meng
应该对内表进行排序。
- 13. Job管理?
- 14. SAP有哪些外部接口及其内容?
RFC,BAPI,IDOC。
RFC :RFC是SAP系统和其他(SAP或非SAP)系统间的一个重要而常用的双向接口技术,也被视为SAP与外部通信的基本协议。简单地说,RFC过程就是系统调用当前系统外的程序模块,从而实现某个功能,而且调用系统和被调用系统中至少有一个必须是SAP ABAP系统。这种远程功能调用也可在同一系统内部进行(如本地SAP系统内的远程调用);但通常情况下,调用程序和被调用程序处于不同系统。
BAPI:BAPI全称Business Application Programming Interfaces,即业务应用编成接口,在SAP内部组件及SAP与非SAP组件之间的技术整合和业务数据交换过程中起着非常重要的作用。(BAPI是基于RFC实现的)
IDOC:IDOC是SAP系统之间或SAP系统与外部系统之间电子数据交换的标准数据格式。在事务处理过程中,随时会生成IDOC。
- 15. 在什么时候触发Top of page语句?
在3种情况下可以触发Top of page语句。
① 遇到第一个WRITE语句时;
② 当页面行数超过LINE-COUNT里定义的行数时;
③ 遇到NEW-PAGE命令时。
- 16. 本地文件上传成CSV文件 的function?
- 17. Hash table 和Sort table的注意事项?
Hashed表的除了数字字段以外,其余字段必须指定为key字段,不能使用APPEND语句,Sort 为non-unique时不能使用INSERT语句。
- Report的跳转语句是什么?pick 是什么?怎么用?
Report的跳转语句是“HIDE和AT LINE-SELECTION”。 “pick”是在Report一览画面双击或按F2键时触发的功能键键值。
- 19. FTP文件的上传下载操作是什么?
FTP程序大致流程为: FTP_CONNECT ,FTP_COMMAND ,FTP_DISCONNECT。
FTP_COMMAND 中输入标准的FTP命令。如:更改 FTP 目录 "cd dir", 更改本地目录 "lcd localdir",上传文件"put file"。
FTP_CONNECT – 打开并登陆FTP服务器的连接。
FTP_COMMAND – 在FTP服务器上执行一个命令。
FTP_DISCONNECT –关闭指向FTP服务器的连接。
- 20. 加锁,解锁的2种方式是什么?
加锁的2种方式:
①E模式。同一个terminal session的不同external session之间不受上锁的影响,可以使用锁住的对象;
②X模式。上锁的对象只能由external session中的一个internal session使用。
- 21. MM、PP、SD、FI、HR模块的主要流程,MM、PP、SD、FI、HR模块主要数据库表?
MM模块的主要流程:
① 接到客户的采购订单后,由营业员进行库存确认,如果库存不足则由其提出采购申请。
② 购买担任者接到采购申请经审查合格后,向供应商下达采购订单。
③ 入库等相关管理人员对供应商送达的商品进行入库确认。
④ 由购担任者对供应商提出支付请求进行确认,经确认无误后,向财务部门提出支付申请,财务部门对支付申请进行审核合格后,进行支付处理。
SD模块的主要流程:
① 销售担任者接到客户寻价后,在系统中登录客户的寻价信息。
② 相关人员对登录的寻价信息进行价格确认,并在系统中登录报价信息。
③ 客户对收到的报价信息审核合格后,提出采购申请。销售担任者接到采购申请后,在系统中登录采购订单。
④ 相关人员对客户所订购的商品进行筹措完毕后,进行出库处理,并在系统中登录出库单。
⑤ 相关人员向客户提出支付请求,客户支付后,给客户出具红头发票,在系统中登录开票信息。
- 22. update,delete数据库时的注意事项?
① 正确指定数据库表的KEY字段,防止更改了不应更改的记录,同时要正确指定要更改纪录的中需要变更的字段;
② 要注意保持关联表的数据一致性;
③ 变更前要注意上锁,变更后要注意解锁。
- 23. 怎样做带按钮的选择画面?
① TABLES SSCRFIELDS.
② SELECTION-SCREEN PUSHBUTTON /[/]<pos(len)> <name> <ucom> [MODIF ID <key>].
③ INITIALIZATION.
MOVE 'My text' TO <name>.
④ AT SELECTION-SCREEN.
⑤ IF SSCRFIELDS-UCOMM = <ucom>.
ENDIF.
上述代码的描述:
① 定义构造SSCRFIELDS;
② 使用命令Selection-screen pushbutton定义Push Button;
③ 在事件Initialization中定义pushbutton的文本;
④ 在事件 At Selection-Screen中定义pushbutton按下后,所执行的处理。
- 24. 求和函数(Collect)的注意事项?
① 要填充没有重复条目的内表,应该使用COLLECT
② COLLECT语句无法用于带深层结构的内表(组件中不可以包含内表)。
③ 为COLLECT指定的工作区域必须与内表的行类型兼容,(不仅仅是可互相转换)。
④ 所有的非表关键字段必须是数字类型。
- 25. 举例说明MM、SD、FI、PP模块的主要t-code?
MM模块的主要t-code:
MMBE 库存总览
ME51N 采购申请
ME21N 采购订单
MIGO 收货
MIRO 后勤发票校验
SD模块的主要t-code:
VA11 询价
VA21 报价
VA01 销售订单
VL01N 出库
VF01 开具发票
FI模块的主要t-code:
总账:
FS00 创建科目
F.10 查看会计科目表
F.01 查看会计科目余额表
FB50 制总账凭证
FB08 冲销凭证
FS10N 科目余额查询
FBV0 成批过账
FBV3 显示预制凭证
OBR2 删除会计科目
KOB1查看订单明细
KB31 统计指标赋值
F-04 过账并清账
FAGL_FC_VAL外币评估
FB70 输入客户发票(员工借款)
F-22 输入客户发票
F-30 过账并清账(客户)
F-53 付款记账
F-42 输入结转过账
F-43 输入供应商发票
F-51 过账并清账(供应商)
应付会计:
FB01 输入凭证分录
F-53 银行付款清账(支付货款、银兑到期付款、信用证到期付款)
F-51 带清账的转账业务(如需调整的业务或凭证、退回客户多付货款、上线前的发票校验)
F-48 预付定金
F-43输入供应商发票(不通过采购订单形成的应付账款)
F-42 不带清账的转账业务(如需进期初差异的发票校验)
F-40 应付票据清账
F-57 开立信用证、信用证到期冲销
F-32 应收票据背书清应付账款
F-44 供应商预付与应付账款对冲
FB50付银兑保证金、信用证保证金、支票重开、电汇退回重付
FB03 显示凭证
FB08冲销未清账凭证
FBRA 冲销已清账凭证
MIRO 后勤发票校验
MR8M 冲销发票
FK10N 查供应商余额
FBL1N 供应商行项目显示
F.42供应商明细账显示
应收会计:
F -21 预收银兑
F-28 收款、银兑到期托收
F-29预收款
F-30 银兑清账
F-32 应收预收清账
FB50 总账科目过账
FB70 手工开发票
FB75手工开贷方发票(红字)
资产会计
AR01 调用资产清单
AS01资产主数据创建
ABZON 资产购置-损赠等、增值
F-90 资产购置
ABGL资产减值(本年)
ABGF 资产减值(上年)
AIAB 在建工程资本化
ABAVN资产报废
AS93显示遗产数据
信贷管理
FD32 信用风险、例外信用额度的建立及信用时间的控制,另取消信贷也在此处理
FD33 查询信用风险、例外信用额度及信用时间
VKM1在信贷额度之内取消销售订单
F-49 制作在途资金虑拟凭证
FB08在途资金到账后冲销制作的在途资金虑拟凭证
VK13 查看冻结销售订单的单价、金额
FBL5N 客户行项目显示
FBL3N 总账科目行项目显示
F.23 查询以本币计的客户余额
VA05 出具发票凭证清单
FD10N 客户余额显示
开票员
FB03查看凭证
VF01开具发票
VF02修改发票
VF03 查看发票
VF04 查看已发货未开票清单
VL03N 查看交货单
F-22 客户发票(一般)
FB75 客户贷项发票
FB08 冲销凭证
FD03查看客户主数据
FB70 客户发票
VA03 查看销售订单
VF05 查看销售订单清单
MB51 查看物料移动记录
VK13 查看定价
PP模块的主要t-code:
CS01 创建BOM
CS07 将BOM分配给工厂
CR01 创建工作中心
CA01 创建工艺路线
MD61 创建独立需求计划
MD05 显示MRP清单
MD04 库存需求订单
MD02 运行物料需求计划
COOIS 显示生产订单清单
CO02 更改生产订单(下达生产订单)
MD42 对成品的生产计划
PM模块的主要t-code:
CO01 创建生产订单
CO11N 工序确认(生产订单确认)
(MPS是确定每一具体的最终产品在每一具体时间段内生产数量的计划)
- 26. SAP R/3包含哪些模块?
FInancial management (FI,财务会计)
COst management and controlling(CO,管理会计)
Material Management (MM,物料管理)
Production Planning (PP,生产计划和控制)
Sales and Distribution (SD,销售和分销)
Production Planning (PP,工程/项目管理)
Quality Management (QM,质量管理)
Project Management (PM,工厂维护与管理)
Human Resource (HR,人力资源)
Enterprise Control (EC,企业控制)
Treasury (TR,财务管理)
Investment Management (IM,投资管理)
- 27. 什么是batchinput(bdc)并简单介绍其流程?BDC调查有哪些方式?BDC有几种,分别是什么?
流程:
① 进行BDC调查(使用事务SHDB);
② 提炼数据;
③ 把提炼的数据转换到内表‘BDCDATA’中;
④ 调用call transaction把数据导入系统。
BDC类型:
① 通过call transaction形式执行;
② 通过session方式形式执行,如果session执行成功,数据将被传送成功。
BDC调查方式:
① 使用事务SHDB调查;
② 把光标置到需要调查的事务的项目上:通过按F1键→技术设定→项目名来进行调查。
29. 请列举abap程序的运行方式?它们一般表现为什么类型的程序?
① 可以分配事务代码并通过事务代码运行,用于完成一项系统功能,可以添加到最终用户的系统定制菜单中。可执行程序(report),模块池程序。
② 不能直接通过事务代码运行的程序。 功能组,ABAP类库,ABAP接口库,子程序,类型组包含程序。
30. alv是什么,能简单介绍一下alv的作用吗?
ALV 是abap list view.是ABAP的报表显示工具。它把内表中的内容以设定的格式,显示出来,附加一些功能,如下载为本地文件等。
31.下拉式报表(下钻式报表)做过吗,介绍一下下拉列表多用到的技术?
Hide,
at line-selection定义用户双击列表某行时触发的事件,
at user-command定义用户按下某按钮,菜单项或输入命令后触发的事件,
at PF<n>用户按下功能代码,(p307 BCDWBDIC.HLP)
32. sap文件操作都有哪几种?分别有什么操作?版本有什么限制?
顺次文件(服务器文件)
本地文件(客户端文件)
顺次文件的操作包括:打开,读取,写入,关闭,删除
本地文件的操作:
4、7版本
GUI_DOWNLOAD
GUI_UPLOAD
4、6版本以前的,性能不好。
WS_DOWNLOAD
WS_UPLOAD
DOWNLOAD
UPLOAD
33. dynpro程序结构以及运行机制,介绍一下。
逻辑上分为PBO,PAI以及POV,POH
建立程序时物理上TOP,O01,I01,F01.
运行机制:T-CODE->PBO->PAI……………
34. 如果bdc出错时我们应该如何处理?
可以设置“E”模式。有报错可输入修正数据。
如果不想马上转前台,用 insert_group 插入一个session。
35. 如果我们想把一个batch的程序定义为零点开始启动应该怎么做?
在sm36下,通过给出job名称,job类,和job steps创建一个后台job。
36. alv的处理需要2小时或者更长的时间才能显示出来,应该怎么处理?
① 把标准表改称sorted表或hash表;
② 检查取数逻辑,特别是数据库取数逻辑是否有影响效率的地方而加以改进;
③ 判断在选择画面上增加查询条件;
37. 如果发现报表性能问题,应如何去处理?
首先要检查代码,检查代码是不是有误,看看能不能进行常做的代码优化。查找耗费资源的原因。
如果是数据太多,可以增加筛选数据的条件,如在画面上增加查询条件。
se30定位错误。有一个运行分析图示,找到瓶颈:是数据库操作还是代码运行的问题。如果是代码运行的时间较长,把标准内表类型改成sorted或者hash的内表
38. 经常暴露的性能问题一般体现的什么语句上,举例说明?
Select和select single,for all enteris,二分法,append和collect,loop里不能套select,where条件,避免使用select distinct,代替先sort,delete。
39. sorted内表在使用时,有什么注意的地方?read时可否删除内表的记录?
不能删除。
40. 在什么情况下要用for all entries,用应该注意什么?
类似外连接的时候,用一个表的某一字段为条件,从另一数据库中表的数据。
Loop套select的时候用,2个表,for all entries。
for all entries,用它应该注意什么:
使用前要检查内表是否为空,否则会查询出全部数据。
要尽可能多的用关键字,否则会把重复的删掉。
41. 打印报表时,想实现直接打印不显示在屏幕上应如何处理?
可以通过new-page print on 语句,将生成的列表直接发送到spool,系统进行打印处理,不再屏幕中进行显示。在write语句之前,打印函数之后。
42. 解释一下pbo pai pov poh?
PBO:Process Before Output(显示前处理过程)
在向用户显示屏幕GUI之前进行触发,一般作画面初始化和设定status,title,动态设定画面属性,清空变量
PAI:Process After Input(输入后处理过程) 在用户进行某些屏幕行为后触发,对应一些用户操作,画面check。
POV:Process On Value-request对应功能键F4用户对画面上某个字段按F4,类似检索help值table
POH:Process On Help-request对应功能键F1
43. 在dynpro想实现双击,取出对应屏幕上的字段的名字的值,如何处理?
44. dynpro的动态属性,有哪些举例说明?
NAME屏幕字段名称
GROUP1,2,3,4, 屏幕字段属于哪个组
ACTIVE 1可用,0不可用
REQUIRED 1必入力,0非必入力
INPUT1可入力,0不可入力
OUTPUT1可显示,0不可显示
INTENSIFIED1强调显示,0非强调显示
INVISIBLE1为*,0为输入即可见
LENGTH字段输出长度
DISPLAY_3D以三维框架显示字段
VALUE_HELP 有查询帮助的字段
45. 在pov中,如果数据的选择条件为屏幕上的值的时候如何处理?
46. dynpro逻辑块中,field的作用是什么?
进行字段输入检查。(防止所有控件都变灰)
47. 列举abap数据字典中的对象及作用?三层结构?
数据字典中的对象:
① Tables
② Views
③ Data elements
④ Structure
⑤ Domains
⑥ Search Helps
⑦ Local Objects
三层结构:Domains、Data elements、Tables(Views)。
48. Function所涉及到的参数及其作用
Se37功能组添加FM
Attribute:设定功能模块类型,名称等通用属性
Import:定义输入参数,从程序传递到功能模块。
Export:定义输出参数,从功能模块传递到程序中的参数
Tables:定义内表参数,将内表整体输入输出
Exceptions:定义可能出现的异常
Changing:定义输入输出参数。
49. 使用Call transaction进行BDC处理时,定义项目名、实行参数、处理结果的构造分别是什么,bdc table所用的构造包含哪些字段?
项目名构造:BDCDDATA。
实行参数构造:CTU_PARAMS。
处理结果构造:BDCMSGCOLL。
BDCDATA构造:
FieldNAME | Type | Description |
Program | Char(8) | Program name of Transaction |
Dynpro | Char(4) | Screen number of Transaction |
Dynbegin | Char(1) | Indicator for new Screen |
Fnam | Char (35) | Name of Database Field from Screen |
Fval | Char(80) | Value to Submit to Fied |
50. 在文件处理时,文件中出现乱码,应该从哪方面考虑?
Open dataset in textmode encoding default for output/input
Open dataset 时指定字符编码,使用unicode的系统经常出现这样的问题。
51. 对内表操作collect和append之间的区别,以及collect的用法的考虑是什么?
要逐行填充内表,可以使用APPEND、COLLECT或INSERT语句
Collect用于添加无相同表关键字的内表行
Append可以添加相同表关键字的内表行
Collect命令的限制事项:
①要填充没有重复条目的内表,应该使用COLLECT
② COLLECT语句无法用于带深层结构的内表(组件中不可以包含内表)。
③为COLLECT指定的工作区域必须与内表的行类型兼容,(不仅仅是可互相转换)。
④所有的非表关键字段必须是数字类型。
52. check table和value table各指的是什么?关系怎么样?
如果一个表字段定义了外部关键字,则该表称为外部关键字表,而对应的参照表则称为check table。如果在数据字典中为一个表字段指定了约束表,则其输入帮助可以是该表中的关键字段值列表,或者是约束表中对应自动制定的输入帮助。
53. 在sap F4是人机交互的一种形式,请列举与之相关的技术点?wang
54. 什么是range table ,其作用是什么?
range table是一种特殊的内表,表结构是由4个字段组成,分别是:SIGN、OPTION、LOW和HIGH。
我们可以把某个字段的多个值范围放到该内表中,作为查询条件来使用。
55.什么是选择文本selection-text,其作用是什么?
选择文本是选择画面选择条件的文本,用来显示选择画面个查询条件的内容。
56. 请举例说明client依存,及非依存的概念?
R/3系统将应用分成若干个商业区域,这些分割开来的区域称为集团,每个集团都分配一个数字ID,当用户登录系统时,必须指明要登录的集团ID,跟特定集团相关的就是client依存,跟特定集团无关的,就是非依存。
57. 逻辑数据库是什么?如何创建和使用一个逻辑的数据库?
逻辑数据库是特殊的ABAP/4程序,使开发者不必编码所有的数据库访问。
逻辑数据库将一定数据库表的内容组合在一起。可以将逻辑数据库链接为ABAP/4报表程序的属性。这样,逻辑数据库就可向报表程序提供一组层次结构表格行。该层次结构表格行可从不同数据库表中提取。
创建和使用:
ABAP/4开发工作台包括创建和显示逻辑数据库的便利工具(既可调用事务SLDB,也可选择“工具->ABAP/4开发工作台->开发->编程环境->逻辑数据库”)。要查看逻辑数据库<ldb>的层次结构,请在ABAP/4编辑器的命令区中键入SHOW DATABASE <ldb>。
与逻辑数据库连接的最重要事件是GET(参见《事件和它们的事件关键字》)。
也可在已与逻辑数据库链接的报表程序中使用SELECT语句。
来源:在公司的ABAPhelpWORD文档中找到的。
58. BDC两种处理方式的区别是什么,BDC session如何创建,在程序如何处理?
Session 方式:
① 同步处理。
② 可以传输大量的数据。
③ 处理慢。
④ 生成错误日志。
⑤ Session处理前数据没有被更新,直到Session处理后才被更新。
Call transaction方式:
① 同步或异步处理。
② 可以传输少量数据。
③ 处理速度快。
④ 错误需要明确处理(不生成错误日志)。
⑤ 数据自动更新。
BDC session的创建:
① CALL FUNCTION ‘BDC_OPEN_GROUP’
② CALL FUNCTION ‘BDC_INSERT’
③ CALL FUNCTION ‘BDC_CLOSE’
CALL FUNCTION ‘BDC_OPEN_GROUP’在SE35生成一个session,可以在SE35里手动执行,或在程序里使用命令“SUBMIT RSBDCBTC AND RETURN WITH QUEUE-ID = KEY的ID”来直接执行。
59. 如何运行服务器主机的程序?
60. 在sap中用户增强都有哪些?如何去查找和处理他们?
1.E类:Enhancement exits,即通常所谓的用户出口(User_exit )
用户出口也叫功能出口(Function Exit)。
使用T-code:SE37搜索EXIT*,找到的函数大都是做系统预留的出口函数,前面说过,用户出口是标准程序留给用户的接口,标准程序通常不允许用户任意修改,如果修改需要申请Access Key,而且修改标准程序可能导致的错误ERP公司通常是不负责的。在SAP中,自定义的程序通常以保留字Y或Z开头,因此,出口函数中都预包含了一个Z开头的程序。
2.C类:GUI接口(GUI codes)
3.S类:屏幕增强(Screen Exit)
比如,在建立采购订单,工单和固定资产主数据时,系统都预留屏幕增强,也就是说允许用户自定义用户输入界面并编写相应的输入输出处理程序。
在各类增强中,可能还用户自己定义结构或表格,系统对应类型T类。比如增强MM06E005
允许用户建立两个结构CI_EKKODB和CI_EKPODB。
61.解释一下idoc ,sap对它如何处理配置,使用的?meng
62.sap中img指什么?他有什么作用?
Implementation Guide(IMG)是SAP系统的配置工具,它可按你公司的要求配置SAP系统以适合你公司的要求。有三种类型的IMG,分别是:
SAP Reference IMG,可在这里配置SAP系统的所有功能。
Project IMGs,它基于Rrference IMG,可为某个项目进行单独配置,比如我们可建立一个FI的Project IMGs,方便配置。
Project view IMGs,在Project IMGs里的Project views里设置,在Project IMGs里再建立一个视图,把一些配置选项添加到该视图里。通过这样一层层的分工,就可把Reference IMG里的配置分配给不同的人员进行维护。
我们可为不同版本的SAP系统建立IMG,如4.0x,4.5x。这种IMG叫做版本相关IMG。通过“help”--“Release notes”菜单可显示各个SAP发布版的区别。
我们可用事务码“spro”来进入SAP Reference IMG。使用“spro_admin”进入project IMGs。
操作例子
学习SAP主要学前台操作和后台配置,后者一般通过IMG,事务代码是SPRO(编辑)
(以FI里的GL为例)
调用 SAP 参考 IMG
进行以下步骤来调用 SAP参考 IMG:
1. 在系统菜单上选择工具 客户化,实施方案 显示 SAP 参考-IMG。
IMG结构将显示出来。
2. 将光标置于财务会计上并且选择编辑 扩展或点击加号,以显示财务会
计下的副标题。
“财务会计全局设置”, “总分类帐”
和 “应付帐款和应收帐款”。
3. 将光标置于“财务会计全局设置”,“总分类帐会计”或“应付帐款和应
收帐款”上,进一步扩展树状结构直至发现您所需的配置步骤。
4. 双击文本图标以阅读相关配置步骤的说明,然后点击继续 以进入设置维护。
5. 进行所需配置设置并且将它存盘。
6. 您可点击进入 返回 以回到IMG结构显示中。
63. 在程序中使用逻辑数据库的两种方法?
64.Append与Insert的区别?
前者不能用于Hashed表, 后者不能用于Sorted表的non-unique,Append在表尾插入数据,
Insert在指定位置插入数据。
65. sd的业务数据怎么传递到总帐的?
建发票会产生会计凭证。借应收客户,贷主营收入。
66. 什么叫统驭科目,系统中常见的统驭科目类型有哪些?
统驭科目(reconciliation account) 是用来将明细分类帐附加到总分类帐的一种总帐科目。统驭科目和明细分类帐在过帐业务时同步更新-即行项目明细保持在明细份类帐中,汇总信息则保留在统驭科目中,统驭科目是不能直接过帐的。
在系统中,我们一般把某个客户最经常发生的业务对应的总帐科目设为它的统驭科目。如非特别说明该客户的业务都会自动计入它的统驭科目中去。而一个总帐科目一旦被设为统驭科目,它就只能接收来自明细帐的数据进行汇总,它本身不能直接录入数据。
应收应付和资产相关科目一般设置成统驭科目
67. 系统中常见的移动类型有哪些?t156
通常分几大类:收货 发货 转储 库房调整
\}/M0bP;qd6|$p^7590422收货类:ITPUB个人空间*c7BH!Y4X#U
101 采购订单收货 103 采购订单收货至冻结状态 122 无采购订单退货 161 按退货采购订单退货 131 从生产订单
KXN.UwH
K X D7590422收货ITPUB个人空间
[;W)U!B$E j�W 501 无采购订单收货 511 免费收货
c@O.P9j{b
n)L7590422发货类:ITPUB个人空间
R‑y i3y0v
201 成本中心消耗 261 内部订单消耗 fVVq4r7590422541 委外加工发货ITPUB个人空间 m5K0lpJ 551 库房报损
3f+fx.e&z
IV6T7590422转储类:ITPUB个人空间�Q
V%le"~2p
301 工厂间转储(一步) 311 存储地点间转储 309 编码转换
321-325 库存类为冻结/质检状态的记帐修改 移动ITPUB个人空间{(P~
yn
调整类:ITPUB个人空间ET`xP^
盘赢盘亏 一般控制比较严格0ZD,Z
r^9o$r7590422ITPUB个人空间nB-j W*ab(F
68. 清账的分录是什么?
清账没分录。付款的分录是借银行存款贷应收客户。
69. 没有清账的和已清账的会计凭证存在在哪些表里?
未清客户BSID, 未清供应商BAIK, 未清总帐:BSIS;
已清客户BSAD, 已清供应商BSAK, 已清总帐:BSAS;
70. 现在客户要做一个报表,看某客户某日期欠款额度如何取数?
取bsid该客户该日期前的数据,bsad该客户该日期之后的数据。
72. 什么是IDoc?
IDoc接口应用于SAP系统与其他系统的业务数据交换过程,包含数据结构的定义以及数据的处理逻辑,其中的数据结构即为IDoc(intermediate document)。IDoc是一种系统间通用的数据交换格式,通过IDoc,SAP系统可以和多种外部系统进行数据交换。
73. 创建财务凭证用哪个bapi?
可以用bapi这个事务去查。
BAPI_ACC_GL_POSTING_POST 总帐的借贷(fb01)
BAPI_ACC_DOCUMENT_POST 其他的
74. 如果客户有很多凭证放在excel里,怎么把数据导入系统?
可以先利用Function“ALSM_EXCEL_TO_INTERNAL_TABLE”把excel中的数据导入内表中,编辑完后,再调用BDC或BAPI把数据导入系统。
75. excel中数据的上传下载用什么方式,有函数么?
文件在服务器上用DATASET,在客户端用函数,下载用WS_EXCEL,上传可以用ALSM_EXCEL_TO_
INTERNAL_TABLE。
77. sorted的内表read的时候需要注意什么?
根据SORT KEY来进行BINARY SEARCH 查找。
78 . sorted的内表还能插入和删除么?
语法是允许的,但是规范里不推荐。由于会引起性能问题,因索引重排。
79.什么是smartforms,简述其创建过程?
SMARTFORMS是SAP提供的打印报表的工具。
创建过程:
运行T-CODE SMARTFORMS。
① 在起始画面选择STYLE,进行STYLE的创建。
⑴创建段落书式;
⑵创建文字书式;
⑶有效化STYLE。
② 在起始画面选择FROM,进行FROM的创建。
⑴设置FROM属性;
⑵创建WINDOWS;
⑶创建WINDOWS的标题TEXT;
⑷创建其他TEXT;(可选项)
⑸创建TABLE;(一般都需要创建)
⑹创建TABLE的HEADER;
⑺创建TABLE的HEADER的TEXT;
⑻创建TABLE的主区域;
⑼创建TABLE的主区域的TEXT;
⑽TABLE其它细节设置;
有效化后,点击预览生成一个Function,运行这个Function就可以预览所设置的画面。在程序里运行SMARTFORMS,需要把先前定义的From 名作为Funcition ‘SSF_FUNCTION_MODULE
_NAME’的输入参数,然后把‘SSF_FUNCTION_MODULE_NAME’返回的From名,作为接下来要CALL的Funciton来CALL即可。
80. script的输出类型都知道是么?如标准程序数据的打印输出?
81. alv你们用哪种方式做?
OO(面向对象)和OP(面向过程)。
84. field module和on value-request有什么作用?
在“field module”中可以指定执行module的屏幕字段;
点击入力帮助时触发“process on value-request”事件,可在其对应的module中指定要在入力帮助中显示的数据,及“CALL SCREEN”命令。
85. BOM数据报存在哪两个数据库表中?
STKO(BOM 表头),STPO(BOM 项目)。
86. 做过哪些程序,描述一下其功能?
(这个问题很重要,几乎每次面试都会问到,大家一定要仔细回忆一下,把这个问题回答好。回答的要点应该包括:选择画面有哪些选择条件,到哪些数据库表里取得什么数据,生成什么样的画面和执行了什么功能等。)
87. 怎样开发BAPI?
①定义BAPI的Structure,习惯上以zbapi开头(必须自己创建,因为BAPI释放后,其相应的结构也将被释放);
②创建Function Module ,如果没有Function Group,要先创建Function Group,在SE37内都可完成。另外BAPI的属性应设为RFC(Remote Function Call);
③SWO1创建Business Object;
④BAPI分配给业务对象,并添加相应的API Method,目的让BAPI可以被外部程序调用;
⑤释放,注意要先把对象设置为实施,然后才能释放。
88. LEFT OUTER JOIN 和INNER JOIN有哪些限制条件?
LEFT OUTER JOIN限制条件:
① 在ON附加项中,只能使用“=”操作符,且必须至少有一个条件是对主选择表和结合表中的字段进行比较
② 不能在WHERE子句中对结合数据表中的字段进行条件限定。
INNER JOIN限制条件:
① 不同逻辑条件之间只能通过AND连接;
② 每一个条件中必须包含一个主选择表中的字段。
89. 客户退货需要做哪些处理?
对于客户投诉的另一种解决方法是退货。在系统中有3种处理方案:
第一:标准的退货流程。首先是建立退货凭证,退货凭证可以是针对销售定单或针对发票。当货物实际退回时,仓库参照退货凭证做入库处理,系统自动生成会计分录 借:存货 贷:产品销售成本。如果需要补货,那么做补货的发货处理,系统自动生成会计分录 借:产品销售成本 贷:存货。这种情况不影响开票和实物发票。
第二:如果客户不要补货,而要退回货款,那系统将针对退货开出贷项凭证,并自动生成如下分录: 借:产品销售收入 借:应交税金-增值税-销项 贷:应收帐款-客户明细, 金额为退货部分的售价。同时财务人员手工开具红字发票,金额为原发票金额。再手工根据退货后余额重开发票。将红字发票和重开发票同时作为贷项凭证的原始凭证。
第三:对于不要求补货的退货,我们也可以不建立退货凭证,而直接取消原发票(对应红字发票),退货入库后,再重新开出发票(对应重开的增值税发票)。
90. AT FIRST, AT NEW, AT END OF 有什么区别?
AT FIRST:当前循环内表的第一行,即当第一次循环操作时,系统会执行控制语句块。
AT NEW:如果行组(对象字段及其前面的全部字段)中的任何字段内容不同于上一行,执行语句块中的内容。
AT END OF:如果下一行行组中的任何字段内容不同于上一行,执行语句块中的内容。
91.BDC当中的T-code如何获得?
T-code一般由式样书提供。如需调查,则可以根据要处理的业务需求,到SAP起始画面(登录后显示的第一个画面)的相应目录下进行查找,找到后可以运行相应的T-code(事务),然后查看要登录的数据库表是否已正确登录记录,以此来判断所查找到的T-code是否是所需的。
92. Dynpro中2个画面之间跳转,如何将第一个画面的事务处理与第二个画面的事务一起处理?
ABAP 中的COMMIT有两个自动机制:一个是程序完成,当一个程序运行完了会自动COMMIT(正常或异常),一个是屏幕完成,当一个屏幕出口时也会COMMIT。
由于以上原因,一个SAP LUW里的隐式的DB COMMIT或者改变一般不可以放在不同的屏幕里面来处理,因为那样的话这些步骤不会在一个DB LUW里了,不在一个DB LUW就会导致数据的不一致性,也不符合all or nothing的原则。一般情况,把之前要改变的数据都保存到global的变量里面,到最后一个屏幕来处理这个global的数据,更新数据库
93. 常用的abap开发T-CODE有哪些?
se11:数据字典(显示、编辑、变更)
se12:数据字典(显示)
se16:表显示
se24:Class维护
sm12:查看Lock Object
sm35:Batch Input Session OverView
sm36:定义后台Job
sm37:Simple Job Selection
se37:创建Function
se38:Abap编辑器
se71:From维护
se80:对象导航器
se91:message维护
se93:Transcation维护
shdb:BDC调查
bapi:Bapi调查
swo1:创建Business Object
smartforms:smartforms维护
94. AT NEW、AT END OF指定字段之后的字段将发生怎样的变化?
系统用“****”填充目标区域中所有指定字段后面的关键字段,对于非关键字段将进行初始化,数值则不变。在使用 AT 命令前,应该先对内表进行SORT。
95. commit work 和 rollback的作用是什么?什么时候自动commit?
“commit work”数据库更新提交,“rollback”数据库更新取消。
ABAP 中的COMMIT有两个自动机制:一个是程序完成,当一个程序运行完了会自动COMMIT(正常或异常),一个是屏幕完成,当一个屏幕出口时也会COMMIT。
96. sap memory 和 abap memory的区别?
回答方法1:
SAP Memory的生命周期与用户的终端会话(terminal session)一致。SAP MEMORY在同一个terminal session的不同external session之间共享。可用来存储屏幕输入字段的缺省值。
ABAP Memory也是用户相关的存储变量值的内存空间,它与external session相一致,可以用于external session中的internal session之间传递变量,可以用来传递任何类型的ABAP变量。当用户离开external session时(/I command),相应的内存空间就会被初始化。
通过事务代码调用程序时只有insertion(CALL TRANSACTION)方式才能通过ABAP MEMORY传递变量。
回答方法2:
① 读法和使用方法不同。
Sap内存: set parameter /get parameter
Abap内存:export to memory / import from memory
② 共享范围不同。
Sap内存可以被所有的主session访问,内存数据可以同一个session中不同程序之间或不同session之间。
Abap内存只能在同一个session的不同程序之间共享数据。
③ 作用范围不同。
Sap内存在整个终端session时间内有效。
Abap内存只在一个session时间内存放。
④ 使用一般原则。
Sap内存用于屏幕默认值输入。
Abap内存用于模块之间传递数据。
97.怎样刷新alv页面?
首先找到ALV显示Function的I_CALLBACK_USER_COMMAND参数所对应FROM,然后把FROM所传进来参数的构造SELFIELD的REFRESH参数设置为“X”就可以实现。
98. Domain,data element,table之间的关系,为什么要分三层?
Doman是dataelement的组成元素,dataelement是table的组成元素。
Domain:定义的是表的技术属性,例如:数据类型,数据位数等。Data Element:定义的是表的业务数据属性,例如:各种标签的文本等。SAP通过这种方式把技术属性和业务属性分开来进行定义。
99. 创建数据库表时应注意哪些事项?
① 正确指定表的名称和描述。
② 在属性标签,正确指定表的范畴(类型)、输出类等。
③ 正确指定各字段的data element。
④ 在技术设定里正确指定data class和size category等。
⑤ 正确指定check table。
101. 如何删除table control 中的一条数据?
① 在table control显示用内表中定义一个字段作为选中行的FLG;
② 在PROCESS AFTER INPUT(PAI)中指定MODULE USER_COMMAND_XXX;
③ 在STATUS中设定删除按钮的功能CODE;
④ 在②步创建的MODULE中循环table control显示用内表,当系统变量SY-UCOMM的值跟设定的删除按钮的功能CODE的值相等,且选中行的FLG =‘X’时,删除相应的内表中的记录即可。
102. dynpro中画面调用的几种方式和各自的好处是什么?
①SET SCREEN next_screen_number:为当前屏幕指定后续屏幕,不会自动返回当前屏幕。
②CALL SCREEN screen_number及CALL TRANCTION t-code:挂起当前屏幕序列,进入新屏幕(序列)或事务,在新的屏幕序列中,通过语句LEAVE SCREEN TO SCREEN 0调用的屏幕就能够返回到刮起的屏幕序列上。(返回到原程序)
③LEAVE SCREEN:如果需要未完成当前屏幕控制流就要转入后续屏幕,使用此语句。
④LEAVE TO SCREEN screen_number及LEAVE TO TRANCTION t-code:未完成当前屏幕就要转入后续屏幕,不返回原有程序。
103. table control中call subscreen的作用是什么?
call subscreen的作用是双击table control的表格行时,弹出PUPUP画面。
104. 如何制作生产订单的数据,简述其步骤(所涉及的表有哪些)?
制作生产订单的数据:后勤——生产——看板——环境——生产订单——创建(CO01)
105. 清空内表命令clear和refresh的区别?
当为带表头的内表时,Clear清空的是表头,refresh清空的是表体。当为不带表头的内表时,Clear和refresh都可以清空表体
106. Form perform中using、changing 、using value、 changing value的区别?
USING | USING VALUE | CHANGING | CHANGING VALUE | |
参数传递方式 | 应用传递 | 值传递 | 应用传递 | 值传递 |
值改变与否 | 改变 | 不改变 | 改变 | 当正常结束后改变 |
107. message有哪些类型?
TYPE | 描述 | 是否终止事务 |
A(终止) | 在PUPUP画面显示 | 终止 |
I(信息) | 在PUPUP画面显示 | 不终止 |
E错误) | 在状态栏显示 | 终止 |
W(警告) | 在状态栏显示 | 不终止 |
S(成功) | 在次画面显示 | 不终止 |
X(退出) | 在强制终了画面显示 | 终止 |
108. SELECT SINGLE 和SELECT UP TO 1 ROWS 的区别是什么?
在指定数据库表中所有选择KEY字段(指定查询条件时要用“=”号)时,使用“SELECT SINGLE”;在没有指定数据库表中所有选择KEY字段,且只取一条记录时使用“SELECT UP TO 1 ROWS”,其后要使用语句“ENDSELECT”结束。
109. Table control 怎么计算循环的当前行在内表中的位置?
在 ABAP/4 模块中,使用 SY-STEPL 以查找当前正在处理的屏幕表格行的索引。top_line字段记录的是当前可见的第一行是对应的内表中的第几行,它同SY-STEPL一起获得与当前屏幕表格行相对应的内表行。(IND = top_line + SY-STEPL - 1.)。
SY-STEPL只在LOOP...ENDLOOP处理的范围之内才有意义。
110. Commit语句的用法?什么时候程序自动Commit,跳页的时候自动执行吗?
COMMIT WORK。
ABAP 中的COMMIT有两个自动机制:一个是程序完成,当一个程序运行完了会自动COMMIT(正常或异常),一个是屏幕完成,当一个屏幕出口时也会COMMIT。
由于以上原因,一个SAP LUW里的隐式的DB COMMIT或者改变一般不可以放在不同的屏幕里面来处理,因为那样的话这些步骤不会在一个DB LUW里了,不在一个DB LUW就会导致数据的不一致性,也不符合all or nothing的原则。一般情况,把之前要改变的数据都保存到global的变量里面,到最后一个屏幕来处理这个global的数据,更新数据库。
112.向 SAP 表中添加字段的方法是哪两种?
这两种方法是:Append 结构(Append Structure)和自定义 Include(Customizing Include)。Append 结构是在向表尾添加字段时创建的,自定义 Include 由 SAP 开发人员指定,以使用户可以创建新字段。
113. 簇表和POOL TABLE 的概念?
Pools和Cluster table;他们已经不是各种数据库常规的表了,也不能够被数据库直接访问。只能通过SAP自己的工具来直接访问。
透明表:
每个透明表在数据库中有一个相应的物理表。物理表的名称和数据字典中的逻辑表
定义的名称一致。所有事务和应用数据存贮在透明表中。
结构:
结构在数据库不存在数据记录。结构用于在程序之间或程序与屏幕之间的接口定义。
附加结构:
附加结构定义字段的子集,该字段属于其他表格或结构,但是在修正管理中作为单
独的对象。
存贮表:
存储表可以用来存贮控制数据(例如:屏幕顺序,程序参数或临时数据)。几个存
储表可以组合成一个表库。该表库和数据库中的一物理表库相一致。它包含了各组
合库分派给它的所有记录。
簇KEKEKEY表:
连续的文本如文档之类可以存贮在簇表中。几个簇表可以组合成一个表簇。对这种
表类型,不同表中的几个逻辑行组合到一物理记录。这可以实现一对象接一对象地
存贮或访问,访问簇中的表的一个前提是,至少关键字的一部分必须相符合。几个
簇表存贮在数据库中 一个相应的表里。
114.什么是授权对象?在 ABAP 程序中使用哪条语句进行授权检查?
授权对象由一组字段组成,这些字段中的值将被用于进行授权检查。ABAP 程序中使用 AUTHORITY-CHECK 语句根据授权对象进行授权检查。在 AUTHORITY-CHECK 语句中,必须指明授权对象的所有字段,但有一个例外,可以用 DUMMY 关键字来绕过某个字段的检查。
一个授权对象中最多可以定义 10 个字段。
115. 在使用 ABAP 内存的程序间进行数据交换时用到的两个语句是什么?
EXPORT to MEMORY ID 用于将数据复制到 ABAP 内存,IMPORT from MEMORY ID 用于将数据从 ABAP 内存复制到程序中。
在 ABAP 内存间进行交换的数据必须在两个程序中都进行声明,并包含同样的数据声明。
116. 锁对象(Lock Object)和 FM(Function Module),激活Lock Object时,产生的 FM 的名字是什么?
首先要在 ABAP 字典中创建锁对象,然后才能在 ABAP 程序中设锁。创建锁对象时,系统会自动生成两个 FM 来进行锁管理。
用于设锁的 FM 为: ENQUEUE_<锁对象名>。它用于在锁表(Lock Table)中生成一个锁项(Lock Entry)。若设锁不成功的话,就会在 Return 中反映出来。
用于释放锁的 FM 为:DEQUEUE_<锁对象名>。它用于从锁表中删除一个锁项。在 ABAP 程序中,只需使用 "CALL FUNCITION ..." 语句就可以调用它们。
这两个锁 FM 是在 SAP 系统的一个特殊工作进程中执行的,专门进行锁管理。它运行在一个单独的服务器上,而该服务器专门用于维护整个 SAP 系统的主锁表(Central Lock Table)。
有两种锁类型:
1. 共享锁——只读锁,一个用户正在读数据时,阻止其他用户更改该数据。
2. 独占锁——可写锁,一个用户正在修改数据时,阻止其他用户更改该数据。
117. 更新方面的 FM????????????????????
更新 FM 分为 V1 和 V2,那么首先会执行哪一种更新类型呢?每种类型又是以哪种模式(异步、同步或本地)执行的呢?
V1 更新类型比 V2 更新类型的优先级高,因此,V1 比 V2 行执行。V1 的执行模式可以为异步、同步或本地;V2 只能为异步执行。
118. 什么是 BADI?
BADI 是 Business Add-in 的缩写。它是一种新的功能增强概念,使用 ABAP对象技术。这是一种使用面向对象的方法来进行 SAP 增强。实现 BADI 要用到类、接口及方法等面向对象的概念。
要对一个 SAP 应用程序进行增强,必须首先定义 BADI。为 BADI 创建一个接口,接着创建一个适配器类(Adapter Class)来实现这个接口,
然后创建这个适配器类的实例。