Phân chia thành các module trong ABAP: Macro, chương trình con và module hàm.
⚡ Tóm tắt thông minh
Trong ABAP, việc phân chia thành các module đặt một chuỗi các câu lệnh vào một đơn vị có thể tái sử dụng mà chương trình chính chỉ cần gọi. Trang này giải thích về macro, chương trình include, chương trình con, module hàm và nhóm hàm, với cú pháp, ví dụ và tiêu chí lựa chọn cho mỗi kỹ thuật.
Khái niệm mô-đun hóa trong ABAP là gì?
Khi bạn chia mã nguồn thành các module, bạn đặt một chuỗi các câu lệnh ABAP vào trong một module. Sau đó, thay vì đặt tất cả các câu lệnh trong chương trình chính, bạn chỉ cần gọi module đó. Khi chương trình được tạo ra, mã nguồn trong đơn vị module hóa được xử lý như thể nó thực sự hiện diện trong chương trình chính.
Sự cần thiết của việc mô-đun hóa
- Cải thiện cấu trúc của chương trình.
- Dễ dàng đọc mã
- Dễ dàng duy trì mã
- Tránh sự trùng lặp và thúc đẩy việc tái sử dụng mã
Các kỹ thuật mô-đun hóa khác nhau
- Sử dụng Macro
- Sử dụng các tập tin bao gồm
- Chương trình con
- Mô-đun chức năng
Chúng ta hãy xem xét từng chi tiết một cách chi tiết:
SAP- Macro ABAP
Nếu bạn muốn sử dụng lại cùng một bộ câu lệnh nhiều lần trong một chương trình, bạn có thể đưa chúng vào macro.
Bạn chỉ có thể sử dụng macro trong chính chương trình mà nó được định nghĩa, và chỉ có thể gọi macro đó ở những dòng lệnh sau khi định nghĩa nó.
Macro có thể hữu ích cho các phép tính dài hoặc các câu lệnh WRITE phức tạp.
cú pháp
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
Macro có thể sử dụng Tham số &N trong đó N = 1,2,3…
Thí dụ:-
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
Đầu ra: 2
Macro chỉ được mở rộng trong một chương trình duy nhất khi biên dịch. Khi cùng một đoạn mã cần được chia sẻ giữa các chương trình, người ta sử dụng chương trình include thay thế.
Bao gồm các chương trình
Bao gồm các Chương trình chỉ dành cho việc mô-đun hóa mã nguồn và không có giao diện tham số.
Các chương trình bao gồm cho phép bạn sử dụng cùng một mã nguồn trong các chương trình khác nhau. Chúng có thể hữu ích nếu bạn có các khai báo dữ liệu dài mà bạn muốn sử dụng trong nhiều chương trình khác nhau.
cú pháp
Include <include program Name>
Điểm cần lưu ý
- Bao gồm các chương trình không thể tự gọi mình.
- Bao gồm các chương trình phải chứa các câu lệnh hoàn chỉnh.
Ví dụ:
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
Các chương trình bao gồm chia sẻ mã nhưng không thể nhận tham số. Các chương trình con bổ sung giao diện tham số bị thiếu đó.
Chương trình con
Chương trình con là các thủ tục mà bạn có thể định nghĩa trong bất kỳ chương trình ABAP và cũng có thể gọi từ bất kỳ chương trình nào. Các chương trình con thường được gọi nội bộ, nghĩa là chúng chứa các phần mã hoặc thuật toán được sử dụng thường xuyên cục bộ. Nếu bạn muốn một chức năng có thể tái sử dụng được trong toàn hệ thống, hãy sử dụng mô-đun chức năng.
Cú pháp-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= Tên chương trình con
= Tham số được truyền
Các loại chương trình con
- nội
- Chương trình con được xác định trong cùng một chương trình đang được gọi.
- Có thể truy cập tất cả các đối tượng dữ liệu được khai báo trong chương trình ABAP/4 chính.
- Bên ngoài
- Chương trình con được xác định bên ngoài chương trình đang được gọi.
- Cần sử dụng các tùy chọn hoặc khai báo các đối tượng dữ liệu trong các phần chung của bộ nhớ.
Gọi một chương trình con
Chương trình con nội bộ
PERFORM <subroutine> [<pass>]
= Tên chương trình con
= Tham số được truyền
Dữ liệu được khai báo trong chương trình chính sẽ tự động có sẵn.
Các chương trình con bên ngoài
PERFORM <subroutine>(<Program>) [<pass>]. PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND]. PERFORM (<subroutine>) IN PROGRAM (<Program>) [<pass>] [IF FOUND]. PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].
Điểm cần lưu ý
- Các lệnh gọi lồng nhau được cho phép trong các chương trình con (tức là PERFORM trong FORM … ENDFORM ).
- Cuộc gọi đệ quy cũng có thể.
- Để xác định dữ liệu cục bộ, hãy sử dụng câu lệnh DATA sau FORM . Mỗi lần bạn nhập chương trình con, dữ liệu sẽ được tạo lại (với giá trị ban đầu) và được giải phóng ở cuối (từ ngăn xếp).
- Để xác định dữ liệu chung được sử dụng trong chương trình con, hãy sử dụng câu lệnh LOCAL sau FORM . Các giá trị được lưu khi bạn nhập chương trình con và sau đó được giải phóng ở cuối (từ ngăn xếp)
💡 Mẹo: Các chương trình con được coi là lỗi thời trong ABAP Objects. Việc phát triển phần mềm mới nên đặt logic có thể tái sử dụng vào các phương thức của một lớp và sử dụng các module chức năng khi cần giao diện hỗ trợ từ xa hoặc giao diện toàn hệ thống.
Mô-đun chức năng
Mô-đun chức năng là các quy trình ABAP/4 có mục đích chung mà bất kỳ ai cũng có thể sử dụng. Trên thực tế, có sẵn một số lượng lớn các Mô-đun chức năng tiêu chuẩn.
Các Mô-đun Chức năng được tổ chức thành Nhóm Chức năng: Tập hợp các chức năng có liên quan một cách logic. Mô-đun chức năng luôn thuộc về Nhóm chức năng.
Cú pháp-
FUNCTION <function module> <Statements> ENDFUNCTION.
Thông tin quan trọng liên quan đến Mô-đun chức năng
- Quản trị
- Nhập/Thay đổi/Xuất tham số.
- Tham số/Ngoại lệ của bảng.
- Tài liệu
- Mã nguồn – L U01 . là Nhóm Chức Năng
- Dữ liệu toàn cầu – L TOP .Dữ liệu toàn cầu cho nhóm chức năng- Có thể truy cập được trên các mô-đun chức năng trong nhóm chức năng.
- Chương trình chính – SAPL . Chứa danh sách tất cả các tệp bao gồm cho nhóm chức năng đó
Gọi một mô-đun chức năng
Để gọi một mô-đun chức năng, hãy sử dụng câu lệnh CALL FUNCTION:
CALL FUNCTION <module> [EXPORTING f1 = a 1.... f n = a n] [IMPORTING f1 = a 1.... f n = a n] [CHANGING f1 = a 1.... f n = a n] [TABLES f1 = a 1.... f n = a n] [EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E] [OTHERS = ro]].
Mỗi module chức năng đều nằm trong một nhóm chức năng, vì vậy phần tiếp theo sẽ giải thích cách thức hoạt động của cấu trúc đó.
Nhóm chức năng
Các nhóm chức năng là nơi chứa các mô-đun chức năng. Trên thực tế, có một số lượng lớn các Nhóm chức năng tiêu chuẩn.
Tất cả các mô-đun chức năng trong một nhóm chức năng đều có thể truy cập dữ liệu chung của nhóm.
Giống như các chương trình thực thi (loại 1) và nhóm mô-đun (loại M), các nhóm chức năng có thể chứa màn hình, màn hình lựa chọn và danh sách.
Điểm cần lưu ý
- Nhóm chức năng không thể được thực thi.
- Tên của nhóm chức năng có thể dài tới 26 ký tự.
- Khi bạn tạo một nhóm chức năng hoặc mô-đun chức năng, chương trình chính và các chương trình bao gồm sẽ được tạo tự động.
- Các nhóm chức năng đóng gói dữ liệu.
Cách tạo Nhóm chức năng
- Giao dịch Goto SE80.
- Chọn Chương trình trong DropDown.
- Viết tên Nhóm chức năng mà bạn muốn tạo. Nói chung, các nhóm Chức năng do người dùng tạo bắt đầu bằng “Z”. ví dụ - . Nhấn phím Enter.
- Lưu ý rằng Bao gồm TOP được tạo theo mặc định nếu người dùng chọn tùy chọn tạo bao gồm TOP.
Cách tạo Mô-đun chức năng
- Tạo một Nhóm chức năng (nói “ZCAL”).
- Tạo một module hàm, thiết lập các thuộc tính như (Nhóm hàm, Ứng dụng, Văn bản ngắn và Loại quy trình) rồi Lưu lại.
- Kèm file “LZCALU01” sẽ có mã nguồn của module chức năng đầu tiên.
- Bao gồm tập tin “LZCALTOP” sẽ có dữ liệu toàn cầu.
- Chương trình chính “SAPLZCAL” chứa
- Dữ liệu toàn cầu Bao gồm tập tin “LZCALTOP”
- Các module chức năng bao gồm file “LZCALUXX”
- Người dùng xác định Bao gồm các tệp “LZCALF..”, “LZCALO..” và “LZCALI..”
- Xác định các tham số giao diện và ngoại lệ
- Viết mã nguồn
- Kích hoạt mô-đun chức năng
- Kiểm tra mô-đun chức năng - Kiểm tra đơn lẻ & gỡ lỗi
- Lập tài liệu và phát hành một mô-đun chức năng
Cách chọn kỹ thuật mô đun hóa phù hợp
Bốn kỹ thuật này có sự chồng chéo nhau, vì vậy quyết định phụ thuộc vào phạm vi tái sử dụng và liệu có cần giao diện tham số hay không.
| Kỹ thuật | Phạm vi tái sử dụng | Giao diện tham số | Sử dụng tốt nhất cho |
|---|---|---|---|
| Macro | Một chương trình, sau dòng định nghĩa | Các ký tự giữ chỗ vị trí từ &1 đến &9 | Các câu lệnh ngắn lặp đi lặp lại, các phép tính dài, đầu ra WRITE phức tạp |
| Bao gồm chương trình | Bất kỳ chương trình nào đặt tên cho tệp include | Không áp dụng | Khai báo dữ liệu chung và mã nguồn chung |
| Chương trình con (FORM) | Cục bộ hoặc bên ngoài với PERFORM … TRONG CHƯƠNG TRÌNH | SỬ DỤNG, THAY ĐỔI, BÀN | Logic được tái sử dụng thường xuyên trong cùng một chương trình. |
| Mô-đun chức năng | Toàn bộ hệ thống, bao gồm cả các cuộc gọi từ xa | NHẬP KHẨU, XUẤT KHẨU, THAY ĐỔI, BẢNG, NGOẠI LỆ | Các quy trình được chia sẻ giữa các ứng dụng và được đóng gói trong một nhóm hàm. |
Một quy tắc ngắn gọn bao quát hầu hết các trường hợp: sử dụng macro để viết tắt trong cùng một chương trình, include cho các khai báo dùng chung, subroutine cho logic cục bộ và function module bất cứ khi nào hàm cần được gọi từ bất kỳ đâu trong hệ thống. Đó là tất cả về tính mô-đun trong ABAP.

