ABAP、BW培训笔记

ABAP开发

目标:ABAP编辑器、报表程序创建语法检查修改执行等基本操作、ABAP数据字典、SQL的使用

大体介绍

  • ABAP:Advanced  Business    Application  Programming
  • ABAP第四代的语言(ABAP/4),到后期会有JAVA的东西引进来,PI有自己的JAVA端,但ERP/R3还是主要用ABAP开发
  • 报表(Reports)不会改变业务(主要关注报表开发);对话(Dialogs)可能会改变业务、功能增强的开发
  • ABAP程序组成要素:关键字Keywords;选项Options(字体界面等);Parameters(参数)

关键词,选项和参数是用至少一个空格分开

Eg:WRITE  Figure  CURRENCY  ‘TWD’.

每写完一句代码是用.号结束的,每句是用关键字开始的,每个语句可能用到很多行,关键字选项参数等是用空格隔开的

注释:如果是用*注释,*号前面是注释,”号是后面都都是注释

Report    ZFRLFA01  //程序名

程序类型:1、M、F、I

应用(哪个模块的):Z(F、K、M、S、C、V…….)001

开发类:如果不需要传输那么就放在本地  $TMP-Local object

需要传输的就放到一个开发类中(按照模块保存数据)

编辑锁(Editor Lock)锁住编辑权限

做开发事务代码:se38

ZC001(成本控制)ZF001(FI)。。。。。。。。。。。。。。。。。

程序名,保存地,请求号命名等都是有规范的,为后期查找等提供了方便。

程序开发时用到的数据类型,定义一些变量(P大型数据、I整型数据、F浮点型、N数字文本、C文本、D日期、T时间、X16进制)

Initial value 是各变量默认的初始值

定义变量最大只能30个字符,不能使用的特殊符号:()+.,:

空格是一个定义好的值了

用已经定义好了的变量去定义两一个变量

DATA:

Company       like T001-BUKRS  *在这个公司代码下

String1(30)   type C  *这样string1是30位的 C类型的

String2      like string1  * string 2和string1数据是一致的

String3      like string1

可以用一个结构定义多个变量

TYPES:BEGIN OF ADDRESS

恢复初始化CLEAR<FIELD>

给一个变量赋值(用=即可)

通过位移的方式来赋值,在保存一个字符串是有位的,可定义从第几个字符开始取,从第0位开始算

2个结构的相同字段可以直接赋值,不用一一用=号赋值

定义文本编号:标题文本、编码文本,选择文本

ULINE    隔一行

SKIP  跳过

NEW-PAGE   新起一页

Write一种格式、值等直接在打印机以这种形式打印

zm024

se93

zp*

语句if   else

Range变量   in <range>

A co B      A尽包含B

IF A >= B.

C = A - B.

ELSE.

C = B -  A.

ENDIF.

Write:/ ‘|A-B|=’,C.

‘   ’表示不显示值,而是直接显示字符串

,后的C显示的C的值

REPORT  test.

TABLES  LFB1.

SELECT *  FROM  LFB1.

CASE  LFB1-BUKRS.

     WHEN ‘TW00’.

    WRITE: / ‘DELTA’.

     WHEN ‘TW02’.

    WRITE: / ‘NETWORKING’.

ENDCASE.

ENDSELECT.

 

On   change操作

REPORT   test.

TABLES   LFB1.

SELECT *  FROM  LFB1.

ON  CHANGE  OF  LFB1 - LIFNR.

NEW - PAGE.

ENDON.

WRITE: / LFB1 - LIFNR, LFB1 - BUKRS .......

ENDSELECT.

循环LOOP的操作

LOOP  AT WT_TABLE.    //表名

INTO   WS_TABLE_LINE.    //从第一行开始拿到定义的结构中

WS_LINE-PRICE= WS_LINE-PRICE-100.

ENDLOOP.              //结束LOOP

ONCHANG 是用在LOOP里的,在LOOP数据里对比两个字段有什么变化、区别,LOOP是在内表循环时用的,对比当前数据和上一个数据在某个字段的是否一致。

DO varying<field>from<field1>.      //从第几行到第几行

DO.

写一段IF的条件退出语句,不然会无限循环

ENDDO.

DO<n>TIMES.    //做几次

<>

ENDDO

WHILE  A=<10.

WRITE:/’A=’,A.

A=A+1.

ENDWHILE.

LOOP可以套LOOP,但尽量少用

