ABAP开发顾问必备:SAP ABAP开发技术总结[转载]

时间:2021-01-16 20:47:10

转载自SAP师太技术博客,原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260224.html

在原文上增加了链接,此文及此文的链接版权都归SAP师太所有。

ABAP开发顾问必备:SAP ABAP开发技术总结[转载]

1.      基础

1.1.           基本数据类型

1.1.1.        P类型(压缩型)数据

1.2.           TYPE、LIKE

1.3.           DESCRIBE

1.4.           字符串表达式

1.5.           Data element、Domain

1.6.           词典类型与ABAP类型转换

1.7.           字符串处理

1.7.1.        count、match结合

1.7.2.        FIND …SUBMATCHES

1.7.3.        FIND …RESULTS  itab

1.7.4.        正则式类

1.7.4.1.             matches、match

1.7.4.2.             contains

1.7.4.3.             find_all

1.7.4.4.             find_next

1.7.4.5.             get_length、get_offset、get_submatch

1.7.4.6.             replace_all

1.8.           CLEAR、REFRESH、FREE

1.9.           ABAP程序中的局部与全局变量

1.10.         Form、Function

1.10.1.     FORM

1.10.2.     FUNCTION

1.10.2.1.           Function Group结构

1.10.2.2.           Function参数传值、传址

1.11.         字段符号FIELD-SYMBOLS

1.11.1.     数据引用、对象引用

1.11.2.     ASSIGN隐式强转

1.11.3.     ASSIGN显示强转

1.11.4.     UNASSIGN、CLEAR

1.12.         数据引用Data References、对象引用Object references

1.12.1.           数据引用Data References

1.12.2.           对象引用Object references

1.12.3.          GET REFERENCE OF获取变量的地址

1.13.         动态语句

1.13.1.     内表动态访问

1.13.2.     动态类型

1.13.3.     动态SQL

1.13.4.     动态调用类的方法

1.13.5.     ASSIGN 动态分配

1.13.5.1.           动态访问类的属性成员

1.14.         反射

1.14.1.     TYPE HANDLE

1.14.2.     动态创建数据Data或对象Object

1.14.3.     动态创建基本类型变量、结构、内表

1.14.4.     类对象反射

2.      面向对象

2.1.           类与接口定义

2.1.1.        components

2.2.           类定义、实现

2.3.           接口定义、实现

2.4.           类、接口继承

2.5.           向下强转型 ?=

2.6.           方法

2.6.1.        parameters

2.6.2.        PREFERRED PARAMETER首选参数

2.6.3.        普通调用

2.6.4.        简单调用

2.6.5.        函数方法

2.7.           me、super

2.8.           事件

2.8.1.        事件定义

2.8.2.        事件触发

2.8.3.        事件处理器Event Handler

2.8.4.        注册事件处理器

2.8.5.        示例

3.      内表

3.1.           LOOP AT循环内表

3.1.1.        SUM

3.1.2.        AT... ENDAT

3.1.3.        自已实现AT... ENDAT

3.2.           在LOOP AT中修改当前内表行

3.2.1.        循环中修改索引表

3.2.2.        循环中修改HASH表

3.3.           第二索引

3.3.1.        使用第二索引

3.3.2.        示例

3.4.           适合所有类型的内表操作

3.5.           适合索引内表操作

4.      OPEN SQL

4.1.           SELECT 、INSERT、UPDATE、DELETE、MODIFY

4.2.           条件操作符

4.3.           RANG条件内表

4.4.           FOR ALL ENTRIES

4.5.           INNER JOIN、LEFT OUTER JOIN使用限制

4.6.           动态SQL

4.7.           子查询

4.7.1.        =、<>、<、<=、>、>=子查询

4.7.1.1.             ALL、ANY、SOME

4.7.2.        [NOT] IN子查询

4.7.3.        [NOT] EXISTS子查询

4.7.4.        相关子查询

4.8.           统计函数

4.9.           分组过滤

4.10.         游标

4.11.         三种缓存

4.12.         Native SQL

4.12.1.     查询

4.12.2.     存储过程

4.12.3.     游标

4.13.         SAP锁

