Gökhan Baştürk

Bilgisayar Yüksek Mühendisi

Farklı Veritabanından SAP’de Rapor Oluşturun – LOGO’dan SAP’ye Veriler Nasıl Raporlanır?

SAP süreçlerinizin içinde bir kısım bilgi farklı yazılımlarda olabilir. Bu durumda bu bilgiler SAP sistemimizde yok diye ABAP raporlarınıza getiremediğiniz sohbetleri ediyor olabilirsiniz. Araştırınca karşınıza çıkmış olacak bu makalemle çok kısa ve öz bilgi ile size çözümünü anlatıyor olacağım.

Şirketinizde basis yetkileriniz yoksa veya bir kısım yetkileriniz kısıtlı ise benim gibi ilerleyemeyebilirsiniz. Bu nedenle ilk adımı gerekirse basis ekibinizden destek alarak yapmalısınız. Benim çalıştığım şirkette her iş için destek olduğumdan kullanıcımda kısıtlamam yok 🙂 Ayrıca veri çekeceğiniz sunucu ile SAP sunucunuz arasında da erişim izinlerinin olduğunu kontrol edin, aksi durumda yine erişim sağlayamazsınız.

Üç adımda anlatacağım;
İlk adım, bağlantı için bir bağlantı ayarı yapacağız.
İkinci adımda bu bağlantı çalışıyor mu test edeceğiz.
Üçüncü ve son adımda da bir abap kod yazıp ekrana veri geliyor mu göstermiş olacağım.

1- Öncelikle dış kaynak veri ne tür bir ortamda ve bunu SAP’de çekmeniz mümkün mü bunu anlamanız için SAP’de DBCO işlem kodunu kullanıp hangi sistemlere erişebiliyoruz görelim. Zaten bu işlem kodu ile de ilk adım bağlantımızı da yapıyor olacağız.

Yukarıda da göreceğiniz gibi bu veri ambarı yazılımları ile iletişim sağlayabilirsiniz.

Ben çok fazla kullanılan Microsoft SQL Server ile bağlantımızı hazırlacağım. Muhtemelen siz de bu veritabanı ile veri çekeceksiniz.

DBCO işlem koduna girin ve aşağıdaki işaretlediğim düğme ile düzenleme kısmını açın.

Düzenleme düğmesine bastığınızda aşağıdaki gibi üstteki menü açılır ve Yeni Girişler düğmesi ile yeni bir bağlantı oluşturmanız sağlanır.

Ben daha önceden oluşturduğum için oluşturduğum son halini sizinle aşağıda paylaşıyorum.

Yukarıdaki kısımda Conn. info’ya alanına dikkat etmelisiniz. Burada bağlanacağınız sunucunun adı ve bağlanacağınız veri tabanının adını yazmalısınız. Aksi durumda kodunuz veritabanınu bulamadım diye dump verecektir. Ayrıca sürekli erişim için ilgili kısım tıklı kalsın.

2- Bu bağlantımızı hazırladıysak kontrol edelim. Bunun için se38 işlem kodumuzla standart olarak yazılmış bir programı çalıştıracağız. Bu programın adı ADBC_TEST_CONNECTION . Se38 ile bu programı çalıştırın aşağıdaki gibi adını verdiğimiz bağlantıyı isterseniz f4 ile bulup getirin yada elle yazın.

Çalıştır düğmesine basıp beklediğinizde test sonucu aşağıdaki gibi başarılı ise bu bilgilerle dönecektir.

3- Son adım olarak ben testimi tablo çekip ALV tablo yaparak göstermek istedim. Sizler sadece basit bir veri de çekip ilgili projenizde kullanabilirsiniz. Benim aşağıdaki kod örneğim zaten daha kapsamlı olduğundan siz basit hale getirerek kullanabilirsiniz. (Genelde tablo lazım olur diye tablo çektim)

REPORT zgokhan_sql.

DATA: lv_ref TYPE string.

TYPES : BEGIN OF ty_koli,
          kolileme_ref TYPE char10,
          dagitimkodu  TYPE char50,
          lg_no        TYPE char50,
          alici_adi    TYPE char255,
          alici_adres  TYPE char255,
        END OF ty_koli.

DATA: ls_koli TYPE ty_koli.
DATA: lt_koli TYPE TABLE OF ty_koli.

DATA: ls_table TYPE dbcon.


SELECT SINGLE *
    FROM dbcon
    INTO ls_table
   WHERE con_name = 'LOGO_SISTEM'.

IF sy-subrc <> 0.
  EXIT. "WRITE :/ ‘Connection is not valid’.
ENDIF.

EXEC SQL.
  CONNECT TO 'LOGO_SISTEM'
ENDEXEC.

IF sy-subrc <> 0.
  EXIT. "write :/ ‘sql ile bağlanti kurulamadi !!’.
ENDIF.

EXEC SQL PERFORMING loop_output.
  SELECT KOLILEME_REF DAGITIMKODU,LG_NO,ALICI_ADI,ALICI_ADRES
    INTO :LS_KOLI
    FROM KOLILEME
ENDEXEC.

EXEC SQL.
  DISCONNECT :'LOGO_SISTEM'
ENDEXEC.

DATA: lo_alv TYPE REF TO cl_salv_table.

TRY.
    CALL METHOD cl_salv_table=>factory
      IMPORTING
        r_salv_table = lo_alv
      CHANGING
        t_table      = lt_koli.
  CATCH cx_salv_msg .
ENDTRY.

lo_alv->display( ).

FORM loop_output.
  APPEND ls_koli TO lt_koli.
  CLEAR: ls_koli.
ENDFORM.

Programı da çalıştırdığımda aşağıdaki gibi rapor ALV‘mi görüntüleyebiliyorum.