SAP ABAP üzerinden Google Api Kullanımı ve HTML Output

Abap üzerinden Google Geolocation API kullanım örneğidir. API Key selection screenden almaktadır. Bu kısmı isterseniz kodunuza da gömebilirsiniz.

REPORT zkaan_google_api NO STANDARD PAGE HEADING
                                   LINE-COUNT 132.

TYPE-POOLS:abap.
DATA:
  http_client TYPE REF TO if_http_client,
  content     TYPE string.



PARAMETERS p_lat  TYPE LENGTH 50 DEFAULT '38.369035'.
PARAMETERS p_lon TYPE LENGTH 50  DEFAULT '27.196334'.
PARAMETERS p_api TYPE LENGTH 50
 DEFAULT 'GOOGLE_API_KEY'.


START-OF-SELECTION.

  DATAlv_http_url TYPE string.

* Prepare the url of the address
  CONCATENATE
  'https://maps.googleapis.com/maps/api/geocode/xml?key='
  'GOOGLE_API_KEY'
  '&latlng='
  p_lat
  ','
  p_lon
  INTO lv_http_url .

  CALL METHOD cl_http_client=>create_by_url
    EXPORTING
      url                lv_http_url
    IMPORTING
      client             http_client
    EXCEPTIONS
      argument_not_found 1
      plugin_not_active  2
      internal_error     3
      OTHERS             4.

  IF sy-subrc 0.

    http_client->request->set_header_fieldname '~request_method' value 'GET' ).
    http_client->send).
*    http_client->receive( ).
*    content = http_client->response->get_data( ).

    CALL METHOD http_client->receive
      EXCEPTIONS
        http_communication_failure 1
        http_invalid_state         2
        http_processing_failed     3
        OTHERS                     4.
    content http_client->response->get_cdata).



    http_client->close).

  ENDIF.








  DATA:
    v_crlf TYPE char2"CRLF
    v_cr   TYPE char1"CR
    v_lf   TYPE char1"LF

  v_crlf cl_abap_char_utilities=>cr_lf.

  v_cr cl_abap_char_utilities=>cr_lf.

  v_lf cl_abap_char_utilities=>newline.
  DATAlf_uz TYPE i.
  DATAlf_pos TYPE i.
  DATAlf_content TYPE string.
  datalf_ek type i.
  DO.
    lf_uz strlencontent ).
    IF content ''.
      EXIT.
    ENDIF.
    SEARCH content FOR v_crlf .
    IF sy-subrc 0.lf_ek 2.
      lf_pos sy-fdpos .
    ELSE.
      SEARCH content FOR v_cr .
      IF sy-subrc 0.lf_ek 1.
        lf_pos sy-fdpos .
      ELSE.
        SEARCH content FOR v_lf .
        IF sy-subrc 0.lf_ek 1.
          lf_pos sy-fdpos .
        ELSE.

          lf_pos lf_uz.
        ENDIF.
      ENDIF.
    ENDIF.
    lf_content content+0(lf_pos).
    WRITE:/ lf_content.
    ADD lf_ek TO lf_pos.
    IF lf_pos GT lf_uz.
      EXIT.
    ENDIF.
    content content+lf_pos.
  ENDDO.

Hiç yorum yok:

Yorum Gönder