CX_COSTS
Klassenhierarchie
Beschreibung:
Folgende Kosten existieren:
Typ | Objekttyp |
---|---|
Kostenart | CX_COST_TYPE |
Kostenstelle | CX_COST_CENTER |
Kostenträger | CX_COST_OBJECTIVE |
Alle Buchungen der Kostenrechnung, unabhängig davon, ob sie für
Kostenstelle, Kostenträger oder Projekt entstanden sind, werden durch
die Kostenart als Aufwands-, Ertrags- oder Leistungsart gekennzeichnet.
Dabei entspricht die Kostenart (meist direkt) einem G+V Konto der
Finanzbuchhaltung.
Eine Kostenart dient also der Klassifizierung von Kosten; Kostenstellen,
Kostenträger, etc. dienen nur der Zuteilung. Diese Zuteilung muss direkt
erfasst werden und nachträglich veränder- oder erweiterbar sein.
Kostenarten müssen (sollten) daher immer mit Multi-Dimensionalen
Transaktionen verbucht werden, also: CX_MULTIPLE_ACCOUNTS_TXN oder
CX_SPLIT_ACCOUNT_TXN Objekten, in denen subBookings die Kostenaufteilung
steht.
Die Funktion Dimensions() gibt als Vektor die Kosten-Dimension einer
Kostenbuchung zurück; Ist es die Kostenarten Buchung selber, dann ist die
Dimension nur das Kostenarten-Konto, ist es eine untergeordnete Kosten-
stellen Buchung, dann besteht die Dimension aus Kostenart und Kostenstelle.
Die Kostenartenrechnung ist Ausgangspunkt einer Kostenrechnung. Ihr Ergebnis
ist, dass die urbelegorientierten Kosten-, Erlös- und Leistungsinformationen
- soweit es geht - den Kostenarten, Erlösarten, Kostenstellen und
Leistungsarten zugeordnet und die Einzelkosten mit den Kostenträgern
verbunden sind.
Kosten(arten), die direkt Kostenträgern zugerechnet werden können, werden
als Einzelkosten, die übrigen als Gemeinkosten bezeichnet.
Gemeinkosten können weiterhin in variable und fixe Kosten unterteilt werden.
Die Gemeinkosten können demnach nur dem Ort ihrer Entstehung zugeordnet
werden.
Auf die Kostenarten- baut die daher die Kostenstellenrechnung auf, deren Ergebnis
meist in Form eines BAB's dargestellt wird. Darin werden die o.g. Einzelkosten
oberhalb der eigentlichen Kostenstellenrechnung aufgeführt. Sie werden als
Leistungsgrößen für die Ermittlung der Material- bzw. Fertigungsgemein-
kostensätze herangezogen.
Die Aufgaben des BAB sind:
- Gemeinkosten verursachergerecht den Kostenstellen zuordnen
- Errechnung der Gemeinkostenzuschläge je Kostenstelle (Verhältnis
aus Einzelkosten zu Gemeinkosten)
- Vergleiche der Kosten innerhalb und zwischen den Kostenstellen
Die Kostensätze einer Kostenstelle können nach der Ist-, Normal- oder
Plankostenrechnung ermittelt werden. (Wert der Variablen costCenterCostingEnum)
Bei Kostenstellen/Kostenarten Konten können über direkt zugeordnete
Formel-Attribute z.B. prozentuale Aufteilungen in fixe und variable Kosten
vorgenommen werden, falls eine derartige Aufteilung nicht direkt - oder nur
unter sehr grossen Anstrengungen - erfolgen kann.
Istkostenrechnung:
Aus Gesamtkosten und Beschäftigung errechnet sich der aktuelle Kostensatz
zu Vollkosten. Wird eine Spaltung der Kostensätze (fix-unbar, fix-bar,
variabel) vorgenommen, so lassen sich auch die Teil- und Grenzkostensätze
errechnen (Teilkostenrechnung). Grenzkostensätze lassen sich mit CX_PER_VALUE
abbilden.
Standard(Normal)kostenrechnung:
Je nach Voll- oder Teilkostenrechnung werden Plan-Kostensätze erfasst.
Die Sollkosten ermitteln sich aus Plan-Kostensatz mal Ist-Beschäftigung.
Wird auch eine Plan-Beschäftigung erfasst, so kann die Beschäftigungs-
abweichnung (Fixkostendeckung) ermittelt werden.
Plankostenrechnung:
Plan-Kostensätze werden auch nach Kostenarten unterteilt erfasst. Darüber hinaus
ist die Beschäftigung zu planen.
Jegliche Kostenstrukturen, d.h. die grundsätzliche Zuordnung, welche Kostenart
für welche Kostenstelle relevant ist, können über Strukturelemente definiert
werden. Meist ergibt sich diese Zuordnung direkt aus dem Aufbau eines BAB's, der
ebenso als Strukturobjekt abgebildet wird, oder ist mit diesem sogar identisch.
Eine Einteilung in Kostenstelle oder Kostenplatz und deren hierachische
Gliederung ist beliebig.
Ebenso ist eine Einteilung in sogenannte Hilfs-Kostenstellen, Vor-Kostenstellen,
End-Kostenstellen, usw. frei. Diese strukturellen Gliederungen und deren
mögliche Verdichtungen werden über Struktur-Elemente realisiert.
Die Leistungsverflechtung zwischen den Kostenstellen ist somit unabhängig von
ihrer organisatorischen Struktur, kann aber auch auf ihr basieren.
Leistungsverflechtungen werden ebenfalls über CX_STRUCTURE Objekte und
zugehörige CX_ALLOCATION Objekte realisiert.
Innerhalb der Kostenstellenrechnung werden Gemeinkosten in primäre und sekundäre
Kosten unterteilt. Primäre Kosten sind Kosten, die durch externe Einkäufe
entstanden sind, sekundäre Kosten betreffen Leistungen, die von Stellen
innerhalb des Betriebes bezogen werden. Diese Unterscheidung wird wichtig bei
Verteilung der Kosten:
1. Verteilung der Primärkosten
Zunächst werden die lediglich nach Kostenart erfassten (primären) Gemeinkosten
über Leistungsgrößen auf die Kostenstellen verteilt.
Die Leistungsmessung erfolgt anhand einer Leistungs- oder Bezugsgrösse, die als
slot im Konto der Kostenstelle mitaufgeführt wird (neben costs, revenues, ..).
Die Ist-Leistung einer Kostenstelle kann entweder direkt in ein Balance-Objekt
der Kostenstelle geschrieben werden (manuell oder aus einer Datenübernahme),
bzw. auch direkt (da ja als slot im Konto definiert) gebucht werden.
Es können auch beliebige, unterschiedliche Leistungsgrößen pro
Kostenstelle definiert werden. Es muss dann allerdings darauf geachtet werden,
dass derart definierte Kostenstellen spezifische Formeln zur Errechnung der
Ist-Kosten und eventueller Weiterbelastungen haben müssen.
2. Umlage der Sekundärkosten
Bei hierarchischer Umlage von Kostenstellen ist nur darauf zu achten, dass
die Umlage "von unten nach oben" erfolgt (Stufenleiterverfahren).
Bei gegenseitiger Leistungsverflechtung der (Hilfs-)Kostenstellen ergibt sich
ein lineares Gleichungssystem, dass iterativ gelöst werden kann. Im ersten
Schritt wird der ursprüngliche Betrag (Summe Istkosten) auf die Kostenstellen
verteilt, in den folgenden Iterationsschritten wird dann immer nur noch der
Betrag umgelegt, den die Kostenstelle beim vorhergehenden Schritt empfangen
hat. Schon nach wenigen Rechenschritten (ca. 5-6) ist die Summe des unverteilten
Restes aller Kostenstellen so klein, dass die Iteration abgebrochen werden kann.
Kostenarten können über Verteilungsstrukturen direkt auf Kostenstellen
verteilt werden, auch ohne fiktive Kostenstellen !
Die Verteilung der Kosten kann Kostenarten abhängig oder auch unter einer
statistischen Kostenart, etc durchgeführt werden !
Die Verteilung erfolgt über Strukturen und angebundene Allokationsobjekte.
Als Abschluss der Kostenstellenrechnung werden die Kalkulationssätze gebildet,
indem die Gesamtkosten der Kostenstelle durch den Wert der Leistungsgröße der
Kostenstelle dividiert wird. Je nach Kostenrechnungsverfahren (Vollkosten-,
Teilkostenrechnung) wird dieses für die Gesamtkosten oder lediglich für die
variablen Kosten der Stelle berechnet.
Im Rahmen der Kostenträgerrechnung werden die Kosten der Kostenträger bestimmt.
Werden sie pro Einheit errechnet, sowird dieses als Kostenträgerstückrechnung
oder Kalkulation bezeichnet, werden die Kosten eines Kostenträgers für eine
bestimmte Periode errechnet, so wird dieses als Kostenträgerzeitrechnung
bezeichnet.
Der Kalkulationsvorgang innerhalb der Kostenträgerstückrechnung vollzieht
sich folgendermassen:
Materialkosten inkl. Materialgemeinkostenzuschläge (Stücklisten)
+ Fertigungskosten inkl. Fertigungsgemeinkostenzuschläge (Arbeitspläne)
= Herstellkosten
+ Verwaltungsgemeinkostenzuschläge
+ Vertriebsgemeinkostenzuschläge
+ Verwaltungs-/Vertriebssondereinzelkosten
= Selbstkosten
Die Differenz aus Verkaufspreis und Selbstkosten ist der Deckungsbeitrag.
Die Kostenträgerzeitrechnung (auch als Betriebsergebnis- oder Kurzfristige
Erfolgsrechnung bezeichnet) setzt die Kostenträgerstückrechnung als
wesentlichen Datenlieferanten voraus. Es wird zwischen dem Gesamtkostenverfahren
und dem Umsatzkostenverfahren unterschieden und weiter nach Ist-, Plan- und
Normalkosten.
Die Kostenträgerzeitrechnung dient zur Erfolgsplanung und zur Erfolgskontrolle.
Dabei kann sie sich auf unterschiedliche Kostenträger wie Einzelartikel,
Artikelgruppen, einzelne Kunden, Kundengruppen, Absatzgebiete, Vertreter, usw.
beziehen.
Da es ausgeschlossen ist, alle möglichen Berichte als Standardauswertungen
vorzusehen, werden spezielle Struktur-Objekte (OLPA Objekte) für diese
Aufgabenstellungen zur Verfügung gestellt.
Bei der kurzfristigen Erfolgsrechnung auf Vollkostenbasis ergibt sich der
Gewinn, indem zu dem Periodenerlös die bewerteten Bestandsveränderungen an
Halb- und Fertigfabrikaten addiert werden und davon die Gesamtkosten
subtrahiert werden.
Beim Umsatzkostenverfahren auf Basis von Grenzkosten (Deckungsbeitragsrechnung)
werden von dem Verkaufspreis lediglich die variablen Stückkosten abgezogen.
(DB I). Die fixen Kosten werden nach Kostenarten erfasst und global
abgezogen (DBII).
SLOTS
costs Kosten
marginalVariableCosts variabler (Grenz)Kostensatz
variableCosts variable Kosten
marginalFixedCosts fixer, barer (Grenz)Kostensatz
fixedCosts fixe, bare Kosten
marginalimputedCosts fixer, unbarer (Grenz)Kostensatz
imputedCosts fixe, unbare (kalkulatorische) Kosten
revenues Erlöse
marginalRevenues (Grenz)Erlössatz
activity Beschäftigung
activityLevel Beschäftigungsgrad
activityVariance Beschäftigungsabweichung (Fixkostendeckung)
budgetVariance Verbrauchsabweichnung
FORMELN
?? Soll-Kosten
budgetBalance.costs = budgetBalance.fixedCosts + budgetBalance.imputedCosts +
budgetBalance.marginalCosts * currentBalance.activity
?? Ist-Kosten
currentBalance.costs = currentBalance.fixedCosts + currentBalance.imputedCosts +
currentBalance.marginalCosts * currentBalance.activity +
?? Verbrauchsabweichung
currentBalance.budgetVariance =
budgetBalance.marginalCosts * currentBalance.activity -
budgetBalance.marginalCosts * budgetBalance.activity
?? Soll-Teilkosten
currentBalance.variableCosts =
budgetBalance.marginalCosts * currentBalance.activity
Beschäftigungsabweichung
currentBalance.activityVariance = (budgetBalance.marginalFixedCosts +
budgetBalance.marginalImputedCosts) *
currentBalance.activity -
(budgetBalance.marginalFixedCosts +
budgetBalance.marginalImputedCosts) *
budgetBalance.activity
Code-Beispiel:
Funktion | MA* | Parameter | Rückgabe | Kurzbeschreibung |
---|---|---|---|---|
SanityCheck | INTEGER | Prüfung auf Konsistenz des Objektes | ||
CastedStructureByCondition | STRING | OBJECT | ||
ClassFilter | STRING, INTEGER | OBJECT | Dieses Objekt, wenn es einer bestimmten Klasse entspricht | |
ClearingObject | STRING, INTEGER | OBJECT | Erste Zuordnung zu Abrechnungsobjekten | |
ClearingObjectMA | * | STRING, INTEGER | Zuordnungen zu Abrechnungsobjekten | |
ConditionedFilter | STRING | OBJECT | ||
ConditionedFilter2 | OBJECT | OBJECT | ||
ConnectStateStructure | OBJECT, STRING | Verbinden mit der Status-Struktur | ||
Deleted | INTEGER | Objekt als gelöscht markiert? | ||
Description | STRING | Bezeichnung dieses Objektes | ||
EvaluateTotalMonitors | STRING, INTEGER, STRING | OBJECT | ? | |
ForceMonitor | STRING | OBJECT | ? | |
GetDomain | INTEGER | Domain dieses Objektes | ||
GetSiblings | COLLECTION | Alle Siblings dieses Objektes | ||
GetSiblings2 | COLLECTION | Alle Siblings dieses Objektes | ||
GetSlotEntries | VECTOR | Rückgabe von internen Informationen zu Slots | ||
GetStructure | OBJECT | OBJECT | Untergeordnete Struktur suchen, die zur selben Hierarchie gehört | |
InsertMonitor | OBJECT | ? | ||
LastUpdate | OBJECT | Datum des letzten Schreibzugriffs | ||
LastUser | INTEGER | User, der zuletzt schreibend auf das Objekt zugegriffen hat | ||
Link | OBJECT | Dieses Objekt in die Liste der Objekte mit Gültigkeit einfügen | ||
Monitor | STRING | OBJECT | ? | |
RemoveMonitor | OBJECT | ? | ||
RemoveStateStructure | STRING | Status-Struktur nach uniqueID finden und Verbindung lösen | ||
RestrictedValidity | * | Gültigkeitsbereich eingeschränkt? | ||
SetDomain | INTEGER, INTEGER | Domain setzen | ||
SetStructure | OBJECT | Stellt sicher, dass eine Struktur zur untergeordneten Struktur wird | ||
ShortName | STRING | Kurzbezeichnung dieses Objektes | ||
Siblings | * | Objekte mit Gültigkeit | ||
SpanDateValidity | * | Gültigkeitsspanne | ||
StateStructure | STRING | OBJECT | Status-Struktur nach uniqueID (STRING) finden (nicht gewrappt) | |
StateStructureWrapper | STRING | OBJECT | Status-Struktur nach uniqueID finden | |
string | INTEGER | CX_STRING | Liefert die String-Darstellung des Objektes | |
StructureByCondition | STRING | OBJECT | Untergeordnete Struktur mit einer bestimmten Bedingung | |
StructureByID | STRING | OBJECT | Untergeordnete Struktur mit einem bestimmten eindeutigen Schlüssel | |
StructureByIDMA | * | STRING | Untergeordnete Strukturen mit einem bestimmten eindeutigen Schlüssel | |
StructureByType | STRING, INTEGER | OBJECT | Untergeordnete Struktur eines bestimmten Typs | |
TotalMonitors | STRING, INTEGER, STRING | OBJECT | ? | |
TriggeredStateStructure | STRING | OBJECT | Versucht Status-Struktur weiterzuschalten und gibt die neue Status-Struktur (nicht gewrappt) zurück | |
TriggeredStateStructureWrapper | STRING | OBJECT | Versucht Status-Struktur weiterzuschalten und gibt die neue Status-Struktur (gewrappt) zurück | |
TriggerStateStructures | Schaltet alle Status-Strukturen weiter | |||
UniqueID | STRING | Inhalt des festen Datenfeldes "uniqueID" | ||
Unlink | Dieses Objekt aus der Liste der Objekte mit Gültigkeit entfernen | |||
Unlink2 | Dieses Objekt aus der Liste der Objekte mit Gültigkeit entfernen | |||
Valid | OBJECT | INTEGER | Gültigkeit prüfen | |
ValidSince | OBJECT | Beginn der Gültigkeitsspanne | ||
ValidToday | INTEGER | Heute gültig? | ||
ValidUntil | OBJECT | Ende der Gültigkeitsspanne | ||
VerifySiblings | INTEGER | Ring der Austauschobjekte prüfen |
* MA = Member-Access-Funktion,
grau unterlegt = geerbte Funktion
Datenfeld | Typ | Referenz-Klasse | I* | Kurzbeschreibung |
---|---|---|---|---|
allocations | REL_MN | CX_EXPANDABLE | ? | |
clearingObjects | REL_MN | CX_CLEARING_OBJECT | Abrechnungskreise | |
generalTerms | REL_1M | CX_GENERAL_TERMS | ? | |
monitors | REL_MN | CX_MONITOR | ? | |
structures | REL_MN | CX_EXPANDABLE | Organisations-Strukturen | |
uniqueID | STRING | * | Eindeutiger Schlüssel | |
validity | POINTER | CX_VALIDITY | Gültigkeitszeitraum des Objektes |
* I = Indizierbares Datenfeld,
grau unterlegt = geerbtes Datenfeld
Modul | Kurzbeschreibung |
---|---|