107 ABAP4语法祥解简体中文.docx

上传人:b****2 文档编号:1164889 上传时间:2023-04-30 格式:DOCX 页数:53 大小:941.57KB
下载 相关 举报
107 ABAP4语法祥解简体中文.docx_第1页
第1页 / 共53页
107 ABAP4语法祥解简体中文.docx_第2页
第2页 / 共53页
107 ABAP4语法祥解简体中文.docx_第3页
第3页 / 共53页
107 ABAP4语法祥解简体中文.docx_第4页
第4页 / 共53页
107 ABAP4语法祥解简体中文.docx_第5页
第5页 / 共53页
107 ABAP4语法祥解简体中文.docx_第6页
第6页 / 共53页
107 ABAP4语法祥解简体中文.docx_第7页
第7页 / 共53页
107 ABAP4语法祥解简体中文.docx_第8页
第8页 / 共53页
107 ABAP4语法祥解简体中文.docx_第9页
第9页 / 共53页
107 ABAP4语法祥解简体中文.docx_第10页
第10页 / 共53页
107 ABAP4语法祥解简体中文.docx_第11页
第11页 / 共53页
107 ABAP4语法祥解简体中文.docx_第12页
第12页 / 共53页
107 ABAP4语法祥解简体中文.docx_第13页
第13页 / 共53页
107 ABAP4语法祥解简体中文.docx_第14页
第14页 / 共53页
107 ABAP4语法祥解简体中文.docx_第15页
第15页 / 共53页
107 ABAP4语法祥解简体中文.docx_第16页
第16页 / 共53页
107 ABAP4语法祥解简体中文.docx_第17页
第17页 / 共53页
107 ABAP4语法祥解简体中文.docx_第18页
第18页 / 共53页
107 ABAP4语法祥解简体中文.docx_第19页
第19页 / 共53页
107 ABAP4语法祥解简体中文.docx_第20页
第20页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

107 ABAP4语法祥解简体中文.docx

《107 ABAP4语法祥解简体中文.docx》由会员分享,可在线阅读,更多相关《107 ABAP4语法祥解简体中文.docx(53页珍藏版)》请在冰点文库上搜索。

107 ABAP4语法祥解简体中文.docx

107ABAP4语法祥解简体中文

§.ABAP/4DATAELEMENT

1.DataType(数据类型)

C:

字符(串),长度为1,最大有65535BYTES,初始值为:

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’.

2.变量宣告

变量宣告包含name,length,type,structure等,语法如下:

DATA[][][]

其中:

:

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

()等字符;

:

变量类型及长度;

:

初值

:

小数位数

Example1:

DATA:

COUNTERTYPEPDECIMALS3,

NAME(10)TYPECVALUE‘Delta’,

S_DATETYPEDVALUE‘19991203’.

Example2:

DATA:

BEGINOFPERSON,

NAME(10)TYPEC,

AGETYPEI,

WEIGHTTYPEPDECIMALS2,

ENDOFPERSON.

另外,有关DATA宣告的指令还有:

CONSTANTS(宣告常数)、STATICS(临时变量宣告).

3.系统专用变量说明

系统内部专门创建了SYST这个STRUCTURE,里面的字段存放系统变量,常用的系统变量有:

SY-SUBRC:

系统执行某指令后,表示执行成功与否的变量,’0’表示成功

SY-UNAME:

当前使用者登入SAP的USERNAME;

SY-DATUM:

当前系统日期;

SY-UZEIT:

当前系统时间;

SY-TCODE:

当前执行程序的Transactioncode

SY-INDEX:

当前LOOP循环过的次数

SY-TABIX:

当前处理的是internaltable的第几笔

SY-TMAXL:

Internaltable的总笔数

SY-SROWS:

屏幕总行数;

SY-SCOLS:

屏幕总列数;

SY-MANDT:

CLIENTNUMBER

SY-VLINE:

画竖线

SY-ULINE:

画横线

 

附注:

1.SAP的全称是:

SystemApplicationProductsinDataProcessing;

2.ABAP/4的全称是:

AdvancedBusinessApplicationProgramming;

3.ABAP/4的路径为:

ToolsABAP/4WorkBenchABPA/4Editor;

4.ABAP/4每条语句以句号结束;

5.ABAP/4中象=,>,<,+,-,*,/等符号左右都需要有至少一个空格;

6.整行注释用’*’号,注释本行后面部分用’”’号;

 

§OUTPUTTINGDATATOSCREEN

一.WRITE语句

ABAP/4用来在屏幕上输出数据的指令是WRITE指令,例如:

