1. Wprowadzenie
W tym ćwiczeniu znajdziesz instrukcje tworzenia konta usługi i używania go do konfigurowania klucza klienta i tabeli mapy komunikacji udostępnianych przez pakiet ABAP SDK for Google Cloud oraz wywoływania interfejsu Cloud Storage JSON API w ABAP.
W tym ćwiczeniu wykorzystywane są te usługi Google Cloud:
- Compute Engine
- Usługi sieciowe
- Cloud Shell
- Cloud Storage JSON API V1
Uwaga: gdy tworzysz nowy projekt Google Cloud, automatycznie włączany jest określony zestaw interfejsów API i usług, w tym Cloud Storage. Dzięki temu możesz od razu korzystać z tego niezawodnego rozwiązania do przechowywania danych. Dlatego nie musisz go włączać w ramach dodatkowego kroku.
Wymagania wstępne
- Sprawdź, czy masz dostęp do systemu SAP z zainstalowanym pakietem ABAP SDK for Google Cloud.
- Aby skonfigurować nowy system, zapoznaj się z ćwiczeniem „Instalowanie wersji próbnej platformy ABAP na Google Cloud Platform i instalowanie pakietu ABAP SDK”.
Co utworzysz
W systemie SAP utworzysz te programy przy użyciu pakietu ABAP SDK for Google Cloud:
- Utwórz zasobnik Cloud Storage.
- Odczytaj plik z serwera aplikacji i prześlij go do utworzonego zasobnika Cloud Storage.
2. Wymagania
- przeglądarka, np. Chrome lub Firefox;
- Projekt Google Cloud z włączonym rozliczeniem lub utwórz 90-dniowe konto próbne w Google Cloud Platform.
- SAP GUI (Windows lub Java) zainstalowany w systemie. Jeśli SAP GUI jest już zainstalowany na laptopie, połącz się z SAP, używając zewnętrznego adresu IP maszyny wirtualnej jako adresu IP serwera aplikacji. Jeśli korzystasz z komputera Mac, możesz też zainstalować SAP GUI for Java, który jest dostępny pod tym linkiem.
3. Zanim zaczniesz
- Sprawdź, czy masz dostęp do systemu SAP z zainstalowanym pakietem ABAP SDK for Google Cloud.
- Aby skonfigurować nowy system, zapoznaj się z ćwiczeniem Instalowanie wersji próbnej platformy ABAP w Google Cloud Platform i instalowanie pakietu ABAP SDK.
- W konsoli Google Cloud na stronie selektora projektów wybierz lub utwórz projekt Google Cloud (np.
abap-sdk-poc). - Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności. Pomiń ten krok, jeśli korzystasz z 90-dniowego konta próbnego.
- Będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud. W konsoli Cloud kliknij Aktywuj Cloud Shell w prawym górnym rogu:

- Uruchom te polecenia, aby uwierzytelnić się na koncie i ustawić domyślny projekt na
abap-sdk-poc. Jako przykładu używamy strefyus-west4-b. W razie potrzeby zmień projekt i strefę w tych poleceniach zgodnie ze swoimi preferencjami.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
- Musisz mieć dostęp do systemu SAP z zainstalowanym pakietem ABAP SDK for Google Cloud.
- Zanim przejdziesz do tego ćwiczenia, musisz wykonać ćwiczenie 1 (Instalowanie wersji próbnej platformy ABAP 1909 w Google Cloud Platform i pakietu ABAP SDK for Google Cloud) i ćwiczenie 2 (Konfigurowanie uwierzytelniania za pomocą pakietu ABAP SDK przy użyciu tokenów dla systemu SAP hostowanego w maszynie wirtualnej Compute Engine).
- Jeśli masz za sobą ćwiczenia 1 i 2, powinna być już dla Ciebie dostępna wersja próbna platformy ABAP 1909 w Google Cloud wraz z wymaganą konfiguracją uwierzytelniania i łączności.
- Jeśli nie ukończysz ćwiczeń 1 i 2, nie będziesz mieć całej wymaganej infrastruktury i połączeń, aby wykonać czynności opisane w tym ćwiczeniu. Dlatego przed rozpoczęciem tego ćwiczenia musisz ukończyć ćwiczenie 1 i ćwiczenie 2.
4. Tworzenie konta usługi z rolą użytkownika obiektów Cloud Storage
Aby utworzyć konto usługi z wymaganą rolą, wykonaj te czynności:
- Uruchom w terminalu Cloud Shell to polecenie:
gcloud iam service-accounts create abap-sdk-storage-tester \
--display-name="Service Account for Cloud Storage"
- Teraz dodaj do konta usługi utworzonego w poprzednim kroku wymagane role:
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'
W powyższym poleceniu abap-sdk-poc jest symbolem zastępczym projektu Google Cloud. Zastąp abap-sdk-poc identyfikatorem projektu.
- Aby sprawdzić, czy rola została dodana, otwórz stronę Uprawnienia. Utworzone konto usługi powinno być widoczne wraz z przypisaną do niego rolą, jak pokazano poniżej:

