现有列在 Select 期间被视为不存在
Existing column considered non-existent during Select
我需要 select knb1 中的一个字段,其中 knb1 中的 kunnr 等于 likp 中的 kunnr,并将其分配给字段 KART_KLIENT1。出于某种原因,我无法转过头来,它说 table knb1 和 likp 都没有专栏 kunnr...他们都有。
我不知道去哪里找问题,knb1 和 likp 都是预定义的数据库 tables 在 SAP 中,默认情况下有 kunnr 列。
我在 SQ02 工作,将代码添加到其中一个字段。
- 如果我将 knb1 和 lipk 添加到 TABLES 部分,则会出现错误,提示它们已被定义。
- 尝试在 DATA 部分(TYPE 或 LIKE)中定义 kunnr 不会改变任何内容。
- 在 SELECT 的 WHERE 部分使用“~”而不是“-”不会改变任何内容。
感谢您的宝贵时间。
TYPES: BEGIN OF ty_knb,
tlfns TYPE knb1,
END OF ty_knb.
DATA: wa_knb TYPE ty_knb.
SELECT SINGLE TLFNS
INTO wa_knb
FROM knb1
WHERE knb1-kunnr = likp-kunnr.
KART_KLIENT1 = wa_knb-tlfns.
TYPES: BEGIN OF ty_knb,
tlfns TYPE knb1,
END OF ty_knb.
这将创建一个具有一个字段的结构类型 tlfns
,但该列的类型不是一个字段,而是实际上 数据库的一整行 table knb1
。或者换句话说,您创建了一个嵌套在结构中的结构,也称为“深层结构”。我怀疑这是你想要做的。在我看来,你 实际上 想要做的是拥有一个名为 tlfns
的字段的结构,该结构与名为 tlfns
的列的类型相同数据库 table knb1
.
那样的话,你会这样写:
tlfns TYPE knb1-tlfns,
关于您的 select 声明,试试这个:
WHERE kunnr = likp-kunnr.
如果 WHERE
条件不明确(例如,当您 JOIN
多个 table 时),您只需在 WHERE
条件中说明 table。但在那种情况下你会这样写:
WHERE knb1~kunnr = likp-kunnr.
(假设 likp
是另一个结构,其字段 kunnr
包含有效的客户编号)。
所以突然间我偶然发现了一个解决方案。在整个查询中,许多字段的代码都放在其中几个字段中,我不得不从一个字段移动到另一个字段......我不确定为什么我的解决方案有效,因为我是 ABAP 的新手,但我的猜测是,它必须与字段的顺序有关。不过,我不确定,就像以前一样,我将整个代码从该字段移动到另一个字段,大部分代码都位于该字段中,以便将所有 table 声明放在一个地方。因此,这要么是我还不知道的 SAP 内部事物,要么是代码的不同部分之间存在某种关系,要求我的代码写入该确切字段及其在排序中的确切位置……?
我需要 select knb1 中的一个字段,其中 knb1 中的 kunnr 等于 likp 中的 kunnr,并将其分配给字段 KART_KLIENT1。出于某种原因,我无法转过头来,它说 table knb1 和 likp 都没有专栏 kunnr...他们都有。
我不知道去哪里找问题,knb1 和 likp 都是预定义的数据库 tables 在 SAP 中,默认情况下有 kunnr 列。
我在 SQ02 工作,将代码添加到其中一个字段。
- 如果我将 knb1 和 lipk 添加到 TABLES 部分,则会出现错误,提示它们已被定义。
- 尝试在 DATA 部分(TYPE 或 LIKE)中定义 kunnr 不会改变任何内容。
- 在 SELECT 的 WHERE 部分使用“~”而不是“-”不会改变任何内容。
感谢您的宝贵时间。
TYPES: BEGIN OF ty_knb,
tlfns TYPE knb1,
END OF ty_knb.
DATA: wa_knb TYPE ty_knb.
SELECT SINGLE TLFNS
INTO wa_knb
FROM knb1
WHERE knb1-kunnr = likp-kunnr.
KART_KLIENT1 = wa_knb-tlfns.
TYPES: BEGIN OF ty_knb,
tlfns TYPE knb1,
END OF ty_knb.
这将创建一个具有一个字段的结构类型 tlfns
,但该列的类型不是一个字段,而是实际上 数据库的一整行 table knb1
。或者换句话说,您创建了一个嵌套在结构中的结构,也称为“深层结构”。我怀疑这是你想要做的。在我看来,你 实际上 想要做的是拥有一个名为 tlfns
的字段的结构,该结构与名为 tlfns
的列的类型相同数据库 table knb1
.
那样的话,你会这样写:
tlfns TYPE knb1-tlfns,
关于您的 select 声明,试试这个:
WHERE kunnr = likp-kunnr.
如果 WHERE
条件不明确(例如,当您 JOIN
多个 table 时),您只需在 WHERE
条件中说明 table。但在那种情况下你会这样写:
WHERE knb1~kunnr = likp-kunnr.
(假设 likp
是另一个结构,其字段 kunnr
包含有效的客户编号)。
所以突然间我偶然发现了一个解决方案。在整个查询中,许多字段的代码都放在其中几个字段中,我不得不从一个字段移动到另一个字段......我不确定为什么我的解决方案有效,因为我是 ABAP 的新手,但我的猜测是,它必须与字段的顺序有关。不过,我不确定,就像以前一样,我将整个代码从该字段移动到另一个字段,大部分代码都位于该字段中,以便将所有 table 声明放在一个地方。因此,这要么是我还不知道的 SAP 内部事物,要么是代码的不同部分之间存在某种关系,要求我的代码写入该确切字段及其在排序中的确切位置……?