ABAP的指针的基本语法

文章介绍了ABAP编程中的关键概念,包括使用OCCURS关键字管理内存,动态内表的声明,字段符号作为类似指针的机制以及不同类型间的兼容性。还提到了ABAP中的错误处理,如AUTHORITY-CHECK用于权限验证,以及如何通过系统变量SY-BATCH判断程序运行模式。此外,讨论了在SmartForms中处理特定字段的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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:

FIELD-SYMBOLS:<F1>.  
 DATA:DAT(8) VALUE '19920108'.  
 ASSIGN DAT TO <F1>.   
WRITE:/ <F1>."<f1> 

继承dat属性,为C类型,值为19920108 。"
注意,这里定义了< f1>之后,使用assign … to …,将变量分配给内部字段< f1>,这时< f1>才继承了dat的属性及值。
如果写成如下:

FIELD-SYMBOLS:<F2> TYPE D.
  DATA:DAT(5) TYPE C VALUE '12345'.
  ASSIGN DAT TO <F2>.
  WRITE:/ <F2>.• 1

这时就会报错:dat与< f2>的类型不兼容。因为F2定义为D类型,所以assign的只能是同类型变量。

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信息

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字段转换为字符串的时候,要将字符串的空格去掉才可以。

eg:  condense LW_HEAD-ZWERTG no-gaps.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值