Другой ответ от SOAPMANAGER и wsadmin WSDL

Я пытаюсь сделать простое приложение, использующее веб-службу SAP. У меня есть ссылка на WSDL через SOAPMANAGER, которую я добавил в проект в качестве веб-ссылки, а C # создал сложный тип, который включает параметры импорта / экспорта RFC и таблицы. Если я хочу вызвать метод веб-служб, я отправляю все свои значения в переменной сложного типа, и возвращаемые значения также имеют тот же тип.

Но возвращаемые таблицы являются исходными.

Однако с ссылкой WSDL, полученной от wsconfig / wsadmin в другой системе (RFC тот же), C # не создавал никаких сложных типов, а создавал простые типы для каждого параметра RFC, и значения возвращались правильно.

Почему SOAPMANAGER и wsconfig создают разные WSDL? Как решить эту проблему?

Есть какие-нибудь советы или хитрости?


person Abaper    schedule 05.11.2010    source источник


Ответы (2)


Как уже упоминалось, wsconfig и wsadmin считаются устаревшими, поэтому всегда следует использовать транзакцию soamanager. Когда вы откроете WSDL для веб-службы в soamanager, вы увидите его в новом окне браузера. В адресной строке адреса (например, URL) вы видите где-то в конце "../ws_policy/ .." - попробуйте заменить это на "../standard/ .." и перезагрузите WSDL этим новым адрес, затем используйте этот новый / другой WSDL для своей клиентской программы.

Это помогает?

person Matthias    schedule 21.11.2010
comment
спасибо за совет, но это не работает. он снова создает сложный тип, и возвращаемые значения неверны. - person Abaper; 23.11.2010

Находятся ли обе системы на одном уровне выпуска? В более новых выпусках могут быть изменения в механизме генерации WSDL. Таким образом, wsconfig / wsadmin считается устаревшим, и вы должны использовать soamanager, если он доступен.

person Richard    schedule 07.11.2010
comment
Не тот уровень. если я использую soapmanager wsdl, возвращаемые таблицы пусты. - person Abaper; 08.11.2010
comment
Это почему? Вы отладили вызов функции на стороне SAP? - person Richard; 02.12.2010