转:SAP学习笔记(from 神话blog)

SAP学习笔记
作者:神话 日期:2006-01-03

SAP学习笔记
1.如何进行Client的Copy?
 用户(sap*)登录已经存在的Client(如:000),然后用T—CODE(SCC4)或菜单(Tools->Administration-> Administration-> Client Administration->Client Maintenance)进行新Client的创建(如:创建一个新的Client《008》);
 用SAP*登录已经创建的新的Client《008》,然后进行Client Copy,即用T—CODE(SCCL)或者菜单(Tools->Administration-> Administration-> Client Admin->Client Copy->Local Copy/Remote Copy) 进行Copy。[参数文件选择:SAP_ALL]

2.SAP的数据库是如何划分的?
SAP的数据库分为两部份,即Cross-Client和Client-Specific。Cross-Client包括Repository和其他一些东西,其中,Repository这部分组成数据字典;在Client-specific部分,包括应用程序和客户化的表。由于有了Client-specific部分,才使得各个用户的数据得以区分。

3.如何才能在Mini SAP中自由的进行软件开发?
 需要打补丁
 将补丁文件《MBSCORR01042000》拷贝到目录《transtmp》下;
 cd 和执行dbenv.cmd
 cd transtmp和执行....R3trans.exe -i MBSCORR01042000
 Program generate:
Logon on MBS as BCUSER;
execute Transaction SE38;
generate SAPLSTRD and SAPDBF1S
 DDIC不能进行软件开发,需要用BCUSER或者增加新的用户(通过su01)进行软件开发。
新增加的用户,需要进行Access Key才能进行开发;
BCUSER的Access Key:29671482393151224771

