Materialflussmatrix aus ERP-Daten

Titelbild

Wenn Materialflüsse dargestellt werden sollen, wird immer eine Materialflussmatrix benötigt. Die Daten dafür kommen heute meistens aus einem ERP-System. Wie Sie die richtigen Daten finden und aufbereiten, erfahren Sie in diesem Artikel.

Wenn Sie keine IT-Abteilungen haben, die Ihnen eine Materialflussmatrix erstellen kann, können Sie das nach Lesen dieses Artikels auch selber anpacken. Als Software verwende ich dafür Microsoft Access, da in der Regel hier große Datenmengen verarbeitet werden.

Definition und Ausprägungen

Eine Materialflussmatrix wird im Rahmen einer Materialflussanalyse erstellt. Sie betrachtet die Beziehungen zwischen zwei Arbeitsplätzen und stellt die Bewegungen VON einem Arbeitsplatz NACH dem folgenden Arbeitsplatz dar. Deshalb nennt man sie auch Von-Nach-Matrix, Von-Nach-Tabelle oder Transportfluss-Matrix.

Je nachdem welches Feld im Kreuzungspunkt der Matrix beschrieben wird, gibt es verschiedene Ausprägungen:

  • Materialflussmatrix
    • Quantitativ: Summe der Bedarfe von Bauteilen (z. B. 300 Stk pro Jahr)
    • Qualitativ: Transportbeziehung zwischen 2 Arbeitsplätzen (auch ohne Bedarf)
  • Transportmatrix
    Summe der Transportanzahlen (z. B. 50 Transporte pro Tag)
  • Entfernungsmatrix
    Summe der Transportwege (z. B. 300 km pro Jahr)
  • Transportintensitätsmatrix
    Summe der Transportanzahlen und Transportwege
Materialflussmatrix
Qualitative und quantitative Materialflussmatrix

Je nachdem wo aber Ihre Schwerpunkte liegen, können Sie sich auch Ihre eigenen Matrizen definieren. Das kann beispielsweise eine Gewichtsmatrix aus Transportgewichten sein, um zu ermitteln, wo manuell per Mitarbeiter oder besser mit einem Gabelstapler transportiert werden sollte. Sie können auch Ihre Herstellkosten oder Deckungsbeiträge in der Matrix berechnen, um Ihre Kostenflüsse darzustellen.

Datenquellen und Beziehungen

Verfügen Sie über ein ERP-System müssen Daten aus verschiedenen Tabellen zusammengestellt werden. Je nach ERP-System gibt es hier unterschiedliche Ausführungen. Im Wesentlichen sind sie aber alle ähnlich aufgebaut.

Grundlage für die Matrix ist die Beziehung VON einem Arbeitsplatz NACH einem Arbeitsplatz. Für Produkte, die ein Unternehmen selber herstellt, werden diese Informationen üblicherweise in einem Arbeitsplan gespeichert. Eine Arbeitsplan-Tabelle besteht i. d. R. aus 2 Tabellen, einer Kopftabelle und einer Tabelle der Arbeitsfolgen.

Mit diesen Arbeitsfolgen lässt sich zumindest für die Herstellung Ihres Produkts eine genaue Materialflussmatrix erstellen. Hier steht pro Produkt in einer Tabelle die Herstellungsreihenfolge und die erforderlichen Arbeitsplätze dazu.

Notwendige Tabellen-Felder aus den »Arbeitsplänen/-folgen«:

  • Artikelnummer des Produkts
  • Arbeitsreihenfolge (1,2,3 oder 10,20,30)
  • Arbeitsplatz (Id des Arbeitsplatzes)
  • weitere Daten wie Rüstzeit tr oder Einsatzzeit te (min)

Informationen zu einem Artikel werden in der Artikelstamm-Tabelle gespeichert. Für die Matrizen werden z. B. die Transportmenge pro Warenträger (z. B. 100 Stk/Palette) oder das Gewicht benötigt.

Notwendige Tabellen-Felder aus dem »Artikelstamm«:

  • Artikelnummer
  • Bezeichnung
  • Gewicht (kg/Stk)
  • Menge pro Warenträger (Stk)

Mit diesen Informationen könnten wir bereits eine qualitative Materialflussmatrix erstellen. Für alle weiteren Formen, brauchen wir Daten zu den Bedarfen der einzelnen Artikel. Je nach Ihrer Interessenslage können sich diese auf die Zukunft (geplante Bedarfe) oder Vergangenheit (ausgeführte Produktionsaufträge) beziehen.

Notwendige Tabellen-Feder aus »Bedarfe«:

  • Artikelnummer
  • Jahresbedarf (Stk/Jahr)

