BW例程

合集下载

bw题归类总结

bw题归类总结

一.Delta增量1.什么是DEL TA机制?答:DELTA就是说在第一次load (加载)数据之后,允许下次在load数据的时候只load 还没有load过的数据。

2.不同模块事务数据DEL TA加载的操作过程一样吗?答:不一样,MM有MM的DELTA機制,FI有FI的機制。

FI用的处理机制是时间戳,AIE,PULL。

LO用的处理机制是DELTA queue,ABR,PUSH。

3.通用提取的数据来源有哪几种,是否可以DEL TA加载?答:TABLE/VIEW,INFOSET,FUNCTION MODULE,可以DELTA加载。

4.什么是增量队列?(delta queue)答:增量队列是新建或已更改数据记录的数据储存形式(上次数据请求以来出现的数据记录)。

从系统收到数据请求时,会使用源系统中的更新流程或录入自动写入增量队列。

package几种更新模式?答:1完全更新2初始化增量流程3增量更新(F,I,D)6.什么是增量更新?答:增量更新仅为源系统中的请求上次加载以来已创建或已更改(或已删除)的数据记录。

7.各个增量流程都支持哪些记录类型?答:后像前像倒象新象。

8.平面文件的增量流程原理是怎么样的?答:如果增量流程使用平面文件,数据不会通过增量队列传输到BI ,而是直接从DA TASOURSE 加载到PSA。

平面文件肯定不会用到DELTA queue,因为这是数据源的增量原理。

9.0RECORDMODE 是什么?答:数据状态RECORDMODE:有以下几个值' '在更改记录或添加数据后传输记录状态。

只有在请求相应的前像时,才会将记录直接更新到InfoCube(稍后解释)。

'X' 前像在更改或删除记录前传输记录状态。

所有可以汇总(关键值)的记录属性必须用加/减冲销符号进行传输。

冲销加/减符号由提取器(缺省)或服务Service API 负责。

这些记录在DataStore 对象的非附加(覆盖)更新中予以忽略。

SAPBW例程(Routine)【开始例程、关键值或特性的例程、结束例程】

SAPBW例程(Routine)【开始例程、关键值或特性的例程、结束例程】

SAPBW例程(Routine)【开始例程、关键值或特性的例程、结束例程】定义可以使⽤例程定义关键值或特性的复杂的转换规则.例程是本地 ABAP 类,它们包括预定义的定义和实施范围.进站和出站参数的 TYPES及⽅法签名都存储在定义范围中.实际例程创建于实施范围中.使⽤该⽅法,可以分配 ABAP 对象.在⽣成期间,把此⽅法嵌⼊到转换程序中.转换包括以下类型的例程:启动例程关键值或特性的例程结束例程专家例程:此类型的例程仅⽤于特殊情况.如果提供的转换功能不⾜以满⾜您的要求,那么可以使⽤专家程序.在标准系统中所要求的功能可⽤前,可以使⽤它作为临时解决⽅案.在不使⽤可⽤规则类型的情况下,可以⾃⼰使⽤此⽅法对整个转换进⾏编程.如果要进⾏此操作,还必须亲⾃对监控器实施消息的转换.Invertierungsroutine步骤输⼊以下信息,以创建例程:1. 在*$*$ 全局开始 ... 和 *$*$ 全局结束 ...期间,可⽤定义全局数据声明 'CLASS-DATA',随后,它们将在所有的例程中可⽤.在当前包中,在当前包中,可以使⽤'DATA'存取数据声明.例如,这意味着可以在其他例程中使⽤中间结果,或者,如果再次调⽤相同的例程,那么可⽤重新使⽤第⼀次调⽤的结果.注意:只要为此请求专门保留的处理实例继续存在,那么,在序列装载期间,保持以 'CLASS-DATA '声明的数据.由于性能原因,在并⾏装载期间,已实例化的处理也不⽌使⽤⼀次.这意味着,保持处理实例中以'CLASS-DATA'声明的数据.因此,根据该⽅案,使⽤全局数据的'CLASS-DATA' 或 'DATA'.2. 在*$*$例程开始... 和 *$*$例程结束...之间,插⼊该例程的程序代码.在编码中不要使⽤ SAP COMMIT (ABAP 声明:COMMIT WORK).当执⾏声明时,⽤于从源中读取的使⽤指针丢失.作为替代,使⽤ DB COMMIT(调⽤功能模块DB_COMMIT)或避免这些 COMMIT 在⼀起。

sap bw routine语法

sap bw routine语法

sap bw routine语法SAP BW Routine语法指的是在SAP BW系统中使用的一种编程语言,用于自定义数据提取、转换和加载过程中的逻辑和计算规则。

本文将介绍SAP BW Routine语法的基本概念和常用语法规则,帮助读者更好地理解和应用这一技术。

一、SAP BW Routine语法的基本概念1.1 Routine的作用和分类在SAP BW系统中,Routine是一段可编程的代码,用于自定义数据提取、转换和加载过程中的逻辑和计算规则。

Routine可以分为Extract Routine(提取例程)、Transfer Routine(传输例程)和Update Routine(更新例程)三种类型,分别用于不同的数据处理阶段。

1.2 Routine的语法结构SAP BW Routine语法采用类似ABAP(Advanced Business Application Programming)的语法结构,包括变量声明、条件判断、循环控制和函数调用等基本元素。

下面是一个简单的Routine语法结构示例:```DATA: lv_variable TYPE i.IF lv_variable > 0.lv_variable = lv_variable + 1.ENDIF.```二、SAP BW Routine语法的常用语法规则2.1 变量声明与赋值在SAP BW Routine语法中,通过使用DATA语句声明变量,并使用赋值语句给变量赋初值。

例如,下面的代码段声明了一个整型变量lv_variable,并给它赋初值1:```DATA: lv_variable TYPE i VALUE 1.```2.2 条件判断SAP BW Routine语法中使用IF语句进行条件判断,用来根据不同的条件执行不同的操作。

例如,下面的代码段判断变量lv_variable的值是否大于0,并根据判断结果进行不同的操作:```IF lv_variable > 0.lv_variable = lv_variable + 1.ENDIF.```2.3 循环控制SAP BW Routine语法中使用DO语句进行循环控制,用来重复执行某段代码。

BW - 配置操作手册 - 学习教材

BW - 配置操作手册 - 学习教材

SAP BW配置及操作SAP BW配置及操作概述业务说明基于SAP ECC6使用RSA30TCT_DS01数据源可以查看对BW数据的读取情况。

为了从EP中链接到SAP系统,需要配置单点登录,另外需要用户在ECC中拥有RSRR_WEB 的权限基本原理以下是基于文件的BW设置的基本原理,也可以说是一个基本的操作过程。

1.设置一个源系统,用于确定数据从哪里来。

2.创建一个Datasource,用于存放抽取过来的数据。

此时的抽取式通过InfoPackage实现的。

3.创建一个DataStore Object对象,用于存放处理后的数据。

Datasource和DataStore Object 之间通过Transformation(转换规则)进行关联,同时需要创建一个Transfer Process用于数据的抽取处理。

每个DataStore Object是属于一个InfoArea,也就是说一个Info Area下可以根据需要按照不同的规则更新出不同DataStore Object。

4.在Explorer中创建一个查询,查询需要的数据,设计查询时可以设置一个过滤器进行必要的筛选。

TableRSIDOCSA VE相关概念BI(Business Intelligence,商务智能)SAP BI(SAP Business Information Warehouse)DW(Data Warehouse,数据仓库)DM (Data Mining,数据挖掘)OL TP(Online Transaction Process,在线事务处理)OLAP(Online Analysis Process,在线分析处理)逻辑视图概念(BW)信息区域(Info Area)信息对象(InfoObject)概述信息对象组(InfoObject Catalog)特性Characteristic关键值Key figures单位(Unit)时间特性(Time Characteristic)数据对象的属性关键字段Key Field数据字段Data Field导航属性Navigation Attribution索引Indexes特征值ValueETL(Extract Transform Load)提取转换加载数据存储PSA(Persistent Staging Area,连续的分段传输区域)信息提供者Info ProviderODS(Operational Data Store,运营数据存储)-7.0变为DSO DSO(Data Store Object,数据存储对象)信息立方体(InfoCube)多信息提供者Multi Provider信息集InfoSet虚拟提供者(Virtual Provider)-未整理信息源InfoSource数据处理信息包InfoPackage转换Transformation配置顺序数据传递逻辑所有外部系统都可以看作镜像到SAP BI 的数据源(DataSource ),通过一定的映射关系(Mapping )与SAP BI 系统内部的信息提供者(InfoProvider )相关联。

BW_APD实例

BW_APD实例

APD使用实例APD是Analysis Processing Designer的简称,翻译过来就是分析处理设计器的意思,是用来将一些数据源当中的数据反写到需要这些数据的数据目标当中的一种集成在BW系统中的工具,数据源有很多,数据目标也有很多,中间的转换也有很多,但我们最常用的数据源是Query,最常用的数据目标是DSO,中间的转换最常用的就是ABAP例程,通常情况下我们都是将Query中的数据通过ABAP例程的方式反写到我们的DSO中来。

Open Hub也是一种集成在BW系统中用于传导数据的工具,这个工具的作用是将我们BW 系统里的数据导入到BW系统本身数据库的表、或者是外部文件、再或者是需要这些数据的第三方系统中。

注意;查询中必须通过变式直接能够执行查询。

查询的选择条件必须要在变式中设置。

执行TCODE RSANWB,创建一个APD。

拖拽一个查询对象:1)其中变式创建:右边创建变式:常见查询变式:输入查询默认的选择条件。

拖拽一个DSO。

DSO为直接写类型DSO。

