首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAP数据库中两个表之间的单元转换

SAP数据库中两个表之间的单元转换
EN

Stack Overflow用户
提问于 2019-05-09 11:27:54
回答 1查看 1.3K关注 0票数 0

嗨,我偶然发现了一些SAP数据库的问题,请注意。我有一些玩具例子的问题。我试着想出解决办法,但我想不出来。我有两个表,一个是卷表

代码语言:javascript
复制
Row MATERIAL    BASE_UOM    PERIOD  SUMMAND
1   55555        KG         201106     99
2   55555        KG         201204     16
3   55555        KG         201301     71
4   55555        KG         201411     83
5   55555        KG         201509     21
6   55555        PAL        201510     64
7   55555        PAL        201511     69
8   55555        KG         201512     55
9   55555        ZRS        201601     81
10  55555        KG         201602     3
11  55555        KG         201603     74
12  55555        KG         201604     58
13  55555        ZRS        201605     8
14  55555        KG         201606     22

第二个表是转换表

代码语言:javascript
复制
Row MATERIAL    UNIT    BASE_UOM    UOMN1D     UOMZ1D    Conversion Rate
1   55555        KG        KG        1          1            1
2   55555        CSE       KG        1,000.00   2,016.00    2.016
3   55555        ST        KG        1,000.00   56          0.056
4   55555        LAY       KG        100        3,024.00    30.24
5   55555        PAL       KG        100        54,432.00   544.32
6   55555        ZDK       KG        59,778.00  54,432.00   0.910569106
7   55555        ZSE       KG        59,778.00  54,432.00   0.910569106
8   55555        ZNO       KG        59,778.00  54,432.00   0.910569106
9   55555        ZFI       KG        59,778.00  54,432.00   0.910569106
10  55555        ZRV       KG        1,000.00   57          0.057
11  55555        ZRS       KG        1,000.00   2,052.00    2.052

请记住,行列是指示性的!

表之间的键是物质列。

我想转换列SUMMAND (卷表)中的所有字段,如果BASE_UOM列中没有KG,则在卷表中没有KG,例如在第6行是PAL到KG,或者第13行ZRS转换为KG。如果我们有KG,我们不需要更新列SUMMAND。要将PAL转换为KG,我需要在(UOMZ1D/UOMN1D)材料和单元列(查阅PAL字段)上查找转换表,并从转换速率列 544.32*64 (64来自卷表<代码>E 229第6列<代码>E 130SUMMANDE 231等)查找第5行。最后,每个单独的材料都有自己的转化率。

卷表的最终输出应该如下所示。正确更新第6、7、9、13行。

代码语言:javascript
复制
Row MATERIAL    BASE_UOM    PERIOD  SUMMAND
1   55555        KG         201106    99
2   55555        KG         201204    16
3   55555        KG         201301    71
4   55555        KG         201411    83
5   55555        KG         201509    21
6   55555        PAL        201510    34836.48
7   55555        PAL        201511    37558.08
8   55555        KG         201512    55
9   55555        ZRS        201601    166.212
10  55555        KG         201602    3
11  55555        KG         201603    74
12  55555        KG         201604    58
13  55555        ZRS        201605    16.416
14  55555        KG         201606    22

我如何检查每一个可能的组合,以将所有单位转换为KG之间的这两个表。我想建议我如何缩放它,如果我有更长的列表转换之间的单位和BASE_UOM从转换表想象的90种独特的可能组合。为了达到预期的输出,我需要构建什么SQL查询。欢迎任何一种解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-13 04:30:14

根据您的描述,您可能希望使用内部联接来匹配材料的转换因子。

与此类似的东西:

代码语言:javascript
复制
SELECT
     v.MATERIAL
   , v.BASE_UOM as ORIGINAL_UOM
   , v.PERIOD
   , c.UNIT  as TARGET_OUM
   , (c.UOMZ1D/c.UOMN1D) * v.SUMMAND as SUMMAND_TARGET_OUM

FROM 
            VOLUMES v
INNER JOIN CONVERSION c
ON (v.MATERIAL, v.BASE_UOM) 
 = (c.MATERIAL, c.UNIT)

此查询依赖于每个可能的material/base_uom组合在转换表中只有一个和唯一一个匹配项。如果找不到匹配,输出中将省略来自VOLUMES的相应记录。

显然,可以设计出更好地抵御丢失数据的方法(例如,通过不改变的数据或传递查找的回退输出),但是所给出的解决方案是直接的,易于理解和调试。

请注意,这确实是而不是使用SAP内置的度量单位转换功能。由于这些是为了复制SAP NetWeaver -based应用程序的UOM转换逻辑而设计的,所以在本例中这些可能不是您想要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56058387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档