Tentang codelab ini
1. Pengantar
Dalam codelab ini, kami telah mencantumkan langkah-langkah untuk membuat akun layanan dan menggunakannya untuk mengonfigurasi tabel Kunci Klien dan Peta Komunikasi yang disediakan oleh ABAP SDK untuk Google Cloud dan memanggil Cloud Storage JSON API di ABAP.
Layanan Google Cloud berikut digunakan dalam codelab ini:
- Compute Engine
- Layanan Jaringan
- Cloud Shell
- Cloud Storage JSON API V1
Catatan: Saat Anda membuat Project Google Cloud baru, serangkaian API dan layanan tertentu, termasuk Cloud Storage, akan otomatis diaktifkan. Hal ini memastikan bahwa Anda dapat segera memanfaatkan solusi penyimpanan yang andal ini. Oleh karena itu, Anda tidak perlu mengaktifkannya sebagai langkah tambahan.
Prasyarat
- Pastikan Anda memiliki akses ke sistem SAP dengan ABAP SDK untuk Google Cloud yang diinstal.
- Anda dapat melihat codelab " Menginstal Uji Coba Platform ABAP di Google Cloud Platform dan Menginstal ABAP SDK" untuk menyiapkan sistem baru.
Yang akan Anda build
Anda akan membuat program berikut di Sistem SAP menggunakan ABAP SDK untuk Google Cloud
- Buat Bucket Cloud Storage.
- Baca file dari server aplikasi dan upload ke Bucket Cloud Storage yang dibuat.
2. Persyaratan
- Browser, seperti Chrome atau Firefox.
- Project Google Cloud dengan penagihan diaktifkan atau Buat akun Uji Coba Gratis 90 Hari untuk Google Cloud Platform.
- SAP GUI (Windows atau Java) yang diinstal di sistem Anda. Jika SAP GUI sudah diinstal di laptop, hubungkan ke SAP menggunakan alamat IP eksternal VM sebagai IP Server Aplikasi. Jika menggunakan Mac, Anda juga dapat menginstal SAP GUI untuk Java yang tersedia di link ini.
3. Sebelum memulai
- Pastikan Anda memiliki akses ke sistem SAP dengan ABAP SDK untuk Google Cloud yang diinstal.
- Anda dapat membaca codelab Menginstal Uji Coba Platform ABAP di Google Cloud Platform dan Menginstal ABAP SDK untuk menyiapkan sistem baru.
- Di Konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud (Misalnya:
abap-sdk-poc).
- Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project. Lewati langkah ini jika Anda menggunakan Akun Uji Coba Gratis 90 Hari.
- Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud. Dari Cloud Console, klik Activate Cloud Shell di pojok kanan atas:
- Jalankan perintah berikut untuk melakukan autentikasi untuk akun Anda dan menetapkan project default ke
abap-sdk-poc
. Zonaus-west4-b
digunakan sebagai contoh. Jika diperlukan, ubah project dan zona dalam perintah berikut berdasarkan preferensi Anda.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
- Anda harus memiliki akses ke sistem SAP yang telah menginstal ABAP SDK untuk Google Cloud.
- Anda harus menyelesaikan codelab 1 (Menginstal Uji Coba Platform ABAP 1909 di Google Cloud Platform dan Menginstal ABAP SDK untuk Google Cloud) dan codelab 2 (Mengonfigurasi Autentikasi ABAP SDK menggunakan token untuk SAP yang Dihosting di VM Compute Engine) sebelum melanjutkan dengan codelab ini.
- Jika Anda telah menyelesaikan codelab 1 dan codelab 2, Anda akan mendapatkan Sistem Uji Coba Platform ABAP 1909 di Google Cloud, beserta penyiapan yang diperlukan untuk autentikasi dan konektivitas.
- Jika belum menyelesaikan codelab 1 dan codelab 2, Anda tidak akan memiliki semua infrastruktur dan konektivitas yang diperlukan untuk melakukan langkah-langkah yang diberikan dalam codelab ini. Oleh karena itu, Anda harus menyelesaikan codelab 1 dan codelab 2 sebelum melanjutkan codelab ini.
4. Membuat Akun Layanan dengan Peran Pengguna Objek Penyimpanan
Untuk membuat akun layanan dengan peran yang diperlukan, lakukan langkah-langkah berikut:
- Jalankan perintah berikut di terminal Cloud Shell:
gcloud iam service-accounts create abap-sdk-storage-tester \
--display-name="Service Account for Cloud Storage"
- Sekarang, tambahkan peran yang diperlukan ke akun layanan yang dibuat pada langkah di atas:
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'
Perintah di atas menggunakan abap-sdk-poc
sebagai placeholder untuk Project Google Cloud. Ganti abap-sdk-poc
dengan project ID Anda.
- Untuk memverifikasi bahwa peran telah ditambahkan, buka halaman IAM. Akun layanan yang Anda buat akan tercantum beserta peran yang telah ditetapkan seperti yang ditunjukkan di bawah ini:
5. Membuat Konfigurasi Kunci Klien
Setelah Anda menyiapkan prasyarat di sisi Google Cloud, kita dapat melanjutkan konfigurasi di sisi SAP.
Untuk konfigurasi terkait autentikasi dan konektivitas, ABAP SDK untuk Google Cloud menggunakan tabel /GOOG/CLIENT_KEY
Untuk mempertahankan konfigurasi di tabel /GOOG/CLIENT_KEY, lakukan langkah-langkah berikut:
- Di SAP GUI, masukkan kode transaksi
SPRO
. - Klik IMG Referensi SAP.
- Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.
- Pertahankan nilai berikut terhadap kolom:
Kolom | Nilai |
Google Cloud Key Name | TEST_STORAGE |
Nama Akun Layanan Google Cloud |
|
Google Cloud Scope |
|
ID Project | abap-sdk-poc |
Class Otorisasi |
|
Biarkan semua kolom lain kosong
6. Membuat Laporan Z untuk Membuat Bucket di Cloud Storage
- Login ke Sistem SAP Anda.
- Buka kode transaksi
SE38
dan buat Program Laporan dengan namaZDEMO_CREATE_BUCKET.
- Di pop-up yang terbuka, berikan detail seperti yang ditunjukkan di bawah ini:
Di pop-up berikutnya, pilih Objek Lokal atau Berikan nama paket sesuai pilihan Anda.
- Di ABAP Editor, tambahkan kode berikut:
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.
Perhatikan bahwa jika nama bucket tidak unik secara global, bucket tidak akan dibuat. Oleh karena itu, coba gunakan nama unik untuk bucket sebelum menjalankan kode
- Simpan dan aktifkan laporan.
- Jalankan laporan (Tekan F8).
Jika berhasil dieksekusi, Anda akan melihat output laporan seperti yang ditunjukkan di bawah ini:
7. Membuat Laporan Z untuk Membaca File dari Server Aplikasi dan Menguploadnya ke Bucket Cloud Storage
Sebelum melakukan aktivitas ini, Anda perlu menyiapkan file teks berukuran besar. Di sini, kita sudah memiliki file teks besar yang dibuat dan diupload ke server aplikasi. Anda dapat menggunakan kode transaksi CG3Z untuk mengupload file ke server aplikasi sistem SAP
Untuk contoh ini, kita menggunakan file teks berukuran ~40 MB, yang telah diupload ke Server Aplikasi di direktori /tmp
.
Anda juga dapat mendownload folder ini dari GitHub menggunakan link berikut: File Contoh
- Login ke Sistem SAP Anda
- Buka kode transaksi
SE38
dan buat Program Laporan dengan namaZDEMO_UPLOAD_FILE.
- Di pop-up yang terbuka, berikan detail seperti yang ditunjukkan di bawah ini:
Di pop-up berikutnya, pilih Objek Lokal atau Berikan nama paket sesuai pilihan Anda.
- Di ABAP Editor, tambahkan kode berikut:
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( ).
- Simpan dan aktifkan laporan.
- Jalankan laporan (Tekan F8).
Jika berhasil dieksekusi, Anda akan melihat output laporan seperti yang ditunjukkan di bawah ini:
Anda dapat memverifikasi apakah file berhasil diupload atau tidak dengan membuka Bucket Cloud Storage seperti yang ditunjukkan di bawah ini
8. Penjelasan cara mengupload file ke Cloud Storage menggunakan kode ABAP SDK
Pada dasarnya, program ABAP ini terintegrasi dengan Google Cloud Storage. API ini membaca file dari server aplikasi dan meneruskan data file ke API Client Stub Storage API untuk menguploadnya ke bucket penyimpanan, yang dibuat dalam program laporan sebelumnya.
Program laporan yang telah Anda buat untuk mengupload file melakukan hal berikut:
Perincian Langkah demi Langkah
Membangun Koneksi:
- Class ini membuat koneksi HTTP ke layanan Google Storage menggunakan class
/GOOG/CL_STORAGE_V1
.
Membaca Data File
- Membaca file di server aplikasi dengan melakukan
OPEN
DATASET
, lalu memanggil modul fungsi SAP standarSCMS_STRING_TO_XSTRING
untuk dikonversi ke formatXSTRING
.
Menambahkan Parameter Kueri Umum
- Untuk melakukan pengelompokan, jenis upload yang perlu kita pilih adalah upload "Dapat Dilanjutkan". Secara default, saat upload yang dapat dilanjutkan dipilih, data file akan dibagi menjadi beberapa bagian berukuran 8 MB dan diupload. Namun, developer dapat mengubah ukuran pengelompokan ini dengan menetapkan parameter
IV_P_CHUNK_SIZE
, tetapi sebaiknya gunakan setelan default. - Agar metode API mengetahui bahwa opsi upload "Dapat dilanjutkan" harus dipilih, kita memanggil metode
ADD_COMMON_QPARAM
dan meneruskanuploadType
sebagairesumable.
Menyisipkan Objek
- Memanggil metode
INSERT_OBJECTS
dengan meneruskan parameter berikut ke metode tersebut: IV_Q_NAME
: Nama file yang akan digunakan untuk menyimpan konten di Cloud StorageIV_P_BUCKET
: Nama bucket tempat file harus diuploadIS_DATA
: Data file yang perlu diuploadIV_CONTENT_TYPE
: Jenis Konten file, untuk skenario saat ini, kita menggunakan "text/plain" karena kita mengupload file teks.
Perhatikan bahwa kita tidak meneruskan nilai apa pun ke parameter impor IV_CHUNK_SIZE
dan membiarkan API Client Stub menggunakan nilai default yang terkait dengan parameter ini, yaitu 8 MB.
Menangani Keberhasilan/Error:
- Menampilkan respons API berdasarkan apakah panggilan API berhasil atau tidak.
Tutup Koneksi:
- Menutup koneksi HTTP ke Layanan Penyimpanan.
9. Selamat
Selamat! Anda telah berhasil menyelesaikan Codelab "Mengupload File ke Bucket Cloud Storage".
Cloud Storage JSON API memiliki banyak kemampuan dan dengan ABAP SDK untuk Google Cloud, Anda dapat mengaksesnya langsung di sistem SAP secara native menggunakan ABAP.
Google Cloud Storage adalah opsi yang tepat untuk menyimpan dan mengelola data dalam jumlah besar. API ini digunakan oleh berbagai bisnis, perusahaan, dan aplikasi.
Beberapa manfaat menggunakan Google Cloud Storage:
- Hemat biaya: Google Cloud Storage adalah cara hemat biaya untuk menyimpan dan mengelola data dalam jumlah besar.
- Kesederhanaan: Google Cloud Storage mudah digunakan, dengan API yang sederhana dan intuitif.
- Fleksibilitas: Google Cloud Storage dapat digunakan dengan berbagai aplikasi dan platform.
Sekarang Anda dapat melanjutkan dengan codelab di bawah untuk melanjutkan perjalanan pembelajaran Anda dalam menggunakan ABAP SDK untuk mengakses berbagai Layanan Google Cloud.
- Mengirim peristiwa ke Pub/Sub
- Menerima peristiwa dari Cloud Pub/Sub
- Menggunakan Cloud Translation API untuk menerjemahkan teks
- Menggunakan DLP API untuk penyamaran PII
- Memanggil BigQuery ML dari ABAP
10. Pembersihan
Jika Anda tidak ingin melanjutkan codelab tambahan yang terkait dengan ABAP SDK untuk Google Cloud, lanjutkan pembersihan.
Menghapus project
- Hapus project Google Cloud:
gcloud projects delete abap-sdk-poc
Menghapus resource satu per satu
- Hapus instance komputasi:
gcloud compute instances delete abap-trial-docker
- Hapus aturan firewall:
gcloud compute firewall-rules delete sapmachine
- Hapus akun layanan:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com