事先进行创建。

设置好主键。

创建转换。

源字段:右边红色区域中为查询中的对象,拖拽至左边作为APD中使用的对象。

币种和单位也一并拖拽过去。

目标字段:选择APD使用的DSO中的对象。

历程:REPORT RSAN_WB_ROUTINE_TEMP_REPORT .TYPES: BEGIN OF y_source_fields ,/BIC/YQTZJLX TYPE /BIC/OIYQTZJLX ,COMP_CODE TYPE /BI0/OICOMP_CODE ,FISCPER TYPE /BI0/OIFISCPER ,KYF_0001 TYPE /BI0/OIAMOUNT ,KYF_0001_CURRENCY TYPE WAERS ,END OF y_source_fields .TYPES: yt_source_fields TYPE STANDARD TABLE OF y_source_fields .TYPES: BEGIN OF y_target_fields ,COMP_CODE TYPE /BI0/OICOMP_CODE ,FISCPER TYPE /BI0/OIFISCPER ,KYF_0001 TYPE /BI0/OIAMOUNT ,END OF y_target_fields .TYPES: yt_target_fields TYPE STANDARD TABLE OF y_target_fields .*---------- Begin of type definitions -------------------------------*TYPES: ...*----------- End of type definitions --------------------------------FORM compute_data_transformationUSING it_source TYPE yt_source_fieldsir_context TYPE REF TO if_rsan_rt_routine_context EXPORTING et_target TYPE yt_target_fields .*--------- Begin of transformation code -----------------------------DATA: ls_source TYPE y_source_fields,ls_target TYPE y_target_fields.LOOP AT it_source INTO ls_source.CASE ls_source-/BIC/YQTZJLX .WHEN '10' OR '20' OR '30' OR '40' OR '41' OR '50' OR 'G0'.MOVE-CORRESPONDING ls_source TO ls_target.COLLECT ls_target INTO et_target.WHEN '60' OR '70' OR '80' OR '90' OR 'A0' OR 'B0' OR 'C0' OR 'D0' OR 'E0' OR 'F0'OR 'H0'.MOVE-CORRESPONDING ls_source TO ls_target.LS_TARGET-KYF_0001 = - LS_TARGET-KYF_0001 .COLLECT ls_target INTO et_target.ENDCASE.ENDLOOP.*---------- End of transformation code ------------------------------ENDFORM.。

1.BW基础概念知识

1.BW基础概念知识

1.基础问题集锦:关键值下的“累计值/非累计值”是什么意思?1) 累计值。

使用这一选项的关键值是一个自身存储数据的字段,在运行查询或报表时,系统会按照"集合"子窗口的设置将相应的值加总或平均,这也是最常见的设置。

2) 带非累计值更改的非累计值。

使用这一选项的关键值是一个非累计值,自身并不存储数据,但是它带有一个附加关键值,这一附加的关键值是存储数据的,表示的是非累计值的增量变化,非累计关键值的取值为附加关键值的累计结果。

3) 带流入和流出的非累计值。

使用这一选项非累计值带有两个附加关键值,分别表示非累计值的流入和流出的值,其取值为这两个附加关键值的累计结果。

做增量的时候,Tcode:LBWE下集中更新模式的区别是什么啊?Direct Delta:这就是一种V1模式,数据同步更新到增量队列,这种模式系统负荷很重,特别是对于业务量大的凭证,通过RSA7可以直接查看增量数据;Queued Delta:类似于V3的更新模式,与V3更新的区别在于,增量数据首先被收集到一个抽取队列中(V1模式),此时可以通过LBWQ查看增量数据,然后通过一步Job操作增量数据被送到增量队列中(V3模式),此时可以通过RSA7查看;Unserialized V3 Update:此模式与Queued Delta模式类似,唯一的区别是增量队列中的数据是无序的,而Queued Delta中的数据是排序的,这个对于采用覆盖模式的模型来说是最致命的,所以如果更新目标是DSO的话,还是不要采用这种模式,通过SM13可以查看增量数据。

什么是V3更新模式?V1同步更新模式,即凭证产生就更新增量,与业务数据同步更新;V2异步更新模式,就如同一个两步的操作一样,业务凭证产生以后,第一步更新业务数据源,第二步更新增量表,也就是说业务数据源和增量表是异步更新的;V3异步更新模式,也是两步操作,业务凭证产生以后首先更新业务数据源,然后再更新增量表,与V2的区别在于它的更新是通过后台事件来触发的,即定一个任务定时收集增量并更新至增量表。

BW基础知识(介绍)

BW基础知识(介绍)

SAP NetWeaver™ People Integration Multi-Channel Access Portal Collaboration Life Cycle Management



Information Integration Business Knowledge Intelligence Management Master Data Management Process Integration Integration Business Process Broker Management Application Platform J2EE ABAP DB and OS Abstraction
BW基本概念:InfoCube 有几种形式的InfoCube

物理数据存储器,包括基本InfoCube和MultiInfoCube
(目前我们的报表都是基于MultiInfoCube的)

虚拟数据存储器,包括远程立方体(RemoteCubes) 有服务 功能的虚拟信息立方体(Virtual InfoCubes with Serivces)
BW基本概念:ODS 什么是 ODS ?
InfoCube
Update Rules
ODS ( Operation Data Store )
ODS对象是文档层次上
集合和清除事物数据的 一个存储地址.ODS对象 描述了一个或者多个数 据源获得一个统一的数 据集,这个数据集存放的 是颗粒度比较小,一些行 项目的信息数据。由特 性和关键指标组成,与 R3的数据库表结构相似。
…..R3 ………. ……….
2LIS_11_VAITM 2LIS_03_BF
……….

BW操作文档

BW操作文档

BW操作文档创建简单的ODS一创建信息对象1 创建特征(Characteristics)1)登陆BW RSA1 进入“数据仓库工作台:建模”界面如下:2)在练习目录下右键创建工作范围,以自己姓名命名,如:ZDEV_LUXINGWEI3)在ZDEV_LUXINGWEI文件夹下右键创建特征如下图:4)再在特征下创建具体的特征如大类、中类、小类、物料编码特征有:一般、业务浏览器、主数据/文本、层次结构、属性、组合六大标签抬头有描述、版本,也就是激活状态等信息A对一般标签主要是修改数据类型和长度:B 对主数据/文本主要是勾选是否带有属性和文本:C 对属性标签,若有主数据和文本,不但要勾选上,还要添加上相应的属性:其中的大类、中类、小类也是创建的特征。

2创建关键值关键值:类型/单位、聚集、附加财产三个标签。

抬头跟特征一样有描述、版本,也就是激活状态等信息在类型处只能选择金额,数量,编号,日期,时间5种类型的数值字段。

选择不同的类型,在数据类型处也会自动对应不同的选择。

在货币/计量单位处:固定货币是指国家,单位/货币处是输入单位信息对象。

一般修改主要是类型/单位标签二创建源系统创建原系统简单,在文件下面右键创建即可如:LUFITE三创建数据源和抽取数据选中数据源在石药练习用下面右键点击创建数据源填写数据源名和数据源的数据类型,数据源的数据类型分为业务数据、主数据属性和主数据文本,三种类型的创建大同小异,在此以主数据属性为例惊醒创建。

主数据属性一般标签中主要填写简要描述和中间的说明如下图:对于主数据属性的提取标签主要填写文件名称,要忽略的抬头行和数据分隔符,数据分隔符用英文输入法下的逗号等如下图:对于建议标签,主要是点击装载示例数据,就会显示装载的字段、数据类型和长度等,需修改字段、长度、格式,有时还需要勾选小写字母有利于数据的装换。

对于字段标签,可以手动输入字段。

然后保存,激活主数据属性就可以了。

还要创建数据包对实际数据进行抽取。

BW常用要点

BW常用要点

1.如何理解数据仓库?数据仓库是一个面向主题的,集成的,相对稳定的,反应历史变化的数据集合,用于支持管理决策。

2.OLAP 和OLTP的基本概念和区别?Oltp 联机事务处理,就是我们通常所说的关系型数据库,记录了实时的增删改查数据。

Olap 联机分析处理,是数据仓库的核心,是对oltp的历史数据进行加工,分析处理,用于处理商业智能,决策支持等重要的决策信息。

区别:1.oltp 是明细的数据,olap 是汇总数据2.oltp 记录实时的数据,olap 包含2-3年历史数据3.oltp 可以进行增删改查操作,olap 只支持查询。

3.Bw中数据存储的最小单位是什么?他分为哪几种。

哪一个用来存放主数据,主数据分类?最小单位:Info object分类:特征和关键值,特征存放主数据,分为属性,文本和层级。

4.什么是bw星形结构,与传统星形结构有什么区别?BW星形结构:中间一张事实表,周围连接维度表,维度表中存放了主数据SID,通过主数据SID连接到主数据的属性表,文本表和层级表。

区别:传统星形结构维度表中存放了维度,键值,属性,BW星形结构中维度表中存放了主数据的SID,通过SID连接到主数据的属性,文本和层级,通过SID,可以实现多语言支持,主数据共享。

5.如何理解BW ETL的过程?BW的ETL数据抽取,就是把从R3和外部系统或者文件中的数据通过一定的转换关系抽取到我们BW端所建的信息立方体中进行分析。

6.ETL的基本操作步骤。

1)创建datatarget(infoobject,dso,infocube)2)创建数据源3)建立转换关系4)建infoobject,数据抽取到psa5)建dtp,从psa抽取数据到datatarget7.DSO 与cube 的区别。

1).从结构上,DSO是一张二维表,cube 是多维的星形结构2).从数据上,DSO存放的明细数据,cube存放汇总的数据DSO支持覆盖和合计,cube只支持累加。

