ABAP开发的第一步, 先说说ABAP内表

原创 2008年04月27日 16:03:00

      SAP开发的语言是ABAP(C/S模式),ABAP语言中没有数组, 它有内表, 就相当于其它语言的数组,我们平时开发都是与内表打交道,先说说内表的定义:

DATA:itab_mseg   LIKE TABLE OF mseg WITH HEADER LINE. 这个语句就是定义一个内表, 它的结构是mseg表的结果,它里面可以存放mseg表字段的数据。 在定义中, 我们使用到了WITH HEADER LINE 这个语句的意思是定义的这个内表的名字可以在操作内表时同时当作工作区使用, 例如:

LOOP AT itab_mseg.    
      WRITE: / itab_mseg-mblnr.    " 输入凭证号
ENDLOOP.

      在上面语句中 itab_mseg是内表的名称, 但在输入语句中 我们使用到了 itab_mseg ,这时itab_mseg就是工作区的名字了, 它是指用于操作数据时的一个名字。在上面的定义中我们使用到了SAP自己的一个表就是mseg(物料凭证行项目表(MM Module))。

     SAP的内表也可以自己定义自己用到的字段, 在定义中,我们可以先定义一个结构(Structure),再定义一个结构类型的内表, 或者直接定义一个工作区,再定义一个内表, 定义方式如下:

一、先定义一个结构:
TYPES: BEGIN OF struc_material, 
          mblnr   LIKE mseg-mblnr,     " 定义物料凭证号, 使用SAP已定好的类型       name   TYPE char(20),        " 通过TYPE 定义字符类型的,长度为20
           END OF struc_material.
DATA: itab_material TYPE TABLE OF struc_material WITH HEADER LINE.
      在这我们会看到,我们在定义内表时 使用的是TYPE TABLE OF 而不是 LIKE TABLE OF 因为我们使用的struc_material 是一个结构类型通过 TYPES定义的。 在这个定义中我说明一定 我们在定义名字 name 时是这样写的 name TYPE char(20), 还可以这样写 name(20) TYPE c. c 是字符类型 是 char 的简写。

二、先定义一个内表:
DATA: BEGIN OF wa_material, 
                  mblnr         LIKE mseg-mblnr,
                  name(20) TYPE c, 
          END OF wa_material.
DATA: itab_material   LIKE TABLE OF wa_material WITH HEADER LINE. 上面说到的都是很基本的东西, 在这简单说一下ABAP的注解:ABAP注解有2中一种是以“*”开头的,切记必须在行的开发第一个字符为 *, 令一种是 英文的 " 双引号 这种不要求必须在行开头第一个字符。ABAP开发中它的行结束是以“.”结尾,就是英文的点,例如:
FORM f_get_salary USING f_pernr
                                        f_trafar.      " 以.结束
* 操作部分代码
ENDFORM.

还有一点比较重要的是,在ABAP开发中是不区分大小写的,
例如定一个变量 DATA: num TYPE i. 和 data: num type i. 是一样的,
但是有一个特殊情况例如, 在调用一个METHOD,FUNCTION 中 使用的名字和输入的参数是子过程(FORM)、方法(METHOD)、函数(FUNCTION)时是必须大写的,例如:
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'     
* 此处的函数名字必须大写,否则会出现错误。       
EXPORTING
             text   = '数据处理中,请稍后...'.             顺便说一下上面函数的意思, 就是我们要处理一个大数据时,为了不让操作者误解死机等现象, 会在处理大数据上面加上上面的 FUNCTION 在屏幕左下角显示 “数据处理中,请稍后...”字样。      先说到这,慢慢再写,呵呵。 有不道之处,请网友指点,不胜感激!                                                                                     本文为原作,若要转载请注明出处,谢谢合作。

《程序员》试刊二卷首语

卷首语  遇到一位海外回国的朋友,一见面就对我抱怨,说中国的技术实在是太差了。我问他到底差在什么地方,他沉思良久说:“没有不差的地方,中国互联网的命脉全在别人手里。”我忽然感到一丝恐慌。我们已经在芯片...
  • ycrao
  • ycrao
  • 2000-11-24 16:58:00
  • 2029

ABAP内表创建整理

  • 2011年06月21日 14:15
  • 28KB
  • 下载

ABAP 开发系列(05): ABAP 内表与内表结构

2.内表和内表结构 2.1  结构体(Structure) 2.1.1 结构体的定义 ABAP 中可以定义结构来包含多个基本类型,便于整理及操作; 结构体不属于数据字典对象(数据字典中可以定义...
  • qq_37625033
  • qq_37625033
  • 2017-03-13 15:05:30
  • 332

SAP ABAP编程 FOR ALL ENTRIES IN使用指南 将表与内表串联

在ABAP开发中,对于不能使用join的聚集表或者需要使用SELECT 的内表,我们一般使用for all entries in 语句将该表与内表串联,查询出需要的数据,例如 SELECT...
  • qinyuezhan
  • qinyuezhan
  • 2014-12-23 10:30:28
  • 1165

ABAP 内表清空 refresh clear free

在我们使用完内表或者工作区后,需要进行一些清理工作。abap提供了3中方式:refresh,clear, free。 这3种方式的作用: refresh 此语句将删除内部表的全部内容(包括hea...
  • yang362046076
  • yang362046076
  • 2015-10-21 12:15:41
  • 1769

[abap] 几种定义内表的方法

说明:几种内表的定义方法。REPORT  ZTESTLP_1206.DATA: BEGIN OF itab_test OCCURS 0,  " 定义了一个有表头的内表      matnr(04) T...
  • jolin_show
  • jolin_show
  • 2011-01-14 10:38:00
  • 2522

ABAP -- 删除重复项

这是一条去重语法就行了 首先进行排序,用语法 SORT ITAB(内表名) BY 重复字段名. DELETE ADJACENT DUPLICATES FROM itab(内表名) 该语法用于去除内表中...
  • Letia
  • Letia
  • 2014-10-06 10:28:38
  • 2692

ABAP 内表总结-3 内表增删改查

(三) 内表在行记录上的操作——增删改查1、Inserting Several Lines    DATA: BEGIN OF LINE,        LAND(3)  TYPE C,       ...
  • wengyupeng
  • wengyupeng
  • 2011-06-27 13:54:00
  • 10890

ABAP行转化为列(转)

来源:http://scnblogs.techweb.com.cn/laobai/archives/184.html 转换为: REPORT z_barry_test_fi...
  • zeewjj
  • zeewjj
  • 2012-09-11 10:51:37
  • 2209

abap 中的内表操作

声明内表(1)data: begin of itab occurs 0,     a type  c,end of itab. data: begin of itab occurs 0.    inc...
  • precipitant
  • precipitant
  • 2008-02-27 17:55:00
  • 4581
收藏助手
不良信息举报
您举报文章:ABAP开发的第一步, 先说说ABAP内表
举报原因:
原因补充:

(最多只允许输入30个字)