Como usar a API Translation com o SDK do ABAP para o Google Cloud

1. Introdução

Este codelab mostra etapas para chamar os métodos da API Translation V3 (avançado) usando o SDK do ABAP para o Google Cloud. Neste codelab, vamos aprender a traduzir um texto, detectar o idioma dele e listar os idiomas compatíveis usando a API Translation V3.

Os seguintes serviços do Google Cloud são usados neste codelab:

  • Compute Engine
  • Serviços de rede
  • Cloud Shell
  • API Cloud Translation V3

Pré-requisitos

O que você vai criar

Você vai criar os seguintes programas no seu sistema SAP usando o SDK do ABAP para o Google Cloud:

  • Traduza textos para vários idiomas usando a API Cloud Translation V3 do Google
  • Detectar o idioma do texto de origem usando a API Google Cloud Translation V3
  • Listar os idiomas compatíveis com a API Google Cloud Translation V3

2. Requisitos

  • Um navegador, como o Chrome ou o Firefox
  • Um projeto do Google Cloud com faturamento ativado ou crie uma conta de teste sem custo financeiro de 90 dias no Google Cloud Platform.
  • GUI do SAP (Windows ou Java) instalada no sistema. Se a GUI do SAP já estiver instalada na sua máquina, conecte-se ao SAP usando o endereço IP externo da VM como o IP do servidor de aplicativos. No Mac, você também pode instalar a GUI do SAP para Java, disponível neste link.

3. Antes de começar

6757b2fb50ddcc2d.png

  • Execute os comandos a seguir para autenticar sua conta e definir o projeto padrão como abap-sdk-poc. A zona us-west4-b é usada como exemplo. Se necessário, altere o projeto e a zona nos comandos a seguir de acordo com sua preferência.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
  • Você precisa ter acesso a um sistema SAP com o SDK do ABAP para Google Cloud instalado.
  • Você precisa concluir o codelab 1 (Instalar o teste da plataforma ABAP 1909 no Google Cloud Platform e instalar o SDK do ABAP para o Google Cloud) e o codelab 2 (Configurar a autenticação do SDK do ABAP usando tokens para SAP hospedados na VM do Compute Engine) antes de continuar com este codelab.
  • Se você concluiu o codelab 1 e o codelab 2, isso teria provisionado um sistema ABAP Platform Trial 1909 no Google Cloud, além da configuração necessária para autenticação e conectividade.
  • Se você não concluiu o codelab 1 e o 2, não terá toda a infraestrutura e conectividade necessárias para realizar as etapas indicadas neste codelab. Portanto, você precisa concluir os codelabs 1 e 2 antes de continuar com este.

4. Ativar a API Cloud Translation V3 no seu projeto do Google Cloud

  1. Execute o comando abaixo no Cloud Shell para ativar a API Cloud Translation no seu projeto do Google Cloud:
gcloud services enable translate.googleapis.com

Após a execução, uma mensagem conforme mostrado abaixo vai aparecer:

b5f52859df2c2f56.png

A API Cloud Translation já deve estar ativada no seu projeto do Google Cloud

5. Criar uma conta de serviço com o papel de usuário do Cloud Translation

Para criar uma conta de serviço com o papel necessário, siga estas etapas:

  1. Execute o seguinte comando no terminal do Cloud Shell:
gcloud iam service-accounts create abap-sdk-translation-tester \
--display-name="Service Account for Translation"
  1. Agora adicione os papéis necessários à conta de serviço criada na etapa acima.
gcloud projects add-iam-policy-binding abap-sdk-poc\
--member='serviceAccount:abap-sdk-translation-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/cloudtranslate.user'

O comando acima usa abap-sdk-poc como o nome do modelo do projeto do Google Cloud. Substitua pelo ID do projeto.

  1. Para verificar se o papel foi adicionado, acesse a página IAM. A conta de serviço que você criou deve estar listada junto com o papel que foi atribuído a ela, conforme mostrado abaixo:

6af77a519ed3e357.png

6. Criar configuração da chave do cliente

Agora que você configurou os pré-requisitos do Google Cloud, podemos prosseguir com a configuração no lado do SAP.

Para configurações relacionadas à autenticação e conectividade, o SDK do ABAP para Google Cloud usa a tabela /GOOG/CLIENT_KEY

