function etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
function etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

8 Haziran 2009 Pazartesi

ABAP : Webservis yaratma


Selamlar,
Webservis yaratma konusunda epey mail aldım ve sonunda resimli olarak anlatan bir yazı yazmaya karar verdim :).
Webservis candır efendim, hertürlü heryerden ulaşılabilir, baba yarısıdır. Kullanın , kullandırtın. İnsanı mutlu eder.
Orhan Veli'nin dediği gibi "bir de rakı şişesinde balık olsam" diyesi gelir insanın .
Gelelim, webservis yaratmaya,
buyrunuz resimli anlatım aşağıdadır.

SE37 ye gidip bir fonksiyon yaratıyoruz.




RFC olmasına DİKKAT EDİYORUZ.


PASS VALUE kısmını tıklıyoruz

Kodumuzu yazıyoruz ve aktive etmeyi unutmuyoruz

SE80'den gidip packagemizi buluyoruz ve sağ tıklayıp menülere ulaşıyoruz.



Function modul olarka yaratıyoruz.


Az önce yarattığımız fonksiyonun adını veriyoruz.

Release tıkını atıyoruz, attıktan sonra kendi aktif edecektir, yok olmaz ise WSCONFIG ve WSADMIN gerekli aktivasyon işlemlerini yapabiliriz.






WSADMIN i açıyoruz

Fonksiyonumuzu buluyoruz

WEB SERVICE > WSDL yi seçiyoruz

Devam..

SAP kullancı adı ve şifremizi giriyoruz.



Gördüğümüz üzere WSDL hali karşımıza geldi, şifre sormasını istemiyorsak programımızdan çağırırken, Credentials ayarlarını setlemeyi unutmuyoruz :=) . 
Hadi kolay gelsin.

Yazımızı bir Orhan Veli şiiri ile bitirelim.

DEDİKODU 

Kim söylemiş beni 
Süheyla'ya vurulmuşum diye? 
Kim görmüş, ama kim, 
Eleni'yi öptüğümü, 
Yüksek kaldırımda, güpe gündüz? 
Melahat'i almışım da sonra 
Alemdara gitmişim, öyle mi? 
Onu sonra anlatırım, fakat 
Kimin bacağını sıkmışım tramvayda? 
Güya bir de Galataya dadanmışız; 
Kafaları çekip çekip 
Orada alıyormuşuz soluğu; 
Geç bunları, anam babam, geç; 
Geç bunları bir kalem; 
Bilirim ben yaptığımı. 
Ya o, Mualla'yı sandala atıp, 
Ruhumda hicranını söyletme hikayesi?

Orhan Veli




22 Ocak 2009 Perşembe

ABAP : Error when opening an RFC connection

Merhabalar,
Z'li bir programımız eğer içinde bir RFC çalışıyorsa yada remote bir yere istekte bulunuyorsa bunu direk JOB yani artalan tanımladığımızda karşımıza Error when opening an RFC connection hatası gelecektir.
Bunu çözmenin yolu; ilgili fonksiyonun yanına IN BACKGROUND TASK yazmaktır.
Örnek olarak ; 

 CALL FUNCTION 'HTTP_GET' IN BACKGROUND TASK
    EXPORTING
      ABSOLUTE_URI         = URI
      RFC_DESTINATION      = 'SAPHTTP'
    TABLES
      RESPONSE_ENTITY_BODY = ILINE[]            "BLANKSTOCRLF = '/'
      RESPONSE_HEADERS     = RESPONSE_HEADERS.

Modülcülerle paslı oynayın gol yemeyin, kış geldi bol bol snowboard yapın, kaseye dikkat edin.

1 Ekim 2008 Çarşamba

.NET : Function Grabber

Merhabalar,
ABAP programcılarının çok işine yarayacağını düşündüğüm Function Grabber'ı yakında buradan yayınlıyacağım. Program şuanda bitmiş durumda , sadece nasıl süslesem diye bakıyorum :).
Program; SAP a bağlanıp ekrana girdiğiniz fonksiyon tüm Import Export ve Table parametrelerini okuyarak, ilgili değişkenleri otomatik olarak tanımlamakta ve isterseniz tabloları dolduracak formlarıda otomatik olarak yazmaktadır. Aşağıya birkaç tane resim ekliyorum bakabilirsiniz.



İyi çalışmalar & Attığınız paslara, şutlara dikkat edin!





27 Ağustos 2008 Çarşamba

ABAP : ALV de yapilan degisiklikleri alma

Kullandığımız ALV içersinde değiştirilebilir satır,hücre veya checkbox kullandığımızda ve bunlara uygulanan değişiklikleri almaya çalıştığımızda kullanacağımız basit bir metod mevcuttur.

USER_COMMAND formumuzun içerisinde , ekranda bir butona bastığımızda ve formumuzun içine düşürdüğümüzde.

DATA ref1 TYPE REF TO cl_gui_alv_grid.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref1.

CALL METHOD ref1->check_changed_data.

buradan sonra internal table kontrolu yaparsak, ekrandaki değişiklikleri aldığını görürüz.

ABAP : Domain icinde ki degerleri&textleri okuma


Bir domain içersindeki değerlerinizin açıklamalarını okumanız gerekebilir. Örneğin ALV de listelerken
01
02
03
gibi değerler yerine onların domain içersinde bulunan (eğer varsa) değerleri almamız gerekebilir.

Bunun için kullanacağımız bir den fazla fonksiyon mevcuttur, bir örneği aşşağıda bulabilirsiniz.

FORM
read_dom_text USING
p_domname like DD07L-DOMNAME
p_domvalue like DD07L-DOMVALUE_L
CHANGING

p_text like DD07T-DDTEXT.

CALL FUNCTION 'FI_CUST_READ_DOMVALUETEXT'

EXPORTING

domname = p_domname
"domain adını buraya yazıyoruz örnek: ''ZSDIC_BLT"
domvalue = p_domvalue
"hangi değerin textini alacaksak onun value değeri örnek: "01"
spras = sy-langu "dil
IMPORTING

ddtext = p_text

EXCEPTIONS
TEXT_NOT_FOUND = 1

VALUE_NOT_FOUND = 2
OTHERS = 3 .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

ENDFORM.

12 Ağustos 2008 Salı

ABAP : Smartform Cagirma

Smartform tasarlama işlemi bittikten sonra , çağırma aşamasında dikkat etmemiz gereken;
fonksiyonumuzu smartformda üretilen /1BCDWB/SF00000031 kodlarıyla çağırmamak.
"Call Function /1BCDWB/SF00000031
Exporting
...
...
Importing
..."
Bu metod sadece canlı ve test serveri aynı ise sorun çıkarmayacaktır. Diğer türlü yani serverlar farklı ise her formumuz için test serverında üretilen numara, canlı server da farkı olacaktır. Programımızda direk numara ile çağırdığımız için doğal olarak canlıda bulamayacaktır ve hata verecektir. Bu durumu şöyle çözebiliriz;

************************************************************

DATA:
fm_name TYPE rs38l_fnam.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZTST_DummyForm' * formumuzun adı
IMPORTING
fm_name = fm_name *burası bize formumuzun kodunu döndürüyor
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.

IF sy-subrc <> 0.
WRITE: / 'ERROR 1'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*formumuzu çağıralım
CALL FUNCTION fm_name
EXPORTING
...

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.