SAP B1 SQL查询中的参数

2020-09-09 07:52发布

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

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


您好朋友,

我需要帮助在数据透视表中添加参数。

检查以下查询:

声明@month整数

声明@ month_2整数

声明@startdate datetime

声明@enddate datetime

声明@costcenter varchar(20)

设置@ month_2 = 3-/* t3.finncPriod = */'[%0]'

设置@ month = @ month_2-1

设置@ costcenter ='88115100'

set @ startdate = '03/01/2019'--/*t0.docdate from oinm t0,其中t0.docdate> = */'[%1]'

set @ enddate = '03/31/2019'--/*t0.docdate from oinm t0,其中t0.docdate> = */'[%2]'

选择*来自

(选择t0.name +'-Budget'作为'toPivot',t4.AcctCode作为'GLAccount',t4.AcctName,isnull(t2.DebLTotal,0)从obgs t0内部联接对象t0上的obgt t1 .AbsId = t1.Instance内部联接bgt1 t2在t2.Instance = t1.Instance和t2.AcctCode = t1.AcctCode和t2.Line_ID=@month内部联接在t4.AcctCode = t2.AcctCode上起作用,其中t0.name = @costcenter union全部从jdt1中选择t0.name +'-Actual'作为't0Pivot',t4.AcctCode作为'GLAccount',t4.AcctName,isnull(sum(debit-credit),0)作为'value't3 left join oact t4上的t4.AcctCode = t3.t0上的帐户左侧连接对象t0.Name = t3.t1上的ProfitCode左侧连接对象tgt.Instance = t0.AbsId和t4.AcctCode = t1.AcctCode左连接bgt1 t2上t1.Instance = t2.Instance和t2.AcctCode = t1.AcctCode和t2.line_ID = 2,其中@startdate和@enddate和t4.ExportCode之间的t3.refdate不为null,t0.name = @ costcenter按t0.name,t4.AcctCode分组 ,t4.AcctName

)枢轴(a.topivot的总和(a.value)

([[88115100-Budget],[88115100-Actual]))作为数据透视表

---而不是88115100-Budget,我要@ costcenter-Budget,@ costcenter-Actual ...

请大家帮我

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

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


您好朋友,

我需要帮助在数据透视表中添加参数。

检查以下查询:

声明@month整数

声明@ month_2整数

声明@startdate datetime

声明@enddate datetime

声明@costcenter varchar(20)

设置@ month_2 = 3-/* t3.finncPriod = */'[%0]'

设置@ month = @ month_2-1

设置@ costcenter ='88115100'

set @ startdate = '03/01/2019'--/*t0.docdate from oinm t0,其中t0.docdate> = */'[%1]'

set @ enddate = '03/31/2019'--/*t0.docdate from oinm t0,其中t0.docdate> = */'[%2]'

选择*来自

(选择t0.name +'-Budget'作为'toPivot',t4.AcctCode作为'GLAccount',t4.AcctName,isnull(t2.DebLTotal,0)从obgs t0内部联接对象t0上的obgt t1 .AbsId = t1.Instance内部联接bgt1 t2在t2.Instance = t1.Instance和t2.AcctCode = t1.AcctCode和t2.Line_ID=@month内部联接在t4.AcctCode = t2.AcctCode上起作用,其中t0.name = @costcenter union全部从jdt1中选择t0.name +'-Actual'作为't0Pivot',t4.AcctCode作为'GLAccount',t4.AcctName,isnull(sum(debit-credit),0)作为'value't3 left join oact t4上的t4.AcctCode = t3.t0上的帐户左侧连接对象t0.Name = t3.t1上的ProfitCode左侧连接对象tgt.Instance = t0.AbsId和t4.AcctCode = t1.AcctCode左连接bgt1 t2上t1.Instance = t2.Instance和t2.AcctCode = t1.AcctCode和t2.line_ID = 2,其中@startdate和@enddate和t4.ExportCode之间的t3.refdate不为null,t0.name = @ costcenter按t0.name,t4.AcctCode分组 ,t4.AcctName

)枢轴(a.topivot的总和(a.value)

([[88115100-Budget],[88115100-Actual]))作为数据透视表

---而不是88115100-Budget,我要@ costcenter-Budget,@ costcenter-Actual ...

请大家帮我

付费偷看设置
发送
1条回答
愤怒的猪头君
1楼-- · 2020-09-09 08:22

嗨,

您可以通过将整个查询创建为字符串来做到这一点。 像这样的东西:

-这里的所有变量
 声明@costcenter varchar(20)='88115100'
 DECLARE @SQL AS NVARCHAR(MAX)='在此处构建查询,使其保留为字符串,并且最终列名将类似于以下内容:('+ @costcenter +'-Budget)'
 EXEC(@SQL)

这可能在B1中不起作用,但是如果您将此代码放入存储过程中,然后在B1中调用该存储过程,则可以使其工作。/p>

致谢

Johan

一周热门 更多>