SAP Kiểm soát bảng ABAP với các ví dụ

⚡ Tóm tắt thông minh

SAP ABAP Table Control hiển thị một bảng nội bộ dưới dạng lưới cuộn trên màn hình được xây dựng trong Screen. PainterTrang này giải thích các tính năng của nó, khai báo CONTROLS, xử lý con trỏ, vòng lặp PBO và PAI, và các thuộc tính cột.

  • 🖥️ Định nghĩa cốt lõi: Điều khiển bảng là một vòng lặp bước được cải tiến, hiển thị dữ liệu dạng bảng với giao diện và cảm giác giống như lưới ứng dụng trên máy tính để bàn.
  • 🧰 Các tính năng tích hợp: Việc cuộn trang, thay đổi kích thước cột, sắp xếp lại thứ tự cột, chọn hàng và lưu cài đặt hiển thị được xử lý bởi... SAPGiao diện người dùng đồ họa (GUI).
  • 📜 Quy tắc một dòng: Một hàng vòng lặp bước có thể trải dài trên nhiều dòng màn hình, trong khi một hàng điều khiển bảng phải luôn nằm gọn trên một dòng.
  • ⌨️ Tờ khai: ĐIỀU KHIỂN KIỂU TABLEVIEW SỬ DỤNG MÀN HÌNH Liên kết phần tử màn hình với chương trình ABAP.
  • 🎯 Xử lý con trỏ: Lệnh SET CURSOR định vị con trỏ tại vị trí PBO, và lệnh GET CURSOR đọc trường và hàng tại vị trí PAI.
  • 🔁 Truyền dữ liệu: Lệnh LOOP AT … USING CONTROL chạy tại PBO và lệnh LOOP AT thông thường chạy tại PAI, và dữ liệu di chuyển giữa màn hình và bảng nội bộ bên trong các vòng lặp đó.
  • 🎨 Thuộc tính động: Bảng SCREEN và - Thay đổi cấu trúc cột, cho phép hiển thị và định dạng cột trong quá trình thực thi.

SAP Kiểm soát bảng ABAP

Bảng điều khiển là gì? SAP ABAP?

Điều khiển bảng và vòng lặp bước là các đối tượng để hiển thị bảng màn hình mà bạn thêm vào màn hình trong Màn hình Painter.

Từ quan điểm lập trình, các điều khiển bảng và vòng lặp bước gần như giống hệt nhau. Điều khiển bảng chỉ đơn giản là các vòng lặp bước được cải tiến nhằm hiển thị dữ liệu với giao diện liên quan đến bảng trong ứng dụng máy tính để bàn.

Các tính năng của Điều khiển bảng ABAP

Với các điều khiển bảng, người dùng có thể:

  • Cuộn qua bảng theo chiều dọc và chiều ngang
  • Chỉnh lại kích thước chiều rộng của cột
  • Cuộn trong một trường (khi nội dung trường rộng hơn trường)
  • Chọn hàng hoặc cột của bảng
  • Sắp xếp lại thứ tự các cột
  • Lưu cài đặt hiển thị hiện tại để sử dụng sau này

Điều khiển bảng cũng cung cấp các tính năng định dạng đặc biệt (một số tự động, một số tùy chọn) giúp bảng dễ xem và sử dụng hơn. Kiểm soát bảng cung cấp –

  • tự động thay đổi kích thước bảng (dọc và ngang) khi người dùng thay đổi kích thước cửa sổ
  • đường phân cách giữa các hàng và giữa các cột (dọc và ngang)
  • trường tiêu đề cột cho tất cả các cột

Nói chung, nhiều tính năng do bảng điều khiển cung cấp được xử lý cục bộ bởi hệ thống của bạn. SAPgui frontend nên bạn không cần phải tự mình lập trình chúng. Ngoại lệ đáng chú ý duy nhất cho điều này là cuộn dọc.

Ví dụ (Giao dịch TZ60)

SAP Kiểm soát bảng ABAP

