![]() |
HinweisEine vollständige Beschreibung
der BIZ-Services finden Sie hier: BIZ-Services Übersicht
|
Nr.
|
Key
|
Name
|
Beschreibung
|
1
|
Bo
|
Businessobjekt
|
Startparameter 'Businessobjekt' des Service 'SaveBo'.
|
2
|
StartKeys
|
Startpunkt
|
Startparameter 'Startpunkt' des Service 'SaveBo'. Die einzelnen Indexsegmente werden
durch Kommas voneinander getrennt.
|
3
|
SearchOperationCd
|
Suchanweisung
|
Startparameter 'Suchanweisung' des Service 'SaveBo'. Meistens wird hier die Suchanweisungen
'e'=gleich verwendet.
|
4
|
BoIndex
|
BO-Index
|
Startparameter 'BO-Index' des Service 'SaveBo'. Defaultindex ist der Objekt-ID-Index.
|
5
|
SaveBoProcessingCd
|
Verarbeitungsart
|
Startparameter 'Verarbeitungsart' des Service 'SaveBo'. Folgende Varianten sind gebräuchlich:
1=nur mutieren, 2=nur erstellen, 3=mutieren wenn vorhanden, sonst erstellen.
|
6
|
FixedSegsOfBoIndex
|
Fixierte Indexsegmente
|
Startparameter 'Fixierte Indexsegmente' des Service 'SaveBo'. Anzahl der beim Startpunkt
(StartKeys) fixierten Indexsegmente.
|
7
|
SaveBoModeCd
|
Ausführungsart
|
Der Service kann u.a. im Test-Modus ausgeführt werden. Mit einem Testlauf können Sie
sehen, welche Businessobjekte mutiert/erstellt würden. Da alle Überprüfungen wie beim
scharfen Durchgang vorgenommen werden, ist es auch möglich, Fehler schon im voraus
zu bereinigen. Bei serienmässigem Mutieren (Filter!) empfehlen wir Ihnen sehr, vorher
einen Testlauf durchzuführen.
|
8
|
WithReport
|
Protokoll
|
Startparameter 'Protokoll' des Service 'SaveBo'. Hier kann angegeben werden, ob der
Speichervorgang protokolliert werden soll oder nicht.
|
9
|
Filter
|
Filter
|
Startparameter 'Filter' des Service 'SaveBo'. Selektionsfunktion in Form von einem
logischen Ausdruck, z.B. 'Addr.CountrySc = 'CH' and (Addr.LangNo = 3 or Addr.LangNo
= 5)'.
|
10
|
ResultObject
|
Rückgabe-Objekt
|
Startparameter 'Rückgabe-Objekt' des Service 'SaveBo'. Definiert, welche Attribute
im Rückgabe-Objekt enthalten sein müssen. Defaultmässig werden BoId, BoNumber und
BoName sowie bei eingeschaltetem Protokoll (WithReport) SaveBoStateCd und SaveBoInfo
zurückgegeben.
|
11
|
SetValAttr
|
Wertzuweisungsargumente
|
Diese Felder sind für die Wertzuweisung gedacht. Pro Argument kann eine Zuweisung
definiert werden. Die Syntax für eine Adresse zu mutieren lautet beispielsweise 'LastName='Smith'',
'FirstName='John'', 'Keyword=FirstName + ' ' + LastName'.
|
Nr.
|
Key
|
Name
|
Beschreibung
|
1
|
SaveBoStateCd
|
Verarbeitungsstatus
|
Rückgabewert 'Verarbeitungsstatus' des Service 'SaveBo'. Pro Speichervorgang wird
im Verarbeitungsstatus festgehalten, ob das BO mutiert bzw. erstellt werden konnte(0),
ob ein Fehler aufgetreten ist(1) oder ob das BO erstellt aber nicht mutiert werden
konnte(2). Der Verarbeitungsstatus ist nur bei eingeschaltetem Protokoll (WithReport)
sichtbar.
|
2
|
SaveBoInfo
|
Anmerkung zum Speichervorgang
|
Rückgabewert 'Anmerkung zum Speichervorgang' des Service 'SaveBo'. Wenn beim Speichern
eines Businessobjekts ein Problem auftritt, wird hier die Fehlerursache(n) aufgeführt.
Dieses Feld ist nur bei eingeschaltetem Protokoll (WithReport) sichtbar.
|
Nr.
|
Key
|
Name
|
Beschreibung
|
1
|
Message
|
SaveBo.Ek.Message
|
SaveBo.Ek.Message
|
![]() |
HinweisEiner Wertzuweisung sollte immer
ein @ vorangestellt werden. Dadurch wird die gesamte nachfolgende Eingabe
als String interpretiert.
Das ist vor allem dann notwendig, wenn man
tatsächlich Gänsefüsschen schreiben will.
Beispiel:
Cust.Remark=@Kunde ist "unentschlossen".
|
Attribut
|
Beschreibung
|
SaveBoStateCd
|
Verarbeitungsstatus:
0 = OK
1 = Error (BO
wurde nicht gespeichert)
2 = CreatedOnly (BO wurde
erstellt, aber nicht gespeichert)
Achtung: Dieses
Attribut kann nur abgefragt werden, wenn das Argument
<Protokoll>=1 (true) gesetzt ist.
|
SaveBoInfo
|
Anmerkung zum Speichervorgang
Achtung:
Dieses Attribut kann nur abgefragt werden, wenn das Argument
<Protokoll>=1 (true) gesetzt ist.
|
![]() |
AchtungBeachten Sie
unbedingt, dass für das Prüfen eines Speichervorgangs nicht nur der Status
(Ausführungsstatus) des Service, sondern insbesondere der SaveBoStatCd
abgefragt werden muss. Das Prüfen des Status, welcher bei erfolgreicher
Ausführung eines Service OK zeigt, genügt nicht.
Beispiel: Es soll
eine neue Adresse gespeichert werden. Im Studio ist eingestellt, dass die
Adressnummer automatisch vom System vergeben wird. Wird nun versucht eine
Adresse mit Vorgabe einer Adressnummer zu speichern, so zeigt der Status
des SaveBo zwar OK, der SaveBoStatCd aber korrekt 1 (Error).
In
seltenen Konstellationen kann es vorkommen, dass der Service fehlerhaft
ausgeführt wurde, der SaveBoStateCd aber 0 (ok) zeigt. Falls Sie sowohl
die Ausführung des Service als auch den SaveBoStateCd prüfen wollen,
empfehlen wir folgendes Vorgehen:
1. Prüfen ob der Service korrekt
ausgeführt wurde. (ok, mKey und mText) Falls dies der Fall ist, muss
zusätzlich der SaveBoStateCd geprüft werden.
2. Prüfen des
SaveBoStateCd und der SaveBoInfo.
Beispiel einer solchen Prüfung mit
Ausgabe von ok, mKey, mText, SaveBoStateCd und SaveBoInfo:
«X(msgText=)» ... ... ... # Prüfungen nach Ausführen des Service: # # Status ok (0/1) «X(Status=Status: «XRES(resArtMisC3:ok)» «(character("13"))\E»«(character("10"))\E»)» # # Falls Status ERR (0) werden mKey und mText ausgegeben. «nzXRES(resArtMisC3:ok)=0»«X(MsgKey=MsgKey: «XRES(resArtMisC3:mKey)» «(character("13"))\E»«(character("10"))\E»)» «nzXRES(resArtMisC3:ok)=0»«X(MsgText=MsgText: «XRES(resArtMisC3:mText)» «(character("13"))\E»«(character("10"))\E»)» # # Falls Status OK (1) werden SaveBoStateCd und SaveBoInfo ausgegeben und gegebenenfalls anschliessend geprüft. nzXRES(resArtMisC3:ok)=1»«X(SaveBoStateCd=SaveBoStateCd: «XRES(resArtMisC3:SaveBoStateCd)» «(character("13"))\E»«(character("10"))\E»)» nzXRES(resArtMisC3:ok)=1»«X(SaveBoInfo=SaveBoInfo: «XRES(resArtMisC3:SaveBoInfo)» «(character("13"))\E»«(character("10"))\E»)» # # Zusammenstellen der Informationen für die Ausgabe. «X(msgText+Status)» «X(msgText+MsgKey)» «X(msgText+MsgText)» «X(msgText+SaveBoStateCd)» «X(msgText+SaveBoInfo)» # # Ausgeben der Informationen. «SYS(MSG CRIT «X(msgText)»)» # # Nachfolgend muss nun u.U. noch anderweitig auf die eventuellen Fehler reagiert werden. ... ... ... |
«XSER(setSalDocItem:SaveBo)» «XSER(setSalDocItem:addArg=SalDocItem)» «XSER(setSalDocItem:addArg=)» «XSER(setSalDocItem:addArg=e)» «XSER(setSalDocItem:addArg=)» «XSER(setSalDocItem:addArg=2)» «XSER(setSalDocItem:addArg=)» «XSER(setSalDocItem:addArg=0)» «XSER(setSalDocItem:addArg=1)» «XSER(setSalDocItem:addArg=)» «XSER(setSalDocItem:addArg=SalDocItem.ItemNo,SalDocItem.InternalNo)» «XSER(setSalDocItem:addArg=SalDocItem.SalDocInternalNo=@«AUF-DOKINR»)» «XSER(setSalDocItem:addArg=SalDocItem.ArtNo=@ZZVDDHEAD1)» «XSER(setSalDocItem:addArg=SalDocItem.Quantity=@1)» «XSER(setSalDocItem:addArg=SalDocItem.Free5=@«TODAY\D10»)» «XSER(setSalDocItem:addArg=SalDocItem.Free6=@«MEA(1007)»)» «XSER(setSalDocItem:addArg=SalDocItem.Free7=@«MEA(1005)»)» «XSER(setSalDocItem:addArg=SalDocItem.Free8=@«MEA(1004)»)» «nXSER(setSalDocItem:execute>setSalDocItemRes)\A» # Prüfen des Status «nzXRES(setSalDocItemRes:ok)=0»*> Fehler: «XRES(setSalDocItemRes:mText)» # Prüfen des SaveBoStateCd «z~XRES(setSalDocItemRes:SaveBoStateCd)=0\N»*> Fehler: «XRES(setSalDocItemRes:SaveBoInfo)» # SetKopf Nummer und SetKopf Interne Nummer speichern «X(SetKopfNr=«XRES(setSalDocItemRes:SalDocItem.ItemNo)»)» «X(SetKopfInr=«XRES(setSalDocItemRes:SalDocItem.InternalNo)»)»
/Save-Setzeilen «nNO(2)» # Eine neue Setzeile anlegen «XSER(setSalDocItemSet:SaveBo)» «XSER(setSalDocItemSet:addArg=SalDocItem)» «XSER(setSalDocItemSet:addArg=)» «XSER(setSalDocItemSet:addArg=e)» «XSER(setSalDocItemSet:addArg=)» «XSER(setSalDocItemSet:addArg=2)» «XSER(setSalDocItemSet:addArg=)» «XSER(setSalDocItemSet:addArg=0)» «XSER(setSalDocItemSet:addArg=1)» «XSER(setSalDocItemSet:addArg=)» «XSER(setSalDocItemSet:addArg=)» «XSER(setSalDocItemSet:addArg=SalDocItem.SalDocInternalNo=@«MEA(1006)»)» # Interne Dokumentnummer «XSER(setSalDocItemSet:addArg=SalDocItem.InternalNo=«X(SetKopfInr)»)» # Interne Nummer des Setkopfes «XSER(setSalDocItemSet:addArg=SalDocItem.ItemNo=«X(SetKopfNr)»)» # Zeilennummer des Setkopfes «XSER(setSalDocItemSet:addArg=SalDocItem.SetItemNo=«NO(2,0)»)» # Zeilennummer des Setkopfes «XSER(setSalDocItemSet:addArg=SalDocItem.ArtNo=@«MEA(1001)»)» # Artikelnummer für Setzeile «XSER(setSalDocItemSet:addArg=SalDocItem.Quantity=@«MEA(1003)»)» # Menge für Setzeile «XSER(setSalDocItemSet:addArg=SalDocItem.PosText=@«MEA(1002)»)» # Positionstext der Setzeile # «nXSER(setSalDocItemSet:execute>setSalDocItemSetRes)\A» # Prüfen des Status «nzXRES(setSalDocItemSetRes:ok)=0»*> Fehler: «XRES(setSalDocItemSetRes:mText)» # Prüfen des SaveBoStateCd «z~XRES(setSalDocItemSetRes:SaveBoStateCd)=0\N»*> Fehler: «XRES(setSalDocItemSetRes:SaveBoInfo)» /
# Mutieren des ZA-Wert 1 «XSER(setSalDoc:SaveBo)» «XSER(setSalDoc:addArg=SalDoc)» «XSER(setSalDoc:addArg=«AUF-DOKINR»)» «XSER(setSalDoc:addArg=e)» «XSER(setSalDoc:addArg=7)» «XSER(setSalDoc:addArg=1)» «XSER(setSalDoc:addArg=1)» «XSER(setSalDoc:addArg=0)» «XSER(setSalDoc:addArg=1)» «XSER(setSalDoc:addArg=)» «XSER(setSalDoc:addArg=)» «XSER(setSalDoc:addArg=SalDoc.DocCharge1Value=@10)» «XSER(setSalDoc:addArg=SalDoc.DocCharge1=@9.30)» # «nXSER(setSalDoc:execute>setSalDocRes)\A» # Prüfen des Status «nzXRES(setSalDocRes:ok)=0»*> Fehler: «XRES(setSalDocRes:mText)» # Prüfen des SaveBoStateCd «z~XRES(setSalDocRes:SaveBoStateCd)=0\N»*> Fehler: «XRES(setSalDocRes:SaveBoInfo)»