BW系统操作手册_v1.1

BW系统操作手册_v1.1
2、输入信息源的名称及描述信息,单击 并继续。
3、
在信息源显示出来了,但没有被激活。双击信息源,创建一个通讯结构。
注释:BW基于特性属性的信息自动为我们创建一个通讯结构。
4、
在通讯结构下输入相应的信息对象,单击 保存并激活通讯结构。
结果:将会出现一个通信结构已经激活的状态信息。
在通讯结构激活后,我们需要创建一个传输规则。
4.
单击 按钮,然后输入维度的描述。
5.
在<特性和分配得维>区中,选择一个特性,在<维数>中选择特性指派给得维度,然后单击 按钮将特性指派给维度即可。
1.2
1.2.1
BW的源系统可以接受来自各种源系统的数据,包括:
R/3系统
BW系统
平台文件
利用第三方ETL工具的外部系统
DB连接
步骤:
1.在左面板中,选择<模型>下的源系统。在右面板中,在源系统上右击,然后选择<创建…>。
按照同样得步骤,我们创建另一个信息对象目录来保存关键指标。此时请注意选中关键指标。
1.1.3
现在我们可以创建特性了。
步骤:
1.选择一信息对象目录,如<特性>,然后右击,选择<选择创建信息对象…>。
2.输入名称和描述,然后单击 继续。
3.选择数据类型,长度等。
4.
单击<主数据/文本>,选择<带文本>,<中等长度文本已经存在>以及<文本语言相关>。
4在<传输规则>标签中,左边表显示<通讯规则/传输规则>的一对一简单映射。单击Tp下 可以看出几种传输规则。
5、如果源系统和信息源不能简单的映射时,可以通过ABAP传输规则<例程>、常量、公式来建立传输规则。

SAPBW之建模之转换和DTP-51SAP教育中心

SAPBW之建模之转换和DTP-51SAP教育中心

SAPBW之建模之转换和DTP-51SAP教育中心如果非要把BW的应用分为几部分的话,我觉得应该分为3部分,一部分:数据源的抽取,前面我们已经介绍了数据从数据源上载的PSA的技术细节;二部分:数据的模型创建,为了适应应用的需要,按照合理的方式创建数据模型;三部分:建立在模型及数据基础上的应用,如:报表、合并、预算等。

下面介绍BW中的数据模型。

BW真不愧是SAPR3的兄弟产品,它所提供的BICONTENT内容几乎覆盖了所有的SAP业务,我们都可以找到对应的模型,进行修改,来满足我们的需求,不像SAP收购的BPC那样不好用。

这样,就减少了我们建模的时间,同时也为不懂业务数据结构的BW人士,提供了捷径,这样,SAP领域就出了一个职位叫做BW顾问。

有一天,有个人跟你说,他是BW顾问,那就意味着他是做抽数和激活组件的。

顺便说一下,我不是BW顾问的,我只是个搞技术的。

BW中的模型简单来说,是通过DSO和CUBE来创建的。

下面从数据流向的角度介绍各个模型组件:1.转换:所谓ETL,即:E某traction/Tranform/Load。

数据上载到PSA,就是抽取(E)的过程;转换(T)是对数据进行业务上的合并、计算等操作;装载(L)即为上载到数据提供者(存储应用层数据)中。

BW中提供了可视化的转换工具,并且可以在转换的过程中,对数据进行加工,相当于R3中的增强,在应用程序运行过程中,执行我们定义的逻辑。

再配合DTP(DataTranferProce)将数据上载。

1/8以自定义的数据源为例:可以通过拖拽的方式将字段关联,系统会按照我们定义好的转换规则将数据传输到数据目标中,默认为“直接分配”,即:将数据直接传输到数据目标,不做任何修改。

BW提供给我们灵活的转换方式。

下面一一介绍:在目标字段上双击,其中的“规则类型”表明,我们使用哪种转换:直接分配:直接赋予源字段的值常数:不管转换规则如何,总是赋予指定的常数2/8公式:通过指定的源字段(需要将逻辑相关的源字段指向目标字段),通过运算,将结果赋予目标字段。

SAP_BW-BW传输请求配置及操作手册-V1.0-trigger_lau

SAP_BW-BW传输请求配置及操作手册-V1.0-trigger_lau

BW传输请求配置及操作手册BW传输请求配置及操作手册
Overview
业务说明
对于BW的各项开发的请求,需要分成代码和定义两部分来看,对于代码的传输,按照正常的传输方式即可,而对于bw中的定义,需要单独采用BW的传输方式进行传输。

另外需要说明的是,如果开发机中的相关功能已经传输到生产机或者测试机中,那么开发机中的功能必须先包含到一个未释放的请求后才可以修改,在对应的请求释放后同样不可以修改。

概念
T able
No. Table name Short Description Memo
Configure
W AD
首先进入RSA1,定位到传输连接。

因为要传输W AD,所以选择到“业务浏览器WEB模板”,执行选定对象。

可以使用定位功能定位到需要传输的W AD。

选定的对象会出现在右边的窗口中。

选择“传输”,执行“传输对象”(小车),弹出request按钮。

另外新建一个请求或者选择一个现有的请求即可。

查询(Query)
使用查询要素中的查询,其他同上。

End。

最新SAPBO+BW实战体系

最新SAPBO+BW实战体系

第一部分:BW 相关abap开发 实战第七周
5个可以使用abap增强的讲解 Abap基本语法精讲 BW相关abap代码优化 实现各种功能的abap代码模板
第二部分:综合项目实战 实战第八周
大项目实战之需求调研分析。 在没有任何业务背景的情况下,如何进行胸有
成竹的需求沟通和调研。 通过三个文档模板,可以对任何陌生的模块需
第四周项目任务:某石油行业AR,AP模块增强实现,以及相应文档编写。
第一部分:BW实战 实战第五周
LIS,LO,COPA数据源,权限
实战讲解内容:LIS LO COPA数据源的ቤተ መጻሕፍቲ ባይዱ解,标准权限设置,分析权限设置 。
实战讲解方法:从业务模块的角度学习数据源数据的产生过程,彻底吃透为什 么不同模块数据源处理方法都有区别。按照业务需求来分析权限的设置。
此课件下载可自行编辑修改,仅供参考! 感谢您的支持,我们努力做得更好!谢谢
SAP China 2006, HRSSC Induction Training / Evelyn Deng / 16
实战项目:基于第一周已经建立好的模型,继续展开财务的三大报表(资产负 债表,损益表,现金流量表)以及资产模块的建模和折旧相关报表。
第二周项目任务:建立财务的三大报表,资产负债表,损益表,现金流量表。
第一部分:BW实战 实战第三周
六大信息对象
实战讲解内容 :DSO 多立方体 虚拟立方体 信息集 数据集市 信息立方体 以 及聚集
第三部分:BO实战 实战第十四周
语义层高级设计 CR高级实战 CX实战
第十四周项目任务:以某财务数据为例,掌握 dashboard开发方法,熟悉相关组件,掌握一 些规范和技巧。
第三部分:BW+BO商务英语 实战第十五周

BW培训以及学习大纲

BW培训以及学习大纲

SAP高端培训大纲本培训课时共计3个月,培训内容包括BW知识,ABAP与BW增强应用,项目实战,BO知识四大部分。

