SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

вызов сервиса



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Джокер
Участник
Участник


Age: 34
Joined: 07 Aug 2012
Posts: 5

PostPosted: Tue Aug 07, 2012 8:36 am    Post subject: вызов сервиса Reply with quote

Здравствуйте! Мне необходимо вызвать внешний web-сервис из ABAP программы.
При этом необходимо передать параметры: логин и пароль для доступа к сервису.
Как реализоватеть данную задачу?

написал программу для вызова существующего сервиса http://www.webservicex.net/globalweather.asmx?WSDL
через cl_http_client=>create_by_url. Всё успешно работает

Код программы такой
Code:

PARAMETERS : p_cnt TYPE t005t-landx .

*&---------------------------------------------------------------------*
*& Types and Data
*&---------------------------------------------------------------------*
DATA: http_client TYPE REF TO if_http_client ,
http_url TYPE string ,
p_content TYPE string .

*&---------------------------------------------------------------------*
*& Start of Selection
*&---------------------------------------------------------------------*
START-OF-SELECTION .

*Build the url string based on input
CONCATENATE 'http://www.webservicex.net/globalweather.asmx'
'/GetCitiesByCountry?CountryName='
p_cnt
INTO http_url .



* Creation of new IF_HTTP_Client object
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = http_url
IMPORTING
client = http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.

http_client->request->set_header_field( name = '~request_method'
value = 'GET' ).
* Send the request
http_client->send( ).

* Reterive the result
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.

p_content = http_client->response->get_cdata( ).
REPLACE ALL OCCURRENCES OF '&lt;' IN p_content WITH '<' .
REPLACE ALL OCCURRENCES OF '&gt;' IN p_content WITH '>' .

*&---------------------------------------------------------------------*
*& Processing the string
*&---------------------------------------------------------------------*
DATA : moff TYPE syst-tabix ,
moff1 TYPE syst-tabix ,
len TYPE syst-tabix .

DO .
FIND '<City>' IN SECTION OFFSET moff OF p_content IGNORING CASE MATCH OFFSET moff .
IF sy-subrc = 0 .
moff = moff + 6 .
FIND '</City>' IN SECTION OFFSET moff OF p_content IGNORING CASE MATCH OFFSET moff1 .
len = moff1 - moff .
WRITE : / p_content+moff(len) .
ELSE.
EXIT.
ENDIF.

ENDDO .

Вопрос как вызвать сервис, который требует ввода логина и пароля ??
Всем спасибо
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 195
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Aug 07, 2012 9:18 am    Post subject: Reply with quote

PopUP окно в абап программе с запросом имени и пароля не подойдет?
Потом передавайте пароль во внешний сервис.

_________________
Молитва - это запрос разработчику на изменение кода программы.
Back to top
View user's profile Send private message Blog Visit poster's website
alezhu
Специалист
Специалист



Joined: 29 Apr 2012
Posts: 86
Location: Spb

PostPosted: Tue Aug 07, 2012 9:45 am    Post subject: Reply with quote

Quote:
Вопрос как вызвать сервис, который требует ввода логина и пароля ??


В общем случае зависит от сервиса - может он логин с паролем принимает как параметры. Может у него есть отдельный метод, в который передаются логин с паролем, а в ответ он возвращает токен, который нужно в дальнейшем передавать в заголовке с каждым запросом. Может еще какие то варианты.
Back to top
View user's profile Send private message
Джокер
Участник
Участник


Age: 34
Joined: 07 Aug 2012
Posts: 5

PostPosted: Tue Aug 07, 2012 10:06 am    Post subject: Reply with quote

vga wrote:
PopUP окно в абап программе с запросом имени и пароля не подойдет?
Потом передавайте пароль во внешний сервис.


А можно какой-нибудь пример ?)
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 195
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Aug 07, 2012 12:14 pm    Post subject: Reply with quote

Джокер wrote:
vga wrote:
PopUP окно в абап программе с запросом имени и пароля не подойдет?
Потом передавайте пароль во внешний сервис.


А можно какой-нибудь пример ?)



Если пароль нужно скрыть звездочками, придется свой модуль писать по аналогии. А так:

