1、ABAP4语法集锦大全中文版. ABAP/4 DATA ELEMENT1. Data Type (数据类型)C: 字符(串), 长度为1, 最大有65535 BYTES, 初始值为: space,例: M;D: 日期, 格式为YYYYMMDD, 最大是9999/12/31 ,例:1999/12/03.F: 浮点数, 长度为8, 例如: 4.285714285714286E-01I: 整数 范围 :-231 231-1N: 数值组成的字符串: 011, 302.P: packed 数,用于小数点数值,例如: 12.00542;T: 时间, 格式为HHMMSS,例如: 14:03:00, 21:3
2、0:39.X: 16进制数, 例如 1A03.2. 变量宣告变量宣告包含name, length, type, structure等,语法如下: DATA 其中: :变量名称,最长30个字符,不可含有 + , . , : ( ) 等字符; :变量类型及长度; :初值 :小数位数Example 1: DATA: COUNTER TYPE P DECIMALS 3, NAME (10) TYPE C VALUE Delta, S_DATE TYPE D VALUE 19991203.Example 2: DATA: BEGIN OF PERSON, NAME(10) TYPE C, AGE TYP
3、E I, WEIGHT TYPE P DECIMALS 2, END OF PERSON.另外,有关DATA宣告的指令还有: CONSTANTS(宣告常数)、STATICS(临时变量宣告).3. 系统专用变量说明系统内部专门创建了SYST这个STRUCTURE,里面的字段存放系统变量,常用的系统变量有: SY-SUBRC : 系统执行某指令后,表示执行成功与否的变量,0 表示成功 SY-UNAME: 当前使用者登入SAP的USERNAME; SY-DATUM: 当前系统日期; SY-UZEIT: 当前系统时间; SY-TCODE: 当前执行程序的Transaction code SY-INDE
4、X : 当前LOOP循环过的次数SY-TABIX: 当前处理的是internal table 的第几笔SY-TMAXL: Internal table的总笔数SY-SROWS: 屏幕总行数;SY-SCOLS: 屏幕总列数;SY-MANDT: CLIENT NUMBER SY-VLINE: 画竖线 SY-ULINE: 画横线附注:1. SAP的全称是: System Application Products in Data Processing;2. ABAP/4的全称是:Advanced Business Application Programming;3. ABAP/4的路径为:Tools
5、ABAP/4 WorkBenchABPA/4 Editor ;4. ABAP/4每条语句以句号结束;5. ABAP/4中象= , ,+,-,*,/等符号左右都需要有至少一个空格;6. 整行注释用*号, 注释本行后面部分用”号;OUTPUTTING DATA TO SCREEN一. WRITE 语句ABAP/4用来在屏幕上输出数据的指令是WRITE指令,例如: WRITE: USER NAME IS:, SY-UNAME.二. 指定屏幕输出位置指定输出位置的语句格式为: WRITE: AT / () 资料项 其中: / : 在下一行输出: 指定输出的行号;():指定输出位数(长度): 指定显示格
6、式参数,参数有: LEFT-JUSTIFIED 资料靠左对齐 CENTERED 数据靠中间对齐 RIGHT-JUSTIFIED 资料靠右对齐 UNDER 正对在数据项的下面显示 NO-GAP 紧接着显示,不留空格 USING EDIT MASK : 使用内嵌子元显示, 如 12:03:20 USING NO EDIT MASK: 不使用内嵌子元 NO-ZERO: 数字前面 0 的部分不显示 NO-SIGN: 不显示正负号 DECIMALS : 显示 位小数 EXPOENT : F(浮点数)指数的值 ROUND : 四舍五入至小数点后位 CURRENCY : 币别显示 DD/MM/YY : 日期
7、显示格式 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: X TYPE I VALUE 11:20:30, A(5) TYPE C VALUE AB CDE. WRITE: / X USING EDIT MASK _:_:_. WRITE: / X USING EDIT MASK $_,_. WRITE: / Y NO-GAP.输出结果为: 11:20:30 $112,030 ABCD
8、EF4. 显示图标:语法: WRITE: AS SYMBOL. WRITE: AS ICON.例如: INCLUDE . INCLUDE .WRITE: / Phone symbol:, SYM_PHONE AS SYMBOL.WRITE: / Alarm Icon:, ICON_VOICE_OUTPUT AS ICON.要查看系统所提供有那些符号及图标,可选择EDIT下的Insert Statement,选择Write,接下来选择要查看的群组,如SYMBOL 或ICON, 接下来按Display即可. INTERNAL TABLE1. Internal Table 的宣告ABAP/4中的In
9、ternal Table是一种Data Structure,类似于其它语言中的STRUTURE,它可以由几个不同类型的字段(field)组成,用来表示具有不同属性的某一事物,单独一笔资料表示某个事物,多笔数据表示具有相同属性的多个事物.例如:为了存取或记录某班的同学数据,我们创建如下的internal table:DATA: BEGIN OF STUDENT OCCURS 20, STD_ID TYPE N, NAME(10) TYPE C, AGE TYPE I, BIRTH TYPE D, SCORE TYPE P DECIMALS 2, END OF STUDENT.此时我们已经创建了名
10、叫STUDENT的internal table,并且为它预先申请了能够存放20笔数据的Buffer(当然,如果存取数据不止20笔,程序执行时,会自动申请系统Buffer)Internal table 的定义有以下几种格式:格式一. DATA: BEGIN OF OCCURS , TYPE , TYPE , TYPE , END OF .格式二. TYPES: BEGIN OF , TYPE , TYPE , TYPE , END OF . TYPES TYPE OCCURS .格式三. DATA: BEGIN OF . INCLUDE STRUCTURE . DATA: END OF . DA
11、TA: LIKE OCCURS .2. APPEND LINE格式: APPEND TO .举例一. (使用work area)DATA: BEGIN OF LINE, COL1 TYPE I, COL2 TYPE I, END OF LINE.DATA ITAB LIKE LINE OCCURS 10.DO 2 TIMES. LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX * 2. APPEND LINE TO ITAB.ENDDO.LOOP AT ITAB INTO LINE. WRITE: / LINE-COL1, LINE-COL2.ENDLOOP
12、.执行结果为:1 12 4举例二. (不使用work area) DATA: BEGIN OF ITAB OCCURS 10, COL1 TYPE I, COL2 TYPE I, END OF ITAB. DO 2 TIMES. ITAB-COL1 = SY-INDEX. ITAB-COL2 = SY-INDEX * 2. APPEND ITAB. ENDDO. LOOP AT ITAB. WRITE: / ITAB-COL1, ITAB-COL2. ENDLOOP. 执行结果与举例一相同.举例三. (加入另一个Internal table的元素) 格式: APPEND LINES OF FR
13、OM TO TO . 将的元素加入至中,可选取自至的范围. APPEND LINES OF ITAB TO JTAB.3. COLLECT LINECOLLECT 指令也是将元素加入Internal table中,与APPEND 的区别是: COLLECT指令在非数值字段相同的情况下,将数值字段汇总.格式: COLLECT INTO DATA: BEGIN OF ITAB OCCURS 3, COL1(3) TYPE C, COL2 TYPE I, END OF ITAB. ITAB-COL1 = ABC. ITAB-COL2 = 10. COLLECT ITAB. ITAB-COL1 = X
14、YZ. ITAB-COL2 = 20. COLLECT ITAB. ITAB-COL1 = ABC. ITAB-COL2 = 80. COLLECT ITAB.此时, internal table中放的是2笔数据, 分别为: ITAB-COL1 ITAB-COL2 ABC 90 XYZ 204. INSERT LINE将元素插入在指定的internal table位置之前.格式: INSERT INTO INITIAL LINE INTO INDEX 或者: INSERT LINES OF FROM TO INTO INDEX 其中: 即work area,工作区中的元素.INITIAL LI
15、NE INTO :插入一笔初始化的记录.: internal tableINDEX : internal table 的记录号.(新加入的元素放在此记录前面)5. 读取internal table格式一: LOOP AT INTO FROM TO WHERE ENDLOOP.格式二:READ TABLE INTO INDEX / WITH KEY 举例. (格式二)DATA: BEGIN OF ITAB OCCURS 10, COL1 TYPE I, COL2 TYPE I, END OF ITAB. DO 10 TIMES. ITAB-COL1 = SY-INDEX. ITAB-COL2 =
16、 SY-INDEX * 2. APPEND ITAB.ENDDO.READ TABLE ITAB INDEX 3.(或者: READ TABLE ITAB WITH KEY COL1 = 3.)WRITE: / ITAB-COL1 = , ITAB-COL1, ITAB-COL2 = , ITAB-COL2.执行结果同样是: ITAB-COL1 = 3ITAB-COL2 = 6.6. 修改internal table 中的值格式: MODIFY FROM INDEX TRANSPORTING WHERE 举例一. READ TABLE ITAB INDEX 3. LINE-COL1 = 29.
17、 MODIFY ITAB FROM LINE TRANSPORTING COL1. 将第三笔记录的COL1字段的值修改为29.举例二. T_SALARY salary = 50. MODIFY T_SALARY TRANSPORTING salary WHERE birthday = 1999/12/06.7. DELETE internal table中的字段格式: DELETE INDEX .或: DELETE FROM TO WHERE 8. Internal table 排序 SORT BY 其中: 有DESCENDING 和ASCENDING, Default 为ASCENDING.
18、 : 为指定排序的字段.9. 加总SUM.总和计算存放与work area中,但只能在LOOP 中使用.例: LOOP AT ITAB INTO LINE. SUM. ENDLOOP. WRITE: / LINE-COL1, LINE-COL2.10. 初始化internal tableREFRESH . 清空中的值.CLEAR . 清空的Header Line.FREE . 释放记忆体空间.屏幕输入命令 在ABAP/4中要从屏幕输入变量, 使用的命令是 PARAMETERS 及SELECTION-OPTIONS: 1. PARAMETER: 输入一个变量 2. SELECTION-OPTIO
19、NS: 使用条件筛选画面来输入数据 一. PARAMETERS 指令基本的输入命令, 类似如BASIC的INPUT命令, 但无法使用F格式(浮点数) 语法: PARAMETERS DEFAULT LOWER CASE OBLIGATORY AS CHECKBOX RADIOBUTTON GROUP Example: PARAMETERS: NAME(8), AGE TYPE I, BIRTH TYPE D. 执行结果: 在日期的输入格式上为 MM/DD/YY , MM/DD/YYYY, MMDDYY或MMDDYYYY , 如输入 020165表 1965年02月01日, 与02/01/65的输
20、入是一样的, 日期输入范围为公元1950年至2049年1. DEFAULT 设定输入的默认值Example: PARAMETERS: COMPANY(20) DEFAULT DELTA, BIRTH TYPE D DEFAULT 19650201.2. LOWER CASE ABAP/4预设是将字符串输入值自动转换为大写, 加上此参数会将输入的数据转成小写, 3. OBLIGATORY强制要求输入, 屏幕上会出现一个 ? , 使用者必须要输入才可.4. AS CHECKBOX 输入 CHECKBOX的格式 Example: PARAMETERS: TAX AS CHECKBOX DEFAULT
21、 X, NTD AS CHECKBOX. 执行结果: 5. RADIOBUTTON GROUP 输入 RADIO BUTTON GROUP 的方式 Example: PARAMETERS: BOY RADIOBUTTON GROUP SEX DEFAULT X, GIRL RADIOBUTTON GROUP SEX. 执行结果:二. SELECT-OPTIONS SELECTION-OPTIONS所输入的值实际上是放在internal table中的,该Internal table 有四个字段,分别是:SIGN,OPTION,LOW,HIGH. 条件筛选检查条件输入画面指令, 输入条件后可配合
22、SELECT指令自TABLE读取符合条件的数据, 直接执行或放入 Internal Table中, 条件有四个参数:1. SIGN: I: 表筛选条件符合的资料 E: 表筛选条件不符合的资料2. OPTION: 比较的条件符号 EQ(等于),NE(不等于),GT(大于),LE(小于),CP(包含),NP(不包含)3. LOW: 最小值4. HIGH: 最大值 语法: SELECT-OPTIONS FOR Example: TABLES SPFLI. SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.将条件的输入值存放入 AIRLINE, 筛选选择为SPFLI中的C
23、ONNID字段执行结果:可直接输入起始范围或按下选择画面, 输入完后按下左上角的执行键 三. 条件输入选择画面1. 自Table中选取按下输入项的右边往下箭头, 叫出Table中数据项, 选取开始和结束的范围2. Selection Options按下”Selection options”按键, , 输入Option及 Sign参数内容, 屏幕如下: 3.Multi-Options输入 按下最右边的Multi-Options输入键, 输入条件选取的范围, 画面如下: 条件输入完后按下”Copy”按键四. 改变条件输入格式1. DEFAULT TO 设定开始结束范围输入默认值 Example:
24、SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID DEFAULT 2042 TO 4555.2. NO-EXTENSION设定不要Multi-Option输入画面3. NO INTERVALS设定不要区间范围输入画面4. LOWER CASE输入转换成大写5. OBLIGATORY强制要求输入 五. 配合 SELECT 命令 条件输入完后要将符合条件的数据筛选出来, 可配合使用 SELECT 指令 1.使用WHERE Example: SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID. SELECT * FROM SPFLI WHER
25、E CONNID IN AIRLINE. WRITE: / CONNID,FROMCITY,TOCITY. ENDSELECT.2.使用CHECK参数Example: SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID. SELECT * FROM SPFLI. CHECK AIRLINE. WRITE: / CONNID,FROMCITY,TOCITY. ENDSELECT. 3.使用 IF IN 叙述 Example: SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID. SELECT * FROM SPFLI. IF SPFLI-C
26、ONNID IN AIRLINE. WRITE: / CONNID,FROMCITY,TOCITY. ENDIF ENDSELECT. 六. SELECTION-SCREEN 1.产生空白列语法: SELECTION-SCREEN SKIP Example: SELECTION-SCREEN SKIP 2. 产生两列空白列 2.产生底线语法: SELECTION-SCREEN ULINE / (length) Example: SELECTION-SCREEN ULINE /10(30). 自第10格开始产生长度30的底线 3.印出备注说明 语法: SELECTION-SCREEN COMME
27、NT / (length) Example: REMARK = Pls enter your name. SELECTION-SCREEN COMMENT /10(30) REMARK. 4. 同一列中输入数个数据项语法: SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN END OF LINE. Example: SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN POSITION 20. PARAMETERS NAME(10). SELECTION-SCREEN POSITION 40. PARAMETERS BIRTH TYPE D