1、DATA: BEGIN OF IT_DATA OCCURS 0 ,
OCCURS (n),加了这个表示需要多少初始内存,一般都用OCCURS 0来区别工作区(WORK AREA)。
2、<dyn_table> TYPE STANDARD TABLE,<dyn_table> 动态内表
3、ASSIGN COMPONENT OF STRUCTURE < s> TO < FS>.
系统将字符 串 < s> 的组件 分配给字段 符号 < FS>。如果分配成 功,SY-SUBRC 设为 0。否则, 返回 。 FIELD-SYMBOLS:< FS> [< TYPE>] 类似于指针,可以指代任何变量 当不输入< type>时,继承赋给它的变量的所有属性 当输入< type>时,赋给它的变量必须与同类型。 eg:
代码语言:javascript复制FIELD-SYMBOLS:<F1>.
DATA:DAT(8) VALUE '19920108'.
ASSIGN DAT TO <F1>.
WRITE:/ <F1>."<f1>
继承dat属性,为C类型,值为19920108 。" 注意,这里定义了< f1>之后,使用assign … to …,将变量分配给内部字段< f1>,这时< f1>才继承了dat的属性及值。 如果写成如下:
代码语言:javascript复制FIELD-SYMBOLS:<F2> TYPE D.
DATA:DAT(5) TYPE C VALUE '12345'.
ASSIGN DAT TO <F2>.
WRITE:/ <F2>.• 1
这时就会报错:dat与< f2>的类型不兼容。因为F2定义为D类型,所以assign的只能是同类型变量。
代码语言:javascript复制FIELD-SYMBOLS:<F3> TYPE D.
DATA:DAT(8) VALUE '19920108'.
ASSIGN DAT TO <F3> TYPE 'D'.
WRITE:/ <F3>.
这次虽然< F3>为D类型,而dat为C类型,但是type D 是将dat类型转换成D类型再分配给< F3>,输出19920108.
3.1、 什么是ABAP指针:
在ABAP里面,field symbol就相当于c语言的指针。如果你定义并且分配了相应的结构或者变量给它,其实它就指向这个结构或者变量的地址,如果修改了field symbol的值,则相应结构或者变量的值也随之更改。
4、 添加message信息
代码语言:javascript复制DATA: P_WERKS TYPE MARC-WERKS VALUE'1001'.
AUTHORITY-CHECK OBJECT 'M_MSEG_WMB'
ID 'WERKS' FIELD P_WERKS
ID 'ACTVT' FIELD '01'. "01 创建 02 编辑 03 显示
IF SY-SUBRC NE 0.
MESSAGE |你没有工厂:{ P_WERKS }的创建权限| TYPE 'E'. ENDIF.
5、字段符号的分配ASSIGN
静态分配:只能使用IS [NOT] ASSIGNED 语句来判断某个字段符号是否已分配。 动态分配:只能通过sy-subrc来判断动态分配是否成功
6、在smartforms中,QUAN字段是不能显示的,因此要先在程序中转换为字符串,注意,将QUAN字段转换为字符串的时候,要将字符串的空格去掉才可以。
代码语言:javascript复制eg: condense LW_HEAD-ZWERTG no-gaps.