1. Введение
В этом практическом задании мы перечислили шаги по созданию учетной записи службы и ее использованию для настройки таблицы ключей клиента и карты связи, предоставляемых ABAP SDK для Google Cloud, а также для вызова JSON API Cloud Storage в ABAP.
В данном практическом задании используются следующие сервисы Google Cloud:
- Вычислительный движок
- Сетевые службы
- Облачная оболочка
- JSON API облачного хранилища V1
Примечание: При создании нового проекта Google Cloud автоматически включается определенный набор API и сервисов, включая Cloud Storage. Это гарантирует, что вы сможете немедленно воспользоваться преимуществами этого мощного решения для хранения данных. Поэтому вам не нужно включать его на дополнительном этапе.
Предварительные требования
- Убедитесь, что у вас есть доступ к системе SAP с установленным ABAP SDK для Google Cloud.
- Для настройки новой системы вы можете обратиться к руководству по установке пробной версии платформы ABAP на платформе Google Cloud Platform и установке ABAP SDK .
Что вы построите
Вам потребуется создать следующие программы в вашей системе SAP, используя ABAP SDK для Google Cloud.
- Создайте корзину облачного хранилища.
- Прочитать файл с сервера приложений и загрузить его в созданный сегмент облачного хранилища.
2. Требования
- Браузер, например Chrome или Firefox .
- Проект Google Cloud с включенной оплатой или создайте 90-дневную бесплатную пробную учетную запись для Google Cloud Platform.
- SAP GUI (Windows или Java) должен быть установлен в вашей системе. Если SAP GUI уже установлен на вашем ноутбуке, подключитесь к SAP, используя внешний IP-адрес виртуальной машины в качестве IP-адреса сервера приложений. Если вы используете Mac, вы также можете установить SAP GUI для Java, доступный по этой ссылке.
3. Прежде чем начать
- Убедитесь, что у вас есть доступ к системе SAP с установленным ABAP SDK для Google Cloud.
- Для настройки новой системы вы можете обратиться к инструкциям в Codelab по установке пробной версии платформы ABAP на платформе Google Cloud Platform и установке ABAP SDK .
- В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud (например:
abap-sdk-poc). - Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата для проекта . Пропустите этот шаг, если вы используете 90-дневную бесплатную пробную учетную запись .
- Вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud. В консоли Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу:

- Выполните следующие команды для аутентификации вашей учетной записи и установите проект по умолчанию на
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 и установка ABAP SDK для Google Cloud ) и практическое задание 2 ( Настройка аутентификации ABAP SDK с использованием токенов для SAP, размещенного на виртуальной машине Compute Engine ).
- Если вы выполнили практическое задание 1 и практическое задание 2, это обеспечило вам доступ к пробной версии системы ABAP Platform Trial 1909 в Google Cloud, а также необходимую настройку для аутентификации и подключения.
- Если вы не прошли код-лабораторию 1 и код-лабораторию 2, у вас не будет всей необходимой инфраструктуры и подключения для выполнения шагов, описанных в этой код-лаборатории. Поэтому вам необходимо пройти код-лабораторию 1 и код-лабораторию 2, прежде чем приступать к этой код-лаборатории.
4. Создайте учетную запись службы с ролью пользователя объекта хранения.
Для создания служебной учетной записи с необходимой ролью выполните следующие действия:
- Выполните следующую команду в терминале Cloud Shell:
gcloud iam service-accounts create abap-sdk-storage-tester \
--display-name="Service Account for Cloud Storage"
- Теперь добавьте необходимые роли к учетной записи службы, созданной на предыдущем шаге:
gcloud projects add-iam-policy-binding abap-sdk-poc \
--member='serviceAccount:abap-sdk-storage-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/storage.objectUser'
Приведённая выше команда использует abap-sdk-poc в качестве заполнителя для проекта Google Cloud. Замените abap-sdk-poc на идентификатор вашего проекта.
- Чтобы убедиться, что роль добавлена, перейдите на страницу IAM . Там должна отображаться созданная вами учетная запись службы вместе с назначенной ей ролью, как показано ниже:

5. Создание конфигурации клиентского ключа
Теперь, когда вы выполнили все необходимые настройки на стороне Google Cloud, мы можем перейти к настройке на стороне SAP.
Для настройки аутентификации и подключения ABAP SDK для Google Cloud использует таблицу /GOOG/CLIENT_KEY
Для сохранения настроек в таблице /GOOG/CLIENT_KEY выполните следующие действия:
- В графическом интерфейсе SAP введите код транзакции
SPRO. - Нажмите на SAP Reference IMG .
- Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить ключ клиента.
- Сохраните следующие значения для полей:
Поле | Ценить |
Ключевое имя Google Cloud | TEST_STORAGE |
Имя учетной записи сервиса Google Cloud | |
Область применения Google Cloud | |
Идентификатор проекта | abap-sdk-poc |
Класс авторизации | |
Оставьте все остальные поля пустыми.
6. Создайте Z-отчет для создания сегмента в облачном хранилище.
- Войдите в свою систему SAP.
- Перейдите к транзакции
SE38и создайте программу отчета с именемZDEMO_CREATE_BUCKET. - Во всплывающем окне укажите следующие данные:

