SAP ABAP - Tổng quan về SQL mở
Open SQL chỉ ra tập con các câu lệnh ABAP cho phép truy cập trực tiếp vào dữ liệu trong cơ sở dữ liệu trung tâm của AS ABAP hiện tại. Câu lệnh SQL mở ánh xạ chức năng Ngôn ngữ thao tác dữ liệu của SQL trong ABAP được hỗ trợ bởi tất cả các hệ thống cơ sở dữ liệu.
Các câu lệnh của Open SQL được chuyển đổi thành SQL cụ thể của cơ sở dữ liệu trong giao diện Open SQL của giao diện cơ sở dữ liệu. Sau đó chúng được chuyển sang hệ thống cơ sở dữ liệu và thực thi. Các câu lệnh SQL mở có thể được sử dụng để truy cập các bảng cơ sở dữ liệu được khai báo trong Từ điển ABAP. Cơ sở dữ liệu trung tâm của AS ABAP được truy cập theo mặc định và cũng có thể truy cập vào các cơ sở dữ liệu khác thông qua các kết nối cơ sở dữ liệu thứ cấp.
Bất cứ khi nào bất kỳ câu lệnh nào trong số này được sử dụng trong chương trình ABAP, điều quan trọng là phải kiểm tra xem hành động được thực thi có thành công hay không. Nếu một người cố gắng chèn một bản ghi vào một bảng cơ sở dữ liệu và nó không được chèn đúng cách, điều rất cần thiết là phải biết để có thể thực hiện hành động thích hợp trong chương trình. Điều này có thể được thực hiện bằng cách sử dụng trường hệ thống đã được sử dụng, đó là SY-SUBRC. Khi một câu lệnh được thực thi thành công, trường SY-SUBRC sẽ chứa giá trị 0, do đó, giá trị này có thể được kiểm tra và người ta có thể tiếp tục chương trình nếu nó xuất hiện.
Câu lệnh DATA được sử dụng để khai báo một vùng làm việc. Hãy đặt tên này là 'wa_customers1'. Thay vì khai báo một kiểu dữ liệu cho điều này, một số trường tạo nên bảng có thể được khai báo. Cách dễ nhất để làm điều này là sử dụng câu lệnh LIKE.
Tuyên bố INSERT
Vùng làm việc wa_customers1 được khai báo ở đây giống như bảng ZCUSTOMERS1, có cùng cấu trúc mà không trở thành một bảng. Khu vực làm việc này chỉ có thể lưu trữ một bản ghi. Khi nó đã được khai báo, câu lệnh INSERT có thể được sử dụng để chèn vùng làm việc và bản ghi mà nó giữ vào bảng. Mã ở đây sẽ đọc là 'CHÈN ZCUSTOMERS1 TỪ wa_customers1'.
Khu vực làm việc phải được lấp đầy với một số dữ liệu. Sử dụng tên trường từ bảng ZCUSTOMERS1. Điều này có thể được thực hiện bằng cách điều hướng chuyển tiếp, nhấp đúp vào tên bảng trong mã hoặc bằng cách mở một phiên mới và sử dụng giao dịch SE11. Sau đó, các trường của bảng có thể được sao chép và dán vào trình chỉnh sửa ABAP.
Sau đây là đoạn mã -
DATA wa_customers1 LIKE ZCUSTOMERS1.
wa_customers1-customer = '100006'.
wa_customers1-name = 'DAVE'.
wa_customers1-title = 'MR'.
wa_customers1-dob = '19931017'.
INSERT ZCUSTOMERS1 FROM wa_customers1.
Sau đó, câu lệnh CHECK có thể được sử dụng như sau. Có nghĩa là nếu bản ghi được chèn đúng cách, hệ thống sẽ thông báo điều này. Nếu không, thì mã SY-SUBRC không bằng 0 sẽ được hiển thị. Sau đây là đoạn mã -
IF SY-SUBRC = 0.
WRITE 'Record Inserted Successfully'.
ELSE.
WRITE: 'The return code is ', SY-SUBRC.
ENDIF.
Kiểm tra chương trình, lưu, kích hoạt mã và sau đó kiểm tra nó. Cửa sổ đầu ra sẽ hiển thị là 'Đã Chèn Thành công Bản ghi'.
Tuyên bố rõ ràng
Câu lệnh CLEAR cho phép xóa một trường hoặc một biến để chèn dữ liệu mới vào vị trí của nó, cho phép nó được sử dụng lại. Câu lệnh CLEAR thường được sử dụng trong các chương trình và nó cho phép các trường hiện có được sử dụng nhiều lần.
Trong đoạn mã trước, cấu trúc vùng làm việc đã được lấp đầy dữ liệu để tạo bản ghi mới để chèn vào bảng ZCUSTOMERS1 và sau đó kiểm tra xác thực được thực hiện. Nếu chúng ta muốn chèn một bản ghi mới, câu lệnh CLEAR phải được sử dụng để sau đó nó có thể được lấp đầy lại bằng dữ liệu mới.
CẬP NHẬT Tuyên bố
Nếu bạn muốn cập nhật một hoặc nhiều bản ghi hiện có trong bảng cùng lúc thì hãy sử dụng câu lệnh UPDATE. Tương tự như câu lệnh INSERT, một vùng làm việc được khai báo, chứa đầy dữ liệu mới sau đó được đưa vào bản ghi khi chương trình được thực thi. Bản ghi được tạo trước đó bằng câu lệnh INSERT sẽ được cập nhật tại đây. Chỉ cần chỉnh sửa văn bản được lưu trữ trong các trường NAME và TITLE. Sau đó, trên một dòng mới, cấu trúc tương tự như cho câu lệnh INSERT được sử dụng và lần này bằng cách sử dụng câu lệnh UPDATE như được hiển thị trong đoạn mã sau:
DATA wa_customers1 LIKE ZCUSTOMERS1.
wa_customers1-customer = '100006'.
wa_customers1-name = 'RICHARD'.
wa_customers1-title = 'MR'.
wa_customers1-dob = '19931017'.
UPDATE ZCUSTOMERS1 FROM wa_customers1.
Khi câu lệnh UPDATE được thực thi, bạn có thể xem Trình duyệt dữ liệu trong Từ điển ABAP để biết rằng bản ghi đã được cập nhật thành công.
Tuyên bố sửa đổi
Câu lệnh MODIFY có thể được coi là sự kết hợp của câu lệnh INSERT và UPDATE. Nó có thể được sử dụng để chèn một bản ghi mới hoặc sửa đổi một bản ghi hiện có. Nó tuân theo một cú pháp tương tự như hai câu lệnh trước đó trong việc sửa đổi bản ghi từ dữ liệu được nhập vào vùng làm việc.
Khi câu lệnh này được thực thi, các trường chính liên quan sẽ được kiểm tra so với các trường trong bảng. Nếu một bản ghi có các giá trị trường khóa này đã tồn tại, nó sẽ được cập nhật. Nếu không, thì một bản ghi mới sẽ được tạo.
Sau đây là đoạn mã để tạo một bản ghi mới -
CLEAR wa_customers1.
DATA wa_customers1 LIKE ZCUSTOMERS1.
wa_customers1-customer = '100007'.
wa_customers1-name = 'RALPH'.
wa_customers1-title = 'MR'.
wa_customers1-dob = '19910921'.
MODIFY ZCUSTOMERS1 FROM wa_customers1.
Trong ví dụ này, câu lệnh CLEAR được sử dụng để một mục nhập mới có thể được đưa vào vùng làm việc và sau đó khách hàng (số) 100007 được thêm vào. Vì đây là giá trị trường khóa mới, duy nhất, một bản ghi mới sẽ được chèn và một kiểm tra xác thực khác được thực hiện.
Khi điều này được thực thi và dữ liệu được xem trong Trình duyệt dữ liệu, một bản ghi mới sẽ được tạo cho khách hàng số 100007 (RALPH).
Đoạn mã trên tạo ra kết quả sau (nội dung bảng):