Skip to main content
Skip table of contents

Parametergruppe WKBauGrp


Parametergruppe WKBauGrp

Diese Parametergruppe enthält die Struktur einer Baugruppe für jeweils eine Position. Sie wird daher immer als Feld verwendet. Die Reihenfolge der Positionen in diesem Feld entspricht der Reihenfolge im Warenkorb, Unterpositionen folgen direkt ihrer übergeordneten Position.

Die Anzahl der Positionen wird i.d.R. indirekt in einer Zeichenkette, die den Namen eines globalen Ganzzahl-Parameters enthält, übergeben. Dieser Ganzzahl-Parameter enthält dann wiederum die Positionsanzahl.

Zusätzlich zu dieser Parametergruppe werden weitere Felder mit folgenden Daten benötigt:

  • Materialdaten (aus der Tabelle V_Warenpos); ein Zeichenketten-Feld, das die Namen von Parametergruppen enthält

  • Merkmalsdaten. Je nachdem, ob je Position eine oder mehrere Parametergruppen benötigt werden, kann eine der folgenden Alternativen gewählt werden:

  • eine Zeichenkette mit dem Namen eines Feldes der Merkmals-Parametergruppen (ohne Index), z.B. "Konditionen". Die Merkmale stehen dann in den Parametergruppen Konditionen[1], Konditionen[2], usw.

  • eine Zeichenkette mit dem Namen eines Zeichenketten-Feldes, dessen Elemente die Namen der Merkmals-Parametergruppen sind. Damit alle Baugruppen-Positionen dargestellt werden können, müssen die Merkmals-Parametergruppen wiederum indiziert sein, z.B.:

MerkmalPG = ’MerkmalListe’

MerkmalListe[1] = ’Konditionen’

MerkmalListe[2] = ’Leistungsdaten’

f$Leer(’MerkmalListe[3]’)

Die Merkmale selbst stehen dann in den Parametergruppen Konditionen[1] und Leistungsdaten[1], Konditionen[2] und Leistungsdaten[2] usw. Der Index in den Merkmals-Parametergruppen gibt also die Position wieder.

·die Namen der Merkmals-Parametergruppen in der Datenbank. Die Belegung muss exakt der Belegung der Merkmalsdaten entsprechen - nur mit den Parametergruppen-Namen in der Datenbank.

Die Parameter eines Elementes aus WKBauGrp stellen „Zeiger" auf die zu dieser Position gehörenden Daten aus den angegebenen Feldern dar.

Die Definition der Parametergruppen für die Material- und Stücklistendaten kann frei in der Anwendung getroffen werden. Die Übernahme der gewünschten Felder kann am einfachsten über die ePOS Menüfunktion „Datei - Import - ODBC Tabelle" durchgeführt werden.

Diese Parametergruppe wird von der Funktionen p$TDV:SMPAPI:L_WbauGr verwendet.

Die Parametergruppe ist in der Verbundgruppe TDV definiert und enthält folgende Parameter:

Parameter

Datentyp

Index

Bedeutung

MaterialIndex

Ganzzahl

-

Index zur Bestimmung der Materialdaten-PG

StlIndex

Ganzzahl

-

Index zur Bestimmung der Stücklisten-PG

MerkIndex

Ganzzahl

-

Index zur Bestimmung der Merkmale

UposIndex

Ganzzahl

-

Index der Unterposition (Index der PG diesen Typs)

ÜposIndex

Ganzzahl

-

Index der übergeordneten Position (Index der PG diesen Typs)

Stufe

Ganzzahl

-

Positionsstufe (relativ zur obersten gewünschten Position, beginnend mit1)

Bitte beachten:

Die Feldposition einer Unterliste (gesamt) ist über die Parameter UPosIndex und ÜPosIndex prinzipiell frei einstellbar, sollte jedoch immer der Reihenfolge der Anzeige im Warenkorb entsprechen. Die Positionen einer Stufe jedoch sind immer durch die Reihenfolge im Feld gegeben!

