搜档网
当前位置:搜档网 › ABAP入门

ABAP入门

ABAP入门
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.报表

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

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.对象浏览器:针对复杂的报表或程序,如对话事务模块(Dialog TransactionModule)

的编写

使用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

D

F

I

N

P

T

X

长度

1

8

8

4

1

8

6

1

范围

1-65535字节

8字节

8字节

-2^31至2^31-1

1-65535字节

1-16字节

6字节

1-65535字节

初始值

空格

'00000000'

'00…0'

'000000'

X'00'

说明

字符串数据,如'Program'

日期数据,格式为YYYYMMDD

浮点数

整数

数值所组成的字符串

Packed数,用在小数点数

时间数据,格式为HHMMSS

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字典对象(Dictionary Object),由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则不变

执行结果:

LULU LULU CHOU

CHOU

4660570

变量以值调用的使用

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

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

示例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

循环控制语句

1.CONTINUE

跳至循环的下一次

示例:

DO3TIMES.

IFSY-INDEX=2.

CONTINUE.

ENDIF.

WRITE/SY-INDEX.

ENDDO.

执行结果:

abap123入门教材(中文)

1. ABAP/4 Introduction Introduction ABAP/4(Advanced Business Application Programming)是SAP/R3目前唯一的系统发展工具, 属 4GL, 语法比较近似Visual Basic或JAVA, 和传统third-generation 语言, 如C,PASCAL 有很大不同, 在程序模块(Program Structure Module)可分以 下三个部分: 1.Sequential coding within processing block 与一般语言语法近似, 如IF,WHILE等, 但并没有GOTO叙述 2.Reports 呼叫一个独立的事件(Depending Event), 读取database 产生数据列表 3.Dialog 屏幕参数输入的对话框, 专门处理database 读取或异动的tranaction process Basic Languange Overview 1.data element 宣告方式, 如数值, 字符数据变量宣告 2.操作数(operate)使用, 如+ - * / 3.Control element使用, 如Boolean 值 4.特殊数据格式, 如日期与时间 5.字符串字料处理function, 如部分字符串的截取 6.子程序或自定函数的呼叫 7.SQL语法使用 8.数据结构的使用, 如process internal table的宣告与使用 Reports Overview 1.Reports Task, 如报表屏幕预览或打印机打印的选择 2.Reports 模块是一个Stand-along 程序, 3.database读取方式, 如可定义logical database(与磁盘的physical storage对映) 4.报表数据的计算与产生 5.报表的输出 Dialog Overview 1.专处理database 的读取与异动, 如使用SQL 指令 2.Dialog 不是一个Stand-Along Progarm, 使用transaction code来产生屏幕对话框 3.由flow logic 控制, flow logic分成PBO(Process Before Output)与PAI(Process After Input)

SAP ABAP ALV基础知识实例讲解

ALV知识 Xiaogangh 一、ALV相关概念 ALV――ABAP LIST VIEWER,这里我姑且称之为ABAP表单浏览器,用它可以标准化,简单化R/3系统中的表单,它可以提供给用户一个统一的表单格式以及用户接口。 ALV即能显示简单表单(SIMPLE LIST)又能显示有序表单(SEQUENTIAL LIST): ●简单表单(SIMPLE LIST)包含一系列不分层次的(NON-HIERARCHICAL),用户 自定义的列。 ●层次表(即有序表SEQUENTIAL LIST)包含列表头以及它的子行,一个列表头的 关键行能带出它下面的一些列项目(我们自己理解的时候可以想到BOM表的层次结构)。 ●我们还可以在简单表单以及关联表单中显示小计和总计 二、结合一个具体的实例来看ALV的功能 首先我们看下图中的这个ALV的布局(这是一般ALV程序表单的典型布局): 根据上面对ALV的直观形象,下面将屏幕上的区域划分成几块,分别来解释它的作用:1.快捷工具栏(如下图)

