30 Ağustos 2013 Cuma

Create Your Own Screen in SAP


Kendi ekranınızı yaratmanız için, bir program modulune ihtiyacınız var, bir de tabiki transactioon komutuna.  Bildiğiniz gibi program modülleri transaction komutları olmadan çalışamazlar.

29 Ağustos 2013 Perşembe

REPORT ile MODULE POOL Arasındaki Farklar

REPORT ile MODULE POOL programı arasındaki farklar:


1.     Rapor SAP veritabanından veri göstermeye yarar. Genelde standart  çerçeve olan 1000 kullanılır.  Bu numara tablo ekranları ve rapor seçme ekranları için ayrılmıştır. 

Ama Module pool kullanıcıdan data almaya yada SAP veritabanına veri yüklemeye yarar, bunun yanında yine veritabanından verileri göstermek için de kullanılır.

2.     Se38 raporlama için kullanılır.

         Se80 module pool programlama için kullanılır. (se38 veya se41 veya se51 de kullanılabilir.)

3.     Raporlar executable programlardır. F8 ile çalıştırabilirsiniz.
          Module pool programlar type M tipindelerdir ve sadece bir transaction code ile çalıştırılabilirler.

 

Module Pool Programındaki Olaylar (events)

 1.PBO - Proccess Before Output
 
Bu olay (event)  PROCESS BEFORE OUTPUT (PBO) tanımlanan ekran görüntülenmeden önce çalışır. Bir başka değişle, bu kısıma yazılan kod işlendikten sonra tanımlanan yeni pencere ekrana gelir. İlgili olay bloğu işlendikten sonra, ABAP programının global değişkenlerinin içerikleri, aynı isimdeki ekran alanlarına transfer edilir ve ekran görüntülenir.  

2. PAI   - Process After Input

Bu olay (event) PROCESS AFTER INPUT (PAI) yazılan fonksiyon kodu ile ilgili kullanıcı arayüzü (ekranı) kullanıcı tarafından tetiklendiğinde çalışır.  Bir başka değişle, bir input girişi olduktan sonra bu kısımdaki kod aktive olur.

3. POV - Process on Value request
4.POH - Process on Help request

Bu olaylar,  PROCESS ON HELP-REQUEST (POH)  ve PROCESS ON VALUE-REQUEST (POV), F1 (Help) yada F4 (ekrandan gelecek element) basıldığında tetiklenir.

Ayrıca;
Module pool dan rapora geçmek için SUBMIT kullanmak gerekir.
Rapordan modüle pool a geçmek için CALL Transaction kullanmak gerekir.

   

28 Ağustos 2013 Çarşamba

Client-specific Table and Cross client Table in SAP ABAP

Bu kısım Client bağımlı tablo yaratma ile ilgili.

Client-specific Table :
Eğer programı yada tabloyu geliştirme sunucusunda yaratırsanız, o sunucuya ait olur. 
Ancak aynısını üretim sunucusunda kullanmak isterseniz, o zaman programı/ tabloyu geliştirme sunucusundan bir transport isteği ile aktarmanız gerekir. Eğer  içinde MANDT alanı olan bir tablo yaratırsanız bu client specific tablo yaratmışsınız anlamına gelir.

Cross client tables
Bu tip tablo çeşidi, client dan bağımsız çalışırlar, bir kayıtta değişiklik yaptığınızda diğer client lerda da otomatik olarak değişiklik olur.  Veri her zaman bütün client lar için ortaktır. Eğer MANDT alanı olmayan bir tablo yaratırsanız bu cross client table yaratmışsınız anlamına gelir.  Ancak daha önceden yarattığını zbir tabloda değişiklik yapacaksanız, tablonuzun Data Browser/Table View Maint özelliğinin Display/Maintenance Allowed olduğundan emin olmanız gerekir. Bu kısım da SE11->Table display-> Delivery and Maintenance tabının altındadır. 

27 Ağustos 2013 Salı

SAP ABAP ile Kendi Function ının yaratma

Yeni bir function yaratmak için /se37 yazılır, ve ekrandan yeni bir isim girilir.  Eğer ilk defa yaratacaksak Create, daha önce yarattıysak ve üzerinde değişiklik yapacaksak Change, daha önce yarattık ama değişiklik yapmayıp sadece görüntülemek istiyorsak sadece Display butonuna basılır. 

 
Biz burada ilk defa function yarattığımız için Create butonuna bastık. Karşımızı alttaki ekran gelecektir, Function Group ve Short Text ini girebilmemiz için. 





Sonra gelen ekrandan, Function Grup (daha önce yarattığınız bir fonksiyon grubu) ve Short text (açıklama)  girilir. Save butonuna basılırsa aşağıdaki ekran görülür. Bu ekrandaki sekmelere genel bir bakış atalım.





Import ve Export, Exceptions and Source Code sekmeleri en çok kullanacağımız yerler. Her biri içinde önemli. Bu nedenle tek tek ele alalım.
 
 

 

