Usa la API de Translation con el SDK de ABAP para Google Cloud

1. Introducción

En este codelab, se proporcionan pasos para llamar a los métodos de la API de Translation v3 (avanzada) con el SDK de ABAP para Google Cloud. En este codelab, veremos cómo traducir un texto, detectar su idioma y enumerar los idiomas compatibles con la API de Translation v3.

En este codelab, se usan los siguientes servicios de Google Cloud:

  • Compute Engine
  • Servicios de red
  • Cloud Shell
  • API de Cloud Translation v3

Requisitos previos

Qué compilarás

Crearás los siguientes programas en tu sistema SAP con el SDK de ABAP para Google Cloud:

  • Traduce texto a varios idiomas con la API de Cloud Translation v3 de Google
  • Detecta el idioma del texto fuente con la API de Google Cloud Translation v3
  • Cómo enumerar los idiomas compatibles de la API de Google Cloud Translation v3

2. Requisitos

  • Un navegador, como Chrome o Firefox
  • Un proyecto de Google Cloud con la facturación habilitada o crea una cuenta de prueba gratuita de 90 días para Google Cloud Platform.
  • GUI de SAP (Windows o Java) instalada en tu sistema Si la GUI de SAP ya está instalada en tu máquina, conéctate a SAP con la dirección IP externa de la VM como la IP del servidor de aplicaciones. Si usas Mac, también puedes instalar la GUI de SAP para Java disponible en este vínculo.

3. Antes de comenzar

6757b2fb50ddcc2d.png

  • Ejecuta los siguientes comandos para autenticar tu cuenta y establecer el proyecto predeterminado en abap-sdk-poc. Se usa la zona us-west4-b como ejemplo. Si es necesario, cambia el proyecto y la zona en los siguientes comandos según tus preferencias.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
  • Debes tener acceso a un sistema SAP con el SDK de ABAP para Google Cloud instalado.
  • Debes completar el codelab 1 (Instala la versión de prueba de ABAP Platform 1909 en Google Cloud Platform y el SDK de ABAP para Google Cloud) y el codelab 2 (Configura la autenticación del SDK de ABAP con tokens para SAP alojado en una VM de Compute Engine) antes de continuar con este codelab.
  • Si completaste los codelabs 1 y 2, se te aprovisionó un sistema de prueba de la plataforma de ABAP 1909 en Google Cloud, junto con la configuración necesaria para la autenticación y la conectividad.
  • Si no completaste los codelabs 1 y 2, no tendrás toda la infraestructura y conectividad necesarias para realizar los pasos que se proporcionan en este codelab. Por lo tanto, debes completar los codelabs 1 y 2 antes de continuar con este.

4. Habilita la versión 3 de la API de Cloud Translation en tu proyecto de Google Cloud

  1. Ejecuta el siguiente comando en Cloud Shell para habilitar la API de Cloud Translation en tu proyecto de Google Cloud:
gcloud services enable translate.googleapis.com

Si la ejecución se realiza correctamente, deberías ver un mensaje como el siguiente:

b5f52859df2c2f56.png

Ahora deberías tener habilitada la API de Cloud Translation en tu proyecto de Google Cloud.

5. Crea una cuenta de servicio con el rol de usuario de Cloud Translation

Para crear una cuenta de servicio con el rol requerido, sigue estos pasos:

  1. Ejecuta el siguiente comando en la terminal de Cloud Shell:
gcloud iam service-accounts create abap-sdk-translation-tester \
--display-name="Service Account for Translation"
  1. Ahora, agrega los roles necesarios a la cuenta de servicio creada en el paso anterior.
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'

El comando anterior usa abap-sdk-poc como nombre de la plantilla para el proyecto de Google Cloud. Reemplázalo por el ID de tu proyecto.

  1. Para verificar que se haya agregado el rol, ve a la página IAM. La cuenta de servicio que creaste debería aparecer en la lista junto con el rol que se le asignó, como se muestra a continuación:

6af77a519ed3e357.png

6. Crea la configuración de la clave de cliente

Ahora que configuraste los requisitos previos en Google Cloud, podemos continuar con la configuración en SAP.

Para la configuración relacionada con la autenticación y la conectividad, el SDK de ABAP para Google Cloud usa la tabla /GOOG/CLIENT_KEY.

