SAP 函数调用

1.  1   Function调用

    更新FM:LUW

CALL FUNCTION update_function IN UPDATE TASK直到Commit Work 才运行

(注:debug隐式提交不会触发)

主要用于本地更新(非远程RFC调用,如果是远程调用,则采用事务性RFC调用方式:IN BACKGROUND TASK

image394

update fm需要在属性中勾选“更新模块”

 

然后在程序中使用 call function in update task调用,此时不会立即执行函数,在执行到commit work时触发执行(注:debug隐式提交不会触发)。

update task不在当前dialog work process中执行,会在update work process中异步执行。dialog work process把修改数据写入簇表VBLOG中,update work process从表VBLOG中读取,把修改传入数据库。更新数据库成功后,update work process会在最后一步数据库修改操作完成后触发一次数据库commit,把vblog中的数据删掉;如果更新失败,会触发一次rollback,保留vblog中的数据,发送一条消息给sap用户。

注意:

在update task里不能使用commit work,否则会dump。

使用update task可以控制出错时多个update module同时回滚。

在update module中打断点是不会进去的,dump了也不会报出来,会把错误发到用户的收件箱。

查看错误的数据,使用tcode sm13查看update请求,双击进入error的项目,把光标定位在module上,点击"dsplay uodate data"可以看到具体错误的数据。

分步异步更新:先执行V1,再执行V2。可以在update work process不够用的情况下,优先执行V1

debug

 

SET UPDATE TASK LOCAL

执行了这句之后,call function in update task就不会提交到update work process,会在diaog work process执行(不管是否wait都会在当前session同步执行)。依旧在commit时触发,断点不再需要debug update就可以进入,如果是commit and wait ,那么执行完了就表示update function全部执行完了。

此时会保留update task的解锁功能

注:SET UPDATE TASK LOCAL只对一个luw起作用,且必须在第一个update task注册之前申明,即如果多次调用commit,就需要每次都在第一个update task之前申明SET UPDATE TASK LOCAL

2.             RFC函数:远程调用

2.1.       同步

CALL FUNCTION func [DESTINATION dest]  [?desti?nei??n]

DESTINATION不省略的情况下,且dest取值又不为SPACE,则函数一定要是RFC函数才能采用此方式进行远程同步调用

2.2.       异步

CALL FUNCTION rfm_name STARTING NEW TASK [DESTINATION dest]taskname PERFORMING return_form ON END OF TASK

FORM return_form USING taskname.
  ...
  RECEIVE RESULTS FROM FUNCTION rfm_name
  ...
ENDFORM.

等待多个异步调用的返回结果:WAIT UNTIL log_exp [UP TO sec SECONDS].

异步调用时不能有IMPORTING参数;函数一定要是RFC函数才能采用异步调用;只要有STARTING NEW TASK选项,即为异步调用;如果是异步调用同一目标端的RFC函数,则可以省略DESTINATION

2.2.1.              事务性RFC调用

实质上事务RFC调用也属于异步调用

CALL FUNCTION func IN BACKGROUND TASK [DESTINATION dest],并不立即执行,直到主调程序中的COMMIT WORK语句(隐式提交不要,一定要使用COMMIT WORK显示提交)才一次性执行多个远程函数调用

函数一定要为RFC函数,且要通过Commit Work语句显示提交后,才会去执行,否则不会执行;如果是同一目标端的RFC函数,则可以省略DESTINATION

2.3.     DESTINATION 取值

l  目标NONE:当前程序所在应用服务器作为目标系统,但调用过程还是RFC远程方式来调用,这与SPACE是同的

l  目标SPACE: DESTINATION选项将会被忽略,被调功能函数将作为普通函数在本机调用

l  目标BACK:用于被远程调用的RFM程序内部的CALL FUNCTION语句中的目标指定,通过已建立的RFC连接反过来调用该函数的主调者系统中的其他功能模块(即主调程序—>远程系统中的RFM—>又回调主调程序所在系统中的其他函数)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Delphi是一种广泛使用的编程语言,具有强大的集成开发环境(IDE),可以用于开发各种软件应用程序。在使用Delphi调用SAP(Systems, Applications, and Products in Data Processing)接口函数的过程中,我们首先需要创建一个SAP连接,然后使用该连接来调用我们所需的接口函数。 首先,我们需要确保已经安装了相应的SAP RFC(Remote Function Call)库,并在Delphi中导入相关的扩展包。然后,我们需要通过创建一个RFC连接对象来建立与SAP系统的通信。在连接对象中,我们需要提供SAP系统的相关信息,比如SAP服务器的主机名、系统编号、客户端号码等。 一旦我们成功建立了与SAP系统的连接,我们就可以开始调用SAP接口函数了。我们可以使用RFC连接对象的CallFunction方法来调用函数,在调用时需要提供接口函数的名称以及相应的参数。在调用成功后,我们可以通过获取返回的结果数据来处理和使用。 在调用SAP接口函数时,我们需要确保提供正确的函数参数和参数类型,以及正确的数据格式。我们可以使用Delphi提供的相关功能来进行参数类型转换和数据格式处理。 在调用函数之前,我们还需要考虑如何处理和处理潜在的错误和异常。我们可以使用Delphi提供的异常处理机制来捕获和处理可能出现的错误,以确保程序的稳定性和可靠性。 综上所述,使用Delphi调用SAP接口函数需要先建立与SAP系统的连接,然后通过RFC连接对象调用相应的接口函数,并处理返回的结果数据和潜在的错误和异常。这样可以实现Delphi与SAP系统的集成,实现数据的交互和共享。 ### 回答2: Delphi是一种编程语言,可以用于调用SAP的接口函数。SAP是一种集成的企业资源计划软件,它提供了各种接口函数,可以与其他系统进行数据交换和集成。 在Delphi中调用SAP接口函数,首先需要通过SAP提供的API文档了解接口函数的参数和返回值。然后,在Delphi中创建一个新的项目或使用现有的项目,在项目中引入SAP的相关库文件和命名空间。 接下来,可以使用Delphi的相关语法,如函数调用、变量声明等,来调用SAP的接口函数。根据接口函数的参数要求,可以在Delphi代码中传入需要的参数,并接收返回值。 在调用SAP接口函数时,需要确保Delphi和SAP的连接是正常的。可以通过设置连接参数,如SAP系统的用户名、密码、连接字符串等来确保连接成功。 在调用SAP接口函数之前,可能需要进行一些前期准备工作。例如,可能需要创建SAP连接对象、打开连接、连接到具体的SAP系统等。 调用SAP接口函数后,可以根据返回值来进行相应的处理。根据接口函数的返回值类型,可以使用条件语句、循环语句等来判断并处理返回结果。 在调用SAP接口函数时,还需要注意异常处理。如果在调用过程中发生了错误或异常,可以使用Delphi提供的异常处理机制来捕获和处理异常,以防止程序崩溃或不稳定。 总之,通过Delphi调用SAP接口函数可以实现与SAP系统的数据交换和集成。这样可以方便地在Delphi程序中使用SAP的功能和数据,提高系统的灵活性和扩展性。 ### 回答3: 使用Delphi调用SAP接口函数需要以下步骤: 1. 在Delphi中设置与SAP接口通信的环境。这可以通过使用SAP提供的相关库文件来完成。通常,这些库文件可以作为一个包被导入到Delphi项目中。 2. 使用SAP提供的函数或类来建立与SAP服务器的连接。这些函数或类可以通过指定SAP服务器的IP地址、端口号、用户名和密码来建立连接。 3. 一旦连接建立,可以通过调用相应的SAP函数或方法来执行所需的操作。这些操作可能包括读取或写入SAP系统的数据,调用SAP的业务逻辑函数或者执行其他与SAP相关的任务。 4. 在调用SAP函数或方法之前,可能需要根据SAP接口的要求设置相应的输入参数。这些参数通常是一个结构体或一个数组,其中包含了传递给SAP函数的数据。 5. 当SAP函数执行完成后,可能会返回一个结果,这可以是一个结构体或一个值。根据需要,可以解析结果并进一步处理。 6. 最后,使用SAP提供的功能来关闭与SAP服务器的连接,并释放相关的资源,以确保程序的完整性和安全性。 需要注意的是,具体的调用方式和步骤可能因为SAP接口的版本和特性而有所不同。因此,在进行Delphi调用SAP接口函数的实际操作前,应该先详细阅读SAP的相关文档,并了解其具体的接口规范和要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值