छोटे-छोटे हिस्सों में ट्रांसफ़र की गई फ़ाइल को Cloud Storage में अपलोड करना

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 के साथ-साथ एपीआई और सेवाओं का एक खास सेट अपने-आप चालू हो जाता है. इससे यह पक्का होता है कि आपको स्टोरेज की इस बेहतरीन सुविधा का तुरंत फ़ायदा मिल सके. इसलिए, आपको इसे अतिरिक्त चरण के तौर पर चालू करने की ज़रूरत नहीं है.

ज़रूरी शर्तें

आपको क्या बनाना है

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 है, तो इस लिंक पर जाकर, SAP GUI for Java भी इंस्टॉल किया जा सकता है.

3. शुरू करने से पहले

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
  • आपके पास, Google Cloud के लिए ABAP SDK इंस्टॉल किए गए SAP सिस्टम का ऐक्सेस होना चाहिए.
  • इस कोडलैब को पूरा करने से पहले, आपको कोडलैब 1 (Google Cloud Platform पर ABAP Platform Trial 1909 इंस्टॉल करना और Google Cloud के लिए ABAP SDK इंस्टॉल करना) और कोडलैब 2 (Compute Engine वीएम पर होस्ट किए गए SAP के लिए, टोकन का इस्तेमाल करके ABAP SDK टूल की पुष्टि करने की सुविधा कॉन्फ़िगर करना) पूरा करना होगा.
  • अगर आपने कोडलैब 1 और कोडलैब 2 पूरा कर लिया है, तो आपको Google Cloud पर ABAP Platform Trial 1909 System मिल गया होगा. साथ ही, पुष्टि करने और कनेक्टिविटी के लिए ज़रूरी सेटअप भी मिल गया होगा.
  • अगर आपने कोडलैब 1 और कोडलैब 2 पूरा नहीं किया है, तो आपके पास इस कोडलैब में दिए गए चरणों को पूरा करने के लिए, ज़रूरी इंफ़्रास्ट्रक्चर और कनेक्टिविटी नहीं होगी. इसलिए, इस कोडलैब को पूरा करने से पहले, आपको कोडलैब 1 और कोडलैब 2 को पूरा करना होगा.

4. स्टोरेज ऑब्जेक्ट के उपयोगकर्ता की भूमिका वाला सेवा खाता बनाना

ज़रूरी भूमिका वाला सेवा खाता बनाने के लिए, यह तरीका अपनाएं:

  1. Cloud Shell टर्मिनल में यह कमांड चलाएं:
gcloud iam service-accounts create abap-sdk-storage-tester \
--display-name="Service Account for Cloud Storage"
  1. अब ऊपर दिए गए चरण में बनाए गए सेवा खाते में ज़रूरी भूमिकाएं जोड़ें:
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 का इस्तेमाल Google Cloud प्रोजेक्ट के लिए प्लेसहोल्डर के तौर पर किया गया है. abap-sdk-poc की जगह अपना प्रोजेक्ट आईडी डालें.

  1. भूमिका जोड़े जाने की पुष्टि करने के लिए, IAM पेज पर जाएं. आपने जो सेवा खाता बनाया है वह यहां दी गई इमेज की तरह, असाइन की गई भूमिका के साथ दिखना चाहिए:

92d75ce1554efb69.png

5. क्लाइंट कुंजी कॉन्फ़िगरेशन बनाएं

Google Cloud पर ज़रूरी शर्तें पूरी करने के बाद, अब हम SAP पर कॉन्फ़िगरेशन सेट अप कर सकते हैं.

पुष्टि करने और कनेक्टिविटी से जुड़े कॉन्फ़िगरेशन के लिए, Google Cloud के लिए ABAP SDK, /GOOG/CLIENT_KEY टेबल का इस्तेमाल करता है

/GOOG/CLIENT_KEY टेबल में कॉन्फ़िगरेशन बनाए रखने के लिए, यह तरीका अपनाएं:

  1. SAP GUI में, ट्रांज़ैक्शन कोड SPRO डालें.
  2. SAP Reference IMG पर क्लिक करें.
  3. Google Cloud के लिए ABAP SDK > बुनियादी सेटिंग > क्लाइंट कुंजी कॉन्फ़िगर करें पर क्लिक करें.
  4. फ़ील्ड के लिए यहां दी गई वैल्यू डालें:

फ़ील्ड

वैल्यू

Google Cloud की का नाम

TEST_STORAGE

Google Cloud सेवा खाते का नाम

abap-sdk-storage-tester@abap-sdk-poc.iam.gserviceaccount.com

Google Cloud का स्कोप

https://www.googleapis.com/auth/cloud-platform

प्रोजेक्ट आईडी

abap-sdk-poc

अनुमति देने वाली क्लास

/GOOG/CL_AUTH_GOOGLE