Giao dịch TZ60 ở trên hiển thị kết quả cuối cùng: một lưới với tiêu đề cột, đường phân cách và cột lựa chọn. Sự khác biệt so với vòng lặp từng bước cũ được tóm tắt như sau.

Điều khiển bảng so với vòng lặp bước

Một đặc điểm của vòng lặp bước là các hàng trong bảng có thể trải rộng trên nhiều dòng trên màn hình. Ngược lại, một hàng của điều khiển bảng luôn phải nằm trên một dòng duy nhất (mặc dù vẫn có thể cuộn). Bảng dưới đây so sánh hai phần tử màn hình này.

Tiêu chí Kiểm soát bảng Vòng lặp bước
Bố cục hàng Mỗi hàng tương ứng với một dòng trên màn hình. Một hàng có thể trải dài trên nhiều dòng màn hình.
Xử lý cột Người dùng có thể thay đổi kích thước, sắp xếp lại thứ tự và ẩn các cột. Bố cục cột cố định được xác định trên màn hình
Di chuyển Cuộn ngang được thực hiện bởi giao diện người dùng, cuộn dọc được lập trình trong PAI. Được lập trình hoàn toàn bằng mã ABAP.
Tờ khai CÁC ĐIỀU KHIỂN … KIỂU TABLEVIEW SỬ DỤNG MÀN Không có cấu trúc điều khiển nào trong chương trình.
Cài đặt hiển thị Người dùng có thể lưu bố cục cá nhân. Không có

Vì điều khiển bảng là một yếu tố hiện đại, nên phần còn lại của trang này sẽ lập trình cho điều khiển đó.

Cách tạo và lập trình điều khiển bảng

Một điều khiển bảng cần có một phần tử màn hình, một cấu trúc điều khiển trong chương trình và một vòng lặp trong cả PBO và PAI. Các phần nhỏ bên dưới tuân theo thứ tự đó.

Khai báo quyền kiểm soát

Để xử lý các điều khiển bảng trong chương trình ABAP, bạn phải khai báo một điều khiển trong phần khai báo của chương trình cho mỗi điều khiển bảng bằng cách sử dụng câu lệnh sau:

CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>

Ở đâu là tên của bảng điều khiển trên màn hình trong chương trình ABAP. Điều khiển cho phép chương trình ABAP đọc các thuộc tính của điều khiển bảng và tác động đến điều khiển. Ở đây, là số màn hình nơi các giá trị ban đầu của bảng được tải.

Thiết lập và đọc vị trí con trỏ

Vị trí con trỏ để điều khiển bảng có thể được thiết lập theo những cách sau:

Tại PBO, bạn có thể đặt con trỏ trên một trường cụ thể của một hàng cụ thể của điều khiển bảng.

SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]

Bằng cách sử dụng phần bổ sung tùy chọn OFFSET, bạn có thể nhập độ lệch của con trỏ vào trường như được mô tả trong phần Đặt vị trí con trỏ.

Tại PAI bạn có thể đọc vị trí con trỏ hiện tại.

GET CURSOR FIELD <f> LINE <lin> ...

Ngoài thông tin được cung cấp trong phần Tìm hiểu vị trí con trỏ, trường chứa thông tin về hàng nào của bảng điều khiển con trỏ hiện đang bật. Bạn cũng có thể dùng

GET CURSOR LINE <lin>.

Để xác định hàng của điều khiển bảng. Lệnh SY-SUBRC cho phép bạn kiểm tra xem con trỏ có được đặt trong một hàng của điều khiển bảng hay không.

Đọc dòng bảng nội bộ tương ứng

Để có được dòng tương ứng của bảng nội bộ:

GET CURSOR line <lin>.

ind = <table_control>-top_line + <lin> - 1.

Read table <itab> index ind.

Biến hệ thống stepl – chứa chỉ mục dòng của bảng hiện tại trong một vòng lặp… endloop. Loopc - chứa số dòng hiển thị trong bảng

Tạo điều khiển trên màn hình Painter