Code:
REPORT z_vga_logon.

DATA:   l_ret TYPE c,
        lt_fields TYPE TABLE OF sval WITH HEADER LINE.

lt_fields-tabname     = 'RSYST'.
lt_fields-fieldname   = 'BNAME'.
lt_fields-fieldtext   = 'User name: '.
lt_fields-value       =  sy-uname.
APPEND lt_fields.

CLEAR lt_fields.
lt_fields-tabname     = 'RSYST'.
lt_fields-fieldname   = 'BCODE'.
lt_fields-fieldtext   = 'Password: '.
APPEND lt_fields.

CALL FUNCTION 'POPUP_GET_VALUES'
  EXPORTING
    popup_title     = 'Logon'
    start_column    = '8'
    start_row       = '8'
  IMPORTING
    returncode      = l_ret
  TABLES
    fields          = lt_fields
  EXCEPTIONS
    error_in_fields = 1
    OTHERS          = 2.

IF NOT sy-subrc IS INITIAL.
  WRITE: / 'Error'.
  EXIT.
ENDIF.

LOOP AT lt_fields.
  IF lt_fields-fieldname  = 'BNAME'.
    WRITE: / 'Login:   ', lt_fields-value.
  ELSEIF lt_fields-fieldname  = 'BCODE'.
    WRITE: / 'Password:', lt_fields-value.
  ENDIF.
ENDLOOP.

_________________
Молитва - это запрос разработчику на изменение кода программы.
Back to top
View user's profile Send private message Blog Visit poster's website
Джокер
Участник
Участник


Age: 34
Joined: 07 Aug 2012
Posts: 5

PostPosted: Tue Aug 07, 2012 12:40 pm    Post subject: Reply with quote

А как передать логин и пароль во внешний веб-сервис??
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 195
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Aug 07, 2012 12:59 pm    Post subject: Reply with quote

Джокер wrote:
А как передать логин и пароль во внешний веб-сервис??


Как минимум внешний сервис нужно видеть.
Данные вы получаете через метод GET, передавайте POST.

_________________
Молитва - это запрос разработчику на изменение кода программы.
Back to top
View user's profile Send private message Blog Visit poster's website
Джокер
Участник
Участник


Age: 34
Joined: 07 Aug 2012
Posts: 5

PostPosted: Tue Aug 07, 2012 1:16 pm    Post subject: Reply with quote

vga wrote:
Джокер wrote:
А как передать логин и пароль во внешний веб-сервис??


Как минимум внешний сервис нужно видеть.
Данные вы получаете через метод GET, передавайте POST.


Имеется WSDL файл на сервере. Нам нужно вызвать веб-сервис из ABAP программы и передать на сервер(для аутентификации) логин и пароль.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 195
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Aug 07, 2012 2:15 pm    Post subject: Reply with quote

Погуглите по фразе 'SAP cl_http_client POST'
Например:
Code:
Program EXAMPLE ONE
*&---------------------------------------------------------------------*
*& Report  Y_CONSUME_WEBSERVICE2                                        *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  Y_CONSUME_WEBSERVICE2.
DATA: WF_USER TYPE STRING .
DATA: WF_PASSWORD TYPE STRING .

DATA: OUTTAB(10) TYPE C.


DATA: XSLT_ERR TYPE REF TO CX_XSLT_EXCEPTION .
DATA: RLENGTH TYPE I,
      TXLEN TYPE STRING  .

DATA: HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT .

DATA: WF_STRING TYPE STRING .
DATA: WF_STRING1 TYPE STRING .
DATA: WF_PROXY TYPE STRING ,
      WF_PORT TYPE STRING .

SELECTION-SCREEN: BEGIN OF BLOCK A WITH FRAME .
PARAMETERS: V_FROM(3) TYPE C .
PARAMETERS: V_TO(3)   TYPE C .


SELECTION-SCREEN SKIP 1.
PARAMETERS: USER(50) LOWER CASE,
            PASSWORD(50) LOWER CASE ,
            P_PROXY(100) LOWER CASE DEFAULT 'mt01proxy.multibras.com.br' ,
            P_PORT(4) DEFAULT '8081'.

SELECTION-SCREEN: END OF BLOCK A .

AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.
    IF SCREEN-NAME = 'PASSWORD'.
      SCREEN-INVISIBLE = '1'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

START-OF-SELECTION .


  CLEAR WF_STRING .

  CONCATENATE '<?xml version="1.0" encoding="utf-8"?>'

  '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
  '<soap:Body>'
  '<ConversionRate xmlns="http://www.webserviceX.NET/">'

  '<FromCurrency>' V_FROM '</FromCurrency>'
  '<ToCurrency>' V_TO '</ToCurrency>'

  '</ConversionRate>'

  '</soap:Body>'

  '</soap:Envelope>'

  INTO WF_STRING .

  CLEAR :RLENGTH , TXLEN .
  RLENGTH = STRLEN( WF_STRING ) .
  MOVE: RLENGTH TO TXLEN .

  CLEAR: WF_PROXY, WF_PORT .
  MOVE: P_PROXY TO WF_PROXY ,
        P_PORT TO WF_PORT .

  CALL METHOD CL_HTTP_CLIENT=>CREATE
    EXPORTING
      HOST          = 'www.webservicex.net'
      SERVICE       = '80'
      SCHEME        = '1'
      PROXY_HOST    = WF_PROXY
      PROXY_SERVICE = WF_PORT
    IMPORTING
      CLIENT        = HTTP_CLIENT.

  HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_DISABLED.

  WF_USER = USER .
  WF_PASSWORD = PASSWORD .

* proxy server authentication

  CALL METHOD HTTP_CLIENT->AUTHENTICATE
    EXPORTING
      PROXY_AUTHENTICATION = 'X'
      USERNAME             = WF_USER
      PASSWORD             = WF_PASSWORD.


  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~request_method'
      VALUE = 'POST'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~server_protocol'
      VALUE = 'HTTP/1.1'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~request_uri'
      VALUE = '/CurrencyConvertor.asmx'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'Content-Type'
      VALUE = 'text/xml; charset=utf-8'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'Content-Length'
      VALUE = TXLEN.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'SOAPAction'
      VALUE = 'http://www.webserviceX.NET/ConversionRate'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
    EXPORTING
      DATA   = WF_STRING
      OFFSET = 0
      LENGTH = RLENGTH.

  CALL METHOD HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2.

  CALL METHOD HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.

  CLEAR WF_STRING1 .
  WF_STRING1 = HTTP_CLIENT->RESPONSE->GET_CDATA( ).

  REPLACE ALL OCCURRENCES OF
      '&lt;' IN WF_STRING1 WITH '<' .

  REPLACE ALL OCCURRENCES OF
   '&gt;' IN WF_STRING1 WITH '>' .

  REPLACE ALL OCCURRENCES OF
   'xmlns=' IN WF_STRING1 WITH 'xmlns:xsl=' .

  TRY .
      CALL TRANSFORMATION (`Y_CURR_XML2ABAP`)
              SOURCE XML WF_STRING1
              RESULT     OUTTAB = OUTTAB.
    CATCH CX_XSLT_EXCEPTION INTO XSLT_ERR.

      DATA: S TYPE STRING.
      S = XSLT_ERR->GET_TEXT( ).
      WRITE: ': ', S.
      STOP.

  ENDTRY .

*  LOOP AT OUTTAB INTO WA_OUTTAB .
    WRITE:/ 'Moeda Origem', V_FROM.
    WRITE:/ 'Moeda destino', V_TO.
    WRITE:/ 'Taxa de conversão', OUTTAB.
    WRITE:/ 'Data da conversão', SY-DATUM.
*  ENDLOOP .


Code:

XSLT file for program example one
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:strip-space elements="*"/>
  <xsl:output indent="yes"/>
  <xsl:template match="ConversionRateResult">
    <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
      <asx:values>
        <OUTTAB>
                <xsl:value-of select= "."/>
         </OUTTAB>
      </asx:values>
    </asx:abap>
  </xsl:template>
</xsl:stylesheet>


Code:

*Program EXAMPLE TWO
*&---------------------------------------------------------------------*
*& Report  Y_CONSUME_WEBSERVICE                                        *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  Y_CONSUME_WEBSERVICE                    .
DATA: WF_USER TYPE STRING .
DATA: WF_PASSWORD TYPE STRING .

