Skip to main content
Skip table of contents

p$TDV:SMPAPI:S_Tabell


p$TDV:SMPAPI:S_Tabell

Ändern eines oder mehrerer Datensätze aus einer beliebigen SalesManager NG- oder Anwender-Datenbanktabelle (siehe auch den Datenaustausch mit Anwender-Datenbanken über den SalesManager NG).

Mit dieser allgemeinen Funktion können prinzipiell alle SalesManager NG-Datenbanktabellen geändert werden. Allerdings sollte besser eine spezielle Funktion verwendet werden, wenn eine solche vorhanden ist - z.B. kann über die Funktion p$TDV:SMPAPI:S_WakPos eine Warenkorb-Position im Ganzen geändert werden, obwohl die Daten technisch auf mehrere Datenbanktabellen verteilt sind.

Bitte beachten:

Über diese Funktion können alle Datenfelder aus einer beliebigen Tabelle des SalesManager NG geändert und auch gelöscht werden Dadurch kann u.U. die interne logische Integrität der SalesManager NG-Datenbank gefährdet werden. Alle Änderungen sollten daher sehr bedacht durchgeführt werden - im Zweifelsfall sollte eine Freigabe für bestimmte Modifikationen bei ACBIS eingeholt werden.

Die Bestimmung der zu ändernden Datensätze erfolgt über eine Parametergruppe mit Suchvorgaben (SuchPG). Diese Parametergruppe muss mit dem Typnamen der Parametergruppe, die die Datenbanktabelle beschreibt, definiert sein.Die Werte indieser Parametergruppe werden als Suchvorgabe (mit „gleich") verwendet. Ein Parameter im Zustand LEER bewirkt keine Einschränkung der Suche.

Abhängig von den Suchkriterien können ein oder mehrere Datensätze gefunden werden. In allen diesen Datensätzen werden die Datenfelder, die in der übergebenen DatenPG einen Wert haben, mit diesem Wert belegt. Siehe dazu auch den Datenaustausch mit SalesManager NG über Parametergruppen.

Bitte beachten:

Um zu verhindern, dass aus Versehen alle Datensätze geändert werden, muss eine Suchvorgabe mitgegeben werden.

Mit dieser Funktion können auch Schlüsselfelder der Datenbanktabelle, bei denen keine Duplikate erlaubt sind, geändert werden. Bei einer solchen Änderung sollte darauf geachtet werden, dass

·mit der übergebenen Suchvorgabe maximal ein Datensatz gefunden werden kann.

·noch kein Datensatz mit dem neuen Schlüsselwert existiert.

Ist einer dieser Fälle gegeben, wird eine entsprechende Fehlermeldung aus der Datenbank generiert. Im Zweifelsfall kann vor der Änderung eine Suche mit der Funktion p$TDV:SMPAPI:L_Tabell durchgeführt werden (siehe Beispiel 2).

Bitte beachten: Die Parametergruppen, die in DatenPG und SuchPG übergeben werden, werden indirekt in einer Zeichenkette übergeben, also in Anführungszeichen eingeschlossen. Außerdem müssen die Parametergruppen global sein!

Syntax:

Status = p$TDV:SMPAPI:S_Tabell( DatenPG, Tabelle, SuchPG )

 

Argument

Typ

Bedeutung

 

DatenPG

Zeichenkette

Name der Parametergruppe mit den zu ändernden Werten: Wenn die PG indiziert ist, muss ein fester Index angegeben werden.

 

Tabelle

Zeichenkette

Name der Datenbanktabelle oder –Abfrage

 

SuchPG

Zeichenkette

Name einer PG mit der Suchvorgabe. Der Typname der PG sollte dem Typnamen von DatenPG entsprechen. Wenn SuchPG indiziert ist, muss ein fester Index angegeben werden.
Es muss eine Suchvorgabe existieren.

Ergebnis:

Ganzzahl

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

Beispiel 1: Setzen eines gemeinsamen Wertes in einer Datenbankauswahl

Setzen des Maximalrabattes aller Produkte des Fabrikats "xy" der Produktgruppe 557 auf 20% (alle anderen Datenfelder bleiben unverändert):

ET "MaxRabatt":

 

 

R 01

SONST

B 01

 

 

 

A 01

f$PGLeer( ’ProdSuche’ )

x

 

A 02

ProdSuche.Fabrikat = ’xy’

x

 

A 03

ProdSuche.GruppeID = 557

x

 

A 04

f$PGLeer ’Prod’ )

