ABAP入门.docx

上传人:b****3 文档编号:10400125 上传时间:2023-05-25 格式:DOCX 页数:81 大小:375.45KB
下载 相关 举报
ABAP入门.docx_第1页
第1页 / 共81页
ABAP入门.docx_第2页
第2页 / 共81页
ABAP入门.docx_第3页
第3页 / 共81页
ABAP入门.docx_第4页
第4页 / 共81页
ABAP入门.docx_第5页
第5页 / 共81页
ABAP入门.docx_第6页
第6页 / 共81页
ABAP入门.docx_第7页
第7页 / 共81页
ABAP入门.docx_第8页
第8页 / 共81页
ABAP入门.docx_第9页
第9页 / 共81页
ABAP入门.docx_第10页
第10页 / 共81页
ABAP入门.docx_第11页
第11页 / 共81页
ABAP入门.docx_第12页
第12页 / 共81页
ABAP入门.docx_第13页
第13页 / 共81页
ABAP入门.docx_第14页
第14页 / 共81页
ABAP入门.docx_第15页
第15页 / 共81页
ABAP入门.docx_第16页
第16页 / 共81页
ABAP入门.docx_第17页
第17页 / 共81页
ABAP入门.docx_第18页
第18页 / 共81页
ABAP入门.docx_第19页
第19页 / 共81页
ABAP入门.docx_第20页
第20页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ABAP入门.docx

《ABAP入门.docx》由会员分享,可在线阅读,更多相关《ABAP入门.docx(81页珍藏版)》请在冰点文库上搜索。

ABAP入门.docx

ABAP入门

 

ABAP/4语言入门

 

郑州三全食品股份有限公司信息部

内部培训教材

 

作者:

强晟

日期:

2006年8月2日

 

1.ABAP/4入门

&简介

ABAP/4(AdvancedBusinessApplicationProgramming)是SAP/R3目前唯一的系统开发工具,属4GL(第四代语言),语法比较近似VisualBasic或JAVA,和传统的第三代语言,如C、PASCAL有很大不同,在程序模块(ProgramStructureModule)可分以下三个部分:

1.过程块内的顺序编码

与一般语言语法近似,如IF,WHILE等,但并没有GOTO语法

2.报表

调用一个独立的事件(DependingEvent),读取数据库产生数据列表

3.对话框

屏幕参数输入的对话框,专门处理数据库读取或更改的事务过程

&基本语言概览

1.数据元素声明方式,如数值,字符数据变量声明

2.操作符使用,如+-*/

3.控制元素使用,如Boolean值

4.特殊数据格式,如日期与时间

5.字符处理函数,如部分字符串的截取

6.子程序或自定函数的调用

7.SQL语法使用

8.数据结构的使用,如过程内表的声明与使用

&报表概览

1.ReportsTask,如报表屏幕预览或打印机打印的选择

2.Reports模块是一个独立的程序

3.数据库读取方式,如可定义逻辑数据库(与磁盘的物理存储对应)

4.报表数据的计算与产生

5.报表的输出

&对话框概览

1.专处理数据库的读取与更改,如使用SQL命令

2.对话框不是一个独立程序,使用事务码来产生屏幕对话框

3.由流程逻辑控制,流程逻辑分成PBO(ProcessBeforeOutput,输出前过程)与PAI(ProcessAfterInput,输入后过程)

2.开始编程

2.1ABAP/4编辑器

&创建ABAP/4程序

使用ABAP工作台撰写程序(选择工具->ABAP/4工作台,事务码S001),屏幕如下:

可分成:

1.ABAP/4编辑器:

针对简单的报表或程序,仅使用几个组件或不使用

2.对象浏览器:

针对复杂的报表或程序,如对话事务模块(DialogTransactionModule)的编写

&使用ABAP/4编辑器撰写程序

1.ABAP/4编辑器界面如下(事务码SE38):

2.输入程序名称,如果是新程序,按下“创建”,如果修改已存在程序,则按下“修改”或F6键。

在命名规则上,报表程序为Yaxxxxxx或Zaxxxxxx,a表示applicationmodule(应用程序模块)简称,如s表示SD。

对话框程序为SAPMYxxx或SAPMZxxx

3.输入程序属性

(1).Title:

程序描述或功能说明

(2).Type:

执行模式,包括:

可执行程序,如报表;INCLUDE程序;模块池;函数组;子程序池

(3).Status:

程序开发状态,包括:

SAP标准生产程序;客户生产程序;系统程序;测试程序

(4).Application:

程序所属的应用模块,如:

财务会计;物料管理;销售分销

注意:

由于SAP翻译问题,上图界面语言混乱,操作时请以实际显示为准。

4.选择开发类

开发类:

用于同一系统中各个程序,如果不属任一类,可使用$TMP

5.撰写源代码

