SAP常用知识点{系统变量|TCODE|消息类型|数据类型|变量声明|Internal Table}详解编程语言
KEY: 1.常用系统变量
2.常用TCODE
3.消息类型
4.数据类型
5.变量声明
6.Internal Table
1.常用系统变量
SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,’0’ 表示成功
SY-DBLNT: 被处理过的记录的笔数
SY-UNAME: 当前使用者登入SAP的USERNAME;
SY-DATUM: 当前系统日期;
SY-UZEIT: 当前系统时间;
SY-TCODE: 当前执行程序的Transaction code
SY-INDEX : 当前LOOP循环过的次数
SY-TABIX: 当前处理的是internal table 的第几笔
SY-TMAXL: Internal table的总笔数
SY-SROWS: 屏幕总行数;
SY-SCOLS: 屏幕总列数;
SY-MANDT: 當前系統編號(CLIENT NUMBER)
SY-VLINE: 画竖线
SY-ULINE: 画横线
SY-PAGNO: 当前页号
SY-LINSZ: 当前报表宽度
SY-LINCT: 当前报表长度
SPACE: 空字符串
SY-LSIND: 列表索引页
SY-LISTI: 上一个列表的索引
SY-LILLI: 绝对列表中选定行的行号
SY-CUROW: 屏幕上的行
SY-CUCOL: 光标列
SY-CPAGE: 列表的当前显示页
SY-STARO:真实行号
SY-LISEL: 选择行的内容,长度为255
SY-LINNO: 当前行
2.常用TCODE
ABAPDOCU ABAP文档和范例
BAPI BAPI浏览器
CMOD/SMOD 系统增强
LSMW 数据导入工具
PFCG 权限管理
SA38 程序执行
SCAT 计算机辅助测试工具,测试、数据导入等
SCC1 集团拷贝
SCC4 显示集团
SE09 运输组织者,查询传输请求
SE10 请求传输
SE11 数据字典
SE16 数据浏览器
SE32 文本元素设定
SE36 逻辑数据器
SE37 函数模块
SE38 ABAP编辑器
SE41 菜单制作器
SE51 屏幕制作器
SE55 生成表维护程序
SE71 FORM设计
SE78 FORM、SmartFORMS使用图片上载
SE80 对象浏览器
SE90 对象浏览器
SE91 消息设定
SE93 维护事务代码
SHDB 批输入事务
SM04 显示在线用户
SM30 维护表视图
SM35 进程监控
SM50 超时用户
SMARTFORMS SmartForms设计
SNUM 编号对象维护
SO10 标准文本,设定Form使用的TIFF图片等
SPAD 假脱机管理
SQ01 Query查询制作
ST05 SQL跟踪
SU20 授权字段
SU21 授权对象
WE21 IDOC处理中的端口
3.消息类型
E 错误
W 警告
I 信息
A 异常终止
S 成功
X 退出
4.数据类型
C: 字符(串), 长度为1, 最大有65535 BYTES, 初始值为: space,例: ‘M’;
D: 日期, 格式为YYYYMMDD, 最大是’9999/12/31’ ,例:’1999/12/03’.
F: 浮点数, 长度为8, 例如: 4.285714285714286E-01
I: 整数 范围 :-2^31 ~ 2^31-1
N: 数值组成的字符串: 011, ‘302’.
P: packed 数,用于小数点数值,例如: 12.00542;
T: 时间, 格式为HHMMSS,例如: ’14:03:00’, ’21:30:39’.
X: 16进制数, 例如 ‘1A03’.
5.变量声明
变量宣告包含name, length, type, structure等,语法如下:
DATA F [ length ] type [ value ] [ decimals ]
其中: f :变量名称,最长30个字符,不可含有 + , . , : ( ) 等字符;
length type :变量类型及长度;
value :初值
decimals :小数字数
6.Internal Table
一. Internal Table 的宣告
ABAP/4中的Internal Table是一种Data Structure,类似于其它语言中的STRUTURE,它可以由几个不同类型的字段(field)组成,用来表示具有不同属性的某一事物,单独一笔数据表示某个事物,多笔数据表示具有相同属性的多个事物.例如:
为了存取或记录某班的同学资料,我们创建如下的internal table:
DATA: BEGIN OF STUDENT OCCURS 20,
STD_ID TYPE N,
NAME(10) TYPE C,
AGE TYPE I,
BIRTH TYPE D,
SCORE TYPE P DECIMALS 2,
END OF STUDENT.
此时我们已经创建了名叫STUDENT的internal table,并且为它预先申请了能够存放20笔资料的Buffer(当然,如果存取资料不止20笔,程序执行时,会自动申请系统Buffer)
Internal table 的定义有以下几种格式:
格式一. DATA: BEGIN OF internal table OCCURS n ,
field 1 TYPE type1 ,
[ field 2 TYPE type 2 ,
field 3 TYPE type 3 ,
… ]
END OF internal table .
格式二. TYPES: BEGIN OF work area ,
field 1 TYPE type1 ,
[ field 2 TYPE type 2 ,
field 3 TYPE type 3 ,
… ]
END OF work area .
TYPES internal table TYPE work area OCCURS n .
格式三. DATA: BEGIN OF work area .
INCLUDE STRUCTURE table name .
DATA: END OF work area .
DATA: internal table LIKE work area OCCURS n .
二. APPEND LINE
格式: APPEND [ work area TO ] internal table .
举例一. (使用work area)
DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA ITAB LIKE LINE OCCURS 10.
DO 2 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2.
APPEND LINE TO ITAB.
ENDDO.
LOOP AT ITAB INTO LINE.
WRITE: / LINE-COL1, LINE-COL2.
ENDLOOP.
执行结果为:
1 1
2 4
举例二. (不使用work area)
DATA: BEGIN OF ITAB OCCURS 10,
COL1 TYPE I,
COL2 TYPE I,
END OF ITAB.
DO 2 TIMES.
ITAB-COL1 = SY-INDEX.
ITAB-COL2 = SY-INDEX ** 2.
APPEND ITAB.
ENDDO.
LOOP AT ITAB.
WRITE: / ITAB-COL1, ITAB-COL2.
ENDLOOP.
执行结果与举例一相同.
举例三. (加入另一个Internal table的元素)
格式: APPEND LINES OF itab1 [FROM n1 ] [TO n2 ] TO itab2 .
将 itab1 的元素加入至 itab2 中,可选取自 n1 至 n2 的范围.
APPEND LINES OF ITAB TO JTAB.
三. COLLECT LINE
COLLECT 指令也是将元素加入Internal table中,与APPEND 的区别是: COLLECT指令在非数值字段相同的情况下,将数值字段汇总.
格式: COLLECT [ work area INTO ] itab
DATA: BEGIN OF ITAB OCCURS 3,
COL1(3) TYPE C,
COL2 TYPE I,
END OF ITAB.
ITAB-COL1 = ‘ABC’. ITAB-COL2 = 10.
COLLECT ITAB.
ITAB-COL1 = ‘XYZ’. ITAB-COL2 = 20.
COLLECT ITAB.
ITAB-COL1 = ‘ABC’. ITAB-COL2 = 80.
COLLECT ITAB.
此时, internal table中放的是2笔数据, 分别为:
ITAB-COL1 ITAB-COL2
‘ABC’ 90
‘XYZ’ 20
四. INSERT LINE
将元素插入在指定的internal table位置之前.
格式: INSERT [ wa INTO] [INITIAL LINE INTO ] itab [INDEX idx ]
或者: INSERT LINES OF itab1 [FROM n1 TO n2 ] INTO itab2 INDEX idx
其中: wa 即work area,工作区中的元素.
[INITIAL LINE INTO] :插入一笔初始化的记录.
itab : internal table
[INDEX idx ]: internal table 的记录号.(新加入的元素放在此记录前面)
五. 读取internal table
格式一:
LOOP AT itab [INTO wa ][FROM n1 TO n2 ][WHERE conditions ]
statement
ENDLOOP.
格式二:
READ TABLE itab [INTO wa ] [INDEX idx / WITH KEY conditions ]
举例. (格式二)
DATA: BEGIN OF ITAB OCCURS 10,
COL1 TYPE I,
COL2 TYPE I,
END OF ITAB.
DO 10 TIMES.
ITAB-COL1 = SY-INDEX.
ITAB-COL2 = SY-INDEX * 2.
APPEND ITAB.
ENDDO.
READ TABLE ITAB INDEX 3.
(或者: READ TABLE ITAB WITH KEY COL1 = 3.)
WRITE: / ‘ITAB-COL1 = ‘, ITAB-COL1, ‘ITAB-COL2 = ‘, ITAB-COL2.
执行结果同样是:
ITAB-COL1 = 3
ITAB-COL2 = 6.
六. 修改internal table 中的值
格式: MODIFY itab [FROM wa ][INDEX idx ][TRANSPORTING f1 f2 …][WHERE conditions ]
举例一. READ TABLE ITAB INDEX 3.
LINE-COL1 = 29.
MODIFY ITAB FROM LINE TRANSPORTING COL1.
将第三笔记录的COL1字段的值修改为29.
举例二. T_SALARY – salary = 50.
MODIFY T_SALARY TRANSPORTING salary WHERE birthday = ‘1999/12/06’.
七. DELETE internal table中的字段
格式: DELETE itab INDEX idx .
或: DELETE itab [FROM n1 TO n2 ] [WHERE conditions ]
八. Internal table 排序
SORT itab [ order way ][BY f1 f2 …]
其中: order way 有DESCENDING 和ASCENDING, Default 为ASCENDING.
f1 : 为指定排序的字段.
九. 加总
SUM.
总和计算存放与work area中,但只能在LOOP 中使用.
例: LOOP AT ITAB INTO LINE.
SUM.
ENDLOOP.
WRITE: / LINE-COL1, LINE-COL2.
十. 初始化internal table
REFRESH itab . 清空 itab 中的值.
CLEAR itab . 清空 itab 的Header Line.
FREE itab . 释放记忆体空间.
19995.html
c相关文章
- SAP UI5 Form 和 Simple Form 的设计规范
- SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理
- 如何在 SAP Spartacus 中编写 ASM-Compatible 的代码
- 关于 SAP UI5 所有控件的共同祖先 - sap.ui.base.ManagedObject
- SAP UI5 sap.ui.export.Spreadsheet API 介绍
- 关于 SAP UI5 Device API 的使用介绍
- SAP UI5 sap.ui.Device.media.RANGESETS.SAP_STANDARD_EXTENDED 介绍
- SAP UI5 sap.ui.Device.media.initRangeSet 方法的单步调试
- SAP UI5 SmartForm 使用技巧介绍
- 通过一个实际例子,理解 SAP UI5 sap.ui.model.odata.v2.ODataModel API 中 BindingContext 绑定上下文的概念和用法试读版
- SAP UI5 Mock Server 在响应 OData 请求时的单步调试
- SAP ABAP 系统里 Checkpoint group 的创建
- SAP ERP系统在企业内部控制方面有哪些独到之处?
- SAP UI5 sap.m.Table Manual Pop-In Mode 概述
- 澄清一些对 SAP UI5 响应式表格 sap.m.Table 的常见理解误区试读版
- SAP Emarsys 的前后台技术栈
- 35. 如何自行查找出 SAP ABAP 标准的 OData 服务返回数据的后台数据库表和表字段名称
- Oracle购买SAP: 开启新数据时代(oracle收购sap)
- 深入比较:SAP vs Oracle(sap和oracle)
- SAP和Java系统的Webservice实例详解编程语言
- SAP扩展库位详解编程语言
- SAP Smartform 取消默认的Word编辑器详解编程语言
- SAP发送邮件详解编程语言
- sap批量创建盘点凭证以及盘点凭证过账详解编程语言
- SAP 采购收货时与FICO科目的对应关系,关联点 Account Assignment Category详解编程语言
- sap-通过定义物料组的评估类-设置无物料号的费用采购详解编程语言
- 比较:Oracle与SAP的对比(oracle和sap)
- Oracle与SAP在仓储领域的联姻(仓库oracle和sap)
- Oracle与SAP权衡利弊比较之路(oracle与sap比较)
- Oracle与SAP金蝶谁更具竞争力(oracle sap金蝶)
- Oracle与SAP的技术潜力比较(oracle sap比较)
- 使用Oracle与SAP进行数据接口开发(oracle sap接口)
- 探索 Oracle 与 SAP 技术的开发可能性(oracle sap开发)
- Oracle 与 SAP深度对比分析(oracle sap对比)