1 Ağustos 2009 Cumartesi

ABAP : En kisa yoldan ALV gosterimi

Bir ay boyunca yaz okuluyla uğraştık, bloga yazamadık artık vakit geldi :=) .
Bu yazıda, en kısa kodla alv gösterme işlemine değinelim.
Burada OO ABAP'ın nimetlerinden yararlanıyoruz ve nimet demişken, OO ABAP'ı üç kere öpüp başımıza koyuyoruz.

Yakında Horst Keller, ki kendisi ABAP OBJECTS kitabının yazarıdır, abimizden ; OO ABAP için 7 altın kural isimli yazının özetini yayınlıyacağım zira 70 sayfalık bir yazı, kaynağınıda vereceğim isteyen hepsini okusun. OO ABAP'ı gördükçe "biz ne saçlamıyoruz böyle" diyeceksiniz.

Gelelim kodlara;


report z_gostert.
data: o_alv type ref to cl_gui_alv_grid,
gt_bkpf type table of bkpf.
select * from bkpf into table gt_bkpf up to 10 rows.

* ALV objesini yaratıyoruz, burada dikkat etmemiz nokta
* screen0 ı göndermek.
create object o_alv
exporting
i_parent = cl_gui_container=>screen0.

* Structure'a göre otomatik olarak fcat'imiz oluşacaktır

call method o_alv->set_table_for_first_display
exporting
i_structure_name = 'BKPF'
changing
it_outtab = gt_bkpf.

* ALV nin gösterileceği yeni bir selection screen tanımlıyoruz
selection-screen begin of screen 1001.

selection-screen end of screen 1001.

call selection-screen 1001.


diyerek yazımızı "bitirken" bölümü ile bitiriyoruz. Bu sefer edebiyat ile alakalı değil siyaset ile akalı olacak :).

Bitirirken;

Platon'un devlet kitabını şöyle bir karışıtırın.
Sokrates, öğrencileriyle girdiği "lider kim olmalı" tartışmasında, devletin kim tarafından yönetilmesi gerektiği sorusunu sorar öğrencilerine.
Sokrates tabiki devletin filozoflar tarafından yönetilmesi gerektiğini söyler. Öğrencileri hık mık eder,

-Olur mu hocam, felsefeciler biraz deli olur berecemezler,
en akıllılar bile bir süre sonra hizmet edemeyecek hale gelirler.
derler

Sokrates ise suçun filozoflarda değil onları kullanamayanlarda olduğunu söyler.
O zamanlarda, devletin başına erdemli insanlar gelirse, iyi yönetilir diye düşünülüyordu.
Platon aynı kitapta bu liderler için "tanrı o liderlerin mayasına altın katmıştır onlar o yüzden lider olurlar" diye de yazar aynı zamanda. Aslında ta o zamandan kapitalist sisteme de dokundurmuş , o "altın" da şüphesiz , "sermaye" olmalı :). Tabiki bu sermaye lafı Brezilya’daki Lula hükümeti, Bolivya’daki Morales hükümeti , Venezüella'daki Chavez hükümeti gibi ve diğer "gerçek sol" Latin Amerika hükümetleri için pek geçerli değil.
Neyse;
16. yy da Machiavelli yeni bir tanımla ortaya çıktı, bilirsiniz;
"Hükümdar olmak için erdemli bir insan olmaya gerek yoktur, kurnaz olmak kafidir", "İyi özelliklere sahip olmasına gerek yoktur, sadece öyle gözüksün yeter" deyip akabinde siyaseti ve ahlakı birbirinden ayırdı .Başarı gelecekse hertürlü pislik yapılabilir , amaç uğruna herşey mübahtır anlayışını sokarak bir çığır açtı aslında.
Günümüzde de mevcut olan anlayış bu değil mi ? :)

Ülke istediği kadar demokratikleşme girişimlerinde bulunsun istediği kadar "ben değiştim" desin, ahlak ve kültür anlayışını değişmeden, yani mevcut toplumda ki insan modeli değişmeden, bu girişimler ve değişimler hep birer "çaba" veya "geçici başarı" olarak kalacak ve en ufak bir sendelemede diktatörlük vari otoriter yönetime dönme eğilimi gösterecektir.

Edit: Yapamadım; şiir eklemeden duramadım.

Başka türlü bir şey benim istediğim:
Ne ağaca benzer, ne de buluta.
Burası gibi değil gideceğim memleket
Denizi ayrı deniz,
Havası ayrı hava..

Can Yücel'in Değişik isimli şiirinden.


12 Haziran 2009 Cuma

ABAP : Macro - Ayin Son Gunu

Selamlar,
Ayın son günüyle beraber tarihi hesaplamak için, Last_Day_Of_Month gibi fonksiyonlar mevcuttur, fakat bunu yapmak yerine, ufak bir işlemle ayın son gününü hesaplayabiliriz.
Yapacağımız şey ;
Elimizdeki tarihin gününü 01 e çekmek, arkasından 31 eklemek, günü tekrar 1'e çekmek ve daha sonra 1 çıkarmak :)
bu ufak işlemle o ayın son günüyle beraber tarihe ulaşmış oluruz.
Makroya gelince;


DEFINE SON_GUN.
&1+6(2) = '01'.
&1 = &1 + 31.
&1+6(2) = '01'.
&1 = &1 - 1.
END-OF-DEFINITION.

data:
lv_tarih type d.

lv_tarih = sy-datum.
son_gun lv_tarih.

Bitirirken;
Bir önceki yazımda yazdığım Hakkari ile ilgili yazıya devam edelim ;
Zeydan Kurtuluş; her santimine bolca kar, bolca yağmur ve bolca ağıt düşen Hakkari'yi ve Hakkari'nin çocuklarını bakın nasıl tanımlıyor.

Hiçbir gün öylesine yaşanmaz Hakkari'de… İnsan hakkı değil, zorunluluktur çalışmak. Kimse yalnızca kadın, erkek ya da çocuk değildir... Çobandır, korucudur, çiftçidir, öğretmendir.. Avcıdır, yolcudur yeri geldiğinde.. Yaylaya çıkılacak, dağlara tırmanılacak, sürüler korunacaktır… Küçük kardeşlere bakılacak, tezekler kışa hazırlanacak, koyunlar kırkılacak , koyunlar-keçiler sağılacak , köprüler geçilecektir her gün, yine yine yine… Uzak hayaller, yakın dertlerle daha da uzaklaşsa da bu kentte, söğüt yaprağıyla ıslık çalmayı, can simidine dönüşen pet şişelerle Zap Suyunda yüzmeyi, iki direği, bir parça toprağı futbol sahasına çevirmeyi, hayata gol atmayı bilir çocuklar..




11 Haziran 2009 Perşembe

ABAP : Makrolar

Selamlar, makroların ne olduğunu anlatmaya gerek yok sanırım her programlama dilinde nerdeyse aynı şeyleri yapıyorlar.
ABAP'ta makrolara gelince ;

REPORT ZMAKRO.

DATA: sonuc TYPE I,
deger1 TYPE I VALUE 1,
deger2 TYPE I VALUE 2.

DEFINE ISLEM.
SONUC = &1 &2 &3.
CIKTI &1 &2 &3 SONUC.
END-OF-DEFINITION.

DEFINE CIKTI.
WRITE: / 'SONUC &1 &2 &3 =', &4.
END-OF-DEFINITION.

ISLEM 1 + 2.
ISLEM 3 ** 4.
ISLEM deger2 - deger1.


Programı çalıştırdığımızda sonuçlardan zaten nasıl çalıştığını göreceğiz.
Örneğin ISLEM makrosu, 1. , 2.ve 3. parametreyi alarak SONUC için işleme tabi tutuyor . CIKTI isimli makro ise SONUC'u da alarak ayrı bir işleme tabi tutuyor ve ekrana yazdırıyor.
Şöyle bir çıktı olacaktır.

SONUC 1 + 2 = 3
SONUC 3 ** 4 = 81
SONUC DEGER2 - DEGER1 = 1

