我的ABAP学习历程

来源:互联网 发布:软件行业就业方向 编辑:程序博客网 时间:2024/04/30 19:06

在CSDN上混了3年了,但真正说起来,我的程序员历程却只有两年多一点。

起初研究了半年的JAVA,从CORE JAVA到JAVAME再到最后的JAVAEE,这里面的技术名目很多,特别是到了JAVAEE和W3C标准结合以及和数据库连接相关技术就更为复杂了。

后来做了一名ABAPer,到如今1年半,期间总过做过3个项目,涉及到方方面面。 但是ABAP里面的技术名目也是很多的,若非有大量的项目经验,很难弄明白它里面的各种技术。 不得不说,我是一名普通的ABAPer,我肯定不如很多人聪明,但是我比较愿意花时间研究一些东西,以至于很多技术我并没有在项目上用到,却在私下里有研究过。以下我说说我自己从业以来ABAP的学习经历吧。以下是一步一步学习历程:

 

1,Report

我说的Report指的是单纯的List,若是从广义去理解Report,那它的范围广了,在SAP 所有的程序中有两种可执行程序,一种就是Report,另一种就是MODULE POOL。

好吧,言归正传,List其实很简单啦,ABAP通用的关键字要熟悉以外还要掌握List中比较常用的那些事件的用法,以及WRITE的格式控制。 在List中比较复杂一点的是控制分页,和页格式设置。

 

2,ALV

当你自己写了一段时间的Report List以后,突然有一天有人告诉你,其实我们显示数据可以做到更加完美,那就通过ALV去显示。 而当你真正见识到ALV的显示效果以后,你猛然发现你前段时间写的那些List根本就没有价值了。 所以你开始研究ALV技术,研究如何通过Function module或者OO显示数据,研究如何设置title,如何自定义button,如何响应自定义的button,如何设置热点,如何显示radiobutton,如何刷新ALV列表,如何实现可编辑ALV,等等。

 

3,Smartforms

通常对于报表的需求不会只停留在显示功能,客户会要求打印功能。 若是系统提供的页面布局不让客户满意时,就要开发新的form了,自然而然你就开始学习如何设计smartforms(scriptform如今看来用处不多,略), form通常包括header body footer, body部分通常需要显示内表的数据,所以要创建个main window,比较复杂的是分页控制,往往要强制换页。 当然在设计smartforms之前要定义好一种style和页面格式,因为系统的style和系统已存在的页格式不再符合你当前的smartform的需求。 当然设计好的smartforms可以直接去测试了,看看显示出来页面布局基本差不多,那么就要开始写驱动程序了,驱动程序里面比较复杂的是要熟悉call smartform里面的每个参数的确切含义,比如控制它不显示对话框,控制它打印完删除缓存,控制它发送邮件,等等。

 

到了现在,你是不是有一种瓶颈的感觉啊,不知道干什么了。好的,新的挑战立马就出现了。

 

4, screen flow

很多标准的程序都是屏幕流程序,就是一个屏幕接着一个屏幕出现,新屏幕的出现和旧屏幕的返回以及屏幕之间的互相导航往往是通过屏幕上的那些按钮去实现的,体现到程序里面无非就是leave to scree, set screen, call screen。 什么时候要开发屏幕流程序,当然是当系统tcode已经无法满足客户操作需要的时候。 做屏幕流,唱主角当然是屏幕啦,首先要设计各种屏幕,而屏幕中的元素比较多,比较复杂是子屏幕,tabscrip和各种controls,比如显示table的control,显示图片的control,显示网页的control。相对来说屏幕流程序技术难度大一些。

 

5,Enhancement

增强是一个ABAPer必须掌握的技术,说起来增强技术,里面的名目也是很多,分法很多,笼统的说包含: 出口技术,BADI(NEW BADI和CLASSICAL BADI),BTE,SUBSTITUTION。 还有隐式增强和显式增强技术。 当然各种增强还有其他东东,比如扩张字段,比如dataelement的增强,比如说search help exit等等。 

 

6,BDC

BDC也是ABAPer必须会的一门技术,相对而言比较简单,BDC的实现通常有两种方式: CTU 和 BI session, 两种方式各有利弊, 前者比较直接简单,但是消息要写代码控制,后者创建一个BI SESSION,让用户到SM35去跑,数据才真正写到数据库,消息管理得比较完善,当然后者还有一个好处是,一个BI SESSION里面可以包含多个事物处理(理论上是这样的,但是本人屡次失败,仍不知为何)。

 

7,ALE/IDOC

BDC和ALE最大的区别在于,BDC无法实现系统间的数据交换,而ALE是专门用于SAP系统与外界系统数据交互的技术,一端outbound数据另外一端inbound数据。

关于ALE的事物代码比较多,包括系统连接的,IDOC管理的,状态查询的,IDOC重处理的,等等。 要多多实践才能这方面的专家。

 

8,BAPI

这个就不用多说了,BAPI是和业务紧密关联的一些业务对象的方法,通常用来创删改查某种业务对象对应的master data或者trasaction data, 我们往往需要查找和测试各种BAPI,以用于我们的开发中去,特别是Interface开发, 比较复杂的就是创建和开发新的BAPI了。

 

9,LSMW

严格来说它更像一个工具,就像SM36或者ST05那样,主要要与数据转换,它支持RECORDING, BAPI, IDOC。 没什么难的,每一种类型都去STEP BY STEP去实践一遍并不难。

 

10,EDI

这个是和ALE并列的一门技术,我没研究过,就不写了。

 

11,WORKFLOW

说实话,这一块如果没有一本很好的书籍或者有个很好的导师,真是不好入门,本身资料相对少,然后入门相对难一点。

 

12,BASIS相关

作为ABAPer也有必要会一些BASIS相关的简单的应用,比如创建user,解锁,权限对象创建,profile的创建,用户权限管理, TR传输。

 

13,项目管理方面

比如项目分析,需求设计,详细需求设计,项目实施管理(包括项目技术文档设计,开发进度管理,缺陷管理,测试,测试文档设计),等等,也要有所了解。

 

个人觉得以上我说方方面面就是一个ABAPer应该具备的技术方面的素质了,当然还有一些沟通技巧,其他文化素养啊,那其实是一个成功人士的标准了。

另外,作为一个成功的ABAPer要主动去学习ERP中各个模块的知识还有SAP其他套件(CRM SRM SCM PLM)的开发技能。

再如果能掌握BI(包括BW和BO),甚至掌握HANA,那你就是一个SAP领域的一名技术大牛了。

这个就是一名ABAPer应该树立的目标,希望本文给那些处于迷茫期的ABAPer一些启示。