Background RFC 新方式
来源:互联网 发布:程序员入门需要多久 编辑:程序博客网 时间:2024/05/22 19:22
事务性RFC方式的RFM调用
同步、异步RFC过程中,每一个RFC调用在远程系统中构成一个独立的LUW;
事务性RFC调用,可以将多个逻辑上相关的远程调用绑定至同一个LUW上,在该LUW内,按顺序调用,要么执行所有数据库操作,要么完全回滚来取消全部数据库更新操作,保证RFC调用过程的完整性和数据一致性;
事务性RFC调用处理保证在程序到达COMMIT WORK语句时执行所有计划的更新,并保证事务性RFC调用仅运行一次;
该调用具有安全、可靠的特点;
语法:
CALL FUNCTION rfm_name
IN BACKGROUND TASK
[DESTINATION dest]
[EXPORTING p1 = a1 ... pn = an ... ]
[TABLES t1 = itab1 ... tn = itabn ... ]
[AS SEPARATE UNIT.
或者:
CALL FUNCTION rfm_name
IN BACKGROUND UNIT oref
[EXPORTING p1 = a1 ... pn = an ... ]
[TABLES t1 = itab1 ... tn = itabn ... ].
其中oref必须引用一个接口IF_BGRFC_UNIT实现类的对象;
在相邻两个COMMIT WORK之间出现的所有相同目标的异步调用都属于同一个LUW;
事务性RFC不需要等待每个单独的更新过程完成,调用程序就可以立即继续进行,直到事务结束;
若调用发送时,远程系统不可用,调用将设为后台作业运行,不能从调用模块接收返回结果,不允许调用者进行与远程系统的交互性对话及测试;
不能直接或通过RECEIVE RESULTS FROM FUNCTION语句接收RFM的返回结果,FM的接口不应指定任何EXPORT类型参数,在CALL FUNCTION语句中的IMPORTING参数将导致编译错误;
事务性运行的功能模块中不适合进行回调(调用远程目标BACK);
直到COMMIT WORK 语句才开始于远程系统进行联系;
每一个事务性RFC调用均通过一个独特的事物ID(Transactional ID,TID);
程序:在CALL… IN BACKGROUND TASK之后和COMMIT WORK之前调用FM“ID_OF_BACKGROUNDTASK”,获得TID后,用FM“STATUS_OF_BACKGROUNDTASK”可以确定事务性RFC的状态;,或者通过SM58显示并维护事务性RFC的LUW状态;
第一种的例子网上很多,我们这里给第二种方式的例子:
REPORT zsolar.
DATA: lv_msg TYPE string.
DATA: my_destination TYPE REF TO if_bgrfc_destination_inbound,
my_unit TYPE REF TO if_trfc_unit_inbound,
my_ecpt TYPE REF TO cx_bgrfc_invalid_destination,
lock_id TYPE bgrfc_lock_id.
TRY.
CALL METHOD cl_bgrfc_destination_inbound=>create
EXPORTING
dest_name = 'WS_INBOUND_DEST'
RECEIVING
destination = my_destination.
CATCH cx_bgrfc_invalid_destination INTO my_ecpt.
CALL METHOD my_ecpt->if_message~get_text
RECEIVING
result = lv_msg.
MESSAGE lv_msg TYPE 'I'.
RETURN.
ENDTRY.
my_unit = my_destination->create_trfc_unit( ).
CALL FUNCTION 'ZTRFC'
IN BACKGROUND UNIT my_unit.
CALL FUNCTION 'ZTRFC'
IN BACKGROUND UNIT my_unit.
lock_id = my_unit->if_bgrfc_unit~delay( 300 ).
COMMIT WORK.
相关函数组:BGRFC_CONFIGURATION
相关tcode:SBGRFCCONF
- Background RFC 新方式
- RFC调用方式
- RFC调用方式
- RFC类别的实现方式
- RFC类别的实现方式
- css3的Background新属性
- css3中的background的新特性background-origin,background-clip,background-size详解
- rfc
- RFC
- RFC
- RFC
- RFC
- RFC
- rfc
- rfc
- RFC
- rfc
- RFC
- 一本书的产生--剑破冰山:Oracle开发艺术项目提纲(草稿)
- ABAP:数据库操作时的锁定问题
- OpenSSL命令行常用功能
- 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
- 使用Windows Live Writer发布日志(转载)
- Background RFC 新方式
- javascript技巧(一)
- 任务管理器没有菜单栏了
- nginx location tree
- javascript技巧(二)
- StringBuilder类与String类的区别(C#)
- 非root用户在ubuntu环境下无法使用80端口
- mm IOS 报表
- 读书摘要——《C++.GUI.Programming.with.Qt.4》