Использование API перевода с ABAP SDK для Google Cloud

1. Введение

В этой лаборатории кода представлены инструкции по вызову методов API перевода версии 3 (расширенный) с использованием ABAP SDK для Google Cloud. В этой кодовой лаборатории мы увидим, как переводить текст, определять язык текста и перечислять поддерживаемые языки с помощью API перевода V3.

В этой лаборатории кода используются следующие сервисы Google Cloud:

  • Вычислительный двигатель
  • Сетевые службы
  • Облачная оболочка
  • API облачного перевода 3.

Предварительные условия

Что ты построишь

Вы создадите следующие программы в своей системе SAP, используя ABAP SDK для Google Cloud:

  • Переведите текст на несколько языков с помощью Google Cloud Translation API V3.
  • Определите язык исходного текста с помощью Google Cloud Translation API V3.
  • Список поддерживаемых языков Google Cloud Translation API V3

2. Требования

  • Браузер, например Chrome или Firefox .
  • Проект Google Cloud с включенной оплатой или создайте 90-дневную бесплатную пробную учетную запись для Google Cloud Platform.
  • SAP GUI (Windows или Java), установленный в вашей системе. Если графический интерфейс SAP уже установлен на вашем компьютере, подключитесь к SAP, используя внешний IP-адрес виртуальной машины в качестве IP-адреса сервера приложений. Если вы используете Mac, вы также можете установить графический интерфейс SAP для Java, доступный по этой ссылке.

3. Прежде чем начать

6757b2fb50ddcc2d.png

  • Выполните следующие команды для аутентификации своей учетной записи и установите проект по умолчанию abap-sdk-poc . В качестве примера используется зона us-west4-b . При необходимости измените проект и зону с помощью следующих команд в соответствии с вашими предпочтениями.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
  • У вас должен быть доступ к системе SAP с установленным ABAP SDK для Google Cloud.
  • Прежде чем приступить к этой лаборатории кода, необходимо выполнить лабораторную работу 1 ( Установить пробную версию платформы ABAP 1909 на Google Cloud Platform и установить ABAP SDK для Google Cloud) и лабораторную работу 2 ( Настроить аутентификацию ABAP SDK с использованием токенов для SAP, размещенного на виртуальной машине Compute Engine ).
  • Если вы завершили Codelab 1 и Codelab 2, это предоставит вам пробную систему ABAP Platform Trial 1909 в Google Cloud, а также необходимые настройки для аутентификации и подключения.
  • Если вы не завершили работу над кодом 1 и кодом 2, у вас не будет всей необходимой инфраструктуры и возможностей подключения для выполнения шагов, описанных в этой лаборатории кода. Таким образом, вы должны завершить кодовую таблицу 1 и кодовую таблицу 2, прежде чем приступать к этой кодовой таблице.

4. Включите Cloud Translation API V3 в своем проекте Google Cloud.

  1. Выполните приведенную ниже команду в Cloud Shell, это включит Cloud Translation API в вашем проекте Google Cloud:
gcloud services enable translate.googleapis.com

При успешном выполнении вы должны увидеть сообщение, как показано ниже:

b5f52859df2c2f56.png

Теперь в вашем проекте Google Cloud должен быть включен Cloud Translation API.

5. Создайте учетную запись службы с ролью пользователя Cloud Translation.

Чтобы создать сервисную учетную запись с необходимой ролью, выполните следующие действия:

  1. Выполните следующую команду в терминале Cloud Shell:
gcloud iam service-accounts create abap-sdk-translation-tester \
--display-name="Service Account for Translation"
  1. Теперь добавьте необходимые роли в сервисную учетную запись, созданную на предыдущем шаге.
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'

Приведенная выше команда использует abap-sdk-poc в качестве имени шаблона для проекта Google Cloud. Замените его идентификатором вашего проекта.

  1. Чтобы убедиться, что роль добавлена, перейдите на страницу IAM . Созданная вами учетная запись службы должна быть указана вместе с назначенной ей ролью, как показано ниже:

6af77a519ed3e357.png

6. Создайте конфигурацию ключа клиента.

Теперь, когда вы настроили предварительные условия на стороне Google Cloud, мы можем продолжить настройку на стороне SAP.

Для конфигурации, связанной с аутентификацией и подключением, ABAP SDK для Google Cloud использует таблицу /GOOG/CLIENT_KEY

