SAP ABAP - Makrolar

Aynı ifade kümesini bir programda birden çok kez kullanmak istiyorsak, bunları bir makroya eklememiz gerekir. Örneğin, bir makro uzun hesaplamalar için veya karmaşık WRITE ifadeleri yazmak için yararlı olabilir. Bir makroyu yalnızca tanımlandığı bir program içinde kullanabiliriz. Makro tanımlama, programda makro kullanılmadan önce yapılmalıdır.

Makrolar yer tutuculara göre tasarlanmıştır. Yer tutucu, C dilindeki işaretçiler gibi çalışır. DEFINE ... END-OF-DEFINITION deyimi içinde bir makro tanımlayabilirsiniz.

Makro tanımının temel sözdizimi aşağıdadır -

DEFINE <macro_name>. <statements> 
END-OF-DEFINITION. 
   ...... 
  
   <macro_name> [<param1> <param2>....].

Çağırmadan önce bir makroyu tanımlamak gerekir. <param1>…. makro tanımında bulunan ABAP deyimlerinde yer tutucuları & 1 ... değiştirir.

Bir makro tanımındaki maksimum yer tutucu sayısı dokuzdur. Yani, bir program yürütüldüğünde, SAP sistemi makroyu uygun ifadelerle değiştirir ve yer tutucular & 1, & 2,…. & 9, param1, param2, .... param9 parametreleri ile değiştirilir. Başka bir makro içindeki bir makroyu çağırabiliriz, ancak aynı makroyu değil.

Misal

SE38 işlemine gidin. Kısa metin alanındaki açıklamayla birlikte ve ayrıca aşağıdaki ekran görüntüsünde gösterildiği gibi Tür ve Durum gibi uygun özniteliklerle yeni bir program ZMACRO_TEST oluşturun -

Kod aşağıdadır -

REPORT ZMACRO_TEST. 
DEFINE mac_test. 
WRITE: 'This is Macro &1'. 
END-OF-DEFINITION. 

PARAMETERS: s1 type C as checkbox. 
PARAMETERS: s2 type C as checkbox. 
PARAMETERS: s3 type C as checkbox default 'X'. 

START-OF-SELECTION. 
IF s1 = 'X'. 
   mac_test 1. ENDIF. 
IF s2 = 'X'. 
   mac_test 2. 
ENDIF.
 
IF s3 = 'X'. 
   mac_test 3. 
ENDIF.

3 onay kutumuz var. Programı çalıştırırken S2 onay kutusunu seçelim.

Yukarıdaki kod aşağıdaki çıktıyı üretir -

A Macro Program 
 
This is Macro 2

Tüm onay kutuları seçiliyse, kod aşağıdaki çıktıyı üretir -

A Macro Program 
 
This is Macro 1 This is Macro 2 This is Macro 3