搜索
您的当前位置:首页正文

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

文件名: 创建人:

审核人:

第1页,共44页 日期: 1/22/2015

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

文件名: 创建人:

审核人:

第2页,共44页 日期: 1/22/2015

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

文件名: 创建人:

审核人:

第3页,共44页 日期: 1/22/2015

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

文件名: 创建人:

审核人:

第4页,共44页 日期: 1/22/2015

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

文件名: 创建人:

审核人:

第5页,共44页 日期: 1/22/2015

1. 报表知识

1.1 基础知识

1.1.1 1.1.1.1

报表事件,有哪些? 过程化事件

INITIALIZATION START-OF-SELECTION END-OF-SELECTION 1.1.1.2

选择屏幕事件

AT SELECTION-SCREEN OUTPUT选择屏幕PBO事件,每次选择屏幕调用之前触发,在其中进行选择屏幕输出之前的准备工作,如确定屏幕各元素的输出状态。

AT SELECTION-SCREEN选择屏幕最后被触发的事件,用户在选择屏幕上回车、选择某个GUI按钮、功能键或者菜单项时触发

AT SELECTION-SCREEN ON field

AT SELECTION-SCREEN ON BLOCK block

AT SELECTION-SCREEN ON RADIOBUTTON GROUP group1 AT SELECTION-SCREEN ON seltab

AT SELECTION-SCREEN ON END OF seltab,

AT SELECTION-SCREEN ON HELP-REQUEST FOR field选择屏幕的POH事件,F1事件,定义字段帮助

AT SELECTION-SCREEN ON VALUE-REQUEST FOR field选择屏幕的POV事件,F4事件,定义字段输入帮助 1.1.1.3

在使用到逻辑数据库时,比如HR报表,涉及到的逻辑数据库事件:

GET node GET node LATE 1.1.1.4

列表事件

TOP-OF-PAGE END-OF-PAGE

文件名: 创建人:

审核人:

第6页,共44页 日期: 1/22/2015

AT-LINE-SELECTION

AT-USER-COMMAND用户交互控制,选择某个GUI功能出发,用于交互式报表 1.1.1.5

AT 事件

AT FIRST功能

循环时第一条记录时调用 AT LAST功能

循环中最后一条记录时调用 AT NEW 功能

循环中当指定字段之前(包括指定字段)的组合和上一条记录不一样的时候调用 AT END OF功能

循环中当指定字段之前(包括指定字段)的组合和下一条记录不一样的时候调用 AT事件的注意点

AT事件中的工作区不同于LOOP循环的工作区 该工作区中位于指定字段后面的值将不会被读取 如果需要用到 则需重新抽取一次 1.1.1.6

交互式报表事件

AT USER-COMMAND. AT LINE-SELECTION

AT PF-FUNCTION KEY(设置功能键)

1.1.2 1.1.2.1

报表选择画面

报表的选择画面上能否添加自定义工具栏?

能够添加,通过语句SELECTION-SCREEN FUNCTION KEY n(n为1至5,最多定义5个)。 1.1.2.2

如何对报表的选择画面元素进行分组?

在PARAMETERS或SELECT-OPTIONS后使用附加语句“MODIF ID + 组名” 1.1.2.3

如何更改屏幕各元素的状态?举例一些比较常用的屏幕属性

在报表AT SELECTION-SCREEN OUTPUT事件中或PBO(PROCESS BEFORE OUTPUT)中, LOOP AT SCREEN.

文件名:

创建人:

审核人:

第7页,共44页 日期: 1/22/2015

„.

MODIFY SCREEN.

ENDLOOP.

SCREEN-NAME 画面元素的名称

SCREEN-GROUP1 ~ SCREEN-GROUP4 对画面元素的分组 SCREEN-INPUT 能否输入 SCREEN-INVISIBLE 是否可见 SCREEN-LENGTH 可见长度

SCREEN-ACTIVE 是否是可用的状态

1.2 ALV报表

1.2.1 ALV报表实现的流程

声明数据对象 → 定义选择画面 → 从数据库取数 → 处理数据 → 显示数据 1.2.2 显示ALV常用的两个FM(FUNCTION MODULE)

REUSE_ALV_GRID_DISPLAY,REUSE_ALV_LIST_DISPLAY,REUSE_ALV_GRID_DISPLAY_LVC

1.2.3 如何设置ALV中的热键

set parameter id 'BES' field gw_itab-ebeln.

call transaction 'ME23N' and skip first screen. 1.2.4 ALV显示中的小计

(1) 使用SUBTOT

alv可以实现自动小计,首先field cat 参数中添加DO_SUM = X,然后传入sorttable,可以在sorttable中指定需要小计的列

(2) 使用AT 语句

在LOOP 循环中使用AT END OF FIELD

1.2.5 FM ALV 和 OO ALV的比较

FM alv 和OO alv 都能够实现按钮自定义、数据修改、按钮处理自定义等操作,通常情况下FM alv主要用于报表数据展示及简单交互,OO alv 主要用于dialog 程序开发,可以进行复杂的控制,比如单元格的修改控制(FM只能控制到列修改性)、自定义F4等,OO alv可以根据容器排列很方便的定义布局,一个屏幕可以放多个alv,但是FM alv只能一屏显示一个alv。

1.3 WRITE LIST

WRITE LIST 可以输出一些比较复杂的报表格式。

文件名: 创建人:

审核人:

第8页,共44页 日期: 1/22/2015

WRITE LIST 也是一种报表的输出方式,要注重的就是一些WRITE的基本语法就可以了!在这里不一一列举。

2. 数据库知识

2.1 基础知识

2.1.1 ABAP数据字典有哪些对象或元素? Data element, Domain, structure, lock object, views 2.1.2 据库提交确认和数据库回滚取消语句

COMMIT WORK ROLLBACK WORK

2.1.3 什么是LUW

LUW称为逻辑工作单位 同一个逻辑工作单元共享一段内存 将操作放置在同一个LUW中可以控制事务的同时提交和回滚

2.1.4简述modify 、insert、update对数据库表做操作时的影响

Modify 操作数据库时,可以使用from 内表或者工作区来进行多条和单条的更新,要求内表或工作区跟数据库表的结构一致,当数据库表中存在重复记录时,执行更新操作,更新的值为内表或工作区的值,,当数据库表中不存在记录时,执行插入,插入的值为内表或工作区的值

Insert 操作数据库时,可以用from内表或者工作区进行多条和单条的插入,要求内表或工作区跟数据库表的结构一致,如果数据库中不存在重复记录时,执行插入,插入的值为内表或工作区的值;如果已经存在重复记录,会出现更新异常

Update 操作数据库时,可以直接set 来进行单值更新,可以用from table 和工作区进行批量更新,要求内表和工作区跟数据库表的结构一致,当存在记录时执行更新,当不存在记录时,没有数据会被更新,同时也不会产生异常,sy-subrc = 0

2.1.5 要描述域、数据元素、表字段之间的关系

域为数据字典中最小的单元 数据元素是基于域进行定义的 表字段则是通过数据元素进行定义的 2.1.6数据字典有几种缓冲方式,适用范围?

