`
qnsong1984
  • 浏览: 17462 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SAP

    博客分类:
  • Sap
阅读更多
SAP 内表2008-11-27 22:531.内表的声明
Internal Table 的宣告
    ABAP/4的 Internal Table 如同其它语言的数组结构, 在操作上可以有复制,删除,新增插入等功 
    能.
    1.使用 TYPE 叙述
   语法:
         TYPES   <t>   <type>   OCCURS   <n>
         宣告一个数组 <t>, 型态为 <type>, 长度为 <n>
         Example:
                  TYPES   A   TYPE   I   OCCURS   10.
                  A 是个10个元素的数值Internal   Table
         Example:
                  TYPES: BEGIN   OF   LINE,
                         COL1   TYPE   I,
                         COL3   TYPE   I,
                         END   OF   LINE.
                  TYPES   ITAB   TYPE   LINE   OCCURS   10.
                  宣告一个Internal Table ITAB, 总共有10个元素, 其WORK AREA 名称
                  为 LINE
2.使用 DATA 叙述      
      若使用DATA叙述来宣告Internal Table, 可分成要不要有HEADER LINE, HEADER LINE 就
      是所谓的 WORK AREA, 用在数据的存取上.
      语法:
            DATA   <f>   <type>   OCCURS   <n>   [WITH   HEADER   LINE]
            Example:
                    DATA   VECTOR   TYPE   I   OCCURS   10   WITH   HEADER   LINE.

3.直接宣告, 不使用 WORK AREA
语法:
      DATA: BEGIN   OF   <f>   OCCURS   <n>,
              <component 宣告>
             END   OF   <f>.


    Example:
            DATA: BEGIN   OF   ITAB   OCCURS   10,
                   COL1   TYPE   I,
                   COL2   TYPE   I,
                  END   OF   ITAB.
                  如此产生的Internal Table 不会有 Work Area, 也就是宣告时不会 Reference
                  其它的 Conponent 宣告

4.Append Line
    语法:
         APPEND   [<wa>]   TO   [Initial Line To]   <itab>
         [Initial   Line   To] 为增加一预设初值的元素
         Example: 使用 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.       “SY-INDEX为迥圈的 Counter
                    LINE-COL2 = SY-INDEX **2.
                    APPEND   LINE   INTO   ITAB.              “新增至 Internal Table中
                 ENDDO.
                 LOOP   AT   ITAB   INTO   LINE.    “ITAB 总共有两个元素
                    WRITE:   /   LINE-COL1,LINE-COL2.
                 ENDLOOP.
                 执行结果为:
                     1        1
                     2          4

         Example: 不使用 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.              “新增至 Internal Table中
                 ENDDO.
                 LOOP   AT   ITAB.    “ITAB 总共有两个元素
                    WRITE:   /   ITAB-COL1,ITAB-COL2.
                 ENDLOOP.
                 执行结果为:
                     1        1
                     2         4
5.加入另一Internal Table的元素
    语法:
          APPEND   LINES   OF   <itab1>   [FROM <n1>] [TO <n2>]   TO   <itab2>
          将<itab1>的元素加入至<itab2>中, 可选取自<n1>至<n2>的范围
          Example:
                   APPEND   LINES   OF   ITAB   TO   JTAB.
                   将ITAB所有元素加入JTAB中

&Collect   Line
    在加入新元素时将有相同standard key(非数值字段)的数值字段汇总
    语法:
         COLLECT   [<wa>   INTO]   <itab>

        Example:
         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 = 30.
              COLLECT   ITAB.     “汇总COL2 至 COL1=ABC 的元素上
              LOOP   AT   ITAB.
                 WRITE:   /   ITAB-COL1,ITAB-COL2.
              ENDLOOP.
              执行结果:
                 ABC       40
                 XYZ       20

&Insert   Line
    插入元素在指定的Internal Table位置之前
    语法:
          INSERT   [<wa> INTO] [INITIAL   LINE   INTO]   <itab>   [INDEX   <idx>]
        
          Example:
                   DATA:   BEGIN   OF   LINE,
                            COL1   TYPE   I,
                            COL2   TYPE   I,
                            END   OF   LINE.
                   DATA   ITAB   LIKE   LINE   OCCURS   10.
                   DO   3   TIMES.
                      LINE-COL1 = SY-INDEX *10.
                      LINE-COL2 = SY-INDEX *20.
                      APPEND   LINE   INTO   ITAB.
                   ENDDO.
                   LINE-COL1=100.
                   LINE-COL2=200.
                   INSERT   LINE   INTO   ITAB   INDEX   2.   “插入在位置2之前
                   LOOP   AT   ITAB   INTO   LINE.
                     WRITE:   /   SY-TABIX,LINE-COL1,LINE-COL2. “SY-TABIX为Table位置
                  ENDLOOP.
                  执行结果:
                             1         10        20
                             2        100       200   “插入的元素
                             3         20        40
                             4         30        60

&插入另一Internal Table元素
    语法:
          INSERT   LINES   OF   <itab1>   [FROM <n1> TO <n2>]   TO   <itab2>   INDEX <idx>
         将<itab1>的元素插入至<itab2>中, 位置在 <idx>之前, 可选取自<n1>至<n2>的范围
          Example:
                   APPEND   LINES   OF   ITAB   TO   JTAB   INDEX   3.
                   将ITAB所有元素插入JTAB中, 位置在第三个元素之前

&Internal Table元素数据的读取
    语法:
          LOOP   AT   <itab>   [INTO <wa>] [FROM <n1> TO <n2>] [WHERE <condition>]
             <loop   expression>
          ENDLOOP.
          根据设定的范围选取原素资料, 读完后自动移往下一笔
          Example:
                   LOOP   AT   ITAB   INTO   LINE   WHERE   COL1 >100.
                      WRITE:   /   SY-TABIX,LINE-COL1.
                   ENDLOOP.
                   仅读取 COL1 > 100 的元素

&读取Internal Table指定位置的元素
    语法:
          READ   TABLE   <itab>   [INTO <wa>]   INDEX   <idx>
          自指定位置 <idx> 读取元素数据
          Example:
                    READ   TABLE   ITAB   INTO   LINE   INDEX   5
                    读取 ITAB的第5个元素数据, 放入 LINE的字段中

&根据字段内容寻找
    语法:
           READ   TABLE   <itab>   INTO   <wa>
           Example:
                   ITAB-COL1 = ‘ABC’.
                   READ   TABLE   ITAB   INTO   LINE.
                   找出ITAB 中 COL1 字段内容是 ABC 的元素, 找到的值放入 LINE 中
                   若找到 SY-SUBRC传回0, 找不到则传回 4, <itab>必须宣告有 work area
&异动元素内容
    语法:
          MODIFY   <itab>   [FROM <wa>] [INDEX <idx>] [TRANSPORTING <f1>…<f2>]
                    [WHERE <condition>]
          TRANSPORTING   <f1> ..<f2> : 指定异动的字段名称
          Example:
                  LINE-COL1 = 4.
                  LINE-COL2 = 100.
                  MODIFY   ITAB   FROM   LINE.
                  将目前位置元素以LINE的内容异动
          Example:
                  LINE-COL1 = 10.
                  MODIFY   ITAB   FROM   LINE   INDEX   3   TRANSPORTING   COL1.
                  将第三个元素的COL1字段异动为 10

&Delete   Lines
   删除Internal   Table 的元素
   语法:
         DELETE   <itab>   INDEX   <idx>
         Example:
                  DELETE ITAB   INDEX   4
                  删除第四个元素
   加上删除条件:
         DELETE   <itab> [FROM <n1> TO <n2>]   [WHERE <condition>
         Example:
                  DELETE   ITAB   FROM   3   TO   10.
                  删除第3至第10个元素
  
&Internal Table Sorting
   语法:
         SORT   <itab>   [<order>]   [BY <f1>] ….
         [<order>] : 可分成递减(DESCENDING)和递增(ASCENDING), 空白表 ASCENDING
         <f1>:为指定的字段
         Example:
                  SORT   ITAB   DESCENDING   BY   COL2.
                  将 ITAB 根据 COL2字段递减排序
&计算数值字段总和
    语法:
          SUM
          计算得总和存在work area 中, 但只能存在 LOOP 叙述中
          Example:
                   LOOP   AT   ITAB   INTO   LINE.
                     SUM.
                   ENDLOOP.
                   WRITE: /   LINE-COL1,LINE-COL2.
                   LINE-COL1 和 LINE-COL2 存数值总和

&Initial Table
1. REFRESH   <itab>
使用在没有 HEADER LINE 的 Internal Table中, 清除所有元素
      Example:
               REFRESH   ITAB.
 
2. CLEAR   <itab>[ ]
使用在有 HEADER LINE 的 Internal Table中, 清除所有元素
      Example:
               CLEAR   ITAB[ ].

3. FREE   <itab>
释放(Release) Internal Table所占的内存空间, 用在 REFRESH和 CLEAR指令之后
Example:
         FREE   ITAB.
分享到:
评论

相关推荐

    SAP所有表及关系 SAP所有表及关系

    SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP所有表及关系SAP...

    python连接sap需要的 sdk(SAP netweaver rfc)

    Python连接SAP NetWeaver RFC(Remote Function Call)主要依赖于SAP提供的NetWeaver RFC SDK,这是一个允许外部系统与SAP系统进行交互的开发工具包。本文将深入探讨如何利用Python通过SAP NetWeaver RFC SDK进行...

    SAP屠夫作品汇总SAP屠夫作品汇总

    SAP屠夫,也被称为SAP Security或SAP Security Guru,是指在SAP系统安全领域具有深厚专业知识和技术能力的专家。他们专注于SAP系统的安全配置、权限管理、审计和风险控制,以确保企业数据的安全性。本文件汇总了SAP...

    在SAP系统中输入中文会显示成问号的解决办法.rar_SAP_sap 740出现问号_sap打字问号_sap有问号_中文显示

    在使用SAP系统时,有时会遇到一个常见的问题:当尝试输入中文时,屏幕上显示的不是预期的汉字,而是问号。这个问题可能给用户带来不少困扰,尤其是对于那些需要处理中文数据的企业。本文将深入探讨这个问题的原因,...

    SAP PI/SAP PO 详细教程(手把手教学)

    《SAP PI/SAP PO 详细教程:从基础到实践》 SAP PI(Process Integration)和SAP PO(Process Orchestration)是SAP提供的集成解决方案,用于连接不同的业务系统,实现数据交换和流程自动化。本教程将带你深入了解...

    SAP GUI 770 PATCH 8

    SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI 770 PATCH 8SAP GUI ...

    SAP接口文档 关于SAP的接口介绍

    ### SAP接口文档:关于SAP的接口介绍 #### 一、引言 SAP系统作为全球领先的业务管理和协同商务解决方案之一,在企业的信息化建设中扮演着重要角色。为了满足不同应用场景的需求,SAP提供了多种接口机制,包括但不...

    SAP2021年6月版本sapjco3.1

    SAP是一种全球领先的业务软件解决方案,它为企业提供了一个集成的平台来管理财务、人力资源、供应链、生产、销售等各个方面的业务流程。SAP JCo(Java Connector)是SAP提供的一个关键组件,允许Java应用程序与SAP...

    SAP PO/PI教程 Process Orchestration The Comprehensive Guide

    SAP Process Orchestration The Comprehensive Guide, 2nd Edition SAP流程编制综合指南 1 Introduction to SAP Process Orchestration 1.1 Historical Overview and Evolution 1.1.1 SAP Process Integration ...

    SAP .NET sapnco x64

    SAP NetWeaver Connector for .NET (简称SAP NCO或NCo) 是一个由SAP官方提供的类库,用于.NET应用程序与SAP系统之间的通信。这个库支持x64架构,使得64位的应用程序能够高效地与SAP ECC(Enterprise Central ...

    SAP 自动登录程序.exe

    在IT行业中,SAP(System Applications and Products)是一款广泛使用的业务流程管理软件,主要用于企业资源规划(ERP)。SAP GUI(Graphical User Interface)是访问SAP系统的主要工具,它为用户提供了与SAP系统...

    SAP安装包 GUI750 FOR 苹果MAC客户端GUI SAP LOGON.rar

    "SAP安装包 GUI750 FOR 苹果MAC客户端GUI SAP LOGON.rar" 是一个专为苹果Mac用户设计的SAP GUI安装包,允许用户在Mac操作系统上运行SAP的图形用户界面,以便访问和操作SAP系统。 SAP ERP(Enterprise Resource ...

    ABAP开发从入门到精通-高清自学版 SAP+ABAP开发从入门到精通 SAP开发自学必读 SAP SAP开发自学入门到精通

    ABAP(Advanced Business Application Programming)是SAP公司推出的一种编程语言,主要用于开发SAP系统中的业务应用程序。SAP系统在全球企业资源规划(ERP)领域有着广泛的应用,而ABAP则是其核心开发语言,使得...

    幕墙SAP2000建模案例一

    幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 幕墙SAP2000建模案例一 ...

    sapjco30/sapjco3.dll/sapjco3.jar SAP官网2017/7/18更新版本

    SAP JCo (Java Connector) 是一款用于连接Java应用程序与SAP系统的关键组件,它提供了在Java环境中访问SAP R/3系统或者SAP NetWeaver应用服务器的能力。"sapjco30"指的是SAP JCo的第三版,这个版本对应于JCo 3.0,是...

    SAP官网最新版本 sapjco3.jar

    SAP是一种全球领先的业务软件,用于企业资源规划(ERP)和企业管理。SAP JCo(Java Connector)是SAP提供的一种软件组件,它允许Java应用程序与SAP系统进行交互,实现数据交换和功能调用。在本文中,我们将深入探讨...

    JAVA链接SAP相关jar包(sapjco3.jar、sapjco3.dll、libsapjco3.so)

    在Java开发中,有时我们需要与SAP系统进行交互,实现数据的同步或者调用SAP的业务逻辑。这时,就需要使用到SAP提供的Java连接器,即JCo(Java Connector)。本文将详细介绍如何使用JAVA链接SAP的相关jar包,包括sap...

    SAP S4HANA 升级的 SAP检查.docx

    SAP S/4HANA 升级的 SAP 检查 SAP S/4HANA 升级的 SAP 检查是一个自助服务工具,旨在帮助客户升级到最新的 SAP S/4HANA 版本。该工具可以检查当前系统与目标版本中的应用程序兼容性,提供所需的准备步骤,并帮助...

    SAP GUI 800 64位

    SAP GUI 800 64位是SAP公司为Windows操作系统提供的一个图形用户界面,用于连接到SAP系统并进行交互操作。这个版本专为64位操作系统设计,能够充分利用64位架构的优势,提供更高效、更稳定、更大内存支持的SAP客户端...

    SAP.connector 连接SAP需要的DLL打包

    在IT领域,SAP是一个知名的业务软件解决方案提供商,其产品广泛应用于企业的资源规划与管理。在.NET开发环境中,为了与SAP系统进行交互,开发者通常会利用SAP提供的.NET连接器,即SAP Connector。本篇文章将深入探讨...

Global site tag (gtag.js) - Google Analytics