三个月精通SAP开发ABAP解析文档格式.docx

上传人:b****2 文档编号:801960 上传时间:2023-04-29 格式:DOCX 页数:72 大小:1.11MB
下载 相关 举报
三个月精通SAP开发ABAP解析文档格式.docx_第1页
第1页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第2页
第2页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第3页
第3页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第4页
第4页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第5页
第5页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第6页
第6页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第7页
第7页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第8页
第8页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第9页
第9页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第10页
第10页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第11页
第11页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第12页
第12页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第13页
第13页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第14页
第14页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第15页
第15页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第16页
第16页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第17页
第17页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第18页
第18页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第19页
第19页 / 共72页
三个月精通SAP开发ABAP解析文档格式.docx_第20页
第20页 / 共72页
亲,该文档总共72页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

三个月精通SAP开发ABAP解析文档格式.docx

《三个月精通SAP开发ABAP解析文档格式.docx》由会员分享,可在线阅读,更多相关《三个月精通SAP开发ABAP解析文档格式.docx(72页珍藏版)》请在冰点文库上搜索。

三个月精通SAP开发ABAP解析文档格式.docx

2.ABAP开发环境的建立

一个ABAP顾问和我讨论说,大学毕业我做ABAP开发不久做了顾问,薪资相当可观,最要好同学在unix平台下写Cobar组件,薪资却并不理想.

从技术角度,我认为使用C++写组件肯定比ABAP开发难度要高,用其人话说他是坐的庙好.是的,SAP行业特别是早些年是个被异化的行业,人们可看到某些人出于经济目的铺天盖地的对ERP不正确的宣传,这同样反应在IT各行业,”拿到XX牌Route认证,拿到XX网络认证,拿到XX数据库认证,拿到XX管理学位年薪基本的都在十几万以上”,现在人们发现实际不是这回事,从现在,SAP也已经开始降温了,我想这趋势还会持续.

和学习其它语言唯一不同的是,ABAP是集成在SAP基础平台系统中的,为了学习ABAP,你必须安装一套SAP(可选择R/3,miniSAP,或IDES),而通常的情况是安装光盘渠道比较难找(只有一些大企业实施了SAP才可能有,而且还必须注意版权问题,其他开发工具随便都可找到安装程序),对想学习ABAP的程序员这是个主要门槛.

掌握基本的ABAP开发环境对ABAPer是有益的,似乎多数ABAPer对底层并不感兴趣,

3.获得AccessKey.

4.ABAPworkbench和ABAPdictionary

 

5.第一个程序-HelloWorld.

如何进行ABAP开发呢?

本节使用老套的做法,介绍如何建立一个”HelloWorld”的ABAP程序,为了让读者尽快掌握ABAP开发熟悉ABAP开发环境是必须的,请看图1.5-1.

程序的原代码如下:

ReportZHELLO.

Write‘HelloWorld!

’.

按F8运行,运行成功在屏幕上显示HelloWorld!

的字样,恭喜你,第一个程序运行成功.

6.ABAP语法简介

数据类型

控制流程

文本摘要

输出格式

程序调试

7.OpenSQL和NativeSQL

8.内表和工作区

9.使用字段符号

10.模块化程序

11.文件处理

12.簇数据库和逻辑数据库

13.消息和错误处理

尽管消息这词还用在其他地方比如PO,SO打印传真等所谓的outputmessage(请看ABAP百夜谈),系统出现异常,在这里消息只谈在程序运行逻辑异常处理时的消息.

1定义消息(参考图7-7).

使用TcodeSE91可自定义包含多消息号的消息类,在图7-7中就定义了一个消息类ZFIMSG,同时消息号017中使用了俩&

消息变量

2运用消息.

1.可在程序Title中使用MESSAGE-ID加入消息类.

REPORTZMSGTESTMESSAGE-IDZFIMSG.

MESSAGEI017.

使用消息IMG有这样的画面,[1][2]的appl和workarea实际上对应的就是程序的message_id(SE91:

messageclass).

2.在程序Title中定义直接在语句中使用.

REPORTZMSGTEST.

MESSAGEI017(ZFIMSG).

1.将变量赋给消息.