Bitirirken; yine bir konuya değinelim;
TRT1 de "Gönlümün Sağ Alt Köşesi" isimli bir belgesel vardı; Hakkari belgeseli.
Kurtuluş Zeydan , yani yapımcısı, şunları söylemişti yapıtı için, ne de güzel söylemiş :).

"Bizler, karayolları haritasını ikiye katlayıp, yaz tatillerine, kayak keyiflerine çıkarken, 'Wellcome Bodrum, wellcome Uludağ'larla karşılanırken, 'Hoşça kal' dediğimiz topraklar vardır, haritanın diğer yanında. Şova dönüşmeyen sessiz acıların, gösterişten uzak coşkuların, kader sanılanak doğan çocukların, inceldiği yerden kopan hayatların, ikisi bir araya gelmeyen yakaların, yine de başı dik, alnı açık insanların kentidir Hakkari… Her santimine bolca kar, bolca yağmur ve bolca ağıt düşen Sağ Alt Köşesidir Gönlümün...


SQL : Job History Goruntuleme

Selamlar,
Job histroy'i hızlı görüntüleme için ufak bir script buldum bir blog sitesinde :=) oradan alaraktan buraya yazıyorum zira benimde işime epey yarayacaktır. Adamın yazdığına göre kendiside bir yerden almış bir proje esnasında :=). Kaynak anonim oluyor yani. Halk dilinde söylenir dururmuş bu script, söyleyeni belli olmayan türküler gibi.

select job_name, run_datetime, run_duration
from
(
select job_name, DATEADD(hh, -7, run_datetime) as run_datetime,
SUBSTRING(run_duration, 1, 2) + ':' + SUBSTRING(run_duration, 3, 2) + ':' +
SUBSTRING(run_duration, 5, 2) AS run_duration
from
(
select DISTINCT
j.name as job_name,
run_datetime = CONVERT(DATETIME, RTRIM(run_date)) +
(run_time * 9 + run_time % 10000 * 6 + run_time % 100 * 10) / 216e4,
run_duration = RIGHT('000000' + CONVERT(varchar(6), run_duration), 6)
from msdb..sysjobhistory h
inner join msdb..sysjobs j
on h.job_id = j.job_id
) t
) t
order by job_name, run_datetime

Bitirirken Tatar Ramazan'dan bahsedelim, Tatar Ramazan'ı bilirsiniz :=) . Onu Türk öykücülüğüne kazandıran Kerim Korcan'dır.
Kendisi o kitap için;

“Ben üniversite kürsülerinde vatandaşların hak ve hukuk eşitliği için ağlayan ama içeride insanların anasını ağlatan adaleti, tekmil ters uygulamalarıyla mahpushanede cürmü meşut ettim, suçüstü yakaladım. Madem ki adalet mülkün temelidir, ben de toplum sorunlarına, başlangıç olarak oradan yaklaşmayı uygun buldum.

diye bahseder.

Tatar Ramazan, Türk öykücülüğünün en çıplak gerçekçi kahramanı olduğu gibi; Doğulu yaşam biçiminin, mertliğin ve cesaretin, onurun ve ozanlığın, zulme karşı direncin ve başkaldırının da ender kişiliklerindendir.


Mehmet Altun ise kitap için gayet yerinde bir tespit yapar;

"İnce Memed" in sıska bedeni ve esmer yüzü Torosların zulmüne nasıl başkaldırıyorsa; "Tatar Ramazan" ın sarı saçları, çakmak gözleri ve geniş omzuna yüklediği anlamlı isyanı da mahpusluğun zulmüne o denli başkaldırıyor.
Mehmet Altun

ABAP : Selection Screen Toolbar'ina Buton Ekleme

Selamlar,
Selection screenimizde, execute tuşunun yanına eğer kendi butonumuzu koymak ve başka işlemler yaptırmak istiyorsak, çok kısa bir işlem yapmamız gerekli;

