ABAP学习笔记(转自百度文库)

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、可以把多个语句放在一行。

7ABAP不区分大小写,关键字和用户操作数都一样,为了便于阅读,一般把关键字大写,而操作数小写。

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.结构化数据类型

例子1TYPES: 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.

例子2TYPES: 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.

内表操作

可以使用AppendInsertReadModifyDelete 对内表的一行或多行执行操作。

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 的从n1n2的多行数据插入到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 可以使用DMLDDLDCL

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 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值