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

Đ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

Một đặc điểm của vòng lặp bước là các hàng trong bảng của chúng có thể trải dài trên nhiều dòng trên màn hình. Mặt khác, một hàng của điều khiển bảng phải luôn được chứa trong một dòng duy nhất (mặc dù có thể cuộn).

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

cú pháp

Để 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.

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. 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ó đượ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 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 cấu trúc ( ControlS gõ BẢNG XEM SỬ DỤNG MÀN HÌNH )

3.Để tạo các trường, hãy chuyển đến chức năng trường Dict./Program.

  • 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.

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.

Việc truyền dữ liệu diễn ra giữa màn hình và bảng bên trong trong các vòng lặp. Khi bạn điền vào bảng bên trong, hãy sử dụng BẢNG MÔ TẢ DÒNG -lines, để 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 quá trình truyền dữ liệu diễn ra

Để 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.