Alexander Lukas
 - 30. März 2020

Folgeaufträge in Auftragstabellen finden & per Funktionsbaustein auslesen [Howto]

Kennen Sie schon die Möglichkeit, Ihre Instandhaltungsaufträge als Folgeaufträge anzulegen? Mit diesem praktischen Feature können Sie aufeinander aufbauende Aufträge im SAP einfach kennzeichnen. Wie aber sieht das benötigte ABAP-Coding aus, um diese Beziehung auszulesen? Im folgenden Artikel zeige ich Ihnen, in welchen Tabellen die Relation der Folgeaufträge gespeichert wird und mit welchen Funktionsbausteinen Sie diese auslesen können.

Einführung: Folgeaufträge anlegen

Falls Sie bisher noch keine Folgeaufträge genutzt haben, möchte ich Ihnen kurz zeigen, wie Sie diese anlegen und einsehen können. Die Voraussetzung ist dabei, dass bei Ihnen die Business Function Enterprise Asset Management 7 im SAP-System aktiv ist. Ob das der Fall ist, können Sie beispielsweise in der Transaktion SFW5 einsehen – dort hat die Business Function die Bezeichnung LOG_EAM_CI_7.

Wenn die Funktion aktiv ist, sollten Sie beim Öffnen der IW31 etwa das folgende Bild sehen:

Auftrag anlegen: Einstieg

Um den neu anzulegenden Auftrag als Folgeauftrag zu kennzeichnen, setzen Sie den Haken bei „Folgeauftrag anlegen“ und geben die Auftrags- und Vorgangsnummer des Vorgängerauftrags ein. Sobald Sie den neu angelegten Auftrag in der IW33 öffnen, können Sie Folgeeinträge einsehen, indem Sie im Menü Zusätze > Belege zum Auftrag > Belegfluss auswählen. Wenn der Belegfluss geöffnet ist, klicken Sie direkt unter „Belegfluss anzeigen“ auf Folgeaufträge und Sie sehen folgendes Bild:

Vorgänger-/Folgeauftrag von 60000000

Diese Ansicht visualisiert die Beziehung zwischen Vorgänger- und Folgeauftrag hierarchisch.

So sind die Tabellen aufgebaut

Nun stellt sich jedoch die Frage, wie die Beziehung zwischen Vorgänger- und Folgeauftrag im SAP-System intern gespeichert wird. Die üblichen Tabellen für Aufträge und Vorgänge wie AFKO (Auftragsköpfe) und AFVC (Auftragsvorgänge) enthalten keine Felder für diese Beziehung. Stattdessen ist die Information in zwei weiteren Tabellen gespeichert:

SRRELROLES   Zuordnung von Rollen zu Aufträgen und Vorgängen
SMZB_BINREL   Binäre Relation zwischen zwei Rollen

Im Folgenden demonstriere ich Ihnen den Aufbau der Tabellen und ihre Nutzung an einem Beispiel. Angenommen, Sie kennen die Auftragsnummer Ihres Folgeauftrags und möchten den Vorgängerauftrag dazu in der Datenbank finden. Dazu können Sie beispielweise die Tabellenanzeige SE16N nutzen.

Unser E-Book zur Instandhaltung mit SAP PM/EAM

E-Book: Instandhaltung mit SAP PM/EAM

Das Instandhaltungsmodul der SAP PM hilft Ihnen dabei, strategisch wichtige Entscheidungen vorzubereiten, die das Überleben Ihres Unternehmens sichern.

Als Tabelle geben Sie zunächst SRRELROLES an und bestätigen. Im Auswahldialog geben Sie nun als Schlüssel die Auftragsnummer an (dabei sind entweder führende Nullen zu berücksichtigen oder ein * vor der Auftragsnummer anzugeben) sowie den Objekttyp BUS2007 für Aufträge und den Rollentyp NACHFOLGER. Der ausgefüllte Dialog sollte wie folgt aussehen:

Allgemeine Tabellenanzeige

Das Suchergebnis zeigt Ihnen nun neben der bereits bekannten Rollenart – es handelt sich um einen Folgeauftrag – auch die GUID dieser Rolle und den Zeitstempel der Anlagezeit an:

SRRELROLES: Anzeige der gefundenen Einträge

Mithilfe dieser GUID können Sie nun in der Tabelle SMZB_BINREL nach der Relation suchen, welche dem Folgeauftrag zugeordnet ist. Dazu nutzen Sie wieder die SE16N und tragen die gefundene GUID im 2. Feld „Rollen-GUID“ mit dem technischen Namen ROLE_B ein. Das Suchergebnis sollte etwa wie folgt aussehen:

SMZB_BINREL: Anzeige der gefundenen Einträge

Der angezeigte Tabelleneintrag enthält die GUID für beide Rollen sowie die GUID der Verknüpfung, den Zeitstempel und den Typen (FWUP für Follow-Up, also Nachfolge). Mithilfe der linken GUID können Sie nun wieder in der Tabelle SRRELROLES nach der Rollenzuordnung des Vorgängers suchen, und erhalten folgendes Ergebnis:

SRRELROLES nach der Rollenzuordnung

Diesmal ist der Rollentyp VORGAENGER statt NACHFOLGER und der Objekttyp AFVC_PM – dieser Typ bezeichnet Auftragsvorgänge. Der Schlüssel dieses Eintrags ist nicht die Auftragsnummer, sondern setzt sich aus zwei Komponenten zusammen. Die ersten 10 Ziffern beinhalten den Schlüssel der Plannummer von Vorgängen und die letzten 8 Ziffern den sogenannten allgemeinen Zähler des Auftrags. Diese entsprechen damit genau den beiden Schlüsselkomponenten AUFPL und APLZL der Tabelle für Auftragsvorgänge AFVC. Damit können Sie nun in der SE16N nach dem Auftragsvorgang suchen:

Allgemeine Tabellenanzeige

So sieht das Ergebnis aus

AFVC: Anzeige der gefundenen Einträge

Eine mögliche SQL-Query, um mithilfe einer gegebenen Auftragsnummer gv_aufnr den dazugehörigen Vorgängerauftrag zu finden, ist etwa Folgende:

SELECT substring( role_left~objkey, 1, 10 ) as aufpl, 
substring( role_left~objkey, 11, 4 ) as aplzl
 FROM SRRELROLES as role_right
 INNER JOIN smzb_binrel as rel
  ON role_right~roleid = rel~role_b
  AND rel~breltyp = 'FWUP'
 INNER JOIN srrelroles as role_left
  ON role_left~roleid = rel~role_a
 INNER JOIN afvc as oper_left
  ON oper_left~aufpl = substring( role_left~objkey, 1, 10 )
 WHERE role_right~objkey = @gv_aufnr
  AND role_right~objtype = 'BUS2007' 
  AND role_left~objtype = 'AFVC_PM'
 INTO TABLE @DATA(lt_result).

Nutzen Sie den Funktionsbaustein SREL_GET_NEXT_RELATIONS

Einfacher als mit einer SQL-Query können Sie jedoch einen Vorgängerauftrag mit dem von der SAP bereitgestellten Funktionsbaustein SREL_GET_NEXT_RELATIONS erstellen. Der einzige Pflichtparameter, den Sie angeben müssen, heißt OBJECT und hat den Typen BORIDENT – eine Struktur, die den Objektschlüssel (also die Auftragsnummer) und den Objekttypen BUS2007 enthält. Zusätzlich sollten Sie als Parameter RELATIONTYPE noch FWUP angeben, um nur Rollen und Relationen für die gewünschte Beziehung des Vorgänger- und Nachfolgerauftrags zu erhalten. Den Funktionsbaustein können Sie in der SE37 testen. Um die Rollen und Relationen zu suchen, die wir oben mithilfe der Tabellen gefunden haben, sieht das Eingabebild zum Beispiel wie folgt aus:

Funktionsbaustein testen: Eingabebild

Als Ausgabe erhalten wir zwei interne Tabellen, die die oben gefundenen Rollen und Relationen beinhalten:

Struktureditor Anzeigen LINKS ab Eintrag

Struktureditor: Anzeigen ROLES ab Eintrag

Die Nutzung dieses Funktionsbausteins macht es also sehr einfach, Vorgänger- und Nachfolgeaufträge zu finden. Mithilfe des Parameters MAX_HOPS können Sie außerdem die Anzahl an Suchschritten einstellen und so mehrstufige Hierarchien von Vorgänger- und Nachfolgebeziehungen auslesen.

Noch Fragen?

Haben Sie noch Probleme bei der Erstellung von Folgeaufträgen oder haben Sie noch weitere Fragen? Melden Sie sich gerne bei mir!



Das könnte Sie auch interessieren


Ein Kommentar zu "Folgeaufträge in Auftragstabellen finden & per Funktionsbaustein auslesen [Howto]"

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Angebot anfordern
Preisliste herunterladen
Expert Session
Support