WRITE:

‘USERNAMEIS:

’,SY-UNAME.

二.指定屏幕输出位置

指定输出位置的语句格式为:

WRITE:

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

其中:

/:

在下一行输出

:

指定输出的行号;

):

指定输出位数(长度)

:

指定显示格式参数,参数有:

LEFT-JUSTIFIED资料靠左对齐

CENTERED数据靠中间对齐

RIGHT-JUSTIFIED资料靠右对齐

UNDER正对在数据项的下面显示

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

USINGEDITMASK:

使用内嵌子元显示,如12:

03:

20

USINGNOEDITMASK:

不使用内嵌子元

NO-ZERO:

数字前面0的部分不显示

NO-SIGN:

不显示正负号

DECIMALS:

显示位小数

EXPOENT:

F(浮点数)指数的值

ROUND:

四舍五入至小数点后

CURRENCY:

币别显示

DD/MM/YY:

日期显示格式

MM/DD/YY:

YY/MM/DD:

YY/DD/MM

MM/DD/YYYY:

DD/MM/YYYY

YYYY/MM/DD:

YYYY/DD/MM:

例如1:

WRITE:

/10(6)‘ABCDEFGHIJK’.

输出结果为:

ABCDEF

例如2:

DATA:

XTYPEIVALUE’11:

20:

30’,

A(5)TYPECVALUE‘ABCDE’.

WRITE:

/XUSINGEDITMASK‘__:

__:

__’.

WRITE:

/XUSINGEDITMASK‘$___,___’.

WRITE:

/YNO-GAP.

输出结果为:

11:

20:

30

$112,030

ABCDEF

4.显示图标:

语法:

WRITE:

ASSYMBOL.

WRITE:

ASICON.

例如:

INCLUDE.

INCLUDE.

WRITE:

/‘Phonesymbol:

’,SYM_PHONEASSYMBOL.

WRITE:

/‘AlarmIcon:

’,ICON_VOICE_OUTPUTASICON.

要查看系统所提供有那些符号及图标,可选择’EDIT’下的’InsertStatement’,选择’Write’,接下来选择要查看的群组,如SYMBOL或ICON,接下来按’Display’即可.

 

§INTERNALTABLE

1.InternalTable的宣告

ABAP/4中的InternalTable是一种DataStructure,类似于其它语言中的STRUTURE,它可以由几个不同类型的字段(field)组成,用来表示具有不同属性的某一事物,单独一笔资料表示某个事物,多笔数据表示具有相同属性的多个事物.例如:

为了存取或记录某班的同学数据,我们创建如下的internaltable:

DATA:

BEGINOFSTUDENTOCCURS20,

STD_IDTYPEN,

NAME(10)TYPEC,

AGETYPEI,

BIRTHTYPED,

SCORETYPEPDECIMALS2,

ENDOFSTUDENT.

此时我们已经创建了名叫STUDENT的internaltable,并且为它预先申请了能够存放20笔数据的Buffer(当然,如果存取数据不止20笔,程序执行时,会自动申请系统Buffer)

Internaltable的定义有以下几种格式:

格式一.DATA:

BEGINOFOCCURS,

TYPE,

[TYPE,

TYPE,

…]

ENDOF.

格式二.TYPES:

BEGINOF,

TYPE,

[TYPE,

TYPE,

…]

ENDOF.

TYPESTYPEOCCURS.

格式三.DATA:

BEGINOF.

INCLUDESTRUCTURE.

DATA:

ENDOF.

DATA:

LIKEOCCURS.

2.APPENDLINE

格式:

APPEND[TO].

举例一.(使用workarea)

DATA:

BEGINOFLINE,

COL1TYPEI,

COL2TYPEI,

ENDOFLINE.

DATAITABLIKELINEOCCURS10.

DO2TIMES.

LINE-COL1=SY-INDEX.

LINE-COL2=SY-INDEX**2.

APPENDLINETOITAB.

ENDDO.

LOOPATITABINTOLINE.

WRITE:

/LINE-COL1,LINE-COL2.

ENDLOOP.

执行结果为:

11

24

举例二.(不使用workarea)

DATA:

BEGINOFITABOCCURS10,

COL1TYPEI,

COL2TYPEI,

ENDOFITAB.

DO2TIMES.

ITAB-COL1=SY-INDEX.

ITAB-COL2=SY-INDEX**2.

APPENDITAB.

ENDDO.

LOOPATITAB.

WRITE:

/ITAB-COL1,ITAB-COL2.

ENDLOOP.

执行结果与举例一相同.

举例三.(加入另一个Internaltable的元素)

格式:

APPENDLINESOF[FROM][TO]TO.

的元素加入至中,可选取自的范围.

APPENDLINESOFITABTOJTAB.

3.COLLECTLINE

COLLECT指令也是将元素加入Internaltable中,与APPEND的区别是:

COLLECT指令在非数值字段相同的情况下,将数值字段汇总.

格式:

COLLECT[INTO]

DATA:

BEGINOFITABOCCURS3,

COL1(3)TYPEC,

COL2TYPEI,

ENDOFITAB.

ITAB-COL1=‘ABC’.ITAB-COL2=10.

COLLECTITAB.

ITAB-COL1=‘XYZ’.ITAB-COL2=20.

COLLECTITAB.

ITAB-COL1=‘ABC’.ITAB-COL2=80.

COLLECTITAB.

此时,internaltable中放的是2笔数据,分别为:

ITAB-COL1ITAB-COL2

‘ABC’90

‘XYZ’20

4.INSERTLINE

将元素插入在指定的internaltable位置之前.

格式:

INSERT[INTO][INITIALLINEINTO][INDEX]

或者:

INSERTLINESOF[FROMTO]INTOINDEX

其中:

即workarea,工作区中的元素.

[INITIALLINEINTO]:

插入一笔初始化的记录.

:

internaltable

[INDEX]:

internaltable的记录号.(新加入的元素放在此记录前面)

5.读取internaltable

格式一:

LOOPAT[INTO][FROMTO][WHERE]

ENDLOOP.

格式二:

READTABLE[INTO][INDEX/WITHKEY]

举例.(格式二)

DATA:

BEGINOFITABOCCURS10,

COL1TYPEI,

COL2TYPEI,

ENDOFITAB.

DO10TIMES.

ITAB-COL1=SY-INDEX.

ITAB-COL2=SY-INDEX*2.

APPENDITAB.

ENDDO.

READTABLEITABINDEX3.

(或者:

READTABLEITABWITHKEYCOL1=3.)

WRITE:

/‘ITAB-COL1=‘,ITAB-COL1,‘ITAB-COL2=‘,ITAB-COL2.

执行结果同样是:

ITAB-COL1=3

ITAB-COL2=6.

6.修改internaltable中的值

格式:

MODIFY[FROM][INDEX][TRANSPORTING…][WHERE]

举例一.READTABLEITABINDEX3.

LINE-COL1=29.

MODIFYITABFROMLINETRANSPORTINGCOL1.

将第三笔记录的COL1字段的值修改为29.

举例二.T_SALARY–salary=50.

MODIFYT_SALARYTRANSPORTINGsalaryWHEREbirthday=‘1999/12/06’.

7.DELETEinternaltable中的字段

格式:

DELETEINDEX.

或:

DELETE[FROMTO][WHERE]

8.Internaltable排序

SORT[][BY…]

其中:

有DESCENDING和ASCENDING,Default为ASCENDING.

:

为指定排序的字段.

9.加总

SUM.

总和计算存放与workarea中,但只能在LOOP中使用.

例:

LOOPATITABINTOLINE.

SUM.

ENDLOOP.

WRITE:

/LINE-COL1,LINE-COL2.

10.初始化internaltable

REFRESH.清空中的值.

CLEAR.清空的HeaderLine. Clear:

t_mara[],t_mara.

FREE.释放记忆体空间.

 

§屏幕输入命令

在ABAP/4中要从屏幕输入变量,使用的命令是PARAMETERS及SELECTION-OPTIONS:

1.PARAMETER:

输入一个变量

2.SELECTION-OPTIONS:

使用条件筛选画面来输入数据

一.PARAMETERS指令

基本的输入命令,类似如BASIC的INPUT命令,但无法使用F格式(浮点数)

语法:

PARAMETERS

[DEFAULT][LOWERCASE]

[OBLIGATORY][ASCHECKBOX]

[RADIOBUTTONGROUP]

Example:

PARAMETERS:

NAME(8),

AGETYPEI,

BIRTHTYPED.

执行结果:

在日期的输入格式上为MM/DD/YY,MM/DD/YYYY,MMDDYY或MMDDYYYY,如输入020165表1965年02月01日,与02/01/65的输入是一样的,日期输入范围为公元1950年至2049年

1.DEFAULT

设定输入的默认值

Example:

PARAMETERS:

COMPANY(20)DEFAULT‘DELTA’,

BIRTHTYPEDDEFAULT‘19650201’.

