ABAP的指针的基本语法

2023-10-13 18:30:35 浏览数 (1)

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.

7、可以通过系统变量sy-batch判断abap程序是前台运行还是后台运行,sy-batch等于‘X’是后台运行,等于空就是前台运行。

0 人点赞