无差异市场营销案例:跟我学ABAP/4-初识ABAP

来源:百度文库 编辑:中财网 时间:2024/04/29 09:48:01

ABAP/4开发环境

  

ABAP/4表面看起来很简单,其实是一个复杂的语言。初学者常常感到很迷惑。只有知其然,你才能掌握这个语言。只有知其然并且知其所以然,你才能对这个令人兴奋的知识领域了解别人不了解的内容。

 正如熟练的程序员所知道的那样,初学者很快也会知道,创建ABAP/4程序不仅仅是创建一个程序。它常常涉及到创建开发对象(development object)用来支持所创建的程序。

  什么是R/3?

 R/3是为大公司数据处理所设计的一套集成的应用程序。是由德国的SAP公司开发的(SAPSystems Applications and Products for data processing)。R/3由运行环境和一组用SAP4GL语言ABAP/4编写的应用程序所组成。设计这些应用程序是为了满足大型商业应用数据处理的需要。R/3和其以前的版本R/2在制造业非常流行。

 R/3的目的是什么?

 R/3的唯一目的就是提供一组紧密集成的大型商业应用。这些应用是:

 

  • 生产计划(PPProduction Planning

     

  • 物料管理(MMMaterials Management
  • 销售和配送(SDSales and Distribution
  • 财务会计(FIFinancial Accounting
  • 控制(COControlling
  • 固定资产管理(AMFixed Assets Management
  • 项目管理(PSProject System
  • 工作流(WFWorkflow
  • ISISIndustry Solutions
  • 人力资源(HRHuman Resources
  • 工厂维护(PMPlant Maintenance
  • 质量管理(QMQuality Management

这些应用程序有时被称为R/3的功能模块。

 传统上我们是对单个模块进行评估,从多个软件供应商购买这些单独的模块,组装在一起成为数据处理应用。这样在这些单独的模块之间就需要接口。例如,物料管理需要与销售和财务联系,工作流需要从人力资源获得信息。在实施和维护这些接口时花费了大量的时间和金钱。

  R/3预置了大多数大公司需要的核心商业应用。这些应用在同一个环境下共存。它们使用的是单个数据库和一组数据表。数据库的大小在12G到接近3T之间。标准的R/3配置有大约8000个数据表。

 为什么我们需要知道这些功能模块?

 作为一个ABAP/4程序员,知道这些功能模块是重要的。这是因为这些功能模块都是完全用ABAP/4编写的。要想成为一个熟练的R/3开发者,就必须了解这些功能模块。

 例如,假定你已熟悉ABAP/4,要求你编写一个财务报表,对企业的每个供应商的年度借贷进行汇总。你或许知道如何编写ABAP代码,你知道如何才能满足这个需求吗?

 又或者你的工作是承担了用ABAP/4开发新的应用程序。要求你设计一个系统,向潜在的客户提供股票行情。如果你不了解财务和销售系统,你就不知道你将创建的东西是否在R/3中已经存在了。你也不知道是否已经有了R/3数据表,包含了与你要存储的数据有类似甚至相同类型的数据。这些功能模块是高度集成的。“我要建立自己的数据表,保存自己的数据拷贝”,抱有这样想法的开发者很快就会发现他的数据是多余的,必须与数据库的已有数据同步。这样建立的应用程序没有充分利用R/3环境的高度集成的特性。

 我指出这一点是因为许多希望成为独立的咨询顾问的开发者认为,只需学习ABAP/4就可以开发R/3应用。学习ABAP/4当然是一个很好的开始,但仅仅是一个开始。那些有兴趣成为ABAP/4咨询顾问的人常常忽视了在功能模块知识训练的重要性。虽然功能模块知识可以在实际的工作中学习,但是我希望表明的是,学习ABAP/4语言只是迈向SAP万里长征的第一步。如果你希望成为一个成功的独立咨询顾问,你就需要掌握功能模块知识。

 
了解Basis

 Basis就象是R/3的操作系统,它介于ABAP/4代码和计算机操作系统之间。因此,SAP喜欢称之为中间件。

 ABAP/4程序不能直接在操作系统上运行,需要一组程序(这组程序就是Basis)对其输入输出进行装载、解释和缓冲。

 Basis在某些方面有点像Windows环境。Windows启动后为Windows程序提供了运行环境。没有Windows,为Windows环境编写的程序就不能运行。

 Basis对于ABAP/4来说就象Windows对于Windows程序一样。BasisABAP/4

 程序提供了运行环境。没有BasisABAP/4程序就不能运行。当你启动R/3时,你可以认为启动了BasisBasis是一组带有接口的R/3系统程序,利用这些接口,用户就可以启动ABAP/4程序。

 为了安装Basis,安装者在操作系统的命令提示符下运行r3inst程序。像大多数安装过程一样,这将产生一个目录结构,并将一组可执行文件拷贝到这个目录结构。这些可执行文件作为一个整体就形成了Basis

 为了启动R/3系统,只需输入命令startsapBasis就被启动,处于运行状态,接受用户请求,运行ABAP/4程序。

 ABAP/4程序运行在保护性的Basis环境,它们不能在操作系统环境下运行。Basis读取ABAP/4代码,并向操作系统指令解释ABAP/4代码。

 ABAP/4程序不能直接访问操作系统的功能,而是利用Basis功能进行文件I/O和在窗口中显示数据。与操作系统的分离使得ABAP/4程序不用修改就可运行在任何支持R/3的系统上。能运行R/3的平台如下:

  1.1  R/3支持的平台和数据库

 

操作系统

 

 

支持的硬件

 

 

支持的前端

 

 

支持的数据库

 

 

AIX SINIX

 

 

IBM SNI SUN

 

 

Win 3.1/95/NT

 

 

DB2 for AIX

 

 

SOLARIS HP-UX

 

 

Digital HP

 

 

OSF/Motif

 

 

Informix-Online

 

 

Digital-UNIX

 

 

Bull

 

 

OS/2

 

 

Oracle 7.1

 

 

 

 

 

 

 

 

Macintosh

 

 

ADABAS D

 

 

Windows NT

 

 

AT&T Compaq

 

 

Win 3.1/95/NT

 

 

Oracle 7.1

 

 

 

 

 

Bull/Zenith

 

 

OSF/Motif

 

 

SQL Server 6.0

 

 

 

 

 

HP (Intel) SNI

 

 

OS/2

 

 

ADABAS D

 

 

 

 

 

IBM (Intel)

 

 

Macintosh

 

 

 

 

 

 

 

 

Digital (Intel)

 

 

 

 

 

 

 

 

 

 

 

Data-General

 

 

 

 

 

 

 

 

OS/400

 

 

AS/400

 

 

Win95 OS/2

 

 

DB2/400

 

 

 

 SAP提供了一组工具管理Basis系统。

 Basis支持客户机/服务器模式。R/3是三层客户机/服务器模式,这三层是:

 表示层服务器:实际上是一个程序sapgui.exe,提供用户界面。

 应用服务器:一组可执行文件,它们解释ABAP/4程序,管理输入/输出。配置文件application server profile定义了应用服务器启动时启动的程序。

 数据库服务器

 这三层可以位于一台电脑上,也可以位于两台电脑上,实际使用时一般是位于三台电脑上。

 client有关的数据表和与client无关的数据表

 R/3的数据表分为两类:与client有关的数据表和与client无关的数据表。一个数据表是与client有关的,如果它的第一个字段类型是CLNT。这种类型的字段长度总是3,约定它的名称是mandt

 R/3有三个系统:开发、测试和产品。缺省地,每个系统有三个client000001066。开发和测试系统一般有3-6client。产品系统一般只有一个client

 SAP Open SQL

 Open SQLANSI SQL的子集。ABAP/4程序中使用Open SQL使得代码不用修改就可在不同的数据库环境运行。

 初识ABAP/4

 开发对象包括programs, screens, tables, views, structures, data models, messages, includes

 ABAP/4程序主要有两种类型:

  

  • reports

     

  • dialog programs

report的目的就是从数据库中读数据,以及输出数据。它仅由两个屏幕组成:selection screenoutput screen

 selection screen:主要包含输入字段,允许用户输入产生报告的条件。

 output screen:最终的报告。

 selection screen是可选的。

 Dialog Programreport更灵活也更复杂。它可以包含任意数量的screenScreen sequence可以在运行时动态改变。在每一个screen中,可以有input fields, output fields, pushbuttons, 和多个scrollable area

 所有的开发对象及其组件都是存储在R/3数据库中,例如,report的源代码就是存储在数据表dd010s中。

 程序名由2-8个字符组成,用户程序名要以yz开头。A~X开头的程序是系统程序。

 选择三个字符作为你的程序名称的前缀,例如,zkg。在后面的叙述中,“输入程序名称abc”,你应该输入zkgabc

 示例程序命名为ztxccnncc是章号,nn是序号。练习中用到的程序命名为ztyccnn,答案中的程序命名为ztzccnn。实用程序命名为y—xxxxx

   系统变量以sy开头,所以datum表示当前系统日期,sy-uzeit表示当前系统时间。所有的系统变量都在DDIC structure syst。在select语句中,常用到两个系统变量sy-subrcsy-dbcnt。找到了记录时,Sy-subrc0;否则为4Sy-dbcnt表示找到的记录的序号,第一条记录为1,第二条记录为2,最后一条记录的序号也是记录数。

  使用chain operator

 冒号(:)成为chain operator,例如要定义两个表,可以用如下代码:

 tables ztxlfa1.

 tables ztxlfb1.

 也可以用如下代码:

 tables: ztxlfa1, ztxlfb1.

 Select有两种形式。

 第一种形式是:

 select * from t1 [into wa] [where f1 op v1 and/or f2 op v2 ...]

[order by f1].
    (other abap/4 statements)
    endselect.

第二种形式是:

 select * from t1 [into wa] [where f1 op v1 and/or f2 op v2 ...].

第一种形式可以提取多条记录,按主键查找,可以使用第二种形式,第二种形式只能提取一条记录,第二种形式比第一种形式更快。

 注释行用星号(*)和双引号(,如下所示:

 * This is a comment

tables ztxlfa1.     " This is also a comment

  ABAP/4程序的语句以英文句号结尾。

   

数据字典

 大多数ABAP/4程序都用到了数据字典(DDIC)对象。ABAP/4程序和DDIC对象的互锁机制使得深入了解R/3数据字典是基本的编程技巧。因此,从现在开始,我们将学习如何创建DDIC对象,例如table,data elementdomain

 Table的类型

 R/3中,有三种类型的tabletransparent tablepooled table,和 cluster table

 transparent table与数据库中的table有一对一的关系。他们有相同的名称,相同数量的字段,字段名也相同。transparent table用来存储应用数据,而pooled tablecluster table用来存储系统数据。

 pooled tablecluster table与数据库中的table有多对一的关系。他们可以有不同的名称,不同数量的字段,字段名也可以不同。

  Table Pool Pooled Table

 Table Pool是数据库中的一个table,它存储的是pooled tableR/3table pool存储大量的(数十到数千个)小table(每个只有10-100)Table pool减少了同时打开多个小table所需要的数据库资源。Pooled tableSAP主要用于存储定制数据。

 当安装一个大系统时,通常需要定制以便满足公司的特定需要。在R/3中,这是通过定制table实现的。定制table包含了编码、字段验证、数值范围以及R/3应用的参数。例如,定制table中包含了这样一些数据,国家编码、地区代码、汇率、折价方法等。

 系统初始实现时,功能分析员设置定制table中的数据。

 Table cluster cluster table

 Cluster table类似于pooled table。它们用来存储少数几个(大约2-10个)非常大的table。这几个表有相同的主键,需要同时访问它们。

 Table Cluster包含的tabletable pool少的多。与table pool不同,table cluster中的每个table有相同的主键,多个不同的table中有相同主键的行组成table cluster中的一行。Cluster table减少了读数据库的次数,从而提高了性能。

  Tablefield组成,创建field需要data elementData element包含了field标签和在线文档(也称为F1 help),field标签是field的文字说明,在屏幕上通常显示在field的左边,当光标在field输入栏时按F1键就显示F1 help

 Data element的定义要求domainDomain包含了field的技术特性,即字段长度和数据类型。

 Domaindata element是可重用的。一个Domain可以用于多个data element,一个data element可以用于多个field和多个table

 R/3预置了13000多个domain

  

3.1  Table, Field, Data Element, Domain命名约定

 

 

Object Type

 

 

Max Name Length

 

 

Allowed First Character

 

 

Table

 

 

10

 

 

y, z

 

 

Data element

 

 

10

 

 

y, z

 

 

Domain

 

 

10

 

 

y, z

 

 

Field

 

 

10

 

 

Any character

 

 

 

 

 

Field可以用除了保留字以外的任何字符开头,DDIC table trese包含了这些保留字。

  

创建的对象必须激活(activate)才能使用,对象修改后必须重新激活变更才有效。

  

浏览数据表数据的事务有四个SE16SE17SM30SM31