full buffer(全缓冲),一个表的数据要么全在内存中要么全不在。当表记录很少,访问非常频繁且很少进行修改时使用:generic area buffer(常规区域缓冲),语言代码相关的表时最常使用的情况,如文本描述表,缓存满足在generic keys 中定义的字段(个数介于1个和表主键数减1)的值得记录:Single-record buffer(单记录缓冲),数据库表记录比较大,并且经常都是读取一条记录如select single

文件名: 创建人:

审核人:

第9页,共44页 日期: 1/22/2015

2.2 ABAP和数据库

2.2.1 ABAP 数据表的主索引是什么?索引的好处与坏处?与建索引的注意事项!

ABAP 数据表的主索引是什么?索引的好处与坏处?与建索引的注意事项!

数据表的主键即是表的主索引;好的索引能加快数据读取的速度但会增加更新数据库表的时间;建立次级索引时应尽量选取那些查询条件经常使用到得字段

2.2.2 ABAP透明表有哪几种数据类(data class)?对数据的存储有什么影响?

1.主数据类,经常读取,很少修改的数据;2.业务数据类,经常更新的数据;3.组织数据类,系统初始化时存在的数据,也很少修改。决定了数据实际存放的物理区域 2.2.3 SAP中有几种表,他们的区别是什么?

transparent table透明表, pooled table(共享表) and cluster table(簇表). 对于透明表是和DB层的physical table对应的.对于后俩者,是不对应到DB表的. 比如TBSL就是一个pooled table, 你在DB层找不到此表.然后多个cluster(pooled) tables组成一个table cluster和table pool . table cluster和table pool是DB层的一个物理表

2.2.4什么是簇表(cluster table)?举出知道的簇表。

簇表是逻辑上有关联的几个表,在定义的时候分配给一个表簇。Bseg 2.2.5找数据库表,有哪些常用的方法。

(1) 通过点击画面上需要查找的字段,点击F1,在弹出画面中的技术信息。

(2) 通过ST05进行数据库操作的跟踪,对于在前台界面进行数据的新增或更新,在数据库中都会有所体现

(3) 通过事务SE80->environment(环境)-> Repository Information System(资源信息库)->ABAP字典->数据库表格中,对某个字段进行查询

2.2.6如何建立数据库锁对象,激活锁对象产生的Function Module的名字为什么,在何处查看锁表的情况?

在SE11中,选择“锁对象”,即可建立。

用于设锁的 FM 为: ENQUEUE_<锁对象名>。它用于在锁表(Lock Table)中生成一个锁项(Lock Entry)。若设锁不成功的话,就会在 Return 中反映出来。

用于释放锁的 FM 为:DEQUEUE_<锁对象名>。它用于从锁表中删除一个锁项。 在SM12中查看锁表的情况。

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

有两种锁类型:

文件名: 创建人:

审核人:

第10页,共44页 日期: 1/22/2015

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

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

V1 更新类型比 V2 更新类型的优先级高,因此,V1 比 V2 行执行。V1 的执行模式可以为异步、同步或本地;V2 只能为异步执行。 2.2.7使用OPEN SQL注意原则

(1) a、尽可能减少满足条件的数据条目数量。

b、减少数据的传输量,以减少网络流量。 c、减少访问的数据库表量。

d、减少查询难度,可以通过整理选择标准来实现。 e、减少数据库负载。

(2) 不要在LOOP中访问数据库 尽量将数据预先提取到内表中 然后再通过内表进行数据的整合 (3) SELECT语句尽量提取需要的字段 对于不需要的字段避免抽取

(4) SELECT语句WHERE条件,应该先将主键相关条件放在前面 然后按照比较符

= < > <> LIKE IN的顺序排列WHERE条件

(5) 读取内表 使用二分查找方式 BINARY SEARCH

2.3 与表相关

2.3.1 MM模块有哪些常用表格

物料相关:MARA常规物料数据,MAKT物料描述 采购申请相关:EBAN采购申请,EBKN采购申请帐户设置

采购订单相关:EKKO采购凭证抬头,EKPO采购凭证项目,EKKN采购凭证中的帐户设置 凭证相关:MKPF抬头:物料凭证,MSEG凭证段:物料,等等。 2.3.2 HR模块知识:HR里面存储HR主数据主要用到了哪些表?

PA打头的是记录人员对象的相关信息, 如:PAXXXX,后面是X表示四个数字 HRP打头的是记录对象关系(组织机构)的相关信息。如:HRPXXXX.

文件名:

创建人:

审核人:

第11页,共44页 日期: 1/22/2015

2.3.3 HR模块知识:HR程序在开发中常用的两个逻辑数据库是什么?分别对其进行描述

PNP和PCH

PNP是以人员编号为核心进行关联的,统计的是人员的信息 PCH是对象关系视图,记录组织机构相关对象的东西

2.3.4 HR模块知识:HR模块里面,如何修改HR的信息类型,具体如何实现

第一步:锁定用户BAPI_EMPLOYEE_ENQUEUE

第二步:调用HR里面操作信息类型的BAPI:HR_INFOTYPE_OPERATION 第三步:解锁用户:BAPI_EMPLOYEE_DEQUEUE

2.3.5财务模块:财务模块开发中常用的表有哪些,简单举例说明:

FAGLFLEXT FAGLFLEXA ANEK ANEP BKPF BSEG KNA1 LFA1 2.3.6 PM 常用的TABLE EQUI 设备主数据 EQKT 设备短文本 EQUZ 设备时间段

ILOA PM 对象位置和帐户分配 IFLOT 功能位置(表)

总账:总计 总账:实际行项目 凭证抬头资产过账 资产行项目 会计核算凭证标题 会计核算凭证段 客户主记录(交易额) 供应商主数据(业务额) 文件名: 创建人:

审核人:

第12页,共44页 日期: 1/22/2015

IFLOTX 功能位置:短文本 AFKO 订单表头数据 PP 订单 AFPO 订单项 AFVC 订单的工序

2.3.6 inner join 与 left-outer join的区别?

生成的结果集中left-outer join将主表(左表)中的所有满足查询条件的数据都会包括,若相同的查询条件下在右表中不存在记录也会包括;inner join只包括左表与右表中都满足查询条件的数据

文件名: 创建人:

审核人:

第13页,共44页 日期: 1/22/2015

3. 权限相关

3.1 什么是权限对象(Authorization Objects)?在 ABAP 程序中使用哪条语句进行授权检查?

权限对象由一组字段组成,这些字段中的值将被用于进行权限检查。

ABAP 程序中使用 AUTHORITY-CHECK 语句根据权限对象进行权限检查。在 AUTHORITY-CHECK 语句中,必须指明权限对象的所有字段,但有一个例外,可以用 DUMMY 关键字来绕过某个字段的检查。通过SY-SUBRC的返回值进行检查,0为通过检查,其他均为错误,一个授权对象中最多可以定义 10 个字段。

3.2 与权限对象有关的事务代码有哪些?

