BW/4HANA听课笔记

1.本地SQL,BW/4HANA对象和HANA VIEW互相访问;

2.高级分析功能数据分析预测;

3.InfoOjbect:Characteristics(维度),Key figures(度量)

Characteristics支持时间,层级,多语言支持;

Key figures不可累积库存,金额单位的度量;

aDSO:高级存储物件;

创建类似数据库表。构建模型。

没有复杂结构,星形结构。

CompositeProviders:虚拟混合数据集市

做数据union,join

Analytic queries:报表层面

filter,

calculation

Data Source

ROOSOURCE表,数据源信息。

ABR类型识别删除增量;

ADD类型支持聚合数据源;

AIE类型after image, FI-AR/AR多用这种数据源表;

RODELTAM表详细说明各种类型特征表;

ERP系统T-Code

RSA1     BW Admin Console

RSO2    Maintain DataSource(ERP CRM BW)

RSA6     DataSource Hierarchy(ERP CRM BW)

RSPC     BW Process Chain

CMOD  BW Query Enhancement

RSRT     BW Query Monitor

RSA5 - 激活数据源

RSA6 - 查看已经激活的数据源

RSA3 - 检查抽取器是否可以正常抽数

RSA2 - 查看标准数据源

RSO2 - 开发数据源

LBWE - 激活后勤数据源、设置collective run作业、数据更新方式

LBWG - 删除后勤数据源Setup Table数据

SBIW - 填充后勤数据源Setup

BW4创建数据源

BW4后不能在GUI使用Tcode新建数据源。需要使用BWT在Eclipse或HANA
Studio创建数据源。

选择Source
System->右键New DataSource。

选择Copy
DataSource或者配置Data
Source。

选择数据库表创建数据源。

设置数据源名字,描述信息,点击Finish。

保存激活数据源。

根据数据源创建ADSO

设置Data Tiering Properties,划分数据热冷区。

数据字段,数据分区。

添加一个Filed,FLAG_SEATS CHAR 1。

选择ADSO,右键创建Transformation。

通过End Routine设置FLAG_SEATS值

编写HANA Script:

outTab = SELECT

CARRID,

CONNID,

FLDATE,

RECORDMODE ,

CASE WHEN SEATSOCC > 130 THEN 'X' ELSE '' END AS FLAG_SEATS,

PRICE,

CURRENCY,

PLANETYPE,

SEATSMAX,

SEATSOCC,

PAYMENTSUM,

SEATSMAX_B,

SEATSOCC_B,

SEATSMAX_F,

SEATSOCC_F,

RECORD,

SQL__PROCEDURE__SOURCE__RECORD

FROM :inTab;

选择ADSO,右键创建DTP

设置DTP,Background Processing 并行执行数量。

Excute in Background,BW
Cockpit看到Request;

Simulate in Dialog,这个不会有Request;

选择Request,激活。

选择ADSO,查看数据

修改Partition,点击链接Remodeling

执行更新冷热分区。

创建本地文件数据源

选择None类型

设置DataSource名字,描述信息。

创建数据源增强

原始方式创建数据源:

Tcode:RSO2创建数据源

自动创建ExtractStruct:ZOXB000191,

指定Selection,Hide
field。

Tcode:RSA6增强结构

创建字段Flag

Tcode:RSA3,输入DataSource名,点击执行。

点击ALV
GRID,查看抓取数据。

Tcode:CMOD

设置attributes,创建enhancement

Enhancement:RSAP0001

这种方式只能一个Project中。

方式2:BADI

创建BAdI实现,RSU5_SAPI_BADI.

实现名:ZTDS_SFLIGHT_BADI

点击激活,实现Interface类:ZCL_IM_TDS_SFLIGHT_BADI

DATA_TRANSFORM 用于一般数据的增强(事务数据,主数据和文本)

HIER_TRANSFORM 用于层次数据的增强

新建method,参数和方法data_transform一致,少了I_DATASOURCE

 method M_SFLIGHT.
    FIELD-SYMBOLS:<fs_source> TYPE ZOXB000191.
    DATA:lv_rate TYPE P DECIMALS 2.
    LOOP AT C_T_DATA ASSIGNING <fs_source>.
      lv_rate = <fs_source>-seatsocc / <fs_source>-seatsmax.
      IF lv_rate > '0.5'.
        <fs_source>-flag = 'X'.
      ENDIF.
    ENDLOOP.
  endmethod.

