פרסום אירוע ב-Cloud Pub/Sub באמצעות ABAP SDK ל-Google Cloud

פרסום אירוע ב-Cloud Pub/Sub באמצעות ABAP SDK for Google Cloud

מידע על Codelab זה

subjectהעדכון האחרון: יולי 30, 2025
account_circleנכתב על ידי Sanchita Mohta

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:

6757b2fb50ddcc2d.png

  • מריצים את הפקודות הבאות כדי לבצע אימות לחשבון ולהגדיר את פרויקט ברירת המחדל ל-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:

  • בעל אפליקציה (נקרא גם יוצר תוכן): יוצר הודעות ושולח (מפרסם) אותן לשירות העברת ההודעות בנושא שצוין.
  • הודעה: הנתונים שמועברים דרך שירות ההודעות.
  • נושא: ישות בעלת שם שמייצגת פיד של הודעות.

4f5676da8922467f.png

4.‏ הגדרת שירות Pub/Sub

  1. כדי ליצור חשבון שירות עם התפקיד הנדרש, מריצים את הפקודה הבאה במסוף Cloud Shell:
gcloud iam service-accounts create abap-sdk-pubsub-tester --display-name="Service Account for PubSub"
  1. כדי להפעיל את Pub/Sub API בחשבון השירות (abap-sdk-poc), מריצים את הפקודה הבאה במסוף של Cloud Shell:
gcloud services enable pubsub.googleapis.com
  1. כדי ליצור נושא, צריך להקצות לחשבון השירות את תפקיד ה-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'
  1. מקצים לחשבון השירות את תפקיד ה-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'
  1. כדי לוודא שהתפקידים נוספו, עוברים לדף IAM. חשבון השירות שיצרתם צריך להופיע ברשימה יחד עם התפקידים שהוקצו לו.

5.‏ הגדרת מפתח לקוח

כדי לשמור את ההגדרה בטבלה /GOOG/CLIENT_KEY, מבצעים את השלבים הבאים:

  1. ב-SAP GUI, מזינים את קוד העסקה SPRO.
  2. לוחצים על SAP Reference IMG.
  3. לוחצים על ABAP SDK for Google Cloud (חבילת SDK של ABAP ל-Google Cloud) > Basic Settings (הגדרות בסיסיות) > Configure Client Key (הגדרת מפתח לקוח).
  4. לוחצים על New Entries (רשומות חדשות).
  5. מזינים ערכים בשדות הבאים:

שדה

תיאור

שם המפתח ב-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

משאירים את שאר השדות ריקים

ec6b6f94bfa85533.png

6.‏ יצירת נושא

יוצרים נושא באמצעות ה-method‏ CREATE_TOPICS של ה-API stub‏ ‎ /GOOG/CL_PUBSUB_V1. חתימה של ה-method:

d40fde108ccf2853.png

  1. ב-SAP GUI, מזינים את קוד העסקה SE38.
  2. יוצרים דוח בשם ZPUBSUB_DEMO.
  3. בחלון הקופץ שנפתח, מזינים את הפרטים כמו שמוצג למטה ולוחצים על שמירה.

f9cbdabb6ca96fc4.png

  1. בחלון הקופץ הבא, בוחרים באפשרות Local Object או מזינים שם חבילה לפי הצורך.
  2. בעורך 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.
  1. שומרים ומפעילים את הדוח.
  2. מריצים את הדוח (F8).

אם ההרצה תתבצע בהצלחה, תראו את פלט הדוח כמו שמוצג בהמשך:

16aa8a4c59d776d9.png

7.‏ פרסום ההודעה בנושא

אחרי שהנושא מוכן, אפשר להתמקד בשליחת נתונים אליו. בשלב הבא נסביר איך לפרסם הודעות בנושא הזה. ההודעות מתפרסמות בנושא באמצעות השיטה PUBLISH_TOPICS של ה-API stub‏ /GOOG/CL_PUBSUB_V1.

חתימה של ה-method:

459fe21ce68bd811.png

  1. ב-SAP GUI, מזינים את קוד העסקה SE38.
  2. יוצרים דוח בשם ZPUBSUB_DEMO_PUBLISH.
  3. בחלון הקופץ שנפתח, מזינים את הפרטים כמו שמוצג למטה ולוחצים על שמירה.

9a180c4e9a1e139.png

  1. בחלון הקופץ הבא, בוחרים באפשרות Local Object או מזינים שם חבילה לפי הצורך.
  2. בעורך 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.
  1. שומרים ומפעילים את הדוח.
  2. מריצים את הדוח (F8).

אם ההרצה תתבצע בהצלחה, תראו את פלט הדוח כמו שמוצג בהמשך:

384125235efc104.png

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

מחיקת משאבים ספציפיים

  1. מוחקים את מכונת החישוב:
gcloud compute instances delete abap-trial-docker
  1. מוחקים את הכללים של חומת האש:
gcloud compute firewall-rules delete sapmachine
  1. מוחקים את חשבון השירות:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com