- SAP ABAP 教程
- SAP ABAP - 主页
- SAP ABAP - 概述
- SAP ABAP - 环境
- SAP ABAP - 屏幕导航
- SAP ABAP - 基本语法
- SAP ABAP - 数据类型
- SAP ABAP - 变量
- SAP ABAP - 常量和文字
- SAP ABAP - 操作员
- SAP ABAP - 循环控制
- SAP ABAP - 决策
- SAP ABAP - 字符串
- SAP ABAP - 日期和时间
- SAP ABAP - 格式化数据
- SAP ABAP - 异常处理
- SAP ABAP - 字典
- SAP ABAP - 域
- SAP ABAP - 数据元素
- SAP ABAP - 表
- SAP ABAP - 结构
- SAP ABAP - 视图
- SAP ABAP - 搜索帮助
- SAP ABAP - 锁定对象
- SAP ABAP - 模块化
- SAP ABAP - 子例程
- SAP ABAP - 宏
- SAP ABAP - 功能模块
- SAP ABAP - 包含程序
- SAP ABAP - 开放 SQL 概述
- SAP ABAP - 本机 SQL 概述
- SAP ABAP - 内部表
- SAP ABAP - 创建内部表
- ABAP - 填充内部表
- SAP ABAP - 复制内部表
- SAP ABAP - 读取内部表
- SAP ABAP - 删除内部表
- SAP ABAP - 面向对象
- SAP ABAP - 对象
- SAP ABAP - 类
- SAP ABAP - 继承
- SAP ABAP - 多态性
- SAP ABAP - 封装
- SAP ABAP - 接口
- SAP ABAP - 对象事件
- SAP ABAP - 报表编程
- SAP ABAP - 对话框编程
- SAP ABAP - 智能表单
- SAP ABAP - SAP 脚本
- SAP ABAP - 客户退出
- SAP ABAP - 用户退出
- SAP ABAP - 业务插件
- SAP ABAP - Web Dynpro
- SAP ABAP 有用资源
- SAP ABAP - 问题解答
- SAP ABAP - 快速指南
- SAP ABAP - 有用的资源
- SAP ABAP - 讨论
SAP ABAP - 本机 SQL 概述
术语“Native SQL”是指所有可以静态传输到数据库接口的Native SQL 接口的语句。本机 SQL 语句不属于 ABAP 的语言范围,也不遵循 ABAP 语法。ABAP 仅包含用于隔离程序部分的语句,其中可以列出本机 SQL 语句。
在本机 SQL 中,主要可以使用特定于数据库的 SQL 语句。这些内容原封不动地从本机 SQL 接口传输到数据库系统并执行。可以使用相关数据库的完整 SQL 语言范围,并且不必在 ABAP 字典中声明所寻址的数据库表。还有一小组特定于 SAP 的本机 SQL 语句,由本机 SQL 接口以特定方式处理。
要使用本机 SQL 语句,必须在其前面添加 EXEC SQL 语句并以 ENDEXEC 语句结束。
以下是语法 -
EXEC SQL PERFORMING <form>. <Native SQL statement> ENDEXEC.
这些语句定义了 ABAP 程序中的一个区域,可以在其中列出一个或多个本机 SQL 语句。输入的语句将传递到本机 SQL 接口,然后按如下方式进行处理 -
可以在 EXEC 和 ENDEXEC 之间列出对所寻址的数据库系统的程序接口有效的所有 SQL 语句,特别是 DDL(数据定义语言)语句。
这些 SQL 语句从 Native SQL 接口传递到数据库系统时基本没有变化。语法规则是由数据库系统指定的,特别是数据库对象的区分大小写规则。
如果语法允许各个语句之间使用分隔符,则可以在 EXEC 和 ENDEXEC 之间包含许多本机 SQL 语句。
可以在 EXEC 和 ENDEXEC 之间指定 SAP 特定的本机 SQL 语言元素。这些语句不是直接从 Native SQL 接口传递到数据库,而是进行了适当的转换。
例子
SPFLI 是一个标准 SAP 表,用于存储航班时刻表信息。这在 R/3 SAP 系统中可用,具体取决于版本和发行级别。当您将表名称 SPFLI 输入相关 SAP 事务(例如 SE11 或 SE80)时,您可以查看此信息。您还可以使用这两个事务来查看此数据库表中包含的数据。
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.
上面的代码产生以下输出 -
0400 FRANKFURT NEW YORK 2402 FRANKFURT BERLIN 0402 FRANKFURT NEW YORK