מידע על Codelab זה
1. מבוא
בסדנת הקוד הזו פירטנו את השלבים ליצירת חשבון שירות ולהגדרת המפתח של הלקוח וטבלת מפת התקשורת שסופקו על ידי ABAP SDK ל-Google Cloud, וגם להפעלת Cloud Storage JSON API ב-ABAP.
בקודלאב הזה נעשה שימוש בשירותי Google Cloud הבאים:
- Compute Engine
- שירותי רשת
- Cloud Shell
- Cloud Storage JSON API V1
הערה: כשיוצרים פרויקט חדש ב-Google Cloud, קבוצה ספציפית של ממשקי API ושירותים, כולל Cloud Storage, מופעלת באופן אוטומטי. כך תוכלו ליהנות מיד מהפתרון החזק הזה לאחסון. לכן אין צורך להפעיל אותו כשלב נוסף.
דרישות מוקדמות
- עליכם לוודא שיש לכם גישה למערכת SAP עם ABAP SDK ל-Google Cloud מותקן.
- אפשר להיעזר בקודלאב התקנת גרסת הניסיון של 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 החיצונית של ה-VM ככתובת ה-IP של שרת האפליקציות. אם אתם משתמשים ב-Mac, תוכלו גם להתקין את SAP GUI for Java שזמין בקישור הזה.
3. לפני שמתחילים
- עליכם לוודא שיש לכם גישה למערכת SAP עם ABAP SDK ל-Google Cloud מותקן.
- כדי להגדיר מערכת חדשה, אפשר לעיין בקודלאב התקנת גרסת הניסיון של ABAP Platform ב-Google Cloud Platform והתקנת ABAP SDK.
- במסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud (לדוגמה:
abap-sdk-poc).
- הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט אם אתם משתמשים בחשבון לתקופת ניסיון בחינם של 90 יום, אפשר לדלג על השלב הזה.
- תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud. במסוף Cloud, לוחצים על 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
- צריכה להיות לכם גישה למערכת SAP עם ערכת ה-SDK של ABAP ל-Google Cloud.
- לפני שממשיכים בקודלאב הזה, צריך להשלים את הקודלאב 1 (התקנת ABAP Platform Trial 1909 ב-Google Cloud Platform והתקנת ABAP SDK ל-Google Cloud) ואת הקודלאב 2 (הגדרת אימות של ABAP SDK באמצעות אסימונים ל-SAP Hosted ב-Compute Engine VM).
- אם השלמתם את Codelab 1 ואת Codelab 2, המערכת של ABAP Platform Trial 1909 ב-Google Cloud הוקצה לכם, יחד עם ההגדרות הנדרשות לאימות ולקישוריות.
- אם לא השלמתם את הקודלאב 1 ואת הקודלאב 2, לא תהיה לכם את כל התשתית והקישוריות הנדרשים כדי לבצע את השלבים שמפורטים בקודלאב הזה. לכן, עליכם להשלים את 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.
להגדרות שקשורות לאימות ולקישוריות, ערכת ה-SDK של ABAP ל-Google Cloud משתמשת בטבלה /GOOG/CLIENT_KEY
כדי לשמור על ההגדרות בטבלה /GOOG/CLIENT_KEY:
- בממשק המשתמש של SAP, מזינים את קוד העסקה
SPRO
. - לוחצים על SAP Reference IMG.
- לוחצים על ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.
- שומרים את הערכים הבאים בשדות:
שדה | ערך |
שם המפתח ב-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. הסבר על העלאת קובץ ל-Cloud Storage באמצעות קוד ABAP SDK
בעיקרון, תוכנית ABAP הזו משולבת עם Google Cloud Storage. התוכנית קוראת קובץ משרת האפליקציה ומעבירה את נתוני הקובץ ל-API Client Stub של Storage API כדי להעלות אותו לקטגוריית אחסון שנוצרה בתוכנית הדוחות הקודמת.
תוכנית הדוחות שיצרתם להעלאת קובץ מבצעת את הפעולות הבאות:
פירוט של השלבים
יצירת חיבור:
- הוא יוצר חיבור HTTP לשירות Google Storage באמצעות הכיתה
/GOOG/CL_STORAGE_V1
.
קריאת נתוני קובץ
- קוראים את הקובץ בשרת האפליקציות באמצעות
OPEN
DATASET
ולאחר מכן קוראים למודול הפונקציה הסטנדרטי של SAPSCMS_STRING_TO_XSTRING
כדי להמיר אותו לפורמטXSTRING
.
הוספת פרמטרים נפוצים של שאילתות
- כדי לחלק את הקובץ לקטעים, צריך לבחור בסוג ההעלאה 'ניתן להמשך'. כברירת מחדל, כשמפעילים העלאה שניתן להמשיך, נתוני הקובץ מחולקים למקטעים של 8MB ומועלים. עם זאת, מפתחים יכולים לשנות את גודל הקטעים על ידי הגדרת הפרמטר
IV_P_CHUNK_SIZE
, אבל מומלץ להשתמש בהגדרת ברירת המחדל. - כדי להודיע לשיטת ה-API שצריך לבחור באפשרות ההעלאה 'ניתן להמשך', אנחנו קוראים לשיטה
ADD_COMMON_QPARAM
ומעבירים אתuploadType
כ-resumable.
הוספת אובייקטים
- קריאה לשיטה
INSERT_OBJECTS
באמצעות העברת הפרמטרים הבאים אליה: IV_Q_NAME
: שם הקובץ שבו יישמרו התוכן ב-Cloud StorageIV_P_BUCKET
: שם הקטגוריה שאליה צריך להעלות את הקובץIS_DATA
: נתוני הקובץ שצריך להעלותIV_CONTENT_TYPE
: סוג התוכן של הקובץ. בתרחיש הנוכחי שלנו אנחנו משתמשים ב-'text/plain' כי אנחנו מעלים קובץ טקסט.
שימו לב שלא מעבירים ערך כלשהו לפרמטר הייבוא IV_CHUNK_SIZE
, ומאפשרים ל-Stub של לקוח ה-API להשתמש בערך ברירת המחדל שמשויך לפרמטר הזה, שהוא 8MB.
טיפול בהצלחות ובשגיאות:
- הצגת תגובת ה-API על סמך הצלחת קריאת ה-API.
סגירת החיבור:
- סגירת החיבור ל-HTTP לשירות האחסון.
9. מזל טוב
מעולה! סיימתם את Codelab בנושא 'העלאת קובץ לקטגוריה של Cloud Storage'.
ל-Cloud Storage JSON API יש הרבה יכולות, ובעזרת ABAP SDK ל-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. הסרת המשאבים
אם אתם לא רוצים להמשיך בקודלאבים הנוספים שקשורים ל-ABAP SDK ל-Google Cloud, תוכלו להמשיך לניקוי.
מחיקת הפרויקט
- מוחקים את הפרויקט ב-Google Cloud:
gcloud projects delete abap-sdk-poc
מחיקת משאבים ספציפיים
- מוחקים את מכונה לעיבוד נתונים:
gcloud compute instances delete abap-trial-docker
- מוחקים את firewall-rules:
gcloud compute firewall-rules delete sapmachine
- מוחקים את חשבון השירות:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com