В следующем всплывающем окне выберите «Локальный объект» или «Укажите имя пакета» по своему усмотрению.
- В редакторе ABAP добавьте следующий код:
DATA lv_json_response TYPE string.
DATA ls_input TYPE /goog/cl_storage_v1=>ty_001.
DATA lo_storage TYPE REF TO /goog/cl_storage_v1.
TRY.
lo_storage = NEW #( iv_key_name = 'TEST_STORAGE' ).
" Bucket Name should be globally unique & permanent
ls_input = VALUE #( name = 'newtest_bucket_abapsdk_gcloud001' ).
lo_storage->insert_buckets
( EXPORTING iv_q_project = CONV #( lo_storage->gv_project_id )
is_input = ls_input
IMPORTING es_raw = lv_json_response
es_output = DATA(ls_output)
ev_ret_code = DATA(lv_ret_code)
ev_err_text = DATA(lv_err_text)
es_err_resp = DATA(ls_err_resp) ).
IF lo_storage->is_success( lv_ret_code ) = abap_true.
cl_demo_output=>new(
)->begin_section( 'Result:'
)->write_text( 'Bucket was created:'
)->next_section( 'JSON Response:'
)->write_json( lv_json_response
)->display( ).
ELSE.
DATA(lv_msg) = lv_ret_code && ':' && lv_err_text.
cl_demo_output=>new(
)->begin_section( 'Result:'
)->write_text( 'Bucket creation failed;'
)->next_section( 'Error:'
)->write_json( lv_msg
)->display( ).
ENDIF.
CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
lv_msg = lo_sdk_excp->get_text( ).
MESSAGE lv_msg TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
Обратите внимание: если имя корзины не является глобально уникальным, корзина не будет создана. Поэтому перед выполнением кода постарайтесь использовать уникальное имя для корзины.
- Сохраните и активируйте отчет.
- Запустите отчет (нажмите F8).
После успешного выполнения вы должны увидеть отчет, как показано ниже:

7. Создайте Z-отчет для чтения файла с сервера приложений и его загрузки в облачное хранилище.
Перед выполнением этой операции необходимо подготовить большой текстовый файл. У нас уже есть большой текстовый файл, созданный и загруженный на сервер приложений. Для загрузки файла на сервер приложений вашей системы SAP можно использовать транзакцию CG3Z.
В этом примере мы используем текстовый файл размером около 40 МБ, который уже загружен на сервер приложений в каталог /tmp .
Вы также можете скачать эту папку с GitHub, используя следующую ссылку: Sample File
- Войдите в свою систему SAP.
- Перейдите в транзакцию
SE38и создайте программу отчета с именемZDEMO_UPLOAD_FILE. - Во всплывающем окне укажите следующие данные:

В следующем всплывающем окне выберите «Локальный объект» или «Укажите имя пакета» по своему усмотрению.
- В редакторе ABAP добавьте следующий код:
DATA lv_file_length TYPE i.
DATA lv_msg TYPE string.
DATA lv_dset TYPE string.
DATA lv_data TYPE string.
DATA ls_data TYPE xstring.
DATA lo_storage TYPE REF TO /goog/cl_storage_v1.
" Read file data from the application server
DATA(dset) = '/tmp/sample_file.txt'.
OPEN DATASET dset FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc <> 0.
MESSAGE 'Cannot opening/reading dataset' TYPE 'E'.
ENDIF.
DO.
READ DATASET dset INTO lv_dset.
IF sy-subrc <> 0.
EXIT.
ENDIF.
CONCATENATE lv_data lv_dset INTO lv_data SEPARATED BY cl_abap_char_utilities=>newline.
CLEAR lv_dset.
ENDDO.
CLOSE DATASET dset.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING text = lv_data
IMPORTING buffer = ls_data
EXCEPTIONS failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Conversion from string to xstring failed' TYPE 'E'.
ENDIF.
TRY.
lo_storage = NEW #( iv_key_name = 'DEMO_STORAGE' ).
lo_storage->add_common_qparam( iv_name = 'uploadType' iv_value = 'resumable' ).
lo_storage->insert_objects( EXPORTING iv_q_name = 'large_text_file_demo.txt'
iv_p_bucket = 'newtest_bucket_abapsdk_gcloud001'
is_data = ls_data
iv_content_type = 'text/pdf'
IMPORTING es_output = data(ls_output)
ev_ret_code = data(lv_ret_code)
ev_err_text = data(lv_err_text)
es_err_resp = data(ls_err_resp) ).
IF lo_storage->is_success( lv_ret_code ) = abap_true.
cl_demo_output=>new(
)->begin_section( 'Result:'
)->write_text( 'Object was uploaded successfully'
)->write_text( 'Object Self Link:'
)->write_text( ls_output-self_link
)->display( ).
ELSE.
cl_demo_output=>new(
)->begin_section( 'Error:'
)->write_text( lv_msg
)->display( ).
ENDIF.
CATCH /goog/cx_sdk INTO data(lo_sdk_excp).
lv_msg = lo_sdk_excp->get_text( ).
MESSAGE lv_msg TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDTRY.
lo_storage->close( ).
- Сохраните и активируйте отчет.
- Запустите отчет (нажмите F8).
После успешного выполнения вы должны увидеть отчет, как показано ниже:

