Hướng dẫn về màn hình con ABAP: Gọi màn hình con trong SAP

⚡ Tóm tắt thông minh

Màn hình con ABAP nhúng một màn hình vào bên trong một vùng của màn hình khác trong quá trình thực thi, cùng với logic luồng của nó. Trang này giải thích về các vùng màn hình con, câu lệnh CALL SUBSCREEN trong PBO và PAI, truyền dữ liệu và các hạn chế gây ra lỗi trong quá trình thực thi.

  • 🪟 Định nghĩa cốt lõi: Màn hình phụ là một màn hình độc lập được hiển thị bên trong một khu vực xác định của màn hình chính, và nhiều màn hình phụ có thể cùng chia sẻ một màn hình chính.
  • 🧩 Bao gồm cả phép so sánh tương tự: Luồng logic của màn hình nhúng được chèn vào luồng logic của màn hình chính, giống như cách một lệnh include được chèn vào chương trình.
  • 🪜 Ba bước: Xác định vùng màn hình con, xác định màn hình con, sau đó bao gồm màn hình đó trong vùng.
  • ⌨️ Lời kêu gọi của PBO: MÀN HÌNH PHỤ CUỘC GỌI BAO GỒM Gán một số màn hình gồm bốn ký tự cho khu vực đó và chạy logic PBO của nó.
  • ⌨️ Cuộc gọi PAI: CUỘC GỌI PHỤ MÀN HÌNH Trong PAI, logic PAI của màn hình nhúng được thực thi và truyền tải dữ liệu của các trường có cùng tên.
  • 🚫 Các hạn chế: Màn hình phụ không được sử dụng SET PF-STATUS, SET TITLEBAR, SET SCREEN, LEAVE SCREEN, mã OK_CODE riêng hoặc lệnh AT EXIT-COMMAND.
  • 🌐 Lĩnh vực toàn cầu: Các trường được sử dụng bởi màn hình con là các trường toàn cục được khai báo trong phần TOP include của chương trình.

Màn hình con ABAP

Màn hình phụ là gì? SAP ABAP?

Trước khi đọc hướng dẫn này, hãy chắc chắn rằng bạn hiểu rõ a là gì. Chương trình Đối thoại là.

  • Màn hình phụ là một màn hình độc lập được hiển thị trong một khu vực của màn hình (“chính”) khác.
  • Màn hình phụ cho phép bạn nhúng một màn hình vào một màn hình khác trong thời gian chạy. Bạn có thể bao gồm nhiều màn hình phụ trên màn hình chính.
  • Thuật ngữ màn hình phụ áp dụng cho cả màn hình mà bạn nhúng và khu vực trên màn hình chính nơi bạn đặt màn hình đó. Hướng dẫn này là về các khu vực màn hình phụ. Các màn hình thực tế được tạo thông qua giao dịch SE51, được gọi là màn hình màn hình phụ nếu được xác định trong thuộc tính màn hình.
  • Khi bạn sử dụng màn hình phụ, logic luồng của màn hình nhúng cũng được nhúng vào logic luồng của màn hình chính. Do đó, việc sử dụng màn hình phụ trên màn hình cũng giống như sử dụng include trong Các chương trình ABAP.

Để sử dụng màn hình phụ, bạn phải làm theo ba bước đơn giản

  1. Xác định (các) vùng màn hình phụ trên màn hình
  2. Xác định màn hình màn hình phụ phù hợp
  3. Bao gồm màn hình màn hình phụ trong khu vực màn hình phụ.

Ngoài ra, bạn cần điều chỉnh lại khung màn hình phụ và màn hình chính. Bạn cần đặt tên cho nó trong trường tên trường.

Hơn nữa, bạn cũng cần điều chỉnh các trường trong màn hình phụ để chúng xuất hiện trên màn hình chính. Trong trường hợp màn hình phụ được xác định là lớn hơn diện tích có sẵn trên màn hình chính thì chỉ hiển thị phần màn hình phụ phù hợp với diện tích có sẵn. Diện tích luôn được đo từ góc trên bên trái của màn hình. Do đó, bạn nên cẩn thận khi xác định các khu vực màn hình phụ và tạo màn hình phụ.

MÀN HÌNH CUỘC GỌI

THÍ DỤ

