Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serialization 如何序列化SAP业务对象?_Serialization_Abap - Fatal编程技术网

Serialization 如何序列化SAP业务对象?

Serialization 如何序列化SAP业务对象?,serialization,abap,Serialization,Abap,首先,我必须澄清,我指的不是SAP最近收购的公司业务对象。相反,我指的是SAP业务对象存储库(BOR)中定义的业务对象,例如SalesOrder(BUS2032) 那么,在SAP系统中序列化此类业务对象的首选方法是什么,以便第三方系统可以反序列化业务对象,包括构成特定业务对象实例的所有属性?我不知道序列化BOR对象的简单方法。然而,在许多情况下,SAP提供了BAPI,这些BAPI是远程启用的功能模块,可以通过各种SAP连接器或SOAP等进行调用 以总线2032为例: 运行事务SWO1 进入总线

首先,我必须澄清,我指的不是SAP最近收购的公司业务对象。相反,我指的是SAP业务对象存储库(BOR)中定义的业务对象,例如SalesOrder(BUS2032)


那么,在SAP系统中序列化此类业务对象的首选方法是什么,以便第三方系统可以反序列化业务对象,包括构成特定业务对象实例的所有属性?

我不知道序列化BOR对象的简单方法。然而,在许多情况下,SAP提供了BAPI,这些BAPI是远程启用的功能模块,可以通过各种SAP连接器或SOAP等进行调用

以总线2032为例:

  • 运行事务SWO1
  • 进入总线2032
  • 单击程序按钮
  • 搜索
    调用函数'BAPI
您将发现各种BAPI——在本例中,它们都属于可通过事务SE80访问的功能组2032

请注意,SAP在命名标准中并不总是这样,但模块越成熟,就越有可能为模块提供某种形式的RFC或Web服务


当然,您也可以编写自己的RFC或Web服务,但是您需要了解业务模型以及需要哪些属性。

SAP business Connector使用XML文档(在SAP和非SAP系统之间)交换SAP对象。也许您可以根据需要在中找到一些帮助,以使用
IF_SERIALIZABLE_OBJECT
界面。我猜您的业务对象尚未实现该接口,因此您可能必须将其扩展到自定义业务对象,并在那里实现
IF\u SERIALIZABLE\u object
接口。

我会说IDocs,但我发现您不想使用SAP生成的表示。 这意味着您必须使用ABAP编写自己的实现。简言之:

  • 使用BAPI和/或查询检索所需的数据
  • 将所有数据粘贴到一个或多个自定义类(
    zcl\u sales\u order
    zcl\u sales\u order\u position
    )上,您可以根据需要设计这些自定义类
  • 使用
    calltransformation
    语句将实例序列化为XML表示形式(尽管这仍然包含一些特定于SAP的格式),或者编写自己的序列化方法(这可能是您需要的)

  • 这将允许调用者从R/3系统中获取数据,但它将采用SAP定义的结构化格式,而不是“序列化”格式。是的-我不知道SAP为您序列化BOR对象的简单方法。BAPI是SAP公开的允许更改业务对象的方法。业务对象的另一个特性是允许将业务对象的更改通知接收者的事件。后者在这种上下文中更为重要,但默认情况下通常只通知接收方状态更改,并且只包括业务对象键字段。当接收方是远程系统时,这不足以重新创建业务对象,包括其所有属性。webMethods SAP适配器(又名SAP business Connector)在ALE、BAPI、RFC层工作。它支持SAP专有的EDI和RPC格式。它不支持开箱即用的业务对象序列化。