ABAP學習之 【三】

本文详细介绍了ABAP中的数据库操作,包括表字段、外部关键字的技术设定、索引、SELECT语句的使用、数据更新、数据一致性以及文件接口操作。通过多个示例展示了如何进行数据的插入、更新、选择和删除,同时讲解了用户权限检查和数据簇的操作。
摘要由CSDN通过智能技术生成

第六章 數據庫操作

6.2.1表字段

在數據字典中,每創建一個數據庫表后,都將同時生成一個同名的結構化數據類型.

6.2.2外部關鍵字

外部關鍵字內容必須在其對應的約束表(check table)中存在,否則無法插入.

6.2.3技術設定

1.數據類型(data class):

l          APPL0(Master data),較少需要被修改的系統數據表,如員工個人信息.

l          APPL1(Transaction data),需要經常被修改的數據表,如產品庫存量表.

l          APPL2(Organization and customizing),系統定制數據表,在系統安裝后很少需要修改,如國家代碼等.

2.數量級別:

0                0 to        6,600

1            6,600 to       26,000

2           26,000 to      100,000

3          100,000 to      420,000

4          420,000 to   34,000,000

3.緩沖(Buffering)機制

如果在緩沖設定中選擇了Buffering switched on,則需要設定其緩沖類型(Full,Single-recordGeneric三種).

        緩沖機制的意義在於首次查詢時將數據表中的數據放入應用服務器緩沖區,以提高后續查詢效率,注意最好不要對經常需要的數據庫表設置該機制,對于經常讀取但很少更新或者通常只有在60秒后才可能被其他應用服務器程序修改的數據庫表,開啟緩沖機制可以上百倍地提高效率.

        4.Log data changes用于設定表中的數據修改時是否在系統日志中記錄.

6.2.4索引

一個數據庫表可以包含一個主索引(Primary Index)和多個附屬索引(Secondary Indexes).主索引只包含表關鍵字和指向整個數據條目的指針,由系統自動生成並在添加數據庫條目時進行維護.索引中的數據已經排序.

6.3.1SELECT語句

SELECT <result> FROM <source> INTO <target>

        [WHERE <condition>] [GROUP BY <fields>]

        [HAVING <cond>] [ORDER BY <fields>].

l          HAVING子句用于限定ORDER BY子句中數據條目組的選擇條件

1.選擇單行數據:

l          SELECT SINGLE * FROM tab INTO wa_tab WHERE <condition>.選擇單行全部數據.

l          SELECT SINGLE field1 ... fieldn FROM tab INTO (wa_field1,...,wa_fieldn) WHERE <condition>.選擇單行指定字段數據到指定工作區字段.

l          SELECT SINGLE *|field1 ... fieldn FROM tab INTO CORRESPONDING FIELDS OF wa_tab WHERE <condition>.將選擇的值放入工作區中對應的字段中.

6.3.3選擇多行數據

1.循環選擇(DISTINCT去掉結果重復的行):

SELECT [DISTINCT] ... .

    <statement block>

ENDSELET.

系統字段SY-DBCNT給讀取的行計數.

2.選擇至內表:

SELECT ... INTO|APPENDING [CORRESPONDING FIELDS OF] TABLE itab.

其中INTO選項將復蓋itab中的數據,如果不想復蓋只想追加則用APPENDING.

3.指定選擇包大小(一次選擇到內表的行數):

SELECT * FROM tab INTO|APPENDING TABLE wa_tab PACKAGE SIZE n.

    <statement block>

ENDSELET.

6.3.4指定查詢條件

1.比較運算符:=,<,>,<>,<=,>=.

2.範圍限定運算符:WHERE ... f [NOT] BETWEEN g1 AND g2 ....

3.字符比較運算符:WHERE ... f [NOT] LIKE g [ESCAPE h]...其中g中通配符”_”用於替代單個字符,”%”用于替代任意字符串. ESCAPE選項舉例如下:

SELECT ... WHERE city LIKE ‘edit#_%’ ESCAPE ‘#’.選擇所有以”edit_”開始的城市.

4.檢查列表值:WHERE ... f [NOT] IN (g1,...gn)...

5.檢查空值: WHERE ... f IS [NOT] NULL...:這里的NULL值不等同於初始值INITIAL

6.檢查選擇表.

l          WHERE ... f [NOT] IN seltab...其中seltab為選擇表,如選擇屏幕中用戶填充數據.

l          SELECT ... WHERE ( code = ‘01’ OR code = ‘02’ ) AND NOT (country = ‘usa’ ).:AND,OR,NOT可以按照任意順序組合.

l          SELECT ... WHERE <condition> AND (itab).內表itab僅包含一個類型為C的字段,且最大長度為72.字段中內容不能使用變量.這種方式查詢效率很低.

6.3.5多表結合查詢

        1.SELECT語句嵌套

DATA:wa_carrid TYPE spfli-carrid,

   wa_connid TYPE spfli-connid,

   wa_carrname TYPE scarr-carrname.

SELECT carrid connid

  FROM spfli

  INTO (wa_carrid,wa_connid)

  WHERE cityfrom = 'BOSTON'.

  SELECT carrname

    FROM scarr

    INTO wa_carrname

    WHERE carrid = wa_carrid.

    WRITE:/ wa_carrname.

  ENDSELECT.

ENDSELECT.

    2.FOR ALL ENTRIES選項(比上面的嵌套要快)

DATA: BEGIN OF wa_carrid,

        carrid TYPE spfli-carrid,

      END OF wa_carrid.

DATA:wa_carrid_tab LIKE TABLE OF wa_carrid.

DATA:BEGIN OF wa_carrname,

       carrid TYPE scarr-carrid,

       carrname TYPE scarr-carrname,

     END OF wa_carrname.

SELECT carrid

  FROM spfli

  INTO TABLE wa_carrid_tab

  WHERE cityfrom = 'BOSTON'.

SELECT carrid carrname

  FROM scarr

  INTO wa_carrname

  FOR ALL ENTRIES IN wa_carrid_tab相當於循環輸出內表在WHERE子句中出現的

  WHERE carrid = wa_carrid_tab-carrid.字段的值

  WRITE:/ wa_carrname-carrid, wa_carrname-carrname.

ENDSELECT.

:此子句中不能使用LIKE,BETWEEN,IN,ORDER BY.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值