Bestellpositionen einheitlich summieren – ABAP

In einer Rechnung kann man in der Transaktion MIRO eine Zuordnung zu mehreren Bestellpositionen ermöglichen. Dabei kann man für eine Rechnungsposition eine Bestellnummer und -position mit den zu verrechnenden Beträgen angeben. Es gibt verschiedene Anwendungsfälle, um die Bestellpositionen einheitlich zu summieren. In SAP ERP bzw. SAP S/4HANA kann man mit der Programmiersprache ABAP eigene Programme entwickeln, um die Rechnungsdaten in den Datenbanktabellen BKPF und BSEG zu verarbeiten.

In diesem Artikel stelle ich ein Beispielprogramm vor, um genau diese Anforderung umzusetzen. Man hat mehrere Rechnungspositionen zu der gleichen Bestellposition und möchte diese einheitlich summieren, um nur noch eindeutige Bestellpositionen in den Rechnungspositionen zu verwenden.

Bestellposition einheitlich summieren – Tabellen

In der Tabelle BSEG werden die Rechnungspositionen aus SAP FI-Sicht (Rechnungen ohne Bestellbezug) gespeichert. In der Tabelle RSEG werden die Rechnungspositionen aus SAP MM-Sicht (Rechnungen mit Bestellbezug) gespeichert. Hier gibt man im Feld EBELN die Bestellnummer und im Feld EBELP die Bestellposition an. In dem Feld WRBTR wird der Betrag angegeben.

In der Tabelle BKPF werden aus SAP FI-Sicht die Informationen für den Rechnungskopf gespeichert. Diese Tabelle ist für die einheitliche Summierung nicht notwendig, kann aber unter Umständen verwendet werden, um zusätzliche Informationen zu selektieren.

Bestellposition einheitlich summieren – Beispielprogramm

In diesem Beispielprogramm werden für eine Rechnungsposition die Beträge gleicher Bestellpositionen aufsummiert, sodass eine Bestellposition in einer Rechnung nur einmal verwendet wird. Bei dieser einheitlichen Summierung wird lediglich der Betrag (WRBTR) verwendet. Bei Bedarf können weitere Felder verwendet werden.

Außerdem verwende ich in diesem Beispiel die Tabelle BSEG. Im Rahmen der Logistik-Rechnungsprüfung kannst Du zusätzlich hinaus noch die Tabelle RSEG verwenden.

**********************************************************************
*** Datendeklaration
**********************************************************************

DATA:
  lt_bseg         TYPE TABLE OF bseg,
  lv_count        TYPE i,
  lv_index        TYPE i,
  ls_bseg_reduced TYPE bseg,
  lt_bseg_reduced TYPE TABLE OF bseg.

FIELD-SYMBOLS: <fs_bseg> TYPE bseg.

**********************************************************************
*** Rechnungsdaten holen - BSEG
*** Selektion kann nach eigenen Bedürfnissen angepasst werden
**********************************************************************
SELECT * FROM bseg INTO TABLE lt_bseg
  WHERE  bukrs = '1000'
  AND    belnr = '5105601234'
  AND    gjahr = '2022'.

**********************************************************************
*** Positionen vorsortieren für passende Reduzierung
**********************************************************************
SORT lt_bseg ASCENDING BY ebeln ebelp.

CLEAR: lv_count, lv_index.
lv_count = lines( lt_bseg ).
LOOP AT lt_bseg ASSIGNING <fs_bseg>.
  lv_index = lv_index + 1.

  IF <fs_bseg>-ebeln = ls_bseg_reduced-ebeln AND
    <fs_bseg>-ebelp = ls_bseg_reduced-ebelp.
    ls_bseg_reduced-wrbtr = ls_bseg_reduced-wrbtr + <fs_bseg>-wrbtr.
  ELSE.
    IF ls_bseg_reduced IS NOT INITIAL.
      APPEND ls_bseg_reduced TO lt_bseg_reduced.
    ENDIF.

    ls_bseg_reduced = <fs_bseg>.
  ENDIF.

  " last line
  IF lv_count = lv_index.
    APPEND ls_bseg_reduced TO lt_bseg_reduced.
  ENDIF.
ENDLOOP.

Ü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 „Bestellpositionen einheitlich summieren – ABAP“

  1. Hi Andreas,
    wenn man aus FI-Sicht auf Rechnungsbelege schauen möchte ist BSEG ok, aber dort ist auch jede Menge anderes Zeug drin. Beim Thema Eingangsrechnungen würde ich zuerst einen Blick in die RSEG werfen.

    Vielen Dank für deinen nützlichen Content
    und in 2023 bitte genauso weitermachen.
    Gruß Dietmar

    Antworten
    • Hi Dietmar,
      vielen Dank für Deinen Kommentar. Das stimm natürlich absolut. Ich habe das im Artikel noch einmal ausführlicher und klarer dargestellt.

      Es freut mich sehr, dass Dir mein Content gefällt. Ich gebe mir sehr Mühe, auch weiterhin guten Content zu liefern.
      Viele Grüße
      Andreas

      Antworten

Schreibe einen Kommentar