SU20定义,查看和建立权限字段;SU21查看系统已有权限对象,定义新的权限对象;SU53显示权限检查出错的原因:对于调用Function时,返回无权限的错误后,能在此事务代码中查找到错误信息,PFCG角色维护,将所建的权限对象,与某个角色关联,将角色分配给某个用户后,就能够检查该用户是否有进行操作的某权限。

文件名: 创建人:

审核人:

第14页,共44页 日期: 1/22/2015

4. DIALOG

4.1 DIALOG 中的几个事件

PBO PAI POV POH

4.2 何在TABLE CONTROL中实现选中一行或多行的效果

将内表第一个字段定义为一个长度为一类型为C的变量 并在TABLE CONTROL属性框中将该字段填写到选择字段中去

4.3 DIALOG 开发的常用几个控件是什么?

子屏幕、文本、输入输出框、框、容器、表控制、按钮等等

文件名: 创建人:

审核人:

第15页,共44页 日期: 1/22/2015

5. BDC

5.1 BDC录屏的事务代码

SHDB

5.2 BDC与BAPI之间的区别

都可以用作数据导入 但是BDC是完全模拟前台操作 而BAPI是SAP提供的标准API 通过调用BAPI在后台生成相应数据 性能高于BDC导入方式

5.3 BDC录屏的注意事项

将要填写的字段全部输入 保证其能正确被录制下来 不需要填写的字段不要操作 以免录制后产生冗余字段

5.4谈谈BDC的运行模式和更新模式

运行模式包括:A.全屏幕显示;E.只有在发生错误时,显示屏幕;N.不进行屏幕的显示,将相关信息记录到信息内表里;P. 不进行屏幕的显示,可进行DEBUG测试。 更新模式包括:A.异步更新;S.同步更新;L.本地更新;

文件名: 创建人:

审核人:

第16页,共44页 日期: 1/22/2015

6. 增强

6.1什么叫增强?有哪些方式进行增强?

增强就是ERP系统中标准程序的出口,在该出口中由用户根据企业实际需求编写客户化逻辑代码。 6.1.1 User EXIT

通过SE37,以EXIT*开头,找到的函数大都是做系统预留的出口函数,前面说过,用户出口是标准程序留给用户的接口,标准程序通常不允许用户任意修改,如果修改需要申请Access Key。而且修改标准程序可能导致的错误erp公司通常是不负责的。在SAP中,自定义的程序通常以保留字Y或Z开头,因此,出口函数中都预包含了一个Z开头的程序。 6.1.2 Customer exit

客户自定义程序是通过Call Function来调用SAP库中的一些系统函数,而用户增强的概念刚刚和这个相反,你可以使用一个由SAP功能模块调用的功能模块出口

可以在下面这几个层面对模块进行增强:在ABAP程序中的Function Module Exit(E类),在Gui 接口中的Menu Exit(C类),在指定区域插入一个子窗口的Screen Exit(S类),

ABAP数据字典中表和结构的增强Table Enhancement(T类),还有在屏幕指定区域添加一用户自定义功能的Field Exit和keyword exit 6.1.3 BADI

即Business Add-in,是基于ABAP对象的一种增强技术。SAP预定了一些接口,供客户进行实现,完成增强。在进行增强时,必须首先定义 BADI。为 BADI 创建一个接口,接着创建一个适配器类(Adapter Class)来实现这个接口,然后创建这个适配器类的实例。 6.1.4 Enhancement Spot

可称为隐式增强,在代码中,可插入增强点,对代码进行增强。

对于Enhancement Spot 分为ENHANCEMENT-POINT与ENHANCEMENT-SECTION ENHANCEMENT-POINT向其中添加的新代码,能够与旧代码一起运行 ENHANCEMENT-SECTION增加的新代码,将覆盖旧代码

6.2如何建立增强?

(1)找到增强

(2)建立增强项目

(3)添加增强的组件添加进增强项目

文件名:

创建人:

审核人:

第17页,共44页 日期: 1/22/2015

(4)编辑增强,添加自己的代码 (5)激活增强代码

6.3与增强相关的事务代码有哪些

对于Customer exit:SMOD查看增强组件

CMOD建立项目后,实现增强

对于BADI:SE18查找接口 SE19对接口进行实现

6.4如何进行数据库表字段的增强?Append和Include的方式有何区别?

Append 结构(Append Structure)和自定义 Include(Customizing Include)。Append 结构是在向表尾添加字段时创建的,自定义 Include 由 SAP 开发人员指定,以使用户可以创建新字段。 它们之间的区别在于: Append的结构只能由该表使用,其他表使用不可;Include能够插入任意一个结构或表,其中当插入表时,该表会自动转换为相同字段的结构。

文件名: 创建人:

审核人:

第18页,共44页 日期: 1/22/2015

7. SMARTFORMS

7.1谈谈SmartForm中,Template和Table表格的区别

Template是静态表格,单元格的输出是一定的, Table是动态表格,包含在循环内,能够内表按条输出。

7.2 SMART FORM如何实现公司LOG打印,其步骤是什么?

1.用SE78导入公司logo,导入时只能导入位图、GIF文件,导入位图时,要注意用256色,否则会导致图片打印有问题

2.在smartform中添加图片即可

7.3 smartform 中如何控制段落、单个字符输出格式?

用smartstyles 可以定义不同的段落、字符格式,在文本输出时可以指定格式

文件名: 创建人:

审核人:

第19页,共44页 日期: 1/22/2015

8. RFC和 BAPI

8.1 RFC

8.1.1什么是RFC,有哪些通信模式?

RFC是(Remote Function Call)的简称,是SAP系统和其他系统之间的重要而常用的双向接口技术,它包含同步RFC,异步RFC,事务性RFC,队列RFC和并行RFC。 8.1.2 RFC中涉及到常用的事务代码有哪些?

SM51:查看当前SAP系统中活动的应用服务器,包括Server_Names,Host name和 Ty(服务类型) :查看外部命令设定

SM59:配置RFC连接,其中相同类型的RFC目标被组合至同一个目录。这些远程目标的定义将保存在表RFCDES中。

8.1.3根据调用的不同,RFC接口提供了什么样的服务?

a.ABAP程序的调用接口, 任何的ABAP程序都可以使用CALL FUNCTION ... DESTINATION预计调用远程功能。DESTINATION参数告诉SAP系统被调用的功能将在调用者之外的系统上运行,通过RFC接口与远程系统进行通信。如果远程功能来自SAP系统,则必须是时间的功能模块,并在功能库中注册为“支持远程调用 REMOTE-FUNCTION-ENABLE”,通信双规都通过ABAP的RFC接口实现。 b.非SAP ABAP程序的调用接口, 在RFC的实现过程中,如果调用或被调用一方是非ABAP程序,则非ABAP程序必须以特点的规格进行变成,确保它可作为RFC通信的一方。SAP系统为外部程序提供RFC支持接口(RFC-supported interface)和GUI支持接口(GUI-supported interface)。这样,在非SAP系统中,外部程序就可以调用并执行SAP RFM。 8.1.4 RFC接口的具体功能包括哪些?

