1. Pengantar
Dalam codelab ini, kami telah mencantumkan langkah-langkah untuk memublikasikan peristiwa ke Google Cloud Pub/Sub API menggunakan ABAP SDK untuk Google Cloud.
Layanan Google Cloud berikut digunakan dalam codelab ini:
- Pub/Sub
- Cloud Shell
Yang akan Anda build
Anda akan mempelajari hal berikut:
- Aktifkan Pub/Sub di project Google Cloud.
- Buat topik Pub/Sub.
- Memublikasikan pesan.
2. Sebelum memulai
- Anda telah menginstal ABAP SDK untuk Google Cloud di sistem Anda. Anda dapat melihat codelab- Menginstal Uji Coba ABAP di Google Cloud Platform - untuk menyiapkan sistem baru.
- Anda 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
3. Ringkasan
Cakupan codelab ini melibatkan komponen layanan Pub/Sub berikut:
- Penayang (juga disebut produsen): membuat pesan dan mengirim (memublikasikan) pesan tersebut ke layanan pesan pada topik yang ditentukan.
- Pesan: data yang bergerak melalui layanan pesan.
- Topik: entitas bernama yang mewakili feed pesan.
4. Menyiapkan layanan Pub/Sub
- Untuk membuat akun layanan dengan peran yang diperlukan, jalankan perintah berikut di terminal Cloud Shell:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
- Untuk mengaktifkan Pub/Sub API ke akun layanan Anda (
abap-sdk-poc
), jalankan perintah berikut di terminal Cloud Shell:
gcloud services enable pubsub.googleapis.com
- Berikan peran IAM pubsub.topics.create ke akun layanan agar dapat membuat topik. Jalankan perintah berikut di terminal cloud shell:
gcloud endpoints services add-iam-policy-binding pubsub.googleapis.com \ --member='serviceAccount:abap-sdk-pubusb-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/pubsub.topics.create'
- Berikan peran IAM pubsub.topics.publish ke akun layanan agar dapat memublikasikan pesan ke topik. Jalankan perintah berikut di terminal cloud shell:
gcloud endpoints services add-iam-policy-binding pubsub.googleapis.com \ --member='serviceAccount:abap-sdk-pubusb-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/pubsub.topics.publish'
- Untuk memverifikasi bahwa peran telah ditambahkan, buka halaman IAM. Akun layanan yang Anda buat akan tercantum beserta peran yang telah ditetapkan.
5. Mengonfigurasi kunci klien
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.
- Klik New Entries.
- Masukkan nilai untuk kolom berikut:
Kolom | Deskripsi |
Google Cloud Key Name | PUBSUB_DEMO |
Nama Akun Layanan Google Cloud | abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com |
Google Cloud Scope | https://www.googleapis.com/auth/cloud-platform |
ID Project Google Cloud | abap-sdk-poc |
Class Otorisasi | /GOOG/CL_AUTH_GOOGLE |
Biarkan kolom lainnya kosong
6. Membuat topik
Anda membuat topik menggunakan metode CREATE_TOPICS dari stub API /GOOG/CL_PUBSUB_V1. Tanda tangan metode:
- Di SAP GUI, masukkan kode transaksi SE38.
- Buat laporan dengan nama ZPUBSUB_DEMO.
- Di pop-up yang terbuka, berikan detail seperti yang ditunjukkan di bawah, lalu klik Simpan.
- Di pop-up berikutnya, pilih Local Object atau berikan nama paket yang sesuai.
- Di ABAP Editor, tambahkan kode berikut:
" Data Declaration
DATA:
lo_client TYPE REF TO /goog/cl_pubsub_v1.
TRY.
" Open HTTP Connection
CREATE OBJECT lo_client EXPORTING iv_key_name = 'PUBSUB_DEMO'.
" Populate relevant parameters
DATA(lv_p_projects_id) = CONV string( lo_client->gv_project_id ).
DATA(lv_p_topics_id) = CONV string( 'PUBSUB_DEMO_TOPIC' ).
" Call API method pubsub.topics.create
lo_client->create_topics(
EXPORTING
iv_p_projects_id = lv_p_projects_id
iv_p_topics_id = lv_p_topics_id
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_client->is_success( lv_ret_code ) = abap_true.
DATA(lv_msg) = 'Topic ' && ':' && lv_p_topics_id && ' was created!'.
MESSAGE lv_msg TYPE 'I' .
ELSE.
MESSAGE lv_err_text TYPE 'E'.
ENDIF.
" Close HTTP Connection
lo_client->close( ).
CATCH /goog/cx_sdk INTO DATA(lo_exception).
MESSAGE lo_exception->get_text( ) TYPE 'E'.
RETURN.
ENDTRY.
- Simpan dan aktifkan laporan.
- Jalankan laporan (F8).
Jika berhasil dieksekusi, Anda akan melihat output laporan seperti yang ditunjukkan di bawah ini:
7. Memublikasikan pesan ke topik
Setelah topik siap, sekarang kita dapat berfokus untuk mengirim data. Sebagai langkah berikutnya, mari kita pelajari cara memublikasikan pesan tentang topik ini. Pesan dipublikasikan ke topik menggunakan metode PUBLISH_TOPICS
dari stub API /GOOG/CL_PUBSUB_V1
.
Tanda tangan metode:
- Di SAP GUI, masukkan kode transaksi SE38.
- Buat laporan dengan nama ZPUBSUB_DEMO_PUBLISH.
- Di pop-up yang terbuka, berikan detail seperti yang ditunjukkan di bawah, lalu klik Simpan.
- Di pop-up berikutnya, pilih Local Object atau berikan nama paket yang sesuai.
- Di ABAP Editor, tambahkan kode berikut:
" Data Declaration
DATA:
lo_client TYPE REF TO /goog/cl_pubsub_v1,
ls_message TYPE /goog/cl_pubsub_v1=>ty_025,
ls_input TYPE /goog/cl_pubsub_v1=>ty_023.
TRY.
" Open HTTP Connection
CREATE OBJECT lo_client EXPORTING iv_key_name = 'PUBSUB_DEMO'.
" Populate relevant parameters
DATA(lv_p_projects_id) = CONV string( lo_client->gv_project_id ).
DATA(lv_p_topics_id) = CONV string( 'PUBSUB_DEMO_TOPIC' ).
ls_message-data = cl_http_utility=>encode_base64( unencoded = ' This message was published to topic' ).
APPEND ls_message TO ls_input-messages.
" Call API method : pubsub.topics.publish
" This method publishes the message(encoded in base64 format to the topic )
lo_client->publish_topics(
EXPORTING
iv_p_projects_id = lv_p_projects_id
iv_p_topics_id = lv_p_topics_id
is_input = ls_input
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_client->is_success( lv_ret_code ) = abap_true.
DATA(lv_msg) = 'Message was published to topic ' && ': ' && lv_p_topics_id.
MESSAGE lv_msg TYPE 'I' DISPLAY LIKE 'S'.
ELSE.
MESSAGE lv_err_text TYPE 'E'.
ENDIF.
" Close HTTP Connection
lo_client->close( ).
CATCH /goog/cx_sdk INTO DATA(lo_exception).
MESSAGE lv_err_text TYPE 'E'.
RETURN.
ENDTRY.
- Simpan dan aktifkan laporan.
- Jalankan laporan (F8).
Jika berhasil dieksekusi, Anda akan melihat output laporan seperti yang ditunjukkan di bawah ini:
8. Selamat
Selamat! Anda telah berhasil memublikasikan pesan ke Pub/Sub API Google Cloud Platform menggunakan ABAP SDK untuk Google Cloud.
Sekarang Anda dapat melanjutkan dengan codelab di bawah untuk melanjutkan perjalanan pembelajaran Anda dalam menggunakan ABAP SDK untuk mengakses berbagai Layanan Google Cloud.
- Menerima peristiwa dari Cloud Pub/Sub
- Mengupload File ke Bucket Cloud Storage dengan Pembagian Bagian
- Memanggil Vertex AI test-bison dari ABAP
- . . .
9. 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