ABAP学习笔记(转自百度文库)_小七_新浪博客
ABAP学习笔记
一、 ABAP语法简介:
ABAP(Advanced business application program),是一种高级企业应用编程语言,它支持封装性和继承性,封装性是面向对象的基础,而继承性是建立在封装性基础上的重要特性。它适合生成报表,支持对数据库的操作,如:Sqlserver,Oracle,DB2等主流数据库系统。主要的语法有:
数据类型、控制流程、文本摘要、输出格式、程序调试
1、 数据类型:
(八种基本数据类型)
D :日期类型,格式为YYYYMMDD,长度为8
T :时间类型,格式为HHMMSS,长度为6
I :整数类型,默认长度为4,初始值为0
F :浮点类型,默认长度为8,初始值为0,常用于计算
C :字符串类型,定义变量时指定字符个数
N :数字字符串类型,定义变量时指定数值字符个数
X :字节序列类型,定义变量时指定字节数
P(压缩号) :允许的长度为1 到16 个字节,系统 会指定默认值8 个字节(也就是15 位数字)和0 个小数位常用:大小,长度,重量,货币等单位的场合.
2、 输出格式:
WRITE 'First line.'.
WRITE 'Still first line.'
WRITE / 'Second line.'
WRITE /13 'Third line’.
3、 控制流程:
使用IF的条件分支
IF <条件表达式1>.
< statement block >
ELSEIF <条件表达式2>.
< statement block >
ELSEIF <条件表达式3>.
< statement block >
.....
ELSE.
< statement block >
ENDIF.
使用CASE的条件分支
CASE <f>.
WHEN <F1>.
<statement block>
WHEN <F2>.
<statement block>
WHEN <F3>.
<statement block>
WHEN ...
......
WHEN OTHERS.
<statement block>
ENDCASE.
二、 ABAP的语法特点:
1、由各自独立的语句构成。
2、每个语句的第一个单词必须是ABAP关键字。
3、单词之间至少要用一个空格分隔。
4、每个语句结束必须要用句号。
5、一个语句可以跨多行,只要不遇到句号,就认为是一个延续 的语句。
6、可以把多个语句放在一行。
7、ABAP不区分大小写,关键字和用户操作数都一样,为了便于阅读,一般把关键字大写,而操作数小写。
8、如果连续多行的第一个关键字相同,可以使用链语句方式减少输入
data: id type I.
data: name type c.
可写为:
data: id type I ,
name type c.
注释:
注释行由第一列的星号(*)开头,并且必须写在第一 列,前面不能有空格。
在行末的注释用双引号(”)作为前导。
data: id type i. “ 定义一个对象num数据类型为I
三、语法格式
vConstants语句:用于创建常量
vTables语句:用于创建表工作区
vTypes语句:
1.用于创建用户自定义的数据类型 2.结构化数据类型
例子1:TYPES: BEGIN OF itab_out,
matnr LIKE mseg-matnr, "物料编码
maktx LIKE makt-maktx, "物料描述
matkl LIKE mara-matkl, "物料组
wgbez LIKE t023t-wgbez, "物料组描述
erfmg_r5 LIKE mseg-erfmg, "当日交货量
erfmg_r6 LIKE mseg-erfmg, "累计交货量
erfmg_r7 LIKE mseg-erfmg, "成品库移库数量
erfmg_r8 LIKE mseg-erfmg, "当日冲产退货量
erfmg_r9 LIKE mseg-erfmg, "累计冲产退货量
erfmg_r10 LIKE mseg-erfmg, "当日产量
erfmg_r11 LIKE mseg-erfmg, "累计产量
erfmg LIKE mseg-erfmg, "条目单位的数量
erfmg_r8_temp LIKE mseg-erfmg, "中间变量计算R10用的
erfmg_r9_temp LIKE mseg-erfmg, "中间变量计算R11用的
END OF itab_out.
例子2:TYPES: BEGIN OF address,
name TYPE string,
street(30) TYPE C,
city TYPE String,
END OF address.
DATA my_ add TYPE address.
my_ add-name = ' li li' .
my_ add-street = ' zhangjiang' .
my_ add-city = ' shanghai' .
write: my_ add-name , my_ add-street , my_ add-city.
3.一个内表形式的数据类型
DATA语句:
1.用于创建一个简单类型的变量
2.定义一个结构化的数据对象
3.定义内表
例子:
*定义用到的内表
DATA: gt_out TYPE TABLE OF itab_out WITH HEADER LINE,
gt_t023t TYPE TABLE OF t023t WITH HEADER LINE,
gt_makt TYPE TABLE OF makt WITH HEADER LINE,
gt_mkpf TYPE TABLE OF mkpf WITH HEADER LINE,
gt_mseg TYPE TABLE OF itab_mseg WITH HEADER LINE,
gt_mara TYPE TABLE OF mara WITH HEADER LINE.
四、 内表
内表是可变长度的数据对象,在运行时内表可保存多个相同结构的数据,行数是动态的,系统可实时增加内表的大小。内存中,数据是一行一行的存储的,每行 都具有相同的结构
使用内表是一个大量结构化数据的简单办法,主要应用包括:
1.保存数据库的数据进行进一步的处理
2.为屏幕和打印输出格式化的数据
创建内表:
定义表结构
DATA: BEGIN OF company,
name(20) TYPE C,
street(20) TYPE C,
city(20) TYPE C,
END OF company.
创建一个结构为company的内表
DATA itab_company LIKE HASHED TABLE OF company
WITH UNIQUE KEY name.
内表操作
可以使用Append、Insert、Read、Modify、Delete 对内表的一行或多行执行操作。
Append:往内表的最后追加一条记录,只用于标准表
Insert:向内表插入一条记录,在标准表中跟append一样,在排序表里就插入到键指定的位置,在哈希表则根据哈希算法插入。
Read:把表的指定行拷贝到结构中
Modify:使用结构的内容重写表的指定行
Delete:删除表的指定行
操作内表行
插入行 INSERT语句
插入单行
INSERT line INTO itab INDEX idx .
插入多行
INSERT lines OF itab1 [FROM n1] [TO n2]
INTO [TABLE] itab2 [INDEX idx].
内表itab1 的从n1到n2的多行数据插入到itab2 中。
*附加行 APPEND语句
附加单行
APPEND line TO itab .
附加多行
APPEND LINES OF itab1[FROM n1] [TO n2] TO itab .
读取行 READ语句
利用索引读取
READ TABLE itab INTO wa INDEX idx .
利用关键字读取
READ TABLE itab FROM key INTO wa .
修改行 MODIFY语句
根据索引修改
MODIFY itab [FROM wa] [index idx]
[TRANSPORTING f1 f2 …] .
来修改内表的第n 行
根据关键字修改
MODIFY TABLE itab FROM wa
[TRANSPORTING f1 f2 …] .
允许你修改内表itab 的一行
修改多行
MODIFY itab FROM wa TRANSPORTING f1 f2 …
WHERE cond .
在Transporting 后指定所有需要修改的字段,要把给这些字段 的值写在wa 中,使用WHERE 子句指定行的条件。
删除行 DELETE语句
通过索引删除
DELETE itab INDEX idx .(删除内表中的第n 行)
通过关键字删除
DELETE TABLE itab FROM wa .
把想要删除的键字段值拷贝到工作区wa 中
删除多行
DELETE itab [FROM n1] [TO n2] [WHERE<condition>]
循环处理结果集合使用 LOOP语句
Loop语句一条条的读出数据行,写入INTO指定的结构中,结构内容可用于输出或写回内表.
LOOP AT itab [INTO wa] [FROM n1] [TO n2]
[WHERE<condition>].
<statement block>
ENDLOOP
五、OPEN SQL 或NATIVE SQL
Open sql 与Native sql 的区别:
1. open sql 只能使用DML, slelect,insert,update,delete,modify
notive sql 可以使用DML和DDL和DCL
2.Open sql 是操作SAP数据库的语言,
notive sql 是SAP使用的数据库本身的SQL语言
提取数据 SELECT 语句
选择单行数据
SELECT SINGLE <结果集> INTO <目标表> FROM <数据库>…
选择多行数据:循环选择
SELECT [DISTINCT] <result> …
<statement block>
ENDSELECT.
选择多行数据:选择至内表
SELECT … INTO TABLE itab.
插入数据 INSERT语句
插入单行数据
INSERT INTO dbtab VALUES wa .
插入多行数据
INSERT dbtab FROM TABLE itab .
更新数据 UPDATE语句
更新单行数据
UPDATE dbtab SET f1=g1 … fi=gi WHERE <fix_key>.
*fix_key 全部表关键字段的值
或UPDATE dbtab FROM wa .
更新多行数据
UPDATE dbtab SET f1=g1 … fi=gi [WHERE <条件>].
或UPDATE dbtab FROM TABLE itab .
添加或更新数据 MODIFY语句
添加或更新单行数据
MODIFY dbtab FROM wa .
添加或更新多行数据
MODIFY dbtab FROM TABLE itab .
ABAP学习笔记(转自百度文库)_小七_新浪博客相关推荐
- 模电学习心得(转载)_史蒂文森sun_新浪博客
个人建议:认真分析几个典型电路,主要掌握晶体管的等效模型,以及在电路中怎么等效.其他的都很容易解决了.只要会等效了,模电就是完全是电路的内容.其实一点都不可怕,开始不要太关注乱七八糟的内容,抓住主要的 ...
- 当前电气自动化专业就业形势调查报告 (转载)_史蒂文森sun_新浪博客
当前电气自动化专业就业形势调查报告 尽早了解本专业的设置及就业情况有助于我们确定自己的发展方向,当竞争工作时,能有更多的优势.为此,本人于2012年2月18日至3月10日进行了调查,通过文献查阅.实 ...
- abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?_小晓_同学__新浪博客...
abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系! native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类 ...
- 身体是本钱哪_悟sphenic_新浪博客
今天陪弟弟还有表姐妹一起去园博园,终于真正像个人一样走路.回来之后很累.但是刚才又找了些学习资料,现在又感觉不到睡意了.现在的我已经忘记11点已经很晚的概念了,经常搞到晚上1点左右,怕耽误明天上班效率 ...
- [转载]R软件包vegan教程 5.1 函数adonis的使用_圈圈Bio_新浪博客
原文地址:R软件包vegan教程 5.1 函数adonis的使用作者:mateco 5 差异和环境(Dissimilarities and environment) 已经讨论了排序的环境因子解释,和环 ...
- 串管理——鸟友们快来看啊——看清楚点_悟sphenic_新浪博客
串管理--鸟友们快来看啊--看清楚点 在内存有限的情况下,应当特别注意串的"繁殖".一种常见的做法是使用+操作符,而这往往会带来问题,如果把多个串通过+操作符连接在一起构成一个串, ...
- 在线画图工具-CCA与RDA分析_圈圈Bio_新浪博客
网站:http://www.qplot.cn:3838/sample-apps/006-CCA_RDA/ RDA分析(Redundancy analysis),即冗余分析,对比主成分分析可以发现,其实 ...
- 软件项目开发模式_小晓_同学__新浪博客
螺旋开发模式:部分模块开发还可以再继续开发别的模块,适合于项目前期需求不确定的情况 对于每一个模块一个个开发:分析.设计.编码.测试.上线: 好处:有效的降低软件项目风险,(做出的产品要尽量满足客户需 ...
- Bug管理的流程和几个重点_悟sphenic_新浪博客
Bug管理的流程和几个重点 前两天谈论的bug管理的问题,大家列举了很多bug跟踪软件,我觉得工具是一部分,但是主要还在bug管理的流程上. 在这些bug管理工具里,bug的一个最重要的属性就是&qu ...
最新文章
- 蓝桥杯-9-3摩尔斯电码(java)
- switch 没有default_「java面试」switch究竟怎么用,不要让它吃灰了!
- Oracle入门(十四B)之PL/SQL异常处理
- 如何强大且优雅的搞定Linux文件系统,值得一读!
- Node实现的异步I/O
- 合作活动 | 鲸准产业价值峰会AI专场,共探AI商业模式
- poj 1027 深搜
- 下载各种百度文库以及豆丁网文章的简便方法
- OSPF协议单域配置实例
- php gd support = off,PHP GD库中GD函数的用法详解
- R语言:商业数据分析实例(4)【总结篇,回归】
- 去掉串口硬盘的安全删除硬件图标
- 原来ChatGPT可以充当这么多角色
- 从此刻立志——我要做大牛
- 浅谈数字证书的今生前世
- 【已解决】Windows Service服务 出现System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可访问的日志: Security。
- 【MySQL数据库笔记 - 进阶篇】(四)视图/存储过程/触发器
- Latex写论文时图片脚注的fig后冒号如何改为句号
- leetcode——卖股票系列
- Snaker如何配置期望完成时间、提醒时间、重复提醒间隔
热门文章
- 小米手机电池恢复代码_小米“米家电磁炉C1”评测:7挡火力,2100W大功率设计...
- 小米路由器青春版破解使用ssh,非telnet方式
- 5G跟人工智能有关系吗?
- 跑跑卡丁车超级加速外挂能用的下载
- 每日一篇(1):判断文件夹中是否有同名文件并处理重名问题
- java毕业设计选题CRM客户关系管理系统[包运行成功]
- 3dmax里面cr材质转换vr材质_不花钱,教你学会VR与CR材质互转!
- 达索SIMULIA多物理场仿真解决方案
- 修筑产学研用一体化的通衢,从一场比赛背后瞭望苏州园区人才培养新范式
- 2023北京交通大学计算机考研信息汇总