a. 登录并退出远程系统,并执行权限检查 b. 调用并管理远程系统会话所需的通信例程 c. 将参数转换成远程系统所需的格式 d. 处理通信过程中的错误

8.1.5在通过CALL FUNCTION语句进行远程功能调用的基本模式有哪些

a. CALL FUNCTION - DESTINCTION: 以同步RFC方式实现的RFM调用。如果DESTINATION后无其它附加项,则形成同步RFC调用,调用程序等待远程调用的结果以继续执行。

b. CALL FUNCTION - STARTING NEW TASK: 以异步RFC方式实现的RFM调用。通过STARTING NEW TASK

文件名: 创建人:

审核人:

第20页,共44页 日期: 1/22/2015

附加项形成异步RFC调用,调用程序不等待返回结果继续执行,结果将在回调子程序(callback subroutine)中接收。

c. CALL FUNCTION - IN BACKGROUND TASK: 以事务性RFC方式实现的RFM调用。通过IN BACKGROUND TASK 形成事务性RFC调用,远程功能暂不开始执行,等待COMMIT WORK语句出现是,一次性执行一个或多个远程功能。

8.1.6怎么创建一个支持远程调用的RFC

在SAP系统中,RFC的创建方式与普通功能模块类似,只是编写功能模块时需要在Attribute选项卡中将Processing Type 选项设为Remote-Enable Module,在传入传出参数那里需要选择参数为Passing value。

8.1.7怎么调用一个SAP标准RFC

在SAP中,功能模块的调用通过 CALL FUNCTION 语句实现。远程功能作为普通功能模块调用的扩展,可通过在CALL FUNCTION语句中添加DESTINATION子句完成,其语法格式与普通调用完全相同。 8.1.8怎样建立RFC程序?RFC程序传递的参数都是传递值还是引用?如何建立函数组?

在SE37中建立函数模块的时候,attributes选项卡中将 remote function前面的圆圈勾选上。传递引用。可以SE80进入,选中屏幕左边的repository browser选项,在第一个输入框中选中函数组,在第二个输入框中输入需建立的函数组名,再回车就可以了;或者从se37进入,在menu bar上选中go to——>function group——>create group 8.1.9怎么来维护这个DESTINATION(远程目标)

SM59, 其中包含链接和登录远程系统所需的全部参数信息。还可以在远程调用时直接指定当前系统的应用服务器作为RFC目标。通过SM51查看当前SAP系统中活动的应用服务器。

8.2 BAPI

8.2.1什么是BAPI?你使用过哪些BAPI实现什么功能?

BAPI业务应用程序接口(Business Application Programming Interface,简称BAPI)是面向对象程序设计方法中的一组程序接口。它允许程序员通过SAP将第三方软件整合成R/3专有产品。为了完成一些特殊的商业任务,如上传交易数据等,R/3系统中内置了BAPI

BAPI是SAP提供的基于业务对象的函数,关键是它们处理的对象是R/3的业务相关business object),比如单据类销售订单,组织:公司等,它们是一系列实体。RFC则是一种系统间通讯的方式(Remote Funciton Call),一个BAPI函数往往能是一个RFC函数 8.2.2什么是业务对象类型?它包含哪些主件?

业务对象类型是业务对象的定义和描述,面向对象构架的实现基础,也就是SAP系统中的类,它封装了业务功能和数据。

它包含接口,关键字段,属性,方法和事件5个业务组件。

文件名: 创建人:

审核人:

第21页,共44页 日期: 1/22/2015

8.2.3如何创建一个BAPI?

a. 定义BAPI Structure (Structure不能在BAPI中重复使用,因为一旦BAPI被释放,其Structure被冻结)

b. 创建FUNCTION MODULE(每个BAPI必须有自己的Function Group,Function Group属性必须为RFC) c. 创建Business Object(SW01)

d. 使用BAPI WIZARD创建API Method(这样BAPI可以被外部程序调用)

e. 释放BAPI Function Module,释放Business Object Type,释放BAPI作为BOR的一种Method 8.2.4编写BAPI的注意事项有哪些?

BAPI不能包括call transaction 或 submit report那些跳转到别的程序的语句;BAPI的结构中不能使用append或include,并且每个BAPI的结构都必须新建;BAPI中不能使用dialog,如进行文件选择,需要用户交互的东西,这也在RFC中不能出现 8.2.5谈谈与BAPI相关的事务代码。

SWO1业务对象创建器 SWO2 业务对象浏览器 SWO3业务对象仓库浏览器 BAPI BAPI对象浏览器

8.3 RFC 和BAPI的相同之处和不同之处

8.3.1 RFC和BAPI的区别?

1> BAPI和RFC不是同一个层次上概念;BAPI是SAP提供的基于业务对象的函数,关键是它们处理的对象是R/3的业务相关Business object,比如单据类销售订单,组织,公司等,它们是一系列实体。RFC则是一种系统间通讯的方式(Remote Function Call),一个BAPI函数往往能是一个RFC函数。 2> BAPI是个SAP里一个很好的思想,把业务对象都对象化了。

文件名: 创建人:

审核人:

第22页,共44页 日期: 1/22/2015

9. 其他

9.1 基础知识

9.1.1 CHECK、EXIT、RETURN命令的区别? 9.1.1.1 CHECK

1)CHECK 后面要跟一个表达式,当表达式值为假(false)时,CHECK发生作用,退出循环(LOOP)或处理程序(Processing Block)。 2)如果CHECK出现在循环中,则发生作用时,退出的是当前一次循环操作,程序会继续执行下一次循环操作,其作用类似于Continue (Java 或C++中continue也是如此).

3)如果CHECK出现在循环以外,则发生作用时,退出的是当前执行的程序块(processing block),例如一个FORM,METHOD,或EVENT。

9.1.1.2 EXIT

1) EXIT如果出现在循环中,退出的是整个循环操作,.程序会从循环结束处开始继续执行,其作用相当于Java与C++中的break。

2)EXIT如果出现在循环之外,退出的是当前执行的程序块(processing block),例如一个FORM,METHOD,或EVENT,其作用与RETURN类似。 9.1.1.3 RETURN

RETURN用来退出当前执行的程序块(processing block),例如一个FORM,METHOD,或EVENT,不管是否出现在循环(LOOP)中,RETURN都会退出当前执行的程序块,而不仅仅是退出循环。

虽然ABAP中EXIT 和RETURN都可以用来实现退出当前执行的语句块(processing block),但SAP的帮助文件建议只在循环中使用EXIT ,其他情况下要退出当前执行进程,使用RETURN 。

9.1.2初始化内表有几种方式?

1、 要初始化有或没有表头的内表,用REFRESH语句 2、 如果使用没有表格工作区域的内表,可以使用CLEAR语句代替REFRESH语 3、 如果使用有表头行当内表,CLEAR语句仅清除表格工作区域,要重置整个内表而不清除表格工作区域,使用REFRESH语句或CLEAR语句

