如何使用转换后的 UUID 字段加入 2 个表?

Posted

技术标签:

【中文标题】如何使用转换后的 UUID 字段加入 2 个表?【英文标题】:How can I join 2 tables with converted UUID field? 【发布时间】:2022-01-08 06:14:28 【问题描述】:

在 SAP EWM 中,材料 ID 使用数据元素 /SAPAPO/MATID 存储在 /SAPAPO/ 表中,这是一个 CHAR 22。另一方面,/SCWM/ 表使用数据元素 /SCWM/DE_MATID 这是一个 RAW 16 . 我见过的所有标准代码都使用CL_SYSTEM_UUID 类和例如IF_SYSTEM_UUID_STATIC~CONVERT_UUID_C22 方法将C22 材质ID 映射到X16。

这阻止了我直接加入表而不先选择,然后转换材料 ID,最后选择。

有没有办法执行 SELECT 连接具有不同类型 ID 的两个表?

系统正在运行 HANA 数据库和 ABAP 7.50。

我要加入的 2 个表是:/SAPAPO/MATKEY/SCWM/PVPAKC

我想执行类似这样的选择:

SELECT FROM /scwm/pvpakc AS pack_spec
  INNER JOIN /sapapo/matkey AS material ON material~matid = pack_spec~matid
  FIELDS pack_spec~pvguid  as ps_guid,
         material~matnr    as material_num
  INTO TABLE @DATA(lt_pack_spec_material).

当然上面的join是不可能的,因为需要转换表之间的MATID

【问题讨论】:

answers.sap.com/questions/11267190/… 请问你用的是什么ABAP版本,什么数据库系统和版本?您能否提供一个包含两个表和 GUID 列的示例?谢谢。 22 个字符 GUID 编码 16 个字节,首先左移 4 位,然后按0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 的顺序使用 64 个字符进行编码。很难通过 SQL 函数做到这一点,但也许是可能的 (??) @SandraRossi 添加版本和示例 【参考方案1】:

您可以尝试使用这两个表的连接创建数据库视图并在您的选择中使用它。 Here on SAPYard,有类似的问题,他们说在HANA上一切正常,虽然给你一个警告

在我的 Oracle 系统上它失败了,但是你有 HANA,你可以试试。

另外,AMDP 函数是你的朋友,查看这里的教程如何克服这个问题

ABAP CDS View: Issue faced on join of tables on columns where one column is of RAW data type

【讨论】:

我测试了这两种选择,但没有运气。没有错误,但没有从连接表中检索到数据

以上是关于如何使用转换后的 UUID 字段加入 2 个表?的主要内容,如果未能解决你的问题,请参考以下文章

sql server 触发器 从一个表添加到另个表是否两个表对应的字段必须相同呢

如何将 excel 索引匹配转换为 Access - 加入 4 个表

MySQL - 加入 2 个表

如何加入/子查询第二个表

如何使用 GRDB Swift 迁移更改列类型?

如何将2个表同名行加入一列