2.LOWERCASE

ABAP/4预设是将字符串输入值自动转换为大写,加上此参数会将输入的数据转成小写,

3.OBLIGATORY

强制要求输入,屏幕上会出现一个?

使用者必须要输入才可.

4.ASCHECKBOX

输入CHECKBOX的格式

Example:

PARAMETERS:

TAXASCHECKBOXDEFAULT‘X’,

NTDASCHECKBOX.

执行结果:

5.RADIOBUTTONGROUP

输入RADIOBUTTONGROUP的方式

Example:

PARAMETERS:

BOYRADIOBUTTONGROUPSEXDEFAULT‘X’,

GIRLRADIOBUTTONGROUPSEX.

执行结果:

二.SELECT-OPTIONS

SELECTION-OPTIONS所输入的值实际上是放在internaltable中的,该Internaltable有四个字段,分别是:

SIGN,OPTION,LOW,HIGH..条件筛选检查条件输入画面指令,输入条件后可配合SELECT指令自TABLE读取符合条件的数据,直接执行或放入InternalTable中,条件有四个参数:

1.SIGN:

I:

表筛选条件符合的资料

E:

表筛选条件不符合的资料

2.OPTION:

比较的条件符号

EQ(等于),NE(不等于),GT(大于),LE(小于),CP(包含),NP(不包含)

3.LOW:

最小值

4.HIGH:

最大值

语法:

SELECT-OPTIONSFOR

Example:

TABLESSPFLI.

SELECT-OPTIONSAIRLINEFORSPFLI-CONNID.

将条件的输入值存放入AIRLINE,筛选选择为SPFLI中的CONNID字段

执行结果:

可直接输入起始范围或按下选择画面,输入完后按下左上角的执行键

三.条件输入选择画面

1.自Table中选取

按下输入项的右边往下箭头,叫出Table中数据项,选取开始和结束的范围

2.SelectionOptions

按下”Selectionoptions”按键,,输入Option及Sign参数内容,屏幕如下:

3.Multi-Options输入

按下最右边的Multi-Options输入键,输入条件选取的范围,画面如下:

条件输入完后按下”Copy”按键

四.改变条件输入格式

1.DEFAULTTO

设定开始结束范围输入默认值

Example:

SELECT-OPTIONSAIRLINEFORSPFLI-CONNID

DEFAULT‘2042’TO‘4555’.

2.NO-EXTENSION

设定不要Multi-Option输入画面

3.NOINTERVALS

设定不要区间范围输入画面

4.LOWERCASE

输入转换成大写

5.OBLIGATORY

强制要求输入

五.配合SELECT命令

条件输入完后要将符合条件的数据筛选出来,可配合使用SELECT指令

1.使用WHERE<条件式>

Example:

SELECT-OPTIONSAIRLINEFORSPFLI-CONNID.

SELECT*FROMSPFLIWHERECONNIDINAIRLINE.

WRITE:

/CONNID,FROMCITY,TOCITY.

ENDSELECT.

2.使用CHECK参数

Example:

SELECT-OPTIONSAIRLINEFORSPFLI-CONNID.

SELECT*FROMSPFLI.

CHECKAIRLINE.

WRITE:

/CONNID,FROMCITY,TOCITY.

ENDSELECT.

3.使用IF…IN叙述

Example:

SELECT-OPTIONSAIRLINEFORSPFLI-CONNID.

SELECT*FROMSPFLI.

IFSPFLI-CONNIDINAIRLINE.

WRITE:

/CONNID,FROMCITY,TOCITY.

ENDIF

ENDSELECT.

六.SELECTION-SCREEN

1.产生空白列

语法:

SELECTION-SCREENSKIP[]

Example:

SELECTION-SCREENSKIP2.

产生两列空白列

2.产生底线

语法:

SELECTION-SCREENULINE/(length)

Example:

SELECTION-SCREENULINE/10(30).

自第10格开始产生长度30的底线

3.印出备注说明

语法:

SELECTION-SCREENCOMMENT/(length)

Example:

REMARK=‘Plsenteryourname’.

SELECTION-SCREENCOMMENT/10(30)REMARK.

4.同一列中输入数个数据项

语法:

SELECTION-SCREENBEGINOFLINE.

……

SELECTION-SCREENENDOFLINE.

Example:

SELECTION-SCREENBEGINOFLINE.

SELECTION-SCREENPOSITION20.

PARAMETERSNAME(10).

SELECTION-SCREENPOS

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

当前位置:首页 > 小学教育 > 语文

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

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