SAP ABAP - Macro
Nếu chúng ta muốn sử dụng lại cùng một tập hợp các câu lệnh nhiều lần trong một chương trình, chúng ta cần đưa chúng vào một macro. Ví dụ, một macro có thể hữu ích cho các phép tính dài hoặc để viết các câu lệnh WRITE phức tạp. Chúng ta chỉ có thể sử dụng macro trong một chương trình mà nó được định nghĩa. Định nghĩa macro phải xảy ra trước khi macro được sử dụng trong chương trình.
Macro được thiết kế dựa trên trình giữ chỗ. Trình giữ chỗ hoạt động giống như con trỏ trong ngôn ngữ C. Bạn có thể xác định macro trong câu lệnh DEFINE ... END-OF-DEFINITION.
Sau đây là cú pháp cơ bản của định nghĩa macro:
DEFINE <macro_name>. <statements>
END-OF-DEFINITION.
......
<macro_name> [<param1> <param2>....].
Cần phải xác định một macro trước khi gọi nó. <param1>…. thay thế trình giữ chỗ & 1 ... trong các câu lệnh ABAP có trong định nghĩa macro.
Số lượng trình giữ chỗ tối đa trong định nghĩa macro là chín. Nghĩa là, khi một chương trình được thực thi, hệ thống SAP sẽ thay thế macro bằng các câu lệnh thích hợp và các trình giữ chỗ & 1, & 2,…. & 9 được thay thế bằng các tham số param1, param2, .... param9. Chúng tôi có thể gọi một macro trong một macro khác, nhưng không gọi cùng một macro.
Thí dụ
Chuyển đến giao dịch SE38. Tạo một chương trình mới ZMACRO_TEST cùng với mô tả trong trường văn bản ngắn và cũng với các thuộc tính thích hợp như Loại và Trạng thái như được hiển thị trong ảnh chụp màn hình sau:
Sau đây là mã -
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.
Chúng tôi có 3 hộp kiểm. Trong khi thực hiện chương trình, hãy chọn hộp kiểm S2.
Đoạn mã trên tạo ra kết quả sau:
A Macro Program
This is Macro 2
Nếu tất cả các hộp kiểm được chọn, mã sẽ tạo ra kết quả sau:
A Macro Program
This is Macro 1 This is Macro 2 This is Macro 3