SAP ABAP - Tạo bảng nội bộ
Câu lệnh DATA dùng để khai báo một bảng bên trong. Chương trình phải được cho biết nơi bắt đầu và kết thúc của bảng. Vì vậy hãy sử dụng câu lệnh BEGIN OF sau đó khai báo tên bảng. Sau đó, bổ sung OCCURS được sử dụng, theo sau là một số, ở đây là 0. OCCURS cho SAP biết rằng một bảng nội bộ đang được tạo và số 0 nói rằng ban đầu nó sẽ không chứa bất kỳ bản ghi nào. Sau đó, nó sẽ mở rộng khi chứa đầy dữ liệu.
Sau đây là cú pháp:
DATA: BEGIN OF <internal_tab> Occurs 0,
Hãy tạo các trường trên một dòng mới. Ví dụ, tạo 'tên' được khai báo là LIKE ZCUSTOMERS1-name. Tạo một trường khác có tên 'dob', LIKE ZCUSTOMERS1-dob. Ban đầu, sẽ hữu ích khi đặt tên trường trong bảng nội bộ giống tên với các trường khác đã được tạo ở nơi khác. Cuối cùng, khai báo phần cuối của bảng nội bộ bằng “END OF <internal_tab>.” như được hiển thị trong đoạn mã sau:
DATA: BEGIN OF itab01 Occurs 0,
name LIKE ZCUSTOMERS1-name,
dob LIKE ZCUSTOMERS1-dob,
END OF itab01.
Ở đây 'itab01' thường được sử dụng viết tắt khi tạo các bảng tạm thời trong SAP. Mệnh đề OCCURS được sử dụng để xác định phần thân của một bảng bên trong bằng cách khai báo các trường cho bảng. Khi mệnh đề OCCURS được sử dụng, bạn có thể chỉ định một hằng số 'n' để xác định bộ nhớ mặc định bổ sung nếu được yêu cầu. Kích thước bộ nhớ mặc định được sử dụng bởi mệnh đề OCCUR 0 là 8 KB. Cấu trúc của bảng nội bộ hiện đã được tạo và mã có thể được viết để điền vào nó với các bản ghi.
Một bảng nội bộ có thể được tạo có hoặc không sử dụng dòng tiêu đề. Để tạo một bảng nội bộ có dòng tiêu đề, hãy sử dụng mệnh đề BEGIN OF trước mệnh đề OCCURS hoặc mệnh đề VỚI DÒNG ĐẦU sau mệnh đề OCCURS trong định nghĩa của bảng nội bộ. Để tạo một bảng nội bộ không có dòng tiêu đề, hãy sử dụng mệnh đề OCCURS mà không có mệnh đề BEGIN OF.
Bạn cũng có thể tạo bảng nội bộ dưới dạng kiểu dữ liệu cục bộ (kiểu dữ liệu chỉ được sử dụng trong ngữ cảnh của chương trình hiện tại) bằng cách sử dụng câu lệnh TYPES. Câu lệnh này sử dụng mệnh đề TYPE hoặc LIKE để tham chiếu đến một bảng hiện có.
Cú pháp để tạo một bảng nội bộ làm kiểu dữ liệu cục bộ là:
TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF
<line_type_itab> WITH <key> INITIAL SIZE <size_number>.
Ở đây <internal_tab_type> chỉ định kiểu bảng cho bảng nội bộ <internal_tab> và <line_type_itab> chỉ định kiểu cho một dòng của bảng nội bộ. Trong câu lệnh TYPES, bạn có thể sử dụng mệnh đề TYPE để chỉ định kiểu dòng của một bảng nội bộ làm kiểu dữ liệu và mệnh đề LIKE để chỉ định kiểu dòng làm đối tượng dữ liệu. Việc chỉ định khóa cho một bảng nội bộ là tùy chọn và nếu người dùng không chỉ định khóa, hệ thống SAP sẽ xác định một loại bảng với một khóa tùy ý.
INITIAL SIZE <kích thước_nố> tạo một đối tượng bảng bên trong bằng cách cấp phát một lượng bộ nhớ ban đầu cho nó. Trong cú pháp trước đó, mệnh đề INITIAL SIZE dành một không gian bộ nhớ cho các dòng bảng size_number. Bất cứ khi nào một đối tượng bảng bên trong được khai báo, kích thước của bảng không thuộc kiểu dữ liệu của bảng.
Note - Tiêu tốn ít bộ nhớ hơn khi một bảng nội bộ được điền lần đầu tiên.
Thí dụ
Step 1- Mở ABAP Editor bằng cách thực hiện mã giao dịch SE38. Màn hình ban đầu của ABAP Editor xuất hiện.
Step 2 - Trong màn hình ban đầu, nhập tên cho chương trình, chọn nút radio Mã nguồn và nhấp vào nút Tạo để tạo chương trình mới.
Step 3- Trong hộp thoại 'ABAP: Thuộc tính Chương trình', nhập mô tả ngắn gọn cho chương trình vào trường Tiêu đề, chọn tùy chọn 'Chương trình có thể thực thi' từ menu thả xuống Loại trong hộp Nhóm thuộc tính. Nhấp vào nút Lưu.
Step 4 - Viết đoạn mã sau trong trình soạn thảo ABAP.
REPORT ZINTERNAL_DEMO.
TYPES: BEGIN OF CustomerLine,
Cust_ID TYPE C,
Cust_Name(20) TYPE C,
END OF CustomerLine.
TYPES mytable TYPE SORTED TABLE OF CustomerLine
WITH UNIQUE KEY Cust_ID.
WRITE:/'The mytable is an Internal Table'.
Step 5 - Lưu, kích hoạt và thực hiện chương trình như bình thường.
Trong ví dụ này, mytable là một bảng nội bộ và một khóa duy nhất được xác định trên trường Cust_ID.
Đoạn mã trên tạo ra kết quả sau:
The mytable is an Internal Table.