分享

程序数据传输

 昵称9979883 2012-05-16
如何调用在另一个程序中的子程序?
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)

如何在循环(Loop),子程序(Subroutine)或报表程序(Report)里使用“EXIT”

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既不在一个子程序或模块里,也不在循环结构里,那么它就会终止报表程序或者启动最后的清单显示。  

如何使用“CHECK”语句 , 而不是”IF“语句?

1“CHECK”语句用在循环(LOOP)中。

如果<logic expression>检查结果为负,当前循环进程终止  然后开始下一个循环。

2“CHECK”在一个子程序(Subroutine)或报表程序(Report)里 

如果<logic expression>检查结果为负,程序停止运行并退出当前的子程序或报表程序。

CHECK <logic expression>.

和需要若干行的“IF”结构比较,CHECK”语句干净简洁。 往往若干行的“IF”代码可以被只有一行的“CHECK“语句取代。

如何在循环结构中使用“AT…ENDAT”结构?

Loop at itab.

At FIRST.

… … ... ...

ENDAT.

At LAST.

… … ... ...

ENDAT

ENDLOOP


























    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多