如何调用在另一个程序中的子程序? PERFORM <subroutine>(<program name>) using …
如何在程序之间传输数据?
为了在不同的程序之间传输数据,你可以先将数据保存到global ABAP内存,然后在另一个程序中读取它。 注意 :数据传输完成后, 一定要清干净global ABAP内存。 Program 1 EXPORT obj1 ... objn TO MEMORY ID ‘m_id’. Program 2 IMPORT obj1 ... objn FROM MEMORY. ID ‘m_id’. … … FREE MEMORY ID ‘m_id’. 如何使用“MOVE-CORRESPONDING”在两个结构之间复制数据?
如果你有两个结构 , 你想把同一字段类型(field type)的值从一个结构拷贝到另一个结构, 你只要使用语句“MOVE-CORRESPONDING”来实现这一目标。 只要一行代码即可。
然而,尽管这个命令非常方便 , 但对于CPU来说是非常昂贵的, 因为“MOVE-CORRESPONDING”语句会逐一检查每一个字段的类型。因此,如果程序的运行速度要求很高,你可能需要一个字段一个字段地拷贝。
另外请注意 ,因为 “MOVE-CORRESPONDING”语句会逐一检查每一个字段的类型, 如果你有两个相同类型的字段,你将会得到重复的数据。所以请先弄清楚两个结构的内容, 然后再应用此命令。
MOVE-CORRESPONDING struc1 TO struc2.
如何把程序分配到不同的包(package)?
在事务SE38或者SE80窗口里,用右键单击Repository Browser窗口里的程序名。然后 选择“更多功能“ à “更改包(Change package assignment)。 1。“EXIT”在循环(LOOP)结构里。 EXIT命令可以用来跳出循环结构 , 并终止循环的过程。 注意,在这里所说的“循环”结构不仅是指循环结构本身(Loop),而且还包括诸如DO, WHILE, SELECT等结构, 2。“EXIT”在一个子程序中(Subroutine)。 如果“EXIT”命令用在一个子程序或其它模块里,它是用来离开子程序或模块的。 “子程序”在这里指的是”FORM“结构 , 而“模块”是指 如MODULE, FUNCTION, TOP-OF-PAGE, and END-OF-PAGE等结构。 请注意 , 如果EXIT是在子程序或其他模块内的循环结构里,它只能让你跳出循环,但不能跳出子程序或模块。 3。“EXIT”在报表程序中(Report)。 如果EXIT既不在一个子程序或模块里,也不在循环结构里,那么它就会终止报表程序或者启动最后的清单显示。 1。“CHECK”语句用在循环(LOOP)中。 如果<logic expression>检查结果为负,当前循环进程终止 , 然后开始下一个循环。 2。“CHECK”在一个子程序(Subroutine)或报表程序(Report)里 如果<logic expression>检查结果为负,程序停止运行并退出当前的子程序或报表程序。 CHECK <logic expression>.
和需要若干行的“IF”结构比较,CHECK”语句干净简洁。 往往若干行的“IF”代码可以被只有一行的“CHECK“语句取代。
Loop at itab. At FIRST. … … ... ... ENDAT. At LAST. … … ... ... ENDAT ENDLOOP |
|