5.      SAP/DB LUW

5.1.           DB LUW

5.1.1.        显式提交

5.1.2.        隐式提交

5.1.3.        显示回滚

5.1.4.        隐式回滚

5.2.           SAP LUW

5.2.1.        SAP LUW的绑定方式

5.2.1.1.             Function

5.2.1.2.             subroutine

5.2.2.        开启新的SAP LUW

5.2.3.        同步或异步更新(提交)

5.2.4.        本地、非本地方式提交

6.      逻辑数据库

6.1.           组成

6.2.           结构

6.3.           选择屏幕(Selections)

6.3.1.        PARAMETERS屏幕参数扩充

6.3.2.        SELECTION-SCREEN格式化屏幕

6.3.3.        DYNAMIC SELECTIONS动态选择条件

6.3.3.1.             DYN_SEL

6.3.3.1.1.          RSDS_TYPE-CLAUSES

6.3.3.1.2.          RSDS_TYPE-TRANGE

6.3.4.        FIELD SELECTION动态选择字段

6.3.4.1.             SELECT_FIELDS

6.4.           数据库程序中重要FORM

6.5.           LDB选择屏幕:静(动)态选择屏幕、动态选择视图

7.      ALV

7.1.           Layout重要字段

7.2.           FIELDCATALOG重要字段

7.3.           指定双击触发的FunCode

7.4.           相关函数

7.5.           重要参数接口

7.6.           让预置按钮回调I_CALLBACK_USER_COMMAND

7.7.           颜色

7.8.           可编辑

7.9.           单元格数据修改后立即自动刷新

7.10.         数据有效性验证事件:data_changed

7.11.         金额、数字类型输入问题

7.12.         排序、分类汇总

7.13.         可打印的表头输出

7.14.         布局变式读取、切换、根据布局格式导出数据

7.15.         动态内表

8.      OO ALV

8.1.           相关类

8.2.           控制区域、容器、Grid关系

8.3.           CL_GUI_ALV_GRID重要方法

8.4.           set_table_for_first_dispaly()方法重要参数

8.5.           事件绑定、触发、回调处理

8.6.           CL_GUI_DOCKING_CONTAINER容器

8.7.           覆盖(拦截)预设按钮的功能FunCode:BEFORE_USER_COMMAND

8.8.           数据改变事件data_changed、data_changed_finished

8.9.           单元格可编辑

9.      问题

9.1.           ALV自带导出文件时字段数据末尾被截断问题

9.2.           Smartform 中Template无法显示减号后面内容

9.3.           Smartform金额或者数量字段显示不出来

9.4.           更新数据库表时,工作区或内表的结构需参考数据库表来定义

9.5.           DELETE ADJACENT DUPLICATES…去重复

9.6.           Text使用Excel打开乱码问题

9.7.           VBFA与EKPO联合查询问题

10.             技巧

10.1.         让READ TABLE...WITH KEY可使用OR条件或其他非“=”操作符

10.2.         SELECT SINGLE ... WHERE...无法排序问题

10.3.         当心Where后的条件内表为空时

10.4.         快速查找SO所对应的交货单DN及PO

10.5.         X类型的C类型视图

10.6.         字符串连接:&& 替代 CONCATENATE

10.7.         Variant变式中动态日期

11.             优化

11.1.         数据库

11.2.         程序

12.             屏幕

12.1.         AT SELECTION-SCREEN、PAI、AT USER-COMMAND触发时机

12.2.         SELECTION-SCREEN格式化屏幕、激活预设按钮

12.3.         PARAMETERS

12.4.         SELECT-OPTIONS

12.4.1.     输入ABAP程序默认值时,需要加上“=”

12.4.2.     选择条件内表多条件组合规则

12.4.3.     使用SELECT-OPTIONS替代PARAMETERS

12.5.         各种屏幕元素演示

12.6.         按钮、单选复选框、下拉框的FunCode

12.6.1.     选择屏幕中的按钮

12.6.2.     选择屏幕中的单选/复选按钮:点击时显示、隐藏其他屏幕元素

12.6.3.     选择屏幕中下拉列表:AS LISTBOX

12.7.         屏幕流逻辑