Để tạo một điều khiển bảng

  1. Thêm phần tử điều khiển bảng vào màn hình của bạn.
  2. Đặt tên cho điều khiển bảng. Trong chương trình ABAP, khai báo một cấu trúc có cùng tên (CONTROLS). type TABLEVIEW USING SCREEN )
  3. Để tạo trường, hãy vào chức năng Trường từ điển/Chương trình.
    • Nhập tên của cấu trúc có trường bạn muốn. (Nếu bạn muốn nó chọn nó từ từ điển của chương trình, hãy nhấp vào nút puh có liên quan).
    • Trong danh sách trường, chọn trường bạn muốn và chọn ok.
    • Bấm vào vùng điều khiển bảng

Nếu bạn muốn một cột lựa chọn, hãy đánh dấu vào hộp kiểm thích hợp trong các thuộc tính và đặt tên cho nó. Tạo trường trong chương trình ABAP.

Lập trình các vòng lặp PBO và PAI

Trong PBO bạn nên có tuyên bố

LOOP at <itab> USING CONTROL <cntrl_name>.

ENDLOOP.

Trong PAI bạn nên có.

LOOP at <itab>.

ENDLOOP.

Quá trình truyền dữ liệu giữa màn hình và bảng nội bộ diễn ra trong các vòng lặp. Khi bạn điền dữ liệu vào bảng nội bộ, hãy sử dụng lệnh DESCRIBE TABLE. LINES - dòng, để lưu trữ tổng số dòng trong điều khiển. Câu lệnh FIELD có thể được sử dụng để kiểm soát thời điểm truyền dữ liệu xảy ra.

⚠️ Cảnh báo: Vòng lặp PBO phải đặt tên cho điều khiển bằng USING CONTROL. Nếu không, điều khiển sẽ không biết có bao nhiêu dòng và chức năng cuộn dọc sẽ ngừng hoạt động.

Thay đổi thuộc tính cột trong quá trình thực thi

Để thay đổi thuộc tính của từng ô riêng lẻ, hãy tạm thời thay đổi bảng SCREEN trong PBO. Bạn có thể thay đổi các thuộc tính của cấu trúc được tạo bởi câu lệnh KIỂM SOÁT

<cntrl>-fixed_cols etc are the attributes of the control

<cntrl>-cols-index etc are the attributes of the columns.

<cntrl>-cols-screen-invisible etc are the screen attributes of each column.

💡 Mẹo: Lặp lại - Sử dụng `cols` trong PBO để ẩn hoặc bảo vệ một cột cho một vai trò người dùng nhất định, thay vì tạo màn hình thứ hai.

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

Giao diện người dùng xử lý cuộn ngang, nhưng cuộn dọc được mã hóa trong PAI. Đánh giá SY-UCOMM để tìm mã chức năng cuộn và di chuyển trường top_line của cấu trúc điều khiển trước khi PBO tiếp theo chạy.

An Lưới ALV Nó cung cấp chức năng sắp xếp, lọc, tính tổng và xuất dữ liệu mà không cần thêm mã, vì vậy rất phù hợp để hiển thị danh sách. Điều khiển dạng bảng được ưu tiên sử dụng khi màn hình cần logic nhập liệu tùy chỉnh và kiểm soát hoàn toàn từng ô.

Biến SY-STEPL lưu trữ chỉ số của hàng hiện đang được xử lý bên trong vòng lặp màn hình, và biến SY-LOOPC lưu trữ số lượng hàng hiển thị trên màn hình. Cả hai biến này chỉ được điền dữ liệu bên trong vòng lặp LOOP … ENDLOOP của chương trình điều khiển.

Đúng vậy. Các trợ lý AI trong công cụ phát triển ABAP soạn thảo khai báo CONTROLS, cả vòng lặp màn hình và logic cuộn từ mô tả của bảng nội bộ. Logic luồng được tạo ra vẫn cần được kiểm tra trên màn hình. Painter.

Các công cụ phân tích AI đọc logic luồng của dynpro, liệt kê các trường và mã chức năng, và đề xuất một thiết kế tương đương dựa trên Fiori hoặc ALV. Đề xuất này rút ngắn giai đoạn phân tích của một dự án hiện đại hóa.

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