5. Tworzenie konfiguracji klucza klienta
Po skonfigurowaniu wymagań wstępnych po stronie Google Cloud możemy przejść do konfiguracji po stronie SAP.
W przypadku konfiguracji związanej z uwierzytelnianiem i łącznością pakiet ABAP SDK for Google Cloud korzysta z tabeli /GOOG/CLIENT_KEY.
Aby zachować konfigurację w tabeli /GOOG/CLIENT_KEY, wykonaj te czynności:
- W SAP GUI wpisz kod transakcji
SPRO. - Kliknij SAP Reference IMG (SAP Reference IMG).
- Kliknij ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta.
- Wpisz w polach te wartości:
Pole | Wartość |
Nazwa klucza Google Cloud | TEST_STORAGE |
Nazwa konta usługi Google Cloud |
|
Zakres Google Cloud |
|
Identyfikator projektu | abap-sdk-poc |
Klasa autoryzacji |
|
Pozostaw wszystkie pozostałe pola puste.
6. Tworzenie raportu Z w celu utworzenia zasobnika w Cloud Storage
- Zaloguj się w systemie SAP.
- Otwórz kod transakcji
SE38i utwórz program raportowania o nazwieZDEMO_CREATE_BUCKET.. - W wyświetlonym okienku podaj szczegóły zgodnie z poniższymi instrukcjami:

W następnym wyskakującym okienku wybierz opcję Local Object (Obiekt lokalny) lub Provide a package name (Podaj nazwę pakietu) zgodnie z własnym wyborem.
- W edytorze ABAP dodaj ten kod:
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.
Pamiętaj, że jeśli nazwa zasobnika nie jest globalnie unikalna, zasobnik nie zostanie utworzony. Dlatego przed wykonaniem kodu spróbuj użyć unikalnej nazwy zasobnika.
- Zapisz i aktywuj raport.
- Wykonaj raport (naciśnij F8).
Po pomyślnym wykonaniu powinien wyświetlić się raport podobny do tego:

7. Tworzenie raportu Z do odczytywania pliku z serwera aplikacji i przesyłania go do zasobnika Cloud Storage
Zanim wykonasz to działanie, musisz przygotować duży plik tekstowy. Mamy już utworzony duży plik tekstowy i przesłany na serwer aplikacji. Aby przesłać plik na serwer aplikacji systemu SAP, możesz użyć kodu transakcji CG3Z.
W tym przykładzie używamy pliku tekstowego o rozmiarze około 40 MB, który został już przesłany na serwer aplikacji do katalogu /tmp.
Ten folder możesz też pobrać z GitHuba, korzystając z tego linku: plik przykładowy.
- Zaloguj się w systemie SAP.
- Otwórz kod transakcji
SE38i utwórz program raportowania o nazwieZDEMO_UPLOAD_FILE.. - W wyświetlonym okienku podaj szczegóły zgodnie z poniższymi instrukcjami:

W następnym wyskakującym okienku wybierz opcję Local Object (Obiekt lokalny) lub Provide a package name (Podaj nazwę pakietu) zgodnie z własnym wyborem.
- W edytorze ABAP dodaj ten kod:
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( ).
- Zapisz i aktywuj raport.
- Wykonaj raport (naciśnij F8).
Po pomyślnym wykonaniu powinien wyświetlić się raport podobny do tego:

Aby sprawdzić, czy plik został przesłany, przejdź do zasobnika Cloud Storage w sposób pokazany poniżej.


