在接到业务需求之后,我认为重要的是理清楚自己该做什么。来实现业务。由于不了解业务,还是走了很多弯路。本可以不用这么做,还是这么做了。自然你最傻瓜的按照用户的方式去实现是没有问题的。

会使后面的人难以维护,可以精简的流程也变的复杂。冗余很多。那目前还不是我的层次,达不到。只能按照用户的想法去做。

  因为是BW ON HANA 系统。能在BW 里将数据处理好 就在BW, 在HANA 视图里做简单的JOIN  。

  WEBI 里复杂的逻辑判断做展示。没有什么绝对。看那个好做。我所掌握大体如此。

  BW 里是我的弱项(业务以及ABAP)。 而HANA 的带参数的存储过程让我也挺苦恼的。(主要没有业务,或者轮不到我上手写存储过程)

接到业务报表需求:

业务的陈述的逻辑,转为数据库关系,或计算机能理解的语言。

1    习惯用VISIO ,理清楚LOGIC。

    画出每个DSO主表或者主数据表。相互涉及的关系。表关系,通过什么字段(主键或者维度字段)关系起来。

    寻找解决的方法。

  (这是个DEMO)很丑,我知道,可是有用

  

 BW取数

纯BW 取数由于有主数据,导航属性。制作成QUERY 时可以直接拖出来使用。不会存在已经 经销商代码,还要在DSO取出明细的经销商名称的维度显示(一般做导航属性)。

可是HANA经常会碰到这样的情况,你取这DSO的激活表,可它并不会带出导航属性给你 。

那只能在HANA里做主数据(维度表),要是没做。只能反复JOIN 。不麻烦,影响美观,而且没必要。 最好还是在BW里清洗一遍。处理完整。

第一种方式取主数据表,单个值。

* 获取经销商名称

DATA : g_/BIC/Z0JXSDM  TYPE  /BIC/PZ0JXSDM-/BIC/Z0JXSDM .

LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS> .

        CLEAR g_/BIC/Z0JXSDM .
g_/BIC/Z0JXSDM = <RESULT_FIELDS>-/BIC/Z0JXSDM . SELECT SINGLE /BIC/Z0JXSMC FROM /BIC/PZ0JXSDM
INTO <RESULT_FIELDS>-/BIC/Z0JXSMC
WHERE /BIC/Z0JXSDM = g_/BIC/Z0JXSDM . ENDLOOP.

第二种获取DSO表中的值。

 SELECT /BIC/ZMATERIAL CALQUARTER /BIC/ZSFZR /BIC/ZSFJRDGMB FROM
/BIC/AZCZJTO2600
INTO CORRESPONDING FIELDS OF TABLE IT_ZCZJTO26 FOR ALL ENTRIES IN
RESULT_PACKAGE
WHERE /BIC/ZMATERIAL = RESULT_PACKAGE-/BIC/ZMATERIAL AND CALQUARTER
=
RESULT_PACKAGE-CALQUARTER. *循环将内表里IT_ZCZJTO26 分配给工作区 WA_ZCZJTO26 。做了分配
LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS> .
READ TABLE IT_ZCZJTO26 INTO WA_ZCZJTO26
WITH KEY /BIC/ZMATERIAL = <RESULT_FIELDS>-/BIC/ZMATERIAL CALQUARTER
=
<RESULT_FIELDS>-CALQUARTER.
*执行成功 ,结果是否折让等于工作区 WA_ZCZJTO26-/BIC/ZSFZR.,是/BIC/AZCZJTO2600 里的字段。
IF sy-subrc = .
<RESULT_FIELDS>-/BIC/ZSFZR = WA_ZCZJTO26-/BIC/ZSFZR.
<RESULT_FIELDS>-/BIC/ZSFJRDGMB = WA_ZCZJTO26-/BIC/ZSFJRDGMB.
ENDIF.
ENDLOOP.

这就是我所知道的两种方式了。 都是比较简单易懂,取数操作。

其次充分应用BW DSO 转换模型,过滤 。很多读取主数据,读取DSO,公式方式,思考是不是一定要写这ABAP。(能不写就不写,后人维护交接工作难受。)

BW关建值汇总

插嘴说一句DSO 的特性。方便关建值汇总。  

同一个请求中,加载的数据条数由主键决定,相同主键取一条.DSO中主键相同的数据会覆盖取最后一条记录.汇总时会取所有记录的汇总值.

用于再往上建一层DSO 取汇总值。关键在于主键的设置,例如只取经销商的提车量。那么你只需要将经销商设为主键就好。转换里更改提车量覆盖为汇总。

HANA 也可以做到。建一个project 映射 只取两个字段,上一层aggregate 汇总提车量就好。 具体看自己想怎么做吧。

我觉得BW做的话,会比较好。减少了HANA的视图,模型过多影响BW而已。有改动会比较麻烦。  走传输,basis,写报告

