abap 内表的结构体比数据库的结构体少一个client字段,怎么把内表的数据添加到数据库中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了abap 内表的结构体比数据库的结构体少一个client字段,怎么把内表的数据添加到数据库中?相关的知识,希望对你有一定的参考价值。

参考技术A 直接将结构体与数据表关联起来
如自定义数据表为ZMMZTKC1,完全可以直接按以下方法定义:
DATA: it_zt LIKE zmmztkc1 OCCURS 0 WITH HEADER LINE.
把需要的数据写入到内表it_zt当中。
然后LOOP内表,MODIFY到数据表zmmztkc1中即可。
client字段是否指的数据表中的mandt?这个不需赋值的。追问

不是最好不要用modify嘛!如果本来就有一条数据存在了,用modify再去添加相同的数据的时候,他就不添加了呀!

参考技术B 你参考数据库表建一个结构,比如数据库表是 dbtab
data: it_dbtab like table of dbtab.
再把你内表的数据 写到这个内表里,比如内表是it_tab
loop it_Tab.
move-corr it_Tab to it_dbtab.
endloop.

insert dbtab from table it_dbtab.
这样就可以了追问

定义出来的内表他是跟内表的数据结构式一模一样的呀,所以用insert是没有的问题,现在关键是,内表表比数据库的表少一个字段,他的需求是从excel导入数据的,excel里面也没有client那个字段,所以才很纠结~~~

追答

mandt不需要赋值,这个代表端口号,忽略掉就好了。它自己会填默认值的。你就按我说的方法没问题。

本回答被提问者采纳
参考技术C 如果你真滴那么纠结

那你就再定义一个内表B

和数据库的结构一样

move-corresponding (excel导入结构) to b

然后对内表B用insert语法

Extract Dataset

FROM 《SAP PROGRAM DESIGN》

Extract Datasets简称为Extract,是SAP中除了内表之外的另一种大量内存数据处理方式,允许用户动态地存储并排序结构化数据,同时通过循环处理,与内表相比,Extract的数据行数也可以是动态的,但是内表的行结构固定,而Extract的列数目也可变。

  • 每一个ABAP程序,最多只能创建一个未命名的ABAP Extract。

  • Extract的行结构分配语法:

     FEILED-GROUPS fg.
  • 字段组fg的具体结构则通过下述语句在程序中动态生成:

      INSERT f1 f2 ... INTO fg.

    f1,f2是程序中定义的内部全局数据对象,其类型需为扁平结构。

  • 填充Extract的语法格式为:

      EXTRACT fg.

    该语句将定义好的字段组填充给Extract,在同一个Extract中可以个包含多个不同结构的字段组,如果一个字段组被命名为header,则其被十位其他字段组的标题行,并将作为标准排序字段使用

  • Extract可以使用SORT语句进行培训,如果没有在该语句中指定内表,则视为对Extract进行排序:

      SORT.
  • 类似的有LOOP,可以通过该语句逐行获得Extract中字段组,而且可进行控制级处理。

      LOOP.
      <statement block> 
      ENDLOOP.

    注意要和内表区别开来,Extract没有内表名称。

DATA:
      f1 TYPE i,
      f2 TYPE i.

field-GROUPS header.
INSERT f1 f2 INTO header.

DO 10 TIMES.
  f1 = sy-index.
  f2 = sy-index ** 2.
  EXTRACT header.
ENDDO.

SORT DESCENDING.
LOOP.
  WRITE: / f1,f2.
ENDLOOP.

以上是关于abap 内表的结构体比数据库的结构体少一个client字段,怎么把内表的数据添加到数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

ABAP OPEN SQL——内表与内表结构

XML文件与ABAP结构/内表的转换

abap中 内表的问题

abap语法中结构体与内表有啥区别?

abap怎么把一个内表A的全部数据赋值到另外一个内表B

abap怎么把字段类型不一样的一个内表的数据填充到另外一个内表中。