Die hier angegebenen Indizes beinhalten i.d.R. den Index der Parametergruppe selbst. Dies wird an folgendem Beispiel deutlich:

Beispiel 1: Lesen einer Baugruppe

Gegeben sei folgende Baugruppe:

Positions-
nummer

Benennung

Gespeicherte Merkmale

1

Pumpen-Baugruppe

Konditionen, Leistungsdaten

1.1

Pumpe

Leistungsdaten

1.2

Motor

Leistungsdaten

1.2.1

Spritzschutz

Leistungsdaten

1.3

Flansch

Leistungsdaten


Diese Struktur kann wie folgt ausgelesen werden:

1

Definition der benötigten Parametergruppen:

BGR (Typ WKBauGrp) für die Baugruppenstruktur
MDat mit Daten aus V_Warenpos
Merkmalsdaten (s.u.)

2

Zusammenstellen der zu lesenden Merkmale.

Da die Merkmals-Parametergruppen in Feldern gespeichert werden, die Merkmale jedoch nicht indiziert sind und in ePOS eine Feld-PG und eine einfache PG nicht gleich heißen dürfen, ist ein separater Datenbankname anzugeben:

Merkmale[1] = ’KondFeld’
Merkmale[2] = ’LeistFeld’
f$Leer( ’Merkmale[3]’ )

DBMerkmale[1] = ’Konditionen’
DBMerkmale[2] = ’Leistungsdaten’
f$Leer( ’DBMerkmale[3]’ )

3

Lesen der Struktur (mit der Baugruppe selbst):

Status = p$TDV:SMPAPI:L_WBauGr( Auftrag.ObjektID, ’BGR’, ’MDat’, ’StlDat’, ’Merkmale’, ’DBMerkmale’, ’AnzPos’, 1 )

àAnzpos = 5 (entspr. obiger Liste, die Kopfdaten wurden mitgelesen)


