Bạn tạo danh sách thứ hai dựa vào dòng hoặc trường của danh sách cơ bản mà người dùng giao tiếp. Để cung cấp tên và giá trị của trường cho danh sách thứ hai, bạn cần chuyển tên và giá trị từ danh sách cơ bản đến danh sách thứ hai trong suốt quá trình thực thi report.
Bạn có thể chuyển dữ liệu từ danh sách cơ bản sang danh sách thứ hai bằng hai câu lệnh phổ biến:
+ hide + get cursor
Câu lệnh hide lưu giá trị của biến h vào vùng Hide cho dòng kết xuất hiện hành trên màn hình.
hide h.
Giả sử bạn tạo danh sách cơ bản chứa các dụng cụ IT trong công ty sử dụng internal table "itab_ITAsset". Trong quá trình thực thi report, bạn muốn tất cả các giá trị của
trường asset_number được lưu trong vùng Hide. Khi người dùng nhấp đôi một dòng trong danh sách cơ bản, bạn muốn sử dụng giá trị của trường asset_number và internal table "itab_ITAllocation" để tạo danh sách thứ hai hiển thị thông tin chỉ định của dụng cụ IT tương ứng.
"basic list
select assert_number acquired_date asset_value into itab_ITAsset from IT_Asset.
write: / itab_ITAsset-asset_number. hide itab_ITAsset-asset_number. write: / itab_ITAsset-acquired_date. write: / itab_ITAsset-asset_value. endselect. at line-selection. "secondary list loop at itab_ITAllocation.
"if the asset number of itab_ITAllocation table matched
"the asset number of basic list row on which the user double-clicked "create the secondary list
if itab_ITAllocation-asset_number = itab_ITAsset-asset_number. write: / itab_ITAllocation-asset_number. write: / itab_ITAllocation-employee_name. write: / itab_ITAllocation-allocation_date. endif. endloop.
Câu lệnh get cursor rút trích tên và giá trị của trường nơi con trỏ được đặt trong quá trình người dùng giao tiếp vào lúc runtime vào biến "f" và "v".
get cusor Field f Value v.
Giả sử bạn tạo danh sách cơ bản hiển thị danh sách khách hàng của công ty và các sản phẩm họ mua. Vào lúc runtime, nếu một người dùng chọn customer code, customer name từ danh sách cơ bản, danh sách thứ hai phải hiển thị chi tiết khách hàng tương ứng như địa chỉ. Mặt khác, danh sách thứ hai cũng hiển thị các khách hàng mua cùng sản phẩm. Để làm điều này, bạn nên rút trích tên và giá trị của trường nơi con trỏ được đặt trong quá trình tương tác của người dùng.
data: f(20) type C, v(10) type N. "basic list
select customer_code name product
into itab_Customer_Prod from Customer_Prod write: / itab_Customer_Prod-customer_code. write: / itab_Customer_Prod-name. write: / itab_Customer_Prod-product. endselect. at line-selection "secondary list
get cursor Field f Value v.
if f = "customer_code" or "name"
"create a secondary list to display customer details here using the value of v else.
"create the secondary list on other customers here using the value of v. end if.
Ghi chú:
Trong interactive report, bạn có thể tạo cho danh sách cơ bản có khả năng đáp ứng các tương tác của người dùng để hiển thị danh sách chi tiết thứ hai như mong muốn. Dựa vào cách người dùng tương tác, bạn có thể đáp ứng các tương tác bằng cách viết các câu lệnh trong event block ‘at line-selection’, ‘at pf<nn>’ và ‘at user_command’.
Ngoài sử dụng event block để tạo danh sách thứ hai, bạn cần chuyển tên và giá trị của trường mà người dùng tương tác trong danh sách cơ bản. Để làm điều này, bạn có thể sử dụng hide hoặc get cursor.