问题标签 [opensql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
55 浏览

abap - 在主记录中没有匹配记录时插入子记录

我创建了两个表ZTR_DEPT(主表)和ZTR_EMP(子表)。

当我通过ABAP程序将一条记录插入到父表中没有匹配记录的子表中时,它只是插入到数据库中而不会报告任何错误。当我将记录手动插入子表时,它确实显示错误。

造成这种差异的原因是什么?

0 投票
0 回答
45 浏览

sql - 查询返回的子查询比我想要的多

我有以下表格(这些表格包含许多记录,但为了这个示例,我仅将内容缩减为我想要操作的记录)。

产品

合同

人们

限制

链接表

这是上述表格的 DDL...

现在...我的任务是为表中的字段选择最新版本的值以获取typelimits中值的最新id版本people。该表link_table决定了最新版本是什么。此数据需要提供字段contract_id, status, product_name

我尝试了以下查询,不幸的是,当我应该只收到一个具有最新值的行时,我收到了两行。

我期望的结果是

然而实际结果是

我已经为此苦苦挣扎了一天多。谁能告诉我我做错了什么?这个例子是用 PostgreSQL 完成的,但真正的问题需要用 ABAP 的 OpenSQL 来解决,所以我不能使用UNION.

这是一些用于填充表的 SQL。

编辑

看起来如果以下记录在table_link

用相同的定义,link_id那么我的查询将完全返回我想要的。

不幸link_id的是,每次生产中都会生成新的,即使version复合键中有一个...看起来我必须找到另一种方法或在链接表中寻找对我有帮助的其他字段。

0 投票
3 回答
4927 浏览

subquery - OpenSQL 中的 WHERE 变量 = ( 子查询 )

我正在尝试从子查询与变量匹配的表中检索行。但是,似乎 WHERE 子句只允许我将所选表的字段与常量、变量或子查询进行比较。

我希望写这样的东西:

但显然这个选择将我的局部变量视为一个字段名,它给了我错误“未知列名“lv_expected_lines”,直到运行时,你不能指定一个字段列表。”

但在标准 SQL 中,这是完全可能的:

那么如何在 RSQL / Open SQL 中复制这个逻辑呢?

如果没有办法,我可能只会编写本机 SQL 并完成它。

0 投票
2 回答
1011 浏览

database - 不同数据库中的不同表名?

对不起一个非常基本的问题,假设您在组织中有一个带有 sap 系统的 oracle 数据库,那么在编写选择查询时,数据库表名称会不同吗?

假设如果从标准 sapvbak表中检索数据,那么实际上数据不会存在这里对吗?由于我使用的是 oracle 数据库,所以销售文档数据将存储在某个 oracle 数据库表中对吗?那么如何vbak仅使用(即 sap 数据库表)编写选择查询?

感谢和问候。

0 投票
2 回答
3731 浏览

abap - 程序中的错误 DBIF_RSQL_INVALID_RSQL CX_SY_OPEN_SQL_DB

我收到以下错误:DBIF_RSQL_INVALID_RSQL CX_SY_OPEN_SQL_DB(Open SQL 命令太大。Open SQL 命令的条件 WHERE 包含太多条件)。错误指向以下行:

代码的其他部分:

我是 ABAP 的新手,不胜感激!

0 投票
1 回答
1230 浏览

join - 两个表的 JOIN 不返回行

我创建了三个表Z588B,我想在函数生成器中使用 SQL 填充它们Z588TZFINALTABLE

首先,我尝试加入这些表,但出现错误

对于池表集群表和投影视图连接是不允许的

所以我创建了临时表来存储来自表的数据T588BT588T这样我就可以使用临时表将它们加入到我需要的输出字段的 ZFINALTABLE 中。

我能够用我需要的数据填充Z588BZ588T 但使用这些临时表的 JOIN 没有返回任何数据。

我的步骤:

  1. Z_BAPI_TESTP_FM使用 SE37创建功能模块

  2. 在导入选项卡中,我定义了参数。

  3. 声明了我使用 se11 创建的临时表

  4. 在源码中输入我的sql查询。

能够为给定的参数加载 Z588B、Z588T 上的数据,但连接的最终 sql 未返回 ZFINALTABLE 表中的数据。

你能告诉为什么最后一个使用 JOIN 的 sql 没有返回 ZFINALTABLE 中的任何数据吗?

0 投票
4 回答
4520 浏览

group-by - 对 SELECT 中的 NUMC 字段求和

我需要按 NUMC 列的总和对表进行分组,不幸的是,ABAP/OpenSQL 似乎无法做到这一点。

我的代码如下所示:

由于我无法更改表格本身,这里最好/最简单的做法是什么?

0 投票
3 回答
3644 浏览

aggregate-functions - 按 FOR ALL ENTRIES itab 键求和总计

我想对具有 6 个关键字段的数据库表执行 SELECT 查询,假设它们是 keyA、keyB、...、keyF。

作为我的 ABAP 功能模块的输入参数,我确实收到了一个内部表,该表具有与关键字段完全相同的结构,因此该内部表中的每个条目对应于数据库表中的一个元组。

因此,我只需要从数据库表中选择与我的内部表中的条目相对应的所有元组。此外,我想在完全相同的查询中聚合该数据库表中的金额列。

在伪 SQL 中,查询如下所示:SELECT SUM(amount) FROM table WHERE (keyA, keyB, keyC, keyD, keyE, keyF) IN {internal table}。

但是,这种表示在 ABAP OpenSQL 中是不可能的。

只允许声明一列(例如 keyA),而不是复合键。此外,我只能在关键字 IN 之后使用“选择表”(带有 SIGN、OPTIOn、LOW、HIGH 的那些)。使用 FOR ALL ENTRIES 似乎是可行的,但是在这种情况下,我不能使用 SUM,因为在同一个查询中不允许聚合。

有什么建议么?

0 投票
2 回答
764 浏览

abap - 如何在 ABAP 的“选择表位置”中指定十进制过滤器?

我需要在 ABAP 中进行这样的查询,但这不起作用。

我试过: WHERE amount = '100,15' 但这也不起作用。

如何在我的 where 语法中指定小数点?

0 投票
2 回答
2140 浏览

abap - 无法 LEFT OUTER JOIN 三个表

我有问题。目前我有三个表,第一个表是主表,如果第二个表没有记录,也写它。但是如果第二个表中存在一条记录,那么从第三个表中显示“dispo”信息..

我想使用三个 SAP 表 - lagp、lqua 和 marc。我的目标是从 lagp 写入所有股票头寸。

2x LEFT JOIN 不起作用:“无法与“B~MATNR”进行比较。一个表最多可以与另一个表连接,使用 LEFT OUTER JOIN。

结构:

和 SQL 命令:

但结果只有一个股票头寸 - http://i.stack.imgur.com/1sEEo.png

你能告诉我,SQL 代码的样子吗?

谢谢