4.如何进入开发界面?
通过T—CODE(SE38)或者菜单(Tools->ABAP Workbench->Development->ABAP Editor就可以进入开发界面了。

5.ABAP4的命名程序规则是怎样的?
 使用至少1个但不超过8个字符。
 不要使用下列字符:句点(.);逗号(,);空格( );括号'('')';单引号(');双引号(");等号(=);星号(*);元音变音( , , , , , )和' ';百分号(%)和下划线(_):
 报表程序(以列表格式输出数据分析):Yaxxxxxx或Zaxxxxxx。用应用程序区的分类字母替换a。任何有效字符替换x。注意SAP报表程序遵守相似的命名约定:Raxxxxxx。
 任何其它ABAP/4程序(培训程序或事务程序):SAPMYxxx或SAPMZxxx。用有效字符替换x。注意标准SAPABAP/4程序遵守相似的命名约定:SAPMaxxx,其中a代表某应用程序区。

换行输出,用/就可以了,WRITE / ‘I am star.’

6.指定程序属性的一些关键内容?
进入程序开发界面,输入program名字后,进入程序属性界面(Program Attributes):
 Title(标题):必须输入项;
 Type(类型):包括Executable program(1:如同报表的独立程序)、INCLUDE program(I:包含程序)、Module pool(M:模块存储)
 Application(应用程序):该项能够使系统将程序分配给适当的业务区,如:选择Financial Accounting(F:财务会计)。
 Logical database(逻辑数据库):仅仅应用于应用程序中的报表程序。这个属性决定报表使用哪个逻辑数据库来检索数据,以及逻辑数据库属于哪个应用程序。应用程序中数据库名称必须是唯一的。但是,整个系统可以包括数个同名数据库,因此指定应用程序很重要。如果报表程序直接读取数据,而未使用逻辑数据库,则应该像通常一样指定应用程序,而将“逻辑数据库”字段置空。
 Selection screen(选择屏幕版本):仅仅应用于应用程序中的报表程序。如果没有指定选择屏幕版本,则系统在逻辑数据库选择标准、报表特定参数选项的基础上自动创建选择屏幕;如果想使用自己的选择屏幕,请输入号码同时该号码必须小于1000。
 Editor lock(编辑器锁定):如果设置此属性,则其他用户则不能修改、改名或删除程序。只有创建用户可以更改程序、维护属性、文本摘要及文档或者解除锁定。
 Fixed point arithmetic(定点算术):如果设置此属性,系统则根据小数点位数将类型P字段四舍五入,或用零填补。这种情况下,无论在用户主记录中指定了什么,小数点字符总是句点(.)。
 Start using variant(通过变式启动): 仅仅应用于应用程序中的报表程序。如果设置该属性,则用户只能通过使用变式启动报表程序。在启动程序之前,必须创建至少一个报表变式。

7.如何将事务代码分配给程序?
可以将事务代码分配给类型为Executable program(1)的单独程序,以后就将程序作为事务代码处理。通过T—CODE(SE38)或者菜单(Tools->ABAP Workbench->Development->other Tools->Transactions就可以了。

8.如何进行注释?
可以在程序的任意处插入注释行。在程序中有两种方法表明注释:
 如果要将整行变为注释,则在行开始处输入星号(*)。
 如果要将某行一部分注释,则在注释之前输入双引号(")。系统将由双引号标明的注释解释为空格。

9.预定义的数据类型有哪几种?
C(文本和字符):文本文字最长可达254个字符。如果需要非整型数值或较长的数字(如:'12345678901234567890'、'+0.58498'、'-8473.67'),则必须使用文本文字,该文本文字自动转换到正确的类型。同样,请使用文本文字表示浮点数值。
D:(日期):
F(浮点数): 对于正数和负数,类型F数值范围是1x10**-307到1x10**308,包括0(零)。精确范围近似为15位十进制数,这取决于硬件平台的浮点算法;由于是在内部将类型F数据转换为二进制系统,因此可能出现舍入误差。尽管ABAP/4处理器试图将这些影响减至最小,但是如果要求高精度,则不应该使用类型F数据。而应代之以类型P数据;如果需要大的数值范围,而且舍入误差不重要,则可以使用类型F数据。
I(整型):数值范围是-2**31到2**31-1并且仅包括整数;对算术运算的非整型结果(如分数)进行四舍五入,而不是截断;可用于计数器、项目号、索引和时间期段等。
N(数字文本):虽然由数字组成,但不包含数值,,但这些数字不用于计算。科目号和邮编是典型的类型。
P(压缩号):允许在小数点后有数字;类型P数据的数值范围取决于大小和小数点后的位数,有效大小可以是从1到16字节的任何值,将两个十进制数字压缩到一个字节,而最后一个字节包含一个数字和符号,在小数点后最多允许14个数字;使用类型P数据时,最好将程序属性设置为“定点算法”,否则,将类型P数字作为整型对待;类型P数据可用于如距离、重量和钱数等数值。
T(时间):
X(十六进制):

10.下面是系统字段示例:
SY-SUBRC返回代码值(0,如果操作成功)
SY-UNAME用户的登录名
SY-DATUM当前日期
SY-UZEIT当前时间
SY-TCODE当前事务

11.如何定义内部变量?
 DATA [()] [] [].
注:对于C和N型,如果length不输入,则默认长度为1;对于N型变量,如果值中包括字符,则字符不起作用,只输出数字。如果length大于实际内容的长度,则对于C型来讲,以空字符来填充,对于N型来说,对0来填充。如果指定长度,但未指定类型,则创建给定长度的字符字段。
 例子:Str=’ab123’,NStr = ‘1245ab3’,Int = 100
write 'This is star''s computer.'. 输出:This is star’s computer.
DATA Str type C. 输出:a
DATA Str(5) type C. 输出:ab123
DATA NStr type N. 输出:3
DATA NStr(7) type N. 输出:12453
DATA NStr1 like NStr value ’1234567’. 输出:1234567
DATA Int type I. 输出:100
DATA Pdat(10) type p value '9.876543210' decimals 9. 输出:9.876543210
CONSTANTS PI TYPE P DECIMALS 10 VALUE '3.1415926536'. 输出:3.1415926536
DATA MYNAME LIKE SY-UNAME. 与系统定义的对象SY-UNAME有一样的数据类型
 DATA SUM1 TYPE I.
DATA SUM2 TYPE I.
DATA SUM3 TYPE I.

DATA: SUM1 TYPE I,
SUM2 TYPE I,
SUM3 TYPE I,
是一样的,这就是链语句。

12.如何设置字段串和使用字段串?
DATA: BEGIN OF ADDRESS,
NAME(20) TYPE C,
STREET(20) TYPE C,
NUMBER TYPE P,
POSTCODE(5) TYPE N,
CITY(20) TYPE C,
END OF ADDRESS.
该示例定义了一个长度为73的字段串ADDRESS。可以通过ADDRESS-NAME、ADDRESS-STREET等定址组件。可以将长字段串的声明收集在包括程序中。但是,如果频繁使用该数据结构,则最好将它们保存在ABAP/4词典中。

13.LIKE参数,语法如下:DATA LIKE .
利用LIKE参数,可以将已定义数据对象的数据类型分配给变量。
LIKE参数常用于附属字段以临时保存数据库字段的内容。如果更改数据库字段的属性,则系统自动改写备份字段的属性。
可将任何数据对象用于。利用LIKE参数,可以引用在ABAP/4词典中声明的数据对象的数据类型。
如: DATA NUMBER_1 TYPE P.
DATA NUMBER_2 LIKE NUMBER_1.
DATA MYNAME LIKE SY-UNAME.

14.STATICS 语句:
如果要在过程的运行时间之外仍保留某变量的数值,可以在该过程中利用STATICS语句定义该变量。STATICS语句是DATA语句的变异。语法如下: STATICS [] [] [].
要在过程中将字段串定义为静态有效,请写:
STATICS: BEGIN OF ,
,
..............
END OF .

15.TABLES语句:TABLES
利用TABLES语句,可以创建称为表工作区的数据对象。表工作区是参考ABAP/4词典对象的字段串。
是ABAP/4词典对象的名称,同时也是创建的表工作区的名称。表工作区组件的顺序和名称与在ABAP/4词典中声明的对象相同。
要在ABAP/4词典中创建对象,步骤:Tools->ABAP Workbench->Development->ABAP Dictionary。
表工作区提供一个接口,通过该接口可以将数据从数据库表加载到程序,或利用开放式SQL语句修改数据库表的内容。
要显示表的组件及其数据类型的列表,请在ABAP/4编辑器的命令行中(选择“编辑->其它功能->命令输入”)键入“SHOW”。
要定址表工作区的组件,可以将表名作为前缀,然后用连字符添加组件:dbtab>-
例子:TABLES: SPFLI.
Select * FROM SPFLI.
WRITE: SPFLI-MANDT, SPFLI-CARRID, SPFLI-CONNID, ......
ENDSelect.
示例中,TABLES语句创建表工作区SPFLI。SPFLI与ABAP/4词典中声明的数据库表SPFLI结构相同。在Select循环中,用属于数据库表SPFLI的行填充表工作区SPFLI。

15.TYPES语句:使用TYPES语句创建用户定义的基本数据类型和结构化数据类型。
TYPES: SURNAME(20) TYPE C,
BEGIN OF ADDRESS,
NAME TYPE SURNAME,
....
END OF ADDRESS.
通过TYPES定义的类型不能直接使用,需要通过DATA进行定义其对应的变量后,使用其变量。

DATA: ADDRESS_1 TYPE ADDRESS,
ADDRESS_2 TYPE ADDRESS.

16.内表示例:下列程序是有关如何将结构化数据对象声明为内表的示例。
PROGRAM SAPMZTST.
TYPES: BEGIN OF MYSTRING,
NUMBER TYPE I,
NAME(10) TYPE C,
END OF MYSTRING.
TYPES MYTAB TYPE MYSTRING OCCURS 5.
DATA STRING TYPE MYSTRING.
DATA ITAB TYPE MYTAB.
STRING-NUMBER = 1. STRING-NAME = 'John'.
APPEND STRING TO ITAB.
STRING-NUMBER = 2. STRING-NAME = 'Paul'.
APPEND STRING TO ITAB.
STRING-NUMBER = 3. STRING-NAME = 'Ringo'.
APPEND STRING TO ITAB.
STRING-NUMBER = 4. STRING-NAME = 'George'.
APPEND STRING TO ITAB.
LOOP AT ITAB INTO STRING.
WRITE: / STRING-NUMBER,STRING-NAME.
ENDLOOP.
该程序在屏幕上产生下列输出:
1 John
2 Paul
3 Ringo
4 George
示例中,首先将数据类型MYSTRING定义为字段串。然后,根据字段串MYSTRING,用TYPES语句的OCCURS参数将数据类型MYTAB定义为内表。利用数据类型MYSTRING和MYTAB声明数据对象STRING和ITAB。然后逐行填充内表ITAB的字段。通过使用字段串STRING,在屏幕上显示ITAB的内容。

17.TYPE或TYPES所定义的变量不能直接赋值,只能通过DATA针对TYPE所定义的用户类型进行定义变量,然后使用这个变量。

18.如何确定数据对象的长度?
Data: text(8),len type i. //定义了两个变量
Describe field text length len. //将变量text的长度存放于变量len中
Write len. //打印变量text的长度值

19.如何确定数据对象的类型?
DATA: TEXT(8) TYPE N, TYP. //定义了两个变量TEXT和TYP
DESCRIBE FIELD TEXT TYPE TYP. //将变量TEXT的类型存放于变量TYP中 
WRITE TYP. //打印变量TEXT的类型

19.如何确定数据对象的输出长度?
Data: text type f, len type I, out-len type i. //定义了三个变量
Describe field text length len output-length out-len. //将变量text的长度存放于变量中
Write: len,out-len. //打印变量text的长度值

20.如何确定数据对象的小数位数?
Data: text type p decimals 2,dec. //定义了两个变量
Describe field text decimals dec. //将变量text的长度存放于变量中
Write: dec . //打印变量text的长度值

21.如何确定转换例程?
Data: text type n, exam type i. //定义了两个变量
Describe field text edit mask i. //将变量text的长度存放于变量中
Write: i . //打印变量text的长度值

时间: 2024-10-25 06:15:50

转:SAP学习笔记(from 神话blog)的相关文章

作为一个新手的Oracle(DBA)学习笔记

Oracle数据库笔记 Jack Chaing 作者QQ595696297 交流群 127591054 祝大家学习进步. 如果大家想看Word版本的可以去下载:Word排版比较清晰一些. http://download.csdn.net/detail/jack__chiang/9810532 此笔记是作者本人去年开始从一个DBA新人的学习笔记,积累至今,希望拿出来给那些对DBA有兴趣的童孩学习,大家一起努力嘛. 此笔记记录了作者工作学习中从零基础的学习的记录,和从中遇见的问题与问题的解决!很高兴

kvm虚拟化学习笔记(五)之windows虚拟机性能调整

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1290682 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linuxkvm虚拟机安装htt

FreeMaker学习笔记

        4年前,我一直都在QQ空间发布学习日志,想想那是自己真傻,为什么会选择在QQ空间发布呢,太不专业了,开始鄙视自己了.这是一篇有关FreeMarker的学习笔记.            晚上回家不知道干嘛,就随便看了下FreeMaker开发指南这本电子书,大概看了一个多小时.不知道是文档写的太通俗了,还是我理解能力好,很快就上手写了些笔记和测试demo,觉得有必要做个记录.        也许你会问FreeMaker是什么,它是干嘛用的?我就不去网上copy那些废话了,我的理解是它

Django学习笔记

1. 学习历程 从学了Python以来,我都一直想着用它来做点什么.从开始用python来写简单的工具脚本,然后再是网络信息抓取程序. 听说可以用Python来做网站,所以我了解了一下web.py与Django.第一次接触Django,由于没有网络方面的基础,所以没弄两下就放弃了. 后来,我研究了一下Python自来的SimpleHTTPServer,然后读懂了CGIHTTPServer,才对Web的实质有了了解. 在这个基础上,我再次重拾Django.这次,终于学会了. 原来它是那么的美妙!

kvm虚拟化学习笔记(二)之linux kvm虚拟机安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1289627 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linuxkvm虚拟机安装htt

kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1290191 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 h

Swift学习笔记(3)iOS 9 中的网络请求

Swift学习笔记(3)iOS 9 中的网络请求 目录 Swift学习笔记3iOS 9 中的网络请求 目录 编码方法 请求方法 其他修改 完整代码 运行结果 编码方法 在iOS9中,以前常用的stringByAddingPercentEscapesUsingEncoding方法被废除了,取而代之的是stringByAddingPercentEncodingWithAllowedCharacters方法. 用法示例: var strURL=String(format:"http://blog.cs

kvm虚拟化学习笔记(十五)之kvm虚拟机动态迁移

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1300783 相比KVM虚拟机静态迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机动态迁移无需拷贝虚拟磁盘文件,但是需要迁移到的虚拟主机之间需要有相同的目录结构虚拟机磁盘文件,本文这部分内容通过nfs来实现,当然也可以采用GFS2集群文件系统来实现,本文的动态迁移是基于共享存储动态迁移. KVM动态迁移目前有两种,一种是基于

kvm虚拟化学习笔记(十六)之kvm虚拟化存储池配置

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1304196 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linuxkvm虚拟机安装htt