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 c LENGTH 50 DEFAULT '38.369035'.
PARAMETERS : p_lon TYPE c LENGTH 50  DEFAULT '27.196334'.
PARAMETERS : p_api TYPE c LENGTH 50
 DEFAULT 'GOOGLE_API_KEY'.


START-OF-SELECTION.

  DATA: lv_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_field( name = '~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.
  DATA: lf_uz TYPE i.
  DATA: lf_pos TYPE i.
  DATA: lf_content TYPE string.
  data: lf_ek type i.
  DO.
    lf_uz = strlen( content ).
    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