ABAP教程.docx
- 文档编号:4405060
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:36
- 大小:37.88KB
ABAP教程.docx
《ABAP教程.docx》由会员分享,可在线阅读,更多相关《ABAP教程.docx(36页珍藏版)》请在冰豆网上搜索。
ABAP教程
目录
一、创建ABAP2
1.1用ABAPREPORT来实现:
2
1.2用ABAPDIALOG来实现:
2
二、ABAP基础知识学习2
2.1数据类型2
2.2变量声明3
2.3关键字3
2.3.1STATICS关键字3
2.3.2TYPE关键字4
2.3.3LIKE关键字4
三、输出4
3.1WRITE语句4
3.2指定屏幕输出位置4
3.3WRITETO语句的基本形式5
四、常见关键字7
4.1显示图示7
4.2InternalTable的声明7
4.3APPENDLINE9
4.4COLLECTLINE10
4.5INSERTLINE10
4.6读取internaltable11
4.7修改internaltable中的值12
4.8确定内表属性13
4.9加总SUM13
4.10添加字段顺序并将结果赋给另一个字段14
4.11屏幕输入命令15
4.12SELECTION-OPTIONS16
4.13改变条件输入格式16
4.14配合SELECT命令17
五、SQL语法19
5.1SELECT语句19
5.2INSERT语句22
5.3UPDATE指令24
5.4MODIFY语法24
5.5DELETE语法24
5.6DATABASECURSOR25
5.7COMMITWORK&ROLLBACKWORK25
5.8PERFORMING
5.9结果语句27
5.10循环关键字28
5.11循环控制关键字28
5.12搜索字符串29
初学ABAP的一点教程
一、创建ABAP
在SAP中,每一个功能基本上都对应了一个事务代码,你可以输入相应的事务代码来执行相应的功能,事务代码在SAPMENU下面的输入框中输入。
第一个程序,HELLOWORLD:
1.1用ABAPREPORT来实现:
很简单:
(1.进入SAP系统—〉SE38。
(2.输入程序名z_hello,选择Create。
注意:
自己开发的程序一定要用Z或者Y开头,这是因为SAP在升级的时候不会覆盖这些程序。
(3.这时会弹出一个对话框,输入TITLE,选择Type为Executableprogram[可执行程序]。
(4.然后又会弹出一个对话框,让你选择开发类(Package),如果你有自己的开发类的话,输入就可以,没有直接点下面的LocalObject。
(5.ABAP编辑器出现了,输入代码:
“WRITE:
'HELLO,WORLD!
'.”。
(6.按Ctrl+F2:
语法检查;Ctrl+F3:
激活;F8:
执行。
到这里,ABAP的第一个程序就写出来了,好简单!
!
!
1.2用ABAPDIALOG来实现:
比较麻烦,在这里详细的介绍怎么建立SCREEN,以后就不介绍了
①.建立一个DIALOG程序,步骤同上,只不过在Type里选择Modulepool,
假设程序名为:
Z_SCREEN
②.执行SE51,在Program里输入程序名称:
Z_SCREEN;
在screennumber里输入屏幕的号码:
9000
然后点Create
③.在shortdescription中输入你的描述:
helloworldscreen
④.点layout,调出屏幕编辑器,建立一个标签,输入helloworld
⑤.点激活,或者Ctrl+F3
⑥.执行SE93:
建立事务代码:
输入z_hello,点Create,会出现对话框,输入shorttext,选择Programandscreen,然后输入你建立的程序名以及屏幕号,
这里是Z_SCREEN,9000
⑦.点保存,然后会出现对话框,选择LOCALObject
好了,执行z_hello,看到了吧,不过这个程序还没有退出的功能,后面会慢慢加上去的。
二、ABAP基础知识学习
SAPABAP/4基础知识学习
2.1数据类型
C:
字符串
D:
日期型格式为YYYYMMDD例:
'1999/12/03'
F:
浮点数长度为8
I:
整数
N:
数值组成的字符串如:
011,'302'
P:
PACKED数用于小数点数值如:
12.00542
T:
时间格式为:
HHMMSS如:
'14:
03:
00'
X:
16进制数如:
'1A03'
*-------------------------------------------------------------------------------------*
2.2变量声明
DATA
exp:
DATA:
COUNTERTYPEPDECIMALS3,
NAME(10)TYPECVALUE'DELTA',
S_DATETYPEDVALUE'19991203'.
exp:
DATA:
BEGINOFPERSON,
NAME(10)TYPEC,
AGETYPEI,
WEIGHTTYPEPDECIMALS2,
ENDOFPERSON.
另外,有关DATA声明的指令还有:
CONSTANTS(声明常数)、STATICS(临时变量声明).
exp:
CONSTANTSPITYPEPDECIMALS5VALUE'3.14159'.
2.3关键字
2.3.1STATICS关键字
声明的变量仅在目前的程序中使用,结束后会自动释放
语法:
STATICS
系统专用变量说明
系统内部专门创建了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:
画横线
2.3.2TYPE关键字
用来指定资料型态或声明自定资料型态
Example:
TYPES:
BEGINOFMYLIST,
NAME(10)TYPEC,
NUMBERTYPEI,
ENDOFMYLIST.
DATALISTTYPEMYLIST.
2.3.3LIKE关键字
跟TYPE关键字使用格式相同,如
DATATRANSCODELIKESY-TCODE.
不同的是LIKE用在已有值的资料项,如系统变量,而TYPE关键字则是用在指定资料型态。
2.3.4TABLES关键字
用来声明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
*-------------------------------------------------------------------------------------*
三、输出
3.1WRITE语句
ABAP/4用来在屏幕上输出资料的指令是WRITE指令,例如:
WRITE:
'USERNAMEIS:
',SY-UNAME.
3.2指定屏幕输出位置
指定输出位置的语句格式为:
WRITE:
[AT][/][
其中:
/:
在下一行输出
指定输出的行号;
(
指定输出位数(长度)
指定显示格式参数,参数有:
LEFT-JUSTIFIED资料*左对齐
CENTERED资料*中间对齐
RIGHT-JUSTIFIED资料*右对齐
UNDER
NO-GAP紧接着显示,不留空格
USINGEDITMASK
使用内嵌子元显示,如12:
03:
20
USINGNOEDITMASK:
不使用内嵌子元
NO-ZER数字前面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
例如3:
DATA:
LENTYPEIVALUE10,
POSTYPEIVALUE11,
TEXT(10)VALUE'1234567890'
WRITE'Thetext------------appearsinthetext.'.
WRITEATPOS(LEN)TEXT.
3.3WRITETO语句的基本形式
要将值(文字)或源字段内容写入目标字段,可以使用WRITETO语句:
语法
WRITE
DATA:
NUMBERTYPEFVALUE'4.3',
TEXT(10),
FLOATTYPEF,
PACKTYPEPDECIMALS1.
WRITENUMBER.
WRITENUMBERTOTEXTEXPONENT2.
WRITE/TEXT.
WRITENUMBERTOFLOAT.
WRITE/FLOAT.
WRITENUMBERTOPACK.
WRITE/PACK.
MOVENUMBERTOPACK.
WRITE/PACK.
exp:
DATA:
NAME(10)VALUE'SOURCE',
SOURCE(10)VALUE'Antony',
TARGET(10).
...
WRITE(NAME)TOTARGET.
WRITE:
TARGET.
exp:
DATA:
COUNTERTYPEI.
COMPUTECOUNTER=COUNTER+1.
COUNTER=COUNTER+1.
ADD1TOCOUNTER.
在此,三条运算语句进行相同算术运算
输出屏幕上的线和空行
①水平线
1>用下列语法,可以在输出屏幕上生成水平线:
语法
ULINE[AT[/][
它等同于
WRITE[AT[/][
AT后的格式规范,与在在屏幕上定位WRITE输出(页28)中为WRITE语句说明的格式规范完全一样。
如果没有格式规范,系统则开始新的一行,并用水平线填充该行。
否则,只按指定输出水平线。
2>生成水平线的另一种方法,是在WRITE语句中键入恰当数量的连字符,如下所示:
WRITE[AT[/][
②垂直线
用下列语法,可以在输出屏幕上生成垂直线:
语法
WRITE[AT[/][
或
WRITE[AT[/][
③空行
用下列语法,可以在输出屏幕上生成空行:
语法
SKIP[
该语句从当前行开始,在输出屏幕上生成
如果没有指定
要将输出定位在屏幕的指定行上,请使用:
语法
SKIPTOLINE
该语句允许将输出位置向上或向下移动。
四、常见关键字
4.1显示图示
语法:
WRITE:
WRITE:
例如:
INCLUDE
INCLUDE
WRITE:
/'Phonesymbol:
',SYM_PHONEASSYMBOL.
WRITE:
/'AlarmIcon:
',ICON_VOICE_OUTPUTASICON.
要查看系统所提供有那些符号及图示,可选择'EDIT'下的'InsertStatement',选择'Write',接下来选择要查看的群组,如SYMBOL或ICON,接下来按'Display'即可
.
*-------------------------------------------------------------------------------------*
4.2InternalTable的声明
ABAP/4中的InternalTable是一种DataStructure,类似于其他语言中的STRUTURE,它可以由几个不同类型的栏位(field)组成,用来表示具有不同属性的某一事物,
单独一笔资料表示某个事物,多笔资料表示具有相同属性的多个事物.
Internaltable的定义有以下几种格式:
格式1.DATA:
BEGINOF
[
…]
ENDOF
语法:
DATA
Example:
DATAVECTORTYPEIOCCURS10WITHHEADERLINE.
格式2.TYPES:
BEGINOF
[
…]
ENDOF
TYPES
格式3.DATA:
BEGINOF
INCLUDESTRUCTURE
DATA:
ENDOF
DATA:
exp:
TYPESVECTORTYPEIOCCURS10.
TYPES:
BEGINOFLINE,
COLUMN1TYPEI,
COLUMN2TYPEI,
COLUMN3TYPEI,
ENDOFLINE.
TYPESITABTYPELINEOCCURS10.
TYPES:
BEGINOFDEEPLINE,
TABLE1TYPEVECTOR,
TABLE2TYPEITAB,
ENDOFDEEPLINE.
TYPESDEEPTABLETYPEDEEPLINEOCCURS10.
本示例创建与上例相同的内表数据类型(VECTOR和ITAB)。
然后创建数据类型DEEPLINE作为字段串,包含这些内表作为组件。
通过该字段串,数据类型DEEPTABLE被创建为内表。
因此该内表的元素本身就是内表。
exp:
TYPES:
BEGINOFLINE,
COLUMN1TYPEI,
COLUMN2TYPEI,
COLUMN3TYPEI,
ENDOFLINE.
TYPESITABTYPELINEOCCURS10.
DATATAB1TYPEITAB.
DATATAB2LIKETAB1WITHHEADERLINE.
同创建内表数据类型(页99)中所示,该示例创建数据类型ITAB作为内表。
通过使用DATA语句的TYPE参数引用ITAB,使数据对象TAB1与ITAB结构相同。
通过使用DATA语句的LIKE参数引用TAB1,使数据对象TAB2结构相同。
创建的TAB2带表头行。
因此,可以在程序中使用TAB2-COLUMN1、TAB2-COLUMN2和TAB2-COLUMN3等定位表格工作区域TAB2。
exp:
DATAFLIGHT_TABLIKESFLIGHTOCCURS10.
本示例创建数据对象FLIGHT_TAB,其结构与数据库表格SFLIGHT相同。
本示例介绍如何采用两种不同的步骤创建同一内表。
TYPESVECTOR_TYPETYPEIOCCURS10.
DATAVECTORTYPEVECTOR_TYPEWITHHEADERLINE.
在此创建一个内表数据类型VECTOR_TYPE,其行包含首先创建的基本类型I字段。
然后,通过引用VECTOR_TYPE创建数据对象VECTOR。
通过使用WITHHEADER
LINE选项还创建表格工作区域VECTOR。
在这种情况下,表格工作区域包含一种类型I字段,可以通过名称VECTOR定位。
DATAVECTORTYPEIOCCURS10WITHHEADERLINE.
在这种情况下,通过直接在DATA语句中使用OCCURS选项创建完全一样的数据类型VECTOR。
*-------------------------------------------------------------------------------------*
①.TYPEStype.
②.TYPEStype(len).
③.TYPES:
BEGINOFstructype...
ENDOFstructype.
④.TYPESitabtype{TYPEtabkindOFlinetypeLIKEtabkindOFlineobj}
[WITH[UNIQUE|NON-UNIQUE]keydef][INITIALSIZEn].
⑤.TYPESitabtypeTYPERANGEOFtype.
TYPESitabtypeLIKERANGEOFf.
⑥.TYPESitabtype{TYPElinetype|LIKElineobj}OCCURSn.
*-------------------------------------------------------------------------------------*
4.3APPENDLINE
格式:
APPEND
举例1:
(使用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.
举例2:
(不使用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.
exp:
DATA:
BEGINOFITABOCCURS10,
COL1TYPEC,
COL2TYPEI,
ENDOFITAB.
DO3TIMES.
APPENDINITIALLINETOITAB.
ITAB-COL1=SY-INDEX.ITAB-COL2=SY-INDEX**2.
APPENDITAB.
ENDDO.
LOOPATITAB.
WRITE:
/ITAB-COL1,ITAB-COL2.
ENDLOOP.
举例3:
(加入另一个Internaltable的元素)
格式:
APPENDLINESOF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ABAP 教程