将数据从标准DBtable插入另一个DBTtable

2020-08-20 22:19发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我需要将2个标准表(KNA1和adrc)中的数据插入到ZDBTable中。

zdbtable只有4列(kna1中有3列,adrc中有1列)。

我需要知道推荐的方法。 使用带或不带标题的内部表...

PS:我是ABAP的初学者。

谢谢。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我需要将2个标准表(KNA1和adrc)中的数据插入到ZDBTable中。

zdbtable只有4列(kna1中有3列,adrc中有1列)。

我需要知道推荐的方法。 使用带或不带标题的内部表...

PS:我是ABAP的初学者。

谢谢。

付费偷看设置
发送
10条回答
Cikesha
1楼 · 2020-08-20 23:18.采纳回答

嗨,

您可以使用类似这样的选择(根据自己的需要):

选择c〜kunnr,c〜name1,a〜country
   来自kna1 as c
   INNER JOIN adrc AS a ON a〜addrnumber = c〜adrnr
   插入表@DATA(lt_customer_data)
   从〜=的<〜@ sy-datum
   和a〜date_to> = @ sy-datum。

我不建议将此数据复制到新的z表中,因为您将存储两次数据(并且您可能会遇到 实际数据与z表之间存在差异。

如果要创建单独的z表的唯一原因是易于访问数据,则建议创建数据库视图或 CDS视图(如果有CDS,这是最好的方法。)这样就不必两次存储数据,不必担心差异,并且可以轻松访问所需的数据。 您可以使用上面的选择来创建视图)

如果您打算将数据读入内部表中,那么您就不应再使用标题行,因为这些标题行已经过时了。

最诚挚的问候,

Geert-Jan Klaps

黑丝骑士
2楼-- · 2020-08-20 23:13

标题行已过时(无论如何,您应使用ABAP对象进行编码,在类中不允许标题行)

Haoba3210
3楼-- · 2020-08-20 22:56

亲爱的哈利勒

我假设您的表是Ztclient99,并且我假设您复制记录ba 根据客户代码的选择条件进行选择。

类型:line_type的开头,
           像ztclient99-client这样的客户端,
           像ztclient99-client_id一样的client_id,
           name_last就像ztclient99-name_last一样,
           name_first就像ztclient99-name_first一样,
           类似ztclient99-addrnumber的addrnumber,
         line_type的结尾。

 DATA:ztclient99的it_data类型标准表,
        wa_data类型ztclient99。

 "从s_kunnr的选择屏幕中获取客户范围。

 选择A〜KUNNR AS'CLIENT_ID',A〜NAME1 AS'NAME_LAST',A〜NAME2 AS'NAME_FIRST',B〜ADRNR AS'ADDRNUMBER'
 从KNA1 AS A
 a〜addrnumber = B〜adrnr上的INNER JOIN ADRC AS B
 表IT_DATA的对应字段
 S_KUNNR中的A〜KUNNR。

 "将数据保存在表中
 如果IT_DATA []不是INITIAL。
 从表IT_DATA修改ztclient99。
 万一。
 
 
黑丝骑士
4楼-- · 2020-08-20 23:14

解决方案1:选择并插入。

ABAP 7.50中的解决方案2:INSERT ... FROM(SELECT ...)

樱桃小丸子0093
5楼-- · 2020-08-20 23:18

使用视图。 为什么要复制数据? 您只需要保持最新即可。 视图始终是最新的。

打个大熊猫
6楼-- · 2020-08-20 23:05

如果您的系统不支持内联数据声明,则必须执行以下操作:

类型:开始于 line_type,
   像kna1-kunnr一样
   像kna1-name1这样的name1,
   像adrc-country这样的国家,
 line_type的结尾。

 数据:lt_customer_data类型表line_type。

 选择c〜kunnr c〜name1 a〜country
   来自kna1 as c
   INNER JOIN adrc AS a ON a〜addrnumber = c〜adrnr
   进入表lt_customer_data
   从〜= sy-datum
   和a〜date_to> = sy-datum。
野沐沐
7楼-- · 2020-08-20 23:04

感谢Rossi,您能告诉我这些步骤吗?

一周热门 更多>