BPC Notes

BPC Terminology

Changes in terminology : (10 vs 7.5)

  • Environment – Appset
  • Models – Application
  • Control Settings – Validation Rules
  • Logic Script – Script Logic
  • Audit Report settings – System report settings

BPC 10.1

Regarding de Unified Planning Model:

  • Underlying models uses the IP (PAK) backend (BW datamodels instead of BPC dimensions…)
  • Planning functions are IP based (ABAP, FOX) vs BPC based (script logic…)
  • The EPM Add-In + BPC Web front end (SAP UI5 based) are used as front end
  • BPC functions as BPF, work status, data auditing are used

Here is a good overview of BPC 10.1: The SAP BPC 10.1 FAQ

Differences between versions 7.5 vs 10.0


SAP Document: Overview and What’s New in SAP BusinessObjects EPM 10.0


  1. No .net server in 10 where as it is required in 7.5. All services will be exposed as RESTful web services for internal communication between BPC clients and server.
  2. Granual transport is possible in 10 whereas it is not possible in 7.5.
  3. New UI look for BPC web in 10 as compared to 7.5. and common EPM Add-in in 10. Business user interface is now flex based in 10.
  4. No more active directory or CMS, net weaver authorization is required in 10.
  5. In BPC 10, data manger will now support loading directly from SAP ERP system both in FULL & DELTA mode through SAP delivered extractors.

1. SAP BPC 10 replaces SAP BPC 7.5
2. SAP BPC 10 requires SAP BW 7.3 system and standalone .NET server is no longer required
3. SAP BPC 10 can work on SAP HANA
4. Old EVDRE has been replaced by SAP EPM 10 client. Old EVDREs will still work but wizard to create new EVDRE is no longer present.
5. Versions supported by SAP BPC 10 (A) Windows – Vista, XP and 7.
(B) Internet explorer 7 and 8
(C) Microsft office 2007 and 2010.
6. Incremental consolidation is supported by SAP BPC 10.(Ability to run FX and consolidation only on data that has been changed since last run)
7. SAP BPC MS and NW 7.5 both use automatic BPF.
8. Free standing Admin client has been deprecated and all of the functionality is now presented through the new web interface.

The most significant difference between BPC 7.5 and 10 is Excel reporting. To my mind the EV functions in BPC 7.5 were much simpler for the finance people and they were able to create and maintain templates practically without IT support. Not the case for BPC 10.

FM To calculate Contract Next Adjustment Date

In REFX transaction RECN (Contract), you can check the Next Adjustment Date (calculated) in the tab Adjustments / Sub Tab Conditions in column Next Poss Adjustment.

The following FM reproduces the same calculation which uses method GET_NEXTADJMDATE of the interface IF_RECD_CONDITION.

*"*"Local Interface:

    lrt_recntype type range of RECNCONTRACTTYPE WITH HEADER LINE,
    lrt_condtype type range of RECDCONDTYPE WITH HEADER LINE.

    l_numb type     RECDCONDNUMBER,
    lo_condition_mngr TYPE REF TO IF_RECD_CONDITION_MNGR,
    lo_condition    TYPE REF TO IF_RECD_CONDITION,
    ls_condition TYPE RECD_CONDITION,
    l_max type  REAJNEXTADJMDATE,
    lo_contract     TYPE REF TO if_recn_contract,
    ls_contract     TYPE recn_contract.

  if lrt_recntype[] is initial.
*    No filtering on condtions for the moment
*    If necessary to filter on rent, need to add
*    1FI, 1BC, 1CC 1DIMF?, 1PFO, 1ER, 1WO	, 1VE, 1UC
*    lrt_condtype-sign = 'I'.
*    lrt_condtype-option = 'BT'.
*    lrt_condtype-low = '0010'.
*    lrt_condtype-high = '0019'.
*    append lrt_condtype.

    lrt_recntype-sign = 'I'.
    lrt_recntype-option = 'EQ'.
    lrt_recntype-low = 'ZRDD'.
    lrt_recntype-high = ''.
    append lrt_recntype.
    lrt_recntype-sign = 'I'.
    lrt_recntype-option = 'EQ'.
    lrt_recntype-low = 'ZRIN'.
    lrt_recntype-high = ''.
    append lrt_recntype.


  select single * from vicncn into CORRESPONDING FIELDS OF ls_contract
    WHERE recnnr = i_recnnr
      and bukrs = i_bukrs.

  check ls_contract-recntype in lrt_recntype.
  check ls_contract-RECNENDABS > sy-datum.