x

 

A 05

Prod.MaximalRabatt = 0.2

x

 

A 06

Status = p$TDV:SMPAPI:S_Tabell( ’Prod’, ’TM_Produkt’, ’ProdSuche’ )

x

 


Tip:

Wenn das Fabrikat und die Produktgruppe nicht - wie oben - als fixe Werte eingetragen sind, sondern als Parameter zur Verfügung stehen, sollten diese Daten vor dem Ändern auf LEER geprüft werden, damit nicht aus Versehen die gesamte Tabelle geändert wird:

ET "MaxRabatt2":

 

 

R 01

SONST

B 01

f$IstLeer( ’Fabrikat’ )

n

 

B 02

f$IstLeer( ’GruppenNr’ )

n

 

B 02

 

 

 

A 01

f$PGLeer( ’ProdSuche’ )

x

 

A 02

ProdSuche.Fabrikat = Fabrikat

x

 

A 03

ProdSuche.GruppeID = GruppenNr

x

 

A 04

f$PGLeer( ’Prod’ )

x

 

A 05

Prod.MaximalRabatt = 0.2

x

 

A 06

Status = p$TDV:SMPAPI:S_Tabell( ’Prod’, ’V_Produkt’, ’ProdSuche’ )

x

 


Beispiel 2: Individuelle Änderung der Datensätze eines Suchergebnisses

Erhöhen des Listenpreises aller Produkte des Fabrikats "xy" um 10%.

Da jeder Datensatz bei der Änderung einen individuellen Wert erhält, müssen die Datensätze zunächst gesucht werden (Vorgabe ist das Fabrikat; A01 - A03 der folgenden ET "NeuePreise").

Anschließend kann in einer Schleife der neue Listenpreis berechnet und der Datensatz geändert werden.

Für die folgende Logik werden die Parametergruppen PListe (einfach indiziert) sowie Prod und PSuche (nicht indiziert) benötigt. Diese Parametergruppen sind mit demselben Typnamen, einer Auflistung von Parametern aus V_Produkt (z.B. MaterialID, Fabrikat und ListenPreisME), global deklariert. Der Ganzzahl-Parameter Anzahl muss ebenfalls global definiert sein.

ET "NeuePreise":

 

 

R 01

SONST

B 01

 

 

 

A 01

f$PGLeer( ’PSuche’ )

x

 

A 02

PSuche.Fabrikat = ’xy’

x

 

A 03

Status = p$TDV:SMPAPI:L_Tabell( ’Pliste’, ’V_Produkt’, ’PSuche’, ’Anzahl’ )

x

 

A 04

f$PGLeer( ’Prod’)

x

 

A 05

i = 1

x

 

A 06

p$NeuePreise2()

x

 


ET "NeuePreise2":

 

 

R 01

SONST

B 01

i <= Anzahl

j

 

B 02

 

 

 

A 01

Prod.ListenpreisME = ProdListe[i] * 1.10

x

 

A 02

f$PGKopie( ’PListe[i]’, ’PSuche’)

x

 

A 03

Status = p$TDV:SMPAPI:S_Tabell( ’Prod’, ’V_Produkt’, ’PSuche’ )

x

 

A 04

i = i + 1

x

 

A 05

p$NeuePreise2()

x

 


Als Parametergruppe für die Datenänderung wird die Parametergruppe Prod verwendet. Damit nur der Listenpreis geändert wird, wird sie zuvor auf LEER gesetzt (Aktion A04 in "NeuePreise").

Als Suchvorgabe für die Datensatzänderung (Parameter PSuche in Aktion A03 von "NeuePreise2") wird der komplette gelesene Datensatz verwendet. Er wird dazu in A02 aus der Produktliste in die Suchvorgabe kopiert. Dieses Vorgehen stellt sicher, dass keine weiteren „unerwünschten" Datensätze mit geändert werden. Voraussetzung ist nur, dass die Parametergruppe entsprechend aussagefähige Parameter enthält, z.B. den Schlüssel MaterialID.

JavaScript errors detected

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

If this problem persists, please contact our support.