ÖRNEK SAP FONKSİYONLARI

SAPGUI_PROGRESS_INDICATOR

Geçerli pencerede işlem durumunu belirtmek için kullanılır. Durumu belirten “PERCENTAGE” değerini ve bu durumu tanımlayan “TEXT” değişkenleri alır.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
PERCENTAGE 0 X X İşlem durumu (yüzde olarak)
TEXT SPACE X X İşlem tanımı

CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’
EXPORTING
percentage       = 25
text             = ‘Birinci işlem başlıyor…’.
WAIT UP TO 3 SECONDS.
CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’
EXPORTING
percentage       = 75
text             = ‘İkinci işlem başlıyor…’.
WAIT UP TO 1 SECONDS.

Örnek çalıştığında önce sol alt köşede “Birinci işlem başlıyor…” yazısı ardından “İkinci işlem başlıyor…” yazısı ve işlem yüzdesi görüntülenir.

COMPUTE_YEARS_BETWEEN_DATES

Tarih iki tarih arasındaki yılı hesaplar.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
FIRST_DATE LIKE PREL-BEGDA X İlk tarih
MODIFY_INTERVAL ‘ ‘ X X
SECOND_DATE LIKE PREL-ENDDA X İkinci tarih
EXPORT
Parametre Tanım tipi İlişkili tip Dğr atn. Parametre açıklaması
YEARS_BETWEEN_DATES X Fark (yıl olarak)
EXCEPTIONS
Exception Tanım
SEQUENCE_OF_DATES_NOT_VALID İlk tarih ikinciden büyük ise hata

DATA lv_years TYPE i.
PARAMETERS pa_ilktr LIKE sy-datum.
CALL FUNCTION ‘COMPUTE_YEARS_BETWEEN_DATES’
EXPORTING
first_date                        = pa_ilktr
modify_interval                   = ‘ ‘
second_date                       = sy-datum
IMPORTING
years_between_dates               = lv_years
EXCEPTIONS
sequence_of_dates_not_valid       = 1
OTHERS                            = 2.
WRITE: / ‘İşlem sonucu:’, sy-subrc.
WRITE: / ‘Yıl farkı:’, lv_years.

NUMBER_GET_NEXT

Bir numara aralığından sonraki numarayı elde etmek için kullanılır.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
NR_RANGE_NR LIKE INRI-NRRANGENR X Numara aralığı numarası
OBJECT LIKE INRI-OBJECT X Numara aralığı nesnesi
QUANTITY LIKE INRI-QUANTITY ‘1’ X X Numara miktarı
SUBOBJECT SPACE X X Alt nesnenin değeri
TOYEAR LIKE INRI-TOYEAR ‘0000’ X X Mali yıl
IGNORE_BUFFER SPACE X X Ara belleği göz ardı et
EXPORT
Parametre Tanım tipi İlişkili tip Dğr atn. Parametre açıklaması
NUMBER X Alınan numara
QUANTITY LIKE INRI-QUANTITY X Numara miktarı
RETURNCODE LIKE INRI-RETURNCODE X İşlem sonucu
EXCEPTIONS
Exception Tanım
INTERVAL_NOT_FOUND Aralık bulunamadı
NUMBER_RANGE_NOT_INTERN Numara aralığı yerel değil
OBJECT_NOT_FOUND Nesne TNRO tablosunda bulunamadı
QUANTITY_IS_0 Talep edilen sayı miktarı sıfırdan (0) büyük olmalı
QUANTITY_IS_NOT_1 Talep edilen sayı miktarı bir (1) olmalı
INTERVAL_OVERFLOW Aralık doldu
BUFFER_OVERFLOW Ara bellek dolu

Örnek: “ZTEST” numara aralığın nesnesinin “01” numara aralığını kullanarak numara alan örnek.

DATA gv_number TYPE c.
CALL FUNCTION ‘NUMBER_GET_NEXT’
EXPORTING
nr_range_nr                  = ’01’
object                       = ‘ZTEST’
IMPORTING
number                       = gv_number
EXCEPTIONS
interval_not_found            = 1
number_range_not_intern       = 2
object_not_found              = 3
quantity_is_0                 = 4
quantity_is_not_1             = 5
interval_overflow             = 6
buffer_overflow               = 7
OTHERS                        = 8.
WRITE: ‘Şu anki boş numara’, gv_number.

Numara Aralığı Tanımlama

