使用生成的业务对象定义

使用 SAPODA 来为您要支持的每个 RFC 支持功能生成业务对象定义。您可以使用生成的对象而不必进行任何修改。但是,可以手工编辑这些对象以改进此功能。

在生成对象之后,您必须将业务对象定义添加至 WebSphere Business Integration 系统的运行时环境。

重要提示:
您可以修改生成的业务对象的名称及其子业务对象的名称。为此,您必须作为文本文件编辑该定义,而不是在业务对象设计器进行编辑。如果您更改业务对象的名称,则确保也修改所有引用到更改的名称的地方。
注:
对于在开发名称空间中开发的 BAPI 和 RFC 支持 ABAP 功能,当命名业务对象定义、.java.class 文件时,SAPODA 将除去函数名中的“/”字符或者将它替换为“_”。仅当“/”字符是名称中的第一个字符时,SAPODA 才会除去该字符。尽管定义名或文件名中不包含此字符,但是,代码仍然会使用包含“/”字符的正确名称来调用指定的函数。另外,当函数名以数字开头时,SAPODA 将在函数名前面添加字符串 Rfm_

技巧和窍门

本节描述用于开发业务对象的下列技巧和窍门:

多个业务对象包含相同的返回业务对象

大多数 BAPI 将相同名称用于返回对象。当 SAPODA 生成业务对象定义时,它创建一个子业务对象来表示此返回对象。如果多个业务对象定义包含同一个指定的子业务对象,则您只需一次将该子业务对象添加至资源库,或者可以将一个定义文件复制到资源库目录。

要使多个业务对象能够包含返回业务对象,您必须修改返回业务对象的名称,使其对于每个业务对象都是唯一的。

要重命名返回业务对象,修改包含它的每个业务对象定义的定义。子业务对象的定义与其父代的定义包含在相同的定义文件中。

要重命名子代,执行以下操作:

  1. 在文本编辑器中打开顶级业务对象的定义文件。
  2. 找到 BOprefix_return 子业务对象的定义。
  3. 将该子代的名称更改为唯一的。例如,将一个数字追加至文本(sap_return_2)
  4. 更改定义中的所有引用以引用新命名的子代。例如,更改每个表示子业务对象的属性的 Type 属性值。
  5. 保存更改后的定义文件。
  6. 使用系统管理器(CSM)将新命名的子业务对象装入资源库中。
    注:
    或者,如果 InterChange Server 是集成代理程序,则您可以使用 repos_copy 命令将该定义装入资源库。

生成的业务对象定义包含不必要的属性和子业务对象

SAPODA 解释所有 BAPI 接口参数,并且对于每个参数,它都会创建一个相应的子业务对象属性或子业务对象。要提高业务对象处理的性能,从业务对象定义中除去所有不需要的属性和业务对象。

注:
SAPODA 有助于在生成定义之前以图形方式除去所有可选属性和子业务对象。有关更多信息,请参阅"为 BAPI 模块开发业务对象"

要提高业务对象处理的性能,您还可以从特定于应用程序的信息中除去所有不需要的导入和导出表参数值。

在生成定义之后,如果您需要进行其它更改,则可以使用业务对象设计器来手工编辑业务对象定义。但是,请注意仅除去以后绝对不会使用的属性。

生成的业务对象名太长或不符合命名约定

SAPODA 使用 BAPI 功能模块的名称来生成业务对象定义的名称。您可以使用文本编辑器来修改业务对象的名称。

重要提示:
如果您更改该名称,则确保您也修改该名称的所有引用。但是,不要修改生成的特定于应用程序的信息的参数名。

要更改生成的业务对象的名称:

  1. 将定义保存至文件。
  2. 使用文本编辑器来缩短或更改该名称。
  3. 使用系统管理器(CSM)将新命名的子业务对象装入资源库中。
    注:
    或者,如果 InterChange Server 是集成代理程序,则可以使用 repos_copy 命令将该定义装入资源库中。

为表参数生成的 AppSpecificInfo 指定不是必需的参数

表参数可以同时是导入参数和导出参数。如果您不要求导入或导出表参数的值,则您可以从特定于应用程序的信息中除去该参数。

例如,对于创建操作,如果您在创建操作完成之后不需要从 SAP 应用程序返回表数据,则您可以除去导出参数值(如 E table name)。

对于检索操作,您不需要指定任何导入表参数。因此,您可以除去导入参数值(如 I table name)。

注:
您必须从父代中某一表示子代的属性 AppSpecificInfo 中以及业务对象级别为子业务对象的 AppSpecificInfo 中除去不需要的值。不要除去冒号(:)。

例如,要除去图 49 中的 ETable_7 导出参数,您应执行以下操作:

  1. 在 Top_Level_BusObj 业务对象的 Child_2 属性中,将该属性的 AppSpecificInfo 值更改为:
    ITable_7:
     
  2. 在业务对象级别为 Child_2 业务对象的 AppSpecificInfo 中,将其值更改为:
    ITable_7:
     
  3. 以 Attribute_14 为例,在子业务对象的每个属性的 AppSpecificInfo 中将其值更改为:
    IField_14:
     

Copyright IBM Corp. 1997, 2004