data transform方法中调用根据数据源调用method:

   DATA: LV_METHOD TYPE SEOCMPNAME.
*     check if any data is extracted
    CHECK C_T_DATA IS NOT INITIAL.
*     get method name for datasource
*     add one character as methods can't start with a number
    IF I_DATASOURCE = 'ZTDS_SFLIGHT'.
      CONCATENATE 'M_' 'SFLIGHT' INTO LV_METHOD.
    ENDIF. *     check whether method exist
    SELECT SINGLE CMPNAME
    INTO LV_METHOD
    FROM SEOCOMPO
    WHERE CLSNAME = 'ZCL_IM_TDS_SFLIGHT_BADI'
    AND CMPNAME = LV_METHOD.
    CHECK SY-SUBRC EQ 0.
*     check method is implemented
    CALL METHOD (LV_METHOD)
    EXPORTING
          I_UPDMODE    = I_UPDMODE
          I_T_SELECT   = I_T_SELECT
          I_T_FIELDS   = I_T_FIELDS
    CHANGING
          C_T_DATA     = C_T_DATA
          C_T_MESSAGES = C_T_MESSAGES.

再次Tcode:RSA3,抓取数据,调用增强赋值Flag

创建DataSource

Tcode:RSO2

方式1:

Application Component:Datasource的所在层级结构;

Extraction fromView:数据来源数据库中表,View;

方式2:

也可以使用Function Module,需要創建Extrac. Struct.。

點擊Extraction by FM

創建對應data source結構的Sturcture;

創建獲取數據的Function Module;

參考Function:RSAX_BIW_GET_DATA_SIMPLE;

選擇copy參考Function;

E_T_DATA是Function最終返回結果表,需要我們修改為自己需要返回的數據結構。

Copy對應代碼,修改E_T_DATA返回的數據。

修改點1:Tables:SFLIGHT,修改我們需要查詢數據表,這裡我們不變

修改點2:修改我們需要的作為Selection的欄位,這裡我們不變,就查SFLIGHT;

RANGES: L_R_CARRID  FOR SFLIGHT-CARRID,
          L_R_CONNID  FOR SFLIGHT-CONNID.

修改點3:將I_DSOURCE,WHEN條件,換成我們的DATASOUCE名字,然後注釋掉Other條件下代碼,我們創建DataSource為ZTOM_DS,修改為這個;

CASE I_DSOURCE.
      WHEN 'ZTOM_DS'.

修改點4:循環創建Selection條件;

      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CARRID'.
        MOVE-CORRESPONDING L_S_SELECT TO L_R_CARRID.
        APPEND L_R_CARRID.
      ENDLOOP.

修改點5:將我們修改的條件加入查詢;

      OPEN CURSOR WITH HOLD S_CURSOR FOR
      SELECT (S_S_IF-T_FIELDS) FROM SFLIGHT
                               WHERE CARRID  IN L_R_CARRID AND
                                     CONNID  IN L_R_CONNID.

Function源碼:

FUNCTION RSAX_BIW_GET_DATA_SIMPLE.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(I_REQUNR) TYPE  SRSC_S_IF_SIMPLE-REQUNR
*"     VALUE(I_DSOURCE) TYPE  SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL
*"     VALUE(I_MAXSIZE) TYPE  SRSC_S_IF_SIMPLE-MAXSIZE OPTIONAL
*"     VALUE(I_INITFLAG) TYPE  SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL
*"     VALUE(I_READ_ONLY) TYPE  SRSC_S_IF_SIMPLE-READONLY OPTIONAL
*"     VALUE(I_REMOTE_CALL) TYPE  SBIWA_FLAG DEFAULT SBIWA_C_FLAG_OFF
*"  TABLES
*"      I_T_SELECT TYPE  SRSC_S_IF_SIMPLE-T_SELECT OPTIONAL
*"      I_T_FIELDS TYPE  SRSC_S_IF_SIMPLE-T_FIELDS OPTIONAL
*"      E_T_DATA STRUCTURE  SFLIGHT OPTIONAL
*"  EXCEPTIONS
*"      NO_MORE_DATA
*"      ERROR_PASSED_TO_MESS_HANDLER
*"---------------------------------------------------------------------- * Example: DataSource for table SFLIGHT
  TABLES: SFLIGHT. * Auxiliary Selection criteria structure
  DATA: L_S_SELECT TYPE SRSC_S_SELECT. * Maximum number of lines for DB table
  STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE, * counter
          S_COUNTER_DATAPAKID LIKE SY-TABIX, * cursor
          S_CURSOR TYPE CURSOR.