SNRO işlem kodu çalıştırılır. Nesne adı alanına ZTEST yazılır. Yarat butonuna (<IMG src=”file:///C:\Users\abapmaster\AppData\Local\Temp\msohtmlclip1\01\clip_image008.jpg” width=23 height=23 v:shapes=””>) tıklanır.

Yeni ekranda tanım kümesi için domain seçilir ve kaydedilir.

Nesne oluşturulduktan sonra numara aralıklarının tanımlanması gerekir. “Numara alanları” butonuna tıklanarak bakım ekranına geçilir.

Yeni aralık tanımlamak için kalem ikonu olan “Aralıkları” butonuna tıklanır.

Gelen ekranda numara aralığı tanımı yapılır.

ABAP Hafızasına (ABAP Memory) Veri Nesnesi Aktarımı

EXPORT ifadesi ile veri nesnelerini ABAP memory’ e aktarmak mümkündür. Aktarılan veri nesneleri daha sonra IMPORT ifadesi ile okunabilir.

Veri nesneleri birer birer aktarılabilir veya internal tablo aktarılabilir. Kullanımı aşağıdaki gibidir.

EXPORT parametre_listesi TO MEMORY ID id.

parametre_listesi: Parametreler 3 şekilde aktarılabilir.

… {p1 = dobj1 p2 = dobj2 …}
  | {p1 FROM dobj1 p2 FROM dobj2 …}
  | (ptab) … .

p1 = dobj1 p2 = dobj2 …: parametreler birer birer değişkenlere atanır ve aktarılır.

p1 FROM dobj1 p2 FROM dobj2: p1 = dobj1 ile aynıdır.

ptab: Parametreleri listesi olarak aktarım için kullanılır. İki sütunluk bir tablo tanımlanır. İlk sütunda parametrenin ismi atanır. İkinci sütunda veri nesnesi atanır.

IMPORT ifadesi ile veri nesneleri ABAP memory’ den almak mümkündür. Kullanımı aşağıdaki gibidir.

IMPORT parametre_listesi FROM MEMORY ID id [çeviri_seçenekleri].

parametre_listesi: EXPORT ile aynıdır.

[çeviri_seçenekleri]: Aşağıdaki ekler kullanılır.

… { { { {[ACCEPTING PADDING] [ACCEPTING TRUNCATION]}
        | [IGNORING STRUCTURE BOUNDARIES] }
        [IGNORING CONVERSION ERRORS [REPLACEMENT CHARACTER rc]] }
    | [IN CHAR-TO-HEX MODE] }
    [CODEPAGE INTO cp]
    [ENDIAN INTO endian].

Örnek1: p1 = dobj1 p2 = dobj2 kullanılımına ait örnek. gv_metin değişkeni EXPORT ifadesi ile ABAP memory’ e aktarılır. Daha sonra IMPORT parametresi ile gv_metin2 değişkenine atanarak, ekrana yazdırılır.

DATA : gv_metin TYPE c LENGTH 15 VALUE ‘ABAP memory’,
gv_metin2 TYPE c LENGTH 15.
EXPORT metin = gv_metin TO MEMORY ID ‘EXXX’.
IMPORT metin = gv_metin2 FROM MEMORY ID ‘EXXX’.
WRITE: ‘Metin:’, gv_metin2.

Örnek2: p1 FROM dobj1 p2 FROM dobj2 …} kullanımana ait örnek. Hafızaya metin durağan şekilde aktarılır.

DATA : gv_metin TYPE c LENGTH 15.
EXPORT metin from ‘ABAP memory’ TO MEMORY ID ‘EXXX’.
IMPORT metin = gv_metin FROM MEMORY ID ‘EXXX’.
WRITE: ‘Metin:’, gv_metin.

Örnek3: (ptab) kullanımına ait örnek. gv_emX değişkenlerini ABAP memory’ e aktaran ve daha sonra bunları hafızadan okuyup ekrana yazdırır.

TYPES: BEGIN OF t_type,
para TYPE string,
dobj TYPE string,
END OF t_type.
DATA : gv_em1 TYPE c LENGTH 15 VALUE ‘metin1’,
gv_em2 TYPE c LENGTH 15 VALUE ‘metin2’,
gv_im1 TYPE c LENGTH 15,
gv_im2 TYPE c LENGTH 15,
gs_line TYPE t_type,
gt_line TYPE STANDARD TABLE OF t_type.
gs_line-para = ‘m1’.
gs_line-dobj = ‘gv_em1’.
APPEND gs_line TO gt_line.
gs_line-para = ‘m2’.
gs_line-dobj = ‘gv_em2’.
APPEND gs_line TO gt_line.
EXPORT (gt_line)     TO MEMORY ID ‘EXXX’.
IMPORT m1 = gv_im1
m2 = gv_im2
FROM MEMORY ID ‘EXXX’.
WRITE: ‘Metin 1′, gv_im1,
/’Metin 2’, gv_im2.

Örnek4: İnternal tabloyu hafızaya aktaran bir örnek.

TYPES: BEGIN OF t_data,
id    TYPE c LENGTH 2,
metin TYPE c LENGTH 15,
END OF t_data.
DATA : gs_data  TYPE t_data,
gt_edata TYPE STANDARD TABLE OF t_data,
gt_idata TYPE STANDARD TABLE OF t_data.
gs_data-id    = ‘1’.
gs_data-metin = ‘Metin 1’.
APPEND gs_data TO gt_edata.
gs_data-id    = ‘2’.
gs_data-metin = ‘Metin 2’.
APPEND gs_data TO gt_edata.
EXPORT data_tab = gt_edata TO MEMORY ID ‘EXXX’.
IMPORT data_tab = gt_idata FROM MEMORY ID ‘EXXX’.
WRITE: 3 ‘ID’, 8 ‘Metin’.
LOOP AT gt_idata INTO gs_data.
WRITE: /3 gs_data-id, 8 gs_data-metin.
ENDLOOP.

Leave a Reply

Your email address will not be published. Required fields are marked *