1. מבוא
בשיעור Codelab הזה מפורטים השלבים ליצירת חשבון שירות ולשימוש בו כדי להגדיר את מפתח הלקוח ואת טבלת מפת התקשורת שסופקו על ידי ABAP SDK for Google Cloud, ולהפעיל את Cloud Storage JSON API ב-ABAP.
ב-Codelab הזה נעשה שימוש בשירותי Google Cloud הבאים:
- Compute Engine
- Network Services
- Cloud Shell
- Cloud Storage API בפורמט JSON V1
הערה: כשיוצרים פרויקט חדש ב-Google Cloud, מופעלים אוטומטית קבוצה ספציפית של ממשקי API ושירותים, כולל Cloud Storage. כך תוכלו ליהנות מיד מפתרון האחסון האמין הזה. לכן, אתם לא צריכים להפעיל אותו כשלב נוסף.
דרישות מוקדמות
- מוודאים שיש לכם גישה למערכת SAP עם ABAP SDK for Google Cloud מותקן.
- אפשר לעיין בשיעור Codelab בנושא התקנת גרסת ניסיון של ABAP Platform ב-Google Cloud Platform והתקנת ABAP SDK כדי להגדיר מערכת חדשה.
מה תפַתחו
תצטרכו ליצור את התוכניות הבאות במערכת SAP באמצעות ABAP SDK for Google Cloud
- יצירת קטגוריה של Cloud Storage.
- קריאת קובץ משרת האפליקציות והעלאה שלו לקטגוריה של Cloud Storage שנוצרה.
2. דרישות
- דפדפן, כמו Chrome או Firefox.
- פרויקט ב-Google Cloud עם חיוב מופעל או יצירת חשבון לניסיון חינם למשך 90 יום ב-Google Cloud Platform.
- SAP GUI (Windows או Java) מותקן במערכת. אם SAP GUI כבר מותקן במחשב הנייד, מתחברים ל-SAP באמצעות כתובת ה-IP החיצונית של המכונה הווירטואלית ככתובת ה-IP של שרת האפליקציות. אם אתם משתמשים ב-Mac, אתם יכולים גם להתקין את SAP GUI for Java שזמין בקישור הזה.
3. לפני שמתחילים
- מוודאים שיש לכם גישה למערכת SAP עם ABAP SDK for Google Cloud מותקן.
- אפשר לעיין בשיעור Codelab בנושא התקנת גרסת ניסיון של ABAP Platform ב-Google Cloud Platform והתקנת ABAP SDK כדי להגדיר מערכת חדשה.
- ב-מסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud (לדוגמה:
abap-sdk-poc). - הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט אפשר לדלג על השלב הזה אם אתם משתמשים בחשבון לתקופת ניסיון בחינם ל-90 ימים.
- תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud. בפינה הימנית העליונה של Cloud Console, לוחצים על Activate Cloud Shell (הפעלת 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
- צריכה להיות לכם גישה למערכת SAP עם ABAP SDK for Google Cloud מותקן.
- לפני שממשיכים עם שיעור Codelab הזה, צריך להשלים את שיעור Codelab מספר 1 (Install ABAP Platform Trial 1909 on Google Cloud Platform and Install ABAP SDK for Google Cloud) ואת שיעור Codelab מספר 2 (Configure ABAP SDK Authentication using tokens for SAP Hosted on Compute Engine VM).
- אם השלמתם את שיעור Codelab 1 ואת שיעור Codelab 2, הוקצה לכם ניסיון חינם של ABAP Platform 1909 System ב-Google Cloud, יחד עם ההגדרה הנדרשת לאימות ולקישוריות.
- אם לא השלמתם את Codelab 1 ו-Codelab 2, לא תהיה לכם את כל התשתית והקישוריות הנדרשות כדי לבצע את השלבים שמופיעים ב-Codelab הזה. לכן, צריך להשלים את Codelab 1 ואת Codelab 2 לפני שממשיכים עם ה-Codelab הזה.
4. יצירת חשבון שירות עם התפקיד 'משתמש באובייקט אחסון'
כדי ליצור חשבון שירות עם התפקיד הנדרש, מבצעים את השלבים הבאים:
- מריצים את הפקודה הבאה במסוף Cloud Shell:
gcloud iam service-accounts create abap-sdk-storage-tester \
--display-name="Service Account for Cloud Storage"
- עכשיו מוסיפים את התפקידים הנדרשים לחשבון השירות שנוצר בשלב הקודם:
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'
בפקודה שלמעלה, abap-sdk-poc הוא placeholder לפרויקט Google Cloud. מחליפים את abap-sdk-poc במזהה הפרויקט.
- כדי לוודא שהתפקיד נוסף, עוברים לדף IAM. חשבון השירות שיצרתם אמור להופיע ברשימה יחד עם התפקיד שהוקצה לו, כמו שמוצג בהמשך:

5. יצירת הגדרת מפתח לקוח
אחרי שהגדרתם את הדרישות המוקדמות בצד של Google Cloud, אפשר להמשיך להגדרה בצד של SAP.
לצורך הגדרות שקשורות לאימות ולקישוריות, ABAP SDK for Google Cloud משתמש בטבלה /GOOG/CLIENT_KEY
כדי לשמור על ההגדרה בטבלה /GOOG/CLIENT_KEY, מבצעים את הפעולות הבאות:
- ב-SAP GUI, מזינים את קוד העסקה
SPRO. - לוחצים על SAP Reference IMG.
- לוחצים על ABAP SDK for Google Cloud > Basic Settings > Configure Client Key (ABAP SDK for Google Cloud > הגדרות בסיסיות > הגדרת מפתח לקוח).
- מזינים את הערכים הבאים בשדות:
שדה | ערך |
שם המפתח ב-Google Cloud | TEST_STORAGE |
שם חשבון השירות של Google Cloud |
|
היקף השימוש ב-Google Cloud |
|
מזהה פרויקט | abap-sdk-poc |
Authorization Class |
|
משאירים את כל שאר השדות ריקים.
6. יצירת דוח Z כדי ליצור קטגוריה ב-Cloud Storage
- מתחברים למערכת SAP.
- עוברים אל קוד העסקה
SE38ויוצרים תוכנית דיווח בשםZDEMO_CREATE_BUCKET. - בחלון הקופץ שנפתח, מזינים את הפרטים כמו שמופיע בהמשך:

בחלון הקופץ הבא בוחרים באפשרות Local Object (אובייקט מקומי) או באפשרות Provide a package name (הזנת שם חבילה) בהתאם לבחירה.
- בעורך ABAP, מוסיפים את הקוד הבא:
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.
שימו לב: אם שם הקטגוריה לא ייחודי באופן גלובלי, הקטגוריה לא תיצור, ולכן כדאי להשתמש בשם ייחודי לקטגוריה לפני שמריצים את הקוד.
- שומרים ומפעילים את הדוח.
- מריצים את הדוח (לוחצים על F8).
אם ההרצה תצליח, תראו את פלט הדוח כמו שמוצג בהמשך:

7. יצירת דוח Z לקריאת קובץ משרת אפליקציות והעלאה שלו לקטגוריה של Cloud Storage
לפני שמבצעים את הפעילות הזו, צריך להכין קובץ טקסט גדול. כאן כבר יש לנו קובץ טקסט גדול שנוצר והועלה לשרת האפליקציות. אפשר להשתמש בקוד העסקה CG3Z כדי להעלות קובץ לשרת האפליקציות של מערכת SAP
בדוגמה הזו, אנחנו משתמשים בקובץ טקסט בגודל של כ-40MB, שכבר הועלה לשרת האפליקציות בספרייה /tmp.
אפשר גם להוריד את התיקייה הזו מ-GitHub באמצעות הקישור הבא: קובץ לדוגמה
- מתחברים למערכת SAP
- עוברים אל קוד העסקה
SE38ויוצרים תוכנית דיווח בשםZDEMO_UPLOAD_FILE. - בחלון הקופץ שנפתח, מזינים את הפרטים כמו שמופיע בהמשך:

בחלון הקופץ הבא בוחרים באפשרות Local Object (אובייקט מקומי) או באפשרות Provide a package name (הזנת שם חבילה) בהתאם לבחירה.
- בעורך ABAP, מוסיפים את הקוד הבא:
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( ).
- שומרים ומפעילים את הדוח.
- מריצים את הדוח (לוחצים על F8).
אם ההרצה תצליח, תראו את פלט הדוח כמו שמוצג בהמשך:

כדי לבדוק אם הקובץ הועלה בהצלחה, אפשר לעבור לקטגוריה של Cloud Storage כמו שמוצג בהמשך


8. הסבר על קוד ABAP SDK להעלאת קובץ ל-Cloud Storage
בעצם, תוכנית ה-ABAP הזו משולבת עם Google Cloud Storage. הוא קורא קובץ משרת האפליקציות ומעביר את נתוני הקובץ אל ה-API Client Stub של Storage API כדי להעלות אותו אל מאגר אחסון שנוצר בתוכנית הדיווח הקודמת.
תוכנית הדיווח שיצרתם להעלאת קובץ מבצעת את הפעולות הבאות:
פירוט שלב אחר שלב
יצירת חיבור:
- הוא יוצר חיבור HTTP לשירות Google Storage באמצעות המחלקה
/GOOG/CL_STORAGE_V1.
קריאת נתונים מקובץ
- קורא את הקובץ בשרת האפליקציות על ידי ביצוע
OPENDATASETואז קורא למודול הפונקציות הרגיל של SAPSCMS_STRING_TO_XSTRINGכדי להמיר לפורמטXSTRING.
הוספת פרמטרים נפוצים של שאילתה
- כדי להשתמש בשיטת החלוקה לחלקים, צריך לבחור בהעלאה מסוג 'ניתנת להמשך'. כברירת מחדל, כשבוחרים באפשרות של העלאה שניתן להמשיך, נתוני הקובץ מחולקים לחלקים של 8MB ומועלים. מפתחים יכולים לשנות את גודל החלוקה הזה על ידי הגדרת הפרמטר
IV_P_CHUNK_SIZE, אבל מומלץ להשתמש בהגדרת ברירת המחדל. - כדי להודיע ל-API method שצריך לבחור באפשרות ההעלאה 'ניתנת להמשך', מפעילים את ה-method
ADD_COMMON_QPARAMומעבירים אתuploadTypeכ-resumable.
הוספת אובייקטים
- מבצעים קריאה ל-method
INSERT_OBJECTSומעבירים אליה את הפרמטרים הבאים: -
IV_Q_NAME: שם הקובץ שבו התוכן יישמר ב-Cloud Storage -
IV_P_BUCKET: שם הקטגוריה שאליה צריך להעלות את הקובץ IS_DATA: נתוני הקובץ שצריך להעלות-
IV_CONTENT_TYPE: סוג התוכן של הקובץ. בתרחיש הנוכחי אנחנו משתמשים ב-text/plain כי אנחנו מעלים קובץ טקסט.
שימו לב: אנחנו לא מעבירים ערך לפרמטר הייבוא IV_CHUNK_SIZE ומאפשרים ל-API Client Stub להשתמש בערך ברירת המחדל שמשויך לפרמטר הזה, שהוא 8MB.
טיפול בהצלחה או בשגיאות:
- התגובה מה-API מוצגת בהתאם להצלחה או לכישלון של הקריאה ל-API.
סגירת החיבור:
- סגירת חיבור ה-HTTP לשירות האחסון.
9. מזל טוב
מעולה! השלמתם בהצלחה את ה-Codelab בנושא 'העלאת קובץ לקטגוריה של Cloud Storage'.
ל-Cloud Storage JSON API יש הרבה יכולות, ועם ABAP SDK for Google Cloud, אתם יכולים לגשת אליהן ישירות במערכות SAP באופן מקורי באמצעות ABAP.
Google Cloud Storage הוא אפשרות מצוינת לאחסון ולניהול של כמויות גדולות של נתונים. היא נמצאת בשימוש במגוון רחב של עסקים, ארגונים ואפליקציות.
הנה כמה מהיתרונות של שימוש ב-Google Cloud Storage:
- חסכוניות: Google Cloud Storage הוא דרך חסכונית לאחסון ולניהול של כמויות גדולות של נתונים.
- פשטות: קל להשתמש ב-Google Cloud Storage, עם API פשוט ואינטואיטיבי.
- גמישות: אפשר להשתמש ב-Google Cloud Storage עם מגוון אפליקציות ופלטפורמות.
עכשיו אפשר להמשיך לשיעור Codelab הבא כדי להמשיך בתהליך הלמידה של שימוש ב-ABAP SDK כדי לגשת לשירותים שונים של Google Cloud.
- שליחת אירוע ל-Pub/Sub
- קבלת אירוע מ-Cloud Pub/Sub
- שימוש ב-Cloud Translation API לתרגום טקסטים
- שימוש ב-DLP API לצורך צנזור מידע אישי
- קריאה ל-BigQuery ML מ-ABAP
10. הסרת המשאבים
אם לא רוצים להמשיך עם ה-codelabs הנוספים שקשורים ל-ABAP SDK for 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