Para manter a configuração na tabela /GOOG/CLIENT_KEY, siga estas etapas:

  1. Na GUI do SAP, insira o código da transação SPRO.
  2. Clique em IMG de referência SAP.
  3. Clique em ABAP SDK for Google Cloud > Configurações básicas > Configurar chave de cliente.
  4. Mantenha os seguintes valores nos campos:

Campo

Valor

Nome da chave do Google Cloud

TEST_TRANSLATION

Nome da conta de serviço do Google Cloud

abap-sdk-translation-tester@abap-sdk-poc.iam.gserviceaccount.com

Escopo do Google Cloud

https://www.googleapis.com/auth/cloud-platform

ID do projeto

abap-sdk-poc

Classe de autorização

/GOOG/CL_AUTH_GOOGLE

Deixe todos os outros campos em branco

7. Criar um relatório Z para chamar a API Cloud Translation V3 e traduzir um texto

  1. Faça login no seu sistema SAP.
  2. Acesse o código de transação SE38 e crie um Programa de relatórios com o nome ZDEMO_TRANSLATE_TEXT.
  3. No pop-up que aparece, forneça os detalhes conforme mostrado abaixo e clique em Salvar.

6ba124f9187d1fc0.png

No próximo pop-up, selecione "Objeto local" ou "Forneça um nome de pacote" como preferir.

  1. No Editor do ABAP, adicione o seguinte código:
DATA lo_translate TYPE REF TO /goog/cl_translation_v3.
DATA ls_input TYPE /goog/cl_translation_v3=>ty_050.

TRY.
    lo_translate = NEW #( iv_key_name = 'TEST_TRANSLATION').

    ls_input = VALUE #(  mime_type = 'text/plain'
                         source_language_code = 'en-US'
                         target_language_code = 'es-ES'
                         contents =  VALUE #( ( |Sun is our nearest star| ) ) ).

    lo_translate->translate_text_projects(
      EXPORTING
        iv_p_projects_id = CONV #( lo_translate->gv_project_id )
        is_input         = ls_input
      IMPORTING
        es_output        =  DATA(ls_output)
        ev_ret_code      =  DATA(lv_ret_code)
        ev_err_text      =  DATA(lv_err_text)
        es_err_resp      =  DATA(lv_err_resp)
    ).
    IF lo_translate->is_success( lv_ret_code ) = abap_true.
      cl_demo_output=>new(
      )->begin_section( 'API Call Successful:'
      )->write_text( 'Translated Text:'
      )->write_data( ls_output-translations[ 1 ]-translated_text
      )->display( ).
    ELSE.
      cl_demo_output=>new(
      )->begin_section( 'API Call Unsuccessful:'
      )->write_text( 'Error Message:'
      )->write_text( lv_err_text
      )->display( ).
    ENDIF.
  CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
    DATA(lv_error) = lo_sdk_excp->get_text( ).
    cl_demo_output=>new(
     )->begin_section( 'Exception Occured:'
     )->write_text( lv_error
     )->display( ).
ENDTRY.
  1. Salve e ative o relatório.
  2. Execute o relatório (F8).

Após a execução, a saída do relatório será exibida, conforme mostrado abaixo:

2dd3bf270d2b1477.png

8. Criar um relatório Z para chamar a API Cloud Translation V3 e detectar o idioma

  1. Faça login no seu sistema SAP.
  2. Acesse o código de transação SE38 e crie um Programa de relatórios com o nome ZDEMO_DETECT_LANGUAGE.
  3. No pop-up que aparece, forneça os detalhes conforme mostrado abaixo e clique em Salvar:

64c2eb0e0173ae51.png

No próximo pop-up, selecione "Objeto local" ou "Forneça um nome de pacote" como preferir.

  1. No Editor do ABAP, adicione o seguinte código:
DATA lo_translate TYPE REF TO /goog/cl_translation_v3.
DATA ls_input TYPE /goog/cl_translation_v3=>ty_009.

