Overblog Folge diesem Blog
Edit post Administration Create my blog
SAPManDoo - SAP Resource

Erweiterung der Einzelpostenanzeige um zusätzliche Felder

20. Februar 2014 , Geschrieben von sapmandoo Veröffentlicht in #FI

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.

  DATAwa_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 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.

Diesen Post teilen

Repost 0
Um über die neuesten Artikel informiert zu werden, abonnieren:

Kommentiere diesen Post