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 在屏幕左下角显示 “数据处理中,请稍后...”字样。