使用REFRESH或CLEAR初始化内表后,系统保持在内存中保留的空间。可以用FREE语句释放内存

文件名: 创建人:

审核人:

第23页,共44页 日期: 1/22/2015

9.1.3 一个程序如何调用另外一个程序

调用其他可执行程序使用“SUBMIT+程序名”语句,使用WITH关键字,可传递选择画面参数,使用AND RETURN关键字,可在该程序执行完毕后,自动返回调用它的程序。 9.1.4 在一个程序中如何调用其他事物代码

调用其他事务代码使用“CALL TRANSACTION + 事务代码”,使用AND SKIP FIRST SCREEN可以跳过第一个画面,进入下一个画面

9.1.5在进行画面跳转时,CALL SCREEN与LEAVE TO SCREEN的区别?

CALL SCREEN是将正在运行的画面挂起,进入所调用的画面,当使用LEAVE TO SCREEN 0时,能够返回原画面,可理解为嵌套调用;而LEAVE TO SCREEN是立即结束本画面的执行,调用所指定的画面,在调用画面中,无法再返回原画面。 9.1.6 LOOP 循环和系统字段?

Sy-index。sy-tabix存储loop循环到内表的第几行了,sy-dbcnt存储从数据库中读取到的满足条件的记录条数, sy-lisel 存储被选中行的内容,在事件at line-selection时起作用,该系统字段中的内容到下一个屏幕的时候还存在

9.1.7 MESSAGE消息有哪些类型,含义?如何自定义MESSAGE消息类?

A:Abend,立刻终止当前事务,进入DUMP的界面 E:错误 ,画面的状态栏,会弹出一个错误提示信息 I:信息 ,弹出一个消息对话框

S:确认 ,画面的状态栏,会弹出一个正确提示信息 W:警告 ,画面的状态栏,会弹出一个警告提示信息 可以通过语句DISPLAY LIKE mtype可以取代原错误图标 自定义MESSAGE消息类,通过事务代码SE91。 9.1.8 ABAP中,如何自定义异常类?如何捕捉异常?

通过事务代码SE24,在Class Type中,选择Exception Class即可定义,在TRY CATCH语句中就能够使用。

捕获:和JAVA一样: TRY „ CATCH 异常类

文件名: 创建人:

审核人:

第24页,共44页 日期: 1/22/2015

„ ENDTRY.

9.1.9什么事事物变式?事务变式有什么用?

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

包括SIGN OPTION LOW HIGH四个字段 9.1.11对于FIELD SYMBOL赋值将使用

ASSIGN

9.1.12 Perform 调用子程序时,using ,tables,changing 3个参数分别有什么影响?

using 可以传入单值、工作区,只能使用,不能对值做修改,perform结束后传入参数的值还是传入之前的状态;

Tables 只能传入一个内表,程序逻辑可以对其进行修改,perform 结束后内表的值是影响 Changjing,可以传入内表、单值,当程序逻辑可以对其进行修改,perform结束后传入参数的值是影响过后的值

9.1.13如何在程序间传送数据?

可以使用 EXPORT 语句在 ABAP/4 内存中存储数据字段簇

语句为:EXPORT ... TO MEMORY ID . 而调用程序就会检索数据:

语句为:IMPORT ... FROM MEMORY ID 其中:ID参数标识唯一的数据簇。 SAP和ABAP内存的区别:

1、读取时使用方法不同

SAP内存使用SET/GET parameters方法; ABAP内存使用 EXPORT 和 IMPORT 方法;

文件名: 创建人:

审核人:

第25页,共44页 日期: 1/22/2015

2、共享范围不同

SAP内存可以被所有的主session访问,内存数据可以同一个session中不同程序之间,或者不同session之间;

ABAP只能在同个session的不同程序之间共享数据; 3、作用范围不同

SAP内存在整个终端session时间内都有效; ABAP内存只能在一个session时间内有效; 4、使用一般原则

SAP内存用于屏幕默认值输入;

abap内存用于模块之间传替数据

9.2 延伸

9.2.1自定义搜索帮助有几种方式?如何实现

1、 SE11创建搜索帮助

2、 调用function F4IF_INT_TABLE_VALUE_REQUEST

3、 在POV中或者 AT SELECTION-SCREEN ON VALUE-REQUEST FOR 中使用自定义的搜索帮助可以使用

函数“F4IF_FIELD_VALUE_REQUEST”,即可。 9.2.2怎么创建number range

事务代码 SNUM/SNRO, 在使用number ranger是需要首先将其锁定(function: NUMBER_RANGE_ENQUEUE)然后取出编号(function: NUMBER_GET_NEXT)最后解锁(function: NUMBER_RANGE_DEQUEUE)

9.2.3 function module中,如何给出错误消息?

可以有两种方式:

1.在tables参数中增加return table,可以将执行过程中产生的错误消息返回,在function module 外对return table做处理

2.定义exception,当出现错误时,用rasing语句抛异常,rasing语句会直接影响sy-subrc 的值,function module 外可以直接根据sy-subrc 来做处理 9.2.4如何优化ABAP程序?

(1) 可通过运行事务代码SE30,运行待检查的程序,查看各操作的百分比。

(2) 避免在循环语句中,使用SELECT语句,而是通过FOR ALL ENTRIES IN 语句抽取数据到内表中。

文件名:

创建人:

审核人:

第26页,共44页 日期: 1/22/2015

(3) 通过运行事务代码SLIN,进行扩展检查,根据SAP提供的反馈信息,优化代码 9.2.5前导零的处理方式

CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’ 添加前导0 CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’ 去掉前导0 SHIFT 物料编码 LEFT DELETING LEADING '0'. 去掉前导0 9.2.6 程序事件和系统事件

1、程序事件需要调用dispatch,由你决定这个事件在什么时间响应,而系统事件不需要调用dispatch,什么时候响应系统事件由系统决定。(他是自动调用dispatch).

2、程序事件在PAI时,可以访问屏幕上面的值,而系统事件不行。系统会重写屏幕上面的值。 3、程序事件在用户误操作的情况下可能丢失。 9.2.7如何建立一个外部数据库的连接

事务代码 DBCO或者维护表DBCON

9.2.8怎样从文件服务器上读取文件?和写文件到文件服务器上?

OPEN DATASET dset FOR access IN mode [position]

[os_addition] [error_handling].

从服务器上读取文件时,access 用output替换,再调用语句 READ DATASET dset INTO dobj [MAXIMUM LENGTH mlen] [[ACTUAL] LENGTH alen].

;写文件到服务器上access 用input替换,在调用语句 TRANSFER dobj TO dset [LENGTH len] [NO END OF LINE].

9.2.9 SAP 包括哪些传输技术

a. Sap标准数据传输程序 b. 通过bapi和idoc传输数据 c. 自定义数据传输程序

批输入,调用事物,直接输入3种数据传输技术。

文件名: 创建人:

审核人:

第27页,共44页 日期: 1/22/2015

9.2.10如何将内表数据转换成一个XML文件?