TRY.
    lo_translate = NEW #( iv_key_name = 'TEST_TRANSLATION').

    ls_input = VALUE #(  mime_type = |text/plain|
                         content =  |La luce viaggia più veloce del suono| ).

    lo_translate->detect_language_projects(
      EXPORTING
        iv_p_projects_id = CONV #( lo_translate->gv_project_id )
        is_input         = ls_input
      IMPORTING
        es_output        =  DATA(ls_output)
        ev_ret_code      =  DATA(lv_ret_code)
        ev_err_text      =  DATA(lv_err_text)
        es_err_resp      =  DATA(lv_err_resp)
    ).
    IF lo_translate->is_success( lv_ret_code ) = abap_true.
      cl_demo_output=>new(
      )->begin_section( 'API Call Successful:'
      )->write_text( 'Detected Language:'
      )->write_data( ls_output-languages[ 1 ]-language_code
      )->display( ).
    ELSE.
      cl_demo_output=>new(
      )->begin_section( 'API Call Unsuccessful:'
      )->write_text( 'Error Message:'
      )->write_text( lv_err_text
      )->display( ).
    ENDIF.
  CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
    DATA(lv_error) = lo_sdk_excp->get_text( ).
    cl_demo_output=>new(
     )->begin_section( 'Exception Occured:'
     )->write_text( lv_error
     )->display( ).
ENDTRY.
  1. Salve e ative o relatório.
  2. Execute o relatório (F8).

Após a execução, a saída do relatório será exibida, conforme mostrado abaixo:

a36e48bded53e62d.png

9. Criar um relatório Z para chamar o método GET_SUPPORTED_LANGUAGES

  1. Faça login no seu sistema SAP
  2. Acesse o código de transação SE38 e crie um Programa de relatórios com o nome ZDEMO_GET_LANGUAGES.
  3. No pop-up que aparece, forneça os detalhes conforme mostrado abaixo e clique em Salvar.

3819fc355cf2cd4d.png

No próximo pop-up, selecione "Objeto local" ou "Forneça um nome de pacote" como preferir.

  1. No Editor do ABAP, adicione o seguinte código:
DATA lo_translate TYPE REF TO /goog/cl_translation_v3.

TRY.
    lo_translate = NEW #( iv_key_name = 'TEST_TRANSLATION').

    lo_translate->get_supported_languages_pro(
      EXPORTING
        iv_q_displaylanguagecode = 'en-US'
        iv_p_projects_id         =  CONV #( lo_translate->gv_project_id )
      IMPORTING
        es_output        =  DATA(ls_output)
        ev_ret_code      =  DATA(lv_ret_code)
        ev_err_text      =  DATA(lv_err_text)
        es_err_resp      =  DATA(lv_err_resp)
    ).

    IF lo_translate->is_success( lv_ret_code ) = abap_true.
      cl_demo_output=>new(
      )->begin_section( 'API Call Successful:'
      )->write_text( 'Supported Languages:'
      )->write_data( ls_output-languages
      )->display( ).
    ELSE.
      cl_demo_output=>new(
      )->begin_section( 'API Call Unsuccessful:'
      )->write_text( 'Error Message:'
      )->write_text( lv_err_text
      )->display( ).
    ENDIF.
  CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
    DATA(lv_error) = lo_sdk_excp->get_text( ).
    cl_demo_output=>new(
     )->begin_section( 'Exception Occured:'
     )->write_text( lv_error
     )->display( ).
ENDTRY.
  1. Salve e ative o relatório.
  2. Execute o relatório (F8).

Após a execução, a saída do relatório será exibida, conforme mostrado abaixo:

78199926919e7801.png

10. Parabéns

Parabéns! Você concluiu o curso "Como usar a API Translation com o SDK do ABAP para o Google Cloud" o codelab.

A API Cloud Translation V3, também conhecida como API Cloud Translation Advanced, tem diversos recursos, incluindo:

  • Tradução com modelos personalizados
  • Traduzir usando glossários
  • Suporte à transliteração
  • Document Translation

Agora você pode prosseguir com os codelabs a seguir para continuar sua jornada de aprendizado sobre como usar o SDK do ABAP para o Google Cloud e acessar vários serviços do Google Cloud.

  • Enviar um evento para o Pub/Sub
  • Receber um evento do Cloud Pub/Sub
  • Fazer upload de um objeto grande em um bucket do Cloud Storage usando a divisão
  • Usar a API DLP para descarte de PII
  • Chamar o BigQuery ML do ABAP

11. Limpar

Caso não queira continuar com os codelabs adicionais relacionados ao SDK do ABAP para Google Cloud, faça a limpeza.

Excluir o projeto

  • Exclua o projeto do Google Cloud:
gcloud projects delete abap-sdk-poc

Excluir recursos individuais

  1. Exclua a instância de computação:
gcloud compute instances delete abap-trial-docker
  1. Exclua as regras de firewall:
gcloud compute firewall-rules delete sapmachine
  1. Exclua a conta de serviço:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com