0

我需要从 knb1 中选择一个字段,其中 knb1 中的 kunnr 等于 likp 中的 kunnr 并将其分配给字段 KART_KLIENT1。出于某种原因,我无法扭曲我的头,它说 table knb1 和 likp 都没有列 kunnr ......他们两个都有。

我不知道在哪里寻找问题,knb1 和 likp 都是 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.
4

2 回答 2

2
TYPES: BEGIN OF ty_knb,
  tlfns TYPE knb1,
END OF ty_knb.

这将创建一个具有一个字段的结构类型tlfns,但该列的类型不是一个字段,而是实际上是数据库表的一整行knb1。或者换句话说,您创建一个嵌套在结构中的结构,也称为“深层结构”。我怀疑这是你想要做的。在我看来,您实际上想要做的是拥有一个结构,其中的字段名称与数据库表中tlfns的列名称相同。tlfnsknb1

在这种情况下,你会这样写:

tlfns TYPE knb1-tlfns,

关于您的选择语句,试试这个:

WHERE kunnr = likp-kunnr.

WHERE如果表格不明确(例如,当您有JOIN多个表格时),您只需要在条件中声明表格。但在这种情况下,你会这样写:

WHERE knb1~kunnr = likp-kunnr.

(假设likp是另一个结构,其字段kunnr包含有效的客户编号)。

于 2021-07-19T12:07:03.377 回答
0

所以突然间,我偶然发现了一个解决方案。在整个查询中,许多字段的代码都放在其中的几个字段中,我不得不从一个移到另一个......我不确定为什么我的解决方案确实有效,因为我是 ABAP 的新手,但我的猜测是,它必须与字段的顺序有关。不过,我不确定,就像以前一样,我将整个代码从该字段移动到另一个字段,大部分代码都位于该字段中,以便将所有表声明放在一个位置。所以它要么是我还不知道的 SAP 内部的东西,要么是代码的不同部分之间存在某种关系,要求我的代码写在那个确切的字段中,并且它在排序中的确切位置......?

于 2021-07-23T06:10:52.497 回答