* Select ranges
  RANGES: L_R_CARRID  FOR SFLIGHT-CARRID,
          L_R_CONNID  FOR SFLIGHT-CONNID. * Initialization mode (first call by SAPI) or data transfer mode
* (following calls) ?
  IF I_INITFLAG = SBIWA_C_FLAG_ON. ************************************************************************
* Initialization: check input parameters
*                 buffer input parameters
*                 prepare data selection
************************************************************************ * Check DataSource validity
    CASE I_DSOURCE.
      WHEN '0SAPI_SFLIGHT_SIMPLE'.
      WHEN OTHERS.
        IF 1 = 2. MESSAGE E009(R3). ENDIF.
* this is a typical log call. Please write every error message like this
        LOG_WRITE 'E'                  "message type
                  'R3'                 "message class
                  '009'                "message number
                  I_DSOURCE   "message variable 1
                  ' '.                 "message variable 2
        RAISE ERROR_PASSED_TO_MESS_HANDLER.
    ENDCASE.     APPEND LINES OF I_T_SELECT TO S_S_IF-T_SELECT. * Fill parameter buffer for data extraction calls
    S_S_IF-REQUNR    = I_REQUNR.
    S_S_IF-DSOURCE = I_DSOURCE.
    S_S_IF-MAXSIZE   = I_MAXSIZE. * Fill field list table for an optimized select statement
* (in case that there is no 1:1 relation between InfoSource fields
* and database table fields this may be far from beeing trivial)
    APPEND LINES OF I_T_FIELDS TO S_S_IF-T_FIELDS.   ELSE.                 "Initialization mode or data extraction ? ************************************************************************
* Data transfer: First Call      OPEN CURSOR + FETCH
*                Following Calls FETCH only
************************************************************************ * First data package -> OPEN CURSOR
    IF S_COUNTER_DATAPAKID = 0. * Fill range tables BW will only pass down simple selection criteria
* of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.
      LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CARRID'.
        MOVE-CORRESPONDING L_S_SELECT TO L_R_CARRID.
        APPEND L_R_CARRID.
      ENDLOOP.       LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'CONNID'.
        MOVE-CORRESPONDING L_S_SELECT TO L_R_CONNID.
        APPEND L_R_CONNID.
      ENDLOOP. * Determine number of database records to be read per FETCH statement
* from input parameter I_MAXSIZE. If there is a one to one relation
* between DataSource table lines and database entries, this is trivial.
* In other cases, it may be impossible and some estimated value has to
* be determined.
      OPEN CURSOR WITH HOLD S_CURSOR FOR
      SELECT (S_S_IF-T_FIELDS) FROM SFLIGHT
                               WHERE CARRID  IN L_R_CARRID AND
                                     CONNID  IN L_R_CONNID.
    ENDIF.                             "First data package ? * Fetch records into interface table.
*   named E_T_'Name of extract structure'.
    FETCH NEXT CURSOR S_CURSOR
               APPENDING CORRESPONDING FIELDS
               OF TABLE E_T_DATA
               PACKAGE SIZE S_S_IF-MAXSIZE.     IF SY-SUBRC <> 0.
      CLOSE CURSOR S_CURSOR.
      RAISE NO_MORE_DATA.
    ENDIF.     S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.   ENDIF.              "Initialization mode or data extraction ? ENDFUNCTION.

點擊保存,選擇我們需要作為Selection的欄位;

Tcode:RSA6,這裡可以看到我們選擇的作為Selection的欄位,但是只有CARRID,CONNID有效;

點擊Extraction,可以看到結果ALV Grid;

创建Composite Provider

右键->New->CompositeProvider

创建Query

Customer Exit方式创建Variable

Tcode:SE18,

BADI增强Variable

RSROA_VARIABLES_EXIT

右键创建Implementations。ZCL_VAR_CALLAST6YEAR,描述

点击激活

