Belege mit BAPI_ACC_DOCUMENT_POST vorerfassen

In SAP ERP gibt es die Möglichkeit, einen SAP-Beleg zu speichern, ohne dass eine echte Buchung in SAP FI durchgeführt wird: Beleg vorerfassen.

Vor allem in der Kreditorenbuchhaltung sowie Debitorenbuchhaltung mit Rechnungen und Gutschriften kommen vorerfasste Belege häufig zum Einsatz. So kann man einen Beleg vorerfassen, um ihn zu einem späteren Zeitpunkt letztlich auch zu buchen.

Beim Buchen eines vorerfassten Beleges wird der vorerfasste Beleg gelöscht und ein echter FI-Beleg wird mit derselben Belegnummer in SAP FI in der Belegdatenbank abgelegt. Die Verkehrszahlen des echten FI-Belegs werden in SAP FI fortgeschrieben.

Nun kann es vorkommen, dass man Rechnungen bzw. SAP-Belege vorerfassen möchte. Der BAPI BAPI_ACC_DOCUMENT_POST ermöglicht es, sehr einfach einen gebuchten SAP-Beleg zu erzeugen. Man kann den BAPI BAPI_ACC_DOCUMENT_POST jedoch auch dafür nutzen, um einen vorerfassten Beleg zu erzeugen.

Wie man mit dem Funktionsbaustein BAPI_ACC_DOCUMENT_POST auch einen vorerfassten Beleg erzeugen kann, zeige ich Dir in diesem Artikel. Viel Spaß.

OSS-Hinweis 2092366 

Der SAP-Hinweis 2092366 beschreibt sehr gut was notwendig ist, um mit dem BAPI BAPI_ACC_DOCUMENT_POST vorerfasste Belege erzeugen zu können.

Das einzige BAPI, mit dem man einen vorerfassten oder vollständig gesicherten Beleg erfassen kann, ist BAPI_ACC_DOCUMENT_POST und der entsprechende IDOC-Typ ACC_DOCUMENT04.

Durch das Einspielen des notwendigen SupportPackages, das in dem OSS-Hinweis aufgelistet ist, wird in der Struktur BAPIACHE09 das Attribut DOC_STATUS hinzugefügt.

Durch das Einspielen des notwendigen SupportPackages, das in dem OSS-Hinweis aufgelistet ist, wird in der Struktur BAPIACHE09 das Attribut DOC_STATUS hinzugefügt.

BAPIACHE09-DOC_STATUS – Status von documentheader

Durch die SupportPackages im OSS-Hinweis 2092366 wurde das Attribut DOC_STATUS hinzugefügt. Durch das Setzen eines der folgenden Werte kann man einen entsprechenden SAP-Beleg erzeugen:

Erzeugter SAP-BelegWert von DOC_STATUS
Vorerfasster Beleg2
Vollständig gesicherter Beleg3
Gebuchter Beleg4 oder „Leer“
Vorerfasster Beleg (Nur Beträge in Transaktionswährung werden beim Buchen übertragen)A
Vollständig gesicherter Beleg (Nur Beträge in Transaktionswährung werden beim Buchen übertragen)B

Bei vorerfassten oder vollständig gesicherten Belegen muss man zusätzlich noch im Attribut BUS_ACT den Wert RFBV setzen.

Wenn man einen falschen Status beim Aufruf von BAPI_ACC_DOCUMENT_POST übergibt, erhält man eine Fehlermeldung mit der ID RW und der Nummer 637.

Hinweis: Wenn man den Status A oder B benutzen möchte, so sollte man die SAP-Hinweise 2499133 and 2688620 berücksichtigen. Dann muss man die Korrekturen in diesen SAP Hinweisen berücksichtigen.

Beispiel – Vorerfassen mit BAPI_ACC_DOCUMENT_POST

*&---------------------------------------------------------------------*
*& Report Z_MUSTER
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_muster.

*----------------------------------------------------------------------
* Datendeklaration
*----------------------------------------------------------------------

DATA: ls_documentheader TYPE bapiache09,
      ls_accountpayable TYPE bapiacap09,
      ls_currencyamount TYPE bapiaccr09,
      lt_return         TYPE bapiret2_tab.