Die drei Tabellen stehen durch die Artikelnummer miteinander in Beziehung. Als Ergebnis dieser Verbindungen wird die Von-Nach-Matrix erstellt. Die Tabelle enthält einen Von-Arbeitsplatz, einen Nach-Arbeitsplatz und entsprechende Ergebnisfelder für die verschiedenen Matrizen.

In diesem Beispiel werden der Jahresbedarf, die Transportanzahlen und die Transportgewichte zwischen diesen beiden Arbeitsplätzen berechnet.

Tabellen
Datenquellen und Ergebnistabelle

Realisierung mit Microsoft Access

Die Realisierung erfolgt in diesem Beispiel mit Microsoft Access. Mit Access gibt es mehrere Möglichkeiten die Daten für die Materialflussmatrix zu erstellen. Ich zeige hier eine kombinierte Variante aus SQL (Abfragen) und eigenen Visual Basic Funktionen.

Um als Ergebnis eine Materialflussmatrix zu erhalten, sind mehrere Schritte notwendig:Vorbereitungen

  1. Vorbereitungen
  2. Umformen und Erweitern der Arbeitsplandaten
  3. Einfügen von Start-Arbeitsplätzen
  4. Erzeugen der Materialflussmatrizen

Am Ende des Artikels haben Sie unter Downloads die Möglichkeit, eine Beispieldatenbank herunterzuladen und diese Schritte selber auszuprobieren.

Schritt 1: Vorbereitungen

Im ersten Schritt werden die Ausgangstabellen Arbeitspläne, Artikel und Bedarfe über eine Abfrage miteinander verknüpft. In der Entwurfsansicht stellt Access die Beziehungen grafisch dar.

Tabelle Vorbereitung
Entwurfsansicht der Tabelle Vorbereitung

Die Verbindung erfolgt natürlich über die Artikelnummer. Da ggf. nicht jeder Artikel einen Bedarf hat, wird die Verbindung zwischen Artikel und Bedarfe als LEFT JOIN definiert. Deshalb erhalten Sie auch die Daten für eine qualitative Materialflussmatrix, die aktuell keinen Bedarf haben.

Die größte Schwierigkeit ist die Ermittlung des NACHfolgenden Arbeitsplatzes. Das kann nicht direkt mit SQL unter Access ermittelt werden. Wenn Sie einen Microsoft SQL Server nutzen, können Sie direkt die Funktion LEAD verwenden.

Aber Access bietet die Möglichkeit an, eigene Funktion über Visual Basic zu implementieren. Eine Funktion, um den Nachfolgearbeitsplatz zu ermitteln, könnte z. B. so aussehen:

Function Nachfolger(Artikel As String, Afo As Long) As String
Dim result As String
Dim rs As Recordset

  Set rs = CurrentDb.OpenRecordset("SELECT * FROM Arbeitspläne WHERE Artikel='" & artikel & "' ORDER BY Arbeitsreihenfolge")
  rs.MoveFirst
  result = ""
  Do Until rs.EOF
    If rs("Arbeitsreihenfolge") = Afo Then
      rs.MoveNext
      If rs.EOF = False Then
        result = rs("Arbeitsplatz")
        rs.Close
        Nachfolger = result
        Exit Function
      Else
        rs.Close
        Nachfolger = "@ENDE"
        Exit Function
      End If
    End If
    rs.MoveNext
  Loop
  rs.Close
  Nachfolger = result
End Function

Die Funktion muss mit zwei Parametern aufgerufen werden. Als ersten Parameter wird die Artikelnummer und als zweiten die aktuelle Reihenfolgeposition angegeben. Die Funktion führt eine SQL-Abfrage aus und ermittelt alle Arbeitsfolgen des Artikels. Die Arbeitsfolgen werden aufsteigend sortiert. Dann wird jede einzelne Zeile durchlaufen bis die Reihenfolgeposition der Zeile mit dem übergebenen Parameter der Reihenfolgeposition übereinstimmt. Zur Ermittlung des nachfolgenden Arbeitsplatzes wird nochmals einen Datensatz weitergesprungen (rs.MoveNext). Das liefert dann das gewünschte Ergebnis.

Beispiel: Nachfolger(„1002“,20)

→ ergibt den Arbeitsplatz des Artikels 1002 nach der Reihenfolgeposition 20

Die Funktion enthält bereits eine Erweiterung für eine zusätzliche Funktion. Gibt es keinen Folgearbeitsplatz mehr (rs.EOF=True), wird als Ergebnis der Text @ENDE zurückgeliefert. Damit haben Sie eine weitere Information für Ihre Auswertungen. Sie erkennen dadurch die Arbeitsplätze, an denen Produkte fertiggestellt werden.

