ich möchte mit Hilfe von VB.NET einen Webservice eines SAP-Systems aufrufen. Der Service enthält innerhalb der Request- und Response-Datenstruktur eine Tabelle BAPIRET2, welche ein Datenelement SYSTEM erhält.
Innerhalb der generierten Proxy-Klasse Reference.vb wird nun folgerichtig eine Partial Class Class BAPIRET2 und eine Property SYSTEM angelegt, um auf das Datenelement zugreifen zu können:
'''<remarks/>
System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _ Public Property SYSTEM() As String Get Return Me.sYSTEMField End Get Set(ByVal value As String) Me.sYSTEMField = value End Set End Property
Leider resultiert daraus die folgende Fehlermeldung des Compilers: "Reference to a non-shared member requires an object reference."
Dies passiert, da es nun für das reservierte Wort System eine Property gibt und der Compiler (da VB nicht case sensitive) diese "benutzt" , so auch im Attribut
Mein erster Lösungsansatz, die Property in SYSTEM2 umzubenennen, hat zwar bewirkt, dass man das Ganze compilieren und ausführen kann, das Datenelement jedoch nicht mehr befüllt wird!
long story short: Wie kann man Webservices in VB.NET nutzen, welche in ihren Datenstrukturen reservierte Wörte wie z.B. SYSTEM benutzen?
System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _ Public Property [SYSTEM]() As String Get Return Me.sYSTEMField End Get Set(ByVal value As String) Me.sYSTEMField = value End Set End Property
hast du es schonmal so versucht? mit [ und ] um den reservierten Namen?
leider würde das nur bei den "richtigen" (also blauen) reservierten Wörtern was bewirken! Also wenn ich z.B. eine Property/Function [i]ReadOnly[/i] haben möchte.
Nun "sucht" er Serialization in den importierten Namespaces, findet es dort und kommt nicht mehr auf die Idee, dass das irgendwas mit der Property SYSTEM zu tun hat!