sap开发基础

it2026-03-20  5

内表

数据类型定义

类型名称描述属性C字符类型默认长度=1,默认值=blankN数字类型默认长度=1,默认值=“0…” 该类型不能进行计算,如电话号I整数类型默认长度=1,默认值=0D日期类型标准固定长度为8位,默认值=“00000000” 格式"YYYYMMDD"P包类型默认长度=1,默认值=“0”T时间类型标准固定长度为8位,默认值=“000000” 格式"HHMMSS"F浮点类型X十六进制默认长度=2,默认值=“00”

变量的声明

按类型定义变量

DATA <变量名>(<长度>) TYPE <数据类型> VALUE <默认值>

按参考定义变量

DATA <变量1> LINE <变量2> DATA : 变量1 TYPE C VALUE "XX" . 变量2 LINE 变量1 .

变量初始化

CLEAR <变量名>

定义常量

CONSTANTS <常量名>(<长度>) TYPE <数据类型> VALUE <默认值> .

结构体

结构体定义

DATA : BEGIN OF <NAME> , XX TYPE 类型 , END OF <NAME> . DATA : DD LIKE NAME . "能够参考其他类型结构体来新建

结构体赋值

MOVE-CORRESSPONDING 有值的结构体 TO 无值的结构体 "赋值

结构体继承

DATA : BEGIN OF XX . include structure 结构体 . DATA : .. TYPE 类型 . END OF XX . "结构体中新增字段

内表数据管理

内表的定义

TABLES : XXX . "参考透明表时,必须先引入定义 DATA : BEGIN OF XX . NAME like XXX-NAME . END OF XX . *定义一个初始大小为10,并有 header line 的内表 data : xx1 type standard table of xx initial size 10 with hesder line . *定义大小20,没有 header line 的内表 data : xx2 like standard table of xx initial size 20 . *定义初始值为10 并有 header line 内表 data : xx3 like xx occurs 10 . *定义排序表,以name为关键字,该表中name字段数据不重复 data : xx4 like sorted table of xx with unique key name initial size 10 with header line . *定义初始化值为0的哈希表 data : xx5 like hashed table of xx with unique name with header line .

内表赋值

方式1 : 有 header line 的内表 tables : xxx . data : begin of xx occurs 0 . name like xxx-name . end of xx . xx-name = 'tang' . append xx . "数据被赋值给内表 header line 后再append到表中最后一行 方式2 : 无header line 的内表 tables : xxx . data : begin of xx . name like xxx-name . end of xx . data : xxxx like standard table of xx . xx-name = 'tang' . append xx to xxxx . "数据赋值给工作区后再append到表中 方式3 : open sql tables : xxx . data : begin of xx occurs 0 . name like xxx-sname . end of xx . select sname as name into table xx from xxx . "通过open SQL将从数据库中抓取的数据直接复制给内表

内表的清空(4种)

clear 内表名 :仅清空表头行(header line),对内表数据存储空间不影响refresh 内表名 :清空内表数据存储空间,对(header line)不影响refresh 内表 from table 数据库表 :清空内表存储空间,填充从数据库表所获取数据free 内表 :清空内表数据存储空间,对(header line) 不影响

insert (向内表插入数据)

insert xx into table xxx . "将结构体中数据新增到内表中 insert xx index 1 . "若内表中有多行数据,该语句将新记录新增到第一行

modify (直接修改内表数据)

modify xx index 1 . "修改内表第一行数据为设定值 modify xx transporting 字段 where 条件 . "按条件修改字段

sort (排序)

sort xx by f1 f2 f3 descending . "按f3降序排序 sort xx ascending by f1 f2 f3 . "f1 f2 f3 按升序排序

read (读取内表数据)

read table xx from wa . read table xx with table key k1=v1 .. binary search . read table xx index 1 .

​ 使用 read 操作的表必须有 header line 作为查找出的数据存储窗口, binary search 可以提高内表数据查找速度,但是使用前必须对内表进行排序

loop (循环读取内表数据)

loop at xx from n1 to n2 . "读取内表中n1到n2行 loop at xx where 条件 . "安具体字段条件读取内表

数值运算

比较运算符

EQ (=)等于NE (<>)不等于LT (<)小于LE (<=)小于等于GT (>)大于GE (>=)大于等于

逻辑运算符

AND与OR或NOT非

子程序的建立调用

子程序定义

perform xx . "调用子程序 form xx . "定义子程序 .. endform .

接口参数的定义使用

向子程序中直接传输参数,该传输值在子程序中不可改变 FORM BUILD_FIELDCAT . CLEAR : GT_FIELDCAT . PERFORM FRM_EDIT_FIELDCAT USING 'WERKS' '工厂' . PERFORM FRM_EDIT_FIELDCAT USING 'LGORT' '仓库' . ENDFORM. FORM FRM_EDIT_FIELDCAT USING P_FIELD TYPE STRING P_TEXT TYPE STRING . ADD 1 TO GS_INDEX . GS_FIELDCAT-COL_POS = GS_INDEX . GS_FIELDCAT-FIELDNAME = P_FIELD . " 字段名 GS_FIELDCAT-SELTEXT_M = P_TEXT . " 描述 APPEND GS_FIELDCAT TO GT_FIELDCAT . ENDFORM.
最新回复(0)