*     get object
  CALL METHOD cf_recn_contract=>find_by_detail
      is_detail   = ls_contract
      ro_instance = lo_contract
      OTHERS      = 0.

  IF lo_contract IS BOUND.
    lo_condition_mngr = lo_contract->get_condition_mngr( ).

    l_numb = '0001'.

      CALL METHOD lo_condition_mngr->GET_CONDITION
          ID_NUMBER    = l_numb
          RO_CONDITION = lo_condition.
      if lo_condition is not BOUND.
          RS_DETAIL = ls_condition.

      if ls_condition-condtype in lrt_condtype.
        CALL METHOD lo_condition->GET_NEXTADJMDATE
            RD_NEXTADJMDATE = l_next.
        if E_NEXTADJMDATE < l_next.
          E_NEXTADJMDATE = l_next.
      l_numb = l_numb + 1.

The FM is available in SLNK format here.
Download – FUGR_ZREFX_INDEXATION.slnk – 7.7 kB – 232   downloads

How to create an instance of CL_RECN_CONTRACT

To create an instance of the Contract object, for a given contract you can use method FIND_BY_DETAIL of the Factory Class CF_RECN_CONTRACT. Here is an example code:

lo_contract TYPE REF TO if_recn_contract,
ls_contract TYPE recn_contract.

select single * from vicncn into CORRESPONDING FIELDS OF ls_contract
WHERE recnnr = i_recnnr
and bukrs = i_bukrs.

* get object

CALL METHOD cf_recn_contract=>find_by_detail
is_detail = ls_contract
ro_instance = lo_contract


ABAP – UUIDs and random strings

If you want to generate a random string in ABAP, you can use the following FM where you can specify the length of the generated random string: CRR_GET_RANDOM_STRING

If you want a random and unique string, then you need to use the UUID generation class cl_system_uuid which can be accessed in either instance or static form. See the API for the UUID generation document attached to SAP Note 935047 – Creating and using GUIDs (UUIDs) or click on the download below.


Download – UsingTheUUIDABAPInterface2.pdf – 30.0 kB – 399   downloads

Download – SAPNote0000935047_CreateUseUUIDs.pdf – 38.1 kB – 372   downloads


Analyze content of BW Transport Requests

While being displayed with their human readable description in the BW Administration Workbench (RSA1) some BW transportable objects are identified with a technical name (in UUID format) in the Transport Request object list. This can be quite annoying when one is trying to troubleshoot transport related errors. For instance when someone is trying to determine which Transformations, DTPs or Query Elements are contained in a given transport.

The following program lists all the objects of a transport by their human readable name. The program is in SAPLINK format.

A similar program was published in the SCN code gallery. See the post: BW Transport Validation Utility

Download – NUGG_ZBI_TRANSPORT_REQUEST_CHECK.nugg – 26.7 kB – 372   downloads

Update – Feb 10 2016 – Transaction RS09 or report RSAWBN_REQ_TEST_TB provide the same functionnality. See this SCN Post

BW Transport Validation Utility

This program was originally posted in SCN code gallery. I tested it on my system and created a SAPLINK file for it (see download button below).

This utility lists the contents of a BW Transport Request and translates BW object IDs into readable format.

This applies to

  • Transformations – TRFN
  • Update Rules – UPDR
  • Query Elements – ELMT
  • DTPs – DTPA


Download – PROG_ZBW_TRANSPORT_ANALYSIS.slnk – 71.3 kB – 396   downloads

See original article from Kin C. Chan here

SAP BW Master Data Deletion Program

Up to BW 7.3 included program RSDMD_DEL_BACKGROUND could be used to run MD deletions within Process Chains.
However already in 7.3 this program is obsolete and is to be replaced by a new program: RSDMDD_DELETE_BATCH. See note “1705824 – Old master data deletion is obsolete“.

The parameters of the new program are different, and you can find an explanation in the following post: http://scn.sap.com/docs/DOC-33041