খণ্ড দিয়ে ক্লাউড স্টোরেজে একটি ফাইল আপলোড করুন৷

খণ্ড দিয়ে ক্লাউড স্টোরেজে একটি ফাইল আপলোড করুন৷

এই কোডল্যাব সম্পর্কে

subjectসেপ ৪, ২০২৪-এ শেষবার আপডেট করা হয়েছে
account_circleSatish Inamdar-এর লেখা

1. ভূমিকা

এই কোডল্যাবে, আমরা একটি পরিষেবা অ্যাকাউন্ট তৈরি করার পদক্ষেপগুলি তালিকাভুক্ত করেছি এবং Google ক্লাউডের জন্য ABAP SDK দ্বারা প্রদত্ত ক্লায়েন্ট কী এবং যোগাযোগের মানচিত্র সারণী কনফিগার করতে এবং ABAP-এ ক্লাউড স্টোরেজ JSON API চালু করতে এটি ব্যবহার করেছি৷

নিম্নলিখিত Google ক্লাউড পরিষেবাগুলি এই কোডল্যাবে ব্যবহার করা হয়:

  • কম্পিউট ইঞ্জিন
  • নেটওয়ার্ক পরিষেবা
  • মেঘের শেল
  • ক্লাউড স্টোরেজ JSON API V1

দ্রষ্টব্য: আপনি যখন একটি নতুন Google ক্লাউড প্রকল্প তৈরি করেন, তখন ক্লাউড স্টোরেজ সহ API এবং পরিষেবাগুলির একটি নির্দিষ্ট সেট স্বয়ংক্রিয়ভাবে সক্ষম হয়৷ এটি নিশ্চিত করে যে আপনি অবিলম্বে এই শক্তিশালী স্টোরেজ সমাধানের সুবিধা নিতে পারেন। অতএব আপনি এটি একটি অতিরিক্ত পদক্ষেপ হিসাবে সক্রিয় করতে হবে না.

পূর্বশর্ত

আপনি কি নির্মাণ করবেন

আপনি Google ক্লাউডের জন্য ABAP SDK ব্যবহার করে আপনার SAP সিস্টেমে নিম্নলিখিত প্রোগ্রামগুলি তৈরি করবেন৷

  • একটি ক্লাউড স্টোরেজ বালতি তৈরি করুন।
  • অ্যাপ্লিকেশন সার্ভার থেকে একটি ফাইল পড়ুন এবং এটি তৈরি করা ক্লাউড স্টোরেজ বালতিতে আপলোড করুন।

2. প্রয়োজনীয়তা

  • একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
  • বিলিং সক্ষম সহ একটি Google ক্লাউড প্রকল্প বা Google ক্লাউড প্ল্যাটফর্মের জন্য একটি 90-দিনের বিনামূল্যে ট্রায়াল অ্যাকাউন্ট তৈরি করুন
  • আপনার সিস্টেমে ইনস্টল করা SAP GUI (উইন্ডোজ বা জাভা)। যদি আপনার ল্যাপটপে SAP GUI ইতিমধ্যেই ইনস্টল করা থাকে, তাহলে অ্যাপ্লিকেশন সার্ভার IP হিসাবে VM বাহ্যিক IP ঠিকানা ব্যবহার করে SAP-এর সাথে সংযোগ করুন। আপনি যদি ম্যাকে থাকেন, তাহলে আপনি এই লিঙ্কে উপলব্ধ জাভার জন্য SAP GUI ইনস্টল করতে পারেন।

3. আপনি শুরু করার আগে

6757b2fb50ddcc2d.png

  • আপনার অ্যাকাউন্টের জন্য প্রমাণীকরণ করতে নিম্নলিখিত কমান্ডগুলি চালান এবং ডিফল্ট প্রকল্পটিকে abap-sdk-poc এ সেট করুন। Zone us-west4-b উদাহরণ হিসেবে ব্যবহার করা হয়েছে। যদি প্রয়োজন হয়, অনুগ্রহ করে আপনার পছন্দের উপর ভিত্তি করে নিম্নলিখিত কমান্ডগুলিতে প্রকল্প এবং অঞ্চল পরিবর্তন করুন।
