1. Giriş
Bu kod laboratuvarında, bir hizmet hesabı oluşturma ve bunu Google Cloud için ABAP SDK'sı tarafından sağlanan istemci anahtarı ve iletişim haritası tablosunu yapılandırmak ve ABAP'da Cloud Storage JSON API'yi çağırmak için kullanma adımlarını listeledik.
Bu kod laboratuvarında 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 belirli API'ler ve hizmetler 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'sının yüklü olduğu bir SAP sistemine erişiminiz olduğundan emin olun.
- Yeni bir sistem oluşturmak için "Google Cloud Platform'a ABAP Platform Deneme Sürümü'nü ve ABAP SDK'sını Yükleme" kod laboratuvarına başvurabilirsiniz.
Ne oluşturacaksınız?
Google Cloud için ABAP SDK'sını kullanarak SAP sisteminizde aşağıdaki programları oluşturacaksınız:
- Cloud Storage paketi oluşturun.
- Uygulama sunucusundan bir dosya okuyup 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 SAP GUI (Windows veya Java) yüklü olmalıdır. SAP GUI dizüstü bilgisayarınızda zaten yüklüyse uygulama sunucusu IP'si olarak sanal makinenin harici IP adresini kullanarak SAP'e 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'sının yüklü olduğu bir SAP sistemine erişiminiz olduğundan emin olun.
- Yeni bir sistem oluşturmak için Google Cloud Platform'a ABAP Platform Deneme Sürümü'nü ve ABAP SDK'sını Yükleme kod laboratuvarına göz atabilirsiniz.
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun (örneğin:
abap-sdk-poc).
- Cloud projenizde faturalandırmanın etkinleştirildiğinden emin olun. Projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğ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-poc
olarak ayarlamak için aşağıdaki komutları çalıştırın. Örnek olarakus-west4-b
bölgesi kullanılmıştır. Gerekirse lütfen aşağıdaki komutlardaki 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'sı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'a ABAP Platform Trial 1909'u ve Google Cloud için ABAP SDK'sını yükleme) ve 2. codelab'i (Compute Engine sanal makinesinde barındırılan SAP için jetonları kullanarak ABAP SDK kimlik doğrulamasını yapılandırma) tamamlamanız gerekir.
- 1. ve 2. codelab'i tamamladıysanız kimlik doğrulama ve bağlantı için gerekli kurulumla birlikte Google Cloud'da bir ABAP Platform Trial 1909 sistemi sağlanmış olur.
- 1. ve 2. codelab'i tamamlamadıysanız bu codelab'de verilen adımları gerçekleştirmek için gerekli tüm altyapıya ve bağlantıya sahip olmazsınız. Bu nedenle, bu codelab'e devam etmeden önce 1. ve 2. codelab'i tamamlamanız gerekir.
4. Depolama Nesnesi Kullanıcı 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"
- Ardından, 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ı, aşağıda gösterildiği gibi kendisine atanan rolle birlikte listelenir:
5. İstemci Anahtar Yapılandırması Oluşturma
Google Cloud tarafındaki ön koşulları ayarladığınıza göre SAP tarafında yapılandırma işlemine geçebiliriz.
Google Cloud için ABAP SDK'sı, 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
SPRO
işlem kodunu girin. - SAP Reference IMG'yi (SAP Referans IMG'si) tıklayın.
- Google Cloud için ABAP SDK'sı > 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'da Paket Oluşturmak İçin Z Raporu Oluşturma
- SAP sisteminize giriş yapın.
SE38
işlem koduna gidin veZDEMO_CREATE_BUCKET.
adlı bir rapor programı oluşturun- Açılan pop-up'ta aşağıdaki gibi ayrıntıları sağlayın:
Sonraki pop-up'ta Yerel Nesne'yi seçin veya tercihinize göre bir paket adı girin.
- ABAP Düzenleyici'ye 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ı dünya genelinde benzersiz değilse paketin oluşturulmayacağını 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ütme işleminde, rapor çıkışını aşağıdaki gibi görürsünüz:
7. Uygulama Sunucusundan Dosya Okumak ve Cloud Storage Paketine Yüklemek İç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üklenen 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
dizinindeki Uygulama Sunucusu'na zaten yüklenmiş olan yaklaşık 40 MB boyutunda bir metin dosyası kullanıyoruz.
Bu klasörü aşağıdaki bağlantıyı kullanarak GitHub'dan da indirebilirsiniz: Örnek Dosya
- SAP sisteminize giriş yapın
SE38
işlem koduna gidin veZDEMO_UPLOAD_FILE.
adlı bir rapor programı oluşturun- Açılan pop-up'ta aşağıdaki gibi ayrıntıları sağlayın:
Sonraki pop-up'ta Yerel Nesne'yi seçin veya tercihinize göre bir paket adı girin.
- ABAP Düzenleyici'ye 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ütme işleminde, rapor çıkışını aşağıdaki gibi görürsünüz:
Aşağıda gösterildiği gibi Cloud Storage paketinize giderek dosyanın başarıyla yüklenip yüklenmediğini doğrulayabilirsiniz.
8. ABAP SDK kodunu kullanarak Cloud Storage'a dosya yükleme
Özünde 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 paketine yüklemek için Storage API'nin API istemci stub'ına iletir.
Dosya yüklemek için oluşturduğunuz rapor programı aşağıdakileri yapar:
Adım adım döküm
Bağlantı kurma:
/GOOG/CL_STORAGE_V1
sınıfını kullanarak Google Storage hizmetine bir HTTP bağlantısı kurar.
Dosya Verilerini Okuma
OPEN
DATASET
yaparak uygulama sunucusunda dosyayı okur ve ardındanXSTRING
biçimine dönüştürmek için standart SAP işlev modülüSCMS_STRING_TO_XSTRING
'yi çağırır.
Yaygın Sorgu Parametreleri Ekleme
- Parçalara ayırma işlemini gerçekleştirmek için seçmemiz gereken yükleme türü "Devam ettirilebilir" yüklemedir. Devam ettirilebilir yükleme seçildiğinde dosya verileri varsayılan olarak 8 MB'lık parçalara bölünür ve yüklenir. Ancak geliştiriciler
IV_P_CHUNK_SIZE
parametresini ayarlayarak bu parça boyutunu değiştirebilir. Bununla birlikte, varsayılan ayarın kullanılması önerilir. - API yöntemine "Devam ettirilebilir" yükleme seçeneğinin seçilmesi gerektiğini bildirmek için
ADD_COMMON_QPARAM
yöntemini çağırır veuploadType
değeriniresumable.
olarak iletiriz.
Nesne ekleme
- Aşağıdaki parametreleri ileterek
INSERT_OBJECTS
yöntemini çağırır: IV_Q_NAME
: İçeriğin Cloud Storage'da depolanacağı dosya adıIV_P_BUCKET
: Dosyanın yüklenmesi gereken paket adıIS_DATA
: Yüklenmesi gereken dosya verileriIV_CONTENT_TYPE
: Dosyanın İçerik Türü. Mevcut senaryomuzda bir metin dosyası yüklediğimiz için "text/plain" değerini kullanıyoruz.
İçe aktarma parametresi IV_CHUNK_SIZE
'ye herhangi bir değer iletmediğimizi ve API istemci stub'ının bu parametreyle ilişkili varsayılan değeri (8 MB) kullanmasına izin verdiğimizi unutmayın.
Başarılı/hatalı işlemleri iş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ı Kapat:
- Depolama Hizmeti'ne yönelik HTTP bağlantısını kapatır.
9. Tebrikler
Tebrikler! "Cloud Storage Paketine Dosya Yükleme" Codelab'i başarıyla tamamladınız.
Cloud Storage JSON API'nin birçok özelliği vardır ve Google Cloud için ABAP SDK'sı sayesinde bu özelliklere doğrudan SAP sistemlerinizde ABAP'ı kullanarak yerel olarak erişebilirsiniz.
Google Cloud Storage, büyük miktarda veri depolamak ve yönetmek için mükemmel bir seçenektir. Ç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 kullanımı kolaydır.
- Esneklik: Google Cloud Storage, çeşitli uygulamalar ve platformlarla kullanılabilir.
Çeşitli Google Cloud hizmetlerine erişmek için ABAP SDK'yı kullanmayla ilgili öğrenme yolculuğunuza devam etmek üzere aşağıdaki codelab'e geçebilirsiniz.
- Pub/Sub'a etkinlik gönderme
- Cloud Pub/Sub'dan etkinlik alma
- Metinleri çevirmek için Cloud Translation API'yi kullanma
- Kimliği tanımlayabilecek bilgileri çıkarmak için DLP API'yi kullanma
- ABAP'den BigQuery ML'yi çağırma
10. Temizleme
Google Cloud için ABAP SDK'sıyla ilgili ek kod laboratuvarlarına devam etmek istemiyorsanız lütfen temizleme işlemine devam edin.
Projeyi silme
- Google Cloud projesini silin:
gcloud projects delete abap-sdk-poc
Kaynakları tek tek silme
- Hesaplama ö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