Вы можете проверить, успешно ли загружен файл, перейдя в свой облачный накопитель, как показано ниже.


8. Загрузка файла в облачное хранилище с использованием кода ABAP SDK (объяснение).
По сути, эта программа на ABAP интегрируется с Google Cloud Storage. Она считывает файл с сервера приложений и передает данные файла в API-клиент-заглушку API хранилища для загрузки в хранилище, созданное в предыдущей программе.
Созданная вами программа для формирования отчетов и загрузки файлов выполняет следующие действия:
Пошаговое описание
Установить соединение:
- Он устанавливает HTTP-соединение со службой Google Storage, используя класс
/GOOG/CL_STORAGE_V1.
Чтение данных файла
- Программа считывает файл на сервере приложений, выполняя команду
OPENDATASET, а затем вызывает стандартный функциональный модуль SAPSCMS_STRING_TO_XSTRINGдля преобразования в форматXSTRING.
Добавить общие параметры запроса
- Для реализации разбиения файла на части необходимо выбрать тип загрузки «Возобновляемая загрузка». По умолчанию при выборе возобновляемой загрузки данные файла разбиваются на части по 8 МБ и загружаются. Однако разработчики могут изменить размер этих частей, установив параметр
IV_P_CHUNK_SIZE, но рекомендуется использовать значение по умолчанию. - Чтобы сообщить методу API о необходимости выбора опции "Возобновляемая загрузка", мы вызываем метод
ADD_COMMON_QPARAMи передаемuploadTypeкакresumable.
Вставка объектов
- Вызывает метод
INSERT_OBJECTS, передавая ему следующие параметры: -
IV_Q_NAME: Имя файла, под которым будет храниться содержимое в облачном хранилище. -
IV_P_BUCKET: Имя корзины, куда необходимо загрузить файл. -
IS_DATA: Данные файла, которые необходимо загрузить. -
IV_CONTENT_TYPE: Тип содержимого файла. В нашем текущем сценарии мы используем "text/plain", поскольку загружаем текстовый файл.
Обратите внимание, что мы не передаем никакого значения параметру импорта IV_CHUNK_SIZE и позволяем API-клиенту использовать значение по умолчанию, связанное с этим параметром, которое равно 8 МБ.
Обработка успешных/ошибочных действий:
- Отображает ответ API в зависимости от того, был ли вызов API успешным или нет.
Тесная связь:
- Закрывает HTTP-соединение со службой хранения данных.
9. Поздравляем!
Поздравляем! Вы успешно завершили практическое занятие "Загрузка файла в облачное хранилище".
JSON API облачного хранилища обладает широкими возможностями, и с помощью ABAP SDK для Google Cloud вы можете получить к ним прямой доступ в своих системах SAP, используя ABAP.
Google Cloud Storage — отличный вариант для хранения и управления большими объемами данных. Он используется широким кругом предприятий, компаний и приложений.
Некоторые преимущества использования Google Cloud Storage:
- Экономическая эффективность: Google Cloud Storage — это экономичный способ хранения и управления большими объемами данных.
- Простота: Google Cloud Storage прост в использовании благодаря простому и интуитивно понятному API.
- Гибкость: Google Cloud Storage можно использовать с различными приложениями и платформами.
Теперь вы можете перейти к выполнению приведенного ниже практического задания, чтобы продолжить изучение использования ABAP SDK для доступа к различным облачным сервисам Google.
- Отправить событие в Pub/Sub
- Получите событие из Cloud Pub/Sub
- Используйте Cloud Translation API для перевода текстов.
- Используйте API DLP для удаления персональных данных.
- Вызов BigQuery ML из ABAP
10. Уборка
Если вы не хотите продолжать выполнение дополнительных практических заданий, связанных с ABAP SDK для Google Cloud, пожалуйста, перейдите к очистке.
Удалить проект
- Удалите проект Google Cloud:
gcloud projects delete abap-sdk-poc
Удалить отдельные ресурсы
- Удалите вычислительный экземпляр:
gcloud compute instances delete abap-trial-docker
- Удалите правила брандмауэра:
gcloud compute firewall-rules delete sapmachine
- Удалите учетную запись службы:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com