1. Giriş
Bu codelab'de, hizmet hesabı oluşturma ve bunu Google Cloud için ABAP SDK tarafından sağlanan istemci anahtarı ve iletişim haritası tablosunu yapılandırmak ve ABAP'ta Cloud Storage JSON API'yi çağırmak için kullanma adımları listelenmiştir.
Bu codelab'de aşağıdaki Google Cloud hizmetleri kullanılmaktadır:
- Compute Engine
- Ağ Hizmetleri
- Cloud Shell
- Cloud Storage JSON API V1
Not: Yeni bir Google Cloud projesi oluşturduğunuzda Cloud Storage dahil olmak üzere belirli bir API ve hizmet grubu otomatik olarak etkinleştirilir. Bu sayede, bu güçlü depolama çözümünden hemen yararlanabilirsiniz. Bu nedenle, ek bir adım olarak etkinleştirmeniz gerekmez.
Ön koşullar
- Google Cloud için ABAP SDK'nın yüklü olduğu bir SAP sistemine erişiminiz olduğundan emin olun.
- Yeni bir sistem kurmak için "Install ABAP Platform Trial on Google Cloud Platform and Install ABAP SDK" (Google Cloud Platform'da ABAP Platform Deneme Sürümünü ve ABAP SDK'yı Yükleme) adlı codelab'e başvurabilirsiniz.
Ne oluşturacaksınız?
Google Cloud için ABAP SDK'yı kullanarak SAP sisteminizde aşağıdaki programları oluşturacaksınız.
- Cloud Storage paketi oluşturun.
- Uygulama sunucusundan bir dosyayı okuyun ve oluşturulan Cloud Storage paketine yükleyin.
2. Şartlar
- Chrome veya Firefox gibi bir tarayıcı
- Faturalandırmanın etkin olduğu bir Google Cloud projesi veya Google Cloud Platform için 90 günlük ücretsiz deneme hesabı oluşturun.
- Sisteminizde yüklü SAP GUI (Windows veya Java) SAP GUI dizüstü bilgisayarınıza zaten yüklüyse Uygulama Sunucusu IP'si olarak VM'nin harici IP adresini kullanarak SAP'ye bağlanın. Mac kullanıyorsanız bu bağlantıda bulunan Java için SAP GUI'yi de yükleyebilirsiniz.
3. Başlamadan önce
- Google Cloud için ABAP SDK'nın yüklü olduğu bir SAP sistemine erişiminiz olduğundan emin olun.
- Yeni bir sistem kurmak için Install ABAP Platform Trial on Google Cloud Platform and Install ABAP SDK (Google Cloud Platform'da ABAP Platform deneme sürümünü ve ABAP SDK'yı yükleme) adlı codelab'e başvurabilirsiniz.
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun (örneğin:
abap-sdk-poc). - Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin. 90 günlük ücretsiz deneme hesabı kullanıyorsanız bu adımı atlayın.
- Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız. Cloud Console'da sağ üst köşedeki Cloud Shell'i etkinleştir'i tıklayın:

