ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:115.93KB ,
资源ID:11988010      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11988010.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(sapABAP开发入门到进阶.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

sapABAP开发入门到进阶.docx

1、sapABAP开发入门到进阶SAP-ABAP开发入门到进阶基础篇-以简短的篇幅介绍最基本的语法 增强篇-介绍了常用的ABAP技术希望此书对想从事ABAF开发的读者有相当帮助一.基础篇如果读者已经有一定ABAP经验,可不看此篇,在此篇中,花了很少篇幅回顾 ABAP编程的基本常识,读者如有其他开发工具的知识,花很少时间就可理解这些常 识1. 什么是ABAP了解一下ABAP的发展历史是必要的,ABAP产生的最初的目的是用以生成简单 打印报表程序,我们知道SAP最初是为解决财务实时数据处理问题的,ABAP(Adva need Bus in ess Application Programmi ng- 高

2、级业务应用编程语言)现在用于编写SAP AG的几乎全部产品源代码.严格地讲,ABAP/4不仅仅是一个开发工具,而且是一套完整的client/server 开发环境,这很好理解,微软的Visiual Studio 是一开发环境,VB,VC+等是开发工 具.ABAP开发环境包含支持程序开发的一些函数和包等.如图1-1,是SAP开发环境的一个三层架构的例图,三层(多层)的概念也不新鲜 比如在安装SAP时也可将DB instanee 安在一台server, Central instanee 在另一台所谓的Applieation server( 我想这应是相关SAP基础系统包括各种应用程序 所在),而通

3、常客户端安装的SAP Logon Front End,SAP会话管理器等是所谓的表示 层,它通过TCP/IP,SAP演示协议或RFC和应用服务器进行数据传输,用户看到的只 是处理后的数据返回.和Delphi的三层逻辑相近,在应用层包含多个组件象 ABAF开发平台,身份 验证,系统管理维护等用以处理会话,更新,排队,网关,数据层处理native和Open SQL等(这是从内部机制方面看),SAP各模块应用的业务逻辑都在应用层被处理(从 用户角度)然后结果被返回.Sl-l图1-2是SAP Logon的一个截图:1表示应用服务器(通常企业为了节省成本和方 便管理可能会将应用服务器和数据库安装在同一起

4、 ),2System number,举个实例,开发和测试服务共用一台服务器,开发使用system numberOO,而测试使用system number 01,通过 system number 逻辑地将一台 physical server 逻辑地分成了两台applicati on server.学习ABAP并不难,有人说SAP系统重在管理思想,不在技术,通常对有编程 经验的读者不用任何培训参考一些相关资料就可立即上手 简单介绍下ABAP/4的一些特征:1. 和SAP紧密结合,尤其在开发报表方面,坦率地讲,除了和SAP集成的好处,.我定认为ABAP在报表开发上比Crystal report To

5、ol 要高效简单.2. 和VB一样,ABAP是解释形的,如读者精通VB,学习ABAF应该豪不费力,倒是既 然SAP是企业管理解决方案,ABAPer必须对企业管理流程熟悉.解释性的另一好处是可以很好跟踪程序逻辑 (使用/H),这对了解业务逻辑的实 和追踪错误很有效.和VB不同的是,VB跟踪时允许程序运行指针随意往回或 往全拉而ABAF程序去不行,但是ABAF程序允许在运行时修改变量的值,这是 编译程序不能做到的当然通常编译比解释执行的速度会更快ABAR1序执行并不直接读取源代码,而是执行内部经过 “生成”的描述,对于 ABAP/4字典的修改激活后将触发内部描述的重新生成,如程序并没激活就执行 原

6、版本,或者出现错误(程序没激活可能造成ABAP Dumping ABAP).3. 在对数据库处理方面,除了可直接执行SQL使用native sql,缺点是错误处理 很难控制,相当于有开发环境将SQL语句直接传给DB去执行),SAP在ABAF开发 环境层还提供了一套Open SQL访问底层数据库.4. 程序员都知道Windows平台下开发都支持事件驱动,Windows系统本身也支 持事件驱动,ABAP也提供了事件驱动,这表现在Dialog编程方面,但是ABAP在 此方面并不强,而且相对讲也比较难于掌握(在后面会讨论).5. 基于面向对象的风靡,ABAP在此方面也有相当反应,在SAP强大的软件包中