细节按钮,你首先必须选中列表中的一行,然后点击它的话,就会弹出一个窗口,显示选中行的细节内容。(另外:你双击你要选择的行,也可以显示细节) 按升序排列,首先选中一列,然后再点击它,就可以看到该列是按照升序重新排列。 按降序排列,首先选中一列,然后再点击它,就可以看到该列是按照降序重新排列。 设置过滤器,通过设置它可以达到筛选的目的,以列名称作为筛选的筛选标准,填入过滤器相应的标准值,然后就可以筛选出满足自己条件的记录。 打印预览,点击它之后,就可以预览一下将要打印内容的布局情况。 Microsoft Excel,调用MS的Excel到当前ALV的列表显示区域。(前提:必须安装了MS的Excel) 字处理,字处理的相关设置。 本地文件,将当前表单存储到本地机器上,有几种供选择的存储格式。 邮件收件人,给系统内用户发邮件 图形,点击它可以根据表单情况绘制相关图表。 更改布局,点击它可以对表单中的列项目排列次序的互换,删减等。 选择布局,从已经保存的布局中选择自己满意的布局。 保存布局,对于自己满意的布局,可以通过点击它来将布局保存起来。 2.表单标题区 这个区域主要是用来显示一些抬头信息(总揽信息),类似于WORD中的页眉。我们在使用的时候根据需要来进行相关填写。 3.表单显示区

sap ABAP开发入门到进阶

SAP-A BAP 开发入门到进阶 基础篇 - 以简短的篇幅介绍最基本的语法 增强篇 - 介绍了常用的ABAP技术 希望此书对想从事ABAP开发的读者有相当帮助。 一.基础篇 1.什么是ABAP ? 了解一下ABAP的发展历史是必要的,ABAP产生的最初的目的是用以生成简单打印报表程序,我们知道SAP最初是为解决财务实时数据处理问题 的,ABAP(Advanced Business Application Programming->高级业务应用编程语言)现在用于编写SAP AG的几乎全部产品源代码. 严格地讲,ABAP/4不仅仅是一个开发工具,而且是一套完整的client/server开发环境,这很好理解,微软的Visiual Studio是一开发环境,VB,VC++等是开发工 具.ABAP开发环境包含支持程序开发的一些函数和包等. 如图1-1,是SAP开发环境的一个三层架构的例图,三层(多层)的概念也不新鲜,比如在安装SAP时也可将DB instance安在一台server, Central instance在另一台所谓的Application server(我想这应是相关SAP基础系统包括各种应用程序所在),而通常客户端安装的SAP Logon Front End,SAP会话管理器等是所谓的表示层,它通过TCP/IP,SAP演示协议或RFC和应用服务器进行数据传输,用户看到的只是处理后的数据返回. 和Delphi的三层逻辑相近,在应用层包含多个组件象ABAP开发平台,身份验证,系统管理维护等用以处理会话,更新,排队,网关,数据层处理native 和Open SQL等(这是从内部机制方面看),SAP各模块应用的业务逻辑都在应用层被处理(从用户角度)然后结果被返回.

SAP ABAP OO面向对象入门实例

*& Report Y_TEST_A * *&---------------------------------------------------------------------* *& 简单ABAP对象 * *&---------------------------------------------------------------------* REPORT y_test_a . *&---------------------------------------------------------------------* *& Class simpleobj *&---------------------------------------------------------------------* * Text *----------------------------------------------------------------------* CLASS simpleobj DEFINITION. PUBLIC SECTION. METHODS: show_text. PRIVATE SECTION. DATA text(100) TYPE c VALUE 'This is my first ABAP object.'. ENDCLASS. "simpleobj *&---------------------------------------------------------------------* *& Class (Implementation) SIMPLEOBJ *&---------------------------------------------------------------------* * Text *----------------------------------------------------------------------* CLASS simpleobj IMPLEMENTATION. METHOD show_text. WRITE text. ENDMETHOD. "show_text ENDCLASS. "SIMPLEOBJ * Global Data Declaratioin DATA ob_app TYPE REF TO simpleobj. START-OF-SELECTION. CREATE OBJECT ob_app. CALL METHOD ob_app->show_text.

ABAP基础知识(完整版)---自学