12.7.1.     FIELD

12.7.2.     MODULE

12.7.3.     ON INPUT与ON CHAIN-INPUT区别

12.8.         EXIT-COMMAND

12.8.1.     MODULE <mod> AT EXIT-COMMAND

12.8.2.     AT SELECTION-SCREEN ON EXIT-COMMAND

12.9.         OK_CODE

12.9.1.     ok_code使用前需拷贝

12.10.        Search help ( F4 )

12.10.1.             VALUE CHECK 、 fixed Values 、 Value Table

12.10.2.             检查表 Check Table --- Value Table

12.10.3.             SE11 检查表与搜索帮助关系

12.10.4.             F4 搜索帮助联动的决定因素

12.11.        搜索帮助参数说明

12.12.        F4IF_SHLP_EXIT_EXAMPLE 帮助出口

12.12.1.             修改数据源

12.12.2.             删除重复

12.13.        搜索帮助优先级

12.14.        搜索帮助创建函数

12.15.       在POV事件里读取屏幕字段中的值函数

12.16.       动态修改屏幕

12.17.       子屏幕

12.18.       屏幕跳转

12.18.1.            CALL SCREEN误用

12.18.2.            CALL SCREEN/SET SCREEN/LEAVE TO SCREEN区别

12.19.       修改标准选择屏幕的GUI Status

12.20.       事件分类

12.20.1.            报表事件

12.20.2.            选择屏幕事件

12.20.3.            逻辑数据库事件

12.20.4.            列表事件

12.20.5.            事件流图

12.21.       事件终止

12.21.1.            RETURN

12.21.2.            STOP

12.21.3.            EXIT

12.21.4.            CHECK

12.21.5.            LEAVE

12.21.5.1.         REJECT

13.             列表屏幕

13.1.         标准LIST

13.2.         自定义LIST

13.3.         LIST事件

13.4.         Detail Lists 创建

13.5.         标准的 List Status

13.6.         列表屏幕上的数据与程序间的传递

13.6.1.     SY-LISEL

13.6.2.     HIDE

13.6.3.     READ LINE

13.7.         从Screen Processing 屏幕处理切换到Lists列表输出

13.8.         LIST 打印输出

14.             Messages

14.1.         00消息ID中的通用消息

14.2.         消息常量

14.3.         静态指定

14.4.         动态指定

14.5.         消息拼接MESSAGE …INTO

14.6.         修改消息显示性为…DISPLAY LIKE…

14.7.         RAISING <exc>:消息以异常形式抛出

14.8.         CALL FUNCTION…EXCEPTIONS

14.8.1.     error_message = n_error捕获消息

14.9.         各种消息的显示及处理

14.10.       异常处理

14.10.1.            RAISE [EXCEPTION]…触发异常

14.10.1.1.         触发类异常

14.10.1.2.         RESUMABLE选项

14.10.2.            捕获异常

14.10.2.1.         类异常捕获TRY…CATCH

14.10.2.2.         老式方式捕获runtime errors(运行时异常)

14.10.3.            向上抛出异常

14.10.4.            类异常

15.             数据格式化、转换

15.1.         数据输入输出转换

15.1.1.     输出时自动转换

15.1.2.     输入时自动转换

15.1.3.     通过转换规则输入输出函数手动转换

15.2.         数量小位数格式化

15.2.1.     案例

15.3.         单位换算:UNIT_CONVERSION_SIMPLE

15.4.         货币格式化

15.4.1.     从表中读取日元并正确的格式化输出

15.4.2.     SAP 货币转换因子

15.4.3.     货币内外格式转换

16.             业务

16.1.         表、业务流程

16.2.         MM

16.2.1.     常用表

16.2.2.     库存

16.2.3.     物料凭证

16.3.         SD

16.3.1.     表

16.3.2.     定价过程

16.3.2.1.           条件技术七要素

16.3.2.2.           条件表V/03、V/04、V/05

16.3.2.3.           存取顺序 V/07

16.3.2.4.           条件类型 V/06

16.3.2.5.           定价过程V/08与确定OVKK

16.3.2.6.           VK11:价格主数据维护

