标签:other value img when 操作 模块 if语句 lang href
ABAP Programming Language 的内容主要有:
1.数据类型与数据对象
2.内表和内表结构(Internal Table)
3.数据流控制语句
4.模块化(Modularization)
FORM
form ... endform. 是用来封装一段代码的。
perform ... . 是用来调用这段代码的。
并不是创建函数,创建函数是SE37。form ... endform里面的代码可以看成是私有的,其它程序调用不了,而函数是被其它程序调用的。
创建方法是用SE24。
这个和函数还有点不太一样,在ABAP开发中函数又叫Function Module(功能模块)。
INCLUDE
该语句的主要作用是使别的结构体中的组件全部包括进来成为自己的组件。
TYPES BEGIN OF struc_type.
TYPES comp ...
TYPES comp TYPE struc_type BOXED. "参照另一结构类型
INCLUDE { {TYPE struc_type} | {STRUCTURE struc} } "将另一结构包括进来
[AS name [RENAMING WITH SUFFIX suffix]].
TYPES END OF struc_type.
INCLUDE { {TYPE struc_type} | {STRUCTURE struc} }
[AS name [RENAMING WITH SUFFIX suffix]].
该语句只能用在定义结构的BEGIN OF与 END OF之间。作用是将结构类型struc_type与结构变量struc的所有组件字段拷贝到当前结构定义的指定位置,INCLUDE就是将可以重复使用的东西先做好,再包含进来。
AS name:给包含进来的结构类型(或结构变量)取一个别名,这样就可以通过结构组件符(-)来选取这个结构类型(或结构变量)
RENAMING WITH SUFFIX suffix:如果include进来的结构类型(或结构变量)的组件字段与现有的重复,则可以使用此选项重命名include进来的结构类型(或结构变量)的各组件字段名,具体做法只是在原来组件名后加上了指定的后缀suffix。
1)使用IF语句实现分支
[Syntax]
IF <condition1>.
<statement block>.
ELSEIF <condition2>.
<statement block>.
ELSE.
<statement block>
ENDIF.
[For Example]
DATA xx TYPE N VALUE 6.
IF xx = 5.
WRITE: / ‘The value of xx is‘,5.
ELSEIF xx = 6.
WRITE: / ‘The value of xx is‘,6.
ELSE.
WRITE: / ‘The value of xx is‘,7.
ENDIF.
2)使用CASE...WHEN...ENDCASE语句实现分支
[Syntax]
CASE <f>.
WHEN <f1>.
<statement block>.
WHEN <f2>.
<statement block>.
WHEN ...
WHEN OTHERS.
<statement block>.
ENDCASE.
[For Example]
DATA xx TYPE N VALUE 8.
CASE xx.
WHEN 5.
WRITE: / ‘The value of xx is‘,5.
WHEN 6.
WRITE: / ‘The value of xx is‘,6.
WHEN 7.
WRITE: / ‘The value of xx is‘,7.
WHEN OTHERS.
WRITE: / ‘The value of xx is‘,8.
ENDCASE.
3)使用LOOP...ENDLOOP语句实现循环控制
LOOP语句通常用于实现内表数据的循环读取及操作。
[For Example]
LOOP AT itab.
WRITE:itab.
ENDLOOP.
4)使用DO语句实现内部循环次数控制。
DO 语句可以指定循环次数。
[Syntax]
DO.
[<n> TIMES]
[VARYING <f> FROM <f1> NEXT <f2>].
<statement block>
ENDDO.
注:
n:可以是数字或者变量,如果n是0或者负数,系统不执行该循环。
TIMES:循环次数。
VARYING:选项在每次循环中给变量<f>重新赋值。
使用DO语句时要避免死循环,如果不使用TIMES选项,则在语句块中至少包含一个EXIT、STOP、REJECT语句,以使系统能退出循环。
[For Example]
DO 5 TIMES.
WRITE:/ ‘This Index is‘,SY-INDEX.
ENDDO.
DO语句内部还可以实现多层嵌套,为了保证程序可读性,建议嵌套最多不要超过6层。
[For Example]
DATA do_index TYPE N.
DO 5 TIMES.
do_index = SY-INDEX.
WRITE:/ ‘This Index is‘,do_index.
DO 2 TIMES.
WRITE:/ ‘First Index Loop is‘,do_index, ‘The Next Index Loop is‘,SY-INDEX.
ENDDO.
ENDDO.
执行结果如下图:
5)使用WHILE条件循环
[Syntax]
WHILE <condition> [VARY <f> FROM <f1> NEXT <f2>].
<statement block>
ENDWHILE.
循环终止CONTINUE、CHECK、EXIT
[For Example]
无条件终止循环(CONTINUE):
DATA while_index TYPE N VALUE 0.
WHILE while_index < 5.
while_index = while_index + 1.
IF while_index = 3.
CONTINUE.
ENDIF.
WRITE:/ ‘while_index‘,while_index.
ENDWHILE.
执行结果如下图:
有条件终止循环(CHECK):
DATA while_index TYPE N VALUE 0.
WHILE while_index < 5.
while_index = while_index + 1.
CHECK while_index BETWEEN 2 AND 5.
WRITE:/ ‘The while_index is‘,while_index.
ENDWHILE.
执行结果:
完全终止循环(EXIT):
DATA while_index TYPE N VALUE 0.
WHILE while_index < 5.
while_index = while_index + 1.
IF while_index = 3.
EXIT.
ENDIF.
执行结果:
6)使用ONCHANGE实现循环内部数据管控
当循环的数值发生变动时,可以用表达式ONCHNAGE来触发数值变动事件。
[For Example]
DATA while_index TYPE N VALUE 0.
WHILE while_index < 5.
while_index = while_index + 1.
DO 2 TIMES.
ON CHANGE OF while_index.
WRITE:/ ‘The while_index has change value is‘,while_index.
ENDON.
WRITE:/ ‘SY-INDEX=‘,SY-INDEX.
ENDDO.
ENDWHILE.
执行结果如下图:
标签:other value img when 操作 模块 if语句 lang href
原文地址:http://www.cnblogs.com/bolang100/p/7526060.html