MESSAGEI017(ZFIMSG)with‘Var1’‘Var2’‘Var3’.

或者

MESSAGEID'

ZFIMSG'

TYPE'

I'

NUMBER'

0171'

with‘Var1’‘Var2’‘Var3’.

尽管017只定义了两消息变量,但是可With多个值,当然只有前俩生效.

4.SAP程序消息类型有下列几种.

I:

信息窗口W:

警告E:

错误S:

成功A:

终止程序或TcodeX:

未知.

5.和标准SAP一样,你可配置消息,比如你需要由用户决定消息类型,使用下面程序.

PROGRAMZMSGTEST.

CALLFUNCTION'

READ_CUSTOMIZED_MESSAGE'

EXPORTING

I_ARBGB='

ZFIMSG'

I_DTYPE='

'

I_MSGNR='

017'

IMPORTING

E_MSGTY=SY-MSGTY.

假设你做了Tcode和OBA5一样可配置消息类型,在程序中你就可根据返回值SY-MSGTY判断下步工作,E停止处理,A退出程序等.

在标准程序中,接下来会PERFORMMESSAGE_SEND来决定发送消息类型.

3常用消息表格和各模块常用消息配置Tcode.

在消息配置中,ApplicationArea和SE91的MessageClass实际上是同一概念.

1消息相关最常用的table:

T100:

SAP能用到的消息都应该在此表中找到.

T160M:

MM模块相关消息表,此表可完全直接维护.就是说只要记住它,MM的消息配置直接使用SE16就可以.

T100C:

FI模块中用户自定义的消息,比如使用OBA5,OFMG等自定义的消息会写入此表,CO配置消息不在此表.

T100S:

此表保存着允许用户更改的应用区域和消息号,举例假设你删除了KI005则在OBA5中再不能配置此消息.(对MM模块有些例外,M7不在此表,使用OMCQ依旧可设置,M3不在此表,OMT4依旧可设置)

此表也可直接维护.和T160M不同的是,你必须在SE16输入T100S按新建按钮

才可维护.查询时只可Display.

T100U:

哪个用户最后更改了消息,从此表能找到.

T100W:

ForWorkflow

2常用Tcode(部分):

FI:

OBA5|OFMG|OFPM

MM:

OMRM|OKZZ|OMT4|OMCQ|O04C|

SD:

OVAH

CO:

OPR4_ACT|OPR4_CK|OPR4_CKML|OPR4_CKPF|OPR4_KKA|OPR4_KKP|OPR4_KKS|

OPR4_KKS1|OPR4_PPCOPP

Others:

OPR5|OPR1|OPR3|OPR6|OPR7|OPR8|OPR9|OPRCMFE|MSW1|MSW2

3应用举例.

物料价格维护问题

[Case1]如何在物料价格未维护时依旧可估算成本.

比如在CK11N(CK40N)计算成品标准成本时,其中有一些Component没维护价格.就可使用

OPR4_CK将默认的错误消息SwitchOff掉(从TcodeOKKN->

Misc.->

ErrorManagement按钮也可).

***另外临时处理方法一是将相关component的物料Cost1View选上DonotCosting.

对需要计算标准成本的材料选上它就不再允许计算标准成本,不妥,但是对原材料无所谓,因为系统会这样处理,如此材料没维护价格,BOM用到它的成品不计算其成本,但是如此物料维护了价格后,还是以物料价格为先的.(当然CK11N去估算此原材料是不行的,用户也不需如此做).二是按SAP推荐的如果将price设成0.01,priceunit设置成100.

[Case2]如何限定物料价格必须维护.