TYPES: BEGIN OF OUTTAB1 ,
   AIRPORTCODE(6)  ,
   CITYOFAIRPORTNAME(50),
   COUNTRY(30)  ,
   COUNTRYABBRIVATION(10),
   COUNTRYCODE(6)  ,
   GMTOFFSET(10)  ,
   RUNWAYLENGTHFEET(15),
   RUNWAYELEVATIONFEET(15),
   LATITUDEDEGREE(10)  ,
   LATITUDEMINUTE(10)  ,
   LATITUDESECOND(10)  ,
   LATITUDENPEERS(10)  ,
   LONGITUDEDEGREE(10)  ,
   LONGITUDEMINUTE(10)  ,
   LONGITUDESECONDS(10)  ,
   LONGITUDEEPERW(10) ,
   END OF OUTTAB1 .

DATA: OUTTAB TYPE  TABLE OF OUTTAB1.
DATA: WA_OUTTAB TYPE OUTTAB1.
DATA: WF_O LIKE LINE OF OUTTAB .
DATA: XSLT_ERR TYPE REF TO CX_XSLT_EXCEPTION .
DATA: RLENGTH TYPE I,
      TXLEN TYPE STRING  .

DATA: HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT .

DATA: WF_STRING TYPE STRING .
DATA: WF_STRING1 TYPE STRING .
DATA: WF_PROXY TYPE STRING ,
      WF_PORT TYPE STRING .

SELECTION-SCREEN: BEGIN OF BLOCK A WITH FRAME .
PARAMETERS: COUNTRY(2) TYPE C LOWER CASE .

SELECTION-SCREEN SKIP 1.
PARAMETERS: USER(50) LOWER CASE,
            PASSWORD(50) LOWER CASE ,
            P_PROXY(100) LOWER CASE DEFAULT 'mt01proxy.multibras.com.br' ,
            P_PORT(4) DEFAULT '8081'.

SELECTION-SCREEN: END OF BLOCK A .

AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.
    IF SCREEN-NAME = 'PASSWORD'.
      SCREEN-INVISIBLE = '1'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

START-OF-SELECTION .


  CLEAR WF_STRING .

  CONCATENATE '<?xml version="1.0" encoding="utf-8"?>' '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
  '<soap:Body>'
  '<GetAirportInformationByCountry xmlns="http://www.webserviceX.NET">'
  '<country>' COUNTRY '</country>'
  '</GetAirportInformationByCountry>'
  '</soap:Body>'
  '</soap:Envelope>' INTO WF_STRING .

  CLEAR :RLENGTH , TXLEN .
  RLENGTH = STRLEN( WF_STRING ) .
  MOVE: RLENGTH TO TXLEN .
  CLEAR: WF_PROXY, WF_PORT .
  MOVE: P_PROXY TO WF_PROXY ,
        P_PORT TO WF_PORT .

  CALL METHOD CL_HTTP_CLIENT=>CREATE
    EXPORTING
      HOST          = 'www.webservicex.net'
      SERVICE       = '80'
      SCHEME        = '1'
      PROXY_HOST    = WF_PROXY
      PROXY_SERVICE = WF_PORT
    IMPORTING
      CLIENT        = HTTP_CLIENT.

  HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_DISABLED.

  WF_USER = USER .
  WF_PASSWORD = PASSWORD .

