用户(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》拷贝到目录《
cd
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参数常用于附属字段以临时保存数据库字段的内容。如果更改数据库字段的属性,则系统自动改写备份字段的属性。
可将任何数据对象用于
如: 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词典中创建对象,步骤: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的长度值
25.abap运行时间
ABAP/4的程序会需要花费大量的时间执行,而且会使其它进程被迫暂停以等待当前程序运行结束。这里提供一些建议以提高你的程序运行速度和系统荷载。
a.最主要的是尽量减少I/O操作,然后是内存占用,在再就是CPU的负载。类似对硬盘的读写的I/O操作是最耗费时间的。如果对内存的操作不加以控制,可能有些时候不得不对硬盘的交换空间操作,这样就增加了对磁盘的I/O读写操作。
CPU的负载可以通过优化程序来改善,在程序中尽量使用诸如SUM(SQL语句)或者COLLECT(ABAP语句)。
b.Field-groups对于多层次的排序和显示是非常有用的。它是将数据写入系统的页面文件,而不是内存(内表是使用内存的)。基于这个原因,field-groups比较适合于处理大量数据的列表(一般超过50000条记录)。如果涉及大量的数据处理,应该首先和系统管理员协商来决定这个程序最多能使用多少内存,以计算这个程序需要使用多少资源。然后你就可以决定是把数据写入内存还是交换空间。
c.尽可能多地使用表的键值作为Where分句的条件选项。尽可能让程序只读取一定范围内的记录(比如说,你只准备操作一个月之内的业务数据,那么对于这一个月的业务就应该有一定的范围取值,如1000~2000。)
d.尽量使用这样的选择语句select A B C INTO TABLE ITAB。
e.尽量把更多选择项放在用户选择界面上,以避免程序一次选出大量的数据。
f.用OCCURS NUM_RECS声明内表,NUM_RECS参数是你估计(或希望)使用到的数据条数。如果使用到的记录条数超出NUM_RECS参数的限制,数据将被存放在硬盘上的交换空间(不是内存)。
g.尽量使用select A B C INTO TABLE ITAB这样的语句。这个操作会将所有符合条件的数据一次性地读进内表,这比在select A B C INTO ITAB... ENDselect的循环中添加数据到内表要快。请注意,这里声明的内表还应该符合第6条的条件。
h.如果读出的记录条数在持续增长,你应该把这些数据分割成几个固定大小的数据块。比如说,你想调出一年的数据,就可以按照月份把一年的数据分成12个月调出。这样做能减少I/O的操作。
i.学会用效率比较高的COLLECT语句。
j.尽可能使用select SINGLE语句。
j.许多表包括TOTAL字段(比如GLT0表,包含了各科目按财务期间存放的改期借方和贷方的发生额)。使用这些表可以省去在程序中计算和值的过程。
ABAP原程序中直接使用structure 和function。se30,bc490,bc420