gcloud auth login
gcloud config
set project abap-sdk-poc
gcloud config
set compute/zone us-west4-b
  • Google ক্লাউড ইনস্টল করার জন্য ABAP SDK সহ একটি SAP সিস্টেমে আপনার অ্যাক্সেস থাকতে হবে।
  • এই কোডল্যাব নিয়ে এগিয়ে যাওয়ার আগে আপনাকে অবশ্যই কোডল্যাব 1 ( Google ক্লাউড প্ল্যাটফর্মে ABAP প্ল্যাটফর্ম ট্রায়াল 1909 ইনস্টল করতে হবে এবং Google ক্লাউডের জন্য ABAP SDK ইনস্টল করতে হবে ) এবং কোডল্যাব 2 ( Compute Engine VM-এ SAP হোস্ট করা টোকেন ব্যবহার করে ABAP SDK প্রমাণীকরণ কনফিগার করতে হবে )।
  • আপনি যদি কোডল্যাব 1 এবং কোডল্যাব 2 সম্পূর্ণ করে থাকেন, তাহলে এটি আপনাকে প্রমাণীকরণ এবং সংযোগের জন্য প্রয়োজনীয় সেটআপ সহ Google ক্লাউডে একটি ABAP প্ল্যাটফর্ম ট্রায়াল 1909 সিস্টেমের ব্যবস্থা করবে।
  • আপনি যদি কোডল্যাব 1 এবং কোডল্যাব 2 সম্পূর্ণ না করে থাকেন তবে এই কোডল্যাবে প্রদত্ত পদক্ষেপগুলি সম্পাদন করার জন্য আপনার কাছে প্রয়োজনীয় সমস্ত অবকাঠামো এবং সংযোগ থাকবে না। অতএব, এই কোডল্যাবের সাথে এগিয়ে যাওয়ার আগে আপনাকে অবশ্যই কোডল্যাব 1 এবং কোডল্যাব 2 সম্পূর্ণ করতে হবে।

4. স্টোরেজ অবজেক্ট ব্যবহারকারীর ভূমিকা সহ একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

প্রয়োজনীয় ভূমিকা সহ একটি পরিষেবা অ্যাকাউন্ট তৈরি করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
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'

উপরের কমান্ডটি Google ক্লাউড প্রকল্পের জন্য একটি স্থানধারক হিসাবে abap-sdk-poc ব্যবহার করে। abap-sdk-poc আপনার প্রজেক্ট আইডি দিয়ে প্রতিস্থাপন করুন।

  1. যাচাই করতে, ভূমিকা যোগ করা হয়েছে, IAM পৃষ্ঠায় যান। আপনি যে পরিষেবা অ্যাকাউন্টটি তৈরি করেছেন সেটিকে নীচে দেখানো ভূমিকার সাথে তালিকাভুক্ত করা উচিত:

92d75ce1554efb69.png

5. ক্লায়েন্ট কী কনফিগারেশন তৈরি করুন

এখন যেহেতু আপনি Google ক্লাউড সাইডে প্রাক-প্রয়োজনীয়তা সেট আপ করেছেন, আমরা SAP সাইডে কনফিগারেশন নিয়ে এগিয়ে যেতে পারি।

প্রমাণীকরণ এবং সংযোগ সম্পর্কিত কনফিগারেশনের জন্য, Google ক্লাউডের জন্য ABAP SDK টেবিল /GOOG/CLIENT_KEY ব্যবহার করে

/GOOG/CLIENT_KEY টেবিলে কনফিগারেশন বজায় রাখতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. SAP GUI-তে, লেনদেন কোড SPRO লিখুন।
  2. SAP রেফারেন্স IMG এ ক্লিক করুন।
  3. Google ক্লাউড > বেসিক সেটিংস > কনফিগার ক্লায়েন্ট কী-এর জন্য ABAP SDK-এ ক্লিক করুন।
  4. ক্ষেত্রগুলির বিপরীতে নিম্নলিখিত মানগুলি বজায় রাখুন:

মাঠ

মান

গুগল ক্লাউড কী নাম

TEST_STORAGE

Google ক্লাউড পরিষেবা অ্যাকাউন্টের নাম

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

গুগল ক্লাউড স্কোপ

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

প্রকল্প আইডি

abap-sdk-poc

অনুমোদন শ্রেণী