CHECK判断条件语句,做一个检查,不符合检查便跳出当前循环或报表

EXIT和CHECK差不多,看你写的位置跳到哪一步

STOP无需检查直接退出到最外

创建HELLO  WORLD界面

Se38,输入程序名,创建

点小笔更改报告(程序名)

Write后加:可显示多个值,如果不加只显示一个

右键----格式-----添加注释/取消注释

/是换行,wirte:/    就是换行显示的

输完代码,按激活对象,然后执行

REPORT     XXXXXX

DATA:A   TYPE   I.

B   TYPE  I.

C   TYPE  I.

A=25.

B=12.

IF  A>B.

C=A-B.

WRITE:/’A>B’.

ELSEIF  A=B.

C=0.

WRITE:/’A=B’.

ELSE.

C=B-A.

WRITE:/’A<B’.

ENDIF.

WRITE:/’|A-B|=’,C.

REPORT     XXXXXX

DATA:A   TYPE   I.

B   TYPE  I.

C   TYPE  I.

A=12.

B=11.

IF  A>B.

C=A-B.

WRITE:/’A>B’.

IF A=12.

WRITE:/’A=12’.

ENDIF.

ELSE.

C=B-A.

WRITE:/’A<B’.

ENDIF.

WRITE:/’|A-B|=’,C.

ABAPDOCU进入各命令用法的例子,解释

每查一个按ABAP   EDIT可以直接把代码拷到编辑器中

//查看是否匹配

CASE.

WHEN.

WRITE.

ENDCASE.

循环(DO  LOOP)例子

REPORT    xxxxxx

DATA:CNTR   TYPE   I.

CNTR=1.

DO.

WRITE:/CNTR.

CNTR=CNTR+1.

IF  CNTR  GT   10.

EXIT.

ENDIF.

ENDDO.

UNLINE.   //显示一条分隔线

//CLEAR CNTR.

CNTR=1.

DO  9  TIMES.

WRITE:/CNTR.

CNTR=CNTR+1.

ENDDO.

循环(WHILE   LOOP)例子

REPORT    xxxxxx

DATA:CNTR  TYPE   I.

CNTR=1.

WHILE  CNTR>9.

WRITE:/CNTR.

CNTR=CNTR+1.

ENDWHILE.

REPORT    xxxxxx

DATA:CNTR  TYPE   I.

CNTR=1.

WHILE  CNTR>10.

CNTR=CNTR+1.

WRITE:/CNTR.

IF  CNTR=5.

CONTINUE.

ENDIF.

WRITE:/CNTR.

ENDWHILE.

CONTINUE只跳出本次循环继续执行下次循环,如果是exit、stop,就全部跳出,WHILE就不执行了。

Insert   into

APPEND:APPEND….TO,往表里增加一行,先扫描表里是否有该行,如果有,那么进行加和操作(只对比非数字的字段项),如果没有,就直接加入。

COLLECT:收集汇总,相同的关键字,其数字部分(例如金额)是自己加和的

SORT:排序,升序降序

例如:sort  itab   descenging  by   age.

READ  TABLE.       //读表的一条数据

WITH  KEY<key>.    //按条件读取

INDEX<idx>.      //按索引读取

INSERT:插到当前索引的位置

APPEND:插到表的最后的位置

DELETE:删除一行

MODIFY:修改

例子:

REPORT    XXXXXXX

TABLES:T001.

DATA:

BEGIN  OF  IntTab   OCCURS   15.

BUKRS  LIKE  T001-BUKRS.   //公司代码

BUTXT  LIKE  T001-BUTXT.   // 公司名称

END  OF   IntTab.

DATA:ws_int   like   inttab.

SELECT * FROM  T001.

CLEAR  inttab.

Inttab-bukrs=t001-bukrs.

Inttab-butxt=t001-butxt.

Insert  ws_int  into  table   inttab.

APPEND  inttab.

ENDSELECT.

LOOP  AT  INTTAB.

WRITE:/INTTAB-BUKRS,’        ’,INTTAB-BUTXT.

ENDLOOP.

Se11,查看数据库

TABLES:T001.

DATA:WS_T001  LIKE  T001.

DATA:WT_T001  LIKE  TABLE  OF  T001.   //table定义一个内表

SELECT * FROM  T001.

WS_T001-BUKRS=T001-bukrs.       //BUKRS公司代码

WS_T001-BUTXT=T001-butxt.      //BUTXT公司名称