HANA 做的话灵活是灵活了,业务需求更改花不了多少,一下就好。但是会显得视图非常多,冗余。主要没必要贪轻松。还是看业务需求。

具体情况具体分析

BW ON HANA 业务模型关系与数据取数的更多相关文章

  1. BIEE入门(三)业务模型层

    正如它的名字所示(Business Model and Mapping Layer),业务逻辑层需要把物理层的数据源以一种业务用户的视角来重新组织物理层的各个数据源(所谓的Mapping),同时在业务 ...

  2. Quick BI取数模型深度剖析

    开发图表最关键的点在于选择准确的图表类型展示准确的数据,而准确的数据往往依赖于一个强大的取数模型,因此设计一个好的取数模型不仅可以解决数据安全的问题,更可以帮助每个访问者高效触达自己想要的数据,开发者 ...

  3. 从EF的使用中探讨业务模型能否脱离单一存储层完全抽象存在

    上次赶时间,就很流水账地写了上次项目对EF的一次实践应用模式,因为太长了,也没能探讨太多,所以再继续扩展. 这次想探讨的是,实体,如果作为类似于领域模型的业务模型存在,它的数据能否来自不同的数据源.这 ...

  4. 分析业务模型-类图(Class Diagram)

    分析业务模型-类图(Class Diagram)     分析业务模型-类图(Class Diagram)(上) 摘要:类图(Class Diagram)可能是用得最多的一种UML图.类图的基本语法并 ...

  5. How to: Create a Business Model in the XPO Data Model Designer 如何:在 XPO 数据模型设计器中创建业务模型

    This topic provides step-by-step instructions on how to use the XPO Data Model Designer in XAF appli ...

  6. Laravel 5.1 文档攻略 —— Eloquent:模型关系

    简介 其实大家都知道,数据表之间都是可以关联的,前面讲过了,Eloquent ORM是数据模型操作代替表操作,那么表的关联查询,在Eloquent这里也就是模型间的关联查询,这就是本章的主要内容: E ...

  7. Yii2 AR模型搜索数据条数不对,AR模型默认去重

    最近在做Yii2的项目时, 发现了一个yii2 自带的Ar模型会自动对搜索出来的字段去重. 默认去重字段: id,  其他字段暂没发现 1. 例如: public function fields { ...

  8. Django之ORM-model模型关系

    模型类关系 1)一对多关系例:图书类-英雄类 models.ForeignKey() 定义在多的类中. 2)多对多关系例:新闻类-新闻类型类 体育新闻 国际新闻models.ManyToManyFie ...

  9. 【BW系列】SAP 讲讲BW/4 HANA和BW on HANA的区别

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BW系列]SAP 讲讲BW/4 HANA和BW ...

随机推荐

  1. ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost'

    安装ranger时MySQL报错,查看MySQL数据库,发现host=localhost这一列被删除了,插入这一列就好了,具体操作如下: 解决办法: 进入MySQL数据库 use mysql: &qu ...

  2. SQL2008 R2直接恢复 mdf后缀数据文件

    数据库默认存储地址为   C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA  ,那么我首先把朋友给的,md ...

  3. 【转载】Java中使用Jedis操作Redis

    1 package com.test; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.Li ...

  4. brew和brew cask安装

    brew 是从下载源码解压然后 ./configure && make install ,同时会包含相关依存库.并自动配置好各种环境变量,而且易于卸载. 这个对程序员来说简直是福音,简 ...

  5. socket()模块和套接字对象的内建方法

    一.socket()模块函数 要使用socket.socket()函数来创建套接字,其语法如下: socket(socket_family,socket_type,protocol=0) 如上所述,s ...

  6. PAT 天梯赛 L1-024. 后天 【取余】

    题目链接 https://www.patest.cn/contests/gplt/L1-024 题意 给出一个数,表示星期几,输出后天是星期几 思路 取余的时候要小心点 AC代码 #include & ...

  7. Java 集合系列13之 TreeMap详细介绍(源码解析)和使用示例

    转载 http://www.cnblogs.com/skywang12345/p/3310928.html https://www.jianshu.com/p/454208905619

  8. 机器学习算法之:KNN

    基于实例的学习方法中,最近邻法和局部加权回归法用于逼近实值或离散目标函数,基于案例的推理已经被应用到很多任务中,比如,在咨询台上存储和复用过去的经验:根据以前的法律案件进行推理:通过复用以前求解的问题 ...

  9. Qt移植对USB鼠标键盘、触摸屏的支持

    .USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如 ...

  10. Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案

    最近的项目中涉及到了应用ajax请求后台系统登录,身份认证失败,经过不断的调试终于找到解决方案. 应用场景: 项目测试环境:前端应用HTML,js,jQuery ajax请求,部署在Apache服务器 ...