gerekli table
parametresini yazalım.
TABLES: sscrfields.
butonda gözükecek texti tanımlayalım
INITIALIZATION.
MOVE 'buton 1' TO sscrfields-functxt_0n."
n burada 1 den 5 e kadar olabilir.

arkasından bunu ekleyelim,

SELECTION-SCREEN FUNCTION KEY n.

butona basınca düşeceği eventi tanımlayalım;
AT SELECTION-SCREEN.
IF sy-ucomm = 'FC0n'." <<<
....
ENDIF.

Bitirirken; Machbet'ten bir alıntı yapalım;
Machbet'in ağzından Lady Machbet öldüğünde dökülen sözler ;

Yarın...Yine yarın...Yine yarın...
Sürüklenip gidiyor böyle bu boş bu yaşam,
Kayıtlı zamanın son hecesine kadar...
Yaşam dediğin yürüyen bir gölge,
Bir garip oyuncu;
Bir hışım sahnede dolanıp boy gösteriyor;
Sonra haber çıkmıyor zavallıdan.
Yaşam bir masal; kaçığın birinin anlattığı .
Şamata ve öfke dolu baştan başa;
Hiçbir anlamı yok.


William Shakespeare büyük adam valla.

9 Haziran 2009 Salı

ABAP : iki tarih arasi farki saat cinsinden hesaplama

Selamlar, bu ara epey yazı yazmaya başladım malum okul bitti,
neyse;
az önce ihtiyacım olduğu ve yaptıktan sonra hem bana daha sonra hem de size yardımcı olacağından iki tarih arasında ki saat farkını şöyle hesaplarız;

DATA: l_basla TYPE t,
l_bit TYPE t,
l_baslangic_tarihi TYPE d,
l_bitis_tarihi TYPE d,
l_saat TYPE p DECIMALS 2.

l_basla = p_starttime.
l_bit = p_endtime.
l_baslangic_tarihi = p_bas.
l_bitis_tarihi = p_bit.

l_saat = ( ( l_bitis_tarihi - l_baslangic_tarihi ) * 24
+ ( l_bit - l_basla ) / 3600 ).

Bitirirken, Kral Lear'da ki meşhur Piç Edmund'un tiratından bir kısım yazalım;


Tiratlar Kral Lear /EdmundEDMUND :
Ey tabiat! Benim tanrım sensin! Ben senin kanunlarına kul köleyim...
...Hele şumektup istediğim tesiri yapsın, hele yalanım muvaffak olsun, piç Edmund meşru Edgar'ı nasıl altedermiş, o zaman görürüz. Büyüyorum artık... Yükseliyorum. Hadi tanrılar, koruyun piçleri!

ABAP : Debugging

Selamlar, debuglamanın ne olduğunu anlatmaya gerek yok heralde, zaten rapor düzeltirken epey haşır neşir olacaksınız. Debuga başlamak için normalde transaction yerine /h yazılıp enter'a basılır ve ne işlem yapılacaksa devam edilir ve debuga düşülür. /h nin dışında ufak tefek farklı kodlar da vardır. Şöyle ki ;

  • "/h" en genel debuglama kodu
  • "/hs" sistem ve dynpro debuglama
  • "/ha" sadece abap debuglama
  • "/hx" debugu bitirme.

  • Evet bu kadar.

    Çok kısa olduğu için bu yazı, bir şiirle bitirme gereği duymuyorum ama kısa birşey alıntılayım.
    Orhan Veli rakıyı çok severmiş hatta bu "rakı şişesinde balık olsam" mısralarını da o sebepten yazmıştır diye düşünüyorum :).
    Neyse;


    ...Orhan Veli, rakısına çok değer verirdi; Nazım Hikmet için açlık grevine girdiğimiz günlerde, avare avare dolaşırken bana demişti ki, "Rakı yok, meze yok, dolaş babam dolaş". Bir gün de Oktay Rifat, çok içtiği için Orhan Veli'yi uyaracak olmuş, "Böyle içersen, sonra kadınla yatamazsın" demiş; Orhan da elindeki kadehi göstererek, "Ya bu daha güzelse?" diye yanıtlamış onu...
    Melih Cevdet