第一部分 BW知识(5周)1.1 BW基本知识(bw310)单元1: SAP Net Weaver 和BI:概述、定位和基础知识●数据仓储和Business Intelligence 的基础知识●SAP NetWeaver Business Intelligence (BI) 概览●SAP NetWeaver 解决方案交付:IT 实践、业务情景●SAP NetWeaver Business Intelligence:数据仓储概览单元2:BI 数据仓库层中的对象 Data Warehousing Workbench●InfoProvider:业务目的●InfoObject:特性●InfoObject:关键值●BI InfoCube:一种扩展的星型模式●创建InfoCube单元3:从SAP 源系统获取和转换数据●数据流:概览●从SAP 源系统加载主数据●从SAP 源系统加载交易数据●ETL 流程和加载层次结构单元4:从其他系统获取数据●非SAP 系统提取:概览●平面文件加载单元5:BI Content●BI Content 探索(Metadata Repository)●BI Content 激活单元6:其他InfoProvider●DataStore 对象●VirtualProvider 与实时数据获取●MultiProvider 和BI InfoSet单元7:数据目标管理●BI 中的系统管理任务:概览●InfoCube 的管理●DataStore 对象的管理●流程链单元8:查询性能优化简介●BI 中的查询性能优化介绍●BI 集合●BI Accelerator●统计概览1.2 数据建模和实施(bw330)单元1:企业数据仓库架构●简介—企业数据仓库(EDW) 架构●基本原则——企业数据仓库(EDW) 架构●企业数据仓库架构●数据库层●企业数据仓库层●运营数据存储层——数据加载层单元2:建模流程●概览●建模流程●逻辑数据模型●BI 数据模型单元3: BI 内容●BI 内容概览●比较模型与“BI 内容”●BI 内容分析器●BI 内容浏览器单元4:信息对象建模●SAP BI 中的技术实施●跟踪历史记录●InfoObject 特性●参考特性●关键值信息对象单元5:多维建模●SAP BI 星型模式概念●设计SAP BI 信息块的维度●性能功能●分区InfoCube(可选)1.3 数据获取(bw350)单元1: BI 概览●SAP NetWeaver 70 中的BI●BI 中数据获取概览●数据获取和流程链●BI Content单元2:数据获取期间的数据流●BI 中的数据流概览●转换流程●直接访问源系统数据●实时数据获取单元3:通过Service API 进行数据获取●将SAP 源系统与BI 系统连在一起●BI 服务API 的基础知识●BI Content DataSource 的传输●后勤数据提取●通用数据获取●增强BI Content DataSource单元4:增量管理●增量管理:概览●更新模式和增量流程●来自应用程序和源系统的示例●增量数据获取的其他功能单元5:平面文件的传输●平面文件的传输单元6:通过DB Connect 进行数据获取●利用DB Connect 获取数据单元7:通过通用数据集成进行数据获取●通用数据集成1.4 查询设计(bw305)单元1:介绍BI 企业报表●SAP BI 概览单元2:报表中的导航●报表中的导航单元3: BEx Query Designer 中的前几步●Query Designer●BEx Query Designer 中的InfoProvider单元4:关键值●限定的关键值●经运算的关键值●关键值的属性●结构和单元单元5:特征●特性属性●将层次结构集成到报表中●创建用户自定义的层次结构单元6:变量●变量单元7:例外和条件●例外●条件单元8: BEx Analyzer●BEx Analyzer单元9: BEx Web Analyzer●BEx Web Analyzer1.5 报表深化应用(bw306)单元1: NetWeaver 70 BI 报表工具概览●Business Explorer 工具和Visual Composer单元2:适用于业务专家的BEx Analyzer●Bex Analyzer 设计模式●集合Excel 公式和格式化单元3: BEx Report Designer●BEx Report Designer 入门●具体设置和格式化选项单元4: BEx Web Application Designer●Web 框架和一般设置●基本的Web 应用程序●增强Web 模板布局●其他Web 项目●图表与地图●命令向导●模块化Web 应用程序设计●XHTML 的高级功能单元5: BEx Broadcaster 高级功能●Broadcaster 关键功能的要点重述●更多的分配类型和输出格式●广播例外●计划广播单元6:门户集成●在门户中发布和组织BI 内容单元7:构建复杂的BI 报表●开发BI 解决方案●解决方案展示第二部分ABAP与BW增强应用(1周)2.1ABAP基本知识●定义变量●循环●使用内表2.2BW中开发及增强实际应用:●转换规则中应用实例●开始和结束例程中应用实例●数据源增强应用实例●报表变量增强应用实例第三部分业务模块知识讲解与项目实战(5周)3.1采购模块分析●采购需求分析●采购业务基本知识和模型设计3.2销售模块分析●销售需求分析●销售业务基本知识和模型设计3.3生产模块分析●生产业务需求分析●生产业务基本知识和模型设计3.4财务模块分析●财务业务需求分析●财务业务基本知识和模型设计第四部分BO(1周)4.1BO概论4.2水晶易表设计4.3Universe构建4.4WEBI设计。

bw转换例程 变量 -回复

bw转换例程 变量 -回复

bw转换例程变量-回复黑白(bw)转换例程变量在计算机图形处理中,黑白(bw)转换是一项常见的任务。

通过将彩色图像转换为黑白图像,我们可以突出显示图像中的形状和纹理,从而实现更好的视觉效果。

然而,要成功地完成黑白转换,我们需要使用变量,并按照一定的步骤进行操作。

在本文中,我将详细介绍使用变量进行黑白转换的过程。

第一步,我们需要读取彩色图像。

在这个过程中,我们将使用一个变量来存储图像的数据。

这个变量可以是一个二维数组,其中每个元素都表示图像中一个像素的颜色值。

我们可以使用图片处理库来读取图像并将其存储在变量中。

第二步,我们需要遍历图像的每个像素,并将其转换为黑白。

为了实现这一点,我们将使用一个循环来迭代图像中的每个像素。

在每个迭代步骤中,我们将取出当前像素的颜色值并将其存储在一个临时变量中。

第三步,我们需要计算从彩色值到黑白值的转换。

这可以通过将当前像素的红、绿和蓝通道的颜色值相加并除以3来实现。

这样,我们将得到一个介于0和255之间的灰度值。

为了实现这一步,我们需要定义一个变量来存储灰度值。

第四步,我们需要将灰度值应用到当前像素上。

为了实现这一点,我们将使用一个条件语句来比较灰度值和一个阈值。

如果灰度值大于阈值,则将当前像素设置为白色。

否则,将当前像素设置为黑色。

我们将使用两个变量来存储阈值和当前像素的颜色值。

第五步,我们将重复上述过程,直到遍历完整个图像。

在每个迭代步骤中,我们将更新变量的值,以便将转换后的图像存储在一个新变量中。

最后,我们将得到一个完整的黑白图像。

第六步,我们将保存黑白转换后的图像。

为了实现这一点,我们将使用图片处理库中的保存函数,并将转换后的图像作为参数传递给它。

我们可以选择将图像保存为新的文件,或者覆盖原始图像。

通过上述步骤,我们成功地实现了黑白转换例程,并使用变量对图像进行了操作。

通过使用变量,我们可以存储和更新数据,以及执行各种图像处理操作。

在实际应用中,我们可以根据需要修改转换过程的参数,以获得更好的结果。

bw转换例程 变量 -回复

bw转换例程 变量 -回复

bw转换例程变量-回复如何进行BW转换以及涉及的变量。

BW转换是一种用于处理数字图像的技术,通过对像素值进行操纵和转换来改变图像的外观和特性。

在进行BW转换时,我们需要考虑一些变量,以便正确地实施这一过程。

本文将一步一步回答关于如何进行BW转换以及涉及的变量的问题。

首先,我们需要明确的变量是原始图像和目标图像,原始图像是我们想要进行BW转换的图像,而目标图像是转换后的图像。

将原始图像导入计算机中,可以使用图像处理软件如PhotoShop,GIMP等打开图像文件。

接下来,我们需要确定要使用的BW转换方法。

有许多不同的方法可以实现BW转换,其中一些常见的方法包括灰度化、二值化、阈值处理等。

我们需要根据图像的特性和最终的需求选择合适的方法。

如果我们选择使用灰度化方法进行BW转换,我们就需要考虑到灰度化的变量。

灰度图像是一种只包含灰度级别的图像,每个像素只有一个灰度值代表亮度。

通常,灰度值的范围是0到255之间,0代表黑色,255代表白色。

我们可以使用以下公式来计算灰度值:Gray = (Red + Green + Blue) / 3,其中Red、Green和Blue分别代表像素的红色、绿色和蓝色通道的值。

这个公式把RGB彩色图像转换成了灰度级别图像。

如果我们选择使用二值化方法进行BW转换,我们就需要考虑到二值化的变量。

二值化图像是一种只包含两个灰度级别的图像,一般是黑色和白色。

我们可以使用以下方法来实现二值化:1.简单阈值法:将图像中的每个像素与一个特定的阈值进行比较,大于阈值的像素设置为白色,小于阈值的像素设置为黑色。

2.自适应阈值法:在图像的每个小区域内分别确定阈值。

该方法适用于图像存在光线变化或背景复杂的情况。

在选择合适的阈值时,我们需要考虑到图像的对比度、亮度以及目标图像的需求等因素。

无论我们选择使用哪种方法进行BW转换,我们都需要确保在进行转换之前要先对图像进行预处理,例如进行图像增强、噪声去除等操作。

bw转换例程 变量

bw转换例程 变量

bw转换例程变量好的,下面是一个简单的 C 语言程序,用于将一个整数转换为二进制字符串并输出:```c#include <stdio.h>// 整数转二进制函数void intToBinary(int num) {// 创建一个足够大的字符串来存储二进制数char binaryStr[32];int i = 0;// 用 while 循环将整数逐位转换为二进制字符串while (num > 0) {binaryStr[i++] = (num & 1) + '0';num >>= 1;}// 确保二进制字符串以'\0'结尾binaryStr[i] = '\0';// 输出二进制字符串printf("二进制表示:%s\n", binaryStr);}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);intToBinary(num);return 0;}```在这个程序中,我们定义了一个名为 `intToBinary` 的函数,它接受一个整数参数`num`。

在函数内部,我们使用一个 `while` 循环将整数逐位转换为二进制字符串。

我们使用 `(num & 1) + '0'` 将数字转换为对应的二进制字符,然后将 `num` 向右移动一位(即除以 2)。

我们使用一个字符数组 `binaryStr` 来存储二进制字符串,并确保最后一个字符为`\0`以表示字符串的结束。

在 `main` 函数中,我们要求用户输入一个整数,然后调用 `intToBinary` 函数进行转换并输出结果。

你可以将以上代码保存为一个 C 语言文件,然后编译运行。

在程序运行时,它会提示你输入一个整数,然后输出该整数的二进制表示。

BW转换例程

BW转换例程

