乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Abap 內(nèi)表的語法

       細想生活 2014-12-15

      ABAP中的內(nèi)表相當于其他程序設計語言中的二維數(shù)組,存儲多行結(jié)構(gòu)相同的數(shù)據(jù)
      不同于二維數(shù)組,內(nèi)表在創(chuàng)建后,列結(jié)構(gòu)與列數(shù)是固定不變的,而行數(shù)是動態(tài)增長的
       內(nèi)表支持循環(huán)對每行數(shù)據(jù)進行操作,也支持整體操作
       內(nèi)表是具有行和列的表結(jié)構(gòu),然而,不同于數(shù)據(jù)庫表,內(nèi)表僅在程序運行期間在內(nèi)存中存儲數(shù)據(jù)
      ABAP中有三種內(nèi)表類型:標準表,哈希表,排序表

      - ABAP內(nèi)表數(shù)據(jù)類型
       內(nèi)表數(shù)據(jù)對象是實際的內(nèi)表,可以用數(shù)據(jù)進行填充
       內(nèi)表數(shù)據(jù)類型是用于定義內(nèi)表數(shù)據(jù)對象的抽象數(shù)據(jù)類型(ADT)
       

      可以使用的內(nèi)表數(shù)據(jù)類型有:
       Structure
       數(shù)據(jù)庫表

       用戶自定義數(shù)據(jù)類型

      -ABAP內(nèi)表聲明

      1>

      TYPES: BEGIN OF line,

             field1 TYPE i,

             field2 TYPE i,

             END OF line.

      * 聲明一個數(shù)據(jù)類型

      DATA: ITAB_WA TYPE(LIKE) line.    “ 聲明一個內(nèi)表工作區(qū)

      DATA: ITAB TYPE(LIKE) line OCCURS 0.  “ 聲明一個無工作區(qū)的內(nèi)表

      DATA: ITAB TYPE(LIKE) STANDARD TABLE OF line INITIAL SIZE 0.   “ 聲明一個有工作區(qū)的內(nèi)表

      DATA: ITAB TYPE(LIKE) line OCCURS 0 WITH HEADER LINE.

      DATA: ITAB TYPE(LIKE) STANDARD TABLE OF line INITIAL SIZE 0 WITH HEADER LINE.

      2>

      DATA:  BEGIN OF line,

             field1 TYPE i,

             field2 TYPE i,

             END OF line.

      * 聲明一個line對象,該對象可以作為工作區(qū)使用

      * 用DATA定義的line本身也是一個結(jié)構(gòu)類型,也可再聲明一個工作區(qū)

      DATA: ITAB_WA TYPE(LIKE) line.   “ 聲明一個工作區(qū)

      DATA: ITAB TYPE(LIKE) line OCCURS 0 WITH HEADER LINE.  “ 聲明一個帶工作區(qū)的內(nèi)表

      DATA: ITAB TYPE(LIKE) STANDARD TABLE OF line INITIAL SIZE 0 WITH HEADER LINE . “ 聲明一個帶工作區(qū)的內(nèi)表

      3> 直接定義內(nèi)表,這個內(nèi)表是有工作區(qū)的

      DATA: BEGIN OF ITAB OCCURS 0 ,

            CARR1 LIKE SPFLI-CARRID,

            CONN1 LIKE SPFLI-CONNID,

            END OF ITAB.

      * DATA: ITAB1 TYPE ITAB.(錯誤的,實踐證明,定義出來的什么都不是)。

      正確方法:ITAB1 TYPE ITAB OCCURS 0.(這樣定義后的是一個無工作區(qū)的內(nèi)表)。

      DATA: ITAB1 LIKE ITAB OCCURS 0 WITH HEADER LINE.  “定義一個帶工作區(qū)內(nèi)表

      4> type ref to 定義內(nèi)表

      type ref to 屬于ABAP中面向?qū)ο蟮木幊?。它是定義一個類的對象。

       

      5>通過數(shù)據(jù)庫表定義

      data itab1 type table of sflight . “ 定義一個不帶內(nèi)表的工作區(qū)

      data wa1 like line of sflgit  .    “ 定義一個內(nèi)表工作區(qū)

      data itab1 type table of sflight with header line . “定義一個帶內(nèi)表的工作區(qū)

      兩種內(nèi)表定義方式的主要區(qū)別在于是否有隱式表頭行

      內(nèi)表是按行進行訪問的,然而,程序?qū)?nèi)表的行操作不能直接進行,必須使用一種接口來傳輸,這個接口就是工作區(qū)(Work Area)
       

      --內(nèi)表操作

      填充內(nèi)表行
      append <wa> to <itab>   “ 不帶表頭行的填充
      append <itab>                “ 帶隱式表頭行的填充

      插入內(nèi)表行
      insert <wa> into <itab> [INDEX idx]    “
      insert <itab> [INDEX idx ]                   “ 隱式表頭行插入內(nèi)表
      -- 如果沒有指定INDEX ,則默認插入到內(nèi)表最后一行

      讀取內(nèi)表行
      read <itab> into <wa> [INDEX idx] 
      read <itab> [INDEX IDX] 

      修改內(nèi)表行
      modify <itab> from <wa> [INDEX idx]
      modify <itab> [INDEX idx]
      -- read itab index 3 .
      -- itab-XX = ‘xxx’ .
      -- modify itab index 4 .

      刪除內(nèi)表行
      delete <itab> [INDEX idx] .
      -- 帶表頭行和不帶表頭行語法一致 。

      內(nèi)表循環(huán)
      Loop at <itab> into <wa> .
         <statement block>
      endloop.                                     “ 帶表頭行的內(nèi)表循環(huán)操作

      Loop at <itab> .
        <statement block>
      endloop.                                     “ 不帶表頭行內(nèi)表操作

      -- 循環(huán)體的MODIFY,DELETE等語句不必指定INDEX項,系統(tǒng)默認處理當前行 .
      -- 如果不需要讀取所有的內(nèi)表行,可以使用WHERE選項進行限制
      -- LOOP AT <itab> [WHERE <conditions>]

      清空內(nèi)表
      clear <itab> . “清空不帶表頭行內(nèi)表

      clear<itab>[] . “清空帶表頭行內(nèi)表

      內(nèi)表排序
      SORT <itab> [ASCENDING | DESCENDING] [AS TEXT]
      --ASCENDING和DESCENDING指定升序還是降序排列,如果不指定,缺省排序方式是升序
      --AS TEXT影響字符字段的排序方式,如果不使用該選項,系統(tǒng)將按字符平臺相應內(nèi)部編碼進行排序,否則,系統(tǒng)根據(jù)當前語言按字母順序排序字符字段

      刪除重復行
      DELETE ADJACENT DUPLICATES FROM <itab> [COMPARING <comp>].
      -- 刪除重復行之前須對內(nèi)表進行排序

      判斷內(nèi)表行數(shù)
      DESCRIBE TALBE <itab> LINES <count>.

      將內(nèi)表中部分或全部的數(shù)據(jù)行整體插入另一內(nèi)表
      INSERT LINES OF <itab1> [FROM n1] [TO n2] INTO [TABLE] <itab2> [INDEX <idx>].
      -- insert lines of itab1 from 1 to 100 into itab2 . “ 將內(nèi)表1前100行數(shù)據(jù)附加到內(nèi)表2 .
      -- 兩個內(nèi)表必須具有相同的或可轉(zhuǎn)換的行結(jié)構(gòu)

      將內(nèi)表中部分或全部的數(shù)據(jù)行整體填充到另一內(nèi)表
      APPEND LINES OF <itab1> [FROM n1] [TO n2] TO <itab2>.

      按照條件或者索引刪除一組選定行
      DELETE <itab> [FROM n1] [TO n2] [WHERE <condition>].
      -- delete itab1 from 1 to 100 where age >30 . "刪除內(nèi)表前100行中年齡大于30 的記錄 。

      整體復制內(nèi)表,目標內(nèi)表原有內(nèi)容被覆蓋
      MOVE <itab1> TO <itab2>                            不帶表頭行的內(nèi)表之間進行復制
      MOVE <itab1>[] TO <itab2>[].                      帶表頭行的內(nèi)表之間進行復制
      MOVE <itab1> TO <itab2>[].                        不帶表頭行的內(nèi)表復制到帶表頭行的內(nèi)表
      MOVE-CORRESPONDING <itab1> TO <itab2> 復制內(nèi)表1中與內(nèi)表2具有相同結(jié)構(gòu)的字段進行復制,同樣適用于工作區(qū)

       

       

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多