JCo中RFC参数的序列化

问题描述 投票:1回答:1

什么是最好的方式来序列化SAP RFC功能模块参数信息(即参数名称和参数值),在SAP中调用该功能(参数'DESTINATION'提供为SAP JCO SERVER),然后在JCo中捕获?

关键是序列化应该在Jco中完成(使用Java),然后这些数据将被送回SAP并保存在SAP的Z-表中,这样以后使用SAP表中的这些条目就可以在ABAP中 "重新序列化 "这些数据,并以完全相同的参数和值再次调用给定的funcion。

为了使它更容易理解,我将给出一个例子。

第一步. 我们在ABAP中调用RFC FM。

CALL FUNCTION 'remotefunction'
DESTINATION jco_server
EXPORTING e1 = exp1
* IMPORTING i1 =
TABLES t1 = tab1.

第二步: 我们在Jco中捕获这个函数的调用,并需要序列化关于调用该函数的参数信息,并将其保存在SAP表中,例如。

String ImportParList = function.getImportParameterList().toXML().toString(); //serialization of import parameters
String ExportParList = function.getExportParameterList().toXML().toString(); //serialization of export parameters
String TableParList = function.getTableParameterList().toXML().toString(); //serialization of table parameters
String ParList = ImportParList + ExportParList + TableParList;
//Call function to save content of variable "ParList" in a SAP table

第三步: 使用ABAP,我们需要从SAP表中选择数据并 "重新序列化"(例如,在ABAP中使用CALL TRANSFORMATION FM),以便能够再次调用FM "remotefunction",其参数和值与之前相同。

综上所述。

A. 在Jco中是否有任何标准的Java方法可以实现这样的序列化(比手动将其转换为xmlJSON并保存为String更好)?

B. 如何处理深层的ABAP结构,比如后续表是嵌套的表?也和其他的表一样转换为xmlJSON吗?

C. 你有什么其他的想法,如何比我介绍的更好地执行这个过程?

先谢谢你!

java sap abap jco saprfc
1个回答
0
投票

我在这里所描述的可能不适合你,由于安装和设置的复杂性,但只是为了使用其他社区成员和承认这种功能的存在。

SAP有一个 特别框架 用于启用你想要的情况下,称为LOWGWIN(LOGCOM 200)。安装说明在 SAP 1870371号说明.

功能集的细节。

通过记录RFCs,可以确定哪些用户在什么时间点可以访问哪些数据。例如,您可以记录RFC功能模块(FM)级别的数据。

  • 参数类型

  • 参数名称及相应数值

为了最大限度地减少记录的数据量,您可以采取以下措施。

  • 限制某些用户的记录

  • 过滤需要记录的参数,然后再将其包含在日志记录中。

  • 只为您要记录的RFC功能模块启用客户端级别的日志记录。

您可以通过BAdI微调哪些RFC调用(模块)会被记录,包括成功或失败的调用。/LOGWIN/BADI_RFC_LOG_FILTER.

最初,日志暂时存储在SAP中,并可通过事务处理查看 /LOGWIN/SHOW_LOG之后,您可以通过事务处理将必要的日志记录转移到外部存储库(您需要提前设置)。/LOGWIN/TSF_TO_EXT.

架构概述。

enter image description here

所以你可以在Java存储中设置外部仓库,或者保持原样,从SAP中读取参数值,之后你可以从SAP或Java端重新运行失败的模块。

另外,还有一大堆关于数据归档、用户权限、排除、映射等设置,由于篇幅太大,无法在答案中描述。

更多的文档在这里。

批注 18703711878916

© www.soinside.com 2019 - 2024. All rights reserved.