例程包含开始例程和结束例程以及转换例程,下面来详细进行代码的明细表:1:开始例程:PROGRAM trans_routine.*---------------------------------------------------------------------* * CLASS routine DEFINITION*---------------------------------------------------------------------* **---------------------------------------------------------------------* CLASS lcl_transform DEFINITION.PUBLIC SECTION.* AttributsDATA:p_check_master_data_existTYPE RSODSOCHECKONLY READ-ONLY,*- Instance for getting request runtime attributs;* Available information: Refer to methods of* interface 'if_rsbk_request_admintab_view'p_r_requestTYPE REF TO if_rsbk_request_admintab_view READ-ONLY.PRIVATE SECTION.TYPE-POOLS: rsd, rstr.* Rule specific typesTYPES:BEGIN OF _ty_s_SC_1,* InfoObject: ZNCSBBH00 设备编号./BIC/ZNCSBBH00 TYPE /BIC/OIZNCSBBH00,* InfoObject: ZNCSDQMRQ 时段期满日期./BIC/ZNCSDQMRQ TYPE /BIC/OIZNCSDQMRQ,* InfoObject: ZNCBJLB00 表计类别./BIC/ZNCBJLB00 TYPE /BIC/OIZNCBJLB00,* InfoObject: ZNCGSDM00 供电公司./BIC/ZNCGSDM00 TYPE /BIC/OIZNCGSDM00,* InfoObject: ZNCDYJGZ0 地域结构组./BIC/ZNCDYJGZ0 TYPE /BIC/OIZNCDYJGZ0, * InfoObject: ZNCGKFL00 关口分类./BIC/ZNCGKFL00 TYPE /BIC/OIZNCGKFL00, * InfoObject: ZNCHTZH00 合同帐户./BIC/ZNCHTZH00 TYPE /BIC/OIZNCHTZH00, * InfoObject: ZNCZHLB00 帐户类别./BIC/ZNCZHLB00 TYPE /BIC/OIZNCZHLB00, * InfoObject: ZNCBJWZ00 表计位置./BIC/ZNCBJWZ00 TYPE /BIC/OIZNCBJWZ00, * InfoObject: ZNCSDWXRQ 生效日期./BIC/ZNCSDWXRQ TYPE /BIC/OIZNCSDWXRQ, * InfoObject: ZNCBJYZRQ 表计移走日期./BIC/ZNCBJYZRQ TYPE /BIC/OIZNCBJYZRQ, * InfoObject: ZNCAZRQ00 安装日期./BIC/ZNCAZRQ00 TYPE /BIC/OIZNCAZRQ00, * InfoObject: ZNCHDYY00 活动原因./BIC/ZNCHDYY00 TYPE /BIC/OIZNCHDYY00, * InfoObject: ZNCBJLBZH 表计类别组合./BIC/ZNCBJLBZH TYPE /BIC/OIZNCBJLBZH, * InfoObject: ZNCLJSBBH 逻辑设备编号./BIC/ZNCLJSBBH TYPE /BIC/OIZNCLJSBBH, * InfoObject: ZNCSBLB00 设备类别./BIC/ZNCSBLB00 TYPE /BIC/OIZNCSBLB00, * InfoObject: ZNCRZ0000 绕组./BIC/ZNCRZ0000 TYPE /BIC/OIZNCRZ0000, * InfoObject: ZNCDJZ000 登记组./BIC/ZNCDJZ000 TYPE /BIC/OIZNCDJZ000, * InfoObject: ZNCAZD000 安装点./BIC/ZNCAZD000 TYPE /BIC/OIZNCAZD000, * InfoObject: ZNCAZLX00 安装类型./BIC/ZNCAZLX00 TYPE /BIC/OIZNCAZLX00, * InfoObject: ZNCDYDJ00 电压等级./BIC/ZNCDYDJ00 TYPE /BIC/OIZNCDYDJ00, * InfoObject: ZNCAZDFL0 安装点费类./BIC/ZNCAZDFL0 TYPE /BIC/OIZNCAZDFL0, * InfoObject: ZNCJLFS00 计量方式./BIC/ZNCJLFS00 TYPE /BIC/OIZNCJLFS00, * InfoObject: ZNCXLH000 序列号./BIC/ZNCXLH000 TYPE /BIC/OIZNCXLH000, * InfoObject: ZNCCBDY00 参比电压./BIC/ZNCCBDY00 TYPE /BIC/OIZNCCBDY00, * InfoObject: ZNCCBDL00 参比电流./BIC/ZNCCBDL00 TYPE /BIC/OIZNCCBDL00,* InfoObject: ZNCZQD000 准确度./BIC/ZNCZQD000 TYPE /BIC/OIZNCZQD000, * InfoObject: ZNCZCGS00 资产归属./BIC/ZNCZCGS00 TYPE /BIC/OIZNCZCGS00, * InfoObject: ZNCYFFGN0 预付费功能./BIC/ZNCYFFGN0 TYPE /BIC/OIZNCYFFGN0, * InfoObject: ZNCZBGN00 载波功能./BIC/ZNCZBGN00 TYPE /BIC/OIZNCZBGN00, * InfoObject: ZNCSFSXNZ 是否是虚拟资产./BIC/ZNCSFSXNZ TYPE /BIC/OIZNCSFSXNZ, * InfoObject: ZNCEDDY00 额定电压./BIC/ZNCEDDY00 TYPE /BIC/OIZNCEDDY00, * InfoObject: ZNCDRDCS0 电容/电磁式./BIC/ZNCDRDCS0 TYPE /BIC/OIZNCDRDCS0, * InfoObject: ZNCBYQRL0 变压器容量./BIC/ZNCBYQRL0 TYPE /BIC/OIZNCBYQRL0, * InfoObject: ZNCZZS000 制造商./BIC/ZNCZZS000 TYPE /BIC/OIZNCZZS000, * InfoObject: ZNCXH0000 型号./BIC/ZNCXH0000 TYPE /BIC/OIZNCXH0000, * InfoObject: ZNCXTZT00 系统状态./BIC/ZNCXTZT00 TYPE /BIC/OIZNCXTZT00, * InfoObject: ZNCBJZT00 表计状态./BIC/ZNCBJZT00 TYPE /BIC/OIZNCBJZT00, * InfoObject: ZNCYXBJSL 运行表计数量./BIC/ZNCYXBJSL TYPE /BIC/OIZNCYXBJSL, * InfoObject: 0RECORDMODE BW 增量处理: 更新模式. RECORDMODE TYPE RODMUPDMOD,* InfoObject: ZNCBYQRL1 变压器容量./BIC/ZNCBYQRL1 TYPE /BIC/OIZNCBYQRL1, * InfoObject: 0UNIT 计量单位.UNIT TYPE /BI0/OIUNIT,* InfoObject: ZNCBJFZ00 表计分组./BIC/ZNCBJFZ00 TYPE /BIC/OIZNCBJFZ00, * InfoObject: ZNCLJDX00 连接对象./BIC/ZNCLJDX00 TYPE /BIC/OIZNCLJDX00, * InfoObject: ZNCLJDXMS 连接对象描述./BIC/ZNCLJDXMS TYPE /BIC/OIZNCLJDXMS, * InfoObject: ZNCYWHZHB 业务合作伙伴./BIC/ZNCYWHZHB TYPE /BIC/OIZNCYWHZHB, * InfoObject: ZNCYWHBMC 业务合作伙伴名称./BIC/ZNCYWHBMC TYPE /BIC/OIZNCYWHBMC, * InfoObject: ZNCKGBH00 开关编号./BIC/ZNCKGBH00 TYPE /BIC/OIZNCKGBH00,* InfoObject: ZNCZJJYRQ 最近检验日期./BIC/ZNCZJJYRQ TYPE /BIC/OIZNCZJJYRQ,* InfoObject: ZNCYJJYRQ 压降最近检验日期./BIC/ZNCYJJYRQ TYPE /BIC/OIZNCYJJYRQ,* InfoObject: ZNCZDXLGN 最大需量功能./BIC/ZNCZDXLGN TYPE /BIC/OIZNCZDXLGN,* InfoObject: ZNCSFXBB0 是否是谐波表./BIC/ZNCSFXBB0 TYPE /BIC/OIZNCSFXBB0,* InfoObject: ZNCYDXZ00 费率数据组(限制特性用)./BIC/ZNCYDXZ00 TYPE /BIC/OIZNCYDXZ00,* InfoObject: ZNCSRSCZ0 输入/输出组./BIC/ZNCSRSCZ0 TYPE /BIC/OIZNCSRSCZ0,* InfoObject: ZNCSRDY00 输入电压./BIC/ZNCSRDY00 TYPE /BIC/OIZNCSRDY00,* InfoObject: ZNCSCDY00 输出电压./BIC/ZNCSCDY00 TYPE /BIC/OIZNCSCDY00,* InfoObject: ZNCFLLB00 费率类别./BIC/ZNCFLLB00 TYPE /BIC/OIZNCFLLB00,* InfoObject: ZNCQRRQ00 迁入日期./BIC/ZNCQRRQ00 TYPE /BIC/OIZNCQRRQ00,* InfoObject: ZNCYCRQ00 移出日期./BIC/ZNCYCRQ00 TYPE /BIC/OIZNCYCRQ00,* Field: RECORD.RECORD TYPE RSARECORD,END OF _ty_s_SC_1.TYPES:_ty_t_SC_1 TYPE STANDARD TABLE OF _ty_s_SC_1WITH NON-UNIQUE DEFAULT KEY.*$*$ begin of global - insert your declaration only below this line *-* ... "insert your code here*$*$ end of global - insert your declaration only before this line *-* METHODSstart_routineIMPORTINGrequest type rsrequestdatapackid type rsdatapidEXPORTINGmonitor type rstr_ty_t_monitorsCHANGINGSOURCE_PACKAGE type _ty_t_SC_1RAISINGcx_rsrout_abort.METHODSinverse_start_routineIMPORTINGi_th_fields_outbound TYPE rstran_t_field_invi_r_selset_outbound TYPE REF TO cl_rsmds_seti_is_main_selection TYPE rs_booli_r_selset_outbound_complete TYPE REF TO cl_rsmds_seti_r_universe_inbound TYPE REF TO cl_rsmds_universeCHANGINGc_th_fields_inbound TYPE rstran_t_field_invc_r_selset_inbound TYPE REF TO cl_rsmds_setc_exact TYPE rs_bool.ENDCLASS. "routine DEFINITION*$*$ begin of 2nd part global - insert your code only below this line * ... "insert your code here*$*$ end of 2nd part global - insert your code only before this line **---------------------------------------------------------------------* * CLASS routine IMPLEMENTATION*---------------------------------------------------------------------* **---------------------------------------------------------------------* CLASS lcl_transform IMPLEMENTATION.*----------------------------------------------------------------------* * Method start_routine*----------------------------------------------------------------------* * Calculation of source package via start routine*----------------------------------------------------------------------* * <-> source package*----------------------------------------------------------------------* METHOD start_routine.*=== Segments ===FIELD-SYMBOLS:<SOURCE_FIELDS> TYPE _ty_s_SC_1.DATA:MONITOR_REC TYPE rstmonitor.*$*$ begin of routine - insert your code only below this line *-*... "insert your code here*-- fill table "MONITOR" with values of structure "MONITOR_REC"*- to make monitor entries... "to cancel the update process* raise exception type CX_RSROUT_ABORT.*接线方式不合格计量点数=35KV及以下高供高计使用了三相四线电能表的计量点+110KV及以上使用了三相三线电能表的计量点数data : idx like sy-tabix .data : l_gnl type c LENGTH 8 .data : gt_gnl type STANDARD TABLE OF /BIC/PZNCBJLB00 ,wa_gnl type /BIC/PZNCBJLB00 .delete SOURCE_PACKAGE[] where /BIC/ZNCBJLBZH <> 'Z' .delete SOURCE_PACKAGE[] where /BIC/ZNCAZD000 = '' .delete SOURCE_PACKAGE[] where /BIC/ZNCGSDM00 = '' .if not SOURCE_PACKAGE[] is INITIAL .select*into table gt_gnlfrom /BIC/PZNCBJLB00FOR ALL ENTRIES IN SOURCE_PACKAGEwhere /BIC/ZNCBJLB00 = SOURCE_PACKAGE-/BIC/ZNCBJLB00 .sort gt_gnl by /BIC/ZNCBJLB00 .endif .loop at SOURCE_PACKAGE ASSIGNING <SOURCE_FIELDS> .idx = sy-tabix .READ TABLE gt_gnl into wa_gnl with key /BIC/ZNCBJLB00 =<SOURCE_FIELDS>-/BIC/ZNCBJLB00 BINARY SEARCH .if sy-subrc = 0 .l_gnl = wa_gnl-/BIC/ZNCGNL000 .endif .if ( <SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '03' or<SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '04'or <SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '05' or<SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '06'or <SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '07' or<SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '08' )and ( <SOURCE_FIELDS>-/BIC/ZNCJLFS00 = '10' ) and ( l_gnl ='DTB' or l_gnl = 'DTJ' or l_gnl = 'DTZ' ).CONTINUE .* 110KV及以上使用了三相三线电能表的计量点数 add by leo 20091229 start * else .elseif ( <SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '00' or<SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '01' or<SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '02' ) and ( l_gnl = 'DSB' or l_gnl = 'DSJ' or l_gnl = 'DSZ' ).CONTINUE .else .* 110KV及以上使用了三相三线电能表的计量点数 add by leo 20091229 enddelete SOURCE_PACKAGE INDEX idx .CONTINUE .endif .* if ( <SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '00' or* <SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '01' or* <SOURCE_FIELDS>-/BIC/ZNCDYDJ00 = '02' ) and ( l_gnl = 'DSB' or * l_gnl = 'DSJ' or l_gnl = 'DSZ' ).** CONTINUE .* ELSE .* delete SOURCE_PACKAGE INDEX idx .* CONTINUE .* endif .CLEAR l_gnl .endloop .free gt_gnl[] .*$*$ end of routine - insert your code only before this line *-* ENDMETHOD. "start_routine*----------------------------------------------------------------------* * Method inverse_start_routine*----------------------------------------------------------------------*** This subroutine needs to be implemented only for direct access * (for better performance) and for the Report/Report Interface* (drill through).* The inverse routine should transform a projection and* a selection for the target to a projection and a selection* for the source, respectively.* If the implementation remains empty all fields are filled and* all values are selected.**----------------------------------------------------------------------* **----------------------------------------------------------------------* METHOD inverse_start_routine.*$*$ begin of inverse routine - insert your code only below this line*-* ... "insert your code here*$*$ end of inverse routine - insert your code only before this line *-*ENDMETHOD. "inverse_start_routineENDCLASS. "routine IMPLEMENTATION2:业扩结束例程:PROGRAM trans_routine.*---------------------------------------------------------------------* * CLASS routine DEFINITION*---------------------------------------------------------------------* **---------------------------------------------------------------------* CLASS lcl_transform DEFINITION.PUBLIC SECTION.* AttributsDATA:p_check_master_data_existTYPE RSODSOCHECKONLY READ-ONLY,*- Instance for getting request runtime attributs;* Available information: Refer to methods of* interface 'if_rsbk_request_admintab_view'p_r_requestTYPE REF TO if_rsbk_request_admintab_view READ-ONLY. PRIVATE SECTION.TYPE-POOLS: rsd, rstr.* Rule specific typesTYPES:BEGIN OF _ty_s_TG_1,* Field: RECORD 数据记录号.RECORD TYPE RSARECORD,* InfoObject: ZNCTZDH00 通知单号./BIC/ZNCTZDH00 TYPE /BIC/OIZNCTZDH00,* InfoObject: ZNCBZJD00 报装进度./BIC/ZNCBZJD00 TYPE /BIC/OIZNCBZJD00,* InfoObject: ZNCYWLB00 业务类别./BIC/ZNCYWLB00 TYPE /BIC/OIZNCYWLB00,* InfoObject: ZNCHJKSSJ 环节开始日期./BIC/ZNCHJKSSJ TYPE /BIC/OIZNCHJKSSJ,* InfoObject: ZNCHJJSSJ 环节完成日期./BIC/ZNCHJJSSJ TYPE /BIC/OIZNCHJJSSJ,* InfoObject: ZNCHJJHWC 环节计划完成日期./BIC/ZNCHJJHWC TYPE /BIC/OIZNCHJJHWC,* InfoObject: ZNCCLRY00 处理人员./BIC/ZNCCLRY00 TYPE /BIC/OIZNCCLRY00,* InfoObject: 0RECORDMODE BW 增量处理: 更新模式.RECORDMODE TYPE RODMUPDMOD,* InfoObject: ZNCYKTS00 业扩天数./BIC/ZNCYKTS00 TYPE /BIC/OIZNCYKTS00,* InfoObject: ZNCGZZX00 工作中心./BIC/ZNCGZZX00 TYPE /BIC/OIZNCGZZX00,* InfoObject: ZNCZHLB00 帐户类别./BIC/ZNCZHLB00 TYPE /BIC/OIZNCZHLB00,* InfoObject: ZNCCJRQ00 创建日期./BIC/ZNCCJRQ00 TYPE /BIC/OIZNCCJRQ00,* InfoObject: ZNCWCRQ00 完成日期./BIC/ZNCWCRQ00 TYPE /BIC/OIZNCWCRQ00,* InfoObject: ZNCHYXX00 行业信息./BIC/ZNCHYXX00 TYPE /BIC/OIZNCHYXX00,* InfoObject: ZNCDYDJ00 电压等级./BIC/ZNCDYDJ00 TYPE /BIC/OIZNCDYDJ00,* InfoObject: ZNCPFGYDY 批复电压等级./BIC/ZNCPFGYDY TYPE /BIC/OIZNCPFGYDY,* InfoObject: ZNCYWHZHB 业务合作伙伴./BIC/ZNCYWHZHB TYPE /BIC/OIZNCYWHZHB,* InfoObject: ZNCHTZH00 合同帐户./BIC/ZNCHTZH00 TYPE /BIC/OIZNCHTZH00,* InfoObject: ZNCSCBJ00 删除标记./BIC/ZNCSCBJ00 TYPE /BIC/OIZNCSCBJ00,* InfoObject: ZNCSCYY00 删除原因./BIC/ZNCSCYY00 TYPE /BIC/OIZNCSCYY00,* InfoObject: ZNCGSDM00 供电公司./BIC/ZNCGSDM00 TYPE /BIC/OIZNCGSDM00,* InfoObject: ZNCFC0000 房产./BIC/ZNCFC0000 TYPE /BIC/OIZNCFC0000,* InfoObject: ZNCFHXZ00 负荷性质./BIC/ZNCFHXZ00 TYPE /BIC/OIZNCFHXZ00,* InfoObject: ZNCYKLCHS 业扩流程户数./BIC/ZNCYKLCHS TYPE /BIC/OIZNCYKLCHS,* InfoObject: ZNCCSBS00 超时完成标识./BIC/ZNCCSBS00 TYPE /BIC/OIZNCCSBS00,* InfoObject: ZNCSQSFZX 是否专线(申请)./BIC/ZNCSQSFZX TYPE /BIC/OIZNCSQSFZX,* InfoObject: ZNCCSBSW0 实际完成标识./BIC/ZNCCSBSW0 TYPE /BIC/OIZNCCSBSW0,* InfoObject: ZNCWCRQJZ 完成日期_记帐./BIC/ZNCWCRQJZ TYPE /BIC/OIZNCWCRQJZ,* InfoObject: ZNCKSRQJZ 开始日期_记帐./BIC/ZNCKSRQJZ TYPE /BIC/OIZNCKSRQJZ,* InfoObject: ZNCPFSFZX 是否专线(批复)./BIC/ZNCPFSFZX TYPE /BIC/OIZNCPFSFZX,END OF _ty_s_TG_1.TYPES:_ty_t_TG_1 TYPE STANDARD TABLE OF _ty_s_TG_1WITH NON-UNIQUE DEFAULT KEY.*$*$ begin of global - insert your declaration only below this line *-* ... "insert your code here*$*$ end of global - insert your declaration only before this line *-* METHODSend_routineIMPORTINGrequest type rsrequestdatapackid type rsdatapidEXPORTINGmonitor type rstr_ty_t_monitorsCHANGINGRESULT_PACKAGE type _ty_t_TG_1RAISINGcx_rsrout_abort.METHODSinverse_end_routineIMPORTINGi_th_fields_outbound TYPE rstran_t_field_invi_r_selset_outbound TYPE REF TO cl_rsmds_seti_is_main_selection TYPE rs_booli_r_selset_outbound_complete TYPE REF TO cl_rsmds_seti_r_universe_inbound TYPE REF TO cl_rsmds_universeCHANGINGc_th_fields_inbound TYPE rstran_t_field_invc_r_selset_inbound TYPE REF TO cl_rsmds_setc_exact TYPE rs_bool.ENDCLASS. "routine DEFINITION*$*$ begin of 2nd part global - insert your code only below this line * ... "insert your code here*$*$ end of 2nd part global - insert your code only before this line **---------------------------------------------------------------------* * CLASS routine IMPLEMENTATION*---------------------------------------------------------------------* **---------------------------------------------------------------------* CLASS lcl_transform IMPLEMENTATION.*----------------------------------------------------------------------* * Method end_routine*----------------------------------------------------------------------* * Calculation of result package via end routine* Note: Update of target fields depends on rule assignment in* transformation editor. Only fields that have a rule assigned,* are updated to the data target.*----------------------------------------------------------------------* * <-> result package*----------------------------------------------------------------------* METHOD end_routine.*=== Segments ===FIELD-SYMBOLS:<RESULT_FIELDS> TYPE _ty_s_TG_1.DATA:MONITOR_REC TYPE rstmonitor.*$*$ begin of routine - insert your code only below this line *-* ... "insert your code here*-- fill table "MONITOR" with values of structure "MONITOR_REC"*- to make monitor entries... "to cancel the update process* raise exception type CX_RSROUT_ABORT.*更改业扩流程数据data: l_w_result like line of RESULT_PACKAGE.data: l_t_table type standard table of /BIC/AZCNCCS0400.data: l_w_table type /BIC/AZCNCCS0400.select *from /BIC/AZCNCCS0400into table l_t_tablefor all entries in RESULT_PACKAGEwhere /BIC/ZNCTZDH00 = RESULT_PACKAGE-/BIC/ZNCTZDH00.SORT l_t_table BY /BIC/ZNCTZDH00.loop at RESULT_PACKAGE into l_w_result.CLEAR l_w_table.read table l_t_table into l_w_table with key /BIC/ZNCTZDH00 =l_w_result-/BIC/ZNCTZDH00 binary search .l_w_result-/BIC/ZNCGZZX00 = l_w_table-/BIC/ZNCGZZX00.l_w_result-/BIC/ZNCYWLB00 = l_w_table-/BIC/ZNCYWLB00.l_w_result-/BIC/ZNCZHLB00 = l_w_table-/BIC/ZNCZHLB00.l_w_result-/BIC/ZNCCJRQ00 = l_w_table-/BIC/ZNCCJRQ00.l_w_result-/BIC/ZNCWCRQ00 = l_w_table-/BIC/ZNCWCRQ00.l_w_result-/BIC/ZNCHYXX00 = l_w_table-/BIC/ZNCHY0000.l_w_result-/BIC/ZNCDYDJ00 = l_w_table-/BIC/ZNCDYDJ00.l_w_result-/BIC/ZNCPFGYDY = l_w_table-/BIC/ZNCPFGYDY.l_w_result-/BIC/ZNCYWHZHB = l_w_table-/BIC/ZNCYWHZHB.l_w_result-/BIC/ZNCHTZH00 = l_w_table-/BIC/ZNCHTZH00.l_w_result-/BIC/ZNCSCBJ00 = l_w_table-/BIC/ZNCSCBJ00.l_w_result-/BIC/ZNCSCYY00 = l_w_table-/BIC/ZNCSCYY00.l_w_result-/BIC/ZNCGSDM00 = l_w_table-/BIC/ZNCGSDM00.l_w_result-/BIC/ZNCFC0000 = l_w_table-/BIC/ZNCFC0000.l_w_result-/BIC/ZNCFHXZ00 = l_w_table-/BIC/ZNCFHXZ00.l_w_result-/BIC/ZNCPFSFZX = l_w_table-/BIC/ZNCPFSFZX.modify RESULT_PACKAGE from l_w_result.endloop.*/BIC/AZCNCCS0400*$*$ end of routine - insert your code only before this line *-* ENDMETHOD. "end_routine*----------------------------------------------------------------------* * Method inverse_end_routine*----------------------------------------------------------------------* ** This subroutine needs to be implemented only for direct access * (for better performance) and for the Report/Report Interface* (drill through).* The inverse routine should transform a projection and* a selection for the target to a projection and a selection* for the source, respectively.* If the implementation remains empty all fields are filled and* all values are selected.**----------------------------------------------------------------------* **----------------------------------------------------------------------* METHOD inverse_end_routine.*$*$ begin of inverse routine - insert your code only below this line*-* ... "insert your code here*$*$ end of inverse routine - insert your code only before this line *-*ENDMETHOD. "inverse_end_routineENDCLASS. "routine IMPLEMENTATION3:转换例程:PROGRAM trans_routine.*---------------------------------------------------------------------* * CLASS routine DEFINITION*---------------------------------------------------------------------* **---------------------------------------------------------------------* CLASS lcl_transform DEFINITION.PUBLIC SECTION.* AttributsDATA:p_check_master_data_existTYPE RSODSOCHECKONLY READ-ONLY,*- Instance for getting request runtime attributs;* Available information: Refer to methods of* interface 'if_rsbk_request_admintab_view'p_r_requestTYPE REF TO if_rsbk_request_admintab_view READ-ONLY.PRIVATE SECTION.TYPE-POOLS: rsd, rstr.* Rule specific typesTYPES:BEGIN OF _ty_s_SC_1,* InfoObject: ZNCHJJSSJ 环节完成日期./BIC/ZNCHJJSSJ TYPE /BIC/OIZNCHJJSSJ,* InfoObject: ZNCHJJHWC 环节计划完成日期./BIC/ZNCHJJHWC TYPE /BIC/OIZNCHJJHWC,* Field: RECORD.RECORD TYPE RSARECORD,END OF _ty_s_SC_1.TYPES:BEGIN OF _ty_s_TG_1,* InfoObject: ZNCCSBS00 超时完成标识./BIC/ZNCCSBS00 TYPE /BIC/OIZNCCSBS00,END OF _ty_s_TG_1.*$*$ begin of global - insert your declaration only below this line *-* ... "insert your code here*$*$ end of global - insert your declaration only before this line *-*METHODScompute_ZNCCSBS00IMPORTINGrequest type rsrequestdatapackid type rsdatapidSOURCE_FIELDS type _ty_s_SC_1EXPORTINGRESULT type _ty_s_TG_1-/BIC/ZNCCSBS00monitor type rstr_ty_t_monitorRAISINGcx_rsrout_abortcx_rsrout_skip_recordcx_rsrout_skip_val.METHODSinvert_ZNCCSBS00IMPORTINGi_th_fields_outbound TYPE rstran_t_field_invi_r_selset_outbound TYPE REF TO cl_rsmds_seti_is_main_selection TYPE rs_booli_r_selset_outbound_complete TYPE REF TO cl_rsmds_seti_r_universe_inbound TYPE REF TO cl_rsmds_universeCHANGINGc_th_fields_inbound TYPE rstran_t_field_invc_r_selset_inbound TYPE REF TO cl_rsmds_setc_exact TYPE rs_bool.ENDCLASS. "routine DEFINITION*$*$ begin of 2nd part global - insert your code only below this line * ... "insert your code here*$*$ end of 2nd part global - insert your code only before this line **---------------------------------------------------------------------* * CLASS routine IMPLEMENTATION*---------------------------------------------------------------------* **---------------------------------------------------------------------* CLASS lcl_transform IMPLEMENTATION.METHOD compute_ZNCCSBS00.* IMPORTING* request type rsrequest* datapackid type rsdatapid* SOURCE_FIELDS-/BIC/ZNCHJJSSJ TYPE /BIC/OIZNCHJJSSJ* SOURCE_FIELDS-/BIC/ZNCHJJHWC TYPE /BIC/OIZNCHJJHWC* EXPORTING* RESULT type _ty_s_TG_1-/BIC/ZNCCSBS00DATA:MONITOR_REC TYPE rsmonitor.*$*$ begin of routine - insert your code only below this line *-* ... "insert your code here*-- fill table "MONITOR" with values of structure "MONITOR_REC"*- to make monitor entries... "to cancel the update process* raise exception type CX_RSROUT_ABORT.... "to skip a record* raise exception type CX_RSROUT_SKIP_RECORD.... "to clear target fields* raise exception type CX_RSROUT_SKIP_VAL.*计划完成日期和实际完成日期为同年月前提下,实际完成日期<=计划完成日期的标识Xdata:lc_month_jh(6) type c,lc_month_sj(6) type c.IF SOURCE_FIELDS-/BIC/ZNCHJJSSJ <> '00000000' ANDSOURCE_FIELDS-/BIC/ZNCHJJHWC <> '00000000'.lc_month_sj = SOURCE_FIELDS-/BIC/ZNCHJJSSJ+0(6).lc_month_jh = SOURCE_FIELDS-/BIC/ZNCHJJHWC+0(6).*超时完成标识Cif SOURCE_FIELDS-/BIC/ZNCHJJHWC < SOURCE_FIELDS-/BIC/ZNCHJJSSJ.RESULT = 'C'.endif.*实际完成日期<=计划完成日期的标识Xif lc_month_sj = lc_month_jh.if SOURCE_FIELDS-/BIC/ZNCHJJHWC >= SOURCE_FIELDS-/BIC/ZNCHJJSSJ .RESULT = 'X'.ENDIF.endif.endif.*$*$ end of routine - insert your code only before this line *-* ENDMETHOD. "compute_ZNCCSBS00*----------------------------------------------------------------------* * Method invert_ZNCCSBS00*----------------------------------------------------------------------* ** This subroutine needs to be implemented only for direct access * (for better performance) and for the Report/Report Interface* (drill through).* The inverse routine should transform a projection and* a selection for the target to a projection and a selection* for the source, respectively.* If the implementation remains empty all fields are filled and* all values are selected.**----------------------------------------------------------------------* **----------------------------------------------------------------------* METHOD invert_ZNCCSBS00.*$*$ begin of inverse routine - insert your code only below this line*-* ... "insert your code here*$*$ end of inverse routine - insert your code only before this line *-*ENDMETHOD. "invert_ZNCCSBS00ENDCLASS. "routine IMPLEMENTATION。