REPORT之后接的是程序名称,WRITE是显示的意思,会将所接的字符串在屏幕上显示,注意每一行最后要有一个'.'(点),表示语句的结束,储存后返回ABAP/4编辑器界面。

6.执行程序

按“执行”或F8键,屏幕可见执行所得的结果

&重要的编辑功能键

功能

F8

执行程序

F5

复制光标所在列的内容

F11

储存文件

CTRL+F11

删除光标所在列

2.2ABAP/4数据元素

&数据类型

ABAP/4的数据类型可分成:

类型

长度

范围

初始值

说明

C

1

1-65535字节

空格

字符串数据,如'Program'

D

8

8字节

'00000000'

日期数据,格式为YYYYMMDD

F

8

8字节

0

浮点数

I

4

-2^31至2^31-1

0

整数

N

1

1-65535字节

'00…0'

数值所组成的字符串

P

8

1-16字节

0

Packed数,用在小数点数

T

6

6字节

'000000'

时间数据,格式为HHMMSS

X

1

1-65535字节

X'00'

16进制数

&变量声明

变量声明包含name,type,length和structure四个部分,使用DATA命令,如

DATA:

S1TYPEI,

SUMTYPEI.

&常数声明

常数声明使用CONSTANTS命令,如声明PI是一个小数点5位的值3.14159

CONSTANTSPITYPEPDECIMALS5VALUE'3.14159'.

&系统所定义数据

这是由系统所定义的专有名词,如:

SPACE"空格字符串

SY-SUBRC"系统执行返回值,0表示成功

SY-UNAME"登录帐号

SY-DATUM"系统日期

SY-UZEIT"系统时间

SY-TCODE"目前的事务码

&TYPE声明

用来指定数据类型或声明自定数据类型

示例:

TYPES:

BEGINOFMYLIST,

NAME(10)TYPEC,

NUMBERTYPEI,

ENDOFMYLIST.

DATALISTTYPEMYLIST.

&LIKE声明

跟TYPE声明使用格式相同,如

DATATRANSCODELIKESY-TCODE.

不同的是LIKE用在已有值的数据项,如系统变量,而TYPE声明则是用在指定数据类型。

&DATA声明

语法:

DATA[][][]

变量名称,最长30个字符,不可含有+.,:

()等字符

数据类型及长度,如LINE(20)TYPEC.MYNAMELIKESY-UNAME.

初值

小数位数

示例:

DATA:

COUNTERTYPEPVALUE1,

FLAGTYPECVALUEISINITIAL,

WEIGHTTYPEPDECIMALS2VALUE'1.25'.

字段变量的声明:

DATA:

BEGINOFADDRESS,

NAME(10)TYPEC,

NUMBERTYPEP,

ENDOFADDRESS.

使用时用字段变量加上表名称,如ADDRESS-NAME

&CONSTANTS声明

用来声明常数

语法:

CONSTANTS[][][]

示例:

CONSTANTS:

CNAME(10)VALUE'周庆日',

BIRTH_DAYTYPEDVALUE'19650201'.

&STATICS声明

声明的变量仅在目前的程序中使用,结束后会自动释放

语法:

STATICS[][][]

&TABLES声明

用来声明表工作区的数据,对应至ABAP/4字典对象(DictionaryObject),由SQL命令加载所需数据

语法:

TABLES

示例:

TABLES:

SPFL.

SELECT*FROMSPFL.

WRITE:

SPFL-MANDT,SPFL-CARRID,SPFL-CONNECTION.

ENDSELECT.

从ABAP/4字典的SPFL表载入MANDT,CARRID,CONNECTION三个字段至SPFL这个表工作区

2.3向屏幕输出数据

&WRITE命令

ABAP/4用来在屏幕上输出数据的命令是WRITE

语法:

WRITE[:

]数据项

数据项可以是常数或变量,如果同时输出多项,必须加冒号,如:

WRITE'Thisissample'.

WRITE:

'COMPANY:

',STFL-CARRID.

&指定屏幕位置显示

语法:

WRITEAT[/][][()]资料项

/:

先往下一列

pos:

屏幕X轴坐标

(len):

显示数据的长度

示例1:

WRITE'FirstLine'.

WRITE/6'SecondLine'.

输出结果:

FirstLine

SecondLine

示例2:

DATA:

NUMBERTYPEIVALUE'1234567890',

TEXT(10)VALUE'ABCDEFGHIJ'.

WRITE:

(5)NUMBER,/(6)TEXT.

输出结果:

*7890

ABCDEF

&指定显示格式

语法:

WRITE数据项<显示格式参数>

显示格式参数:

LEFT-JUSTIFIED数据靠左显示

CENTERED数据靠中间显示

RIGHT-JUSTIFIED数据靠右显示

UNDER在数据项的X轴开始坐标显示

NO-GAP紧接着显示,不留空格

