点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
所有人,
我刚接触SAP(使用SAP和SQL大约需要2-3个月),我想知道您是否可以帮助我,或者有人可以提供一些建议。
我需要在销售订单上执行格式化搜索,以在2个表(QUT1和OITM)中查找值。 首先,它应该查询QUT1,如果该值为null或不符合条件,则应从OITM中获取它。 我提出了两个不同的查询:
选择(COALESCE(CASE(案例),当T1时。" U_ItemDesc_2"为NULL
当
T0时。" FrgnName"
ELSE
T1 。"" U_ItemDesc_2"
END AS varchar),''))AS" Item Descr 2 Joined"来自OITM T0左外连接QUT1 T1 ON T0。" ItemCode" = T1。" ItemCode" WHERE T0。" ItemCode" = $ [$ 38.1.0]和T1。" ItemCode" = $ [$ 38.1.0]
此查询仅显示QUT1中的内容,并且如果该值为null或不满足条件,则不显示OITM中的值。
第二个查询:
从" SBO_JUMEL"中选择COALESCE(NULLIF(T0。" U_ItemDesc_2","),T1。" FrgnName")。" QUT1" T0右联接" SBO_JUMEL"。" OITM" T1接通T0。" ItemCode" = T1。" ItemCode"在T0上的内部联接T2。" DocEntry" = T2。" DocEntry" WHERE T2。" DocStatus" ='O'AND T0。" ItemCode" = $ [$ 38.1.0]和T1。" ItemCode" = $ [$ 38.1.0]按T2排序。" DocTime" ASC
此查询是相同的,如果QUT1值为null,则仍然不显示OITM字段中的值。
有人使用过这种格式的搜索并且可以给出一些指示吗? 任何帮助将不胜感激
如果其他人需要此解决方案:)
在$ [POR1.ItemCode]时选择大小写<>''然后在$ [POR1.BaseEntry] <>时选择大小写,然后$(POR1.BaseLine] <>''然后选择(T2。" U_ItemDesc_2" 从PQT1 T2,其中CAST(T2。" DocEntry" AS VARCHAR)= $ [POR1.BaseEntry]和CAST(T2。" LineNum" AS VARCHAR)= $ [POR1.LineNum])<>"然后(选择T2。" 从PQT1 T2发送U_ItemDesc_2",其中CAST(T2。" DocEntry" AS VARCHAR)= $ [POR1.BaseEntry]和CAST(T2。" LineNum" AS VARCHAR)= $ [POR1.LineNum])ELSE T0。" U_Description2" END ELSE T0。" U_Description2"结束于OITM T0左外连接PQT1 T1在T0上。" ItemCode" = T1。" ItemCode" WHERE T0。" ItemCode" = CAST($ [P [POR1.ItemCode] AS VARCHAR)
# p#我已经对其进行了一点修改,因此它不会引发错误:
选择
案例
当T1。" U_ItemDesc_2"为NULL或T1。" U_ItemDesc_2" ="然后T0。" FrgnName" ELSE T1。" U_ItemDesc_2" END
从OITM T0内部联接QUT1 T1到T0。" ItemCode" = T1。" ItemCode"
其中T0。" ItemCode" = $ [RDR1.ItemCode]和T1。" DocEntry" = $ [RDR1.BaseEntry]和T1。" LineNum" = $ [RDR1.LineNum]
但是,如果QUT1中没有基于where条件的值,则不允许从OITM中提取值
嗨,保罗,
您的查询有很多错误,那么从哪里开始呢? 首先,我要为您的努力表示赞赏。
快速答案并不能为您提供一个很好的解决方案:切换FROM子句,以便从" 后退"表格。 然后使用LEFT OUTER联接,您将从QUT1表中获得一个值或NULL,这将使COALESCE函数正常工作。
但是,由于可以(在技术上)在一个报价中多次输入一个项目,并且可以同时打开多个报价,因此查询 照原样,变得非常不稳定。 仅当那时只有一个给定物料处于打开状态的报价时,它才有效。
假定您从报价中绘制销售订单(使用复制到按钮 在"报价"表单上或"订单"表单上的"复制" 按钮上),您可以将订单绑定到其特定的报价:
致谢
Johan
P.S。 感谢您教我有关NULLIF函数的知识。 我还不知道那个。 非常有用。
嗨,约翰,
非常感谢您抽出宝贵时间调查我的问题。 非常感激。 我已经实现了您的解决方案,我必须说,它比我想出的要好得多:)。 该查询解决了我一半的问题。 现在,我找到了一种方法来查看OITM并从中提取值(如果QUT1中没有匹配项)。 我可以想象用CASE构建查询将是实现此目的的方法吗?
再次,比您非常需要您的帮助
您好,
尝试此查询,它应该对您有用,
< p> SELECT当ISNULL(T1。[U_ItemDesc_2],'')=''时为T0。[FrgnName]否则T1。[U_ItemDesc_2]结尾
从
OITM T0内部联接QUT1 T1到T0。[ItemCode] = T1。[ItemCode]
WHERE T0。[ItemCode] = $ [$ 38.1.0]和T1。[ DocEntry] = $ [$ 38.45.0]和T1。[LineNum] = $ [$ 38.46.0]
问候,
Nagarajan
选择
案例
当ISNULL(T1。" U_ItemDesc_2",'')=``然后T0。" FrgnName"
ELSE
(SELECT CAST(T1。" U_ItemDesc_2"从QUT1 T1转到T1。" ItemCode" = $ [RDR1.ItemCode] AND T1。" DocEntry" = $ [RDR1.BaseEntry]和T1。" LineNum" = $ [ RDR1.LineNum]))END
从OITM T0左外部联接QUT1 T1到T0。" ItemCode" = T1。" ItemCode"
我收到" FROM附近的语法不正确"错误。 查询应在QUT1中查找基于ELSE条件的值,如果没有,则从OITM中提取值。
一周热门 更多>