इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी
1. परिचय
इस कोडलैब में, हमने सेवा खाता बनाने और उसका इस्तेमाल करके, Google Cloud के लिए ABAP SDK की ओर से दी गई क्लाइंट पासकोड और कम्यूनिकेशन मैप टेबल को कॉन्फ़िगर करने का तरीका बताया है. साथ ही, ABAP में Cloud Storage JSON API को कॉल करने का तरीका भी बताया है.
इस कोडलैब में, Google Cloud की इन सेवाओं का इस्तेमाल किया गया है:
- Compute Engine
- नेटवर्क सेवाएं
- Cloud Shell
- Cloud Storage JSON API V1
ध्यान दें: नया Google Cloud प्रोजेक्ट बनाने पर, Cloud Storage के साथ-साथ API और सेवाओं का एक खास सेट अपने-आप चालू हो जाता है. इससे यह पक्का होता है कि आपके पास स्टोरेज के इस बेहतरीन सलूशन का तुरंत फ़ायदा लेने का विकल्प है. इसलिए, आपको इसे अलग से चालू करने की ज़रूरत नहीं है.
ज़रूरी शर्तें
- पक्का करें कि आपके पास Google Cloud के लिए ABAP SDK टूल के साथ इंस्टॉल किए गए SAP सिस्टम का ऐक्सेस हो.
- नया सिस्टम सेट अप करने के लिए, कोडलैब " Google Cloud Platform पर ABAP Platform का ट्रायल वर्शन इंस्टॉल करना और ABAP SDK इंस्टॉल करना" देखें.
आपको क्या बनाना है
आपको Google Cloud के लिए ABAP SDK टूल का इस्तेमाल करके, अपने SAP सिस्टम में ये प्रोग्राम बनाने होंगे
- Cloud Storage बकेट बनाएं.
- ऐप्लिकेशन सर्वर से कोई फ़ाइल पढ़ें और उसे बनाई गई Cloud Storage बकेट में अपलोड करें.
2. ज़रूरी शर्तें
- Chrome या Firefox जैसा कोई ब्राउज़र.
- बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट या Google Cloud Platform के लिए 90 दिनों के मुफ़्त ट्रायल वाला खाता बनाएं.
- आपके सिस्टम में SAP GUI (Windows या Java) इंस्टॉल हो. अगर आपके लैपटॉप पर SAP GUI पहले से इंस्टॉल है, तो ऐप्लिकेशन सर्वर आईपी के तौर पर, वर्चुअल मशीन (वीएम) के बाहरी आईपी पते का इस्तेमाल करके SAP से कनेक्ट करें. अगर आपके पास Mac है, तो इस लिंक पर जाकर, Java के लिए SAP GUI भी इंस्टॉल किया जा सकता है.
3. शुरू करने से पहले
- पक्का करें कि आपके पास Google Cloud के लिए ABAP SDK टूल के साथ इंस्टॉल किए गए SAP सिस्टम का ऐक्सेस हो.
- नया सिस्टम सेट अप करने के लिए, Google Cloud Platform पर ABAP Platform का ट्रायल वर्शन इंस्टॉल करना और ABAP SDK इंस्टॉल करना कोडलैब देखें.
- Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं (उदाहरण के लिए:
abap-sdk-poc).
- पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. किसी प्रोजेक्ट के लिए बिलिंग की सुविधा चालू है या नहीं, यह देखने का तरीका जानें. अगर बिना पैसे चुकाए 90 दिनों के लिए आज़माने वाले खाते का इस्तेमाल किया जा रहा है, तो यह चरण छोड़ दें.
- इसके लिए, आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. Cloud Console में, सबसे ऊपर दाएं कोने में मौजूद 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 सिस्टम का ऐक्सेस होना चाहिए जिसमें Google Cloud के लिए ABAP SDK टूल इंस्टॉल हो.
- इस कोडलैब को शुरू करने से पहले, आपको पहला कोडलैब (Google Cloud Platform पर ABAP Platform Trial 1909 इंस्टॉल करना और Google Cloud के लिए ABAP SDK इंस्टॉल करना) और दूसरा कोडलैब (Compute Engine VM पर होस्ट किए गए SAP के लिए, टोकन का इस्तेमाल करके ABAP SDK की पुष्टि करने की सुविधा कॉन्फ़िगर करना) पूरा करना होगा.
- अगर आपने पहला और दूसरा कोडलैब पूरा कर लिया है, तो आपको Google Cloud पर ABAP Platform Trial 1909 सिस्टम के साथ-साथ, पुष्टि और कनेक्टिविटी के लिए ज़रूरी सेटअप भी मिल जाएगा.
- अगर आपने पहला और दूसरा कोडलैब पूरा नहीं किया है, तो इस कोडलैब में दिए गए चरणों को पूरा करने के लिए, आपके पास ज़रूरी इन्फ़्रास्ट्रक्चर और कनेक्टिविटी नहीं होगी. इसलिए, इस कोडलैब को शुरू करने से पहले, आपको कोडलैब 1 और कोडलैब 2 पूरा करना होगा.
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'
ऊपर दिए गए निर्देश में, Google Cloud प्रोजेक्ट के प्लेसहोल्डर के तौर पर abap-sdk-poc
का इस्तेमाल किया गया है. abap-sdk-poc
की जगह अपना प्रोजेक्ट आईडी डालें.
- भूमिका जोड़ी गई है या नहीं, इसकी पुष्टि करने के लिए IAM पेज पर जाएं. आपने जो सेवा खाता बनाया है वह यहां दिखाए गए तरीके से, उसमें असाइन की गई भूमिका के साथ दिखना चाहिए:
5. क्लाइंट पासकोड कॉन्फ़िगरेशन बनाना
Google Cloud की ओर से ज़रूरी शर्तें सेट अप करने के बाद, हम SAP की ओर से कॉन्फ़िगरेशन की प्रोसेस शुरू कर सकते हैं.
पुष्टि करने और कनेक्टिविटी से जुड़े कॉन्फ़िगरेशन के लिए, Google Cloud के लिए ABAP SDK टूल, टेबल /GOOG/CLIENT_KEY
का इस्तेमाल करता है
टेबल /GOOG/CLIENT_KEY टेबल में कॉन्फ़िगरेशन को बनाए रखने के लिए, यह तरीका अपनाएं:
- SAP GUI में, ट्रांज़ैक्शन कोड
SPRO
डालें. - SAP रेफ़रंस IMG पर क्लिक करें.
- Google Cloud के लिए ABAP SDK टूल > बुनियादी सेटिंग > क्लाइंट पासकोड कॉन्फ़िगर करें पर क्लिक करें.
- फ़ील्ड के लिए ये वैल्यू बनाए रखें:
फ़ील्ड | मान |
Google Cloud की कुंजी का नाम | TEST_STORAGE |
Google Cloud सेवा खाते का नाम |
|
Google Cloud का दायरा |
|
प्रोजेक्ट आईडी | abap-sdk-poc |
अनुमति की कैटगरी |
|
बाकी सभी फ़ील्ड खाली छोड़ें
6. Cloud Storage पर बकेट बनाने के लिए Z-Report बनाना
- अपने SAP सिस्टम में लॉग इन करें.
- लेन-देन कोड
SE38
पर जाएं औरZDEMO_CREATE_BUCKET.
नाम से रिपोर्ट प्रोग्राम बनाएं - इसके बाद, खुलने वाले पॉप-अप में नीचे दी गई जानकारी दें:
अगले पॉप-अप में, अपनी पसंद के हिसाब से स्थानीय ऑब्जेक्ट चुनें या पैकेज का नाम दें.
- 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. ऐप्लिकेशन सर्वर से फ़ाइल पढ़ने और उसे Cloud Storage की बकेट में अपलोड करने के लिए, Z-रिपोर्ट बनाना
इस गतिविधि को करने से पहले, आपको एक बड़ी टेक्स्ट फ़ाइल तैयार करनी होगी. यहां हमारे पास पहले से ही एक बड़ी टेक्स्ट फ़ाइल है, जिसे हमने अपने ऐप्लिकेशन सर्वर पर बनाया और अपलोड किया है. अपने SAP सिस्टम के ऐप्लिकेशन सर्वर पर फ़ाइल अपलोड करने के लिए, ट्रांज़ैक्शन कोड CG3Z का इस्तेमाल किया जा सकता है
इस उदाहरण में, हम ~40 एमबी साइज़ की टेक्स्ट फ़ाइल का इस्तेमाल कर रहे हैं. यह फ़ाइल, /tmp
डायरेक्ट्री में मौजूद ऐप्लिकेशन सर्वर पर पहले से अपलोड है.
इस फ़ोल्डर को GitHub से भी डाउनलोड किया जा सकता है. इसके लिए, इस लिंक का इस्तेमाल करें: सैंपल फ़ाइल
- अपने SAP सिस्टम में लॉग इन करें
- लेन-देन कोड
SE38
पर जाएं औरZDEMO_UPLOAD_FILE.
नाम से रिपोर्ट प्रोग्राम बनाएं - इसके बाद, खुलने वाले पॉप-अप में नीचे दी गई जानकारी दें:
अगले पॉप-अप में, अपनी पसंद के हिसाब से स्थानीय ऑब्जेक्ट चुनें या पैकेज का नाम दें.
- 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 दबाएं).
एक्सपोर्ट पूरा होने पर, आपको रिपोर्ट का आउटपुट यहां दिखाया गया है:
नीचे दिए गए तरीके से अपनी क्लाउड स्टोरेज बकेट पर जाकर, यह पुष्टि की जा सकती है कि फ़ाइल अपलोड हुई है या नहीं
8. ABAP SDK कोड का इस्तेमाल करके, Cloud Storage में फ़ाइल अपलोड करना
असल में, यह ABAP प्रोग्राम Google Cloud Storage के साथ इंटिग्रेट होता है. यह ऐप्लिकेशन सर्वर से फ़ाइल पढ़ता है और फ़ाइल डेटा को Storage API के एपीआई क्लाइंट स्टब को भेजता है, ताकि उसे स्टोरेज बकेट में अपलोड किया जा सके. यह बकेट, पिछले रिपोर्ट प्रोग्राम में बनाई गई थी.
फ़ाइल अपलोड करने के लिए बनाया गया रिपोर्ट प्रोग्राम, ये काम करता है:
सिलसिलेवार जानकारी
कनेक्शन सेट अप करना:
- यह
/GOOG/CL_STORAGE_V1
क्लास का इस्तेमाल करके, Google Storage सेवा से एचटीटीपी कनेक्शन बनाता है.
फ़ाइल का डेटा पढ़ना
OPEN
DATASET
करके, ऐप्लिकेशन सर्वर पर फ़ाइल को पढ़ता है. इसके बाद,XSTRING
फ़ॉर्मैट में बदलने के लिए, स्टैंडर्ड SAP फ़ंक्शन मॉड्यूलSCMS_STRING_TO_XSTRING
को कॉल करता है.
सामान्य क्वेरी पैरामीटर जोड़ना
- डेटा को अलग-अलग हिस्सों में अपलोड करने के लिए, हमें "फिर से शुरू किया जा सकने वाला" अपलोड चुनना होगा. डिफ़ॉल्ट रूप से, फिर से शुरू किया जा सकने वाला अपलोड चुनने पर, फ़ाइल के डेटा को 8 एमबी के हिस्सों में बांटा जाता है और अपलोड किया जाता है. हालांकि, डेवलपर
IV_P_CHUNK_SIZE
पैरामीटर सेट करके, इस चंक के साइज़ में बदलाव कर सकते हैं. हालांकि, हमारा सुझाव है कि आप डिफ़ॉल्ट सेटिंग का इस्तेमाल करें. - एपीआई के तरीके को यह बताने के लिए कि "फिर से शुरू किया जा सकने वाला" अपलोड विकल्प चुना जाना है, हम
ADD_COMMON_QPARAM
तरीके को कॉल करते हैं औरuploadType
कोresumable.
के तौर पर पास करते हैं
ऑब्जेक्ट शामिल करना
INSERT_OBJECTS
वाले तरीके को कॉल करने के लिए, इसमें ये पैरामीटर पास किए जाते हैं:IV_Q_NAME
: फ़ाइल का वह नाम जिससे कॉन्टेंट को Cloud Storage में सेव किया जाना हैIV_P_BUCKET
: उस बकेट का नाम जहां फ़ाइल अपलोड करनी हैIS_DATA
: फ़ाइल का वह डेटा जिसे अपलोड करना हैIV_CONTENT_TYPE
: फ़ाइल का कॉन्टेंट टाइप. फ़िलहाल, हम टेक्स्ट फ़ाइल अपलोड कर रहे हैं, इसलिए "text/plain" का इस्तेमाल किया जा रहा है.
ध्यान दें कि हम इंपोर्ट करने वाले पैरामीटर IV_CHUNK_SIZE
को कोई वैल्यू नहीं देते. साथ ही, हम एपीआई क्लाइंट स्टब को इस पैरामीटर से जुड़ी डिफ़ॉल्ट वैल्यू का इस्तेमाल करने देते हैं, जो 8 एमबी है.
सफलता/गड़बड़ियों को मैनेज करना:
- एपीआई कॉल पूरा होने या न होने के आधार पर, एपीआई का जवाब दिखाता है.
कनेक्शन बंद करना:
- स्टोरेज सेवा के एचटीटीपी कनेक्शन को बंद करता है.
9. बधाई हो
बधाई हो! आपने "क्लाउड स्टोरेज बकेट में फ़ाइल अपलोड करना" कोडलैब पूरा कर लिया है.
Cloud Storage JSON API में कई सुविधाएं हैं. Google Cloud के लिए ABAP SDK की मदद से, इन सुविधाओं को सीधे अपने SAP सिस्टम में, ABAP का इस्तेमाल करके ऐक्सेस किया जा सकता है.
Google Cloud Storage, ज़्यादा डेटा को सेव और मैनेज करने के लिए एक बेहतरीन विकल्प है. इसका इस्तेमाल कई तरह के कारोबारों, एंटरप्राइज़, और ऐप्लिकेशन करते हैं.
Google Cloud Storage का इस्तेमाल करने के कुछ फ़ायदे:
- कम कीमत: Google Cloud Storage, बड़ी मात्रा में डेटा को सेव और मैनेज करने का एक किफ़ायती तरीका है.
- आसानी से इस्तेमाल किया जा सकता है: Google Cloud Storage को आसानी से इस्तेमाल किया जा सकता है. इसमें आसान और सहज एपीआई है.
- आसानी से इस्तेमाल किया जा सकता है: Google Cloud Storage का इस्तेमाल कई तरह के ऐप्लिकेशन और प्लैटफ़ॉर्म के साथ किया जा सकता है.
अब नीचे दिए गए कोडलैब पर जाएं और Google Cloud की कई सेवाओं को ऐक्सेस करने के लिए, ABAP SDK टूल का इस्तेमाल करने के बारे में जानें.
- Pub/Sub को इवेंट भेजना
- Cloud Pub/Sub से इवेंट पाना
- टेक्स्ट का अनुवाद करने के लिए, Cloud Translation API का इस्तेमाल करना
- निजी पहचान से जुड़ी जानकारी हटाने के लिए, DLP API का इस्तेमाल करना
- ABAP से BigQuery ML को कॉल करना
10. व्यवस्थित करें
अगर आपको Google Cloud के लिए ABAP SDK टूल से जुड़े अन्य कोडलैब जारी नहीं रखने हैं, तो कृपया क्लीनअप की प्रक्रिया शुरू करें.
प्रोजेक्ट मिटाना
- 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