AUTHORITY CHECK (SU20-SU21)

SAP ABAP’ta AUTHORITY-CHECK komutu, bir kullanıcının belirli bir yetkilendirme nesnesi için gerekli izinlere sahip olup olmadığını kontrol etmek için kullanılır. Bu komut, SAP güvenlik ve yetkilendirme sisteminin bir parçasıdır ve sistemdeki işlemler veya veri erişimi sırasında güvenlik denetimi sağlar.

KULLANIMI

AUTHORITY-CHECK OBJECT 'Z_YETKI_OBJESI'
  ID 'ALAN1' FIELD lv_alan1
  ID 'ALAN2' FIELD lv_alan2
  ID 'ALAN3' FIELD lv_alan3.
IF sy-subrc <> 0.
  " Kullanıcının yetkisi yok
  WRITE: 'Yetki kontrolü başarısız.'.
ENDIF.

  1. OBJECT: Kontrol edilecek yetkilendirme nesnesini belirtir.
  2. ID ve FIELD: Yetkilendirme nesnesinin alanlarını ve kontrol edilecek değerlerini belirtir.
  3. SY-SUBRC: Kontrol sonucunu döner:
    • 0: Yetkilendirme başarılı.
    • 4: Yetkilendirme başarısız (kullanıcının yetkisi yok).

Kullanım Alanları:

  • Veri erişimi: Kullanıcının belirli veri setlerine erişip erişemeyeceğini kontrol etmek.
  • İşlem kısıtlamaları: Kullanıcının belirli işlemleri gerçekleştirme yetkisine sahip olup olmadığını doğrulamak.
  • Raporlama: Sadece yetkilendirilmiş kullanıcıların belirli raporlara erişmesine izin vermek.

DEBUG MODDA İNCELEYELİM

MM01 tcodu’unu debug modda izleyerek authorization kavramını daha yakından anlayalım.

Sistem, AUTHORITY-CHECK ifadesi gördüğü her yere breakpoint koyacağından sürekli F8 yaparak bir sonraki otorite objesine gidebiliriz.

İlk Authority-Check statement’ı yukarıdaki gibidir.

Authorization object = ‘M_MATE_NEU’.

Authorization field = ‘DUMMY’

Value of Authorixation field = ‘STERN’ (*)

Su21’den authority object’e bakalım.

Authority field’in DUMMY olduğunu tekrar görebilirsiniz.

Debug modunda F6’ya basarak kodu çalıştırıp sy-subrc’nin değerini gözlemleyiniz. Eğer 0’a eşit ise otoritemiz var ve bizim ID’miz bu otorite objesine assign edilmiştir.

Eğer sonuç 0’dan farklı ise, yetkimiz yok demektir.

F8’e basarak bir sonraki otorite objesini inceleyelim.

Authority object name = ‘M_MATE_MAN’

Authorization field = ‘ACTVT’

Authorization value = ‘TACT_ACTVT’

SU21’den kontrol edelim;

TACT_ACTVT = ‘01’. Peki bu ne demek? SU21’de Status ikonuna basarak görebiliriz.

  • 01 => Ekleme ve yaratma iznine sahip olduğu anlaşılıyor.
  • 02 => Değiştirme
  • 03 => Gösterme/Bakma
  • 06 => Silme
  • F4 => Value Help’te bakma

Bu authorization object’in value’su 01 geldi. Yani ekleme ve yaratma izinlerine sahip olduğumuz anlaşılıyor. Hatırlarsanız MM01 transaction Code’u zaten “Malzeme Yaratma” işini yapmamız için var olan bir program idi. Yani aslında yaratma iznimiz olması gayet mantıklı bir şey 😊

Aradaki farkı anlamanız için MM02’yi debug modda açıp aynı Authority Object’in value’sunu inceleyelim (Breakpoints > Breakpoint at statement > AUTHORITY-CHECK yapmayı unutmayınız)

Value = 02 yani sadece değiştirme iznimiz var.

Aynı işlemi MM01’E giderek inceleyelim.

Hatırlarsanız 03 => Görüntüle demek. Yani MM03’te sadece görüntülemeye izin var.

Object class yaratma konusuna bir sonraki yazımıza ulaşabilirsiniz.

Merve Polat

https://medium.com/@pmervepolat977

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir