О практической работе
1. Введение
В этой лаборатории кода мы перечислили шаги по созданию учетной записи службы и ее использованию для настройки таблицы ключа клиента и карты связи, предоставленной ABAP SDK для Google Cloud, и вызова API JSON Cloud Storage в ABAP.
В этой лаборатории кода используются следующие сервисы Google Cloud:
- Вычислительный двигатель
- Сетевые службы
- Облачная оболочка
- Облачное хранилище JSON API V1
Примечание. Когда вы создаете новый проект Google Cloud, автоматически включается определенный набор API и сервисов, включая облачное хранилище. Это гарантирует, что вы сможете немедленно воспользоваться преимуществами этого надежного решения для хранения данных. Поэтому вам не нужно включать его в качестве дополнительного шага.
Предварительные условия
- Убедитесь, что у вас есть доступ к системе SAP с установленным ABAP SDK для Google Cloud.
- Вы можете обратиться к кодовой лаборатории « Установить пробную версию платформы ABAP на Google Cloud Platform и установить ABAP SDK », чтобы настроить новую систему.
Что ты построишь
Вы создадите следующие программы в своей системе SAP, используя ABAP SDK для Google Cloud.
- Создайте сегмент облачного хранилища.
- Считайте файл с сервера приложений и загрузите его в созданную корзину Cloud Storage.
2. Требования
- Браузер, например Chrome или Firefox .
- Проект Google Cloud с включенной оплатой или создайте 90-дневную бесплатную пробную учетную запись для Google Cloud Platform.
- SAP GUI (Windows или Java), установленный в вашей системе. Если графический интерфейс SAP уже установлен на вашем ноутбуке, подключитесь к SAP, используя внешний IP-адрес виртуальной машины в качестве IP-адреса сервера приложений. Если вы используете Mac, вы также можете установить графический интерфейс SAP для Java, доступный по этой ссылке.
3. Прежде чем начать
- Убедитесь, что у вас есть доступ к системе SAP с установленным ABAP SDK для Google Cloud.
- Вы можете обратиться к лаборатории кода «Установить пробную версию платформы ABAP на Google Cloud Platform» и «Установить ABAP SDK», чтобы настроить новую систему.
- В Google Cloud Console на странице выбора проекта выберите или создайте проект 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 Platform и установить ABAP SDK для Google Cloud ) и лабораторную работу 2 ( Настроить аутентификацию ABAP SDK с использованием токенов для SAP, размещенного на виртуальной машине Compute Engine ).
- Если вы завершили Codelab 1 и Codelab 2, это предоставит вам пробную систему ABAP Platform 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
. - Щелкните Справочное IMG SAP .
- Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить ключ клиента.
- Поддерживайте следующие значения для полей:
Поле | Ценить |
Имя облачного ключа Google | TEST_STORAGE |
Имя учетной записи облачной службы Google | |
Облачная область Google | |
Идентификатор проекта | 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-отчет для чтения файла с сервера приложений и загрузки его в корзину облачного хранилища.
Прежде чем выполнить это действие, вам необходимо подготовить большой текстовый файл. Здесь у нас уже есть большой текстовый файл, созданный и загруженный на наш сервер приложений. Вы можете использовать код транзакции CG3Z для загрузки файла на сервер приложений вашей системы SAP.
В этом примере мы используем текстовый файл размером ~40 МБ, который уже загружен на сервер приложений в каталоге /tmp
.
Вы также можете скачать эту папку с GitHub, воспользовавшись следующей ссылкой: Образец файла.
- Войдите в свою систему 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. Загрузить файл в Cloud Storage с помощью объясненного кода ABAP SDK
По сути, эта программа ABAP интегрируется с Google Cloud Storage. Он считывает файл с сервера приложений и передает данные файла в клиентскую заглушку API хранилища для загрузки в корзину хранилища, созданную в предыдущей программе создания отчетов.
Программа отчета, созданная вами для загрузки файла, выполняет следующие действия:
Пошаговая разбивка
Установить соединение:
- Он устанавливает HTTP-соединение со службой хранилища Google, используя класс
/GOOG/CL_STORAGE_V1
.
Чтение данных файла
- Считывает файл на сервере приложений, выполняя
OPEN
DATASET
, а затем вызывает стандартный функциональный модуль SAPSCMS_STRING_TO_XSTRING
для преобразования в форматXSTRING
.
Добавьте общие параметры запроса
- Чтобы добиться фрагментации, нам нужно выбрать тип загрузки «Возобновляемая». По умолчанию, когда выбрана возобновляемая загрузка, данные файла делятся на фрагменты по 8 МБ и загружаются. Однако разработчики могут изменить этот размер фрагментации, установив параметр
IV_P_CHUNK_SIZE
, но рекомендуется использовать настройку по умолчанию. - Чтобы сообщить методу API, что необходимо выбрать опцию загрузки «Resumable», мы вызываем метод
ADD_COMMON_QPARAM
и передаемuploadType
какresumable.
Вставить объекты
- Вызывает метод
INSERT_OBJECTS
, передавая ему следующие параметры: -
IV_Q_NAME
: имя файла, под которым содержимое должно храниться в облачном хранилище. -
IV_P_BUCKET
: имя сегмента, в который необходимо загрузить файл. -
IS_DATA
: данные файла, которые необходимо загрузить. -
IV_CONTENT_TYPE
: Тип контента файла. Для нашего текущего сценария мы используем «текст/обычный» при загрузке текстового файла.
Обратите внимание, что мы не передаем никакого значения параметру импорта 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 для перевода текстов
- Используйте DLP API для редактирования личных данных
- Вызов 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