DATA: lt_documentheader TYPE STANDARD TABLE OF bapiache09,
      lt_accountpayable TYPE STANDARD TABLE OF bapiacap09,
      lt_currencyamount TYPE STANDARD TABLE OF bapiaccr09.


*----------------------------------------------------------------------
* Zuweisungen
*----------------------------------------------------------------------

  ls_documentheader-bus_act    = 'RFBV'. "SAP Hinweis 2092366
  ls_documentheader-username   = sy-uname.
  ls_documentheader-header_txt = 'TEST'.
  ls_documentheader-comp_code  = '1000'. " TODO - Verändern
  ls_documentheader-doc_date   = sy-datum.
  ls_documentheader-trans_date = sy-datum.
  ls_documentheader-pstng_date = sy-datum.
  ls_documentheader-doc_type   = 'KR'. "TODO - Verändern
  ls_documentheader-ref_doc_no = 'TEST'.
  ls_documentheader-doc_status = '2'. "Vorerfassen - SAP Hinweis 2092366

  APPEND  ls_documentheader TO lt_documentheader.

  ls_accountpayable-itemno_acc = '0001'.
  ls_accountpayable-vendor_no  = '0000100000'. "TODO - Verändern
  ls_accountpayable-comp_code  = '1000'. "TODO - Verändern

  APPEND  ls_accountpayable TO lt_accountpayable.


  ls_currencyamount-itemno_acc = '0001'. "Accounting Document Line Item Number
  ls_currencyamount-curr_type  = '00'. "Currency Type and Valuation View
  ls_currencyamount-currency   = 'EUR'. "Currency Key
  ls_currencyamount-amt_doccur = '1000.00'. "Amount

  APPEND  ls_currencyamount TO lt_currencyamount.


*----------------------------------------------------------------------
* Aufruf von BAPI_ACC_DOCUMENT_POST -> Vorerfassten Beleg
*----------------------------------------------------------------------
  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
    EXPORTING
      documentheader = ls_documentheader
    TABLES
      accountpayable = lt_accountpayable
      currencyamount = lt_currencyamount
      return         = lt_return.

*----------------------------------------------------------------------
* Datenbank-Commit
*----------------------------------------------------------------------
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

Vorerfassten Beleg überprüfen

Es gibt mehrere Möglichkeiten wie man das Vorerfassen durch den Funktionsbaustein BAPI_ACC_DOCUMENT_POST letztlich überprüft:

  • Transaktion FBV3
  • Transaktion SE16N und Tabelle BKPF

Eine gute Möglichkeit ist direkt die Anzeige der vorerfassten Rechnungen. Im Debugger erhält man die Belegnummer in der Tabelle lt_return.

Eine gute Möglichkeit ist direkt die Anzeige der vorerfassten Rechnungen. Im Debugger erhält man die Belegnummer in der Tabelle lt_return.

Diese Belegnummer kann man einfach in der Transaktion FBV3 angeben. Wird der Beleg letztlich dort angezeigt, so weiß man, dass die Rechnung vorerfasst ist.

Diese Belegnummer kann man einfach in der Transaktion FBV3 angeben. Wird der Beleg letztlich dort angezeigt, so weiß man, dass die Rechnung vorerfasst ist.

Direkt in der Datenbanktabelle kann man mit der Transaktion SE16N nachsehen. Dazu öffnet man den Data Browser und gibt die Datenbanktabelle BKPF ein. Erneut gibt man die Belegnummer ein. Falls man diese nicht zur Hand hat, kann man den Beleg auch mit „Erfasst am“ und „Erfasst um“ das Erstellungsdatum bzw. die Erstellungsuhrzeit eingeben.

Direkt in der Datenbanktabelle kann man mit der Transaktion SE16N nachsehen. Dazu öffnet sich der Data Browser und man gibt die Datenbanktabelle BKPF ein. Erneut gibt man die Belegnummer ein. Falls man diese nicht zur Hand hat, kann man den Beleg auch mit “Erfasst am” und “Erfasst um” das Erstellungsdatum bzw. die Erstellungsuhrzeit eingeben.

Über den Autor

Andreas Geiger

Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

2 Gedanken zu „Belege mit BAPI_ACC_DOCUMENT_POST vorerfassen“

Schreibe einen Kommentar