ABAP基础知识(完整版)-上 SAP ABAP / 4 基础知识学习 数据类型 C :字符串 D :日期型格式为YYYYMMDD 例:'1999/12/03' F : 浮点数长度为8 I :整数 N :数值组成的字符串如:011,'302' P : PACKED数用于小数点数值如:12.00542 T : 时间格式为:HHMMSS 如:'14:03:00' X : 16进制数如:'1A03' *-------------------------------------------------------------------------------------* 变量声明 DATA [] [][decimals] 变量名称 变量类型及长度 初值 小数位数 exp: DATA : COUNTER TYPE P DECIMALS 3. NAME(10) TYPE C VALUE 'DELTA'. S_DATE TYPE D VALUE '19991203'. exp: DATA : BEGIN OF PERSON, NAME(10) TYPE C, AGE TYPE I, WEIGHT TYPE DECIMALS 2, END OF PERSON. 另外,有关DATA声明的指令还有: CONSTANTS(声明常数)、STATICS(临时变量声明). exp: CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'. STATICS 关键字 声明的变量仅在目前的程序中使用, 结束后会自动释放 语法: STATICS [] [] [] 系统专用变量说明 系统内部专门创建了SYST这个STRUCTURE,里面的栏位存放系统变量,常用的系统变量有: SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,'0'表示成功 SY-UNAME: 当前使用者登入SAP的USERNAME; SY-DATUM: 当前系统日期; SY-UZEIT: 当前系统时间; SY-TCODE: 当前执行程序的Transaction code

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.报表 调用一个独立的事件(Depending Event),读取数据库产生数据列表 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.对象浏览器:针对复杂的报表或程序,如对话事务模块(Dialog TransactionModule) 的编写

ABAP4基础

ABAP4基础 一概念: 数据类型: 1 不占用内存空间。 2 描述了数据对象的属性。 3 用户可以自定义。 数据对象: 1占用内存空间。 2 一个特殊的类型。 3 是数据类型的具体实例。 //就是类型和变量ex:int i; 二定义数据对象 通过指定预定义的ABAP类型 DA TA: TYPE 例如:DATA: counter TYPE I. 2 通过指定自定义类型 DA TA: TYPE < user-defined-type> 例如:DATA: splight TYPE my_struc. 3 通过指定词典对象 DA TA: LIKE 例如:DATA: data LIKE sy-datum. 4 通过指定一个已经存在的数据对象 DATA: LIKE 例如:DATA: mycounter LIKE counter. //定义变量的时候要在前面加上DATA:变量的数据类型不同,中间的关键词也不相同 如果数据类型是预定义的或者自定义的,关键词用TYPE 如果数据类型是词典对象或者是已经存在的数据对象,关键词用LIKE 三在ABAP/4中按结构和定义对数据类型分类。数据类型是: 基本的(非结构化的)或结构化的。 预定义的或用户定义的。

因此,有四类数据类型。预定义数据类型的名称是固定的。用户定义的数据类型的名称由程序员在程序中定义。 1 预定义的基本的数据类型: ABAP/4 包含8 个预定义基本数据类型。 注意: 类型I 数据 类型I 数据的数值范围是-2**31 到2**31-1 并且仅包括整数。 对算术运算的非整型结果(如分数)进行四舍五入,而不是截断。 类型I 数据可用于计数器、项目号、索引和时间期段等。

abap开发基础知识总结

1.内表的定义 通过关键字DATA对内表进行创建,内一的定义可以直接参考结构体或者其它内表及透明表,也可以直接定义字段,其中关键字如下: UNIQUE|NON-UNIQUE:指定关键字,只能应用于排序表或者哈希表。 INITIAL SIZE n:指定初始化内表大小。 WITH HEADERLINE:定义内表是否有表头。 具体定义有以下几种方式: DATA <内表名> TYPE <结构类型> WITH[UNIQUE|NON-UNIQUE] [INITIAL SIZE n] [WITH HEADER LINE]。 DATA <内表名> LIKE TABLE OF <内表或者透明表> WITH[UNIQUE|NON-UNIQUE] [INITIAL SIZE n] [WITH HEADER LINE]。 DATA BEGIN OF itab OCCURS n, ...... END OF itab [VALID BETWEEN f1 AND f2]。 2.内表的赋值 上面曾介绍过,内表分为有无HEADER LINE两种。对于有HEADER LINE的内表,可以通过填充HEADER LINE数据后或通过外部的Work Area向内表存储空间中追加数据,相关语法如下: APPEND( into) . 3.内表数据管理 3.1.内表的清空 CLEAR :仅清空HEADER LINE,对内表数据存储空间不影响。 REFRESH :清空内表数据存储空间,对HEADER LINE不影响。

