ABAP学习笔记

一、      ABAP语法简介:

ABAPAdvanced 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学习笔记(转自百度文库)_小七_新浪博客相关推荐

  1. 模电学习心得(转载)_史蒂文森sun_新浪博客

    个人建议:认真分析几个典型电路,主要掌握晶体管的等效模型,以及在电路中怎么等效.其他的都很容易解决了.只要会等效了,模电就是完全是电路的内容.其实一点都不可怕,开始不要太关注乱七八糟的内容,抓住主要的 ...

  2. 当前电气自动化专业就业形势调查报告 (转载)_史蒂文森sun_新浪博客

    当前电气自动化专业就业形势调查报告  尽早了解本专业的设置及就业情况有助于我们确定自己的发展方向,当竞争工作时,能有更多的优势.为此,本人于2012年2月18日至3月10日进行了调查,通过文献查阅.实 ...

  3. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?_小晓_同学__新浪博客...

    abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系! native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类 ...

  4. 身体是本钱哪_悟sphenic_新浪博客

    今天陪弟弟还有表姐妹一起去园博园,终于真正像个人一样走路.回来之后很累.但是刚才又找了些学习资料,现在又感觉不到睡意了.现在的我已经忘记11点已经很晚的概念了,经常搞到晚上1点左右,怕耽误明天上班效率 ...

  5. [转载]R软件包vegan教程 5.1 函数adonis的使用_圈圈Bio_新浪博客

    原文地址:R软件包vegan教程 5.1 函数adonis的使用作者:mateco 5 差异和环境(Dissimilarities and environment) 已经讨论了排序的环境因子解释,和环 ...

  6. 串管理——鸟友们快来看啊——看清楚点_悟sphenic_新浪博客

    串管理--鸟友们快来看啊--看清楚点 在内存有限的情况下,应当特别注意串的"繁殖".一种常见的做法是使用+操作符,而这往往会带来问题,如果把多个串通过+操作符连接在一起构成一个串, ...

  7. 在线画图工具-CCA与RDA分析_圈圈Bio_新浪博客

    网站:http://www.qplot.cn:3838/sample-apps/006-CCA_RDA/ RDA分析(Redundancy analysis),即冗余分析,对比主成分分析可以发现,其实 ...

  8. 软件项目开发模式_小晓_同学__新浪博客

    螺旋开发模式:部分模块开发还可以再继续开发别的模块,适合于项目前期需求不确定的情况 对于每一个模块一个个开发:分析.设计.编码.测试.上线: 好处:有效的降低软件项目风险,(做出的产品要尽量满足客户需 ...

  9. Bug管理的流程和几个重点_悟sphenic_新浪博客

    Bug管理的流程和几个重点 前两天谈论的bug管理的问题,大家列举了很多bug跟踪软件,我觉得工具是一部分,但是主要还在bug管理的流程上. 在这些bug管理工具里,bug的一个最重要的属性就是&qu ...

最新文章

  1. 蓝桥杯-9-3摩尔斯电码(java)
  2. switch 没有default_「java面试」switch究竟怎么用,不要让它吃灰了!
  3. Oracle入门(十四B)之PL/SQL异常处理
  4. 如何强大且优雅的搞定Linux文件系统,值得一读!
  5. Node实现的异步I/O
  6. 合作活动 | 鲸准产业价值峰会AI专场,共探AI商业模式
  7. poj 1027 深搜
  8. 下载各种百度文库以及豆丁网文章的简便方法
  9. OSPF协议单域配置实例
  10. php gd support = off,PHP GD库中GD函数的用法详解
  11. R语言:商业数据分析实例(4)【总结篇,回归】
  12. 去掉串口硬盘的安全删除硬件图标
  13. 原来ChatGPT可以充当这么多角色
  14. 从此刻立志——我要做大牛
  15. 浅谈数字证书的今生前世
  16. 【已解决】Windows Service服务 出现System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可访问的日志: Security。
  17. 【MySQL数据库笔记 - 进阶篇】(四)视图/存储过程/触发器
  18. Latex写论文时图片脚注的fig后冒号如何改为句号
  19. leetcode——卖股票系列
  20. Snaker如何配置期望完成时间、提醒时间、重复提醒间隔

热门文章

  1. 小米手机电池恢复代码_小米“米家电磁炉C1”评测:7挡火力,2100W大功率设计...
  2. 小米路由器青春版破解使用ssh,非telnet方式
  3. 5G跟人工智能有关系吗?
  4. 跑跑卡丁车超级加速外挂能用的下载
  5. 每日一篇(1):判断文件夹中是否有同名文件并处理重名问题
  6. java毕业设计选题CRM客户关系管理系统[包运行成功]
  7. 3dmax里面cr材质转换vr材质_不花钱,教你学会VR与CR材质互转!
  8. 达索SIMULIA多物理场仿真解决方案
  9. 修筑产学研用一体化的通衢,从一场比赛背后瞭望苏州园区人才培养新范式
  10. 2023北京交通大学计算机考研信息汇总