107 ABAP4语法祥解简体中文.docx
- 文档编号:12674851
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:53
- 大小:941.57KB
107 ABAP4语法祥解简体中文.docx
《107 ABAP4语法祥解简体中文.docx》由会员分享,可在线阅读,更多相关《107 ABAP4语法祥解简体中文.docx(53页珍藏版)》请在冰豆网上搜索。
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:
WRITE:
例如:
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:
BEGINOF
[
…]
ENDOF
格式二.TYPES:
BEGINOF
[
…]
ENDOF
TYPES
格式三.DATA:
BEGINOF
INCLUDESTRUCTURE
DATA:
ENDOF
DATA:
2.APPENDLINE
格式:
APPEND[
举例一.(使用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
将
APPENDLINESOFITABTOJTAB.
3.COLLECTLINE
COLLECT指令也是将元素加入Internaltable中,与APPEND的区别是:
COLLECT指令在非数值字段相同的情况下,将数值字段汇总.
格式:
COLLECT[
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[
或者:
INSERTLINESOF
其中:
[INITIALLINEINTO]:
插入一笔初始化的记录.
internaltable
[INDEX
internaltable的记录号.(新加入的元素放在此记录前面)
5.读取internaltable
格式一:
LOOPAT
ENDLOOP.
格式二:
READTABLE
举例.(格式二)
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
举例一.READTABLEITABINDEX3.
LINE-COL1=29.
MODIFYITABFROMLINETRANSPORTINGCOL1.
将第三笔记录的COL1字段的值修改为29.
举例二.T_SALARY–salary=50.
MODIFYT_SALARYTRANSPORTINGsalaryWHEREbirthday=‘1999/12/06’.
7.DELETEinternaltable中的字段
格式:
DELETE
或:
DELETE
8.Internaltable排序
SORT
其中:
为指定排序的字段.
9.加总
SUM.
总和计算存放与workarea中,但只能在LOOP中使用.
例:
LOOPATITABINTOLINE.
SUM.
ENDLOOP.
WRITE:
/LINE-COL1,LINE-COL2.
10.初始化internaltable
REFRESH
CLEAR
t_mara[],t_mara.
FREE
§屏幕输入命令
在ABAP/4中要从屏幕输入变量,使用的命令是PARAMETERS及SELECTION-OPTIONS:
1.PARAMETER:
输入一个变量
2.SELECTION-OPTIONS:
使用条件筛选画面来输入数据
一.PARAMETERS指令
基本的输入命令,类似如BASIC的INPUT命令,但无法使用F格式(浮点数)
语法:
PARAMETERS
[DEFAULT
[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-OPTIONS
Example:
TABLESSPFLI.
SELECT-OPTIONSAIRLINEFORSPFLI-CONNID.
将条件的输入值存放入AIRLINE,筛选选择为SPFLI中的CONNID字段
执行结果:
可直接输入起始范围或按下选择画面,输入完后按下左上角的执行键
三.条件输入选择画面
1.自Table中选取
按下输入项的右边往下箭头,叫出Table中数据项,选取开始和结束的范围
2.SelectionOptions
按下”Selectionoptions”按键,,输入Option及Sign参数内容,屏幕如下:
3.Multi-Options输入
按下最右边的Multi-Options输入键,输入条件选取的范围,画面如下:
条件输入完后按下”Copy”按键
四.改变条件输入格式
1.DEFAULT
设定开始结束范围输入默认值
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/
Example:
SELECTION-SCREENULINE/10(30).
自第10格开始产生长度30的底线
3.印出备注说明
语法:
SELECTION-SCREENCOMMENT/
Example:
REMARK=‘Plsenteryourname’.
SELECTION-SCREENCOMMENT/10(30)REMARK.
4.同一列中输入数个数据项
语法:
SELECTION-SCREENBEGINOFLINE.
……
SELECTION-SCREENENDOFLINE.
Example:
SELECTION-SCREENBEGINOFLINE.
SELECTION-SCREENPOSITION20.
PARAMETERSNAME(10).
SELECTION-SCREENPOS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 107 ABAP4语法祥解简体中文 ABAP4 语法 简体中文