REFRESH FROM TABLE:清空内表存储空间,填充从数据库表所获数据。 FREE :清空内表数据存储空间,对HEADER LINE不影响。 3.2.INSERT(向内表插入数据) 可以按内表的具体字段向表中插入一行或者多行数据,具体语法如下:INSERT [wa INTO|INITIAL LINE INTO] itab [INDEX idx]. INSERT [wa INTO|INITIAL LINE INTO] TABLE itab. INSERT LINES OF itab1 [FROM idx] [TO idx2] INTO itab2 [INDEX idx3]. 3.3.MODIFY(直接修改内表数据) 按内表位置或者具体内表字段值相等条件修改内表数据。 MODIFY itab [FROM wa] [INDEX idx][TRANSPORTING f1...fn] WHERE cond. 3.4.COLLECT(内表数据分类汇总) 将内表中相同的字段合并,若有类型为I的字段,则将其值加总。 COLLECT [wa INTO] itab. 3.5.SORT(内表数据排序) 对内表进行排序,可以指定具体的排序字段、排序方式(升/降),语法如下:SORT itab [BY f2 f2...fn] [ASCENDING/DESCENDING] 3.6.READ(读取) 依据具体行数或字段值等条件读取某一内表的数据。 READ TABLE itab FROM wa. READ TABLE itab WITH [TABLE] KEYk1=v1...kn=vn [BINARY SEARCH]. READ TABLE itab INDEX i.

我的SAP-ABAP基础语法学习笔记

ABAP基础学习笔记 学前说明: 1.ABAP/4每条语句以句号结束; 2.ABAP/4中象= ,>, <,+,-,*,/等符号左右都需要有至少一个空格,否则报错; 3.整行注释用’*’号,星号要放当前行的第一个才有效, 注释本行后面部分用’”’号; 一、基本数据类型: Type Length Range Initial Value Description C 1 1-65535Byte Space 字符串数据, 如’Program’ D 8 8Byte ‘00000000’ 日期数据, 格式为YYYYMMDD F 8 8Byte 0 浮点数 I 4 -2^31至2^31-1 0 整数 N 1 1-65535Byte ‘00…0’ 数值所组成的字符串 P 8 1-16Byte 0 Packed 数, 用在小数点数 T 6 6Byte ‘000000’ 时间数据, 格式为HHMMSS X 1 1-65535Byte X’00’ 16进位数 例: C: 字符(串), 长度为1, 最大有65535 BYTES, 初始值为: space,例: ‘M’; D: 日期, 格式为YYYYMMDD, 最大是’9999/12/31’ ,例:’1999/12/03’. F: 浮点数, 长度为8, 例如: 4.285714285714286E-01 I: 整数范围:-2^31 ~ 2^31-1 N: 数值组成的字符串: 011, ‘302’. P: packed 数,用于小数点数值,例如: 12.00542; T: 时间, 格式为HHMMSS,例如: ’14:03:00’, ’21:30:39’. X: 16进制数, 例如‘1A03’. 二、变量的声明: 变量宣告包含name, length, type, structure等,语法如下: DA TA [] [] [] 其中: [] 里的内容表示可选项。 :变量名称,最长30个字符,不可含有+ , . , : ( ) 等字符; :长度及变量类型; :初值 :小数位数 例如: DA TA:C1 TYPE C, INT1 TYPE I V ALUE 1, TEMP TYPE P DECIMAL 2. DATA后面的冒号表示后面声明多个变量,如果只有一个变量也可以写成: DATA C1 TYPE C. TYPE 也是用来声明变量的,与DATA差不多,不过TYPE不能直接给变量赋值。 例如: TYPES: INT1 TYPE I.(不能VALUE 1)