Ví dụ ở đây, chúng tôi đã xác định hai khu vực màn hình phụ trên màn hình chính và gắn hai màn hình phụ khác nhau vào các khu vực tương ứng. Bất cứ khi nào màn hình chính được gọi, PBO của màn hình chính sẽ được gọi. Nhưng trước khi hiển thị, các PBO của mỗi màn hình gắn liền với các khu vực màn hình phụ trên màn hình chính cũng được gọi.

Gọi màn hình phụ vào SAP

Ảnh chụp màn hình hiển thị màn hình chính với hai khu vực màn hình phụ được lấp đầy bởi hai màn hình phụ riêng biệt.

Bạn có thể bao gồm màn hình màn hình phụ bằng cách sử dụng câu lệnh CALL SUBSCREEN trong logic luồng của màn hình chính.

Gọi màn hình con trong PBO

Để bao gồm một màn hình phụ trong vùng màn hình phụ của màn hình chính và gọi logic luồng PBO của nó, hãy sử dụng câu lệnh sau trong sự kiện PBO của màn hình chính:

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.

Câu lệnh này gán cho màn hình con số đến khu vực màn hình phụ được gọi là . Bạn cũng có thể chỉ định chương trình mà màn hình phụ được xác định (tùy chọn). Nếu bạn không chỉ định rõ ràng chương trình, hệ thống sẽ tìm màn hình màn hình phụ trong cùng chương trình ABAP với chương trình chính. Nếu nó không tìm thấy màn hình màn hình phụ tương ứng thì sẽ xảy ra lỗi thời gian chạy. Logic luồng PBO của màn hình màn hình phụ cũng được đưa vào cùng một điểm. Điều này có thể gọi các mô-đun PBO của chương trình ABAP trong đó màn hình màn hình phụ được xác định. Ở cuối màn hình con PBO, các trường chung từ chương trình sẽ được chuyển đến bất kỳ trường màn hình nào có tên giống hệt nhau trong màn hình màn hình phụ. Logic luồng PBO của màn hình màn hình phụ có thể bao gồm các màn hình phụ khác.

Tên của vùng màn hình con phải được nhập trực tiếp không có dấu phẩy đảo ngược. Bạn có thể chỉ định tên Và dưới dạng chữ hoặc biến. Nếu sử dụng biến thì phải khai báo và điền các biến có tên giống nhau trong chương trình ABAP. Số màn hình phải dài 4 ký tự. Nếu bạn không gán màn hình màn hình phụ cho một khu vực thì khu vực đó sẽ trống.

Gọi màn hình phụ trong PAI

Để gọi logic luồng PAI của màn hình phụ, hãy sử dụng câu lệnh sau trong logic luồng PAI của màn hình chính:

PROCESS AFTER INPUT.

CALL SUBSCREEN <area>.

Tuyên bố này bao gồm logic luồng PAI của màn hình màn hình phụ được bao gồm trong khu vực màn hình phụ trong sự kiện PBO. Điều này có thể gọi các mô-đun PAI của chương trình ABAP trong đó màn hình màn hình phụ được xác định. Dữ liệu được vận chuyển giữa các trường có tên giống hệt nhau trong màn hình màn hình phụ và chương trình ABAP khi sự kiện PAI được kích hoạt hoặc tại các câu lệnh FIELD tương ứng trong logic luồng PAI của màn hình màn hình phụ.

Cách tạo và nhúng màn hình phụ

Ba bước được liệt kê ở trên được thực hiện trong Màn hình. Painter và trong logic luồng của màn hình chính. Trình tự bên dưới tạo ra một màn hình chính với một khu vực màn hình phụ duy nhất.

  1. Tạo vùng màn hình phụ: Mở màn hình chính, ví dụ màn hình 100, trong Screen Painter (SE51). Chọn Màn hình phụ Chọn một phần tử từ thanh phần tử, vẽ nó lên bố cục và nhập tên, ví dụ như SUB_AREA, vào trường Tên. Tên đó sẽ được sử dụng sau này trong câu lệnh CALL SUBSCREEN.
  2. Tạo màn hình phụ: Tạo màn hình thứ hai, ví dụ màn hình 110, và đặt loại màn hình của nó thành... Màn hình phụ Trong phần thuộc tính. Màn hình phụ không có trường mã OK và không có trạng thái giao diện người dùng riêng.
  3. Đặt các trường: Vẽ các trường nhập liệu trên màn hình 110. Giữ bố cục nằm trong kích thước của vùng màn hình con, vì chỉ phần vừa vặn mới được hiển thị, tính từ góc trên bên trái.
  4. Khai báo dữ liệu toàn cầu: Đặt các trường vào phần TOP include của module pool, để cả màn hình chính và màn hình phụ đều đọc cùng một biến toàn cục.
  5. Gọi màn hình phụ: Thêm CALL SUBSCREEN vào PBO và PAI của màn hình chính, như hình bên dưới.
  6. Kích hoạt và kiểm tra: Kích hoạt các màn hình và chương trình, sau đó bắt đầu giao dịch. Khu vực màn hình phụ được lấp đầy bởi màn hình 110, và các mô-đun của nó chạy bên trong logic luồng của màn hình 100.