Nach dem Lesen dieser Struktur enthält das Feld BGR folgende Daten (ungültige Werte, wie z.B. die Oberposition der Kopfposition (ÜPosIndex der Pos. 1) werden durch „0" angezeigt):

Index (1)

ent-spricht Position (2)

MaterialIndex, StlIndex (3)

UposIndex (1)

ÜPosIndex (1)

MerkIndex (4)

Stufe

1

(1)

1

2

0

1

1

2

(1.1)

2

0

1

2

2

3

(1.2)

3

4

1

3

2

4

(1.2.1)

4

0

3

4

3

5

(1.3)

5

0

1

5

2


Anmerkungen:

(1) Index in Feld BGR

(2) diese Angabe kommt nicht aus BGR. Sie dient der leichteren Lesbarkeit der Tabelle

(3) Index in Feld MDat bzw. StlDat

(4) Index in Feld KondFeld bzw. LeistFeld

Tip:

Zur Vereinfachung kann davon ausgegangen werden, dass die Inhalte der Felder MaterialIndex, StlIndex und MerkIndex nach Anwendung der Funktion p$TDV:SMPAPI:L_WBauGr immer mit einem identischen Wert gefüllt sind, und zwar - wie oben angegeben - mit dem Feldindex des Feldes BGR.

Erklärung am Beispiel des Motors (BGR[3], da die 3. Position obiger Liste):

Parameter

Wert (s.o.)

Bedeutung

MaterialIndex

3

wie aktueller Index in BGR (jede Pos. hat Materialdaten)

StlIndex

3

wie aktuelle Index in BGR (jede Pos. hat Stl-Daten)

UposIndex

4

die Position hat eine Unterposition in BGR[4]

ÜposIndex

1

die Oberposition ist der Baugruppenkopf (in BGR[1])

MerkIndex

3

wie aktueller Index in BGR (jede Position hat einen Merkmals-Index)

Stufe

2

die Position selbst ist auf Stufe 2


Die Merkmals-Parametergruppen sind wie folgt (aus der entsprechenden Position) gefüllt:

Index = MerkIndex

entspricht Position

PG KondFeld[i]

PG LeistFeld[i]

1

1

belegt

belegt

2

1.1

LEER

belegt

3

1.2

LEER

belegt

4

1.2.1

LEER

belegt

5

1.3

LEER

belegt


Beispielhaft soll nun das Ändern dieser Daten gezeigt werden.

Beispiel 2: Gewähren eines Rabattes auf alle Baugruppenpositionen

Setzen eines Sonderrabattes aller gelesenen Positionen vom Typ „Option" auf 5%. Es werden die Daten aus Beispiel 1 verwendet.

Zunächst müssen in einer Schleife alle Optionen gefunden werden. Dazu braucht die Struktur der Baugruppe nicht analysiert zu werden. Weiterhin kann die o.a. Eigenschaft verwendet werden, dass für alle Positionen

BGR[i].MaterialIndex = BGR[i].StlIndex = BGR[i].MerkIndex = i

ist.

Bei einer Option haben die Parameter MaterialVKEbene der Materialdaten den Wert 2 sowie MaterialVKTyp den Wert 2.

Der Sonderrabatt soll im Beispiel in dem Parameter Konditonen.SondRabatt stehen. Dann ergibt sich folgende Entscheidungstabelle (der Index-Parameter i sei vor dem Aufruf mit 1 initialisiert worden):

ET "Rabatt":



R 01

R 02

SONST

B 01

i <= AnzPos

J

j


B 02

Mdat[i].MaterialVKEbene

2



B 03

MDat[i].MaterialVKTyp

2



B 04





A 01

Konditionen[i].SondRabatt

5



A 02

i = i + 1

X

x


A 03

p$Rabatt()

X

x



Die Merkmals-Parametergruppe Konditionen muss beim Lesen der Position nicht unbedingt vorhanden gewesen sein. Beim Schreiben wird sie dann auf jeden Fall (mindestens mit diesem Parameter) angelegt.

Anmerkung: Dieses Beispiel wird weiter unten fortgesetzt.

Beispiel 3: Ändern des Typs einer Position

Der Flansch in der Baugruppe aus Beispiel 1 soll in eine Option geändert werden. Dazu muss die 3. Position der Stufe 2 der Baugruppe gefunden werden (dies ist der Flansch). Dann kann der Positionstyp geändert werden.

Für die folgende Entscheidungstabelle sei der Index-Parameter i vor dem Aufruf mit 1 initialisiert worden. Der Parameter Anz (die Anzahl der gefundenen Positionen auf Stufe 2) sei mit 0 initialisiert):

ET "FlanschOpt":



R 01

R 02

R 03

SONST

B 01

i <= AnzPos

J

j

j


B 02

GRP[i].Stufe

2

2



B 03

Anz

2




B 04






A 01

MDat[i].MaterialVKEbene

2




A 02

MDat[i].MaterialVKTyp

2




A 03

Anz = Anz + 1


x



A 04

i = i + 1


x

x


A 05

p$FlanschOpt()


x

x


Erläuterung zu den einzelnen Regeln:

R01:

Die gesuchte Position i ist gefunden, d.h. die aktuelle Stufe ist 2 (GRP[i].Stufe ist 2) und es wurden schon vorher 2 Positionen auf Stufe 2 gefunden (Anz ist 2). Die aktuelle Position ist daher die dritte. Der Positionstyp wird umgesetzt und die Bearbeitung ist beendet.

R02:

Wenn die aktuelle Stufe 2 ist, wird der Zähler Anz, der diese Positionen zählt, um 1 erhöht.
(Anm.: wenn die gesuchte Anzahl erreicht wurde, ist Regel 1 ausgeführt worden und Regel 2 wird nicht erreicht.)

R03:

Bei allen Positionen, die nicht auf Stufe 2 sind, wird nur die Schleife weitergeführt.

SONST:

Diese Regel kann nur erreicht werden, wenn weniger als 3 Positionen auf Stufe 2 gefunden wurden. Hier könnte eine Fehlermeldung ausgegeben werden.


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.