Чтобы сохранить конфигурацию в таблице /GOOG/CLIENT_KEY , выполните следующие действия:

  1. В графическом интерфейсе SAP введите код транзакции SPRO .
  2. Щелкните Справочное IMG SAP .
  3. Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить ключ клиента.
  4. Поддерживайте следующие значения для полей:

Поле

Ценить

Имя облачного ключа Google

TEST_TRANSLATION

Имя учетной записи облачной службы Google

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

Облачная область Google

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

Идентификатор проекта

abap-sdk-poc

Класс авторизации

/GOOG/CL_AUTH_GOOGLE

Все остальные поля оставьте пустыми

7. Создайте Z-отчет для вызова Cloud Translation API V3 и перевода текста.

  1. Войдите в свою систему SAP.
  2. Перейдите к коду транзакции SE38 и создайте программу отчетов с именем ZDEMO_TRANSLATE_TEXT.
  3. В открывшемся всплывающем окне укажите сведения, как показано ниже, и нажмите «Сохранить» .

6ba124f9187d1fc0.png

В следующем всплывающем окне выберите «Локальный объект» или укажите имя пакета по вашему выбору.

  1. В редакторе ABAP добавьте следующий код:
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. Сохраните и активируйте отчет.
  2. Выполнить отчет (F8).

В случае успешного выполнения вы должны увидеть выходные данные отчета, как показано ниже:

2dd3bf270d2b1477.png

8. Создайте Z-отчет для вызова Cloud Translation API V3 и определения языка.

  1. Войдите в свою систему SAP.
  2. Перейдите к коду транзакции SE38 и создайте программу отчетов с именем ZDEMO_DETECT_LANGUAGE.
  3. В открывшемся всплывающем окне укажите детали, как показано ниже, и нажмите «Сохранить» :

64c2eb0e0173ae51.png

В следующем всплывающем окне выберите «Локальный объект» или укажите имя пакета по вашему выбору.

  1. В редакторе ABAP добавьте следующий код:
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. Сохраните и активируйте отчет.
  2. Выполнить отчет (F8).

В случае успешного выполнения вы должны увидеть выходные данные отчета, как показано ниже:

a36e48bded53e62d.png

9. Создайте Z-отчет для вызова метода GET_SUPPORTED_LANGUAGES.

  1. Войдите в свою систему SAP
  2. Перейдите к коду транзакции SE38 и создайте программу отчетов с именем ZDEMO_GET_LANGUAGES.
  3. В открывшемся всплывающем окне укажите детали, как показано ниже, и нажмите «Сохранить» .

3819fc355cf2cd4d.png

В следующем всплывающем окне выберите «Локальный объект» или укажите имя пакета по вашему выбору.

  1. В редакторе ABAP добавьте следующий код:
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. Сохраните и активируйте отчет.
  2. Выполнить отчет (F8).

В случае успешного выполнения вы должны увидеть выходные данные отчета, как показано ниже:

78199926919e7801.png

10. Поздравления

Поздравляем! Вы успешно завершили лабораторную работу «Использование API перевода с ABAP SDK для Google Cloud».

Cloud Translation API V3, также известный как Cloud Translation API Advanced, имеет множество функций, в том числе:

  • Перевести с помощью пользовательских моделей
  • Перевести с помощью глоссариев
  • Поддержка транслитерации
  • Перевод документов

Теперь вы можете перейти к следующим лабораторным работам по коду, чтобы продолжить обучение использованию ABAP SDK для Google Cloud для доступа к различным облачным службам Google.

  • Отправить событие в Pub/Sub
  • Получить событие из Cloud Pub/Sub
  • Загрузите большой объект в корзину Cloud Storage, используя фрагментирование.
  • Используйте DLP API для редактирования личных данных
  • Вызов BigQuery ML из ABAP

11. Очистка

Если вы не хотите продолжать работу с дополнительными лабораториями кода, связанными с ABAP SDK для Google Cloud, продолжите очистку.

Удалить проект

  • Удалите проект Google Cloud:
gcloud projects delete abap-sdk-poc

Удаление отдельных ресурсов

  1. Удалите вычислительный экземпляр:
gcloud compute instances delete abap-trial-docker
  1. Удалите правила брандмауэра:
gcloud compute firewall-rules delete sapmachine
  1. Удалить сервисный аккаунт:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com