8. Wyjaśnienie kodu ABAP SDK do przesyłania plików do Cloud Storage
Ten program ABAP integruje się z Google Cloud Storage. Odczytuje plik z serwera aplikacji i przekazuje dane pliku do klienta API interfejsu Storage API, aby przesłać go do zasobnika na dane utworzonego w poprzednim programie raportu.
Utworzony przez Ciebie program do przesyłania plików raportów wykonuje te czynności:
Szczegółowe zestawienie
Nawiązywanie połączenia:
- Ustanawia połączenie HTTP z usługą Google Storage za pomocą klasy
/GOOG/CL_STORAGE_V1.
Odczyt danych z pliku
- Odczytuje plik na serwerze aplikacji, wykonując operację
OPENDATASET, a następnie wywołuje standardowy moduł funkcji SAPSCMS_STRING_TO_XSTRING, aby przekonwertować go do formatuXSTRING.
Dodawanie typowych parametrów zapytania
- Aby podzielić plik na części, musimy wybrać typ przesyłania „Wznawialne”. Gdy wybierzesz przesyłanie z możliwością wznowienia, dane pliku zostaną domyślnie podzielone na części po 8 MB i przesłane. Programiści mogą jednak zmienić rozmiar tych części, ustawiając parametr
IV_P_CHUNK_SIZE, ale zalecamy używanie ustawienia domyślnego. - Aby poinformować metodę interfejsu API, że należy wybrać opcję przesyłania „Resumable”, wywołujemy metodę
ADD_COMMON_QPARAMi przekazujemyuploadTypejakoresumable..
Wstawianie obiektów
- Wywołuje metodę
INSERT_OBJECTS, przekazując do niej te parametry: IV_Q_NAME: nazwa pliku, pod którą zawartość ma być przechowywana w Cloud Storage.IV_P_BUCKET: nazwa zasobnika, do którego należy przesłać plikIS_DATA: dane pliku, które należy przesłać;IV_CONTENT_TYPE: typ zawartości pliku. W naszym przypadku używamy wartości „text/plain”, ponieważ przesyłamy plik tekstowy.
Pamiętaj, że nie przekazujemy żadnej wartości do parametru importowania IV_CHUNK_SIZE i pozwalamy, aby stub klienta interfejsu API używał wartości domyślnej powiązanej z tym parametrem, czyli 8 MB.
Obsługa sukcesu/błędów:
- Wyświetla odpowiedź interfejsu API w zależności od tego, czy wywołanie interfejsu API zakończyło się powodzeniem.
Zamknij połączenie:
- Zamyka połączenie HTTP z usługą Storage Service.
9. Gratulacje
Gratulacje! Udało Ci się ukończyć ćwiczenie „Przesyłanie pliku do zasobnika Cloud Storage”.
Interfejs Cloud Storage JSON API ma wiele funkcji, a dzięki pakietowi ABAP SDK for Google Cloud możesz uzyskać do nich dostęp bezpośrednio w systemach SAP w sposób natywny za pomocą języka ABAP.
Google Cloud Storage to doskonałe rozwiązanie do przechowywania dużych ilości danych i zarządzania nimi. Jest on używany przez wiele firm, przedsiębiorstw i aplikacji.
Oto niektóre zalety korzystania z Google Cloud Storage:
- Opłacalność: Google Cloud Storage to ekonomiczny sposób przechowywania dużych ilości danych i zarządzania nimi.
- Prostota: Google Cloud Storage jest łatwy w obsłudze dzięki prostemu i intuicyjnemu interfejsowi API.
- Elastyczność: Google Cloud Storage można używać z różnymi aplikacjami i platformami.
Aby kontynuować naukę korzystania z pakietu ABAP SDK w celu uzyskiwania dostępu do różnych usług Google Cloud, możesz teraz przejść do poniższego ćwiczenia.
- Wysyłanie zdarzenia do Pub/Sub
- Odbieranie zdarzenia z Cloud Pub/Sub
- Używanie interfejsu Cloud Translation API do tłumaczenia tekstów
- Używanie interfejsu DLP API do redagowania informacji umożliwiających identyfikację
- Wywoływanie BigQuery ML z ABAP
10. Czyszczenie danych
Jeśli nie chcesz kontynuować pracy z dodatkowymi ćwiczeniami związanymi z pakietem ABAP SDK for Google Cloud, przejdź do sekcji czyszczenia.
Usuwanie projektu
- Usuń projekt Google Cloud:
gcloud projects delete abap-sdk-poc
Usuwanie poszczególnych zasobów
- Usuń instancję obliczeniową:
gcloud compute instances delete abap-trial-docker
- Usuń reguły zapory sieciowej:
gcloud compute firewall-rules delete sapmachine
- Usuń konto usługi:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com