Skip to main content
Skip table of contents

p$TDV:SMPAPI:L_MrkPos


p$TDV:SMPAPI:L_MrkPos

Lesen der Merkmale (freie Parameter) zu einer gegebenen Warenkorb-Position aus der Tabelle V_Merkmale. Der Warenkorb wird über die Warenkorb-Positionsidentifikation (Parameter MaterialID) aus der Tabelle V_Warenpos identifiziert.

Diese MaterialID steht beispielsweise bei der Funktion „Position bearbeiten" aus dem SalesManager NG-Warenkorb-Formular im Parameter Auftrag.ObjektID direkt zur Verfügung. Weitere Informationen dazu können dem SalesManager NG Systemhandbuch entnommen werden.

Mit dieser Funktion kann eine einzelne Merkmals-PG gelesen werden. Dann wird im Parameter MerkmalPG der Name dieser PG als Text übergeben. Weicht der Name der PG der gespeicherten Parameter in der Datenbank von dem gewünschten PG-Namen in der Logik ab, so können die Parameter beim Lesen auch „umbenannt" werden. Dies wird bei der Übergabe des Parameters MerkmalPG wie folgt festgelegt:

’{<PGName in der Datenbank>}<PGName in der Logik>’


d.h. der gespeicherte PG-Name wird in geschweifte Klammern eingeschlossen (siehe Beispiel). Diese Technik kann z.B. dann sinnvoll sein, wenn Daten verschiedener Artikelgruppen in individuellen Parametergruppen gespeichert werden, aber dennoch allgemeine Merkmale gleichen Parameternamens existieren, die gemeinsam verarbeitet werden können.

Ebenso können auch mehrere PGn gleichzeitig gefüllt werden. Dann muss im Parameter MerkmalPG ein Name eines globalen Feld-Parameters übergeben werden, der dann wiederum die Namen der Merkmals-Parametergruppen enthält (siehe Beispiel). Den Abschluß dieser Liste bildet ein Feldelement im Zustand LEER. Ein Umbenennen der Merkmals-PG-Namen ist hier nicht möglich.

Für eine ausführliche Beschreibung der Funktionsweise der Verarbeitung von Merkmalen kann in p$TDV:SMPAPI:L_MrkMal nachgelesen werden.

Über den Übergabe-Parameter Vererbung wird gesteuert, ob Daten direkt von der in MaterialID übergebenen Position oder von den übergeordneten Positionen gelesen werden sollen. In diesem Fall werden die Parameter mit den Werten der „nahesten" übergeordneten Position gefüllt, an der sie belegt sind (siehe Beispiel). Dies kann z.B. eingesetzt werden, um technische Daten wie eine Spannung nur an der Hauptbaugruppe definieren zu müssen. Über die Vererbung stehen diese Daten dann trotzdem an jeder Unterposition automatisch zur Verfügung. Bei der Vererbung kann sowohl eine einzelne Parametergruppe (evtl. mit Umbenennen) wie auch eine Liste von Parametergruppen gelesen werden.

Bitte beachten:

Bei der Übergabe der Parametergruppen der Merkmalswerte sind folgende Punkte zu beachten:

·bei Aufruf dieser Funktion ohne Vererbung werden die PGn nicht initialisiert, d.h. vor Aufruf können die Merkmalswerte mit Standardwerten belegt werden. Ansonsten sollten sie von der Logik z.B. mit f$PGLeer auf LEER gesetzt werden.

·bei Aufruf mit Vererbung werden vor dem Lesen alle Merkmalswerte auf LEER gesetzt.

·sie dürfen nicht indiziert sein

·sie müssen global sein

Zu Einzelheiten über den generellen Datenaustausch mit SalesManager NG über Parametergruppen siehe dort.

Bitte beachten: Die Parametergruppe bzw. das PG-Feld, die in MerkmalPG übergeben werden, werden jeweils indirekt in einer Zeichenkette übergeben, also in Anführungszeichen eingeschlossen. Außerdem müssen das Feld bzw. die Merkmals-Parametergruppen global sein!

Syntax:

Status = p$TDV:SMPAPI:L_MrkPos( MerkmalPG, MaterialID, Vererbung )

 

Argument

Typ

Bedeutung

 

MerkmalPG

Zeichenkette

a) Name der zu lesenden Parametergruppe mit den Merkmalswerten
b) Name der Merkmals-PG in der Datenbank (eingeschlossen in geschweifte Klammern), gefolgt vom Namen der Merkmals-PG in der Logik (ohne Leerzeichen). Beispiel: '{Motor}Konfig'
c) Name eines Feldes mit den Namen der zu lesenden Parametergruppen (das Listenende ist durch einen Eintrag mit LEER hinter der letzten PG gekennzeichnet)
Nach Aufruf dieser Funktion enthalten die Merkmals-PGn die Merkmale dieser PGn des Warenkorbs

 

MaterialID

Zeichenkette

Identifikation der Warenkorbposition in der Tabelle V_Merkmale

 

Vererbung

Ganzzahl