创建Filter,监控OCALYEAR这个Character。

双击查看我们创建的Implementations.

实现ZCL_VAR_CALLAST6YEAR的process方法。

示例代码:

    DATA:ls_range LIKE LINE OF c_t_range.
DATA:ls_var_range LIKE LINE OF i_t_var_range.
IF i_step = 2.
CASE i_vnam.
WHEN 'ZV_LAST6YEAR'.
CLEAR ls_range.
READ TABLE i_t_var_range INTO ls_var_range WITH KEY vnam = 'ZV_YEAR'.
IF sy-subrc = 0.
ls_range-high = ls_var_range-low.
ls_range-low = ls_var_range-low - 6.
ls_range-sign = 'I'.
ls_range-opt = 'BT'.
APPEND ls_range TO c_t_range.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDIF.

Offset方式,创建Selection

右键->Change Offset Value。

Tcode:RSRT,执行Query查看效果。

Query权限控制

创建分析权限

User Roles:

https://help.sap.com/viewer/107a6e8a38b74ede94c833ca3b7b6f51/2.0.9/en-US/4c6a9fd7a53f08c0e10000000a42189c.html?q=User%20Role

Tcode:RSECADMIN,创建分析权限。Ind. Maint.创建权限。

创建权限。

1.生成标准权限对象;

2.添加新的COUNTRY;

3.Intervals点击添加筛选权限值;

设定完成保存,然后Activate Authorization。

Role权限设置:

S_RS_ADSO:设置ADSO权限;

S_RS_AUTH:设置分析权限;

S_RS_COMP:设置Infocube,设置query;

插入ZAUCOUNTRY。

查看Query

Tcode:RSRT

New of SAPHANA2.0

SDA:smart data access,远程访问数据

SDI:数据抽取到BW,实时,分批。

SLT:数据传输,实时,分批。DS:抽取本地活页夹文件。

显示SQL Visualize Plan

数据大表提升效能:创建分区,超过billion数据。使用常用where条件列作为分区条件。

Calculation View:Static Cache.

将部分数据临时存储到Cache中。

计算引擎:HEX引擎替换:JOIN,OLAP;

ESX引擎替换:ROW;

DTO

DTO :Data Tiering Technology

数据冷热:‘Hot’:In-memory Store;‘Warm’:reduce In-memory Store,‘Cold’:Disk;

Object Level:按照表划分;

Partition Level:按照不同数据部分;

Tcode: RSOADSODTO

选择Temperature设置温度,Execute

点击Execute

Housekeeping

Housekeeping:清除不需要数据。

RSBATCH生成的数据,表RSBATCHDATA*等。

Process chain log数据

BALDAT,DBTABLOG,等表数据。

Tcode:RSDDSTAT

清除Log记录:

Report:RSPC_LOG_DELETE

Tcode:SLG2

SM58:清理RFC等执行Log;

Report:RSPM_NEW_ERRORLOG_DELETE

Processing Chain

全量更新,先删除在load数据;

增量更新,可以识别删除数据操作;

BW4 SP04开始支持Data flow “generate process chain automatically”

You can find all the API function modules for process chain in function group RSPC_API:

Tcode:RSPC,Process Chain

混合建模路径

HANA View ->Open ODS View->Composite Provider

数据落地到BW

Composite Provider->ADSO

