SAP ABAP 内表/数据库操作

26 篇文章 1 订阅

INSERT:输入数据【数据库】

ACCEPTING DUPLICATE KEYS.(自动跳过已存在相同KEY值行)

1.把wa中的数据插入到数据库中。
2.每次插入一条记录。
3.Wa中字段的排列一定要和数据库中的字段排列一致。 
INSERT INTO Z表      VALUES wa.: 
INSERT INTO (动态Z表) VALUES wa. 
INSERT  Z表      FROM wa. 
INSERT (动态Z表) FROM wa. 

1.把itab内表中的数据插入到数据库中,也就是插入多条数据。 
2.INSERT  dbtab.:这条语句和上面的from wa相似,但是要在tables语句中声明这个数据库表,相当于dbtab是一个wa 。
INSERT INTO (动态Z表)  VALUES wa. 
INSERT INTO ZMARA VALUES @( AETIM = SY-UZEIT ) ).
INSERT  dbtab      FROM TABLE itab. 
INSERT (dbtabname) FROM TABLE itab. 

TYPES关键字支持通过INDICATORS选项
参考连接:https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm?file=abaptypes_indicators.htm

TYPES wa TYPE sflight WITH INDICATORS ind TYPE abap_bool.
DATA itab TYPE TABLE OF wa WITH EMPTY KEY. 
SELECT carrid, connid, fldate, price 
       FROM sflight 
       WHERE carrid = char`LH` AND 
             connid = numc`0400` AND 
             fldate = @sy-datum 
       INTO CORRESPONDING FIELDS OF TABLE @itab. 
IF sy-subrc  = 0. 
  LOOP AT itab ASSIGNING FIELD-SYMBOL(<wa>). 
    <wa>-price *= '0.8'. 
    <wa>-ind-price = '01'. 
  ENDLOOP. 
  UPDATE sflight FROM TABLE @itab INDICATORS SET STRUCTURE ind. 
ENDIF. 

INSERT:插入数据【内表】

INSERT可以按内表的具体字段向表中插入一行或者多行数据:

INSERT [wa INTO| INITIAL LINE INTO]  itab  [INDEX idx].				 "插入wa到itab的第idx行,itab表已有的第idx行,会往下走一行。
INSERT [wa INTO| INITIAL LINE INTO]  TABLE itab.                     “插入wa到itab表
INSERT LINES OF itab1 [FROM idx] [TO idx2] INTO itab2  [INDEX idx3]. "把 itab1 的从 idx 到 idx2 行 插入到 表itab2 的第idx3行中。  
INSERT LINES OF LT_STB2 FROM 1 TO GV_LINES INTO LT_STB3 INDEX GV_TANXI.

INSERT demo_join1 FROM TABLE @( VALUE #(
      ( a = 'a1' b = 'b1' c = 'c1' d = 'uu' )
      ( a = 'a2' b = 'b2' c = 'c2' d = 'uu' )
      ( a = 'a3' b = 'b3' c = 'c3' d = 'vv' )
      ( a = 'a4' b = 'b4' c = 'c4' d = 'ww' ) ) ).

COLLECT 汇总

TYPES:BEGIN OF TY_DATA,
        ERNAM TYPE MARA-ERNAM,
        NTGEW TYPE MARA-NTGEW,
      END OF TY_DATA.
DATA:GT_ITAB TYPE STANDARD TABLE OF TY_DATA.
SELECT *
  FROM MARA
  INTO TABLE @DATA(GT_DATA).
LOOP AT GT_DATA INTO DATA(GS_SDATA).
  COLLECT CORRESPONDING TY_DATA( GS_SDATA ) INTO GT_ITAB.
ENDLOOP.

DELETE 删除

根据索引删除内表的语法
delete itab [from wa ] [index idx].

使用表关键字来删除内表行可以应用所有类型的表
delete table itab from wa

删除邻近的重复行
sort itab by field1 field2
delete adjacent duplicates from itab [comparing field1 field2].

删除数据库表数据
DELETE <dbtab> [CLIENT SPECIFIED]  FROM <wa>.
DELETE <dbtab> [CLIENT SPECIFIED] FROM TABLE <tab>.
DELETE FROM <dbtab> [CLIENT SPECIFIED]  WHERE com1 = cond.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值