关健字是语句的第一个词,它决定整个语句的意义,有四种不同类型的关健字 .
1.说明性关健字
TYPES,DATA,TABLES,这些关健字说明定义数据类型或者说明程序可以访问的数据对象
TYPES: 用来定义数据结构类型 。
DATA: 用来定义数据结构对象 。
TABLES: 用来声明Table Work Area 的数据 。
— TYPES与DATA的区别是,TYPES是用来自定义某种类型的,需要DATA语句实例化后才可以使用
— DATA是用来声明基本数据类型对象(实体变量),对于用DATA直接定义的结构体对象(不参照其它结构类型),其同时也是一个结构类型 。
TYPE: 用来指定数据型态或宣告自定数据型态 。
LIKE: LIKE 用在已有值的数据项 。
— TYPE后面跟随的只能是某种类(型),而LIKE后面可以跟实例对象 ;
— 参照结构体对象生成内表时只能用LIKE,不能用TYPE,因为结构体对象不是类型,只是一种实例对象 ;
— 参照结构类型生成内表时可以用LIKE也可以用TYPE.其中通过LIKE定义的内表直接拥有参照结构类型的元素结构;
— 定义的内表只能间接拥有被参照结构类型的元素结构,结构类型不能作为内表的工作区,只有结构体对象才可以;
CONSTANTS :用来声明常数
STATICS :用来在当前程序中声明静态变量 ,程序结束后自动释放内存 ;
TYPES: begin of name_type ,
name(20) type c ,
sex(2) type c ,
age type i ,
end of name_type .
— 定义了个name_type 结构体类型 。
DATA: name type name_type .
— 定义了个name对象,其类型为name_type .
data: begin of name_type ,
name(20) type c ,
sex(2) type c ,
age type i ,
end fo name_type .
— 定义了个name_type结构体对象。
2.事件关健字
这些关健字在ABAP中定义处理块,处理块是当特定事件发生时进行处理的语句组
— 多用于report
INITIALIZATION : 在选择屏幕显示前,对变量进行初始化赋值
AT SELECTION-SCREEN : 对选择屏幕的数据输入进行检查
START-OF-SELECTION : 选择屏幕处理完后,数据的处理
TOP-OF-PAGE : 列表显示启动新页,页头的输出
END-OF-PAGE : 一页结束时,页尾的处理
AT LINE-SELECTION : 用户双击选中某行触发该事件
AT PF : 设置自定义的菜单
AT USER-COMMAND : 当用户功能健时,触发该事件
3.控制关健字
条件分支
data flag type c value ‘a’ .
if flag = ‘a’ .
write:/’A’.
elseif flag = ‘b’.
write: / ‘B’ .
else .
write: /’error’ .
endif .
— 每个判断语句之后都要加句号(.) 。
CASE 条件分支
DATA:
TEXT1 VALUE ‘X’,
TEXT2 VALUE ‘Y’,
TEXT3 VALUE ‘Z’,
STRING VALUE ‘A’.
CASE STRING.
WHEN TEXT1.
WRITE: / ‘String is’, TEXT1.
WHEN TEXT2.
WRITE: / ‘String is’, TEXT2.
WHEN TEXT3.
WRITE: / ‘String is’, TEXT3.
WHEN OTHERS.
WRITE: / ‘String is not’, TEXT1, TEXT2, TEXT3.
ENDCASE.
–计次循环
DO 2 TIMES .
WRITE: / ‘X’ .
ENDDO .
DO VARYING I FROM 1 TO 10
S = S + I .
ENDDO .
— 无穷循环
DO .
XXXX
ENDDO .
— 条件循环
WHILE I<= 10 .
S = S + I .
I = I + 1.
ENDWHILE .
— 使用循环要避免死循环 。
— 在语句块中至少应包含一个 EXIT、 STOP 或 REJECT 语句,以便系统能够退出循环。
循环控制
1) CONTINUE : 跳至循环的下一次 。(无条件终止一次循环)
DO 3 TIMES.
IF SY-INDEX = 2.
CONTINUE.
WRITE / SY-INDEX.
ENDDO.
执行结果:
1
3
2) CHECK : 满足check条件之后才继续往下执行循环(有条件终止循环)
DO 5 TIMES.
CHECK SY-INDEX BETWEEN 2 AND 4.
WRITE / SY-INDEX.
ENDDO.
执行结果:
2
3
4
3) EXIT : 跳离循环 (完全终止循环)
DO 10 TIMES.
IF SY-INDEX = 4.
EXIT.
ENDIF
WRITE / SY-INDEX.
ENDDO.
执行结果:
1
2
3
4.操作关健字
WRITE
write 用来在屏幕上打印输出数据。
write : ‘ 输出内容 ‘’ .
write at [/] [<pos>] [<len>]
/ : 换行,下一列
pos:屏幕X坐标
len: 显示长度
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
sikp [n] : 空N行
WRITE <icon-name> AS ICON :显示系统图标
WRITE <symbol-name> AS SYMBOL :显示系统符号
— 选择 “Edit” 下的 “Insert Statement”, 选 “WRITE” 接下来选择要查的群组, 如 SYMBOL 或 ICON, 按下 “Display” 即可查看所有系统图标或符号 。
WRITE <资料项> AS CHECKBOX. 作为checkbox显示
— 以字符串数据内容的第一个字符为 CHECK BOX 的输出, 如果是空白, CHECK BOX 显示为空白, 相反则显示 X ,
MOVE
MOVE <F1> TO <F2> :将F1的值保存到F2中,等同于F2 = F1 , 内表同样适用。
MOVE <F1>[+<O1>] TO <F2>[+<O2>] :将字符串中指定字符保存到指定字符串中 。
data: f1(10) type c value ‘ABCDEFGHIJ’ ,
f2(10) type c value ‘ZZZZZZZZZ’ .
MOVE F1+3(5) TO F2+3(5) .
f2为:ZZZDEFGHZZ .
MOVE –CORRESPONDING <Strings1> TO <String2>.将 Strings1中的 field组件的数据复制至String2 中, 仅复制相同名称的组件
DATA: BEGIN OF ADDRESS,
FIRSTNAME(10) VALUE ‘LULU’,
LASTNAME(10) VALUE ‘CHOU’,
TEL(12) VALUE ‘4660570’,
END OF ADDRESS.
DATA:BEGIN OF NAME,
FIRSTNAME(10),
LASTNAME(10),
E_MAIL(30),
END OF NAME.
MOVE-CORRESPONDING ADDRESS TO NAME.
NAME-FIRSTNAME 变成 ‘LULU’, NAME-LASTNAME 变成 ‘CHOU’, 而 NAME-E_MAIL 则不变
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/19641.html