7、提 供了大量可重复使用的程序,读者也可定义类并使用它快速建立新的对象6. 类似Java,ABAP开发的程序能运行于任何操作系统(Java有Java虚拟机,ABAP 也有ABAP processor),多种数据库(比如在ABAP字典中实现了透明表对各种底 层数据库表的映射,这样在ABAP层看到的透明表就和具体数据库无关),各种网 络系统图1-3是一个ABAP开发和运行环境的图例.ABBF开发坏境 图丄3甲 岂 卄ABAP/4IaJ: ScreenARAP 1MenuDictionaryPainterH 口峠1厂FPainterDialog processor ABAP/4 processor1使

8、用C|C+建立ABAP开发工具,数亿行ABAP source code组成SAP AG多个产 品.姑且不论国内ERP产品设计在解决企业流程上的局限性,在大多数国外的ERP产品中我们都可看到结合自身 ERP自带的开发工具,在技术上这也是落后人家所以 建议国内ERP界能少谈点象什么”不上ERP等死,上ERP找死” ”百分之百的企业上 ERP都失败”诸如的空洞口号(实际上我并不知道他们是凭什么得出这样的结论的 ),多干点实际的事情.2既然ABAP是解释型的,运行速度会有影响吗?我想多少会有的,为了解决这个问 题,除了要加大相关服务器内存外(相对日新月异的硬件技术这已非主要瓶颈),SAP本身在提高性能

9、也提供了相当的 ABAP技术,比如使用Cluster table, Pooled table 和Logical database , 在接下来会有详细介绍.2. ABAP开发环境的建立一个ABAP顾问和我讨论说,大学毕业我做ABAF开发不久做了顾问,薪资相当 可观,最要好同学在unix平台下写Cobar组件,薪资却并不理想.从技术角度,我认为使用C+写组件肯定比ABAP开发难度要高,用其人话说 他是坐的庙好.是的,SAP行业特别是早些年是个被异化的行业,人们可看到某些人 出于经济目的铺天盖地的对 ERP不正确的宣传,这同样反应在IT各行业,”拿到XX 牌Route认证,拿到XX网络认证,拿到X

10、X数据库认证,拿到XX管理学位年薪基本的 都在十几万以上”现在人们发现实际不是这回事,从现在,SAP也已经开始降温了, 我想这趋势还会持续.和学习其它语言唯一不同的是,ABAP是集成在SAP基础平台系统中的,为了学 习ABAP你必须安装一套SAP(可选择R/3,miniSAP,或IDES),而通常的情况是安装光 盘渠道比较难找(只有一些大企业实施了 SAP才可能有,而且还必须注意版权问题,其他开发 工具随便都可找到安装程序),对想学习ABAP的程序员这是个主要门槛.掌握基本的ABAF开发环境对ABAPer是有益的,似乎多数ABAPer对底层并不感兴趣3. 获得 Access Key .4. A

