1. DOĞUKAN PADEL 1
ABAPGIT EĞİTİM DOKÜMANI
1. GİT NEDİR ?
Git bir versiyon kontrol sistemidir. Versiyon kontrol sistemi (Version Control System) bir proje
üzerinde yaptığımız değişiklikleri adım adım kaydeden ve isterseniz bunu internet üzerinde
depoda (repository) saklamamızı ve yönetmemizi sağlayan bir sistemdir. Ayrıca Git bir
dağınık (distributed) versiyon kontrol sistemi olduğu için her bir istemci (client) sadece
dosyaların en son anlık görüntüsünü kontrol etmekle kalmaz, aynı zamanda tam geçmişi de
dahil olmak üzere depoyu tamamen kopyalar. Her clone gerçekten tüm verilerin tam bir
yedeğidir. Böylece, herhangi bir sunucu ölürse ve bu sistemler bu sunucu aracılığıyla işbirliği
yapıyorsa, istemci depolarından herhangi biri geri yüklemek için sunucuya kopyalanabilir. Bu
nedenle dağınık bir versiyon kontrol sistemi olan Git’i kullanmak projemiz için oldukça
güvenlidir.
Ayrıca Git, bir projede çalışırken yaptığınız değişikleri görebilmenizi, eski haline
erişebilmenizi sağlar. Bu şekilde projenin her adımına erişebilir ve geliştirme süreçlerini
sağlıklı bir şekilde izleyebiliriz. Ayrıca bir projede birden fazla kişi çalışması durumunda da
aynı dosya üzerinde yapılan değişikliklerin sorun çıkmadan kontrol edilebilmesine, projelerin
güncel versiyonlarına ulaşabilmeye yardımcı olur. Bu tür avantajlar sağlaması nedeniyle
birçok yönden fayda sağlar ve hız artırır.
Git hakkında daha ayrıntılı bilgi edinmek isterseniz bu bağlantıdan faydalanabilirsiniz.
2. DOĞUKAN PADEL 2
2. ABAPGIT NEDİR ?
AbapGit, ABAP için ABAP ile yazılmış bir git istemcisidir. AbapGit, Lars
Hvam tarafından MIT Lisansı altında başlatılan bir Açık kaynaklı projedir. Abapgit
kullanarak SAP sisteminde geliştirilmiş bir geliştirme paketini git uzak sunucularında
depolayabilir, versiyon kontrollerini yapabilir ve istediğimiz zaman istediğimiz
versiyonu indirerek geliştirmeye kaldığımız yerden devam edebiliriz. Çalışma mantığı
olarak oluşturduğumuz veri sözlüğü nesneleri, programlar, CDS viewlar birer XML’e
dönüştürülerek git uzak sunucunda saklanır. Pull işlemi yapıldığında bu XML abapgit
tarafından çözülür ve SAP sisteminde otomatik olarak – tablo ise tablo olarak ,
structure ise structure olarak vb. – SAP nesneleri oluşturulur.
*Yukarıdaki görsel Dr. Kerem Köseoğlu ‘nun Abapgit i anlattığı videodan alıntıdır.
3. DOĞUKAN PADEL 3
3. ABAPGIT AVANTAJLARI
Request transporting işlemi yerine kullanılabilir. Daha hızlı ve kolay bir yöntem
olması nedeniyle request transporting işlemine alternatif sağlar.
Ürün güncellemelerinin dağıtımını kolaylaştırır. Farklı müşterilere satılmış bir
ürünümüz olduğunu kabul edelim. Ürün güncellemesinde her müşteriye
transport request göndermek yerine sadece bir github adresi ile güncellemeleri
kolayca dağıtabilirsiniz.
Bir kod kütüphanesi sağlar.
Proje üzerinde yapılan değişikliklerin takibini kolaylaştırır. Yapılan değişikliklerin
kim tarafından, hangi zamanda yapıldığını kontrol etmeyi kolaylaştırır.
Sistem bağımsız geliştirmeye olanak sağlar.
Farklı SAP sürümlerinde test etmeye olanak sağlar 7.70 ‘de yazılan bir kodun
7.50’de çalışıp çalışmadığını kontrol etmek gibi.
Kod incelemeyi kolaylaştırır.
4. ABAPGIT DEZAVANTAJLARI
ABAP nesnelerinin tümü abapGit tarafından desteklenmez. Bakınız.
Repomuz çok büyük olursa abapGit’i her açtığımızda her şeyin seri hale
gelmesi ve değişiklikler için github ile karşılaştırılması gerektiğinden uzun
zaman alabilir.
Kod incelemelerinde değişiklikleri tam olarak yalnızca github’a bakarak anlamak
pek mümkün değildir. Github ile eclipse yada SAP gui arasında sürekli geçiş
yapmak zaman kaybettirebilir.
Branch işlemi çok zor neredeyse olanaksızdır. Bakınız.
4. DOĞUKAN PADEL 4
5. KURULUM
UYARI : AbapGit, SAP BASIS sürüm 702 veya üzerini gerektirir.
ZABAPGIT_STANDALONE isminde bir program oluşturun.
Buraya tıklayarak ABAP kodunu bilgisayarınıza kaydedin.
5. DOĞUKAN PADEL 5
Kaynak kodu değiştirme modunda, Utilities -> More Utilities -> Upload/Download ->
Upload'ı kullanarak kodu bir önceki adımda kaydettiğimiz dosyadan yükleyin.
Programı aktifleştirin.
7. DOĞUKAN PADEL 7
6. GÜNCELLEME
AbapGit 1.104.0 olan sürümü en güncel hale getirelim. Bunun için
ZABAPGIT_STANDALONE programını değiştir modunda açıyoruz. Kodları en güncel
kodlarla değiştiriyoruz. Kodları değiştirmek için kurulumdaki yöntemi kullanabilirsiniz
.Kodlara ulaşmak için burayı tıklayın.
Aktifleştirip çalıştırdığımızda abapGit en güncel sürümüne kavuşmuş oluyor.
8. DOĞUKAN PADEL 8
7. SSL KURULUMU
SAP sisteminin github ile iletişim kurması için bir ssl bağlantısı kurmamız gerekiyor.
SAP varsayılan olarak eski bir ssl sürümünü desteklediği için SAP sisteminde birkaç
profil parametresi ayarlamamız gerekiyor.
RZ10 işlem koduna gidiyoruz. Yaptığımız değişiklikler sistemi yeniden başlattığımızda
geçerli olacak. Bu yüzden işlemleri gerçekleştirdikten sonra sistemi yeniden
başlatmamız gerek. Profil alanında default seçtikten sonra extended maintenance
seçeneğinin seçili olduğundan emin olup. Change butonuna basıyoruz.
Açılan ekranda parameter kısmına tıklıyoruz.
9. DOĞUKAN PADEL 9
Eklememiz veya kontrol etmemiz gerek üç parametre var.
ssl/client_ciphersuites = 150:PFS:HIGH::EC_P256:EC_HIGH
ssl/ciphersuites = 135:PFS:HIGH::EC_P256:EC_HIGH
icm/HTTPS/client_sni_enabled = TRUE
Parametreyi aşağıdaki gibi gerekli alanlara giriyoruz. Copy diyoruz. Geri çıkıyoruz.
Değişiklikleri kaydetmek istiyor musunuz pop-up’ına evet diyoruz. Bu işlemi diğer
parametreler için de tekrarlıyoruz.
Aşağıdaki gibi bir görüntü olduğundan emin oluyoruz. Copy butonuna tıklayıp geri
çıkıyoruz.
10. DOĞUKAN PADEL 10
Profil save ve ardından profile activate butonlarına tıklayarak profili
aktifleştiriyoruz.
Sıradaki adımda github sertifikalarını sistemimize tanımlayacağız. Github sayfasına
gidiyoruz. Tarayıcının site bilgi ekranında bağlantı ayarlarını göster ve ardından
sertifikayı göster alanını seçin. Sertifikalar açılacaktır.
11. DOĞUKAN PADEL 11
Ayrıntılar Dosyaya kopyala Sonraki Der ile kodlanmış ikili seçeneğini seçip
sonraki Dosya adını seçip sonraki Son adımlarını izleyerek sertifikamızı dışa
aktarıyoruz. (Dışa aktardığımız sertifika github.com sertifikası bunu diğer sertifikalar
için de tekrarlıyoruz işlemler tamamlandığında elimizde 3 farklı sertifika olması
gerekiyor.)
Aşağıdaki resimde görüldüğü üzere bu sertifikaları da aynı adımları izleyerek dışa
aktarıyoruz. Elimizde 3 adet sertifika olması gerekiyor.
12. DOĞUKAN PADEL 12
SAP sisteminde STRUST işlem kodunu açıyoruz. Change butonuna tıklıyoruz.
SSL client SSL Cliennt (Anonymous) seçeğine tıklıyoruz. Burada sertifikalarımızı
sisteme aktaracağız. Altta bir içe aktar düğmesi görüyoruz.
13. DOĞUKAN PADEL 13
Açılan ekranda indirdiğimiz sertifikalardan birini seçiyoruz. İzin ver diyoruz. Daha sonra
sertifika listesine ekle butonuna basıyoruz. Bu işlemi tüm sertifikalar için tekrarlıyoruz.
Şimdi SAP sistemi github ile iletişim kurmak için bilmesi gereken tüm sertifikaları biliyor.
SAP sistemini kapatıp tekrar açın.
14. DOĞUKAN PADEL 14
Github’ a SSL bağlantısını test etmek için zabapgit_test_ssl adında bir rapor oluşturun.
Buradaki kodu rapora yapıştırın. Aktifleştirip çalıştırın.
Bu şekilde sonuç almanız gerekir. Sonuç bu şekildeyse her şey düzgün çalışıyor
demektir.
15. DOĞUKAN PADEL 15
8. REPO OLUŞTURMA VE YÜKLEME
İçinde bir programın olduğu bir paketim var. Bu bir program yerine yüzlerce program,
sınıf, nesne de olabilirdi.
Github hesabıma gidiyorum. Bir repository oluşturuyorum.
16. DOĞUKAN PADEL 16
SE38 işlem kodu ile zabapgit_standalone programı çalıştırıyorum. Abapgit ekranı sizi
karşılayacak. Bu ekranda new online butonuna tıklıyorum.
Bu ekran beni karşılayacak. Oluşturduğum github reposunun adresini github repository
url kısmına veriyorum. SAP sistemindeki paketimin adını package alanına veriyorum.
Son olarak display name veriyorum ve create online repository butonuna basıyorum.
Ve online repom oluşmuş oluyor. Bu paketi github repomda yayınlamak için öncelikli
olarak stage butonuna tıklıyoruz.
17. DOĞUKAN PADEL 17
Yayınlamak istediğimiz dosyaları ister tek tek (add butonu yardımıyla) ister tümünü
(add all and commit yardımıyla) seçerek commit butonuna basıyoruz.
Zorunlu alanları doldurduktan sonra commit diyoruz.
Gelen pop-up da user alanına github kullanıcı adımızı yazıyoruz. Yeni gelen
güncelleme ile github şifrenizi yazarak commit işlemini gerçekleştiremiyorsunuz.
Bunun yerine tek kullanımlık bir token üretip bu token ile commit işlemini
gerçekleştiriyorsunuz.
18. DOĞUKAN PADEL 18
Token üretmek için github settings developer settings yolunu izlemeniz gerekir.
Personal Access tokens bölümünden generate new token seçeğini seçin. Ben token
oluştururken aşağıdaki checkboxlardan sadece repo olanı işaretliyorum. Diğerlerini
tercihe göre işaretleyebilirsiniz.
Daha sonra generate token butonuna tıklayarak tokenımızı oluşturmuş oluyoruz.
Token oluşmuş oldu. Jetonunuz tek kullanımlık oluyor her seferinde regenarate
etmeniz gerekir.
19. DOĞUKAN PADEL 19
Jetonu kopyalayıp pop-up’a yapıştırıyoruz. Yürüt diyoruz.
Commit işlemi gerçekleşmiş oluyor.
Github repomuza baktığımızda sonucu görebiliriz.
20. DOĞUKAN PADEL 20
9. GITHUB’DAN PROJENİN ÇEKİLMESİ
Başka bir sistemde bu reponun github’dan sisteme çekilmesi işlemi de oldukça basit.
SE38 işlem kodunda ZABAPGIT_STANDALONE uygulamasını çalıştırarak abapGit e
erişim sağlıyoruz.
New online butonuna tıklıyoruz. Github repomuzun adresini veriyoruz. Daha önceden
oluşturduğumuz veya şuan otomatik olarak oluşturulmasını istediğimiz paket ismini
veriyoruz ve create online repo butonuna tıklıyoruz.
21. DOĞUKAN PADEL 21
Github repomuzda olan XML ve ABAP dosyaları burada görünüyor olacak. PULL
komutu ile verileri hedef sistemimize çekiyoruz.
Girdiğim paket ismi mevcut olmadığı ve otomatik olarak oluşturulacağı için bana bir
pop-up gösteriyor. Oluşturulacak paketin hangi requestin altında olacağını belirlemek
için. Burada ister yeni bir request oluşturabilir isterseniz de var olan bir requesti
seçebilirsiniz.
İşlem başarılı bir şekilde gerçekleşmiş oluyor. Github reposu ve sistemdeki repo aynı
olduğu için pull butonu görünmez oluyor. Github repomuzda bir değişiklik
yaptığımızda pull butonu tekrar aktif olacaktır.
22. DOĞUKAN PADEL 22
SE80 üzerinden paketimizi kontrol ettiğimizde github reposundaki tablo ve programın
hedef sisteme başarılı bir şekilde aktarıldığını görüyoruz.
23. DOĞUKAN PADEL 23
10. ABAPGIT’ İ SİSTEMDEN KALDIRMA
SE38 veya SE80 kullanarak ZABAPGIT* ABAP raporlarını silin.
EZABAPGIT kuyruğa alma nesnesini SE11 aracılığıyla silin.
SE11 aracılığıyla ZABAPGIT şeffaf tablosunu silin.
SMW0 işlemindeki ZABAPGIT_CSS_COMMON + ZABAPGIT_JS_COMMON mime
nesnelerini silin.
SE24 veya SE80 kullanarak ZIF_APACK_MANIFEST arayüzünü silin (isteğe bağlı,
klonlanmış depolar bu arayüzü kullanmaya devam edebilir).