16.3.2.7.           定价计算:KONV

16.3.2.7.1.       条件类型的计算公式

16.3.2.8.           定价过程示例

16.3.2.9.           销售订单中的定价示例

16.3.2.10.         定价通信表KOMK、KOMP

16.4.         业务概念

16.4.1.     售达方、送达方、开票方、付款方

16.4.2.     进项税、销项税

16.4.3.     订单日期、凭证日期、过账日期

16.5.         业务知识

16.5.1.     客户联系人相关信息

16.5.2.     销售订单合作伙伴功能

17.             增强

17.1.         第一代:基于源码增强(子过程subroutine)

17.2.         第二代:基于函数出口增强(Function)

17.2.1.     示例:采购订单屏幕增强

17.2.1.1.           定义全局变量

17.2.1.2.           子屏幕

17.2.1.3.           屏幕与业务表数据间传递

17.2.1.4.           相关函数说明

17.3.         第三代:基于类的增强(BADI)

17.3.1.     新式BADI创建

17.3.1.1.           定义

17.3.1.2.           实现

17.3.1.3.           过滤器

17.3.1.3.1.       调用

17.3.1.4.           多个BADI/ Enhancement实现时究竟调谁

17.3.2.     经典BADI创建

17.3.2.1.           Filter-Depend.过滤器

17.3.2.1.1.       调用

17.3.2.2.           通过经典BADI扩展自定义程序(菜单、屏幕、功能)

17.3.3.     示例:通过BADI实现采购订单屏幕增强

17.4.         第四代:Enhancement-Point

17.4.1.     为自己程序创建显示增强

17.4.2.     隐式与显示增强

18.             数据批量维护

18.1.         BDC(SM35、SHDB)

18.2.         LSMW

18.3.         业务对象和BAPI

18.3.1.     SAP业务对象(SWO1)

18.3.1.1.           业务对象类型的组成

18.3.1.2.           业务对象(BO)设计

18.3.1.2.1.       创建业务表

18.3.1.2.2.       创建业务对象类型

18.3.1.2.3.       添加(继承)接口

18.3.1.2.4.       添加关键字段Key

18.3.1.2.5.       添加属性

18.3.1.2.6.       通过报表程序来实现业务对象的方法

18.3.1.2.6.1.    报表程序

18.3.1.2.6.2.    重定义接口与方法实现

18.3.1.2.6.3.    测试

18.3.1.2.7.       通过BAPI函数来实现业务对象方法

18.3.1.2.7.1.    创建BAPI参数结构

18.3.1.2.7.2.    创建BAPI函数、BAPI调用返回RETURN结果处理

18.3.1.2.7.3.    将BAPI函数绑定到相应的业务方法

18.3.2.     BAPI

18.3.2.1.           BAPI浏览器

18.3.2.2.           SE37查找:BAPI函数的命名规则

18.3.2.3.           查找某事务码所对应的BAPI

18.3.2.4.           常用BAPI函数

18.3.2.5.           调用BAPI

18.3.2.5.1.       BAPI事务处理

18.3.2.5.2.       外部系统(Java)调用BAPI函数

18.3.2.5.2.1.    直连、连接池

18.3.2.5.2.2.    访问结构

18.3.2.5.2.3.    访问表 (Table)

18.3.2.5.2.4.    Java多线程调用有/无状态RFM

18.3.2.5.3.       ABAP访问Java服务

18.3.2.5.4.       ABAP创建远程目标

18.3.2.5.5.       连接异常registrationnot allowed

18.3.2.5.6.       带状态访问

18.4.         IDoc

18.4.1.     数据段类型和数据段定义(WE31)

18.4.2.     IDoc定义(WE30)

18.4.3.     自定义IDoc发送与接收实例

18.4.3.1.           发送端800(outbound)配置

1、创建segment(WE31)

2、创建IDOC Type(WE30)

3、创建Message Type(WE81)

4、关联Message Type和IDOC Type(WE82)

5、创建接收端RFC Destination(SM59)

6、创建到收端的端口(WE21)

7、创建发送端Logical System并分配(SALE)

8、创建接收端Logical System(SALE)

