Abfragen zum erstellen von benutzerdefinierten Gewinn-und-Verlust-Bericht in SAP B1
Ich versuche zum erstellen einer benutzerdefinierten Gewinn-und Verlustrechnung, die unter Verwendung von crystal reports. Ich bin mit einem vorherigen Satz von sql-Skripts, um Sie zu ändern auf meine Bedürfnisse anzupassen.
Ich bin mit 2 Ansichten, die eine Funktion und eine gespeicherte Prozedur, dies zu erreichen. (code ist ein bisschen lang)
vw_Transactions
USE [EUROPA_PROD_DB]
GO
/****** Object: View [dbo].[vw_Transactions] Script Date: 05/04/2012 12:51:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[vw_Transactions] AS
SELECT
TA.AcctCode,TA.AcctName,TA.GroupMask,TA.Levels,TA.ActType,TA.L1Parent,TA.L2Parent,
TA.L3Parent,TA.L4Parent,
TH.TransId,TH.TransType,TH.RefDate PostingDate,TH.DueDate,
TH.TaxDate,TD.Account,TD.Debit,TD.Credit
FROM OJDT TH
INNER JOIN JDT1 TD ON TH.TransId=TD.TransId
INNER JOIN vw_AccountDetails TA ON TD.Account=TA.AcctCode
GO
Probe von oben Ansicht
vw_AccountDetails - diese Ansicht ermöglicht es mir, die verschiedenen Ebenen (sprich Eltern), wie Sie in dem Bild sehen. Die Spalte GroupMask bezieht sich auf die unten folgenden:
1 - assets
2 - liabilities
4 - turnover
5 - Cost of sales
6 - operating costs.
fn_CustomProfit_And_Loss - Funktion
ALTER FUNCTION fn_CustomProfit_And_Loss
(
@BeginDate DATETIME,
@EndDate DATETIME
)
RETURNS @table TABLE(
L1Parent VARCHAR(72),
L2Parent VARCHAR(72),
Balance MONEY,
RowOrder INT
)
AS
BEGIN
SET @BeginDate=CAST(YEAR(@BeginDate) AS CHAR(4))+'-'+CAST(MONTH(@BeginDate) AS CHAR(2)) +'-'+ CAST(DAY(@BeginDate) AS CHAR(2))
SET @EndDate=CAST(YEAR(@EndDate) AS CHAR(4))+'-'+CAST(MONTH(@EndDate) AS CHAR(2)) +'-'+ CAST(DAY(@EndDate) AS CHAR(2))
INSERT INTO @table
SELECT
CASE L1Parent WHEN 'Turnover' THEN 'Income' ELSE L1Parent END L1Parent,
L2Parent,
SUM(Credit-Debit) Balance,
1 RowOrder
FROM vw_Transactions
WHERE GroupMask=4--Income
AND PostingDate BETWEEN @BeginDate AND @EndDate
GROUP BY L1Parent,L2Parent
UNION ALL
SELECT
CASE L1Parent WHEN 'Cost of Sales' THEN 'Cost Of Goods Sold' ELSE L1Parent END L1Parent,
L2Parent,
SUM(Debit-Credit) Balance,
2 RowOrder
FROM vw_Transactions
WHERE GroupMask=5--COGS
AND PostingDate BETWEEN @BeginDate AND @EndDate
GROUP BY L1Parent,L2Parent
UNION ALL
SELECT
CASE L1Parent WHEN 'Operating Costs' THEN 'Expenses' ELSE L1Parent END L1Parent,
L2Parent,
SUM(Debit-Credit) Balance,
3 RowOrder
FROM vw_Transactions
WHERE GroupMask IN(6)--Expenses
AND PostingDate BETWEEN @BeginDate AND @EndDate
GROUP BY L1Parent,L2Parent
RETURN
END
sp_CustomProfit_And_Loss - gespeicherte Prozedur
CREATE PROCEDURE sp_CustomProfit_And_Loss
(
@BeginDate DATETIME,
@EndDate DATETIME
)
AS
BEGIN
SELECT L1Parent,L2Parent,Balance,RowOrder
FROM fn_CustomProfit_And_Loss(@BeginDate,@EndDate)
order by RowOrder
END
Was ich im Grunde brauchen, ist eine P & L-Anweisung gruppiert pro Abteilung. ich.e
BRANDING1 BRANDING2 PROMOS
Sales-Gross Revenue 18237 121143 91092
COST OF SALES
Direct Purchases
Labour
KEBS Levy
Marketing
Packaging Materials
Clearing
Car hire and transport
Licence Local Authority
Courier freight & postage
Travel and Accomodation
- -
Wie kann ich ändern, meine SQL-Anweisungen, um eine P & L-Anweisung, die Gruppen pro Abteilung? Jede Hilfe zu schätzen.
InformationsquelleAutor Kinyanjui Kamau | 2013-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ein sehr ausführliches und verwirrend zu.
Ich werde versuchen, die Lösung, soweit ich verstehe.
Oben genannte Lösung funktioniert, wenn Sie die Ansichten in dem Bericht.
Wenn Ihre Forderung ist etwas anderes, dann lasst es mich wissen versuchen zu helfen,
InformationsquelleAutor Siva