SAP ABAP Ders 1

Internal Table'dan veri okumak için gerekli bütün kodlar :

Internal tables in ABAP

ABAP dili için internal table oldukça önemlidir. ABAP herhangi bir dizi tanımlamasına izin vermediğinden, birden fazla satırlı veri nesnesi kullanmak isterseniz internal table kullanmak zorundasınız.

Internal tablosu tanımlanmış yapıdaki değişken datasetleri ABAP’ın çalışma alanına taşır, ve veriyi dinamik olarak kullanmanızı sağlar. Veriler aynı yapıdan oluşan satırlarda ayrı ayrı depolanır.

3 tip Internal Tablosu vardır. Ne tür işlemler yaptığımıza bağlı olarak birini seçerek yaratırız.

Standard Table :Index erişimi en hızlı olandır. Ancak erişim hızı, tablodaki değerlerin sayısına ve ilişkilerin fazlalığına bağlı olarak değişir. Eğer bir anahtar veri erişimine ihtiyacınız varsa, bu tablo genelde yeterlidir,

Sorted Table: Bu tablo çeşidi, eğer sıralamalı olarak doldurduğunuz bir tabloya ihtiyacınız varsa kullanacağınız tablodur. INSERT komutunu kullanrak tabloyu sıralayıp doldurabilirsiniz. Girişler bir tablo anahtarı tarafından tanımlanan şekilde sıralanark doldurulur. Bir anahtar için program hızı, sistem daima binary search kullandığı için, tablodaki satırların sayısı kadar logaritmik olarak azalır. Eğer spesifik olarak tablodaki anahtarı WHERE koşulu ile LOOP içinde kullanıyorsanız, bu tablo çok kullanışlıdır.

Hashed Table: Asıl işlem anahtar erişimi üzerine ise, bu tip tablo en uygun olandır. Hashed tabloda, onun indexini kullanrak erişim sağlayamazsınız. Tablodaki değer sayısı ne olursa olsun anahtar değere erişim sabittir. Database tablosu gibi, hashed tablo da daima bir unique anahtar vardır. Eğer büyük boyutta veri içeren tablolarınız varsa hashed tablo en iyisidir.


Eğer internal tablosundan spesific bir satır okumak isterseniz READ komutunu kullanmanız gerekir.

READ… TRANSPORTING NO FIELDS.
READ HASHED Table
READ into FIELD-SYMBOL

bu komutlar ile anahtar değişkeni ile (READ WITH TABLE KEY) internal tablosundan okurken kullanılacak komutlar yukardakilerdir.

READ komutunun nasıl kullanılacağına dair birkaç örnek:

READ TABLE  IT_TABLE  INTO WA_TABLE WITH TABLE KEY ID = PERSON_ID

*&---------------------------------------------------------------------*
*& READ INTERNAL TABLE CODE
**********************************

REPORT  ZREAD_TABLE.
DATA: BEGIN OF line,
        col1 TYPE i,
        col2 TYPE i,
      END OF line.

DATA itab LIKE HASHED TABLE OF line WITH UNIQUE KEY col1.

DO TIMES.
  line-col1 = sy-index.
  line-col2 = sy-index ** 2.
  INSERT line INTO TABLE itab.
ENDDO.

line-col1 = 2.
line-col2 = 3.

READ TABLE itab FROM line INTO line COMPARING col2.

WRITE: 'sy-subrc =', sy-subrc.
SKIP.
WRITE: / line-col1, line-col2.


READ TABLE itab WITH TABLE KEY col1 = 3
                INTO line TRANSPORTING col2.

WRITE:  /'yeni kısımi transporting::::::: ',  'sy-subrc =', sy-subrc,
       / 'sy-tabix =', sy-tabix.
SKIP.
WRITE: / line-col1, line-col2.


***************transporting no fields
READ TABLE itab WITH KEY col2 = 16  TRANSPORTING NO FIELDS.

WRITE:  /'transporting no fields.....: ',  'sy-subrc =', sy-subrc,
       / 'sy-tabix =', sy-tabix.

*       ******************
*       assign

       FIELD-SYMBOLS  LIKE LINE OF itab.

       READ TABLE itab WITH TABLE KEY col1 = ASSIGNING .

-col2 = 100.

LOOP AT itab INTO line.
  WRITE: / line-col1, line-col2.
ENDLOOP.


WRITE: /'*reading lines using the ASSİGN:'.


DATA itab11 LIKE SORTED TABLE OF line WITH UNIQUE KEY col1.
DO 10 TIMES.
  line-col1 = sy-index.
  line-col2 = * sy-index.
  WRITE : / LINE-COL1, LINE-COL2.
  APPEND line TO itab11.
ENDDO.


READ TABLE itab11 ASSIGNING  INDEX 7.

SKIP.

WRITE: /
  sy-subrc, sy-tabix.
SKIP.

WRITE: / -col1, -col2.