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.
30 Ağustos 2013 Cuma
29 Ağustos 2013 Perşembe
REPORT ile MODULE POOL Arasındaki Farklar
REPORT
ile MODULE POOL programı arasındaki farklar:
Se80 module pool programlama için kullanılır. (se38 veya se41 veya se51 de kullanılabilir.)
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.
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.
Etiketler:
ABAP,
Client,
client table,
Cross client table,
Data element,
MANDT,
SAP
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.
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.
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 :
*&---------------------------------------------------------------------*
*& 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 4 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 = 2 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 = 2 * 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.
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 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 4 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
READ TABLE itab WITH TABLE KEY col1 = 2 ASSIGNING
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 = 2 * sy-index.
WRITE : / LINE-COL1, LINE-COL2.
APPEND line TO itab11.
ENDDO.
READ TABLE itab11 ASSIGNING
SKIP.
WRITE: /
sy-subrc, sy-tabix.
SKIP.
WRITE: /
Etiketler:
ABAP,
assign,
comparing,
hashed,
insert,
internal table,
SAP,
Sorted,
standard table,
transporting,
where
Kaydol:
Kayıtlar (Atom)