USINGEDITMASK使用内嵌字符显示,如11:

20:

30

USINGNOEDITMASK不使用内嵌字符

NO-ZERO数字前面0的部分不显示

NO-SIGN不显示正负号

DECIMALS显示d位小数字数

EXPONENTF(浮点数)exponent的值

ROUND四舍五入至小数位数下r位

CURRENCY币别显示

DD/MM/YY日期显示格式

MM/DD/YY日期显示格式

DD/MM/YYYY日期显示格式

MM/DD/YYYY日期显示格式

DDMMYY日期显示格式

MMDDYY日期显示格式

YYMMDD日期显示格式

示例1:

DATA:

XTYPEIVALUE'112030',

A(5)VALUE'ABCDE'.

WRITEXUSINGEDITMASK'__:

__:

__'.

输出结果为:

11:

20:

30

示例2:

DATA:

XTYPEIVALUE'112030',

A(5)VALUE'ABCDE'.

WRITEXUSINGEDITMASK'$___,___'.

输出结果为:

$112,030

&产生空白列

产生n个空白列

语法:

SKIP[]

示例:

WRITE'PASS1'.

SKIP.

WRITE'PASS2'.

输出结果为:

PASS1

PASS2

&显示图标

可以显示R/3系统所提供的符号或图标

语法:

WRITEASSYMBOL

WRITEASICON

示例:

INCLUDE.

INCLUDE.

WRITE:

/'PhoneSymbol:

',SYM_PHONEASSYMBOL.

WRITE:

/'AlarmIcon:

',ICON_ALARMASICON.

执行结果:

要查看系统所提供有哪些符号及图标,可选择返回ABAP编辑器的初始页,执行程序SHOWSYMB和SHOWICON程序列出所有符号和图标

&跳至指定列坐标

将坐标跳至指定的Y轴列坐标

语法:

SKIPTOLINE[]

示例:

SKIPTOLINE5.

WRITE'PASS1'.

执行结果:

 

PASS1

&显示复选框数据

以字符串数据内容的第一个字符为复选框的输出,如果是空白,复选框显示为空白,相反则显示X,可用在逻辑判断检查。

语法:

WRITE<资料项>ASCHECKBOX.

示例:

DATA:

FLAG1VALUE'',

FLAG2VALUE'X'.

WRITE:

/'CHECKFLAG1:

',FLAG1ASCHECKBOX.

WRITE:

/'CHECKFLAG2:

',FLAG2ASCHECKBOX.

执行结果:

2.4处理数据

&赋值

语法:

MOVETO.

将F1的值存至变量F2中,也可写成

F2=F1.

示例:

M_NAME='CHER'.

&使用偏移量

语法:

MOVE[+<偏移量>(取位数)]TO[+<偏移量>].

示例1:

DATA:

F1(10)VALUE'ABCDEFGHIJ',

F2(5).

F2=F1+3(5)."自第4个位置开始取出5个字符

WRITE/F2."F2的内容会变成DEFGH

执行结果:

DEFGH

示例2:

DATA:

F1(10)VALUE'ABCDEFGHIJ',

F2(5)VALUE'12345'.

MOVEF1+3(5)TOF2+2."自第4个位置开始取出5个字符,

"从F2的第三个位置开始替换

WRITE/F2."F2的内容会变成12DEF

执行结果:

12DEF

&字段变量组件的复制

语法:

MOVE–CORRESPONDINGTO.

将Strings1中的字段组件的数据复制至String2中,仅复制相同名称的组件

示例:

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.

WRITE/ADDRESS.

WRITE/NAME

"NAME-FIRSTNAME变成'LULU',NAME-LASTNAME变成'CHOU',

"而NAME-E_MAIL则不变

执行结果:

LULUCHOU4660570

LULUCHOU

&变量以值调用的使用

在变量的使用上,可以使用类似CallByValue(以对象的值作为变量名)的方法

语法:

WRITE()TO

示例:

DATA:

NAME(20)VALUE'SOURCE',

SOURCE(10)VALUE'LILY',

TARGET(10).

WRITE(NAME)TOTARGET.

WRITE/TARGET."屏幕可印出LILY

"(NAME的值是SOURCE,SOURCE的值是LILY)

执行结果:

LILY

&清除变量内容

语法:

CLEAR

清除变量现在内容,恢复成初值

示例:

DATANTYPEIVALUE100.

CLEARN.

变量N的内容变成0

&算术符号

**乘幂

*乘

/除

+加

-减

DIV整数除法

MOD余数除法

&数值函数

1.ABS(N):

返回数值N的绝对值

2.SIGN(N):

1ifN>0

0ifN=0

-1ifN<0

3.CEIL(N):

返回大于数值N的最小整数

示例:

WRITECEIL(-5.65)显示–5.00

WRITECELL(4.54)显示5.00

4.FLOOR(N):

返回小于数值N的最大整数

示例:

WRITEFLOOR(-5.65)显示–6.00

WRITEFLOOR(4.54)显示4.00

5.TRUNC(N):

返回数值N的整数部分

示例:

WRITETRUNC(5.65)显示5.00

6.FRAC(N):

返回数值N的小数部分

示例:

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.日期数据的运算

日期数据可以直接运算,如加法与减法的运算

示例:

DATA:

MdateTYPED.

Mdate=SY-DATUM."如返回19971015,当前日期

Mdate+6

(2)='01'"Mdate变成19971001,当月的一号

Mdate=Mdate-1"Mdate变成19970931,上月最后一天

2.时间数据的运算

时间格式为'hhmmss',如'212030'表示'21:

20:

30'

示例:

DATA:

HOURSTYPEI,

MINUTESTYPEI,

T2TYPETVALUE'200000',

T1TYPETVALUE'183000'.

HOURS=(T2-T1)/3600."计算有几小时

MINUTES=(T2–T1)/60."计算几分钟

&字符串数据处理

1.字符串移位

语法:

SHIFT[BYPLACES][]

:

(1).空白,字符串往左移一位

(2).LEFT,字符串往左移n位

(3).RIGHT,字符串往右移n位

(4).CIRCULAR,字符串以环状方式移位

示例:

DATASTRING(10)VALUE'ABCDEFGHIJ'.

SHIFTSTRING."得到BCDEFGHIJ

SHIFTSTRINGBY2PLACESRIGHT."得到ABCDEFGH

2.替换字符串内容

语法:

REPLACEWITHINTO

将字符串中的来取代

示例:

DATA:

STRING(10)VALUE'ABCDEFGHI',

STR1(3)VALUE'DEF',

STR2(3)VALUE'123'.

REPLACESTR1WITHSTR2INTOSTRING.

WRITE/STRING."得到ABC123GHI

3.大小写的转换

语法:

TRANSLATETOUPPERCASE."转成大写

TRANSLATETOLOWERCASE."转成小写

4.在字符串中寻找部分字符串

语法:

SEARCHFOR

示例:

DATASTRING(10)VALUE'ABCDEFGHIJ'.

会回存至两个变量,SY-SUBRC和SY-FDPOS,

若找到则SY-SUBRC为0,SY-FDPOS存开始位置,

若找不到则SY-SUBRC为4,SY-FDPOS为0

5.字符串长度

语法:

STRLEN(

示例:

INT=STRLEN('XYZABC')."得到6

INT=STRLEN('ABC')."得到3

6.取部分字符串

语法:

[+][]

从字符串的下一个字符开始取个字符

示例:

DATAT(10)VALUE'ABCDEFGHIJ'.

WRITE/T+2(4)."得到'CDEF'

2.5流程控制

&比较运算符

1.=或EQ:

等于

2.<>或><或NE:

不等于

3.<或LT:

小于

4.<=或LE:

小于等于

5.>或GT:

大于

6.>=或GE:

大于等于

7.AND:

8.OR:

9.NOT:

&条件语句

1.IF语句

语法:

IF<条件1>.

<语句1>

ELSEIF<条件2>.

<语句2>

ELSEIF<条件3>.

<语句3>

…..

ELSE.

ENDIF.

(1).在每个判断语句之后要加上.

(2).在巢状循环(循环嵌套)之中无法使用ELSE语句,ELSE语句属IF语句(?

示例:

IF3>8.

WRITE/'3islessthan8'.

ENDIF.

2.CASE语句

语法:

CASE<变量f>.

WHEN<值1>.

<语句1>

WHEN<值2>.

<语句2>

….

WHENOTHERS.

ENDCASE.

示例:

DATAS

(1)TYPEC

S='A'.

CASES.

WHEN'X'.

WRITE/'StringisX'.

WHENOTHERS.

WRITE/'StringisnotX'.

ENDCASE.

&循环语句

1.计数循环

语法:

DO[nTIMES][VARYINGFROMNEXT[RANGE]].

<循环块>

ENDDO.

示例1:

DO2TIMES.

WRITE/'X'.

ENDDO.

执行结果:

X

X

示例2:

DOVARYINGIFROM1TO10.

S=S+I.

ENDDO.

WRITE:

/,'1+2+3+…+10=',S

执行结果:

1+2+3+…+10=55

2.条件循环

语法:

WHILE<条件>.

<语句块>

ENDWHILE.

示例:

DATA:

ITYPEI,

STYPEI.

I=1.

S=0.

WHILEI<=10.

S=S+I.

I=I+1.

ENDWHILE.

WRITE:

/'1+2+3+…+10=',S.

执行结果为:

1+2+3+…+10=55

&循环

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

当前位置:首页 > 解决方案 > 学习计划

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

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