* proxy server authentication

  CALL METHOD HTTP_CLIENT->AUTHENTICATE
    EXPORTING
      PROXY_AUTHENTICATION = 'X'
      USERNAME             = WF_USER
      PASSWORD             = WF_PASSWORD.


  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~request_method'
      VALUE = 'POST'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~server_protocol'
      VALUE = 'HTTP/1.1'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = '~request_uri'
      VALUE = '/airport.asmx'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'Content-Type'
      VALUE = 'text/xml; charset=utf-8'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'Content-Length'
      VALUE = TXLEN.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
    EXPORTING
      NAME  = 'SOAPAction'
      VALUE = 'http://www.webserviceX.NET/GetAirportInformationByCountry'.

  CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
    EXPORTING
      DATA   = WF_STRING
      OFFSET = 0
      LENGTH = RLENGTH.

  CALL METHOD HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2.

  CALL METHOD HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.

  CLEAR WF_STRING1 .
  WF_STRING1 = HTTP_CLIENT->RESPONSE->GET_CDATA( ).

  REPLACE ALL OCCURRENCES OF
      '&lt;' IN WF_STRING1 WITH '<' .

  REPLACE ALL OCCURRENCES OF
   '&gt;' IN WF_STRING1 WITH '>' .

  REPLACE ALL OCCURRENCES OF
   'xmlns=' IN WF_STRING1 WITH 'xmlns:xsl=' .

  TRY .
      CALL TRANSFORMATION (`Y_AIRPORT_XML2ABAP`)
              SOURCE XML WF_STRING1
              RESULT     OUTTAB = OUTTAB.
    CATCH CX_XSLT_EXCEPTION INTO XSLT_ERR.
      DATA: S TYPE STRING.
      S = XSLT_ERR->GET_TEXT( ).
      WRITE: ': ', S.
      STOP.
  ENDTRY .

  LOOP AT OUTTAB INTO WA_OUTTAB .
    WRITE:/ WA_OUTTAB .
  ENDLOOP .


Code:

XSLT file for program example two
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:strip-space elements="*"/>
  <xsl:output indent="yes"/>
  <xsl:template match="NewDataSet">
    <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
      <asx:values>
        <OUTTAB>
          <xsl:for-each select="Table">
            <OUTTAB1>
              <AIRPORTCODE>
                <xsl:value-of select="AirportCode"/>
              </AIRPORTCODE>
              <CITYOFAIRPORTNAME>
                <xsl:value-of select="CityOrAirportName"/>
              </CITYOFAIRPORTNAME>
              <COUNTRY>
                <xsl:value-of select="Country"/>
              </COUNTRY>
              <COUNTRYABBRIVATION>
                <xsl:value-of select="CountryAbbrviation"/>
              </COUNTRYABBRIVATION>
              <COUNTRYCODE>
                <xsl:value-of select="CountryCode"/>
              </COUNTRYCODE>
              <GMTOFFSET>
                <xsl:value-of select="GMTOffset"/>
              </GMTOFFSET>
              <RUNWAYLENGTHFEET>
                <xsl:value-of select="RunwayLengthFeet"/>
              </RUNWAYLENGTHFEET>
              <RUNWAYELEVATIONFEET>
                <xsl:value-of select="RunwayElevationFeet"/>
              </RUNWAYELEVATIONFEET>
              <LATITUDEDEGREE>
                <xsl:value-of select="LatitudeDegree"/>
              </LATITUDEDEGREE>
              <LATITUDEMINUTE>
                <xsl:value-of select="LatitudeMinute"/>
              </LATITUDEMINUTE>
              <LATITUDESECOND>
                <xsl:value-of select="LatitudeSecond"/>
              </LATITUDESECOND>
              <LATITUDENPEERS>
                <xsl:value-of select="LatitudeNpeerS"/>
              </LATITUDENPEERS>
              <LONGITUDEDEGREE>
                <xsl:value-of select="LongitudeDegree"/>
              </LONGITUDEDEGREE>
              <LONGITUDEMINUTE>
                <xsl:value-of select="LongitudeMinute"/>
              </LONGITUDEMINUTE>
              <LONGITUDESECONDS>
                <xsl:value-of select="LongitudeSeconds"/>
              </LONGITUDESECONDS>
              <LONGITUDEEPERW>
                <xsl:value-of select="LongitudeEperW"/>
              </LONGITUDEEPERW>
            </OUTTAB1>
          </xsl:for-each>
        </OUTTAB>

      </asx:values>
    </asx:abap>
  </xsl:template>
</xsl:stylesheet>

Web services provider links:
http://www.webservicex.net/airport.asmx?op=GetAirportInformationByCountry
http://www.webservicex.net/CurrencyConvertor.asmx?op=ConversionRate

_________________
Молитва - это запрос разработчику на изменение кода программы.
Back to top
View user's profile Send private message Blog Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.