ABAP基础知识整理

ABAP开发分为RICEF-W Report开发、Interface开发、Conversion 转换开发、Enhancement开发、Form开发、Workflow工作流开发。Table: SE11 1. 建议Field中先定义Data element 不建议先定义field 2. 特殊DataType: CLNT:Data element/Domain有MANDT CURR:小数位设定 CUKY:Currency:Domain like WAERS DATS:日期 YYYYMMDD Domain like DATUM TIMS:时区管理 hhmmss Domain like UZEIT 3. Delivery class A和C A - Application table 业务数据不会经常修改物料供应商客户 C - Customizing table 会产生Transport Request Data browser/table view maint. Not allowed 和allowed区别 4. Sigh 金额有关打钩支持正负号 5. Lowercase 大小写区分 6. Value range 取值限制男、女 Single val。单个取值 Intervals 一段取值 7. Text table 用在master table 8. Append structure 只能用在一个地方 Include structure 能用多次 9. 创建表的时候:设置Technical Setting 10. 设置Enhancement category for table missing: Extras - Enhancement category 11. Table Maintenance Generator:se11->unitilies->table maintenance generator 12. Fixed values——屏幕输入时检查

abap基础

ABAP基础 ABAP简介 ABAP语言也称作ABAP/4,它的全称是Advanced Business Application Programming - 4 th generation Language ABAP是SAP的支柱 所有的R/3应用程序和部分的Basis 系统都是用ABAP语言开发的 数据字典 编辑器 函数库

SAP事务码

ABAP字典 在商业应用软件开发时,部分实际世界必须被描述成数据形式。 商业应用软件的作用在于接收业务数据,并将其用一定的形式储存起来。 这些业务数据在储存后,还可以随时读取出来,再次利用。例如:财务人员向SAP系统中输入会计凭证,保存之后还可以随时把凭证调出来查看。 无论是接收数据、储存数据、读取数据、使用数据,其核心都是数据。 在SAP R/3系统中,基本上所有的数据都是存在数据库表里面的。 数据库表,以及与其相关的视图、结构等构成了ABAP字典 ABAP字典SE11 ABAP字典所包含的要素 表(Table) 视图(View)

结构(Structure) 数据元素(Data Element) 域(Domain) 表类型(Table Type) 搜索帮助(Search Help) 锁对象(Lock Object) ABAP字典-表: SAP R/3 中看到的表并不是真正在数据库中物理上储存数据的表。 SAP中的表和数据库中的物理表是对应起来的。 ABAP 字典中的表分为3种 透明表(Transparent Table) 和数据库中的物理表一一对应,在SAP中激活透明表时,会在数据 库中创建一个同名的物理表。我们用到的绝大多数表都是透明表。 簇表(Cluster Table) 大,多个簇表存在一个物理表中。无索引 共享表(Pooled Table) 小,多个共享表存在一个物理表中。无索引 ABAP字典-视图 ABAP 字典中的视图分为4种 数据库视图 投影视图 维护视图 直接向数据库表中维护数据 帮助视图 对表中内容进行筛选,用来提供搜索帮助 ABAP字典–数据元素和域 数据元素(Data Element)域(Domain) 在SAP字典中,数据库表是有一个一个的字段组成的,每一个字段代表着一个需要储存的现实中的数据。 每一个字段都有自己的一些特性:含义(储存的是什么数据)、数据类型(字符型、数字型、日期型……)、长短等等……在这些特性中,有一些是语义的特性,比如…含义?等;有一些是物理特性,比如…数据类型?及…长度?等。在SAP 中,我们把这两种类型的特性分别储存在不同的ABAP字典对象中,语义特性存放在数据元素中;物理特性存放在域中。 比如:表BKPF中的字段BELNR是用来存凭证号的,那么它的语义特性就是…凭证编号?,这个是存在该字段的数据元素BELNR_D中的;它的物理特性是:该字段是字符型的,而且长度是10位,这些信息是保存在该字段的域BELNR 中的。 搜索帮助 点击条目后的圆点

相关主题