Angewendet wird die Funktion direkt in der Abfrage als eigenes Ausgabefeld.

SELECT Arbeitspläne.Artikel, Arbeitspläne.Arbeitsreihenfolge, 
  Arbeitspläne.Arbeitsplatz, Bedarfe.Jahresbedarf, 
  Artikel.TeileAufWarenträger, Artikel.Gewicht, 
  Nachfolger(Arbeitspläne.Artikel,Arbeitspläne.[Arbeitsreihenfolge]) AS Nach, 
  Bedarfe.Jahresbedarf/Artikel.TeileAufWarenträger AS Transporte, 
  Bedarfe.Jahresbedarf*Artikel.Gewicht AS TransportGewicht
FROM (Arbeitspläne INNER JOIN Artikel ON Arbeitspläne.Artikel=Artikel.Artikel) 
LEFT JOIN Bedarfe ON Arbeitspläne.Artikel = Bedarfe.Artikel
ORDER BY Arbeitspläne.Artikel, Arbeitspläne.Arbeitsreihenfolge;

Abfrage: Vorbereitung

Führen Sie die Abfrage aus, liefert Access ein Ergebnis in dieser Form:

Tabellenansicht
Ergebnis der Tabelle Vorbereitung

Der Nachteil dieser Eigenprogrammierung ist, dass das bei großen Datenmengen lange dauern kann. Seien Sie deshalb hier ggf. geduldig, auch wenn Access scheinbar nicht mehr reagiert. Wenn Sie wissen möchten, was gerade passiert, erweitern Sie am besten die Funktion, um eine Ausgabe im Visual Basic Direktbereich.

  ...
  Nachfolger = result
  Debug.Print artikel, Afo, result
End Function

Schritt 2: Umformen und Erweitern der Arbeitsplandaten

In der obigen Tabelle können gleiche Von-Nach-Folgen pro Artikel vorkommen. Allerdings passen die Feldnamen noch nicht. In diesem Schritt ändern wir das. Das Zusammenfassen erfolgt über eine Gruppierung (GROUP BY in SQL). Gleichzeitig werden auch die Feldnamen richtiggestellt. Als Abfragetyp wird aber nicht eine Auswahl-Abfrage, sondern eine Tabellen-Erstellungsabfrage benutzt. Damit wird direkt eine neue Tabelle mit dem Inhalt der Abfrage erstellt.

Entwurfsansicht
Tabellen-Erstellungsabfrage: Export-1 Von_Nach erstellen

Als SQL sieht die Abfrage so aus:

SELECT Vorbereitung.Arbeitsplatz AS Von, Vorbereitung.Nach, 
  Sum(Vorbereitung.Jahresbedarf) AS Jahresbedarf, 
  Sum(Vorbereitung.Transporte) AS Transporte, 
  Sum(Vorbereitung.TransportGewicht) AS TransportGewicht 
INTO Von_Nach
FROM Vorbereitung
GROUP BY Vorbereitung.Arbeitsplatz, Vorbereitung.Nach;

Abfrage: Export-1 Von_Nach erstellen

Mit dem Befehl INTO wird die Ergebnis-Tabelle in eine neue Tabelle Von_Nach geschrieben.

Schritt 3: Einfügen von Start-Arbeitsplätzen

Im vorherigen Abschnitt wurden über die Funktion Nachfolger() Datensätze eingefügt, die das Ende von Abläufen anzeigen (Text @ENDE). Um auch den Start von Arbeitsfolgen zu erkennen, wird noch das Gegenstück dazu – der Prozess-Start – eingefügt.

Mit Access benötigen Sie dafür mehrere Abfragen. Als erstes liefert eine Abfrage die jeweils kleinste Arbeitsreihenfolge pro Artikel. Das erfolgt in SQL über die Funktion MIN() mit einer Gruppierung nach Artikel.

SELECT Artikel, MIN(Arbeitsreihenfolge) AS MinvonArbeitsreihenfolge
FROM Arbeitspläne
GROUP BY Artikel;

Abfrage: Arbeitspläne_MinArbeitsreihenfolge

Diese Abfrage wird dann wieder mit der vorher erstellten Abfrage Vorbereitungen verknüpft. Es entsteht eine Ergebnistabelle mit den Start-Arbeitsplätzen.

Entwurfsansicht
Abfrage: Export-2 Startarbeitsplätze anfügen

Im nächsten Schritt, einer Anfüge-Abfrage, werden alle Abfragen verknüpft, gruppiert und in die Tabelle Von_Nach eingefügt.

Das erfolgt über dieses SQL-Statement:

INSERT INTO Von_Nach ( Von, Nach, Jahresbedarf, Transporte, TransportGewicht )
SELECT "@START" AS Von, Startabteilungen.Arbeitsplatz, 
  Sum(Startabteilungen.Jahresbedarf) AS Jahresbedarf, 
  Sum(Startabteilungen.Transporte) AS Transporte, 
  Sum(Startabteilungen.TransportGewicht) AS TransportGewicht
FROM Startabteilungen
GROUP BY "@START", Startabteilungen.Arbeitsplatz;

Abfrage: Export-2 Startarbeitsplätze anfügen

Damit sind alle notwendigen Daten in der Von_Nach Tabelle eingetragen.

Schritt 4: Erzeugen der Materialflussmatrizen

Das Erzeugen einer Materialflussmatrix ist mit den jetzt vorhandenen Daten sehr einfach. Dafür brauchen Sie nur eine Kreuztabelle. Sie müssen nur entscheiden, welches Feld Sie am Kreuzungspunkt zwischen den Feldern Von und Nach berechnen möchten.

Das SQL-Statement für die Materialflussmatrix auf Basis des Jahresbedarfs sieht so aus:

TRANSFORM Sum(Von_Nach.Jahresbedarf) AS SummevonJahresbedarf
SELECT Von_Nach.Von, Sum(Von_Nach.Jahresbedarf) AS [Gesamtsumme von Jahresbedarf]
FROM Von_Nach
GROUP BY Von_Nach.Von
PIVOT Von_Nach.Nach;

Abfrage: Materialflussmatrix_Jahresbedarf

Das Ergebnis in Tabellenform ist damit schon genauso, wie wir uns das wünschen. In der markierten Zeile im Beispiel bedeutet dies, dass von Arbeitsplatz D1 310 Stk pro Jahr nach Arbeitsplatz B1 fließen.

Tabelle
Ergebnistabelle: Materialflussmatrix_Jahresbedarf

Soll ein anderes Feld am Kreuzungspunkt berechnet werden, müssen nur die entsprechenden Stellen in der Abfrage auf das neue Feld angepasst werden.

Soll aber eine qualitative Materialflussmatrix erstellt werden, funktioniert das mit den bisher ermittelten Feldern leider nicht. Hat ein Artikel keinen Bedarf, fehlen alle Daten in dieser in der Auswertung. Genau diese Verbindung soll aber in der qualitativen Materialflussmatrix angezeigt werden. Um das zu lösen, wird in einer Abfrage die Tabelle Von_Nach mit einem zusätzlichen Feld mit der Zahl 1 erweitert. Eins bedeutet in diesem Fall, dass es eine zählbare Verbindung zwischen zwei Arbeitsplätzen gibt.

Als Abfrage sieht das so aus:

SELECT Von_Nach.Von, Von_Nach.Nach, 1 AS Qualitativ
FROM Von_Nach
GROUP BY Von_Nach.Von, Von_Nach.Nach, 1;

Abfrage: Von_Nach_Qualitativ

In der Ergebnistabelle sind jetzt alle Verbindungen unabhängig von den Bedarfen enthalten.

Tabelle
Ergebnistabelle: Materialflussmatrix_Qualitativ

Zusammenfassung

Jetzt stehen Ihnen Materialflussmatrizen in verschiedenen Ausprägungen für Ihre Analysen und Optimierungen zur Verfügung. Als entscheidenden Vorteil lassen sich nun die Quell-Tabellen jederzeit neu aus Ihrem ERP-System einfügen und aktualisieren.

Je nachdem wo Sie Ihre Optimierung ansetzen möchten, können Sie über eine einfache Anpassung der Abfrage Vorbereitung sehr einfach ganz bestimmte Materialflussmatrizen erzeugen.

Möchten Sie nur die Transportflüsse aller Artikel mit der Bezeichnung „Welle“ sehen, reicht ein einfacher Filter.

Es sollen nur die Materialflüsse der schwersten Bauteile dargestellt werden? Sie möchten nur Artikel mit den kleinsten Jahresbedarfen analysieren?

In Zukunft ist das kein Problem mehr für Sie. Sie setzen die entsprechenden Filter in der Abfrage Vorbereitung und erzeugen sich eine neue Von-Nach-Tabelle.

Viel Spaß beim Optimieren!

Download

symbol_download

Beispieldatenbank Materialflussmatrix.accdb mit allen Abfragen und Visual Basic Modul

Links und Verweise

Dieser Beitrag hat 6 Kommentare

Kommentar verfassen