(1)对采用Spricecontrol的.SAP默认是Warning(Tcode:

OMT4M3-132,如需要限定必须维护价格,将其改成W就可.

(2)对采用Vpricecontrol的,OMT4找不到其消息号M3-131,但系统默认是Warning,如果用户认为也有相关配置就有犯了认为SAP万能的错误,再次强调SAP只是一堆代码并不神秘.好让我们看看其逻辑.

***实际上直接使用SE16:

T160M可直接配置MM相关.

如图:

[1]SE38找到程序LMG11F01[2]在此处设置断点[3]如价格为0(空格)

写死的,当然配置无效.

再看SPricecontrol(如下图,显然从T160M表读了IMG数据).

4灵活运用消息.

对于消息的运用,除了可配置消息类别外,另外一个重要用处就在于,可根据消息找到程序弹出消息的确切行,然后稍微花点时间看看程序逻辑就可大概知道异常发生的根本原因.从某种程度来讲,即使对某模块很陌生,只要掌握得好,依旧可排除一些问题.

5配置自定义的消息.

俩方法可模妨SAP的消息配置

1从上我们已经知道既然T160M是可直接使用SE16维护的,我们就可直接将相关设置写入T160M.然后就可根据相关设置取得消息类别(如上图我们使用函数ME_CHECK_T160M),这样比类似MESSAGEE017(ZFIMSG)—Hardcode要安全得多,假设不管三七二十一就给出错误消息,除非在程序中确信已考虑了所有情况,否则还是在T160M这样设置比较好(万一在生产环境还可更改E成W什么的).

2我们知道T100C是所谓的可配置消息表,我们可使用SE16:

T100C和V_T100C.

(1)SE16:

T100S定义消息可配置信息.

如图[1]在此新建.(进去browse数据似乎不可新建)

设置消息.如下图.

[1]ApplArea消息类ZFIMSG.[2]表示允许配置的消息类型[3]没选则表示不能关闭消息.

(2)SE16:

V_T100C配置消息.

[1]表示直接使用程序(Tcode)的消息类型[2]当当程序以BDC方式运行时的消息类型

[3]就是上图设置的允许的消息类型,可看到警告和关闭都没出现(T100C没允许)

同样在程序中避免使用泪水MESSAGEE017(ZFIMSG)而采用

根据返回的SY-MSGTY去判断消息类型将更好些.

6实例介绍

PO在有发票校验后禁止修改价格,假设无POrelease策略,使用User-exit步骤如下:

(1)找合适的用户出口

发现EXIT_SAPMM06E_017比较合适,SMOD输入enhancementname:

MM06E005

(2)编写代码.

*&

---------------------------------------------------------------------*

IncludeZXM06U42*

DATA:

ZWATEKPOlikeBEKPO,

ZIEINFOLIKEEINFOOCCURS0WITHHEADERLINE,

ZERMSG(73)TYPEC.

TABLESEKBE.

***TEKPOrecordsalltheoldPOitemdate.

***I_EKPOrecordscurrentlyprocessedPOitem.

READTABLETEKPOINTOZWATEKPOWITHKEYEBELP=I_EKPO-EBELP.

***只对ME22N才生效.

CHECKSY-TCODE='

ME22N'

.

***EKBE是POhistory表,如有Q,R表示有发票校验历史,不允许更改价##

SELECTSINGLE*FROMEKBE

WHEREEBELN=I_EKPO-EBELn

ANDEBELP=I_EKPO-EBELP

AND(BEWTP='

Q'

ORBEWTP='

R'

).

CHECKSY-SUBRC=0.

***如果SY-SUBRC=0表示发票已经校验,不允许更改价格,否则还是可更改价格##

IFI_EKPO-NETPR<

>

ZWATEKPO-NETPR.

***Changee017(ZFIMSG)accordingly

*MESSAGEe017(ZFIMSG)."

使用下面函数代替.

CALLFUNCTION'

CHECKSY-MSGTYNE'

-'

.

REFRESHZIEINFO.

ZIEINFO-MSGID='

ZIEINFO-MSGNO='

ZIEINFO-MSGV1='

VAR1'

ZIEINFO-MSGV2='

VAR2'

APPENDZIEINFO.

MESSAGE_GET_TEXT'

IEINFO=ZIEINFO

ILANGU=SY-LANGU

ETEXT=ZERMSG.

MESSAGEZERMSGTYPESY-MSGTY.

ENDIF.

***在大多数情况下追踪消息能发现问题所在,然而在一些特定情况下,SAP显示的消息似乎和实际业务并不符合.好比一个人咳嗽的厉害,以为是感冒结果其实不过是有写异物进入其喉咙而已.

14.使用用户授权

15.调用外部程序和程序动态生产

16.选择屏幕

17.使用程序运行变式

18.制作Tcode

二.加强篇.

1.CATT

2.BDC

3.制作程序的backgroundjob

4.SapScript

5.Smartform

6.SAPQuery

7.ALV编程

8.ALE/iDoc

9.Reportpainter和DrilldownReport

10.RFC/BAPI

11.编写用户增强

12.深入ABAP工作台

在这章将深入介绍各种ABAP对象的操作.

13.传输请求

这节并不是侧重介绍如何配置传输请求和其运行机制的,这通常是basis的工作和ABAPer并无关系,还是那句话,了解点大概是必要的.

通常企业起码会有两个系统,开发(测试)系统和生产系统(有些企业开发任务相对少,开发和测试使用同一台server甚至同一client,开发和测试也都有ABAPer完成),如果要严格开发流程,开发,测试必须是分开的(为了节省当然可使用同一server,不同的Client甚至用不同SystemNumber逻辑分成两Server),在此不深入讨论.

熟悉几个名词:

1开发类(DevelopmentClass).

开发类可简单理解为逻辑上相关的一组ABAP对象,在将来传输时将使用同一传输层.实际上开发类本身也可看做是一个ABAP对象,可使用SE80建立.

$TMP是本地开发类,属于此开发类的任何ABAP对象(包括自定义的表,编写的程序等都只能在Client做测试用而不能被传输到其他Client.

包现在被用来代退开发类.

2.包(Package)

相关的ABAP对象被组合在一个包内,SE16:

TADIR可看到被分配到某包的所有的ABAP对象,包决定了这些对象的传输层.

所有的包被存在表TDEVC中,建立包可使用SE80或直接使用SM30:

V_TDEVC.

包作为开发类的退代和前身有这么几个加强特征.

1.包可嵌套使用(这点类似Javapackage)

2.包类可包含最多本包中可见的对象,这些对象在包外不可见

这点类似私有对象(Privateobject),在OOP中也很常见.

3.包可为包接口定义使用访问授权.

4.通常自定义包必须是Y或Z前坠,这点和其他ABAP对象相同(包其实也可看做ABAP对象).其他一些包前坠A-S,U-X表示SAP标准包,T私有测试包,$本地临时包,/***名字空间前坠.

3.传输层(TransportLayer)

传输层决定包内对象是分配给本地还是可产生传输请求.

通常,开发系统都被分配了一个标准的传输层,当包被建立时,.它就被分配了一个标准传输层.包内对象也立即自动获得相关传输属性.

相关IMG配置使用的是标准的传输层.

通常由basis使用TcodeSTMS配置传输管理系统维护传输曾和路由.

图2.13-1,显示的是从DVU开发的程序传输到QAS和PRD的传输路由,在图中程序在DVUserver的client210,100开发后被传输到QASClient310测试,成功后被分别传入PRDClient800,810和820.

4.传输请求

程序是究竟保存在server的什么地方?

程序是如何在不同client和server之间进行传输的?

要明白这问题,首先让我们看看什么是传输程序和传输控制程序.

传输控制程序TP和R3TRANS传输程序,R3TRANS被用来实现SAP各Client间的数据传输和不同版本迁移,TP传输控制程序根据传输参数(TransportProfile)调用R3TRANS传输程序.

14.和其它语言的交互

VB,Delphi,Java其实开发工具使用都简单,别人都弄出开发环境都给弄出了,学用还会难吗?

三.实战篇

在这一篇将介绍企业常用模块开发实例,其中可能还涉及一些辅助相关后台配置,每个模块的8个实例是经过精心挑选出的具有相当代表性,由于篇幅原因和各个企业实际需求可能不一样,有的可能在本书只描述了设计思路和部分源代码,希望读者在实际运用中能自行完善并能举一反三.除非必要,尽量使用SAP标准的报表少自行开发,另外,如有可能,使用信息结构.

1.MM模块开发实例.

一.MM常用表格及其关联关系图

二.开发实例

下面是一个企业的参考MM开发需求清单(并不包括用户出口等).

供应商列表|信息记录|PR,PO打印(Scrip或

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2