11、BAP workbench 和 ABAP dictionary(kgg Wtth Vnt Variants5. 第一个程序-Hello World.6. SUntijecUTftieThe first prom Halo WorldfTlLICrWtlSTOSZTLast cha-oad by06/29/2005STfMtEFJJ 曲 CvpUyAtvtoute?Tm MStatus 8j ApokaucnU IAuthB血呵M汕lo$C4l 站 JbeSetectm screen53TP FRCG ZHELLOM Local CbHCt 上 Lock Over we w 雷 Xrtriute

12、s 3JJjJiX. r广日询f o iSUtuscbectPS呻E9V5-1ABAP Editor; Initial Screen如何进行ABAP开发呢?本节使用老套的做法,介绍如何建立一个”Hello World ”的 ABAP程序,为了让读者尽快掌握 ABAP开发熟悉ABAP开发环境是必须的,请看图 1.5-1 .程序的原代码如下Report ZHELLO.Write Hello World!.按F8运行,运行成功在屏幕上显示 Hello World!的字样,恭喜你,第一个程序运行成功7. ABAP语法简介数据类型控制流程文本摘要输出格式程序调试7.0pen SQL和 Native SQ

13、L8. 内表和工作区9. 使用字段符号10. 模块化程序11. 文件处理12. 簇数据库和逻辑数据库13. 消息和错误处理尽管消息这词还用在其他地方比如 PO,SO打印传真等所谓的 output message(请看ABAP百夜谈),系统出现异常,在这里消息只谈在程序运行逻辑异常处理时的消息1定义消息(参考图7-7).使用Tcode SE91可自定义包含多消息号的消息类,在图7-7中就定义了一个消 息类ZFIMSG同时消息号017中使用了俩&消息变量2运用消息.1. 可在程序Title中使用MESSAGE-加入消息类.REPORT ZMSGTEST MESSAGE-ID ZFIMSG .MES

14、SAGE I017.使用消息IMG有这样的画面,12的appl和work area实际上对应的就是程序的 message id(SE91:message class).2. 在程序Title中定义直接在语句中使用.REPORT ZMSGTEST .MESSAGE IO17(ZFIMSG).1.将变量赋给消息.REPORT ZMSGTEST .MESSAGE I017(ZFIMSG) with Var1 Var2 Var3.或者MESSAGE ID ZFIMSG TYPE I NUMBER 0171 with Var1 Var2 Var3尽管017只定义了两消息变量,但是可With多个值,当然只

15、有前俩生效.4.SAP程序消息类型有下列几种.I:信息窗口 W:警告E:错误S:成功A:终止程序或Tcode X:未知.5.和标准SAP-样,你可配置消息,比如你需要由用户决定消息类型,使用下面程序PROGRAM ZMSGTEST .CALL FUNCTION READ_CUSTOMIZED_MESSAGEEXPORTINGI_ARBGB = ZFIMSGI_DTYPE =I_MSGNR = 017IMPORTINGE_MSGTY = SY-MSGTY.假设你做了 Tcode和OBAL样可配置消息类型,在程序中你就可根据返回值 SY- MSGTY判断下步工作,E停止处理,A退出程序等.在标准程

16、序中,接下来会PERFORM MESSAGE S来决定发送消息类型.3常用消息表格和各模块常用消息配置 Tcode.在消息配置中Application Area 和SE91的 Message Class实际上是同一概念1消息相关最常用的table:T100: SAP能用到的消息都应该在此表中找到 .T160M :MM模块相关消息表,此表可完全直接维护就是说只要记住它,MM的消息配置直接使 用SE16就可以.T100C: FI模块中用户自定义的消息 ,比如使用OBA5, OFM等自定义的消息会写入此表 ,CO配 置消息不在此表T100S:此表保存着允许用户更改的应用区域和消息号 ,举例假设你删除

17、了 KI 005则在OBA5中再不能配置此消息(对MMI块有些例外,M7不在此表,使用OMC依旧可设置,M3不 在此表,OMT4依旧可设置)此表也可直接维护和T160M不同的是,你必须在SE16俞入T100S按新建按钮才可维护查询时只可Display.T100U:哪个用户最后更改了消息,从此表能找到.T100W: For Workflow2常用Tcode(部分):FI: OBA5|OFMG|OFPMMM: OMRM|OKZZ|OMT4|OMC(O04C|SD: OVAHCO: OPR4_ACT|OPR4_CK|OPR4_CKML|OPR4_CKPF|OPR4_KKA|OPR4_KKP|OPR4

18、_KKS| OPR4_KKS1|OPR4_PPCOPPOthers:OPR5|OPR1|OPR3|OPR6|OPR7|OPR8|OPR9|OPRCMFE|MSW1|MSW23应用举例.物料价格维护问题Case 1如何在物料价格未维护时依旧可估算成本比如在CK11N(CK40N计算成品标准成本时,其中有一些Component没维护价格.就可使用OPR4_C将默认的错误消息 Switch Off 掉(从Tcode OKKN-Misc.-Error Management 按钮也 可).*另外临时处理方法 一是将相关component的物料Cost 1 View 选上Do not Costing .对

19、需要计算标准成本的材料选上它就不再允许计算标准成本 ,不妥,但是对原材料无所谓,因为系统会这样处理,如此材料没维护价格,BOM用到它的成品不计算其成本,但是如此物料维 护了价格后,还是以物料价格为先的.(当然CK11N去估算此原材料是不行的,用户也不需如此 做).二是按SAP推荐的如果将 price设成0.01,price unit 设置成100.Case 2如何限定物料价格必须维护 .(1)对采用S price control 的.SAP默认是 Warning(Tcode :OMT4 M3-132,如需要限定必须维护价格,将其改成W就可. 对采用V price control 的,OMT4找

20、不到其消息号 M3-131,但系统默认是 Warning,如果用户认为也有相关配置就有犯了认为 SAP万能的错误,再次强调SAP只是一堆代码并不神秘.好让我们看看其逻辑.*实际上直接使用 SE16:T160M可直接配置MM目关.如图:1SE38找到程序LMG1仆01 2在此处设置断点3如价格为0(空格) 写死的,当然配置无效.再看S Price control( 如下图,显然从T160M表读了 IMG数据).IF STP_VPRSV = S AMD STF_STPRS = 0,MESSAGE E132 RAISING WO_OTRS. *uh zu 3. Od (- laut MH zulas

21、sig/ ist auch Ln MR21 erlaubt)Wegen Auiwartskoiipatibil 1 tat Message customizbar gemacht 55/111296 CALL FUNCTION J ME_CHECK_T160M |EXPORTINGI_ARBGB =IJSGNR = J132JI_MSGVS = 00* Messagevariante default 00JEXCEPTIONS恥THING = 00WARNING = 01ERROR = 02.CASE SY-SUBRC,WHEN 1.CASE F_MESSAGE.WHEN SPACE. MES

22、SAGE VI32*WHEN J IJ .MESSAGE 1132, WHEN JNJ ENDCASE.WHEN MESSAGE E132 RAISING NO_STPRS.ENDCASE.4灵活运用消息.对于消息的运用,除了可配置消息类别外,另外一个重要用处就在于,可根据消息找到程序弹出消息的确切行,然后稍微花点时间看看程序逻辑就可大概知道异常发生的根本原因 从某种程度来讲,即使对某模块很陌生,只要掌握得好,依旧可排除一些问题5配置自定义的消息.俩方法可模妨SAP勺消息配置1从上我们已经知道既然 T160M是可直接使用SE16维护的,我们就可直接将相关设置写入 T160M.然后就可根据相关设

23、置取得消息类别(如上图我们使用函数 ME_CHECK_T160M这样 比类似MESSAGE E017(ZFIMSG)Hard code要安全得多,假设不管三七二一就给 出错误消息,除非在程序中确信已考虑了所有情况,否则还是在T160M这样设置比较 好(万一在生产环境还可更改 E成W什么的).Data Browser: Table T16OM Select Entries 200 捻如 S S 3 H Check Table,.Table: T160MDisplayed fields: 6 of 6 Fixed coltunns: 4MANDTKSGVSARBGBHSGHRMSGTFMSGTYW

24、SJ2202202202202200000000000!?L3L3L9ZFIMSG伽438711040017$WE2我们知道T100C是所谓的可配置消息表,我们可使用SE16:T100C和V_T100C. (1)SE16:T100S定义消息可配置信息.如图1在此新建.(进去browse数据似乎不可新建)设置消息如下图.1Appl Area 消息类ZFIMSG. 2表示允许配置的消息类型 3没选则表示不能关闭消息Change View Configurable messages11: Overview? New Entries J H鳳H3Application AreaMsgfdoAllowe

25、dStandardSwitch offE1 1WY178WEW0*収179幅甲-WY1S2KE回ZFIMSG 11017EIAS 2 i 31J(2) SE16:V_T100C 配置消息.如图:1表示直接使用程序(Tcode)的消息类型2当当程序以BD(方式运行时的消息类型3 就是上图设置的允许的消息类型 ,可看到警告和关闭都没出现 (T100C没允许)i.Msfo017Message textUser NameOnline Batchi StandardESSD E3闔囲阳AS3MsgT Description呂1TEKT2ErrorsNote In windowTerminationNot

26、e in fooler回 2Message Control by User同样在程序中避免使用泪水 MESSAGE E017(ZFIMS而采用CALL FUNCTION READ_CUSTOMIZED_MESSAGEEXPORTINGI_ARBGB = ZFIMSGI_DTYPE =I_MSGNR = 017IMPORTINGE_MSGTY = SY-MSGTY.根据返回的SY-MSGT去判断消息类型将更好些.6实例介绍P(在有发票校验后禁止修改价格 ,假设无PO release策略,使用User-exit步骤如下:(1) 找合适的用户出口发现 EXIT_SAPMM06E_01 比较合适,SM

27、OD输入 enhancement name :MM06E005(2) 编写代码.*& *& In clude ZXM06U42 *& *DATA : ZWATEKPO like BEKPO ,ZIEINFO LIKE EINFO OCCURS 0 WITH HEADER LINE,ZERMSG(73) TYPE C.TABLES EKBE .*TEKPO records all the old PO item date .* I_EKPO records curre ntly processed PO item .READ TABLE TEKPO INTO ZWATEKPO WITH KEY

28、EBELP = I_EKPO-EBELP . *只对ME22才生效.CHECK SY-TCODE = ME22N .*EKBE是PO history 表,如有Q,R表示有发票校验历史,不允许更改价#SELECT SINGLE * FROM EKBEWHERE EBELN = I_EKPO-EBEL nAND EBELP = I EKPO-EBELPAND ( BEWTP = Q OR BEWTP = R).#CHECK SY-SUBRC = 0 .*如果SY-SUBRC二表示发票已经校验,不允许更改价格,否则还是可更改价格IF l_EKPO-NETPR ZWATEKPO-NETPR .* Ch

29、a nge eO17(ZFIMSG) accordi ngly* MESSAGE e017(ZFIMSG).使用下面函数代替.CALL FUNCTION READ_CUSTOMIZED_MESSAGEEXPORTINGI_ARBGB = ZFIMSGI_DTYPE =I_MSGNR = 017IMPORTINGE_MSGTY = SY-MSGTY.CHECK SY-MSGTY NE -.REFRESH ZIEINFO.ZIEINFO-MSGID = ZFIMSG.ZIEINFO-MSGNO = 017.ZIEINFO-MSGV1 = VAR1.ZIEINFO-MSGV2 = VAR2.APPEND ZIEINFO .CALL FUNCTION MESSAGE_GET_TEXTEXPORTINGIEINFO = ZIEINFOILANGU = SY-LANGUIMPORTINGETEXT = ZERMSG . MESSAGE ZERMSG TYPE SY-MSGTY .ENDIF.*在大多数情况下追踪消息能发现问题所在,然而在一些特定情况下 ,SAP显示的消息似乎和实际业务并不符合.好比一个人咳嗽的厉害,以为是感冒结果其实不过是有写异物进入其喉咙而已14. 使用用户授权15. 调用外部

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1