מידע על Codelab זה
1. מבוא
ב-codelab הזה מפורטים השלבים לפרסום אירוע ב-Google Cloud Pub/Sub API באמצעות ABAP SDK for Google Cloud.
בסדנת הקוד הזו נעשה שימוש בשירותי Google Cloud הבאים:
- Pub/Sub
- Cloud Shell
מה תפַתחו
תלמדו את הנושאים הבאים:
- מפעילים את Pub/Sub בפרויקט ב-Google Cloud.
- יוצרים נושא Pub/Sub.
- פרסום הודעות.
2. לפני שמתחילים
- התקנתם את ABAP SDK for Google Cloud במערכת שלכם. כדי להגדיר מערכת חדשה, אפשר לעיין ב-codelab – Install ABAP Trial on Google Cloud Platform (התקנת גרסת ניסיון של ABAP ב-Google Cloud Platform).
- משתמשים ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud. בפינה הימנית העליונה של Cloud Console, לוחצים על Activate 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
3. סקירה כללית
היקף ה-codelab הזה כולל את הרכיבים הבאים של שירות Pub/Sub:
- בעל אפליקציה (נקרא גם יוצר תוכן): יוצר הודעות ושולח (מפרסם) אותן לשירות העברת ההודעות בנושא שצוין.
- הודעה: הנתונים שמועברים דרך שירות ההודעות.
- נושא: ישות בעלת שם שמייצגת פיד של הודעות.
4. הגדרת שירות Pub/Sub
- כדי ליצור חשבון שירות עם התפקיד הנדרש, מריצים את הפקודה הבאה במסוף Cloud Shell:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
- כדי להפעיל את Pub/Sub API בחשבון השירות (
abap-sdk-poc
), מריצים את הפקודה הבאה במסוף של Cloud Shell:
gcloud services enable pubsub.googleapis.com
- כדי ליצור נושא, צריך להקצות לחשבון השירות את תפקיד ה-IAM pubsub.topics.create. מריצים את הפקודה הבאה במסוף 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'
- מקצים לחשבון השירות את תפקיד ה-IAM pubsub.topics.publish כדי שיוכל לפרסם הודעה בנושא. מריצים את הפקודה הבאה במסוף 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'
- כדי לוודא שהתפקידים נוספו, עוברים לדף IAM. חשבון השירות שיצרתם צריך להופיע ברשימה יחד עם התפקידים שהוקצו לו.
5. הגדרת מפתח לקוח
כדי לשמור את ההגדרה בטבלה /GOOG/CLIENT_KEY
, מבצעים את השלבים הבאים:
- ב-SAP GUI, מזינים את קוד העסקה SPRO.
- לוחצים על SAP Reference IMG.
- לוחצים על ABAP SDK for Google Cloud (חבילת SDK של ABAP ל-Google Cloud) > Basic Settings (הגדרות בסיסיות) > Configure Client Key (הגדרת מפתח לקוח).
- לוחצים על New Entries (רשומות חדשות).
- מזינים ערכים בשדות הבאים:
שדה | תיאור |
שם המפתח ב-Google Cloud | PUBSUB_DEMO |
שם חשבון השירות של Google Cloud | abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com |
היקף Google Cloud | https://www.googleapis.com/auth/cloud-platform |
מזהה הפרויקט ב-Google Cloud | abap-sdk-poc |
Authorization Class | /GOOG/CL_AUTH_GOOGLE |
משאירים את שאר השדות ריקים
6. יצירת נושא
יוצרים נושא באמצעות ה-method CREATE_TOPICS של ה-API stub /GOOG/CL_PUBSUB_V1. חתימה של ה-method:
- ב-SAP GUI, מזינים את קוד העסקה SE38.
- יוצרים דוח בשם ZPUBSUB_DEMO.
- בחלון הקופץ שנפתח, מזינים את הפרטים כמו שמוצג למטה ולוחצים על שמירה.
- בחלון הקופץ הבא, בוחרים באפשרות Local Object או מזינים שם חבילה לפי הצורך.
- בעורך ABAP, מוסיפים את הקוד הבא:
" 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.
- שומרים ומפעילים את הדוח.
- מריצים את הדוח (F8).
אם ההרצה תתבצע בהצלחה, תראו את פלט הדוח כמו שמוצג בהמשך:
7. פרסום ההודעה בנושא
אחרי שהנושא מוכן, אפשר להתמקד בשליחת נתונים אליו. בשלב הבא נסביר איך לפרסם הודעות בנושא הזה. ההודעות מתפרסמות בנושא באמצעות השיטה PUBLISH_TOPICS
של ה-API stub /GOOG/CL_PUBSUB_V1
.
חתימה של ה-method:
- ב-SAP GUI, מזינים את קוד העסקה SE38.
- יוצרים דוח בשם ZPUBSUB_DEMO_PUBLISH.
- בחלון הקופץ שנפתח, מזינים את הפרטים כמו שמוצג למטה ולוחצים על שמירה.
- בחלון הקופץ הבא, בוחרים באפשרות Local Object או מזינים שם חבילה לפי הצורך.
- בעורך ABAP, מוסיפים את הקוד הבא:
" 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.
- שומרים ומפעילים את הדוח.
- מריצים את הדוח (F8).
אם ההרצה תתבצע בהצלחה, תראו את פלט הדוח כמו שמוצג בהמשך:
8. מזל טוב
מעולה! הצלחתם לפרסם הודעה ב-Pub/Sub API של Google Cloud Platform באמצעות ABAP SDK ל-Google Cloud.
עכשיו אפשר להמשיך עם ה-codelab שלמטה כדי להמשיך בתהליך הלמידה של שימוש ב-ABAP SDK כדי לגשת לשירותים שונים של Google Cloud.
- קבלת אירוע מ-Cloud Pub/Sub
- העלאת קובץ לקטגוריה ב-Cloud Storage באמצעות חלוקה לחלקים
- קריאה ל-Vertex AI test-bison מ-ABAP
- . . .
9. הסרת המשאבים
אם לא רוצים להמשיך עם ה-codelab הנוסף שקשור ל-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