* Flow logic of the main screen 100
PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  CALL SUBSCREEN sub_area INCLUDING 'SAPMZDEMO' '0110'.

PROCESS AFTER INPUT.
  CALL SUBSCREEN sub_area.
  MODULE user_command_0100.

💡 Mẹo: Lưu số màn hình vào một biến toàn cục thay vì một giá trị cố định khi khu vực đó cần hiển thị các màn hình con khác nhau tùy thuộc vào đầu vào của người dùng. Biến này phải có cùng tên trong chương trình và trong câu lệnh CALL SUBSCREEN.

Điểm cần nhớ

  • Tên các thành phần của màn hình phụ trong một màn hình phải là duy nhất
  • Bạn không nên đính kèm OK_CODE hoặc FCODE với màn hình phụ. OK_CODE của màn hình chính cũng là OK_CODE của màn hình phụ
  • Màn hình phụ không được có bất kỳ mô-đun hộp thoại nào chứa THIẾT LẬP TIÊU ĐỀ, THIẾT LẬP TÌNH TRẠNG PF, THIẾT LẬP SCREEN, LEAVE SCREEN hoặc LEAVE TO SCREEN. Điều này sẽ gây ra lỗi thời gian chạy.
  • Bạn cần gọi nó theo logic luồng (cả PBO và PAI) của màn hình chính.
  • GỌI SUBSCREEN không được phép trong câu lệnh CHAIN..ENDCHAIN ​​và LOOP ENDLOOP
  • Không thể có mô-đun AT EXIT-COMMAND
  • Các trường bạn sử dụng là các trường chung. Chúng phải được khai báo ở trên cùng bao gồm
  • Nếu sử dụng màn hình phụ từ người khác chương trình hội thoại việc truyền dữ liệu sẽ không xảy ra trừ khi bạn thêm mã cụ thể.

⚠️ Cảnh báo: Việc đặt CALL SUBSCREEN bên trong CHAIN ​​… ENDCHAIN ​​hoặc bên trong vòng lặp màn hình (screen LOOP) sẽ gây ra lỗi cú pháp, và việc gọi một số màn hình không tồn tại sẽ gây ra lỗi thời gian chạy ở lần hiển thị đầu tiên.

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

Tabstrip là một vùng chứa mà các trang tab của nó lại chính là các vùng màn hình con. Màn hình con chứa nội dung, và tabstrip chỉ quyết định màn hình con nào hiện đang hiển thị cho người dùng.

Màn hình chính có thể chứa nhiều vùng màn hình phụ, và mỗi vùng hiển thị một màn hình phụ tại một thời điểm. Một màn hình phụ có thể tự chứa thêm các màn hình phụ khác, do đó mức độ lồng ghép chỉ bị giới hạn bởi kích thước màn hình và khả năng đọc.

Dữ liệu chỉ được truyền giữa các trường trên màn hình và các trường trong chương trình có cùng tên và được khai báo toàn cục. Một màn hình con được lấy từ chương trình khác sẽ không truyền dữ liệu nào trừ khi các giá trị được truyền rõ ràng bằng mã.

Đúng vậy. Trợ lý AI đọc bản ghi lỗi ngắn và logic luồng, sau đó chỉ ra các nguyên nhân thường gặp, chẳng hạn như thiếu số màn hình, lệnh SET PF-STATUS bị cấm bên trong màn hình con hoặc lệnh CALL SUBSCREEN được đặt bên trong CHAIN.

Các công cụ phân tích AI quét nhóm mô-đun, phát hiện các màn hình có bố cục trùng lặp và đề xuất một màn hình con duy nhất có thể tái sử dụng với các câu lệnh CALL SUBSCREEN để thay thế chúng. Đề xuất này sẽ được xem xét trước khi các màn hình bị xóa.

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