可以使用普通的方法(SAP提供的一些生成XML类 IF_IXML, IF_IXML_ENCODING, IF_IXML_COMMENT, IF_IXML_ELEMENT, IF_IXML_ATTRIBUTE, IF_IXML_OSTREAM,等)

通过事务代码STRANS来创建一个Transformation,在这里定义好XML的格式,内容等,然后通过CALL TRANSFORMATION xxx OPTIONS xml_header = 'no'SOURCE root = itab header = header

RESULT XML xml_string.来将内表数据转换为XML文件。注意这个内表不能使用带表头的内表。 9.2.11怎么导出一个WSDL文件?

导出WSDL: 根据SAP版本不同,有 SOAMANAGER(基于NETWEAVER) / WSADMIN,WSCONFIG(Release Web Services (基于R3的)for SOAP Runtime) 9.2.12怎么导入一个WSDL文件?

在SE80里面导入该WSDL文件,导入后,会生成相应的proxy Name(class interface),在这个class里面就会包含该WSDL文件提供的方法。然后根据需要,在SM59创建一个远程连接,在LPCONFIG 里面创建逻辑端口(指定端口的目的地)。最后在接口程序里面使用相应的建立起来的class 9.2.13创建后台程序的TCODE是什么,如何在程序里面调用后台程序

TCODE:SM36

调用程序的FUNCTION:JOB_OPEN和JOB_CLOSE. 9.2.14 webservice

发布大体步骤:se37向导发布webservice soamanager配置endpoint

调用大体步骤:se80创建代理类 lpconfig创建逻辑端口 se38程序中调用:创建代理类对象,调用对象的方法

9.2.15什么叫BTE (Business Transaction Event),BTE的两种类型?

BTE可以通过函数的模式附加一个组件到SAP系统中,从本质的原理上讲BTE也是通过预定义的访问接口

BTE的两种类型:

Publish and Subscribe Interface:通过事件驱动的模式从SAP提供一定的参数触发一个或多个事件(函数),但是这些事件不会返回信息给SAP,这种模式不影响SAP的正常业务流程。

Process Interface: 属于SAP控制业务流程的一部分,这个接口可能对应多个事件,但是每次运行的时候只能根据需要选择运行其中的一个事件,SAP供给参数接口,并且还有返回参数给SAP,这种模式影响了SAP的正常业务流程。

文件名: 创建人:

审核人:

第28页,共44页 日期: 1/22/2015

9.2.16现阶段接口开发使用的技术 ESB+WebService

9.2.17将一个RFM(Remote-Enabled Module)创建一个WEB SERVICE都有什么相关的事务代码? 创建WEB SERVICE:SE37/SE80 9.2.18 esb使用

esb来管理erp和其他接口交互的信息,可以查看监听管理双发系统的交互信息

文件名: 创建人:

审核人:

第29页,共44页 日期: 1/22/2015

10.常用T-CODE

TCODE 描述 备注

ABAPDOCU ABAP 文档和范例 BAPI BAPI浏览器 CMOD/SMOD 系统增加 LSMW 数据导入工具 数据导入 PFCG 权限管理 SA38 程序执行

SCAT 计算机辅助测试工具,测试,数据导入等 数据导入 SCC1 集团拷贝 SCC4 显示集团

SE09 运输组织者,查询传输请求 SE11 数据字典 SE16 数据浏览器 SE32 文本元素设定 SE36 逻辑数据器 SE37 函数据模块 SE38 ABAP编辑器 SE41 菜单制作器 SE51 屏幕制作器 SE55 生成表维护程序 SE71 Form 设计 单据打印

SE78 Form、SmartForms 使用图片上载 SE80 对象浏览器

文件名: 创建人:

审核人:

第30页,共44页 日期: 1/22/2015

SE90 对象浏览器 SE91 消息设定 SE93 维护事务代码 SHDB 批输入代码 数据导入 SM04 显示在线用户 SM30 维护表视图 SM35 进程监控 SM50 超时用户

SMARTFORMS SmartForms 设计 单据打印 SNUM 编号对象维护

SO10 标准文本,设定Form 使用的TIFF 图片等 SPAD 假脱机管理 SQ01 Query 查询制作 ST05 SQL跟踪 SU20 授权字段 授权 SU21 授权对象 授权

WE21 IDOC 处理中的端口 IDOC

1. What is the typical structure of an ABAP program? //ABAP程序的基本结构是什么? HEADER ,BODY,FOOTER.

2. What are field symbols and field groups.? Have you used \"component idx of structure\" clause with field groups?

文件名: 创建人:

审核人:

第31页,共44页 日期: 1/22/2015

在ABAP/4 程序中,字段符号是现有字段的占位符。字段符号本身不直接为字段保留空间, 而只是指向一个字段( 该字段在程 序运行前

还未可知)。 字段符号可以与程序语言C 中的指针概念相比较( 即,用内容 操作符 * 表示的指针 )。然而, 在 ABAP/4 中,从变量的意义上说,与指针不是真正等价的,此处,变量包含内存地址,并且不用内容操作符即可使用。您只 能使用字段符号指向的数据对象。

将摘录记录定义为字段组

摘录数据集由一系列记录组成。这些记录可以有不同的结构。所有具有相同结构的记录形成 一个记录类 型。必须使用 FIELD-GROUPS 语

句将摘录数据集的每 个记录类型定义为字段组。

语法

FIELD-GROUPS .

该语句定义了字段组。字段组将几个字段组合到一个名称下。

字段组不为字段保留存储空间,但它包含现有字段的指针。用记录填充摘录数据集时,这些 指针将决定存储记录的内容。 3. What should be the approach for writing a BDC program? //写BDC程序的一般步骤是什么

STEP 1: CONVERTING THE LEGACY SYSTEM DATA TO A FLAT FILE to internal table CALLED \"CONVERSION\". STEP 2: TRANSFERING THE FLAT FILE INTO SAP SYSTEM CALLED \"SAP DATA TRANSFER\". STEP 3: DEPENDING UPON THE BDC TYPE i)call transaction(Write the program explicity)

ii) create sessions (sessions are created and processed.if success data will transfer). 我做的最多的就是用SHDB生成源代码,然后再进行适当的修改 4. What is a batch input session?

BATCH INPUT SESSION is an intermediate step between internal table and database table.

Data along with the action is stored in session ie data for screen fields, to which screen it is passed,program name behind it, and how next

screen is processed.

5. What is the alternative to batch input session? Call transaction.

6. A situation: An ABAP program creates a batch input session. We need to submit the program and the batch session in background. How

to do it?

go to SM36 and create background job by giving job name,job class and job steps (JOB SCHEDULING)

7. What is the difference between a pool table and a transparent table and how they are stored at the database level? 8. What are the problems in processing batch input sessions? How is batch input process different from processing on line? 9. What do you define in the domain and data element? //如何定义domain和element?这是内表定义的基本工作 se11

10. What are the different types of data dictionary objects?

11. How many types of tables exists and what are they in data dictionary?

文件名: 创建人:

审核人:

第32页,共44页 日期: 1/22/2015

12. What is the step by step process to create a table in data dictionary? //如何在数据字典中创建一个表 se11 ->创建一个表,输入表类型

然后输入表的字段(如果要找不到参考element,要创建element) 在技术设置中进行表的属性设置

货币类型需要输入参考字段 如:NETWR 与WAERK

13. Can a transparent table exist in data dictionary but not in the data base physically? 14. What are the domains and data elements?

数据元素都会参考一个domain,domain的内容包括:数据类型、长度、小数位等 15. Can you create a table with fields not referring to data elements? // 考察创建element与domain的技术 :se11

16. What is the advantage of structures? How do you use them in the ABAP programs? 17. What does an extract statement do in the ABAP program?

18. What is a collect statement? How is it different from append? //collect与append的区别 19. What is open sql vs native sql? native直接传送SQL到数据库

20. What does an EXEC SQL stmt do in ABAP? What is the disadvantage of using it? 无法进行调试及错误检查

21. What is the meaning of ABAP editor integrated with ABAP data dictionary? 22. What are the events in ABAP language?

23. What is an interactive report? What is the obvious diff of such report compared with classical type reports? 24. What is a drill down report?

25. How do you write a function module in SAP? describe. 如何写一个function: se37 import与export

26. What are the exceptions in function module? 27. What is a function group?

28. How are the date abd time field values stored in SAP? 29. What are the fields in a BDC_Tab Table. PROGRAM DYNPRO DYNBEGIN FNAM FVAL 30. Name a few data dictionary objects?

31. What happens when a table is activated in DD? 32. What is a check table and what is a value table?

文件名: 创建人:

审核人:

第33页,共44页 日期: 1/22/2015

33. What are match codes? describe?

34. What transactions do you use for data analysis? se12 se16

35. What is table maintenance generator? se11中创建 sm31中使用

36. What are ranges? What are number ranges?

37. What are select options and what is the diff from parameters?

38. How do you validate the selection criteria of a report? And how do you display initial values in a selection screen? 39. What are selection texts?

40. What is CTS and what do you know about it?

41. When a program is created and need to be transported to prodn does selection texts always go with it? if not how do you make sure?

Can you change the CTS entries? How do you do it?

42. What is the client concept in SAP? What is the meaning of client independent? 43. Are programs client dependent?

44. Name a few system global variables you can use in ABAP programs?

45. What are internal tables? How do you get the number of lines in an internal table? How to use a specific number occurs statement? 46. How do you take care of performance issues in your ABAP programs? 47. What are datasets?

48. How to find the return code of a stmt in ABAP programs? 49. What are interface/conversion programs in SAP?

50. Have you used SAP supplied programs to load master data?

51. What are the techniques involved in using SAP supplied programs? Do you prefer to write your own programs to load master data?

Why?

52. What are logical databases? What are the advantages/disadvantages of logical databases?

逻辑数据库是特殊的 ABAP/4 程序,将一 定数据库表的内容组合 在一起。可以将逻辑数据库链接为 ABAP/4 报表程序的属性。这样,逻

辑数据库就可向报表程序提供一组层次结构表格行。 该层次结构表格行可从不同数据库表中提取。

创建或维护逻辑数据库的事务是SE36 或者SLDB。 选择 “工具 -> ABAP/4 工作台 -> 开发 -> 编程环境 -> 逻辑数据库”。 53. What specific statements do you using when writing a drill down report? 54. What are different tools to report data in SAP? What all have you used? 55. What are the advantages and disadvantages of ABAP query tool?

56. What are the functional areas? User groups? and how does ABAP query work in relation to these? 57. Is a logical database a requirement/must to write an ABAP query? 58. What is the structure of a BDC sessions.

文件名: 创建人:

审核人:

第34页,共44页 日期: 1/22/2015

59. What are Change header/detail tables? Have you used them?

60. What do you do when the system crashes in the middle of a BDC batch session? 61. What do you do with errors in BDC batch sessions?

62. How do you set up background jobs in SAP? What are the steps? What are the event driven batch jobs? 63. Is it possible to run host command from SAP environment? How do you run? 64. What kind of financial periods exist in SAP? What is the relavent table for that? 65. Does SAP handle multiple currencies? Multiple languages? 66. What is a currency factoring technique?

67. How do you document ABAP programs? Do you use program documentation menu option? 68. What is SAPscript and layout set?

69. What are the ABAP commands that link to a layout set? 70. What is output determination? 71. What are IDOCs?

72. What are screen painter? menu painter? Gui status? ..etc.

73. What is screen flow logic? What are the sections in it? Explain PAI and PBO. 74. Overall how do you write transaction programs in SAP?

75. Does SAP has a GUI screen painter or not? If yes what operating systems is it available on? What is the other type of screen painter

called?

76. What are step loops? How do you program pagedown pageup in step loops? 77. Is ABAP a GUI language?

78. Normally how many and what files get created when a transaction program is written? What is the XXXXXTOP program? 79. What are the include programs?

80. Can you call a subroutine of one program from another program?

81. What are user exits? What is involved in writing them? What precations are needed? 82. What are RFCs? How do you write RFCs on SAP side? 83. What are the general naming conventions of ABAP programs?

84. How do you find if a logical database exists for your program requrements?

85. How do you find the tables to report from when the user just tell you the transaction he uses? And all the underlying data is from SAP

structures?

86. How do you find the menu path for a given transaction in SAP? 87. What are the different modules of SAP? 88. What is IMG in SAP?

文件名: 创建人:

审核人:

第35页,共44页 日期: 1/22/2015

89. How do you get help in ABAP?

90. What are different ABAP editors? What are the differences? 91. What are the different elements in layout sets?

92. Can you use if then else, perform ..etc statements in sap script? 93. What type of variables normally used in sap script to output data? 94. How do you number pages in sapscript layout outputs? 95. What takes most time in SAP script programming? 96. How do you use tab sets in layout sets?

97. How do you backup sapscript layout sets? Can you download and upload? How? 98. What are presentation and application servers in SAP?

99. In an ABAP program how do you access data that exists on a presentation server vs on an application server? 100. What are different data types in ABAP?

101. What is difference between BDC and Call Transaction? 102. Setting up a BDC program where you find information from?

103. What has to be done to the packed fields before submitting to a BDC session.

问题一:锁对象(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. 独占锁——可写锁,一个用户正在修改数据时,阻止其他用户更改该数据。

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

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

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

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

文件名: 创建人:

审核人:

第36页,共44页 日期: 1/22/2015

答案: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

文件名: 创建人:

审核人:

第37页,共44页 日期: 1/22/2015

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)来实现这个接口, 然后创建这个适配器类的实例。

51. What are the techniques involved in using SAP supplied programs? Do you prefer to write your own programs to load master data? Why?

52. What are logical databases? What are the advantages/disadvantages of logical databases? ANS:-

To read data from a database tables we use logical database.

A logical database provides read-only access to a group of related tables to an ABAP/4 program. adv:-

The programmer need not worry about the primary key for each table.Because Logical database knows how the different tables relate to each other,and can issue the SELECT command with proper where clause to retrieve the data.

