- PR -

excelとaxis間のsoap通信時のエラー

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/01/25
投稿数: 1
投稿日時: 2005-01-25 15:32
始めて投稿させていただきす。
現在 Office XP Web Services Tookit をインストールし、excelのvisual basicマクロ
環境で soap クライアントを開発していますが soap APIを実行時に下記のエラーが
出力されます。

Error Code -> "-2147221504"
Error Message -> Generic Custom Type Mapper Element id can not be found
in type definition of SoapRow

すべてのAPIがエラーになるわけではなくで、ある特定タイプを含んでいるAPIが
エラーなると思われます。ここの特定のタイプというのはwsdlの記述上タイプの
定義で他のタイプを拡張しているところ(下記の例を参考してください)だど思います。
例)
<complexType name="SoapRow">
<complexContent>
<extension base="FolderRow"> ---> タイプを拡張している
<sequence>
<element name="username" nillable="true" type="xsd:string">
...

そもそもvisual basicのWeb Services ReferenceからWebサービスを追加する時に
上記のSoapRowの構造体には拡張されたFolderRowの定義が含まれてないのも
おかしいなと思われます。
上記のエラーがなぜ発生するのかどなたか理由を説明していだだけないでしょうか?

わかばマーク
会議室デビュー日: 2006/10/05
投稿数: 1
投稿日時: 2006-10-05 18:28
同じように悩みのスレッド(相当前のスレッドですが・・・)を発見したので返信させて頂きました。
Microsoft Office 2003 Web Services Toolkit & Excel2003 VBAでWebServiceを試しているのですが、下記エラーメッセージの原因がさっぱり分かりません。どこの問題があるのでしょうか?宜しくお願いします。
下記wsdlをWebServiceReferencesで取り込むとstruct_ および clsof_Factoryクラスが作成されません。
【エラーメッセージ】
エラーコード:client
エラー詳細:SoapMapper:型マッパー内でSoapMapperのデータ変換が失敗しました。
-2147221504(80040000)
【vba】
Dim CompanyCode_Check As New clsws_BAPICOMPANYCODEEXISTE

Dim Dom As New MSXML2.DOMDocument30
Dim Elm As MSXML2.IXMLDOMElement
Dim List As MSXML2.IXMLDOMNodeList

Dim SAP_Ret As struct_BAPIRETURN
Dim Soap_Return As MSXML2.IXMLDOMNodeList

Set Dom.documentElement = Dom.createElement("BAPI_COMPANYCODE_EXISTENCECHK")
Set Elm = Dom.createElement("COMPANYCODEID")
Elm.Text = "xxxx"
Dom.documentElement.appendChild Elm

Set List = Dom.documentElement.childNodes

Set Soap_Return = CompanyCode_Check.wsm_BAPI_COMPANYCODE_EXISTENCECHK(List)
【clsws_の先頭行】
Public Function wsm_BAPI_COMPANYCODE_EXISTENCECHK(ByVal any_COMPANYCODEID As MSXML2.IXMLDOMNodeList) As MSXML2.IXMLDOMNodeList

【wsdl】
- <xsd:element name="BAPI_COMPANYCODE_EXISTENCECHK">
- <xsd:complexType>
- <xsd:all>
- <xsd:element name="COMPANYCODEID">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="4" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:element>
- <xsd:element name="BAPI_COMPANYCODE_EXISTENCECHK.Response">
- <xsd:complexType>
- <xsd:all>
<xsd:element name="RETURN" type="s0:BAPIRETURN" />
</xsd:all>
</xsd:complexType>
</xsd:element>
- <xsd:complexType name="BAPIRETURN">
- <xsd:sequence>
- <xsd:element name="TYPE" minOccurs="0">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="1" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
- <xsd:element name="CODE" minOccurs="0">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="5" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
- <xsd:element name="MESSAGE" minOccurs="0">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="220" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
- <xsd:element name="LOG_NO" minOccurs="0">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="20" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
- <xsd:element name="LOG_MSG_NO" minOccurs="0">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="6" />
<xsd:pattern value="\d*" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
- <xsd:element name="MESSAGE_V1" minOccurs="0">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
- <xsd:element name="MESSAGE_V2" minOccurs="0">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
- <xsd:element name="MESSAGE_V3" minOccurs="0">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
- <xsd:element name="MESSAGE_V4" minOccurs="0">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>

カンタ
会議室デビュー日: 2005/10/12
投稿数: 13
投稿日時: 2006-11-10 19:44
AXISとMS実装の間のSOAP通信では互換性に苦労するのが現実です。
ComplexType的なマーシャリングのルールが違うようです。
引数にStringの配列でさえ渡せず、手でWSDLを書くのも面倒なので
あきらめたことがあります。

単なる知識不足かもしれませんが、情報もなかなかみつかりません。
詳しい方がいたら教えて欲しいです。
1

スキルアップ/キャリアアップ(JOB@IT)