SAP ABAP - Tổng quan về SQL gốc

Thuật ngữ 'SQL gốc' đề cập đến tất cả các câu lệnh có thể được chuyển tĩnh sang giao diện SQL gốc của giao diện cơ sở dữ liệu. Câu lệnh SQL gốc không thuộc phạm vi ngôn ngữ của ABAP và không tuân theo cú pháp ABAP. ABAP chỉ chứa các câu lệnh để cô lập các phần chương trình trong đó các câu lệnh SQL gốc có thể được liệt kê.

Trong SQL gốc, chủ yếu có thể sử dụng các câu lệnh SQL dành riêng cho cơ sở dữ liệu. Chúng được chuyển không thay đổi từ giao diện SQL gốc sang hệ thống cơ sở dữ liệu và được thực thi. Phạm vi ngôn ngữ SQL đầy đủ của cơ sở dữ liệu liên quan có thể được sử dụng và các bảng cơ sở dữ liệu đã định địa chỉ không cần phải khai báo trong Từ điển ABAP. Ngoài ra còn có một tập hợp nhỏ các câu lệnh SQL gốc cụ thể của SAP được xử lý theo một cách cụ thể bởi giao diện SQL gốc.

Để sử dụng câu lệnh SQL gốc, bạn phải đặt trước câu lệnh EXEC SQL và kết thúc bằng câu lệnh ENDEXEC.

Sau đây là cú pháp:

EXEC SQL PERFORMING <form>.  
   <Native SQL statement> 
ENDEXEC.

Các câu lệnh này xác định một vùng trong chương trình ABAP nơi một hoặc nhiều câu lệnh SQL gốc có thể được liệt kê. Các câu lệnh đã nhập được chuyển đến giao diện SQL gốc và sau đó được xử lý như sau:

  • Tất cả các câu lệnh SQL hợp lệ cho giao diện chương trình của hệ thống cơ sở dữ liệu địa chỉ có thể được liệt kê giữa EXEC và ENDEXEC, cụ thể là các câu lệnh DDL (ngôn ngữ định nghĩa dữ liệu).

  • Các câu lệnh SQL này được chuyển từ giao diện SQL gốc đến hệ thống cơ sở dữ liệu hầu như không thay đổi. Các quy tắc cú pháp được quy định bởi hệ thống cơ sở dữ liệu, đặc biệt là các quy tắc phân biệt chữ hoa chữ thường cho các đối tượng cơ sở dữ liệu.

  • Nếu cú ​​pháp cho phép dấu phân cách giữa các câu lệnh riêng lẻ, bạn có thể bao gồm nhiều câu lệnh SQL gốc giữa EXEC và ENDEXEC.

  • Các phần tử ngôn ngữ SQL bản địa cụ thể của SAP có thể được chỉ định giữa EXEC và ENDEXEC. Các câu lệnh này không được chuyển trực tiếp từ giao diện SQL gốc đến cơ sở dữ liệu, nhưng chúng được chuyển đổi một cách thích hợp.

Thí dụ

SPFLI là một Bảng SAP tiêu chuẩn được sử dụng để lưu trữ thông tin về lịch trình Chuyến bay. Điều này có sẵn trong hệ thống R / 3 SAP tùy thuộc vào phiên bản và mức độ phát hành. Bạn có thể xem thông tin này khi nhập Tên bảng SPFLI vào giao dịch SAP có liên quan như SE11 hoặc SE80. Bạn cũng có thể xem dữ liệu có trong bảng cơ sở dữ liệu này bằng cách sử dụng hai giao dịch này.

REPORT ZDEMONATIVE_SQL. 
DATA: BEGIN OF wa,  
      connid  TYPE SPFLI-connid,
      cityfrom TYPE SPFLI-cityfrom,
      cityto  TYPE SPFLI-cityto,  
      END OF wa. 
	
DATA c1 TYPE SPFLI-carrid VALUE 'LH'. 
EXEC SQL PERFORMING loop_output.
   SELECT connid, cityfrom, cityto  
   INTO :wa  
   FROM SPFLI  
   WHERE carrid = :c1 
ENDEXEC. 

FORM loop_output.  
   WRITE: / wa-connid, wa-cityfrom, wa-cityto. 
ENDFORM.

Đoạn mã trên tạo ra kết quả sau:

0400  FRANKFURT  NEW YORK 
2402  FRANKFURT  BERLIN 
0402  FRANKFURT  NEW YORK