SAP BW/4HANA 听课笔记的更多相关文章

  1. SAP BW标准模型简介(BW星形模型 BW Star Schema )

    标准星型模型是 数据仓库中一种常用的组织信息和数据的多维数据模型.它由中心的一个事实表(Fact Table)和一些围绕它的维度表(Dimensional Table)组成.  事实(Fact)着眼于 ...

  2. cs231n spring 2017 lecture9 CNN Architectures 听课笔记

    参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的sh ...

  3. SAP BW 数据库表命名规则

    SAP BW 数据库表命名规则 已有 315 次阅读2012/6/8 15:55 |系统分类:专业内容| SAP, 命名, 数据库表 Namings for Cube: /BI<C OR DIG ...

  4. 应用SAP PI实现SAP BW数据仓库对于第三方系统数据完美集成以及DELTA加载的分析

    注明:本篇的技术性细节参考了SAP SCN上的一篇SAP PI 和BW集成的文章,本篇文章并不打算过多探讨实现的技术细节,因为在SCN上的这篇英文文章已经完全涵盖了技术细节和配置步骤 大家可以通过搜索 ...

  5. SAP S/4HANA生产订单创建时使用的工厂数据是从什么地方带出来的

    大家如果使用我github上的这段代码创建S/4HANA的生产订单时,一定会发现,我在代码里并没有硬编码来指定生产订单的ID,然而运行时会发现我在系统里配置的这个2800被自动使用了,这是怎么做到的呢 ...

  6. SAP C/4HANA Sales Cloud使用OData服务和第三方系统集成的一个具体例子

    出于工作需要,Jerry写了这篇文章,给某些Partner做参考. 以前Jerry曾经介绍过SAP C/4HANA的五朵云到底包含哪些具体产品,其实在SAP官网上有更权威的中文解释: https:// ...

  7. SAP C/4HANA与人工智能和增强现实(AR)技术结合的又一个创新案例

    今天这篇迟到的文章,来自我的同事Aviva. 去年SAP C/4HANA发布之后,SAP的从业者们可能或多或少都读过一些来自SAP官方渠道,比如微信公众号"SAP天天事"发布的一些 ...

  8. SAP C/4HANA到底包含哪些产品?

    2018年6月的SAPPHIRE(蓝宝石大会)上, SAP发布了新的商务软件套件:C/4HANA,意在通过SAP C/4HANA将前台应用和SAP Digital Core(数字化核心)S/4HANA ...

  9. bayaim_java_入门到精通_听课笔记bayaim_20181120

    ------------------java_入门到精通_听课笔记bayaim_20181120--------------------------------- Java的三种技术架构: JAVAE ...

  10. 【BW系列】SAP BW on HANA 迁移问题

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

随机推荐

  1. [C++]const_cast,dynamic_cast,reinterpret_cast,static_cast转型

    C++四种新式转型: const_cast(expression) dynamic_cast(expression) reinterpret_cast(expression) static_cast( ...

  2. 快速排序——C++左闭右开区间实现

    代码 #include<iostream> #include<vector> using namespace std; class Solution { public: //快 ...

  3. Spring MVC复习 —— 搭建Spring MVC项目

    Spring MVC复习 -- 搭建Spring MVC项目   摘要:这篇笔记是关于Spring MVC的复习,内容是如何搭建Spring MVC项目.   让我们快速的搭建一个Spring MVC ...

  4. 遗传算法 Genetic Algorithms

    遗传算法 Genetic Algorithms 遗传算法是一种"adaptive heuristic search algorithm"(自适应启发式搜索算法),虽不明.但觉厉.其 ...

  5. angular 输入框获取焦点失效的问题

    重点说明: 假如先设定了 输入框disabled又打开,然后执行获取焦点,可能会失效,这个时候可以把getFocus函数放在定时器里,1秒钟后执行,就可以了哦~ 具体代码如下 html         ...

  6. 12月20日内容总结——ajax补充知识点、多对多外键的三种创建方式、django内置序列化组件、批量操作数据、分页器推导思路与自定义分页器的使用、form组件

    目录 一.ajax补充说明 二.多对多三种创建方式 三.django内置序列化组件(drf前身) 四.批量操作数据 五.分页器思路 六.自定义分页器的使用 七.form组件 forms组件介绍 For ...

  7. Typora软件的使用、编程与编程语言、计算机基础、五大组成部分、三大核心硬件、操作系统

    目录 一.Typora软件的下载与使用 (1).软件下载 (2).markdown语法 二.编程与编程语言 (1).什么是语言 (2).什么是编程 (3).什么是编程语言 三.计算机本质 四.计算机五 ...

  8. JavaScript 疑难记录(未解决)

    异步迭代器与生成器的联系和区别

  9. 【rust】rsut基础:模块的使用一、mod 关键字、mod.rs 文件的含义等

    本文内容 这篇文章是实战性质的,也就是说原理部分较少,属于经验总结,rust对于模块的例子太少了.rust特性比较多(悲),本文的内容可能只是一部分,实现方式也不一定是这一种. 关于 rust 模块的 ...

  10. JAVA虚拟机14 类加载器

    1.简介 Java虚拟机设计团队有意把类加载阶段中的"通过一个类的全限定名来获取描述该类的二进制字节流"这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的 ...