/GOOG/CL_AUTH_GOOGLE

অন্য সব ক্ষেত্র ফাঁকা রাখুন

6. ক্লাউড স্টোরেজে একটি বালতি তৈরি করতে একটি 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. অ্যাপ্লিকেশন সার্ভার থেকে একটি ফাইল পড়ার জন্য একটি Z-রিপোর্ট তৈরি করুন এবং এটি ক্লাউড স্টোরেজ বালতিতে আপলোড করুন

আপনি এই ক্রিয়াকলাপটি সম্পাদন করার আগে, আপনাকে একটি বড় পাঠ্য ফাইল প্রস্তুত করতে হবে। এখানে আমরা ইতিমধ্যে একটি বড় টেক্সট ফাইল তৈরি করেছি এবং আমাদের অ্যাপ্লিকেশন সার্ভারে আপলোড করেছি। আপনি আপনার SAP সিস্টেমের অ্যাপ্লিকেশন সার্ভারে একটি ফাইল আপলোড করতে লেনদেন কোড CG3Z ব্যবহার করতে পারেন

এই উদাহরণের জন্য, আমরা ~40 MB আকারের একটি টেক্সট ফাইল ব্যবহার করছি, যা ইতিমধ্যেই /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

আপনি আপনার ক্লাউড স্টোরেজ বালতিতে নীচে দেখানো হিসাবে নেভিগেট করে ফাইলটি সফলভাবে আপলোড করা হয়েছে কি না তা যাচাই করতে পারেন

90678b475e165adf.png

1886be610c63ed6b.png

8. ব্যাখ্যা করা হয়েছে ABAP SDK কোড ব্যবহার করে ক্লাউড স্টোরেজে ফাইল আপলোড করুন

সংক্ষেপে, এই ABAP প্রোগ্রামটি Google ক্লাউড স্টোরেজের সাথে একীভূত হয়। এটি অ্যাপ্লিকেশন সার্ভার থেকে একটি ফাইল পড়ে এবং একটি স্টোরেজ বাকেটে আপলোড করার জন্য স্টোরেজ API এর API ক্লায়েন্ট স্টাব-এ ফাইল ডেটা পাস করে, যা আগের রিপোর্ট প্রোগ্রামে তৈরি করা হয়েছিল।

একটি ফাইল আপলোড করার জন্য আপনি যে রিপোর্ট প্রোগ্রাম তৈরি করেছেন তা নিম্নলিখিতগুলি করে:

ধাপে ধাপে ব্রেকডাউন

সংযোগ স্থাপন করুন:

  • এটি /GOOG/CL_STORAGE_V1 ক্লাস ব্যবহার করে Google স্টোরেজ পরিষেবাতে একটি HTTP সংযোগ স্থাপন করে৷

ফাইল ডেটা পড়ুন

  • একটি OPEN DATASET করে অ্যাপ্লিকেশন সার্ভারে ফাইলটি পড়ে এবং তারপরে XSTRING ফর্ম্যাটে রূপান্তর করতে স্ট্যান্ডার্ড SAP ফাংশন মডিউল SCMS_STRING_TO_XSTRING কল করে৷

সাধারণ ক্যোয়ারী প্যারামিটার যোগ করুন

  • চঙ্কিং অর্জনের জন্য, আমাদের যে ধরনের আপলোড বেছে নিতে হবে তা হল "পুনরায় শুরুযোগ্য" আপলোড৷ ডিফল্টরূপে যখন পুনরায় শুরুযোগ্য আপলোড নির্বাচন করা হয়, ফাইল ডেটা 8 এমবি খণ্ডে বিভক্ত এবং আপলোড করা হয়। তবে বিকাশকারীরা IV_P_CHUNK_SIZE প্যারামিটার সেট করে এই খণ্ডের আকার পরিবর্তন করতে পারে, তবে এটি ডিফল্ট সেটিং ব্যবহার করার পরামর্শ দেওয়া হয়।
  • API পদ্ধতিকে জানাতে যে "পুনরায় শুরুযোগ্য" আপলোড বিকল্পটি বেছে নিতে হবে, আমরা পদ্ধতিটিকে ADD_COMMON_QPARAM বলি এবং uploadType resumable.

