1. Wprowadzenie
W tym laboratorium kodu znajdziesz instrukcje tworzenia konta usługi i używania go do konfigurowania tabeli kluczy klienta i tabeli mapy komunikacji udostępnianych przez ABAP SDK dla Google Cloud oraz wywoływania interfejsu Cloud Storage JSON API w ABAP.
W tym samouczku są używane te usługi Google Cloud:
- Compute Engine
- Usługi sieciowe
- Cloud Shell
- Cloud Storage JSON API w wersji 1
Uwaga: podczas tworzenia nowego projektu 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ć jako dodatkowego kroku.
Wymagania wstępne
- Upewnij się, że masz dostęp do systemu SAP z zainstalowanym pakietem ABAP SDK dla Google Cloud.
- Aby skonfigurować nowy system, możesz skorzystać z laboratorium kodu „Install ABAP Platform Trial on Google Cloud Platform and Install ABAP SDK”.
Co utworzysz
W systemie SAP utworzysz te programy za pomocą pakietu ABAP SDK dla Google Cloud:
- Utwórz zasobnik Cloud Storage.
- Odczytaj plik z serwera aplikacji i prześlij go do utworzonego zasobnika Cloud Storage.
2. Wymagania
- przeglądarkę, np. Chrome lub Firefox;
- Projekt Google Cloud z włączonymi płatnościami lub utwórz konto na 90-dniowy okres próbny w Google Cloud Platform.
- interfejs graficzny SAP (wersja na system Windows lub Java) zainstalowany w systemie; Jeśli interfejs 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 używasz komputera Mac, możesz też zainstalować interfejs SAP dla Javy, który jest dostępny pod tym linkiem.
3. Zanim zaczniesz
- Upewnij się, że masz dostęp do systemu SAP z zainstalowanym ABAP SDK for Google Cloud.
- Aby skonfigurować nowy system, możesz skorzystać z ćwiczenia z programowania Zainstaluj wersję próbną platformy ABAP na Google Cloud Platform i zainstaluj pakiet ABAP SDK.
- W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt Google Cloud (na przykład:
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 konta w ramach 90-dniowego okresu próbnego.
- Użyjesz Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud. W Cloud Console w prawym górnym rogu kliknij Aktywuj Cloud Shell:
- Uruchom te polecenia, aby uwierzytelnić swoje konto i ustawić projekt domyślny jako
abap-sdk-poc
. W tym przykładzie użyto strefyus-west4-b
. W razie potrzeby zmień projekt i strefę w poniższych 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 ukończyć ćwiczenie 1 (Zainstaluj wersję próbną platformy ABAP 1909 na Google Cloud Platform i zainstaluj pakiet ABAP SDK dla Google Cloud) oraz ćwiczenie 2 (Skonfiguruj uwierzytelnianie ABAP SDK za pomocą tokenów dla SAP hostowanego w maszynie wirtualnej Compute Engine).
- Jeśli wykonasz ćwiczenia 1 i 2, w Google Cloud zostanie utworzony system ABAP Platform Trial 1909 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 ani połączeń, aby wykonać czynności opisane w tym ćwiczeniu. Dlatego zanim przejdziesz do tego ćwiczenia, musisz ukończyć ćwiczenia 1 i 2.
4. Tworzenie konta usługi z rolą użytkownika obiektu 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 wymagane role do konta usługi utworzonego w poprzednim kroku:
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 miejscem zastępczym dla projektu Google Cloud. Zastąp abap-sdk-poc
identyfikatorem projektu.
- Aby sprawdzić, czy dodano rolę, otwórz stronę IAM. Utworzone konto usługi powinno być widoczne wraz z przypisaną do niego rolą, jak pokazano poniżej:
5. Tworzenie konfiguracji klucza klienta
Ponieważ masz już skonfigurowane wymagania wstępne 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 używa tabeli /GOOG/CLIENT_KEY
Aby zachować konfigurację w tabeli /GOOG/CLIENT_KEY, wykonaj te czynności:
- W interfejsie graficznym SAP wpisz kod transakcji
SPRO
. - Kliknij SAP Reference IMG (Referencyjny obraz SAP).
- Kliknij ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta.
- Zachowaj te wartości w polach:
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-Report w celu utworzenia zasobnika w Cloud Storage
- Zaloguj się w systemie SAP.
- Otwórz kod transakcji
SE38
i utwórz program raportowania o nazwieZDEMO_CREATE_BUCKET.
. - W wyskakującym okienku podaj informacje, jak pokazano poniżej:
W następnym wyskakującym okienku wybierz Obiekt lokalny lub Podaj nazwę pakietu.
- 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 niepowtarzalna, nie zostanie on utworzony. Dlatego przed wykonaniem kodu spróbuj użyć niepowtarzalnej nazwy zasobnika.
- Zapisz i aktywuj raport.
- Wykonaj raport (naciśnij klawisz F8).
Po pomyślnym wykonaniu powinieneś zobaczyć dane wyjściowe raportu, jak pokazano poniżej:
7. Tworzenie raportu Z-Report do odczytania pliku z serwera aplikacji i przesłanie go do zasobnika Cloud Storage
Zanim wykonasz to ćwiczenie, musisz przygotować duży plik tekstowy. Mamy już duży plik tekstowy utworzony i przesłany na nasz serwer aplikacji. Kod transakcji CG3Z możesz użyć do przesłania pliku na serwer aplikacji systemu SAP.
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
.
Możesz też pobrać ten folder z GitHuba, korzystając z tego linku: Plik przykładowy.
- Logowanie się w systemie SAP
- Otwórz kod transakcji
SE38
i utwórz program raportowania o nazwieZDEMO_UPLOAD_FILE.
. - W wyskakującym okienku podaj informacje, jak pokazano poniżej:
W następnym wyskakującym okienku wybierz Obiekt lokalny lub Podaj nazwę pakietu.
- 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 klawisz F8).
Po pomyślnym wykonaniu powinieneś zobaczyć dane wyjściowe raportu, jak pokazano poniżej:
Aby sprawdzić, czy plik został przesłany, przejdź do zasobnika Cloud Storage w sposób pokazany poniżej.
8. Przesyłanie pliku do Cloud Storage za pomocą kodu pakietu ABAP SDK
Zasadniczo ten program ABAP integruje się z Google Cloud Storage. Odczytuje on plik z serwera aplikacji i przekazuje dane pliku do modułu Stub klienta interfejsu Storage API, aby przesłać go do zasobnika na dane utworzonego w poprzednim programie raportowania.
Program raportów utworzony do przesyłania pliku:
Szczegółowy opis
Ustal połączenie:
- Nawiązuje ono połączenie HTTP z usługą Google Storage za pomocą klasy
/GOOG/CL_STORAGE_V1
.
Odczyt danych pliku
- Odczytuje plik na serwerze aplikacji, wykonując operację
OPEN
DATASET
, a następnie wywołuje standardowy moduł funkcji SAPSCMS_STRING_TO_XSTRING
, aby przekonwertować plik do formatuXSTRING
.
Dodawanie typowych parametrów zapytań
- Aby podzielić plik na części, musimy wybrać typ przesyłania „Możliwość wznowienia”. Domyślnie, gdy wybrane jest przerywane przesyłanie, dane pliku są dzielone na fragmenty o rozmiarze 8 MB i przesyłane. Programiści mogą jednak zmienić rozmiar fragmentu, 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 „Możliwość wznowienia”, wywołujemy metodę
ADD_COMMON_QPARAM
i przekazujemy parametruploadType
jakoresumable.
.
Wstawianie obiektów
- Wywołuje metodę
INSERT_OBJECTS
, przekazując jej te parametry: IV_Q_NAME
: nazwa pliku, w którym mają być przechowywane treści w Cloud StorageIV_P_BUCKET
: nazwa zasobnika, do którego ma zostać przesłany plikIS_DATA
: dane pliku, które należy przesłaćIV_CONTENT_TYPE
: typ treści pliku. W naszym przypadku jest to „text/plain”, ponieważ przesyłamy plik tekstowy.
Pamiętaj, że nie przekazujemy żadnej wartości parametrowi importowania IV_CHUNK_SIZE
i pozwalamy modułowi klienta interfejsu API używać wartości domyślnej powiązanej z tym parametrem, która wynosi 8 MB.
Obsługa sukcesu i błędów:
- Wyświetla odpowiedź interfejsu API na podstawie tego, czy wywołanie interfejsu API zakończyło się powodzeniem.
Close Connection:
- Zamyka połączenie HTTP z usługą Storage.
9. Gratulacje
Gratulacje! Udało Ci się ukończyć Codelab „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 za pomocą języka ABAP.
Google Cloud Storage to świetna opcja do przechowywania dużych ilości danych i zarządzania nimi. Jest on używany przez wiele firm, przedsiębiorstw i aplikacji.
Oto kilka korzyści płynących z korzystania z Google Cloud Storage:
- Ekonomiczność: Google Cloud Storage to ekonomiczny sposób na przechowywanie dużych ilości danych i zarządzanie nimi.
- Prostota: usługa Google Cloud Storage jest łatwa w użyciu dzięki prostemu i intuicyjnemu interfejsowi API.
- Elastyczność: Google Cloud Storage można używać z różnymi aplikacjami i platformami.
Aby dowiedzieć się więcej o korzystaniu z pakietu ABAP SDK do uzyskiwania dostępu do różnych usług Google Cloud, możesz teraz przejść do tego ćwiczenia z programowania.
- Wysyłanie zdarzenia do Pub/Sub
- Odbieranie zdarzenia z Cloud Pub/Sub
- Przekładanie tekstów za pomocą interfejsu Cloud Translation API
- Używanie interfejsu DLP API do pomijania informacji umożliwiających identyfikację
- Wywoływanie BigQuery ML z ABAP
10. Czyszczenie danych
Jeśli nie chcesz kontynuować dodatkowych samouczków związanych z pakietem ABAP SDK dla Google Cloud, przejdź do 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