BW APD实例

BW APD实例

注意;查询中必须通过变式直接能够执行查询。

查询的选择条件必须要在变式中设置。

执行TCODE RSANWB,创建一个APD。

拖拽一个查询对象:1)其中变式创建:右边创建变式:常见查询变式:输入查询默认的选择条件。

拖拽一个DSO。

DSO为直接写类型DSO。

事先进行创建。

设置好主键。

创建转换。

源字段:右边红色区域中为查询中的对象,拖拽至左边作为APD中使用的对象。

币种和单位也一并拖拽过去。

目标字段:选择APD使用的DSO中的对象。

历程:REPORT RSAN_WB_ROUTINE_TEMP_REPORT .TYPES: BEGIN OF y_source_fields ,/BIC/YQTZJLX TYPE /BIC/OIYQTZJLX ,COMP_CODE TYPE /BI0/OICOMP_CODE ,FISCPER TYPE /BI0/OIFISCPER ,KYF_0001 TYPE /BI0/OIAMOUNT ,KYF_0001_CURRENCY TYPE WAERS ,END OF y_source_fields .TYPES: yt_source_fields TYPE STANDARD TABLE OF y_source_fields .TYPES: BEGIN OF y_target_fields ,COMP_CODE TYPE /BI0/OICOMP_CODE ,FISCPER TYPE /BI0/OIFISCPER ,KYF_0001 TYPE /BI0/OIAMOUNT ,END OF y_target_fields .TYPES: yt_target_fields TYPE STANDARD TABLE OF y_target_fields .*---------- Begin of type definitions -------------------------------*TYPES: ...*----------- End of type definitions --------------------------------FORM compute_data_transformationUSING it_source TYPE yt_source_fieldsir_context TYPE REF TO if_rsan_rt_routine_context EXPORTING et_target TYPE yt_target_fields .*--------- Begin of transformation code -----------------------------DATA: ls_source TYPE y_source_fields,ls_target TYPE y_target_fields.LOOP AT it_source INTO ls_source.CASE ls_source-/BIC/YQTZJLX .WHEN '10' OR '20' OR '30' OR '40' OR '41' OR '50' OR 'G0'.MOVE-CORRESPONDING ls_source TO ls_target.COLLECT ls_target INTO et_target.WHEN '60' OR '70' OR '80' OR '90' OR 'A0' OR 'B0' OR 'C0' OR 'D0' OR 'E0' OR 'F0'OR 'H0'.MOVE-CORRESPONDING ls_source TO ls_target.LS_TARGET-KYF_0001 = - LS_TARGET-KYF_0001 .COLLECT ls_target INTO et_target.ENDCASE.ENDLOOP.*---------- End of transformation code ------------------------------ENDFORM.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BW 例程(Routine)
2013-06-04 10:50:51| 分类:默认分类 | 标签: |举报 |字号大中小订阅
例程就是我们可以自己定义的程序代码。

