点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
卡住了,不确定如何解决。 我的SQL查询有效,除了2种类型的数据条目。 我已成功加入发票(OINV/INV1); 贷项通知单(ORIN/RIN1)和期刊(JDT1/OJDT)。 我的报告按项目代码,数量和金额显示发票明细。 基本上是由Sku创建销售报告。 但是,我有两种无法解决的数据条目类型,需要一些帮助。
如果我没有纠正此问题,我将结束/缩短销售报告。
#1。 出于未知的原因 在发票上,将有2个具有相同项目代码的不同订单项。 这两个订单项都有数量和金额。 如果产品不收费,那没有问题。 然而,这些都与价格有关。 也许这已添加到提交后的订单中。 不管如何,我的案例陈述只选择第一行而不是第二行,从而缩短了销售额。 发票子查询具有正确的数量和数量。 这是我将其连接到问题所在的日记条目的时候。
#2我有重复的日记条目,它们使用相同的transID,sourceID; 连接发票或贷项通知单所需的一切。 但是,我可以解决此重复问题,特别是在订单中有重复的商品代码的情况下,它会弄乱问题#1。
我找到了解决一个但不能全部解决的解决方案。
Hi
如 Johan Hakkesteegt 所述,发布SQL语句。
< p>当然,如果使用的话,问题就出在内部连接子句中。亲切的问候
Agustín
嗨,托尼亚,
p>对于有关查询为何无法按预期方式运行的问题,如果您发布有问题的查询会很有帮助。
请注意
< p> Johan我不得不缩短查询时间。 我已经尝试过每一次连接以获取正确的结果而没有成功。 以贷项凭证表为例。 子查询CREDMEMO非常适合每次运行。 像查询的格式一样,很抱歉!
将@StartDate声明为日期时间设置@StartDate = '01/01/18'
将@EndDate声明为日期时间集@EndDate = '08/31/18'
将@Cardcode声明为varchar(10)设置@Cardcode ='C020828'
-信用备忘录
;使用CREDMEMO AS(选择DISTINCT T1.CardCode--,(当父亲卡为NULL时选择案例,然后BP.CardCode ELSE BP.FatherCard从OCRD BP移到WHERE BP.CardCode = T1.CardCode)AS [父母ID], T1.SlpCode,T1.DocEntry,'CM'+ CAST(T1.Ref1 AS varchar(10))AS [INV/CM],T1.TransId,T0.LineNum AS [LINE NUM],T4.AcctName,T4.Segment_0 ,T4.AcctCode,T0.ItemCode,T3.ItmsGrpNam AS [项目组名称],T2.ItemName AS [项目描述],T1.DocDate AS [CM张贴日期],T1.DocDueDate AS [CM到期日期],T1。 取消为[CM取消],T1.CancelDate为[CM取消日期],t1.DocStatus为[CM状态],当t0.LineNum = 0时为TASE.PayToCode结尾为[BP帐单ID],当为T0.LineNum时为CASE = 0且T1.CANCELED IN('Y','N')然后T1.DocTotal,当T0.LineNum = 0且T1.CANCELED IN('C')THEN T1.DocTotal * -1其他0结尾为[CM TOTAL ],当t0.LineNum = 0时为T1.TotalExpns,否则0结束AS [CM EXPENSE],当t0.LineNum = 0时,则为T1.DiscPrcnt,否则0结束AS [CM DISCOUNT%],T0.Quantity为[CM QUANTITY] ],T0.PR ICE AS [CM PRICE],T0.LineTotal AS [CM LINE Item TOTAL],T0.DiscPrcnt AS [CM LINE ITEM DISCOUNT%],T0.U_SES_EXCLQTY AS [排除项],当T1.CANCELED IN('Y', 'N')然后在T0.LineTotal <> 0和T1.DiscPrcnt <> 0时为例((((100-T1.DiscPrcnt)/100)* T0.LineTotal)当T0。[LineTotal] <> 0和T1时为例。 DiscSum = 0然后T0.LineTotal = 0且T1.DiscPrcnt <> 0时T0.LineTotal当T0.LineTotal <> 0且T1.DiscPrcnt = 0时T0.LineTotal然后T0.LineTotal否则0结束T1.CANCELED =' 当T0。[LineTotal] <> 0时,当T0.LineTotal <> 0和T1.DiscPrcnt <> 0然后(((((100-T1.DiscPrcnt)/100)* T0.LineTotal)*-1) AND T1.DiscSum = 0然后T0.LineTotal * -1当T0.LineTotal = 0 AND T1.DiscPrcnt <> 0 THEN T0.LineTotal * -1当T0.LineTotal <> 0 AND T1.DiscPrcnt = 0然后T0.LineTotal * -1 ELSE 0 END END AS [CM LINE Total],T1.U_SES_ORIGIN as [Origin] FROM RIN1 T0 JOIN ORIN T1 ON T1.DocEntry = T0.DocEntry LEFT JOIN OITM T2 ON T2.ItemCode = T0.ItemCode left join OITB T3开启T3.ItmsGrpCod = T2.I tmsGrpCod T4上的左联接O4 T4.AcctCode = T0.AcctCode T1.DocDate @StartDate和@EndDate之间--AND T1.CardCode = @CardCode-'c001749'-和T1.Ref1 = 9070),BP_INFO AS( 选择唯一的CASE WHEN(BP.FatherCard为NULL或BP.FatherCard ='')THEN BP.CardCode ELSE BP.FatherCard END AS [PCardcode],CASE WHEN(BP.FatherCard为NULL或BP.FatherCard ='')THEN BP .CardName ELSE FC.CardName END AS [父名称],BP.CardCode AS [BP代码],BP.CardName AS [BP名称]来自OCRD BP左联接OCRD FC ON BP.FatherCard = FC.CardCode WHERE BP.CardType = 'c')选择不同的JE.ShortName,BP.PCardcode,T5.CardCode,T5.ItemCode,JE.TransId,SUM(t5。[CM QUANTITY])作为[Quantity],sum(ISNULL(t5。[CM LINE Total ],0.00))作为[CM total],当T5.Segment_0 in('41100000','41200000','41300000','41400000','41500000','41600000','41700000','41800000')时为大写 然后当(JE.TransType = 30并且JE.ContraAct IN('_SYS00000000161'))时求和(ISNULL(t5。[CM LINE Total],0.00))/COUNT(je.transid))然后求和(je.debit-je。 T5.Segment_0 ='42300000'时加总(ISNULL(t5。[CM LINE Total],0.00)*-1)END [销售],当JE.TransId = 430488时为例,那么'430488有2个JE-全部 总计是正确的'ELSE'451229 HAS 1 JE-具有相同项目代码的多个行项目'END AS [注释]来自JDT1 JE–JE详细信息表内部联接OJDT JEH在JEH.TRANSID = JE.TRANSID --JOURNAL入口头表 LEFT JOIN BP_INFO BP ON bp。[BP代码] = je.ShortName-连接到销售表的BP INFO JE表的短名称是剩余的父卡JOIN CREDMEMO T5 ON T5.DocEntry = JE.SourceID AND T5.TransId = JE.TransId,其中(430488,451229)中的JE.TransId和由JE.ShortName,BP.PCardcode,T5.CardCode,T5。[INV/CM],T5组成的(JE.ShortName,1)='c'组。 ItemCode,JE.TransId,T5.Segment_0,JE.TransType,JE.ContraAct
附加屏幕截图
acct41200000-1je-multipleitemcodes-example.jpg acct41200000-2je-example.jpg :)
一周热门 更多>