ENDSELECT.

LOOP  AT  WT_T001   INTO   WS_T001.

WRITE:/WS_T001-BUKRS, WS_T001-BUTXT.

ENDLOOP.

TABLES:T001.

DATA:WS_T001  LIKE  T001.

DATA:WT_T001  LIKE  TABLE  OF  T001.   //table定义一个内表

SELECT  SINGLE * FORM  T001  WHERE  BUKRS=’5640’.

WRITE:/T001-BUKRS,T001-BUTXT.

TABLES:T001.

DATA:WS_T001  LIKE  T001.

DATA:WT_T001  LIKE  TABLE  OF  T001.   //table定义一个内表

SELECT  * INTO  CORRESPONDING  FIELDS  OF  TABLE WT_001  FROM  T001  WHERE  BUKRS=’5640’.   // 对比WT_001和T001,

所有字段一致的选择出来

LOOP  AT  WT_T001  INTO   WS_T001.

WRITE:/ WS_T001-BUKRS,WS_T001-BUTXT.

ENDLOOP.

LOOP  AT  表   INTO   行

LOOP  AT  itab   INTO  line  FROM  2  TO  5.

//一般在制定一页显示几行时用

NUM=1.

LOOP  AT  itab  TRANSPORTING  NO  FIELDS  WHERE  land=’USA’  .

WRITE:/NUM.

NUM=NUM+1.

WRITE:/itab-land,itab-name,itab-age,itab-weight.

ENDLOOP.

//不给itab赋任何值,

At first  显示在最前面的东西,放在at first里

At new字段关键字是否是第一次出现,第一次出现执行at new

Select options做选择屏幕用的,可调出标准查询的选项

Paramenters  做选择屏幕用的,

SELECTION-SCREEN  BEGIN  OF  BLOCK  B1  WITH  FRAME  title  text-020.

SELECTION-SCREEN  COMMENT/1(30)  text-020.

PARAMENT  p_vkorg  type  TVKO-vkorg  DEFAULT’0005’.

SELECT-OPTIONS  S_vkorg  FOR  TVKO-vkorg.

SELECTION-SCREEN  END  OF  BLOCK  B1.

Se37里可查Function  Modules系统已经写好了一些标准的功能,可以直接调用,也可以自己写Function  Modules,然后再写程序即可调用。

程序先调用Function  Modules,然后定义一些参数,Function  Modules会去数据库取数,不用自己去数据库取数,然后程序可直接接调用。

程序调用Function  Modules,直接处理我给你文本的值,处理完了返回给程序即可。

Macro宏

Include直接调用其他地方的程序,include  程序名

开发人员要注册SAP用户名,还要申请开发KEY,第一次用的时候只要输入一次开发KEY即可,以后都不用了

Include,引用了其他地方的程序等,可以写在该程序前面

DATA:数据定义,内表变量等都在这定义

Initialization初始化

Perform  check  权限检查,一上来基本都是要做权限检查的

End  of

At  end  of

At  last

Sap分三个过程:  开发系统——>测试系统——>生产系统(正式的日常业务)

开发一个程序后可以分配一个TCODE,类似于事务代码,但是是z打头的

表、数据元素、域(数据元素依赖的基础)

依靠已经创建的域来创建数据元素,数据元素组成表描述描述描描述新建沙箱

ECC_Sandbox_erp  ides

10.8.5.167

00

SND

用户名:abap01   密码:chem123   新密码:chem1234

商务智能(BI)

商务智能将数据进行整理规范

后勤数据统计分析

BW的报表是由各模块的数据经过抽取到数据仓库,然后以一定的规范做报表

ABAP直接从ERP中做报表

ETL:数据的导入传输

多维分析是给管理层的决策用的,综合的

多维数据集(CUBE)

度量值:数量、金额;组成了事实表

维度:从哪个方面分析数据(时间维度、业务分类维度等,除了量金额的都叫维度)

多维数据集的结构

上卷(聚合、合并):1.各个季度合并成年,从图上看,是第一季度和第二季度合并成上半年,第三季度第四季度合并成下半年。

2.消除维度,变成平面图看

下钻:将季度分开成月

切片:立体正方形切成单面

切块:立体正方形切成块

转轴:立体正方形转个

Cube是BW的常见的操作

统计表的组成,列、行、自由特性

数据仓库,ETL抽取、转换、装载

BW中的,OLAP在线分析;R/3中的,OLTP

