变量宣告: Data
常数宣告: Constant p1 type p decimals 5 values ‘1.23456’.
系统所定义数据:
SPACE 空白字符串
SY-SUBRC 系统执行传回值, 0 表示成功
SY-UNAME logon 中学生礼物账号
SY-DATUM 系统日期
SY-UZEIT 系统时间
SY-TCODE 目前的transaction code
TYPE 叙述 用来指定数据型态或宣告自定数据型态
Example:
TYPES: BEGIN OF MYLIST,
NAME(10) TYPE C,
NUMBER TYPE I,
END OF MYLIST.
DATA LIST TYPE MYLIST.
LIKE 叙述
跟TYPE叙述使用格式相同, 如
DATA TRANSCODE LIKE SY-TCODE.
不同的是 LIKE 用在已有值的数据项, 如系统变量, 而TYPE叙述则是用
在指定数据型态。
指定显示格式
语法:
WRITE 资料项 <显示格式参数>
显示格式参数:
LEFT-JUSTIFIED 资料靠左显示
CENTERED 资料靠中间显示
RIGHT-JUSTIFIED 资料靠右显示
UNDER <g> 在资料项<g>的X轴开始坐标显示
NO-GAP 紧接着显示, 不留空格
USING EDIT MASK <m> 使用内嵌字符显示, 如 11:20:30
USING NO EDIT MASK 不使用内嵌字符
NO-ZERO 数字前面0 的部分不显示
NO-SIGN 不显示正负号
DECIMALS <d> 显示 d 位小数字数
EXPONENT <e> F(浮点数) exponent 的值
ROUND <r> 四舍五入至小数位数下 r 位
CURRENCY <c> 币别显示
DD/MM/YY 日期显示格式
MM/DD/YY
DD/MM/YYYY
MM/DD/YYYY
DDMMYY
MMDDYY
YYMMDD
显示图示
可以显示R/3 系统所提供的符号或图标
语法:
WRITE <symbol-name> AS SYMBOL
WRITE <icon-name> AS ICON
算术符号
** 乘幂
* 乘
/ 除
+ 加
- 减
DIV 整数除法
工作周记 MOD 余数除法
数值函数
1. ABS(N): 传回数值 N 的绝对值
2. SIGN(N): 1 if N > 0
1 if N = 0
-1 if N < 0
3. CEIL(N): 传回大于数值N的最小整数
Example:
WRITE CEIL(-5.65) 印出在风雨中前行 –5.00
WRITE CELL(4.54) 印出 5.00
4. FLOOR(N): 传回小于数值N的最大整数
Example:
WRITE FLOOR(-5.65) 印出 –6.00
WRITE FLOOR(4.54) 印出 4.00
5. TRUNC(N): 传回数值N的整数部分
Example:
WRITE TRUNC(5.65) 印出 5.00
6. FRAC(N): 传回数值 N 的小数部分
Example:
WRITE FRAC(5.65) 印出 0.65
7. COS(A),SIN(A),TAN(A): 传回三角函数 cos A, sin A, tan A 的值, A 为弪度量
8.EXP(N): 传回 e^N 值
8. LOG(N): 传回 log eN 值
9. LOG10(N): 传回 log N值
10.SQRT(N): 传回 N 的平方根值
日期与时间运算
1.日期数据的运算
吉他左手指法图解日期数据可以直接运算, 如加法与减法的运算
Example:
DATA: Mdata TYPE D.
Mdate = SY-DATUM. “ 如传回 19971015
Mdate+6(2) = ‘01’ “ Mdate 变成 19971001
Mdate = Mdate - 1 “ Mdate 变成 19970931
2.时间数据的运算
时间格式为 ‘hhmmss’, 如 ‘212030’ 表 ’21:20:30’
Example:
DATA: HOURS TYPE I,
MINUTES TYPE I,
T2 TYPE T VALUE ‘200000’,
T1 TYPE T VALUE ‘183000’.
HOURS = (T2 - T1) / 3600. “计算有几小时
MINUTES = (T2 – T1) / 60. “计算几分钟
字符串数据处理
1.字符串移位
语法:
SHIFT <c> [BY <n> PLACES] [<modes>]
<modes> : (1).空白, 字符串往左移一位
(2).LEFT, 字符串往左移 n 位
(3).RIGHT, 字符串往右移 n 位
(4).CIRCULAR: 字符串以环状方式移位
Example:
DATA STRING(10) VALUE ‘ABCDEFGHIJ’.
SHIFT STRING. “得到 BCDEFGHI’
SHIFT STRING BY 2 PLACES RIGHT. “得到 ABCDEFGH
2.取代字符串内容
语法:
REPLACE <string1> WITH <string2> INTO <c>
将字符串 <c> 中的 <string1> 以 <string2> 来取代
Example:
DATA: STRING(10) VALUE ‘ABCDEFGHI’,
STR1(3) VALUE ‘DEF’,
炸酱面的配料 STR2(3) VALUE ‘123’.
REPLACE STR1 WITH STR2 INTO STRING.
WRITE / STRING. “得到 ABC123GHI
3.大小写的转换
语法:
TRANSLATE <c> TO UPPER CASE. “转成大写
TRANSLATE <c> TO LOWER CASE. “转成小写
4.在字符串中寻找部分字符串
语法:
SEARCH <c> FOR <str>
Example:
DATA STRING(10) VALUE ‘ABCDEFGHIJ’.
会回存至两个变数, SY-SUBRC 和 SY-FDPOS, 逗留的近义词若找到则 SY-SUBRC 为 0
SY-FDPOS 存开始位迭, 若找不到则 SY-SUBRC为 4, SY-FDPOS为 0
5.字符串长度
STRLEN(<c>)
Example:
INT = STRLEN(‘XYZABC’). “得到 6
INT = STRLEN(‘ABC ’ ). “得到 3
6.取部分字符串
<f>[+<o>][<l>]
Example:
DATA T(10) VALUE ‘ABCDEFGHIJ’.
WRITE / T+2(4). “得到 CDEF
分手歌
迥圈叙述
1.计次迥圈
语法:
调休单
DO [n TIMES] [VARYING <f> FROM <start> TO <end>.
<loop block>
ENDDO.