Para mantener la configuración en la tabla /GOOG/CLIENT_KEY, sigue estos pasos:

  1. En la GUI de SAP, ingresa el código de transacción SPRO.
  2. Haz clic en IMG de referencia de SAP.
  3. Haz clic en SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.
  4. Mantén los siguientes valores en los campos:

Campo

Valor

Nombre de la clave de Google Cloud

TEST_TRANSLATION

Nombre de la cuenta de servicio de Google Cloud

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

Permiso de Google Cloud

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

ID del proyecto

abap-sdk-poc

Clase de autorización

/GOOG/CL_AUTH_GOOGLE

Deja todos los demás campos en blanco

7. Crea un informe Z para llamar a la API de Cloud Translation v3 y traducir un texto

  1. Accede a tu sistema SAP.
  2. Ve al código de transacción SE38 y crea un programa de informes con el nombre ZDEMO_TRANSLATE_TEXT..
  3. En la ventana emergente que se abre, proporciona los detalles como se muestra a continuación y haz clic en Guardar.

6ba124f9187d1fc0.png

En la siguiente ventana emergente, selecciona Objeto local o Proporciona un nombre de paquete según tu elección.

  1. En el editor de ABAP, agrega el siguiente 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. Guarda y activa el informe.
  2. Ejecuta el informe (F8).

Si la ejecución se realiza correctamente, deberías ver el resultado del informe como se muestra a continuación:

2dd3bf270d2b1477.png

8. Crea un informe Z para llamar a la API de Cloud Translation v3 y detectar el idioma

  1. Accede a tu sistema SAP.
  2. Ve al código de transacción SE38 y crea un programa de informes con el nombre ZDEMO_DETECT_LANGUAGE..
  3. En la ventana emergente que se abre, proporciona los detalles como se muestra a continuación y haz clic en Guardar:

64c2eb0e0173ae51.png

En la siguiente ventana emergente, selecciona Objeto local o Proporciona un nombre de paquete según tu elección.

  1. En el editor de ABAP, agrega el siguiente 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. Guarda y activa el informe.
  2. Ejecuta el informe (F8).

Si la ejecución se realiza correctamente, deberías ver el resultado del informe como se muestra a continuación:

a36e48bded53e62d.png

9. Crea un informe Z para llamar al método GET_SUPPORTED_LANGUAGES

  1. Accede a tu sistema SAP
  2. Ve al código de transacción SE38 y crea un programa de informes con el nombre ZDEMO_GET_LANGUAGES..
  3. En la ventana emergente que se abre, proporciona los detalles como se muestra a continuación y haz clic en Guardar.

3819fc355cf2cd4d.png

En la siguiente ventana emergente, selecciona Objeto local o Proporciona un nombre de paquete según tu elección.

  1. En el editor de ABAP, agrega el siguiente 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. Guarda y activa el informe.
  2. Ejecuta el informe (F8).

Si la ejecución se realiza correctamente, deberías ver el resultado del informe como se muestra a continuación:

78199926919e7801.png

10. Felicitaciones

¡Felicitaciones! Completaste correctamente el codelab "Cómo usar la API de Translation con el SDK de ABAP para Google Cloud".

La API de Cloud Translation v3, también conocida como API de Cloud Translation Advanced, tiene muchas funciones, como las siguientes:

  • Traducción con modelos personalizados
  • Cómo traducir con glosarios
  • Compatibilidad con transliteración
  • Traducción de documentos

Ahora puedes continuar con los siguientes codelabs para seguir con tu recorrido de aprendizaje sobre el uso del SDK de ABAP para Google Cloud y acceder a varios servicios de Google Cloud.

  • Envía un evento a Pub/Sub
  • Cómo recibir un evento de Cloud Pub/Sub
  • Sube un objeto grande a un bucket de Cloud Storage con la fragmentación
  • Usa la API de DLP para ocultar PII
  • Llama a BigQuery ML desde ABAP

11. Limpia

Si no deseas continuar con los codelabs adicionales relacionados con el SDK de ABAP para Google Cloud, continúa con la limpieza.

Borra el proyecto

  • Borra el proyecto de Google Cloud:
gcloud projects delete abap-sdk-poc

Cómo borrar recursos individuales

  1. Borra la instancia de procesamiento:
gcloud compute instances delete abap-trial-docker
  1. Borra las reglas de firewall:
gcloud compute firewall-rules delete sapmachine
  1. Borra la cuenta de servicio:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com