abapgb2.docx
- 文档编号:5012804
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:69
- 大小:1.22MB
abapgb2.docx
《abapgb2.docx》由会员分享,可在线阅读,更多相关《abapgb2.docx(69页珍藏版)》请在冰豆网上搜索。
abapgb2
1.ABAP/4Introduction
Introduction
ABAP/4(AdvancedBusinessApplicationProgramming)是SAP/R3目前唯一的系统发展工具,
属4GL,语法比较近似VisualBasic或JAVA,和传统third-generation语言,如C,PASCAL
有很大不同,在程序模块(ProgramStructureModule)可分以
下三个部分:
1.Sequentialcodingwithinprocessingblock
与一般语言语法近似,如IF,WHILE等,但并没有GOTO命令
2.Reports
调用一个独立的事件(DependingEvent),读取database产生资料列表
3.Dialog
屏幕参数输入的对话框,专门处理database读取或异动的tranactionprocess
BasicLanguangeOverview
1.dataelement定义方式,如数值,字符变量定义
2.运算符(operate)使用,如+-*/
3.Controlelement使用,如Boolean值
4.特殊资料格式,如日期与时间
5.字符串处理function,如部分字符串的截取
6.子程序或自定函数的调用
7.SQL语法使用
8.资料结构的使用,如processinternaltable的定义与使用
ReportsOverview
1.ReportsTask,如报表屏幕预览或印表机列印的选择
2.Reports模快是一个Stand-along程序,
3.database读取方式,如可定义logicaldatabase(与磁盘的physicalstorage对映)
4.报表资料的计算与产生
5.报表的输出
DialogOverview
1.专处理database的读取与异动,如使用SQL指令
2.Dialog不是一个Stand-AlongProgarm,使用transactioncode来产生屏幕对话框
3.由flowlogic控制,flowlogic分成PBO(ProcessBeforeOutput)与PAI(ProcessAfterInput)
2.BeginToProgramming
2.1ABAP/4Editor
CreatingABAP/4Program
使用ABAPWorkbench编写程序(ChooseTools->ABAP/4Workbench,TransactionCode:
S001),屏幕如下:
可分成:
1.ABAP/4Editor:
针对简单的报表或程序,仅使用几个元件或不使用
2.ObiectBrowser:
针对复杂的报表或程序,如DialogTransactionModule编写
使用ABAP/4Editor编写程序
1.ABAP/4Editor画面如下(TransactionCode:
SE38):
2.输入程序名称,如果是新程序,按下"Create",如果修改已存在程序,则按下"Change"或F6键
在命名规则上,Reports程序为Yaxxxxxx或Zaxxxxxx,a表applicationmodule简称,如s表SD
Dialog程序为SAPMYxxx或SAPMZxxx
3.输入程序Attribute
(1).Title:
程序描述或功能说明
(2).Type:
Executemode:
1:
Stand-alongProgram如Reports
I:
IncludeProgram
M:
ModulePool
F:
FunctionGroup
S:
SubroutinePool
(3).Status:
Programdevelopmentstatus:
P:
SAPstandardproductionprogram
K:
Customerproductionprogram
S:
Systemprogram
T:
Testprogram
(4).Application:
程序所属的applicationmodule,如F表Financeialacounting
(5).Developmentclass:
用於同一系统中各个program,如果不属任一class,可使用$TMP
4.编写SourceCode
Program之後接的是程序名称,Write是显示的意思,会将所接的字符串在屏幕上显示,注意每一
行最後要有一个.(点),表示命令的结束,储存後回ABAP/4Editor画面
5.执行程序
按"Execute"或F8键,屏幕可见执行所得的结果
重要的编辑键
key
Function
F8
F5
F11
CTRL+F11
执行程序
复制游标所在列的内容
储存档案
删除游标所在列
2.2ABAP/4DataElement
DataType
ABAP/4的资料类型可分成:
TypeLengthRangeInitialValueDescription
C11-65535ByteSpace字符串资料,如'Program'
D88Byte'00000000'日期资料,格式为YYYYMMDD
F88Byte0浮点数
I4-2^31至2^31-10整数
N11-65535Byte'00…0'数值所组成的字符串
P81-16Byte0Packed数,用在小数点数
T66Byte'000000'时间资料,格式为HHMMSS
X11-65535ByteX'00'16进位数
变量定义
变量定义包含name,type,length和structure四个部分,使用DATA指令,
如:
DATA:
S1TYPEI,
SUMTYPEI.
常数定义
常数定义使用CONSTANTS指令,如定义PI是一个小数点5位的值3.14159,
CONSTANTSPITYPEPDECIMALS5VALUE'3.14159'.
系统所定义资料
这是由系统所定义的专有名辞,如:
SPACE空白字符串
SY-SUBRC系统执行传回值,0表示成功
SY-UNAMElogon帐号
SY-DATUM系统日期
SY-UZEIT系统时间
SY-TCODE目前的transactioncode
TYPE命令
用来指定资料类型或定义自定资料类型
Example:
TYPES:
BEGINOFMYLIST,
NAME(10)TYPEC,
NUMBERTYPEI,
ENDOFMYLIST.
DATALISTTYPEMYLIST.
LIKE命令
跟TYPE命令使用格式相同,如
DATATRANSCODELIKESY-TCODE.
不同的是LIKE用在已有值的资料项,如系统变量,而TYPE命令则是用在指定资料类型。
DATA命令
语法:
DATA
变量名称,最长30个字符,不可含有+.,:
()等字符
资料类型及长度,如LINE(20)TYPEC.MYNAMELIKESY-UNAME.
初值
小数位数
Example:
DATA:
COUNTERTYPEPVALUE1,
FLAGTYPECVALUEISINITIAL,
WEIGHTTYPEPDECIMALS2VALUE'1.25'.
栏位变量的定义:
DATA:
BEGINOFADDRESS,
NAME(10)TYPEC,
NUMBERTYPEP,
ENDOFADDRESS.
使用时用栏位变量加上元件名称,如ADDRESS-NAME
CONSTANTS命令
用来定义常数
语法:
CONSTANTS
Example:
CONSTANTS:
CNAME(10)VALUE'关云长',
BIRTH_DAYTYPEDVALUE'19650201'.
STATICS命令
定义的变量仅在目前的程序中使用,结束後会自动释放
语法:
STATICS
TABLES命令
用来定义TableWorkArea的资料,对映至ABAP/4资料档(DictionaryObject),
由SQL指令载入所需资料
语法:
TABLES
Example:
TABLES:
SPFL.
SELECT*FROMSPFL.
WRITE:
SPFL-MANDT,SPFL-CARRID,SPFL-CONNECTION.
ENDSELECT.
从ABAP/4Dictionary的SPFL档载入MANDT,CARRID,CONNECTION三个栏位至
SPFL此TableWorkArea
2.3OutputtingDatatoScreen
Write命令
ABAP/4用来在屏幕上输出资料的指令是Write指令
语法:
Write资料项
资料项可以是常数或变量,如:
WRITE'Thisissample'.
WRITE:
'COMPANY:
',STFL-CARRID.
指定屏幕位置显示
语法:
WriteAT[/][
/:
先往下一列
pos:
屏幕X轴座标
(len):
显示资料的长度
Example:
WRITE'FirstLine'.
WRITE/6'SecondLine'.
输出结果:
FirstLine
SecondLine
DATA:
NUMBERTYPEIVALUE'1234567890'.
TEXT(10)VALUE'ABCDEFGHIJ'.
WRITE:
(5)NUMBER,/(6)TEXT.
输出结果:
*7890
ABCDEF
指定显示格式
语法:
WRITE资料项<显示格式参数>
显示格式参数:
LEFT-JUSTIFIED资料靠左显示
CENTERED资料靠中间显示
RIGHT-JUSTIFIED资料靠右显示
UNDER
NO-GAP紧接着显示,不留空格
USINGEDITMASK
20:
30
USINGNOEDITMASK不使用内嵌字符
NO-ZERO数字前面0的部分不显示
NO-SIGN不显示正负号
DECIMALS
EXPONENT
ROUND
CURRENCY
DD/MM/YY日期显示格式
MM/DD/YY
DD/MM/YYYY
MM/DD/YYYY
DDMMYY
MMDDYY
YYMMDD
Example:
DATA:
XTYPEIVALUE'112030',
A(5)VALUE'ABCDE'.
WRITEXUSINGEDITMASK'__:
__:
__'.
输出结果为11:
20:
30
WRITEXUSINGEDITMASK'$___,___'
输出结果为$112,030
产生空白列
产生n个空白列
语法:
SKIP[
Example:
WRITE'PASS1'.
SKIP.
WRITE'PASS2'.
输出结果为:
PASS1
PASS2
显示图示
可以显示R/3系统所提供的符号或图示
语法:
WRITE
WRITE
Example:
INCLUDE
INCLUDE
WRITE:
/'PhoneSymbol:
',SYM_PHONEASSYMBOL.
WRITE:
/'AlarmIcon:
',ICON_ALARMASICON.
执行结果:
要查看系统所提供有那些符号及图示,可选择"Edit"下的"InsertStatement",选择"WRITE"
接下来选择要查的群组,如SYMBOL或ICON,按下"Display"即可.
跳至指定列座标
将座标跳至指定的Y轴列座标
语法:
SKIPTOLINE[
Example:
SKIPTOLINE5.
WRITE'PASS1'.
显示CHECKBOX资料
以字符串资料内容的第一个字符为CHECKBOX的输出,如果是空白,CHECKBOX显示
为空白,相反则显示X,可用在逻辑判断检查
语法:
WRITE<资料项>ASCHECKBOX.
Example:
DATA:
FLAG1VALUE''.
FLAG2VALUE'X'.
WRITE:
/'CHECKFLAG1:
',FLAG1ASCHECKBOX.
WRITE:
/'CHECKFLAG2:
',FLAG2ASCHECKBOX.
执行结果:
2.4ProcessingData
AssignValue
语法:
MOVE
将F1的值存至变量F2中,也可写成F2=F1
Example:
M_NAME='CHER'.
使用Offset
语法:
MOVE
Example:
DATA:
F1(10)VALUE'ABCDEFGHIJ'.
F2(5).
F2=F1+3(5)."自第4个位置开始取出5个字符
F2的内容会变成DEFGH
FieldString元件的复制
语法:
MOVE–CORRESPONDING
将Strings1中的field元件的资料复制至String2中,仅复制相同名称的元件
Example:
DATA:
BEGINOFADDRESS,
FIRSTNAME(10)VALUE'LULU',
LASTNAME(10)VALUE'CHOU',
TEL(12)VALUE'4660570',
ENDOFADDRESS.
DATA:
BEGINOFNAME,
FIRSTNAME(10),
LASTNAME(10),
E_MAIL(30),
ENDOFNAME.
MOVE-CORRESPONDINGADDRESSTONAME.
NAME-FIRSTNAME变成'LULU',NAME-LASTNAME变成'CHOU',
而NAME-E_MAIL则不变
变量CALLBYVALUE的使用
在变量的使用上,可以使用类似CallByValue的方法
语法:
WRITE(
Example:
DATA:
NAME(20)VALUE'SOURCE',
SOURCE(10)VALUE'LILY',
TARGET(10).
WRITE(NAME)TOTARGET.
WRITE/TARGET.
屏幕可印出LILY
清除变量内容
语法:
CLEAR
清除变量现在内容,恢复成初值
Example:
DATANTYPEIVALUE100.
CLEARN.
变量N的内容变成0
算术符号
**乘幂
*乘
/除
+加
-减
DIV整数除法
MOD余数除法
数值函数
1.ABS(N):
传回数值N的绝对值
2.SIGN(N):
1ifN>0
0ifN=0
-1ifN<0
3.CEIL(N):
传回大於数值N的最小整数
Example:
WRITECEIL(-5.65)印出–5.00
WRITECELL(4.54)印出5.00
4.FLOOR(N):
传回小於数值N的最大整数
Example:
WRITEFLOOR(-5.65)印出–6.00
WRITEFLOOR(4.54)印出4.00
5.TRUNC(N):
传回数值N的整数部分
Example:
WRITETRUNC(5.65)印出5.00
6.FRAC(N):
传回数值N的小数部分
Example:
WRITEFRAC(5.65)印出0.65
7.COS(A),SIN(A),TAN(A):
传回三角函数cosA,sinA,tanA的值,A为弪度量
8.EXP(N):
传回e^N值
8.LOG(N):
传回logeN值
9.LOG10(N):
传回logN值
10.SQRT(N):
传回N的平方根值
日期与时间运算
1.日期资料的运算
日期资料可以直接运算,如加法与减法的运算
Example:
DATA:
MdataTYPED.
Mdate=SY-DATUM."如传回19971015
Mdate+6
(2)='01'"Mdate变成19971001
Mdate=Mdate-1"Mdate变成19970931
2.时间资料的运算
时间格式为'hhmmss',如'212030'表'21:
20:
30'
Example:
DATA:
HOURSTYPEI,
MINUTESTYPEI,
T2TYPETVALUE'200000',
T1TYPETVALUE'183000'.
HOURS=(T2-T1)/3600."计算有几小时
MINUTES=(T2–T1)/60."计算几分钟
字符串资料处理
1.字符串移位
语法:
SHIFT
(1).空白,字符串往左移一位
(2).LEFT,字符串往左移n位
(3).RIGHT,字符串往右移n位
(4).CIRCULAR:
字符串以环状方式移位
Example:
DATASTRING(10)VALUE'ABCDEFGHIJ'.
SHIFTSTRING."得到BCDEFGHI'
SHIFTSTRINGBY2PLACESRIGHT."得到ABCDEFGH
2.取代字符串内容
语法:
REPLACE
将字符串
Example:
DATA:
STRING(10)VALUE'ABCDEFGHI',
STR1(3)VALUE'DEF',
STR2(3)VALUE'123'.
REPLACESTR1WITHSTR2INTOSTRING.
WRITE/STRING."得到ABC123GHI
3.大小写的转换
语法:
TRANSLATE
TRANSLATE
4.在字符串中寻找部分字符串
语法:
SEARCH
Example:
DATASTRING(10)VALUE'ABCDEFGHIJ'.
会回存至两个变量,SY-SUBRC和SY-FDPOS,若找到则SY-SUBRC为0
SY-FDPOS存开始位叠,若找不到则SY-SUBRC为4,SY-FDPOS为0
5.字符串长度
STRLEN(
Example:
INT=STRLEN('XYZABC')."得到6
INT=STRLEN('ABC')."得到3
6.取部分字符串
Example:
DATAT(10)VALUE'ABCDEFGHIJ'.
WRITE/T+2(4)."得到CDEF
7.连接字符串
CONCATENATE]
DATA:
C1(10)VALUE'Sum',
C2(3)VALUE'mer',
C3(5)VALUE'holi',
C4(10)VALUE'day',
C5(30),
SEP(3)VALUE'-'.
CONCATENATEC1C2C3C4INTOC5.
WRITEC5.
CONCATENATEC1C2C3C4INTOC5SEPARATEDBYSEP.
WRITE/C5.
该过程的输出如下:
Summerholiday
Sum-mer-holi-day
在C1到C5之间,忽略尾部空格。
分隔符SEP保留尾部空格。
19
8.压缩字符串内容
要删除字符字段中多余空格,请使用CONDENSE语句,用法如下:
语法
CONDENSE
该语句去除字段
结果是左对齐单词,每
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- abapgb2