日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP ABAP 内表使用

發布時間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP ABAP 内表使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


  • SAP里面主要有三處類型的內表:standard table,sorted table,hashed table
  • 定義語法:TYPES|DATA itab {TYPE|LIKE} tabkind OF {linetype|lineobj} [WITH KEY] [INITIAL SIZE n].
  • standard table,sorted table可以通過索引和關鍵字進行訪問,hashed table只能通過關鍵字進行訪問
  • standard table在增加或插入數據行時并不對數據行的特理地址進行重新排序存儲,只是對其索引進行重表排列。sorted table在增加和插入數據行時要對數據存儲的物理地址進行重新排列。
  • hashed table在檢索數據里與數據行數無關,時間復雜度通常是o(1)的時間
  • SAP里內表的層次結構如下:
  • any table
    index table??????????hashed table
    standard table????sorted table
  • any table和index table是抽象接口類型,不能用于定義具體的數據對象
  • 舉例:
    DATA: BEGIN OF line,
    ??????? num TYPE i,
    ??????? sqr TYPE i,
    ????? END OF line,
    ????? itab?LIKE?STANDARD TABLE OF line WITH KEY table_line.
    DO 5 TIMES.
    ? line-num = sy-index.
    ? line-sqr = sy-index ** 2.
    ? APPEND line TO itab.
    ENDDO.
    LOOP AT itab INTO line.
    ? WRITE: / line-num,line-sqr.
    ENDLOOP.
    注:特別要注意的定義內表的使用的關鍵字LIKE。通過對象來定義內表要使用關鍵字LIKE。在黃佳的書上是有誤的。
  • 在聲明內表關鍵字時TABLE LINE已經廢棄不用,而是使用TABLE_LINE代替。TABLE_LINE表示使用內表行作為表關鍵字。例如:
    In ABAP Objects, the following statement causes an error message:?

    ... TABLE LINE ...?

    Correct syntax:?

    ... table_line ...?

    Cause:?

    The pseudo-component table_line replaces the TABLE LINE constuction.?
  • 因為TABLE_LINE極象一個行字段,所以內表基于的行結構體不應該包含TABLE_LINE字段。
  • 內表可以通過WITH [UNIQUE|NON-UNIQUE] KEY COMP1...COMPn,WITH [UNIQUE|NON-UNIQUE] KEY TABLE_LINE,WITH [UNIQUE|NON-UNIQUE] DEFAULT KEY定義表關鍵字。
  • 在內表中如果不指定任何表關鍵字則使用DEFAULT KEY。扁平結構內表的默認表關鍵字是非數字和非內表的的組件字段。如果內表行是單個基本類型組成,由默認關鍵字為整個行。如果內表行中包含內表類型字段,則沒有默認關鍵字。
  • 如果內表行由結構體類型組成,則最好不要使用TABLE_LINE作為表關鍵字。
  • 標準表不能使用UNIQUE表關鍵字,且無需特別指定NON-UNIQUE表關鍵字;排序表可以使用NON-UNIQUE或者UNIQUE表關鍵字,哈希表不能使用NON-UNIQUE表關鍵字,且必須指定UNIQUE表關鍵字。
  • 在定義內表時使用WITH HEADER LINE選項表示定義內表時也定義同名的工作內。如果在使用的過程中不能明確的分辯出是使用內表或是工作區,那么在名稱之后加"[]"表示明確的使用內表。如下:
    TYPES: BEGIN OF address,
    ??????? street(20) TYPE c,
    ??????? city(20) TYPE c,
    ?????? END OF address.
    DATA: BEGIN OF company,
    ??????? name(20) TYPE c,
    ??????? addresses TYPE address,
    ????? END OF company.
    DATA: itab_company LIKE STANDARD TABLE OF company WITH NON-UNIQUE KEY
    name.
    DATA: wa LIKE company.
    wa-name = 'china'.
    wa-addresses-street = 'aaa'.
    wa-addresses-city = 'shanghai'.
    APPEND wa TO itab_company.
    LOOP AT itab_company? INTO wa.
    ? WRITE: / sy-tabix,wa-name,wa-addresses-street,wa-addresses-city.
    ENDLOOP.
    wa-name = 'america'.
    wa-addresses-street = 'ccc'.
    wa-addresses-city = 'new york'.
    INSERT wa INTO itab_company INDEX 1.
    LOOP AT itab_company? INTO wa .
    ? WRITE: / sy-tabix,wa-name,wa-addresses-street,wa-addresses-city.
    ENDLOOP.
    wa-name = 'america'.
    wa-addresses-street = 'DDD'.
    wa-addresses-city = 'new york'.
    MODIFY itab_company[]?INDEX 1 FROM wa.
    WRITE: / '...............................'.
    LOOP AT itab_company? INTO wa .
    ? WRITE: / sy-tabix,wa-name,wa-addresses-street,wa-addresses-city.
    ENDLOOP.
  • 通常為了不至于引起混淆,建議定義與內表結構相同的工作區進行內表操作。
  • 總結

    以上是生活随笔為你收集整理的SAP ABAP 内表使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。