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 |
| MaterialID | Zeichenkette | Identifikation der Warenkorbposition in der Tabelle V_Merkmale |
| Vererbung | Ganzzahl | 0: Lesen von der übergebenen Position |
Ergebnis: | Ganzzahl | Status der Operation | |
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 |