`

内表相关

    博客分类:
  • ABAP
阅读更多

                  一. Internal Table 的宣告
                  ABAP/4中的Internal Table是一种Data
                  Structure,类似于其它语言中的STRUTURE,它可以由几个不同类型的字段(field)组成,用来表示具有不同属性的某一事物,单独一笔数据表示某个事物,多笔数据表示具有相同属性的多个事物.例如:
                  为了存取或记录某班的同学资料,我们创建如下的internal table:
                  DATA: BEGIN OF STUDENT OCCURS 20,
                               STD_ID   TYPE N,
                               NAME(10) TYPE C,
                               AGE      TYPE I,
                               BIRTH    TYPE D,
                               SCORE    TYPE P DECIMALS 2,
                        END OF STUDENT.
                  此时我们已经创建了名叫STUDENT的internal
                  table,并且为它预先申请了能够存放20笔资料的Buffer(当然,如果存取资料不止20笔,程序执行时,会自动申请系统Buffer)
                  Internal table 的定义有以下几种格式:
                  格式一.   DATA: BEGIN OF <internal table>  OCCURS  <n>,
                                     <field 1>  TYPE <type1>,
                                    [<field 2>  TYPE <type 2>,
                                     <field 3>  TYPE <type 3>,
                                      …                  ]
                                  END OF  <internal table>.
                  格式二.   TYPES: BEGIN OF <work area>,
                                       <field 1>  TYPE <type1>,
                                      [<field 2>  TYPE <type 2>,
                                       <field 3>  TYPE <type 3>,
                                      …                  ]
                                   END OF <work area>.
                            TYPES <internal table> TYPE <work area> OCCURS <n>.
                  格式三.    DATA: BEGIN OF <work area>.
                                         INCLUDE STRUCTURE <table name>.
                            DATA: END OF <work area>.
                            DATA: <internal table> LIKE <work area> OCCURS <n>.

                  二. APPEND LINE
                  格式: APPEND [<work area>  TO ] <internal table>.
                  举例一. (使用work area)
                  DATA: BEGIN OF LINE,
                               COL1 TYPE I,
                               COL2 TYPE I,
                        END OF LINE.
                  DATA  ITAB LIKE LINE OCCURS 10.
                  DO 2 TIMES.
                       LINE-COL1 = SY-INDEX.
                       LINE-COL2 = SY-INDEX ** 2.
                       APPEND LINE TO ITAB.
                  ENDDO.
                  LOOP AT ITAB INTO LINE.
                        WRITE: / LINE-COL1, LINE-COL2.
                  ENDLOOP.
                  执行结果为:
                  1 1
                  2 4
                  举例二. (不使用work area)
                          DATA: BEGIN OF ITAB OCCURS 10,
                                       COL1 TYPE I,
                                       COL2 TYPE I,
                                END OF ITAB.
                          DO 2 TIMES.
                              ITAB-COL1 = SY-INDEX.
                              ITAB-COL2 = SY-INDEX ** 2.
                              APPEND ITAB.
                          ENDDO.
                          LOOP AT ITAB.
                              WRITE: / ITAB-COL1, ITAB-COL2.
                          ENDLOOP.
                          执行结果与举例一相同.
                  举例三. (加入另一个Internal table的元素)
                         格式: APPEND LINES OF <itab1> [FROM <n1> ] [TO <n2>] TO
                  <itab2>.
                         将<itab1>的元素加入至<itab2>中,可选取自<n1>至<n2>的范围.
                         APPEND LINES OF ITAB TO JTAB.

                  三. COLLECT LINE
                  COLLECT 指令也是将元素加入Internal table中,与APPEND 的区别是:
                  COLLECT指令在非数值字段相同的情况下,将数值字段汇总.
                  格式:  COLLECT [<work area> INTO ] <itab>
                  DATA: BEGIN OF ITAB OCCURS 3,
                               COL1(3)  TYPE C,
                               COL2     TYPE I,
                         END OF ITAB.
                         ITAB-COL1 = ‘ABC’.    ITAB-COL2 = 10.
                         COLLECT  ITAB.
                         ITAB-COL1 = ‘XYZ’.    ITAB-COL2 = 20.
                         COLLECT  ITAB.
                         ITAB-COL1 = ‘ABC’.    ITAB-COL2 = 80.
                         COLLECT  ITAB.
                  此时, internal table中放的是2笔数据, 分别为:
                         ITAB-COL1        ITAB-COL2
                          ‘ABC’               90
                          ‘XYZ’               20

                  四. INSERT LINE
                  将元素插入在指定的internal table位置之前.
                  格式: INSERT [<wa> INTO] [INITIAL LINE INTO ] <itab> [INDEX
                  <idx>]
                  或者: INSERT LINES OF <itab1> [FROM <n1> TO <n2>] INTO <itab2>
                  INDEX <idx>
                  其中: <wa>即work area,工作区中的元素.
                  [INITIAL LINE INTO] :插入一笔初始化的记录.
                  <itab>: internal table
                  [INDEX <idx>]: internal table 的记录号.(新加入的元素放在此记录前面)

                  五. 读取internal table
                  格式一:
                  LOOP AT <itab> [INTO <wa>][FROM <n1> TO <n2>][WHERE
                  <conditions>]
                         <statement>
                  ENDLOOP.
                  格式二:
                  READ TABLE <itab> [INTO <wa>] [INDEX <idx> / WITH KEY
                  <conditions>]
                  举例. (格式二)
                  DATA: BEGIN OF ITAB OCCURS 10,
                               COL1 TYPE I,
                               COL2 TYPE I,
                        END OF ITAB.
                        DO 10 TIMES.
                            ITAB-COL1 = SY-INDEX.
                            ITAB-COL2 = SY-INDEX * 2.
                            APPEND ITAB.
                  ENDDO.
                  READ TABLE ITAB INDEX 3.
                  (或者: READ TABLE  ITAB WITH KEY COL1 = 3.)
                  WRITE: / ‘ITAB-COL1 = ‘, ITAB-COL1, ‘ITAB-COL2 = ‘, ITAB-COL2.
                  执行结果同样是:
                  ITAB-COL1 =      3
                  ITAB-COL2 =      6.

                  六. 修改internal table 中的值
                  格式: MODIFY <itab> [FROM <wa>][INDEX <idx>][TRANSPORTING
                  <f1><f2>…][WHERE <conditions>]
                  举例一. READ TABLE ITAB INDEX 3.
                         LINE-COL1 = 29.
                         MODIFY ITAB FROM LINE TRANSPORTING COL1.
                         将第三笔记录的COL1字段的值修改为29.
                  举例二. T_SALARY – salary = 50.
                         MODIFY T_SALARY TRANSPORTING salary WHERE birthday =
                  ‘1999/12/06’.

                  七. DELETE internal table中的字段
                  格式: DELETE <itab> INDEX <idx>.
                  或:   DELETE <itab>[FROM <n1> TO <n2>] [WHERE <conditions>]

                  八. Internal table 排序 
                  SORT <itab> [<order way>][BY <f1><f2>…]
                  其中:<order way> 有DESCENDING 和ASCENDING, Default 为ASCENDING.
                       <f1>: 为指定排序的字段.

                  九. 加总
                  SUM.
                  总和计算存放与work area中,但只能在LOOP 中使用.
                  例: LOOP AT ITAB INTO LINE.
                           SUM.
                     ENDLOOP.
                     WRITE: / LINE-COL1, LINE-COL2.

                  十. 初始化internal table
                  REFRESH <itab>.  清空<itab>中的值.
                  CLEAR   <itab>.  清空<itab>的Header Line.
                  FREE     <itab>.  释放记忆体空间.
分享到:
评论

相关推荐

    ISO9001-2015内审检查表(过程方法).pdf

    本文将详细介绍ISO9001-2015内审检查表的相关知识点,从标题、描述、标签和部分内容进行解析。 首先,从标题“ISO9001-2015内审检查表(过程方法)”可以看出,本文关注的是ISO9001-2015标准中的内审检查表,特别是...

    内六角螺栓尺寸表

    内六角螺栓是一种常见的紧固件,广泛应用于各种...总之,内六角螺栓的尺寸表是工程设计和生产过程中的重要依据,它涉及到螺栓的尺寸、性能和适用范围,确保了螺栓与其他部件的正确配合,从而保证设备的可靠性和安全性。

    苹果内购(iap)价格表-人民币.pdf

    在IT行业中,苹果内购(IAP, In-App Purchase)是一种常见的应用内销售机制,允许用户在应用内直接购买虚拟商品或服务。苹果公司为其应用商店...同时,开发者在使用这个价格表时也需要遵循苹果的相关政策和指导原则。

    ISO9001-2015内部审核检查表(完整记录的ISO9001内审检查表).pdf

    ISO 9001-2015 内部审核检查表知识点 ISO 9001-2015 标准是国际标准化组织(ISO)发布的一项质量管理体系标准,旨在帮助组织建立和实施有效的质量管理体系,以提高产品和服务的质量,增强顾客满意,并促进组织的可...

    ISO13485内审检查表.pdf

    ISO 13485 内审检查表.pdf ISO 13485 是一种国际标准,用于医疗器械行业的质量管理体系。该标准规定了医疗器械制造商和供应商应遵守的质量管理要求,以确保医疗器械的安全性、有效性和可靠性。 根据 ISO 13485 的...

    收集很全的SAP相关内表(各横块)

    比较全的SAP内表收集,中英文对照。对ABAP开发者是一个很好的工具。

    内校记录表.doc

    内校记录表.doc 内校记录表是质量管理的重要工具,用于记录和追踪设备的校准信息。下面是关于内校记录表的详细知识点: 标题解释 “内校记录表.doc”是指设备校准记录表的文档名称,用于记录设备的校准信息。 ...

    二年级数学上册6表内乘法和表内除法二6.8练习十三教学反思素材苏教版

    在二年级数学上册的教学中,6表内乘法和表内除法是重要的基础知识,对于学生的数学思维发展起着至关重要的作用。6.8练习十三作为教学的一部分,旨在通过系统的练习和反思,帮助学生巩固9的乘法口诀,并能熟练应用于...

    卷内备考表.doc

    备注与说明部分则为卷内备考表增加了灵活性,记录了卷宗中未涵盖的其他信息,比如特殊处理要求、变动历史或相关背景等。这些额外信息有助于更全面地理解档案内容,为今后的查询和使用提供了上下文。 在IT行业,卷内...

    CNAS与CMA二合一《内审检查表》模板.doc

    "二合一"的内审检查表模板将这两个认证体系的评审要求结合在一起,帮助检验检测机构在内部审核过程中全面满足两个认证的要求。 内审检查表的核心内容主要涵盖以下几个方面: 1. **组织的法律地位**:机构需具备...

    ISO9001-2015生产部内审检查表.pdf

    本文件"ISO9001-2015生产部内审检查表.pdf"很可能是一份用于审核生产部门是否符合ISO 9001:2015标准要求的检查表。它强调了在生产部内进行自我检查和自我评估的重要性,以确保生产过程的合规性和持续改进。 在ISO...

    内审计划表内审计划表内审计划表

    内审计划表是企业质量管理体系运行中的重要工具,主要用于确保企业的各项活动符合GB/T9001-2008标准和其他相关法律法规的要求。通过内部审核,企业可以评估自身质量管理体系的有效性,发现并改进存在的问题,为申请...

    标准职业健康安全内审检查表.pdf

    然而,根据提供的标题“标准职业健康安全内审检查表.pdf”,我们可以推测文档可能与职业健康安全管理体系审核有关。以下是基于此推测的相关知识点: 1. 职业健康安全管理体系(OHSMS)的基本概念 职业健康安全管理...

    内审检查表(表格模板、DOC格式).doc

    3. 遵循法规与最佳实践:检查表通常基于行业标准、法律法规或内部政策,确保组织遵循相关规定。 4. 促进沟通:通过记录和评估,检查表可作为审计员与受审部门之间的沟通桥梁,提高审计透明度。 二、内审检查表的...

    CMA实验室内审检查表(按部门).docx

    【CMA实验室内审检查表】是对检验检测机构进行内部质量控制的重要工具,旨在确保实验室按照相关标准和法规运行,保证检验检测数据的准确性和公正性。以下将详细阐述涉及的几个关键知识点: 1. **法律地位**: - ...

    ISO 内审检查表范本

    在给定的文件中,我们看到一个具体的内审检查表实例,涉及了多个ISO标准条款,主要包括ISO 9001的相关内容。以下是详细解释: 1. **标准条款4.1总要求**:审核组织是否按照ISO标准建立了、实施了、保持了和改进了...

    ISO22000:2018内审检查表(覆盖各部门).pdf

    内审检查表的目的是检查组织是否按照ISO22000:2018标准执行了上述要求,包括文件化信息的完整性、员工对食品安全方针的理解、管理评审的频率和深度,以及风险和机遇的管理。通过这种全面的审核,可以确保组织的食品...

    ISO20000-2018信息安全管理体系内部审核检查表.doc

    内部审核检查表是评估组织是否遵循ISO20000-2018标准的关键工具,它通过检查各个关键领域的符合性来确保ISMS的有效性。 在描述中提到的审核涉及了多个条款,以下是对这些条款的详细解释: 1. **4.1 和 4.2 总要求*...

    质量、环境、职业健康安全管理体系内审检查表2.doc

    质量、环境、职业健康安全管理体系内审检查表是企业内部评估其管理体系运行有效性的关键工具。这份检查表涉及了质量、环境以及职业健康安全多个维度,确保企业的各项活动符合相关标准,如ISO 9001(质量管理)、ISO ...

Global site tag (gtag.js) - Google Analytics