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.

  • 🧩 Nguyên tắc cốt lõi: Một đơn vị mô đun hóa được tạo ra như thể mã nguồn của nó hiện diện vật lý trong chương trình gọi, do đó cấu trúc được cải thiện mà không tốn chi phí thời gian chạy.
  • Macro: Được định nghĩa bằng DEFINE và END-OF-DEFINITION, chỉ có thể sử dụng được bên trong chương trình định nghĩa nó, và chỉ sau dòng định nghĩa.
  • 📄 Bao gồm chương trình: Không có giao diện tham số và chỉ tồn tại để chia sẻ mã nguồn, chẳng hạn như các khai báo dữ liệu dài, giữa nhiều chương trình.
  • 🔁 Chương trình con: Được khai báo bằng FORM và ENDFORM, được gọi bằng PERFORM, và phù hợp với logic được tái sử dụng cục bộ trong cùng một chương trình.
  • 🧱 Mô-đun chức năng: Một quy trình toàn hệ thống với giao diện kiểu dữ liệu để nhập, xuất, thay đổi tham số bảng và xử lý ngoại lệ.
  • 📦 Nhóm chức năng: Một container có dữ liệu toàn cục được chia sẻ bởi mọi module chức năng bên trong nó, được tạo tự động với các lệnh TOP và UXX đi kèm.
  • 🧭 Quy tắc lựa chọn: Hãy chọn macro để viết tắt cục bộ, chương trình con cho logic cục bộ và mô-đun hàm khi chương trình cần được tái sử dụng trên toàn hệ thống.

Phân chia thành các mô-đun trong ABAP.

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

  1. 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.
  2. 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

  1. Giao dịch Goto SE80.
  2. Chọn Chương trình trong DropDown.
  3. 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.
  4. 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

  1. Tạo một Nhóm chức năng (nói “ZCAL”).
  2. 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.
  3. Kèm file “LZCALU01” sẽ có mã nguồn của module chức năng đầu tiên.
  4. Bao gồm tập tin “LZCALTOP” sẽ có dữ liệu toàn cầu.
  5. 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..”
  6. Xác định các tham số giao diện và ngoại lệ
  7. Viết mã nguồn
  8. Kích hoạt mô-đun chức năng
  9. Kiểm tra mô-đun chức năng - Kiểm tra đơn lẻ & gỡ lỗi
  10. 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.

Câu Hỏi Thường Gặp

Macro được mở rộng tại thời điểm tạo và chỉ hoạt động bên trong chương trình định nghĩa nó. Thủ tục con là một quy trình thực sự với giao diện tham số được định kiểu, cũng có thể được gọi từ một chương trình khác bằng lệnh PERFORM.

Một mô-đun chức năng có kiểu xử lý được đặt là Mô-đun hỗ trợ từ xa có thể được gọi từ một mô-đun khác. SAP Hệ thống hoặc từ một ứng dụng bên ngoài. Các tham số của nó phải được truyền theo giá trị, và các ngoại lệ được xử lý như lỗi hệ thống.

Không thể gỡ lỗi từng bước một đối với macro vì nó được mở rộng trước khi tạo ra. Hãy chuyển logic vào một chương trình con hoặc một phương thức khi cần gỡ lỗi từng dòng và giới hạn macro ở các câu lệnh ngắn.

Các trợ lý mã AI bên trong các công cụ phát triển ABAP có thể phác thảo cấu trúc module hàm, giao diện tham số và các ngoại lệ của nó từ một mô tả đơn giản. Nhà phát triển vẫn xem xét logic, kích hoạt module và kiểm tra nó trước khi triển khai.

Các công cụ AI quét chương trình, phát hiện các khối lặp lại và đề xuất vị trí cần loại bỏ một chương trình con, phương thức hoặc mô-đun chức năng.tracĐề xuất này giúp tăng tốc quá trình tái cấu trúc mã, mặc dù việc kiểm thử đơn vị vẫn cần thiết để xác nhận hành vi giống hệt nhau.

Tóm tắt bài viết này với: