调用function module以及程序之间的调用

2009-4-17

在调用function module时,如果fm源代码中使用的是RAISE EXCEPTION,那么调用程序的参数列表中如果不存在这个exception参数,那么出现这个exception是程序就会出现dump,否则调用程序已然可以继续执行。还可以在function module的源代码中使用MESSAGE <kind><num>(<id>) RAISING <exception>.语句,当调用程序不存在exception参数时,就会调用message <num>

可在function grouptop include程序中设置message id

2009-4-20

一般程序的调用都是顺序执行的(sequential calling,如果想并行调用,需要使用语句CALL FUNTION…STARTING NEW TASK…

LEAVE TO TRANSACTIONrestart调用,CALL TRANSACTIONinsertion调用。

终端内存模型:external session对应于终端的一个窗口,可以通过new session/otcode的方式产生一个external session,一个终端最多可以产生九个external sessionInternal session以堆栈的方式存在于external session中每执行一个程序便会产生自己的internal session,一个external session中可以包括九个internal session。程序的变量只在internal session中可见,即变量的作用域是与程序相关的。

Restart模式的程序调用:当调用executable program时只有最顶端的internal session被覆盖,当调用事务代码时,external session中的memory便会被初始化,产生新的internal session

Internal session之间传递变量的几种方式:

The interface of the called program

Specifying variant or specifying values to input field

ABAP memory

 

SAP Memory

GET/SET

DATABase table

EXPORT IMPORT

Local files on your presentation server

GUI_UPLOAD GUI_DOWNLOAD

SAP Memory:与用户相关的用来存储变量值的内存空间。可用于internal session之间传递变量,不过变量的类型是有限的,SAP Memory的生命周期与用户的终端会话(terminal session)一致。SAP MEMORY在同一个terminal session的不同external session之间共享。可用来存储屏幕输入字段的缺省值。

ABAP Memory也是用户相关的存储变量值的内存空间,它与external session相一致,可以用于external session中的internal session之间传递变量,可以用来传递任何类型的ABAP变量。当用户离开external session时(/I command),相应的内存空间就会被初始化。

通过事务代码调用程序时只有insertionCALL TRANSACTION)方式才能通过ABAP MEMORY传递变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值