i)An easy-to-use standard user interface.

ii)check functions which check that user input is complete,correct,and plausible. iii)meaningful data selection.

iv)central authorization checks for database accesses.

v)good read access performance while retaining the hierarchical data view determined by the application logic. disadv:-

i)If you donot specify a logical database in the program attributes,the GET events never occur. ii)There is no ENDGET command,so the code block associated with an event ends with the next event statement (such as another GET or an END-OF-SELECTION).

53. What specific statements do you using when writing a drill down report? ans:-

AT LINE-SELECTION,AT USER-COMMAND,AT PF.

文件名: 创建人:

审核人:

第38页,共44页 日期: 1/22/2015

54. What are different tools to report data in SAP? What all have you used? ans:-

55. What are the advantages and disadvantages of ABAP/4 query tool?

56. What are the functional areas? User groups? and how does ABAP/4 query work in relation to these?

57. Is a logical database a requirement/must to write an ABAP/4 query? 59. What are Change header/detail tables? Have you used them?

60. What do you do when the system crashes in the middle of a BDC batch session? ans:-

we will look into the error log file (SM35).

61. What do you do with errors in BDC batch sessions? ANS:-

We look into the list of incorrect session and process it again. To correct incorrect session we analyize the session to determine which screen and value produced the error.For small errors in data we correct them interactively otherwise

modify batch input program that has generated the session or many times even the datafile.

62. How do you set up background jobs in SAP? What are the steps? What are the event driven batch jobs? ans:-

go to SM36 and create background job by giving job name,job class and job steps(JOB SCHEDULING) 63. Is it possible to run host command from SAP environment? How do you run? 64. What kind of financial periods exist in SAP? What is the relavent table for that? 65. Does SAP handle multiple currencies? Multiple languages? ans:- Yes.

66. What is a currency factoring technique?

67. How do you document ABAP/4 programs? Do you use program documentation menu option?

68. What is SAPscript and layout set? ans:-

The tool which is used to create layout set is called SAPscript. Layout set is a design document. 69. What are the ABAP/4 commands that link to a layout set? ans:-

control commands,system commands, 70. What is output determination? 71. What are IDOCs? ans:-

IDOCs are intermediate documents to hold the messages as a container. 72. What are screen painter? menu painter? Gui status? ..etc. ans:-

dynpro - flow logic + screens.

文件名: 创建人:

审核人:

第39页,共44页 日期: 1/22/2015

menu painter -

GUI Status - It is subset of the interface elements(title bar,menu bar,standard tool bar,push buttons) used for a certain screen.

The status comprises those elements that are currently needed by the transaction. 73. What is screen flow logic? What are the sections in it? Explain PAI and PBO. ans:-

The control statements that control the screen flow.

PBO - This event is triggered before the screen is displayed.

PAI - This event is responsible for processing of screen after the user enters the data and clicks the pushbutton.

74. Overall how do you write transaction programs in SAP? ans:-

Create program-SE93-create transcode-Run it from command field.

75. Does SAP has a GUI screen painter or not? If yes what operating systems is it available on? What is the other type of screen painter called?

76. What are step loops? How do you program pagedown pageup in step loops? ans:-

step loops are repeated blocks of field in a screen. 77. Is ABAP a GUI language? ANS:- Yes.

ABAP IS AN EVENT DRIVEN LANGUAGE.

78. Normally how many and what files get created when a transaction program is written? What is the XXXXXTOP program? ans:-

ABAP/4 program. DYNPRO

79. What are the include programs? ANS:-

When the same sequence of statements in several programs are to be written repeadly they are coded in include programs (External programs) and are included in ABAP/4 programs. 80. Can you call a subroutine of one program from another program? ans:- Yes- only external subroutines Using 'SUBMIT' statement.

81. What are user exits? What is involved in writing them? What precations are needed? 82. What are RFCs? How do you write RFCs on SAP side?

83. What are the general naming conventions of ABAP programs? ANS:-

Should start with Y or Z.

84. How do you find if a logical database exists for your program requrements? ans:- SLDB-F4.

文件名: 创建人:

审核人:

第40页,共44页 日期: 1/22/2015

85. How do you find the tables to report from when the user just tell you the transaction he uses? And all the underlying data is from SAP structures? ans:-

Transcode is entered in command field to open the table.Utilities-Table contents-display. 86. How do you find the menu path for a given transaction in SAP? ans:-

87. What are the different modules of SAP? ans:-

FI,CO,SD,MM,PP,HR.

89. How do you get help in ABAP? ans:-

HELP-SAP LIBRARY,by pressing F1 on a keyword.

90. What are different ABAP/4 editors? What are the differences? ans:-

91. What are the different elements in layout sets? ans:-

PAGES,Page windows,Header,Paragraph,Character String,Windows.

92. Can you use if then else, perform ..etc statements in sap script? ans:- yes.

93. What type of variables normally used in sap script to output data? 94. How do you number pages in sapscript layout outputs? 95. What takes most time in SAP script programming? ANS:-

LAYOUT DESIGN AND LOGO INSERTION.

96. How do you use tab sets in layout sets?

97. How do you backup sapscript layout sets? Can you download and upload? How? 98. What are presentation and application servers in SAP? ANS:-

The application layer of an R/3 System is made up of the application servers and the message server. Application programs in an R/3 System are run on application servers. The application servers communicate with the presentation components, the database, and also with each other, using the message server. 99. In an ABAP/4 program how do you access data that exists on a presentation server vs on an application server? ans:-

i)using loop statements. ii)flat

100. What are different data types in ABAP/4? ans:-

Elementary -

predefined C,D,F,I,N,P,T,X.

文件名: 创建人:

审核人:

第41页,共44页 日期: 1/22/2015

userdefined TYPES.

ex: see in intel book page no 35/65

文件名: 创建人:

审核人:

第42页,共44页 日期: 1/22/2015

文件名: 创建人:

审核人:

第43页,共44页 日期: 1/22/2015

Structured -

predefined TABLES.

userdefined Field Strings and internal tables.

101. What is difference between session method and Call Transaction? ans:-

102. Setting up a BDC program where you find information from? ans:-

103. What has to be done to the packed fields before submitting to a BDC session. ans:-

fields converted into character type.

104. What is the structure of a BDC sessions. ans:-

BDCDATA (standard structure).

105. What are the fields in a BDC_Tab Table. ans:-

program,dynpro,dynbegin,fnam,fval.

106. What do you define in the domain and data element. Technical details like

107. What is the difference between a pool table and a transparent table and how they are stored at the database level. ans:-

ii)Pool tables is a logical representation of transparent tables .Hence no existence at database level. Where as transparent tables are physical tables and exist at database level. 108. What is cardinality?

For cardinality one out of two (domain or data element) should be the same for Ztest1 and Ztest2 tables. M:N

Cardinality specifies the number of dependent(Target) and independent (source) entities which can be in a relationship.

文件名: 创建人:

审核人:

第44页,共44页 日期: 1/22/2015

因篇幅问题不能全部显示,请点此查看更多更全内容

Top