BW数据仓库中开发时常用的词:第一层就是PSA(一个存储的空间,选择性的过滤一些数据放到PSA中比如选择某个公司下的)、然后是DSO(抽取加工转换,进行运算,合并数据提高性能)、Info Cubes(加载到多维立方体中)再通过多个工具转换

Eg.要看三年的营业收入的数据,关注每一个月(DSO)

处理链:安排好任务的先后顺序,到点会做处理

Cube是最重要的*******

切片、切块:在日历年、物料等上点右键,过滤器——选择筛选值,填入筛选的值

很少用到转轴功能,一般都是关键值在列上

打开一个报表

全局变量下:日历日  2009.01.01 – 2009.12.31(之间用空格隔开)

物料         //可不输

公司代码     //可不输

变量前面带*号的是必输的,不输的是默认的当前权限下可看的报表信息。

物料可选择多个物料,并存入可用变式里,那么就自动保存了,每次进去直接选择原来保存的可用变式即可。

过滤报表:右上角过滤器

下溯跟下钻差不多,在列里的日历月右键更改下溯-下溯曲(垂直、水平曲线),可以删除,恢复原来的显示

行上面是维度,列是关键值

数据仓库

联机事务处理(OLTP)

ABAP报表更新快,随时可查

数据仓库的四个特点要记住:面向主题、集成的、数据不可更改、随时间变化的

数据仓库,数据具有不同的细节级

粒度这个词很重要

分割。。。。。。。。。。。。

事实表只记录业务的量和金额,事实表的列(指标)少,但是记录行数缺相当大

BW中做了扩展的星形结构

在BW中的信息对象的概念:特性、指标

信息立方体

事实表最多可以有16个维度表

BW报表操作,三范式,数据仓库,

BW开发工具------Query  Designer

关键值、特征、变量、例外条件

开始----程序

进入主界面后,查询(新建、打开)

试图

最右边的技术名称,[关键]文本,关键字有且唯一的标识

打开查询;选择查询:查找

历史

收藏夹

角色(还没用到)

信息范围:将所有的报表按照模块分类

过滤器中,红色=,就是不等于,例如合同编号 =[#],就是将带着些符号的都过滤掉

描述是表头名字

属性----显示----小数位数(数量3位的,金额2位的)

属性-----转换(统一单位,kg、t等进行统一,目标单位统一为一个单位)

任务=---查询----另存为,可对相似的报表直接复制,在修改即可

禁止用零,一般规定行为零就禁止,不会启用列为零禁止。

新选择是CUBE里已存在的关键值,新公式

NDIV0(X):被0除时等于0,否则为X

例如:销售数量为0,收入不是0,

技术名称,唯一的标识每张报表

保存时的技术名称是有规范的

技术名称:X表示三级企业开发的,RCSCCCA01是该报表基于的CUBE的编号

限制关键值、计算关键值

信息立方体:一个信息立方体只能有一个事实表和最多16个维度表,有3个维度是SAP自动维护的(时间、单位、信息包),剩下只有最多13个维度表能我们自己设计。

三个仓库:目标(信息对象、信息立方体、DSO)

PSA

数据源

两个车:信息包:把外部的数据源抽取到PSA里

DTP:数据传输过程

一个转换:容器---容器间进行加工,这之间要用到转换

Rsa1-----数据仓库工作台(建模)

数据源里提供的字段对应下一个数据目标,就叫转换

总结:ERP——>PSA——>DSO数据存储对象——>DSO——>信息立方体——>query  designer——>BO——>仪表盘

PI培训

IR ——>ID——>IE

时间: 2024-08-26 18:41:58

ABAP、BW培训笔记的相关文章

web安全培训笔记

1.漏洞获取方法 1)扫描器扫描 2)乌云 3)线上服务漏洞 例子: 线上crm->管理员弱口令->后台上传头像处漏洞->上传php文件->进入内网->扫描内网拓扑->获得各种共享文件 2.入侵原因 1)好玩 2)拖库,目的,获得各种账号密码.同样账号在其他地方的密码有可能一致. 3)删文章,挂黑链,不正当竞争攻击 3.常见漏洞 1)sql注入 2)xss 4.一些获得漏洞方法 1)扫描器扫描 2)乌云查看 3)制造页面报错,例如参数加引号,页面报错会展示一些敏感信息,

SAP sybase培训笔记4-使用技巧&&Query Plan

