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

Der vorliegende Blog enthält von mir im Laufe meiner beruflichen Tätigkeit als SAP-Berater zusammengetragene Informationen / Beispiel-Codings zum Themenkreis SAP, speziell FI/CO.

Übernahme von externen Umbuchungen und statistischen Kennzahlen ins CO

Veröffentlicht am 25. Februar 2014 von sapmandoo in CO

Nachfolgend eine Anleitung, wie zum einen Primärkostenumbuchungen und zum anderen statistische Kennzahlen mithilfe von Standard-Werkzeugen ins CO übernommen werden können. Grundlage hierfür bilden entsprechend vorformatierte Excel-Dateien. Die Übernahme selbst erfolgt jeweils mit der CO-spezifischen Datenübernahmetransaktion BATCHMAN.    

Details zum Vorgehen befinden sich im Dokument https://docs.google.com/file/d/0B1_CTm8mzZEQamdDMW5Xa3BzSWc/edit

Das hier beschriebene Verfahren fusst auf der Standard-Auslieferung von SAP für das hinter dem BATCHMAN verankerte BadI. Eine eigene, gepimpte Version steht hier zur Verfügung

Kommentare

Erweiterung der Einzelpostenanzeige um zusätzliche Felder

Veröffentlicht am 20. Februar 2014 von sapmandoo 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.

Kommentare

Merkmals- und Wertfeldauswahl im CO-PA

Veröffentlicht am 18. Februar 2014 von sapmandoo in CO

Ein Artikel aus der Serie: 'Ihr sollt es im Leben mal besser haben, als ich...':

Symptom:
Es wurden im CO-PA neue Wertfelder (oder Merkmale) angelegt. Diese sollen nun dem Ergebnisbereich hinzugefügt werden. Die neuen Wertfelder lassen sich nicht auswählen, obwohl sie aktiviert sind.

Ursache:
In der Routine set_rky_tab_pick im Include MKCGGF81 wird das Kennzeichen 'Pick' in der Tabelle rky_tab gesetzt, welches steuert, ob ein Wertfeld auswählbar ist oder nicht. Im ersten Coding-Abschnitt werden alle die Wertfelder auf 'nicht auswählbar' gesetzt, die bereits dem Ergebnisbereich zugeordnet sind... (das ist ja auch soweit nachvollziehbar!).

Im nachfolgenden Coding-Abschnitt wird aber eine zusätzliche, perfide, nicht weiter dokumentierte Prüfung vorgenommen:

   if cgg_par-ffgrp        eq kcdb_false  and
      ikcge-eq_txt_allowed eq kcdb_false.
     loop at kyf_tab into  kyf_wa
                     where txt_m eq rky_wa-txt_m
                     or    txt_s eq rky_wa-txt_s.
       exit.
     endloop.
     if sy-subrc eq 0.
       clear rky_wa-pick.
     endif.
   endif.

Hier wird der Mittel- und Kurztext der Wertfelder im Vorrat mit denen der bereits im Ergebnisbereich vorhandenen Wertfelder (Tab. kyf_tab) abgeglichen. Stimmt einer der Texte überein, wird das Feld PICK auf space gesetzt.

 

D.h. es können keine zwei Wertfelder mit gleichen (Kurz-)texten im Ergebnisbereich verwendet werden.

 

Der im Coding abgefragte Paramter 'eq_txt_allowed' ist immer hart auf SPACE gesetzt - die (nicht im Customizing beeinflussbare) Initialisierung erfolgt in der Routine init_ikcge_ke im Include FKCGNF20.

 

Ich hab's nicht überprüft, aber ich gehe davon aus, dass das Gesagte analog auch für Merkmale gilt.

Hat mich einige Mühe gekostet, dass herauszufinden, deshalb die Info an Euch, falls Ihr mal vor dem gleichen Phänomen steht.


Kommentare