9、创建接收端合作和伴配置文件Partner profile(WE20)

10、通过ABAP程序发送IDOC

18.4.3.2.           接收端810(Inbound)配置

1、创建发送端RFC Destination(SM59)

2、创建发送端的端口(WE21)

3、将接收端Logical System分配到Client 810(SALE)

4、创建入站处理函数

5、注册入站处理函数(BD51)

6、将入站函数与IDOC Type/Message Type关联(WE57)

7、创建入站处理代码Inbound Process Code(WE42)

8、创建发送端合作和伴配置文件Partner profile(WE20)

9、测试 BD87

19.             数据共享与传递

19.1.         程序调用、会话、SAP/ABAP内存 关系

19.2.         ABAP Memory数据共享

19.2.1.     EXPORT

19.2.2.     IMPORT

19.2.3.     DELETE

19.3.         SAP MEMORY数据共享

19.3.1.     PARAMETERS/SELECT-OPTIONS选项MEMORY ID

19.3.2.     GET/SET PARAMETER ID

19.4.         DATABASE

19.4.1.     将文件存入表中

19.4.2.     从表中读取文件

19.5.         JOB间数据传递

19.6.         SAP MEMORY数据共享

19.6.1.     PARAMETERS/SELECT-OPTIONS选项MEMORY ID

19.6.2.     GET/SET PARAMETER ID

19.7.         JOB间数据传递

20.             拾遗

20.1.         Function调用

20.1.1.     更新FM:LUW

20.1.2.     RFC函数:远程调用

20.1.2.1.           同步

20.1.2.2.           异步

20.1.2.2.1.       事务性RFC调用

20.1.2.3.           DESTINATION 取值

20.2.         函数、类

20.3.         FTP

20.4.         文件读写

20.5.         Email

20.6.         XML

20.6.1.          生成

20.6.2.          解析

20.7.         OLE

20.7.1.     导出Exel文件多种方式

20.8.         ABAP示例代码

20.9.         长文本

20.9.1.     物料长文本

20.9.2.     生产订单长文本

20.9.3.     采购订单长文本

20.9.4.     销售订单长文本

20.10.       Smart Forms

20.11.       BOM

20.12.       传输请求 SE01、SE09、SE10

20.13.       Script Form传输:SCC1

20.14.       权限检查

20.15.       允许对表数据维护

20.16.       SE93创建事务码

20.17.       表字段初始值、NULL等问题

20.17.1.            SE11表设置中的Initial Values

20.17.2.            底层数据库表字段默认值

20.17.3.            ABAP初始值、底层数据库表默认值相互转换

20.17.3.1.         向表中插入初始值

20.17.3.2.         读取数据

20.17.4.            SAP系统中的表字段不允许为NULL的原因

20.18.       ABAP中的“空”、INITIAL

20.19.       调试工具

20.19.1.            ST05

20.20.       程序以Job运行(报表自已设置后台运行,前后台数据共享)

20.21.       SE78、SWM0

20.22.       客户端文本文件或Excel文件上传与下载

20.22.1.            读取客户端Txt、Excel文件到内表:TEXT_CONVERT_XLS_TO_SAP

20.22.2.            将数据内表导出为EXCEL文件:SAP_CONVERT_TO_XLS_FORMAT

20.23.       Unicode字符串互转

20.24.       字符编码与解码

20.25.       ABAP中的特殊字符列表

20.26.       下载文件

20.26.1.            以BIN二进制下载

20.26.2.            以字符模式下载

20.27.       将文件上传到数据库表中,并可邮件发送

20.28.       Append、Include系统表结构增强

20.29.       结构复用(INCLUDE)

20.30.       常用事务码

21.             常用Function

21.1.         日期函数

21.1.1.     日期、时间验证

21.1.2.     内部转换外部格式

21.1.3.     外部转内部格式

21.1.4.     获取Client格式

21.1.5.     日期加减

21.1.6.     转成工厂日期

21.1.7.     日期属性

21.1.8.     节假日

21.1.9.     年月选择框

21.1.10.            财政年

21.1.11.            星期翻译对照表

21.1.12.            日期所在周末、天/周、周/年