通过程序代码来完成我们的需求,因为业务是千变万化,如果想让产品能跟随上业务的脚步,就必须要有非常灵活的功能来补充。

大家都知道软件产品都是通过代码来编制出来的,所以这里的例程是用最灵活的代码来进行补充,以达到完成客户灵活的业务变化。

当然在BW模块中,代码的编写只是其中一个小的功能,不像ABAP顾问,主要是通过编程来实现需求。

BW顾问注重的是建模,性能,是完成数据仓库,分析数据等等。

在"转换"中,最重要的有三种类型的例程,开始例程,转换例程及结束例程;此外还有专家例程,反向例程。

开始例程:开始例程在每个数据包开始进行转换时运行。

开始例程没有返回的值,它直接对数据包进行计算、修改或删除等操作,将操作的结果直接保存在数据包中进行后续的转换步骤。

当然,开始例程也可以访问和操作SAPBI 系统中的其他数据库表。

转换例程:则是在每笔数据传输过程中,对数据进行的一个转换,例如数据根据条件进行的匹配转换。

当在每个字段的详细规则中,选择例程的规则类型就会弹出对话框来贴些转换例程。

结束例程:结束例程对经过转换规则转换后的数据进行操作,它操作的是一个与目标对象字段结构一致的表结构。

与开始例程一样,它也是逐个数据包进行处理的。