0: Lesen von der übergebenen Position
(ohne Initialisierung der Merkmals-PGn)
1: Lesen von den übergeordneten Positionen
(mit Initialisierung der Merkmals-PGn)

Ergebnis:

Ganzzahl

Status der Operation
0: Daten erfolgreich gelesen
<0: Fehler gemäß ePOS-Fehler-Liste
>0: Fehler gemäß SMP-Fehlerstatus-Liste
Der Rückgabestatus in SalesManager NG-Funktionen


Beispiel: Gegeben sei folgender Warenkorb mit den entsprechenden Merkmalen:

Pos.Nr.

MaterialID

Merkmal

Wert

1

4711

a.x

10

 

 

a.y

20

 

 

a.z

30

 

 

b.x

40

1.1

4712

a.x

110

 

 

a.z

130

 

 

b.y

140

1.2

4713

a.x

210

 

 

a.y

220

1.2.1

4714

a.x

1010

 

 

a.y

1020

 

 

b.x

1030


Beispiel 1: Lesen der Merkmals-PG "a" von Position 1.2.1:

a.x = 111
a.y = 222
a.z = 333
Status = p$TDV:SMPAPI:L_MrkPos( ’a’, ’4714’, 0 )

Dann sind folgende Werte vorhanden:

Parameter

Wert

Erklärung

a.x

1010

Gelesen

a.y

1020

Gelesen

a.z

333

aus Initialisierung, da nicht vorhanden


Beispiel 2: Lesen der Merkmals-PG "a" von Position 1.2.1 in die PG "a2":

f$PGLeer( ’a2’ )
Status = p$TDV:SMPAPI:L_MrkPos( ’{a}a2’, ’4714’, 0 )

Dann sind folgende Werte vorhanden:

Parameter

Wert

Erklärung

a2.x

1010

Gelesen

a2.y

1020

Gelesen

a2.z

LEER

aus Initialisierung, da nicht vorhanden


Anmerkung.: eine Parametergruppe "a" braucht in der Logik nicht definiert zu sein.

Beispiel 3: Lesen der Merkmals-Parametergruppen "a" und "b" von Position 1.2.1:

f$PGLeer( ’a’ ) → Merkmalswerte initialisieren
f$PGLeer( ’b’ )
MrkPGListe[1] = ’a’ → PG "a" soll gelesen werden
MrkPGListe[2] = ’b’
f$Leer( ’MrkPGListe[3]’ ) → Es sind 2 Parametergruppen zu lesen
Status = p$TDV:SMPAPI:L_MrkPos( ’MrkPGListe’, ’4714’, 0 )

Dann sind folgende Werte vorhanden:

Parameter

Wert

Erklärung

a.x

1010

Gelesen

a.y

1020

Gelesen

a.z

LEER

aus Initialisierung, da nicht vorhanden

b.x

1030

gelesen

b.y

LEER

aus Initialisierung, da nicht vorhanden


Beispiel 4: Lesen der übergeordneten Merkmals-PGn "a" und "b" von Position 1.2.1:

b.y = 444 → wird später re-initialisiert
MrkPGListe[1] = ’a’ → PG "a" soll gelesen werden MrkPGListe[2] = ’b’
f$Leer( ’MrkPGListe[3]’ ) → Es sind 2 PGn zu lesen Status = p$TDV:SMPAPI:L_MrkPos( ’MrkPGListe’, ’4714’, 1 )

Dann sind folgende Werte vorhanden:

Parameter

Wert

Erklärung

a.x

210

von Pos. 1.2

a.y

220

von Pos. 1.2

a.z

30

von Pos. 1, da an Pos. 1.2 nicht vorhanden

b.x

40

von Pos. 1, da an Pos. 1.2 nicht vorhanden

b.y

LEER

aus automatischer Initialisierung, da nicht vorhanden (Pos. 1.1 ist nicht der Position 1.2.1 übergeordnet)


Beispiel 5: Lesen der übergeordneten Merkmals-PGn "a" und "b" von Position 1.2.1 einschließlich der Merkmale dieser Position:

b.y = 444 → wird später re-initialisiert
MrkPGListe[1] = ’a’ → PG "a" soll gelesen werden
MrkPGListe[2] = ’b’
f$Leer( ’MrkPGListe[3]’ ) → Es sind 2 PGn zu lesen
Status = p$TDV:SMPAPI:L_MrkPos( ’MrkPGListe’, ’4714’, 1 )
Status = p$TDV:SMPAPI:L_MrkPos( ’MrkPGListe’, ’4714’, 0 )

Da bei einem Aufruf mit Vererbung=0 die Merkmale nicht initialisiert werden, überschreiben nur die dort vorhandenen Daten evtl. bereits gelesene Merkmale. Es sind nun folgende Werte vorhanden:

Parameter

Wert

Erklärung

a.x

1010

von Pos. 1.2

a.y

1020

von Pos. 1.2

a.z

30

von Pos. 1, da an Pos. 1.2.1 und 1.2 nicht vorhanden

b.x

1030

von Pos. 1.2.1

b.y

LEER

aus automatischer Initialisierung des ersten Funktionsaufrufes

JavaScript errors detected

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

If this problem persists, please contact our support.