池表、集群表和投影视图不允许 JOIN:‘BSEG’
JOIN is not allowed for pool tables, cluster tables, and projection views: ‘BSEG’
我正在尝试 select 通过使用 tables BSEG 和 KNBK 的内部连接将 table BKPF 的某些字段转换为另一个 table。代码如下:
SELECT k~bukrs, k~belnr, k~budat, k~gjahr, s~buzei,
s~kunnr, i~banks, i~bankl, i~bankn
FROM bkpf AS k
INNER JOIN bseg AS s "Error
ON s~bukrs = k~bukrs AND
s~belnr = k~belnr AND
s~gjahr = k~gjahr
INNER JOIN knbk AS i
ON i~kunnr = s~kunnr
INTO TABLE @DATA(lt_data_knbk)
WHERE k~bukrs IN @so_bukrs
AND k~budat IN @so_budat
AND k~blart IN @so_blart.
最后三个where条件是select选项。我从激活程序中得到的错误来自粗体行,错误消息是:JOIN is not allowed for pool tables, cluster tables, and projection views: 'BSEG'。
有谁知道,我该如何解决这个问题?
预先感谢您的帮助!
您可以在基于 Hana 的系统上连接不同类型的表。但是你不能对旧系统这样做。您需要使用多个单独的查询并填充所需的值。
BSEG 是一个集群 table,它不能包含在 JOIN 中(如果您不使用 HANA DB,但错误消息说它没有)。为了克服这个问题,必须在单独的步骤中选择 table。在您的情况下,这实际上意味着三个单独的 SELECT,因为 BKPF 不能与 KNBK 连接(没有公共字段)。
所以在这种情况下,最好使用透明的 tables 用于客户发布(BSID 和 BSAD),这些可以包含在 JOIN 中。唯一的缺点是,帖子是分开的:
BSID:客户打开的帖子
BSAD:客户清除过帐
因此需要两个单独的 SELECT(取决于具体需要,但这在原始问题中已说明)。
在这种情况下,您可以忘记 BKPF,因为您在代码中实际使用的所有字段都在 BSID/BSAD.
中
SELECT bsid~bukrs, bsid~belnr, bsid~budat, bsid~gjahr, bsid~buzei,
bsid~kunnr, knbk~banks, knbk~bankl, knbk~bankn
FROM bsid
INNER JOIN knbk
ON bsid~kunnr EQ knbk~kunnr
INTO TABLE @DATA(lt_bsid_knbk)
WHERE bsid~bukrs IN @s_bukrs
AND bsid~budat IN @s_budat
AND bsid~blart IN @s_blart.
由于提示必须重复,BSID 必须替换为 BSAD。
我正在尝试 select 通过使用 tables BSEG 和 KNBK 的内部连接将 table BKPF 的某些字段转换为另一个 table。代码如下:
SELECT k~bukrs, k~belnr, k~budat, k~gjahr, s~buzei,
s~kunnr, i~banks, i~bankl, i~bankn
FROM bkpf AS k
INNER JOIN bseg AS s "Error
ON s~bukrs = k~bukrs AND
s~belnr = k~belnr AND
s~gjahr = k~gjahr
INNER JOIN knbk AS i
ON i~kunnr = s~kunnr
INTO TABLE @DATA(lt_data_knbk)
WHERE k~bukrs IN @so_bukrs
AND k~budat IN @so_budat
AND k~blart IN @so_blart.
最后三个where条件是select选项。我从激活程序中得到的错误来自粗体行,错误消息是:JOIN is not allowed for pool tables, cluster tables, and projection views: 'BSEG'。
有谁知道,我该如何解决这个问题?
预先感谢您的帮助!
您可以在基于 Hana 的系统上连接不同类型的表。但是你不能对旧系统这样做。您需要使用多个单独的查询并填充所需的值。
BSEG 是一个集群 table,它不能包含在 JOIN 中(如果您不使用 HANA DB,但错误消息说它没有)。为了克服这个问题,必须在单独的步骤中选择 table。在您的情况下,这实际上意味着三个单独的 SELECT,因为 BKPF 不能与 KNBK 连接(没有公共字段)。
所以在这种情况下,最好使用透明的 tables 用于客户发布(BSID 和 BSAD),这些可以包含在 JOIN 中。唯一的缺点是,帖子是分开的: BSID:客户打开的帖子 BSAD:客户清除过帐 因此需要两个单独的 SELECT(取决于具体需要,但这在原始问题中已说明)。
在这种情况下,您可以忘记 BKPF,因为您在代码中实际使用的所有字段都在 BSID/BSAD.
中SELECT bsid~bukrs, bsid~belnr, bsid~budat, bsid~gjahr, bsid~buzei,
bsid~kunnr, knbk~banks, knbk~bankl, knbk~bankn
FROM bsid
INNER JOIN knbk
ON bsid~kunnr EQ knbk~kunnr
INTO TABLE @DATA(lt_bsid_knbk)
WHERE bsid~bukrs IN @s_bukrs
AND bsid~budat IN @s_budat
AND bsid~blart IN @s_blart.
由于提示必须重复,BSID 必须替换为 BSAD。