अन्य सभी फ़ील्ड खाली छोड़ें

6. Cloud Storage पर बकेट बनाने के लिए, Z-रिपोर्ट बनाना

  1. अपने SAP सिस्टम में लॉग इन करें.
  2. लेन-देन के कोड SE38 पर जाएं और ZDEMO_CREATE_BUCKET. नाम से रिपोर्ट प्रोग्राम बनाएं
  3. खुलने वाले पॉप-अप में, यहां दिखाई गई जानकारी डालें:

93f3edb7bbb5c3c4.png

अगले पॉप-अप में, लोकल ऑब्जेक्ट चुनें या अपनी पसंद के मुताबिक पैकेज का नाम डालें.

  1. 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.
 

कृपया ध्यान दें कि अगर बकेट का नाम दुनिया भर में यूनीक नहीं है, तो बकेट नहीं बनाई जाएगी. इसलिए, कोड को लागू करने से पहले बकेट के लिए कोई यूनीक नाम इस्तेमाल करें

  1. रिपोर्ट को सेव करें और चालू करें.
  2. रिपोर्ट चलाएं (F8 दबाएं).

सही तरीके से लागू करने पर, आपको रिपोर्ट का आउटपुट इस तरह दिखेगा:

ff232fba9a4178fb.png

7. ऐप्लिकेशन सर्वर से फ़ाइल पढ़ने और उसे Cloud Storage बकेट में अपलोड करने के लिए, Z-रिपोर्ट बनाना

यह गतिविधि करने से पहले, आपको एक बड़ी टेक्स्ट फ़ाइल तैयार करनी होगी. यहां हमारे पास पहले से ही एक बड़ी टेक्स्ट फ़ाइल है, जिसे हमारे ऐप्लिकेशन सर्वर पर बनाया और अपलोड किया गया है. SAP सिस्टम के ऐप्लिकेशन सर्वर पर फ़ाइल अपलोड करने के लिए, CG3Z ट्रांज़ैक्शन कोड का इस्तेमाल किया जा सकता है

इस उदाहरण के लिए, हम ~40 एमबी की टेक्स्ट फ़ाइल का इस्तेमाल कर रहे हैं. यह फ़ाइल, ऐप्लिकेशन सर्वर पर /tmp डायरेक्ट्री में पहले से अपलोड है.

इस फ़ोल्डर को GitHub से भी डाउनलोड किया जा सकता है. इसके लिए, इस लिंक का इस्तेमाल करें: सैंपल फ़ाइल

  1. SAP सिस्टम में लॉग इन करें
  2. लेन-देन के कोड SE38 पर जाएं और ZDEMO_UPLOAD_FILE. नाम से रिपोर्ट प्रोग्राम बनाएं
  3. खुलने वाले पॉप-अप में, यहां दिखाई गई जानकारी डालें:

19cbe6987bba58e4.png

अगले पॉप-अप में, लोकल ऑब्जेक्ट चुनें या अपनी पसंद के मुताबिक पैकेज का नाम डालें.

  1. 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( ).
  1. रिपोर्ट को सेव करें और चालू करें.
  2. रिपोर्ट चलाएं (F8 दबाएं).

सही तरीके से लागू करने पर, आपको रिपोर्ट का आउटपुट इस तरह दिखेगा:

c982bfcd07d7e487.png

यह पुष्टि की जा सकती है कि फ़ाइल सही तरीके से अपलोड हुई है या नहीं. इसके लिए, Cloud Storage बकेट में नीचे दिए गए तरीके से जाएं

90678b475e165adf.png1886be610c63ed6b.png

8. ABAP SDK कोड का इस्तेमाल करके, Cloud Storage में फ़ाइल अपलोड करने के बारे में जानकारी

असल में, यह ABAP प्रोग्राम Google Cloud Storage के साथ इंटिग्रेट होता है. यह ऐप्लिकेशन सर्वर से फ़ाइल को पढ़ता है और फ़ाइल के डेटा को Storage API के API Client Stub को पास करता है. इससे फ़ाइल को उस स्टोरेज बकेट में अपलोड किया जा सकता है जिसे रिपोर्ट प्रोग्राम में बनाया गया था.

फ़ाइल अपलोड करने के लिए बनाए गए रिपोर्ट प्रोग्राम से ये काम किए जाते हैं:

सिलसिलेवार जानकारी

कनेक्शन सेट अप करना:

  • यह /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 बकेट में फ़ाइल अपलोड करना" कोडलैब पूरा कर लिया है.

Cloud Storage JSON API में कई सुविधाएं उपलब्ध हैं. Google Cloud के लिए ABAP SDK की मदद से, ABAP का इस्तेमाल करके सीधे तौर पर अपने SAP सिस्टम में इन सुविधाओं को ऐक्सेस किया जा सकता है.

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

एक-एक करके संसाधन मिटाना

  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