解释型与预编译型 1.传统的数据库,存储过程有comp的过程,IQ不做. 2.!!!存储过程性能吞吐量要比直接查询降一半. 3.IQ内部,多个语句会分析并转换成存储过程去执行.所以语句多一次执行,语句少直接逐句执行. 4. 使用索引 简化条件 选择算法 join group 行数 cpu distinct记录数 等等,决定了语法选择. 5. Query Plan开关: Query_Plan='ON', 只有叶子节点才有 condition execution set TEMPORARY OPTI

学习培训笔记--网络

最近开始学习培训网络的东西,希望能让别人听得懂,那就从源头开始讲吧!自己也学习! 1.什么网络?Enternet和Internet. 2.联网需要什么? 3.OSI网络模型,Tcp/ip解析 4.各个网络部件的用途. 5.集线器和交换机的区别,巨帧是啥?什么是全双工,半双工? auto-negotiation auto MDI/MDIX 6.IP与路由 学习培训笔记--网络

sap abap入门培训

上海51sap是专业的SAP培训中心,提供专业的SAP ABAP培训,SAP开发培训培训以及SAP实施模块学习.SAP最初开发ABAP语言仅为内部使用,为应用程序员提供优化的工作环境.学习ABAP语言,就业无忧. ABAP(SAP 应用开发) 一:什么是ABAP. 定义:ABAP=Advanced business application program, 一种高级企业应用编程语言. SAP最初开发ABAP/4(高级商业应用程序设计)语言仅为内部使用,为应用程序员提供优化的工作环境.经过不断的改

sap abap就业培训

ABAP作为一种面向特定应用的第四代编程语言.最早在20世纪80年代开发.它原本是作为一种报表语言应用在SAP R/2上,这是一个帮助大型公司在大型机上建立原材料管理和财务会计管理商务应用的平台. SAP ABAP开发是一种高级企业应用编程语言,英文全称为Advanced Business Application Programming,还可以实现和其他编程语言的合成,如VB,JAVA,C/C++等.(更多信息百度:51sap教育中心) SAP ABAP开发人员其实就是为管理层人员提供有效快捷信

C/S架构应用程序开发培训笔记

最近为客户组织了一项C/S架构程序的开发培训,讲解C/S应用程序开发中需要注意的点. 我主要是做C/S方面的ERP/CRM程序开发,界面是用Windows Forms技术,有遗漏或错误的地方欢迎批评指正. 1 异常处理 为处理应用程序中的异常,需要增加以下代码. Application.ThreadException += new ThreadExceptionEventHandler(eh.OnThreadException); AppDomain.CurrentDomain.Unhandle

高级系统架构师培训笔记

前几天参加了中科院计算所培训中心谢老师的高级系统架构师培训课程,将其中的一些点做了下记录: 系统架构师的工作是复杂设计总体解决方案以及领域对象的逻辑和物理布局,这是一项在复杂环境中高风险.高影响力的活动. 1.软件架构的定义:软件架构(Software Architecture)也称之为软件体系结构,它是一组有关如下要素的重要决策:软件系统的组织,构成系统的结构化元素,接口和它们相互协作的行为的选择,结构化元素和行为元素组合成粒度更大的子系统方式的选择,以及指导这一组织(元素及其接口.协作和组合

SAP sybase培训笔记3

sp_iqstatus; sp_iqversionuse; 重点查看: 设备大小: 动态内存: active txn versions 集群: 1.操作系统要一样 2.并发查询的能力可以水平线性扩展: 3.单机时,并发1秒以上的查询,到四五十的同时查询时,性能就会急剧下降. 其中一个辅助接点是作为协调节点的备份节点. 增加接点,需要有IQ许可证(cpu许可),还需要加一个mutiplex的server许可. 启动单节点IQ: start_iq @params.cfg -n mpxnode_c -

SAP sybase培训笔记2

1.考虑数据规划,存储空间有多少等等. 按照公式估算: 字符集.排序.页面大小创建后不能更改. 数据存储空间规划,特别是集群模式的部署 LUN Plan要点. IQ使用的磁盘,物理上必须要与其它应用隔离: RAID 5/6 不要用LVM 尽量分散I/O 1.建议先打补丁再建库. 2.准备文件系统 建议给数据库日志信息(serverlog/iqmsg)等分配一个独立的文件系统,避免日志撑爆. start_iq -n iqdemo iqdemo.db ... <other options> ...