现有列在 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 工作,将代码添加到其中一个字段。

感谢您的宝贵时间。

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 内部事物,要么是代码的不同部分之间存在某种关系,要求我的代码写入该确切字段及其在排序中的确切位置……?