Die Einzelpostenanzeigen im FI für kreditorische, debitorische und Sachkonten-Einzelposten (Transaktionen FBLxN bzw. FAGLL03) bieten zahlreiche Auswertungsmöglichkeiten und sind sehr variabel in der Darstellung. Unter anderem steht ein umfänglicher Feldvorrat zur Verfügung, der zur Anzeige gebracht werden kann.
Welche Felder stehen standardseitig (d.h. ohne weiteres Zutun) zur Verfügung?
Hierzu muss man verstehen, dass die Einzelpostentransaktionen auf eigenen, im Zuge der Belegbuchung fortgeschriebenen Tabellen operieren. Diese Tabellen werden zuweilen auch Sekundärindizes genannt. Im einzelnen sind dies:
Einzelposten-Tabelle | Bedeutung | Basis für Transaktion |
BSID | Debitorische offene Posten | FBL5N |
BSAD | Debitorische ausgeglichene Posten | FBL5N |
BSIK | Kreditorische offene Posten | FBL1N |
BSAK | Kreditorische ausgeglichene Posten | FBL1N |
BSIS | Sachkonten – offene Posten (Achtung: Einzelposten werden nur fortgeschrieben, wenn im jeweiligen Sachkontenstammsatz die Option „Einzelpostenanzeige“ aktiviert ist) | FBL3N bzw. FAGLL03 |
BSAS | Sachkonten – ausgeglichene Posten (Achtung: Einzelposten werden nur fortgeschrieben, wenn im jeweiligen Sachkontenstammsatz die Option „Einzelpostenanzeige“ aktiviert ist) | FBL3N bzw. FAGLL03 |
Die o.g. Einzelpostentabellen enthalten dabei sowohl Angaben aus der Belegposition (Tab. BSEG) als auch aus dem Belegkopf (BKPF). Somit lässt sich festhalten, dass die Einzelpostentabellen eine Teilmenge der abgemischten Informationen aus Belegposition und –kopf darstellen. Die Felder der Einzelpostentabellen werden im Rahmen der Verbuchung fortgeschrieben und können ohne weiteres Zutun in den einschlägigen Transaktionen verwendet werden.
Verwendung von Sonderfeldern
Wie oben ausgeführt, enthalten die Einzelpostentabellen nur eine Teilmenge der Informationen, die im eigentlichen Buchhaltungsbeleg zur Verfügung stehen. Über die Funktion Sonderfelder kann das System angewiesen werden, bestimmte Felder zur Laufzeit aus dem Buchhaltungsbeleg nachzulesen.
Ein Beispiel hierfür ist das Feld „Einkaufsbeleg“ (EBELN). Perfide dabei ist, dass es im Default-Feldvorrat der Einzelpostenlisten sogar schon enthalten ist, aber nicht befüllt wird, da es bspw. in der Tabelle BSIS gar nicht enthalten ist. D.h., das System müsste zum Einzelposten die entsprechende Position des Buchhaltungsbeleges (Tab. BSEG) nachlesen, um das Feld EBELN mit Werten zu versorgen. Genau das passiert, wenn diese Felder als Sonderfelder im Customizing deklariert werden:
Customizing-Leitfaden: Finanzwesen (neu) - Hauptbuchhaltung (neu) – Stammdaten – Sachkonten - Einzelposten - Sonderfelder für Einzelpostenanzeige definieren
Anschließend stehen die hier aufgenommen Felder in der Einzelpostenanzeige (mit Werten versorgt) im Feldvorrat zur Verfügung.
Hinweis: da hier pro Einzelposten ein zusätzlicher Datenbank-SELECT auf die in der Spalte „Tabelle“ angegebene Datenbanktabelle stattfindet, hat dies u.U. natürlich gewisse Auswirkungen auf Performance.
Hinzufügen eigener Felder
Über das oben beschriebene hinaus, kann es erforderlich bzw. gewünscht sein, zusätzliche Informationen in den Einzelpostenlisten zur Anzeige zu bringen bzw. den Feldvorrat um eigene Felder zu ergänzen. Auch hier stehen modifikationsfreie (!) Möglichkeiten zur Verfügung, die allerdings gewisse Kenntnisse in der ABAP-Programmierung erfordern.
Zunächst müssen die neuen Felder dem Feldvorrat hinzugefügt werden. Dazu wird ein Append an die Strukturen RFPOS/RFPOSX (Transaktionen FBLxN) bzw. FAGLPOSE (Transaktion FAGLL03) gehängt, welches die neuen Felder enthält. Den nachfolgenden Abschnitten lässt sich entnehmen, wie die so hinzugefügten Felder mit Werten versorgt werden können.
Erweiterung über Business Transaction Event (nur Transaktionen FBLxN)
Business Transaction Events (kurz BTE, vormals auch OPEN-FI betitelt) gehören zu einer Erweiterungstechnologie der SAP (ähnlich den User-Exits), die es ermöglicht, kundeneigenes Coding in Form von Funktionsbausteinen an vordefinierte Andockpunkte zu koppeln. Für die Befüllung eigener Felder der Einzelpostenliste steht der BTE 00001650 (P&S-Schnittstelle) bereit. Ein (zugegebenermaßen einfaches aber anschauliches) Beispiel inkl. Muster-Coding findet sich im SAP-Hinweis 569939.
Erweiterung über BadI FAGL_ITEMS_CH_DATA (Transaktionen FBLxN und FAGLL03)
Mit dem genannten BadI können die neuen Felder mit Werten versorgt werden. Ein (zugegebenermaßen einfaches aber anschauliches) Beispiel inkl. Muster-Coding findet sich im SAP-Hinweis 1174945. Zudem befindet sich nachfolgend in Anlehnung an das Vorgehen im genannten Hinweis ein bebildertes Beispiel zum Hinzufügen der Kostenstellenbezeichnung.
Beispiel mit BadI:
Für die Sachkonteneinzelpostenliste FAGLL03 soll zusätzlich zur Kostenstelle auch die Kostenstellenbezeichnung (Kurztext) in den Feldvorrat aufgenommen werden.
Hierfür fügen wir zunächst einen geeigneten Append der Einzelpostenstruktur FAGLPOSE hinzu. In diesem wird das neue Feld ZZ_KTEXT eingefügt.
Da nicht auszuschließen ist, dass die Struktur von SAP in kommenden Releases um zusätzliche Felder erweitert wird, empfiehlt es sich, den Feldnamen im Kundennamensraum zu wählen. Sofern sinnvoll, kann hierfür auch noch ein eigenes Datenelement angelegt werden. Da wir uns hier auf einen Standard-Datentyp (zu Feld CSKT-KTEXT) beziehen können, ist dies im vorliegenden Fall nicht notwendig.
Annschließend legen wir mithilfe der Transaktion SE19 eine Implementierung des BadIs FAGL_ITEMS_CH_DATA an, in der das neue Feld versorgt wird. Dazu wird zur Methode CHANGE_ITEMS geeignetes Coding hinterlegt:
METHOD if_ex_fagl_items_ch_data~change_items.
DATA: wa_items TYPE faglposx.
LOOP AT ct_items INTO wa_items.
* Nachlesen Kurztext aus K'Stellenstammsatz
CLEAR wa_items-zz_ktext.
IF NOT wa_items-kostl IS INITIAL AND
NOT wa_items-kokrs IS INITIAL.
SELECT ktext FROM cskt INTO wa_items-zz_ktext
UP TO 1 ROWS
WHERE spras = sy-langu
AND kokrs = wa_items-kokrs
AND kostl = wa_items-kostl
AND datbi GE sy-datum.
ENDSELECT.
MODIFY ct_items FROM wa_items.
ENDIF.
ENDLOOP.
ENDMETHOD.
Abschließend wird die BadI-Implementierung aktiviert. Wie u.a. im Hinweis 1174945 erwähnt, sollte vor der Verwendung des neuen Feldes der Report BALVBUFDEL ausgeführt werden, um den ALV-Puffer zu initialisieren.
Im Ergebnis steht nun das neue Feld im Feldvorrat zur Verfügung und kann bei Bedarf der Anzeige hinzugefügt werden.