বস্তু সন্নিবেশ করান

  • নিম্নলিখিত পরামিতিগুলি পাস করে INSERT_OBJECTS পদ্ধতিটিকে কল করে:
  • IV_Q_NAME : ফাইলের নাম যার সাথে বিষয়বস্তুগুলিকে ক্লাউড স্টোরেজে সংরক্ষণ করতে হবে৷
  • IV_P_BUCKET : বাকেটের নাম যেখানে ফাইলটি আপলোড করতে হবে
  • IS_DATA : ফাইল ডেটা যা আপলোড করতে হবে৷
  • IV_CONTENT_TYPE : ফাইলের বিষয়বস্তুর প্রকার, আমাদের বর্তমান পরিস্থিতির জন্য আমরা একটি পাঠ্য ফাইল আপলোড করার সময় "টেক্সট/প্লেইন" ব্যবহার করছি।

মনে রাখবেন যে আমরা আমদানি পরামিতি IV_CHUNK_SIZE এ কোনো মান পাস করি না এবং API ক্লায়েন্ট স্টাবকে এই প্যারামিটারের সাথে যুক্ত ডিফল্ট মান ব্যবহার করতে দিই, যা 8 MB।

সফলতা/ত্রুটি পরিচালনা করুন:

  • API কল সফল হয়েছে কিনা তার উপর ভিত্তি করে API প্রতিক্রিয়া প্রদর্শন করে।

সংযোগ বন্ধ করুন:

  • স্টোরেজ পরিষেবাতে HTTP সংযোগ বন্ধ করে।

9. অভিনন্দন

অভিনন্দন! আপনি সফলভাবে "ক্লাউড স্টোরেজ বাকেটে একটি ফাইল আপলোড করা" কোডল্যাব সম্পূর্ণ করেছেন৷

ক্লাউড স্টোরেজ JSON API-এর অনেক ক্ষমতা রয়েছে এবং Google ক্লাউডের জন্য ABAP SDK সহ, আপনি ABAP ব্যবহার করে সরাসরি আপনার SAP সিস্টেমে সেগুলি অ্যাক্সেস করতে পারেন।

Google ক্লাউড স্টোরেজ হল প্রচুর পরিমাণে ডেটা সঞ্চয় এবং পরিচালনা করার জন্য একটি দুর্দান্ত বিকল্প৷ এটি বিস্তৃত ব্যবসা, উদ্যোগ এবং অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয়।

গুগল ক্লাউড স্টোরেজ ব্যবহারের কিছু সুবিধা:

  • খরচ-কার্যকারিতা: Google ক্লাউড স্টোরেজ হল প্রচুর পরিমাণে ডেটা সঞ্চয় ও পরিচালনা করার একটি সাশ্রয়ী উপায়।
  • সরলতা: Google ক্লাউড স্টোরেজ একটি সহজ এবং স্বজ্ঞাত API সহ ব্যবহার করা সহজ।
  • নমনীয়তা: Google ক্লাউড স্টোরেজ বিভিন্ন অ্যাপ্লিকেশন এবং প্ল্যাটফর্মের সাথে ব্যবহার করা যেতে পারে।

আপনি এখন বিভিন্ন google ক্লাউড পরিষেবাগুলিতে অ্যাক্সেস করতে ABAP SDK ব্যবহার করে আপনার শেখার যাত্রা চালিয়ে যেতে নীচের কোডল্যাবের সাথে এগিয়ে যেতে পারেন।

  • পাব/সাব-এ একটি ইভেন্ট পাঠান
  • Cloud Pub/Sub থেকে একটি ইভেন্ট পান
  • পাঠ্য অনুবাদ করতে Cloud Translation API ব্যবহার করুন
  • PII রিডাকশনের জন্য DLP API ব্যবহার করুন
  • ABAP থেকে BigQuery ML-এ কল করুন

10. পরিষ্কার করুন

আপনি যদি Google ক্লাউডের জন্য ABAP SDK-এর সাথে সম্পর্কিত অতিরিক্ত কোডল্যাবগুলি চালিয়ে যেতে না চান, তাহলে অনুগ্রহ করে পরিষ্কারের সাথে এগিয়ে যান৷

প্রকল্পটি মুছুন

  • Google ক্লাউড প্রকল্প মুছুন:
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