Bei diesem Weg erzeugt Amagno je Export eine flache Textdatei mit einer Zeile
je Kontierungszeile. SAP verarbeitet sie über die Legacy System Migration
Workbench (Transaktion LSMW) mit dem Standardprogramm
RFBIBL00. Es wird nichts programmiert — die Zuordnung entsteht
einmalig im LSMW-Projekt und wird danach nur noch ausgeführt.
Wann dieser Weg passt
Die Übernahme per LSMW ist der pragmatische Weg: Sie kommt ohne ALE-Kopplung aus, braucht keine Ports und keine Partnervereinbarungen, und die Datei lässt sich vor dem Einlesen im Klartext prüfen. Wer stattdessen eine dauerhaft automatisierte Schnittstelle möchte, findet den zweiten Weg unter „SAP R/3 vorbereiten: Buchhaltungsbeleg per IDoc".
Voraussetzungen
- Das Programm
RFBIBL00ist im System freigegeben. Ist es das nicht, entfällt dieser Weg und es bleibt die IDoc-Variante. - Berechtigung für die Transaktion
LSMWsowie Buchungsberechtigung im Zielbuchungskreis (ObjektF_BKPF_BUK). - Ein Übergabeordner, auf den sowohl Amagno schreiben als auch SAP lesen kann (FTP-Ablage oder ein vom Anwendungsserver erreichbares Verzeichnis).
- Die Kreditorenstammsätze existieren bereits — die Übernahme legt keine Stammdaten an.
Schritt 1: Projekt, Teilprojekt und Objekt anlegen
In LSMW die dreistufige Hierarchie anlegen. Bewährt hat sich eine
sprechende Benennung, weil sie in allen Folgeschritten wieder auftaucht:
| Projekt | ZDMS_INT – Schnittstellen aus dem Dokumentenmanagement |
| Teilprojekt | ZFI_INV – Eingangsrechnungen |
| Objekt | ZINV_FLAT – flache Übergabedatei |
Schritt 2: Einleseverfahren festlegen
Im ersten LSMW-Schritt („Objektattribute pflegen") wird gewählt:
- Verfahren: Standard Batch/Direct Input
- Objekt:
0100(Buchhaltungsbeleg) - Methode:
RFBIBL00
Schritt 3: Quellstruktur und Quellfelder
Es wird genau eine Quellstruktur angelegt, zum Beispiel
ZINV_FLAT. Das ist der wesentliche Vorteil dieses Formats: keine
Strukturbeziehungen, keine Sortierfallen, keine Kontrolldatei. Die Datei
enthält die Spaltennamen in Zeile 1, sodass LSMW die Quellfelder in Schritt 3
direkt übernehmen kann.
Die Datei liefert diese Felder — Bezeichner entsprechen den SAP-Feldnamen:
BUKRS | Buchungskreis | Pflicht |
LIFNR | Kreditor | Pflicht |
XBLNR | Rechnungsnummer des Lieferanten | Pflicht |
BLDAT | Belegdatum (JJJJMMTT) | Pflicht |
BUDAT | Buchungsdatum (JJJJMMTT) | Pflicht |
BLART | Belegart, in der Regel KR | Pflicht |
WAERS | Währung | Pflicht |
WRBTR_BRUTTO | Bruttobetrag des Belegs | Pflicht |
ZTERM | Zahlungsbedingung | optional |
ZFBDT | Basisdatum | optional |
HKONT | Sachkonto der Kontierungszeile | Pflicht |
SHKZG | Soll/Haben-Kennzeichen (S oder H) | Pflicht |
WRBTR_POS | Positionsbetrag netto | Pflicht |
MWSKZ | Steuerkennzeichen | Pflicht |
KOSTL | Kostenstelle | optional |
AUFNR | Innenauftrag | optional |
PS_PSP_PNR | PSP-Element | optional |
SGTXT | Positionstext | optional |
DMS_LINK | Rückverweis auf den Beleg in Amagno | optional |
Wichtig: KOSTL, AUFNR und
PS_PSP_PNR schließen sich fachlich aus — je Zeile darf nur eine
Kontierungsart gefüllt sein. Mehrfachkontierung quittiert SAP mit einer wenig
aussagekräftigen Meldung.
Schritt 4: Feldzuordnung und Belegwechsel
Weil jede Zeile eine Buchungszeile ist und sich die Belegdaten wiederholen, muss das Feldmapping erkennen, wann ein neuer Beleg beginnt. Das übernimmt im Schritt „Feldzuordnung und Umsetzungsregeln pflegen" die Anweisung:
ON CHANGE OF ZINV_FLAT-XBLNR
Der Kopfsatz BBKPF wird nur beim Wechsel der Rechnungsnummer
erzeugt, die Positionssätze BBSEG für jede Zeile. Voraussetzung ist,
dass die Datei nach XBLNR sortiert ist — bei aktivierter
Splittbuchung ist das automatisch der Fall, weil alle Zeilen eines Belegs
zusammenhängend geschrieben werden.
Beträge werden immer ohne Vorzeichen geliefert; die Richtung
trägt ausschließlich SHKZG. Bei einer Gutschrift steht dort
H und ein positiver Betrag.
Schritt 5: Dublettenschutz
Damit ein wiederholter Lauf keine doppelten Verbindlichkeiten erzeugt, im
Feldmapping zu BKPF-XBLNR folgendes Coding hinterlegen:
SELECT SINGLE belnr INTO lv_belnr FROM bkpf
WHERE bukrs = ZINV_FLAT-bukrs
AND xblnr = ZINV_FLAT-xblnr
AND gjahr = ZINV_FLAT-bldat(4).
IF sy-subrc = 0.
SKIP_TRANSACTION. "bereits gebucht
ENDIF.
Genau deshalb ist XBLNR ein Pflichtfeld: Es ist der fachliche
Schlüssel, an dem SAP eine bereits gebuchte Rechnung wiedererkennt.
Schritt 6: Datei einlesen
In den Schritten „Dateien pflegen" und „Dateien Quellstrukturen zuordnen" wird die Übergabedatei hinterlegt. Einzustellen sind:
- Trennzeichen: Tabulator
- Feldnamen in der ersten Zeile: ja
- Zeilenende: CRLF
- Codepage: UTF-8. Bei einem Non-Unicode-System stellen wir den Export auf ANSI (Windows-1252) um — bitte vorab abstimmen.
Danach die Standardfolge: Daten lesen → Daten anzeigen → Daten konvertieren → Konvertierte Daten anzeigen → Daten einlesen. Für den ersten Lauf empfiehlt sich der Batch-Input-Modus mit Anzeige, um die Belege einzeln zu prüfen.
Betrieb und Transport
LSMW-Projekte sind mandantenabhängig und gehören nicht in einen Transportauftrag. Für die Übernahme in ein anderes System bitte Extras → Projekt exportieren verwenden und die Datei versioniert ablegen.
Häufige Fehler
- Beleg nicht ausgeglichen: Die Summe der Positionsbeträge entspricht nicht dem Bruttobetrag. Meist fehlt eine Kontierungszeile oder die Steuer wird doppelt geliefert.
- Steuerkennzeichen passt nicht zum Sachkonto: Die Steuerfindung im Buchungskreis prüfen.
- Belege werden zusammengefasst: Die Datei ist nicht nach
XBLNRsortiert, dadurch greiftON CHANGE OFfalsch. - Umlaute verstümmelt: Codepage der Datei und des Systems stimmen nicht überein.