- Hesabınızın kimliğini doğrulamak ve varsayılan projeyi
abap-sdk-pocolarak ayarlamak için aşağıdaki komutları çalıştırın. Örnek olarakus-west4-bbölgesi kullanılmıştır. Gerekirse lütfen aşağıdaki komutlarda projeyi ve bölgeyi tercihinize göre değiştirin.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
- Google Cloud için ABAP SDK'nın yüklü olduğu bir SAP sistemine erişiminiz olmalıdır.
- Bu codelab'e devam etmeden önce 1. codelab'i (Google Cloud Platform'da ABAP Platform Trial 1909'u ve Google Cloud için ABAP SDK'yı yükleme) ve 2. codelab'i (Compute Engine sanal makinesinde barındırılan SAP için jeton tabanlı ABAP SDK kimlik doğrulamasını yapılandırma) tamamlamanız gerekir.
- 1. ve 2. codelab'i tamamladıysanız bu codelab'ler, Google Cloud'da ABAP Platform Trial 1909 System'i ve kimlik doğrulama ile bağlantı için gerekli kurulumu sağlamış olmalıdır.
- 1. ve 2. codelab'i tamamlamadıysanız bu codelab'de verilen adımları uygulamak için gerekli tüm altyapı ve bağlantıya sahip olmazsınız. Bu nedenle, bu codelab'e devam etmeden önce codelab 1 ve codelab 2'yi tamamlamanız gerekir.
4. Depolama Nesnesi Kullanıcısı rolüne sahip bir hizmet hesabı oluşturma
Gerekli role sahip bir hizmet hesabı oluşturmak için aşağıdaki adımları uygulayın:
- Cloud Shell terminalinde aşağıdaki komutu çalıştırın:
gcloud iam service-accounts create abap-sdk-storage-tester \
--display-name="Service Account for Cloud Storage"
- Şimdi yukarıdaki adımda oluşturulan hizmet hesabına gerekli rolleri ekleyin:
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'
Yukarıdaki komutta, Google Cloud projesi için yer tutucu olarak abap-sdk-poc kullanılır. abap-sdk-poc yerine proje kimliğinizi yazın.
- Rolün eklendiğini doğrulamak için IAM sayfasına gidin. Oluşturduğunuz hizmet hesabı, kendisine atanmış rol ile birlikte aşağıda gösterildiği gibi listelenmelidir:

5. İstemci Anahtarı Yapılandırması Oluşturma
Google Cloud tarafında ön koşulları ayarladığınıza göre, SAP tarafındaki yapılandırmaya geçebiliriz.
Google Cloud için ABAP SDK, kimlik doğrulama ve bağlantıyla ilgili yapılandırma için /GOOG/CLIENT_KEY tablosunu kullanır.
/GOOG/CLIENT_KEY tablosundaki yapılandırmayı korumak için aşağıdaki adımları uygulayın:
- SAP GUI'de
SPROişlem kodunu girin. - SAP Reference IMG'yi tıklayın.
- ABAP SDK for Google Cloud > Basic Settings > Configure Client Key'i (Google Cloud için ABAP SDK > Temel Ayarlar > İstemci Anahtarını Yapılandır) tıklayın.
- Alanlarda aşağıdaki değerleri koruyun:
Alan | Değer |
Google Cloud Anahtar Adı | TEST_STORAGE |
Google Cloud hizmet hesabı adı |
|
Google Cloud Kapsamı |
|
Proje kimliği | abap-sdk-poc |
Yetkilendirme sınıfı |
|
Diğer tüm alanları boş bırakın.
6. Cloud Storage'de Paket Oluşturmak İçin Z-Raporu Oluşturma
- SAP sisteminize giriş yapın.
- İşlem koduna
SE38gidin veZDEMO_CREATE_BUCKET.adlı bir rapor programı oluşturun. - Açılan pop-up pencerede, aşağıdaki şekilde gösterildiği gibi ayrıntıları girin:

Bir sonraki pop-up pencerede, tercihinize göre Yerel Nesne'yi seçin veya bir paket adı girin.
- ABAP düzenleyicisinde aşağıdaki kodu ekleyin:
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.
Paket adı genel olarak benzersiz değilse paketin oluşturulmayacağını lütfen unutmayın. Bu nedenle, kodu yürütmeden önce paket için benzersiz bir ad kullanmayı deneyin.
- Raporu kaydedip etkinleştirin.
- Raporu çalıştırın (F8 tuşuna basın).
Başarılı bir yürütmenin ardından rapor çıkışını aşağıdaki gibi görmeniz gerekir:

7. Uygulama sunucusundan dosya okumak ve dosyayı Cloud Storage paketine yüklemek için Z-Raporu oluşturma
Bu etkinliği gerçekleştirmeden önce büyük bir metin dosyası hazırlamanız gerekir. Burada, uygulama sunucumuza oluşturulup yüklenmiş büyük bir metin dosyamız var. SAP sisteminizin uygulama sunucusuna dosya yüklemek için CG3Z işlem kodunu kullanabilirsiniz.
Bu örnekte, /tmp dizininde Uygulama Sunucusu'na yüklenmiş olan yaklaşık 40 MB boyutunda bir metin dosyası kullanıyoruz.
Bu klasörü GitHub'dan da indirebilirsiniz: Örnek Dosya
- SAP sisteminize giriş yapın.
- İşlem koduna
SE38gidin veZDEMO_UPLOAD_FILE.adlı bir rapor programı oluşturun. - Açılan pop-up pencerede, aşağıdaki şekilde gösterildiği gibi ayrıntıları girin:

Bir sonraki pop-up pencerede, tercihinize göre Yerel Nesne'yi seçin veya bir paket adı girin.
- ABAP düzenleyicisinde aşağıdaki kodu ekleyin:
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( ).
- Raporu kaydedip etkinleştirin.
- Raporu çalıştırın (F8 tuşuna basın).
Başarılı bir yürütmenin ardından rapor çıkışını aşağıdaki gibi görmeniz gerekir:

Dosyanın başarıyla yüklenip yüklenmediğini doğrulamak için Cloud Storage paketinize aşağıdaki şekilde gidin.


8. ABAP SDK kodu açıklanarak Cloud Storage'a dosya yükleme
Bu ABAP programı, Google Cloud Storage ile entegre olur. Uygulama sunucusundan bir dosya okur ve dosya verilerini, önceki rapor programında oluşturulan bir depolama paketi için yüklemek üzere Storage API'nin API istemci kaba koduna iletir.
Dosya yüklemek için oluşturduğunuz rapor programı şunları yapar:
Adım Adım Döküm
Bağlantı Kurma:
/GOOG/CL_STORAGE_V1sınıfını kullanarak Google Storage hizmetiyle bir HTTP bağlantısı oluşturur.
Dosya Verilerini Okuma
OPENDATASETişlemi yaparak uygulama sunucusundaki dosyayı okur ve ardındanXSTRINGbiçimine dönüştürmek için standart SAP işlev modülüSCMS_STRING_TO_XSTRING'yi çağırır.
Ortak Sorgu Parametreleri Ekleme
- Parçalama işlemini gerçekleştirmek için "Devam ettirilebilir" yükleme türünü seçmemiz gerekir. Devam ettirilebilir yükleme varsayılan olarak seçildiğinde dosya verileri 8 MB'lık parçalara bölünür ve yüklenir. Ancak geliştiriciler,
IV_P_CHUNK_SIZEparametresini ayarlayarak bu parçalama boyutunu değiştirebilir. Bununla birlikte, varsayılan ayarın kullanılması önerilir. - API yöntemine "Devam ettirilebilir" yükleme seçeneğinin belirlenmesi gerektiğini bildirmek için
ADD_COMMON_QPARAMyöntemini çağırır veuploadTypedeğeriniresumable.olarak iletiriz.
Nesne Ekleme
- Aşağıdaki parametreleri ileterek
INSERT_OBJECTSyöntemini çağırır: IV_Q_NAME: İçeriğin Cloud Storage'da depolanacağı dosya adıIV_P_BUCKET: Dosyanın yükleneceği paket adıIS_DATA: Yüklenmesi gereken dosya verileriIV_CONTENT_TYPE: Dosyanın içerik türü. Mevcut senaryomuzda bir metin dosyası yüklediğimiz için "text/plain" kullanıyoruz.
İçe aktarma parametresine IV_CHUNK_SIZE herhangi bir değer iletmediğimizi ve API istemci saplamasının bu parametreyle ilişkili varsayılan değeri (8 MB) kullanmasına izin verdiğimizi unutmayın.
Başarıları/Hataları İşleme:
- API çağrısının başarılı olup olmadığına bağlı olarak API yanıtını gösterir.
Bağlantıyı Kapatma:
- Depolama Hizmeti'ne HTTP bağlantısını kapatır.
9. Tebrikler
Tebrikler! "Cloud Storage Paketine Dosya Yükleme" Codelab'ini başarıyla tamamlamış olmanız gerekir.
Cloud Storage JSON API'nin birçok özelliği vardır ve Google Cloud için ABAP SDK ile bu özelliklere doğrudan SAP sistemlerinizde ABAP kullanarak yerel olarak erişebilirsiniz.
Google Cloud Storage, büyük miktarda veriyi depolamak ve yönetmek için mükemmel bir seçenektir. Çok çeşitli işletmeler, kuruluşlar ve uygulamalar tarafından kullanılır.
Google Cloud Storage'ı kullanmanın avantajlarından bazıları:
- Uygun maliyet: Google Cloud Storage, büyük miktarda veriyi depolamak ve yönetmek için uygun maliyetli bir yöntemdir.
- Basitlik: Google Cloud Storage, basit ve sezgisel bir API ile kolayca kullanılabilir.
- Esneklik: Google Cloud Storage, çeşitli uygulama ve platformlarla kullanılabilir.
Artık çeşitli Google Cloud hizmetlerine erişmek için ABAP SDK'yı kullanma konusundaki öğrenme yolculuğunuza devam etmek üzere aşağıdaki codelab'i inceleyebilirsiniz.
- Pub/Sub'a etkinlik gönderme
- Cloud Pub/Sub'dan etkinlik alma
- Metinleri çevirmek için Cloud Translation API'yi kullanma
- Kişisel olarak tanımlanabilir bilgilerin çıkarılması için DLP API'sini kullanma
- ABAP'tan BigQuery ML'yi çağırma
10. Temizleme
Google Cloud için ABAP SDK ile ilgili ek codelab'lere devam etmek istemiyorsanız lütfen temizleme işlemine geçin.
Projeyi silme
- Google Cloud projesini silin:
gcloud projects delete abap-sdk-poc
Tek tek kaynakları silme
- Compute örneğini silin:
gcloud compute instances delete abap-trial-docker
- Güvenlik duvarı kurallarını silin:
gcloud compute firewall-rules delete sapmachine
- Hizmet hesabını silin:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com