Hướng dẫn lập trình hộp thoại: Nhóm mô-đun trong SAP ABAP
⚡ Tóm tắt thông minh
Lập trình hội thoại trong SAP ABAP xây dựng các chương trình module pool tương tác với người dùng thông qua màn hình và thay đổi nội dung cơ sở dữ liệu. Trang này giải thích về mã giao dịch, màn hình, trạng thái giao diện người dùng đồ họa (GUI), logic luồng màn hình, dynpro và cấu trúc module pool.
Lập trình hội thoại là gì?
SAP-ABAP hỗ trợ hai loại chương trình – Chương trình Báo cáo và Chương trình Hội thoại.
Nếu chương trình ABAP của bạn yêu cầu đầu vào của người dùng, lập trình Hộp thoại sẽ được sử dụng.
Hộp thoại người dùng là bất kỳ hình thức tương tác nào giữa người dùng và chương trình và có thể là bất kỳ hình thức nào sau đây:
- Nhập dữ liệu
- Chọn một mục menu
- Nhấp vào một nút
- Nhấp hoặc nhấp đúp vào một mục
Chương trình hội thoại còn được sử dụng khi chúng ta cần di chuyển qua lại giữa các màn hình
Các chương trình hộp thoại được tạo với kiểu là 'M' – Nhóm mô-đun. Chúng không thể được thực thi độc lập và phải được đính kèm với ít nhất một mã giao dịch mà bạn chỉ định màn hình ban đầu.
Sự khác biệt giữa chương trình báo cáo và hộp thoại
Chương trình báo cáo:
Báo cáo là một chương trình thường đọc và phân tích dữ liệu trong các bảng cơ sở dữ liệu mà không thay đổi cơ sở dữ liệu.
Chương trình đối thoại:
Chương trình hộp thoại cho phép bạn làm việc tương tác với hệ thống và thay đổi nội dung của các bảng cơ sở dữ liệu. Mỗi chương trình hộp thoại có một chuỗi màn hình nhất định được hệ thống xử lý lần lượt.
| Tiêu chí | Chương trình báo cáo | Chương trình Đối thoại |
|---|---|---|
| Loại chương trình | Loại 1, có thể thực thi | Loại M, nhóm mô-đun |
| Truy cập cơ sở dữ liệu | Đọc và phân tích dữ liệu | Đọc và thay đổi dữ liệu |
| Thực hiện | Tự vận hành | Chỉ hoạt động thông qua mã giao dịch. |
| Kiểm soát | Các sự kiện trong báo cáo | Logic luồng màn hình của từng dynpro |
Trình tự các bước hiển thị trong một giao dịch hội thoại sẽ dễ theo dõi hơn nếu có ví dụ minh họa.
Xử lý giao dịch mẫu trong Lập trình hộp thoại
Sơ đồ này mô tả một giao dịch từ màn hình đầu tiên đến khi cập nhật cơ sở dữ liệu. Người dùng nhập dữ liệu trên màn hình 100, PAI xác thực dữ liệu nhập và quyết định màn hình tiếp theo, màn hình 200 thu thập dữ liệu còn lại, và cuối cùng tác vụ cập nhật ghi bản ghi. Mỗi bước trong số đó được thực hiện bởi các thành phần được liệt kê bên dưới.
Các thành phần của chương trình hội thoại
Không giống như báo cáo về cơ bản bao gồm việc tạo ra một chương trình tự động có thể chạy độc lập với các đối tượng khác, trong khi phát triển chương trình đối thoại bao gồm việc phát triển nhiều đối tượng mà không đối tượng nào có thể chạy độc lập. Thay vào đó, tất cả các đối tượng được liên kết theo thứ bậc với chương trình chính và được thực thi theo trình tự do Chương trình chính Dialog chỉ định..
Các thành phần của một chương trình hội thoại là:
Mã giao dịch
- Mã giao dịch bắt đầu một chuỗi màn hình.
- Bạn tạo mã giao dịch trong Trình duyệt Kho lưu trữ trong Bàn làm việc ABAP hoặc sử dụng Giao dịch SE93.
- Mã giao dịch được liên kết với chương trình ABAP và màn hình ban đầu.
- Bạn có thể bắt đầu chuỗi màn hình từ bất kỳ chương trình ABAP nào bằng cách sử dụng câu lệnh CALL SCREEN.
Màn hình
- Mỗi hộp thoại trong một SAP hệ thống được điều khiển bởi một hoặc nhiều màn hình.
- Bạn tạo màn hình bằng Screen Painter trong Bàn làm việc ABAP thông qua giao dịch SE51
- Mỗi màn hình thuộc về một chương trình ABAP.
- Các màn hình này bao gồm một “mặt nạ màn hình” hoặc “bố cục” và logic luồng của nó. Màn hình có một bố cục xác định vị trí của các trường đầu vào/đầu ra và các thành phần đồ họa khác như hộp kiểm và nút radio. Logic luồng xác định quá trình xử lý logic trong màn hình.
trạng thái GUI
- Mỗi màn hình có (các) trạng thái GUI là các thành phần độc lập của chương trình.
- Điều này kiểm soát các thanh menu, thanh công cụ tiêu chuẩn, thanh công cụ ứng dụng mà người dùng có thể chọn các chức năng trong ứng dụng.
- Bạn tạo chúng trong ABAP Workbench bằng Menu Painter.
Chương trình ABAP
- Mỗi trạng thái màn hình và GUI trong Hệ thống R/3 thuộc về một chương trình ABAP.
- Chương trình ABAP chứa các mô-đun hộp thoại được gọi bằng logic luồng màn hình, đồng thời xử lý dữ liệu đầu vào của người dùng từ trạng thái GUI.
- Các chương trình ABAP sử dụng màn hình còn được gọi là chương trình hộp thoại.
- Trong nhóm mô-đun (chương trình loại M); khối xử lý đầu tiên được gọi luôn là mô-đun hộp thoại. Tuy nhiên, bạn cũng có thể sử dụng màn hình trong các chương trình ABAP khác, chẳng hạn như chương trình thực thi hoặc mô-đun chức năng. Khối xử lý đầu tiên sau đó được gọi khác; ví dụ: bởi môi trường thời gian chạy hoặc lệnh gọi thủ tục. Trình tự màn hình sau đó được bắt đầu bằng câu lệnh CALL SCREEN.
Logic luồng màn hình
Logic luồng màn hình chủ yếu được chia thành bốn thành phần.
- Xử lý trước khi xuất (PBO) sự kiện: được xử lý trước khi màn hình được hiển thị
- Xử lý sau khi nhập (PAI) sự kiện: được xử lý sau một hành động của người dùng trên màn hình
- Quy trình theo yêu cầu trợ giúp (P.O.H.): được xử lý khi nhấn F1
- Xử lý theo yêu cầu giá trị (POV): được xử lý khi nhấn F4
POH và POV được giải thích chi tiết trên trang về... xử lý yêu cầu giá trị và xử lý yêu cầu trợ giúp.
Dynpro
- Một màn hình cùng với logic luồng của nó được gọi là Dynpro ("Chương trình động" vì logic luồng của màn hình ảnh hưởng đến luồng chương trình).
- Mỗi dynpro kiểm soát chính xác một bước trong Chương trình Hộp thoại của bạn.
- Các màn hình thuộc về một chương trình được đánh sốTrình tự luồng màn hình có thể là tuyến tính hoặc tuần hoàn. Từ bên trong một chuỗi màn hình, bạn thậm chí có thể gọi một chuỗi màn hình khác và, sau khi xử lý xong, quay lại chuỗi ban đầu. Bạn cũng có thể ghi đè màn hình tiếp theo được định nghĩa tĩnh từ bên trong các mô-đun hội thoại của chương trình ABAP.
Nhóm mô-đun ABAP
- Khi xảy ra sự kiện PBO hoặc PAI, Dynpro sẽ gọi một chương trình đối thoại ABAP. Tập hợp các chương trình như vậy được gọi là nhóm mô-đun ABAP.
- Ví dụ: các mô-đun được gọi tại sự kiện PAI được sử dụng để kiểm tra thông tin đầu vào của người dùng và kích hoạt các bước hộp thoại thích hợp, chẳng hạn như tác vụ cập nhật.
- Tất cả dynpro được gọi từ bên trong một giao dịch đề cập đến một nhóm mô-đun chung.
Cấu trúc của một chương trình hội thoại
Sơ đồ cấu trúc thể hiện cách mã giao dịch, các màn hình, trạng thái giao diện người dùng và nhóm mô-đun được liên kết với cùng một chương trình chính.
Luồng quy trình cho một chương trình hộp thoại
Sơ đồ quy trình thể hiện sự luân phiên giữa màn hình và chương trình ABAP: PBO điền các trường trên màn hình, người dùng tương tác, và PAI xử lý dữ liệu nhập vào trước khi màn hình tiếp theo được gọi.
Cách tạo chương trình nhóm mô-đun
Các thành phần nêu trên được tạo theo một thứ tự cố định. Các bước dưới đây xây dựng một giao dịch hoạt động từ một nhóm mô-đun trống.
- Tạo nhóm mô-đun: Trong SE80 hoặc SE38, hãy tạo một chương trình có tên bắt đầu bằng SAPMZ và đặt loại chương trình thành M – Nhóm mô-đunLoại dữ liệu không thể thay đổi sau này mà không xóa đối tượng.
- Khai báo dữ liệu toàn cầu: Đặt câu lệnh TABLES và các biến toàn cục vào phần include TOP, mà mọi mô-đun hội thoại của nhóm đều có thể đọc được.
- Thiết kế màn hình: Tạo màn hình 100 bằng Screen Painter (SE51), đặt các trường nhập liệu lên bố cục và nhập số màn hình tiếp theo vào thuộc tính màn hình.
- Viết logic luồng: Trên tab Logic luồng, hãy gọi một mô-đun cho PBO và một mô-đun cho PAI, như hình bên dưới.
- Xây dựng trạng thái giao diện người dùng đồ họa (GUI): Tạo trạng thái bằng Menu Painter (SE41) và thiết lập nó trong mô-đun PBO bằng câu lệnh SET PF-STATUS, để các lệnh Lưu, Quay lại và Thoát được truyền đến chương trình dưới dạng mã chức năng.
- Liên kết mã giao dịch: Trong SE93, tạo một giao dịch hộp thoại, đặt tên cho nhóm mô-đun và nhập 100 làm màn hình ban đầu.
* Screen 100, flow logic PROCESS BEFORE OUTPUT. MODULE status_0100. PROCESS AFTER INPUT. MODULE user_command_0100. * Module pool SAPMZDEMO MODULE status_0100 OUTPUT. SET PF-STATUS 'STATUS_100'. SET TITLEBAR 'TITLE_100'. ENDMODULE. MODULE user_command_0100 INPUT. CASE sy-ucomm. WHEN 'SAVE'. PERFORM save_data. WHEN 'BACK' OR 'EXIT'. LEAVE TO SCREEN 0. ENDCASE. ENDMODULE.
💡 Mẹo: Lệnh LEAVE TO SCREEN 0 kết thúc màn hình hiện tại và quay lại điểm gọi, đây là cách chuẩn để kết thúc một giao dịch hội thoại một cách gọn gàng.





