从OQUT和ORDR获取DocNum

2020-08-14 18:38发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我的水晶报表有以下查询;

 SELECT DISTINCT T0.custmrName,T0.callID,T0.BpShipAddr,T1.Name,T0.createDate,T0.subject,T0.manufSN,T0.internalSN,T0.itemCode,T0.itemName,CAST(T0。" 分辨率" AS varchar(MAX)),T0.BPContact,T0.BPCellular,T2.firstName,T2.lastName
 从OSCL T0
 左联接OSCT T1开启T0.callType = T1.callTypeID
 左联接OHEM T2 ON T0.technician = T2.empID
 左联接SCL4 T3开启T3.SrcvCallID = T0.callID 

现在,我还需要包括链接报价中的报价编号或链接销售订单中的销售订单。 如果不存在链接的报价,则应该从销售订单中获取DocNum,但是,如果存在报价,它将始终从链接的报价中获取它(如果两者都存在,则不会从销售订单中获取)。

我的问题是我需要对两个文档都使用INNER JOIN,否则如果存在多个文档,我会得到一条额外的记录;如果我对两个文档都使用了内部联接,那么它就不会显示任何信息。 最好的方法是什么?

我当前的解决方案(当时是一个可怕的解决方案)是对两个都使用子报表,但是如果它们都存在,则说明两者都不理想。

一如既往地感谢您的帮助。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我的水晶报表有以下查询;

 SELECT DISTINCT T0.custmrName,T0.callID,T0.BpShipAddr,T1.Name,T0.createDate,T0.subject,T0.manufSN,T0.internalSN,T0.itemCode,T0.itemName,CAST(T0。" 分辨率" AS varchar(MAX)),T0.BPContact,T0.BPCellular,T2.firstName,T2.lastName
 从OSCL T0
 左联接OSCT T1开启T0.callType = T1.callTypeID
 左联接OHEM T2 ON T0.technician = T2.empID
 左联接SCL4 T3开启T3.SrcvCallID = T0.callID 

现在,我还需要包括链接报价中的报价编号或链接销售订单中的销售订单。 如果不存在链接的报价,则应该从销售订单中获取DocNum,但是,如果存在报价,它将始终从链接的报价中获取它(如果两者都存在,则不会从销售订单中获取)。

我的问题是我需要对两个文档都使用INNER JOIN,否则如果存在多个文档,我会得到一条额外的记录;如果我对两个文档都使用了内部联接,那么它就不会显示任何信息。 最好的方法是什么?

我当前的解决方案(当时是一个可怕的解决方案)是对两个都使用子报表,但是如果它们都存在,则说明两者都不理想。

一如既往地感谢您的帮助。

付费偷看设置
发送
3条回答
hengyuye
1楼-- · 2020-08-14 19:06

嗨尼克,

您可以尝试在COALESCE函数中使用子查询。 像这样的东西:

 COALESCE((从OQUT中选择DocNum等),(从ORDR中选择DocNum等),-1)AS [报价/订单编号] 

致谢

约翰

me_for_i
2楼-- · 2020-08-14 18:49

进一步阐明我对此问题的理解;

我需要知道,如果存在链接的销售报价,那么它应该显示该报价的编号,但是,如果不存在销售报价,那么它将显示订单号。 但是,如果两者都存在,则会显示销售报价编号,而不显示订单编号。

对于报价/订单上的零件,我也有一个子报表,并且正在努力解决类似的问题。 如果存在报价,则应显示该报价上的零件,如果不存在,则显示订单上的零件。 如果两者都存在,则应在报价单上显示零件,而不是订单。

理想情况下,如果可能的话,我希望没有子报告。

独立观察员
3楼-- · 2020-08-14 18:51

嗨尼克,

这意味着有多个报价和/或定单相连 您的服务呼叫,或者您需要编辑子查询的where子句。 一种方法是使用TOP 1:

 COALESCE((从OQUT中选择顶部的1个DocNum等),(从ORDR中选择顶部的1个DocNum等),-1)AS [Quote/Ordernr。  ] 

但是,如果您希望每个服务呼叫有多个报价和/或订单,则只会看到一个。

如果您期望有多个 每个服务呼叫的报价和/或订单,问题是,是从报价中提取订单,还是可能多带带进行? 如果使用多带带的文档,则在解决查询之前,您必须考虑如何将它们彼此关联。

问候,

Johan

一周热门 更多>