使用动态检索开发业务对象

“动态检索”功能模块是一个带有动态 SQL 语句生成器的映射工具。此功能模块使用存储在 YXR_DISPLY 表中的元数据在运行时生成 SQL select 语句。“动态检索”获取这些 SQL 语句产生的字段并填充 WebSphere 业务对象的属性。当调用“动态检索”功能模块时,将执行下列步骤:

  1. YXR_DISPLY 中检索所有条目,其中,

    对象 = objectName

  2. 对于在 YXR_DISPLY 中指定的每个新表,将根据已标记为键的字段生成 SQL where 子句。业务对象属性中相应的字段用来填充 where 子句中的值。如果在 YXR_DISPLY 中指定了缺省值,则将使用此缺省值。
  3. 执行 SQL select 语句。产生的字段将复制到业务对象属性中相应的字段中。

注:
您必须使用 IBM WebSphere InterChange Server 连接器工具窗口(YXR1)来创建 WebSphere 业务对象,然后才能生成业务对象定义。

提示

表 44 显示“动态检索”表的表条目。

表 44. 动态检索的表条目
字段名 描述 何时使用 技术名称
对象名 WebSphere 业务对象名 始终 OBJ_NAME
计数器 计数器 始终 POSNR
要读取的表 始终 TABNAME
字段名称 表中的字段名 始终 NAME_FELD
指定表的键字段 每个表的第一个字段。用来构建 select 语句的 where 子句。 KEYFLAG
可选的 屏幕、字段或命令的自由文本描述 用于非键字段。如果所有非键字段都标记为可选的,并且如果 select 语句失败,则结果将为警告,而不是错误。 OPTIONAL
Rel 操作数(关系) 用来确定 where 子句中的关系。缺省情况下,where 子句中的操作数是“等号”,但可以通过在此字段中输入值来更改它。 YXR_OPERND
业务对象中的字段名 WebSphere 业务对象中的属性,用于提供输入值
  • 键字段:用于构建 where 子句。
  • 非键字段:用于将数据库字段返回至业务对象中的属性
SOURCEFLD
缺省值 当未在 WebSphere 业务对象中提供条目时要使用的静态缺省值 键字段 DEFLT_VAL
SY 字段 将用作缺省值(例如:DATUM)的动态系统字段 键字段 SYFIELD
长度 字符长度,从 0 到构建 where 子句时应使用的属性值的偏移位置。 键字段。仅当使用包含组合值的属性时才相关。 LENGTH
偏移 字符偏移,从构建 where 子句时应使用的属性值的 0 位置算起。 键字段。仅当使用包含组合值的属性时才相关。 YXR_OFFSET

要访问适配器的表驱动的连接器表以便显示:

  1. 转至“IBM WebSphere InterChange Server 连接器工具”窗口(事务 YXR1)。
  2. 从“定制”菜单,单击“动态读取”,然后单击“修改检索”。

图 73 显示使用嵌套 SQL select 语句的“动态检索”表。先前的 select 语句的结果用来在后续 select 语句上构建键。

图 73. 使用嵌套 SQL select 语句的动态检索


通过使用“计数器”列作为要讨论的行号,您可以对“动态检索”表中的功能位置对象逐步执行 SAP_FuncLocation 示例。

100
表 IFLOT 只具有一个键字段,即 where 子句中 CustomerId 属性中的值。如果 CustomerId 中的值是 4711,则 where 子句为:

where TPLNR = '4711'

310
这是第一个非键字段。将在此处执行实际的 select 语句。select 语句为:

Select * from IFLOT where TPLNR = '4711'

然后将把产生的 ILOAN 值复制到 ObjectLocation 属性,对于此示例,该值为 '5678'。

320
因为这是新表和键字段,所以将再次构建 where 子句。where 子句再次为:

where TPLNR = '4711'

330
TFLOTX 的另一个键。将使用以下内容扩展 where 子句:

and SPRAS = 'E'

如果 Language2 的值是 CxIgnore,则将从“缺省值”字段中获取 E

340
这是表 IFLOTX 的第一个非键字段。将执行 select 语句。该语句为:

Select * from IFLOTX where TPLNR = '4711' and SPRAS = 'E'

产生的 PLTXT 值将复制到 CustomerName 属性。如果该 select 语句失败,则因为表 IFLOTX 的所有非键字段都标记为可选的,所以将发出一个警告。

350
来自先前 select 语句的 KZLTX 值将复制到 TextIndicator 属性。

360
因为这是新表和键字段,所以将再次构建 where 子句。where 子句的值将从属性 ObjectLocation 中获取,该属性是由先前的 select 语句填充的。如果 '5678' 是属性 ObjectLocation 中的值,则 where 子句为:

where ILOAN = '5678'

370
这是第一个非键字段。将执行 select 语句。该语句为:

Select * from ILOA where ILOAN = '5678'

产生的 ADRNR 值将复制到 AddressId 属性。

这将完成 SAP_FuncLocation 功能模块的构建以获取“动态检索”支持。

Copyright IBM Corp. 1997, 2004