在结束例程中,可以进行各种数据的操作,比如,删除不需要的数据、进行数据质量检查等。

专家例程: 专家例程是系统提供的进行数据转换的另一个选项,这一类型的例程较少使用。

一般只在SAP BI 提供的标准函数不能满足转换需要的时候,才使用专家例程。

在已知道数据库表逻辑时,出于提高性能的考虑,也可以使用专家例程而不使用图形界面。

专家例程还可以更方便地将一条长记录分成多条短记录。

使用专家例程可以编写系统提供的规则类型以外的任意转换,这时需要自定义写入数据加载日志的信息。

一旦为一个转换创建了专家例程,系统会删除同一转换内已经定义好的其他转换规则。

反向例程:在上图中没有标识出来,它将目标对象在运行报表时的选择条件和输出字段转化为对源对象的选择条件和输出字段的要求。

反向例程只在两种情况下使用。

1) 如果为虚拟信息提供者定义了例程,出于性能方面的考虑,可以使用反向例程。

由于虚拟信息提供者本身并不存储数据,只在运行报表时直接到源系统读取数据,转换中的例程可能使报表的选择条件与输出字段与源系统不存在直接的对应关系,因此有必要把这些信息通过反向例程传给源对象。

2) 当使用SAPBI 的报表跳转功能,从SAPBI 系统跳转到其他SAP 系统的事务处理界面时,如果数据是经过例程转换的,需要使用反向例程将报表中相应的信息返回给其他的SAP 系统。

在这两种情况下,如果不使用反向例程,系统选择源对象所有的值。

在代码*$*$ begin of global …和*$*$end of global ...之间输入用户的数据定义。

用户可以使用两种方式声明数据:
1 )使用语句'CLASS DATA'进行全局数据声明。

用这一方法声明的数据在整个数据请求
中都有效。

2) 使用语句'DATA'进行全局数据声明。

用这一方法声明的数据只在当前的数据包中都
有效。

全局数据声明使不同的例程之间共享数据成为可能。

例如,可以在例程中使用其他例程的中间计算结果,或者在稍后再次调用同时例程时重用例程的数据。

下面分别给出一个开始例程,传输例程及结束例程的应用场景及代码实现,如下:
1.开始例程程序范例及场景:
在数据传输伊始就需要删除AAA工厂数据,则可以在传输例程中写入如下程序:
*$*$ begin of routine - insert your code only below this line
"删除AAA工厂
DELETE SOURCE_PACKAGE WHERE /BIC/ZPLANT = 'AAA'
*$*$ end of routine - insert your code only before this line
2.转换例程应用:
在数据传输过程中需要补充物料前导零,则在信息对象例程中加入以下代码即可。

*$*$ begin of routine - insert your code only below this line
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = SOURCE_FIELDS-MATNR
IMPORTING
OUTPUT = RESULT.
*$*$ end of routine - insert your code only before this line
3.结束例程应用:
如果数据源的结构是一个扁平化结构,现在需要将其拆分成多行,例如结构源数据是办事处一月份销量二月份销量三月份销量...
而目标的结构为办事处月份销量;则就可以在结束例程里做文章了;示例代码如下:先在开始例程中定义一个与源一模一样的内表,并且将源值赋给这个内表,代码如下:*$*$ begin of routine - insert your code only below this line *-* ... "insert your code here
ITAB [] = SOURCE_PACKAGE [].
*$*$ end of routine - insert your code only before this line *-*
然后在结束例程中,在写入以下程序:
*$*$ begin of routine - insert your code only below this line *-* ... "insert your code here
REFRESH RESULT_PACKAGE.
DATA: WA_RESULT TYPE _TY_S_TG_1.
LOOP AT ITAB INTO WA_ITAB.
WA_TG-/BIC/ZSM_OFF = WA_ITAB-ORG_ID.
*****1月
WA_TG-CALMONTH2 = '01'.
WA_TG-/BIC/ZSM_BPQTY = WA_ITAB-M1.
APPEND WA_TG TO ITAB_TG.
****2月
WA_TG-CALMONTH2 = '02'.
WA_TG-/BIC/ZSM_BPQTY = WA_ITAB-M2.
APPEND WA_TG TO ITAB_TG.
****3月
WA_TG-CALMONTH2 = '03'.
WA_TG-/BIC/ZSM_BPQTY = WA_ITAB-M3.
APPEND WA_TG TO ITAB_TG.
ENDLOOP.
LOOP AT ITAB_TG INTO WA_TG.
MOVE-CORRESPONDING WA_TG TO WA_RESULT.
APPEND WA_RESULT TO RESULT_PACKAGE.
ENDLOOP.
*$*$ end of routine - insert your code only before this line *-*。

相关文档
最新文档