reyemsaibot

SAP BI Blog about SAP BW/4HANA, Analysis for Office and SAP HANA - by Tobias Meyer

Blog

  • Analysis Office Insert Product Image

    In the comments of this blogpost on blogs.sap.com, Stephen Hobbs showed his idea of insert a product
    Image besides the crosstab in combination with the new Customize User Interface function. So I make my
    own thoughts how I can realize a thing like this.

    My first thought was, where can I store the pictures and how can I get a product number and the picture together. The solution is very easy, I created a folder on my hard drive and put the
    pictures in it. The name of the pictures are the same like the product numbers.

    SAP Analysis for Office Crosstab without Product Images
    SAP Analysis for Office Crosstab without Product Images
    Windows Explorer Images of the products
    Windows Explorer Images of the products


    The next step is to write the corresponding VBA code, so that the pictures are insert into a cell. Open the Visual Basic Editor (ALT + F11) and
    insert a new module. After we have to define serveral variables.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim material As String
    Dim i As Integer
    Dim picturePath As String
    Dim rowMax As Long
    Dim picture As Object
    Dim t As Double
    Dim l As Double
    Dim w As Double
    Dim h As Double
    

    Now we have to find out, how many rows our crosstab has.

    1
    2
    'Number of rows
    rowMax = Range("SAPCrosstab1").Rows.Count
    

    Now we can add our pictures.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    For i = 5 To rowMax
    
      'Set height for each row
      Rows(i & ":" & i).RowHeight = 100
      'Material
      material = Sheet3.Cells(i, 3).Value
      'Define Picture Path
      picturePath = "U: 40 Analysis Office Workbookspics" & material & ".jpg" 
      
      Set picture = ActiveSheet.Pictures.Insert(picturePath)
      'Get size of the Picture Cell
      With Range("B" & i & ":" & "B" & i)
        t = .Top
        l = .Left
        w = .Offset(0, .Columns.Count).Left - .Left
        h = .Offset(.Rows.Count, 0).Top - .Top
      End With
    
      'Format Picture into the right size
      With picture
        .Top = t
        .Left = l
        .Width = w
        .Height = h
      End With
      Set p = Nothing
    
    Next
    

    The pictures are added on the left side of the crosstab. If you want to add your pictures automatically you can use the callback AfterRedisplay.

    SAP Analysis for Office Crosstab with Product Images
    SAP Analysis for Office Crosstab with Product Images

    It is just an example what you can do. So If you have any suggestions for other examples, post them into the comments.

    author.


    I am Tobias, I write this blog since 2014, you can find me on twitter and youtube. If you want you can leave me a paypal coffee donation. You can also contact me directly if you want.

  • Analysis Office 2.4 Table Design features

    In Analysis for Office 2.4 SAP improved the Table Design Editor. You can now create and edit formulas. In an
    earlier post, I described how to work with Excel formulas in a crosstab. You can add a new column with the table design functionality.

    SAP Analysis for Office with Excel formula
    SAP Analysis for Office with Excel formula

    As you can see in the screenshot above, I wrote a simple formula in the new column. If you have now installed Analysis for Office
    2.4, you can see in the design rules tab of the design Panel the rule type formulas. If you select this rule type, you can see how many formulas are in your crosstab and you can
    edit them directly from here.

    SAP Analysis for Office Design Rules tab
    SAP Analysis for Office Design Rules tab

    When you select a formula, the formula Definition is directly displayed in the properties area. You also see the Location and the corresponding cell. The button with the two arrows allows you to
    show or hide your formulas in the crosstab. It is the same function like the Excel function Show Formulas. It seems like a nice feature, but I don’t know if you really need it,
    because you can do the same in the Excel formula bar. Or does anybody need this feature?

    author.


    I am Tobias, I write this blog since 2014, you can find me on twitter and youtube. If you want you can leave me a paypal coffee donation. You can also contact me directly if you want.

  • Analysis Office 2.4 SP1 is available

    Since 13.01.2017 the SP1 of Analysis for Office 2.4 is available. You can download it here. You need a S-User to download it.
    There are three new file system settings:

    • UseDataSourceDeltaUpdate
    • EnforceDatePickerForCalendarDayVariable
    • SetEmptiedDoubleDataCellsToValue0

    There are also some changes in the User Interface Customization.

    You can now create, delete and reorganize groups and elements. A nice feature too is when you create a toggle button, you can get the button state. This I haven’t tested yet, but it could be very
    useful. About the file system settings:

    • UseDataSourceDeltaUpdate

    The default value is true and you can use this setting to specify if you only want the delta data or the complete data of a data source when you reload or update. If you change it to false, the
    complete data of the data source will be reloaded. I don’t know if this setting makes so much sense but maybe someone use it.

    • EnforceDataPickerForCalendarDayVariable

    The default value is false, this means the date picker is not enabled and the dates are displayed in a list. If you change it to true, you get a date picker and also there is no fetching of date
    values from the backend system. This is very useful, many threads in the SCN are about the date picker problem. Thanks.

    • SetEmptiedDoubleDataCellsToValue0

    The default value is true, this means if you save empty planning data cells, they are saved as 0. If the value is false, the old value remains and the cells are not saved as 0. I don’t know if
    some „features“ are necessary when you see that there are other problems like this.

    author.


    I am Tobias, I write this blog since 2014, you can find me on twitter and youtube. If you want you can leave me a paypal coffee donation. You can also contact me directly if you want.

  • SAP BW Transport of Copies (ToC)

    In my current project, we have a copy of the productive system as a maintenance system, because we made huge changes in

    the development system in case of the project. So if there is an error in the production, we can easily repair it.

     

    Some changes have also be transported into the development system, so we have the same state and our future request can be transported into production. For this we use the functionality
    Transport of Copies. All objects of the originally request are still locked. If you want to create a transport of copies, open the transaction SE01. Check the
    option “Transport of Copies” and click on Display.

    SAP BW Transport Organizer
    SAP BW Transport Organizer

    Create a new transport via icon or F6.

    Create new transport
    Create new transport

    Choose the request type Transport of copies.

    Create transport of copies
    Create transport of copies

    Define a short description and a target system.

    Define transport of copies
    Define transport of copies

    The request is now created. Now we can add our objects we need to transport. We copy all objects of the original request into our new request. It is important to take task after task, because a
    request can contain more than one task.

    Copy original request/task
    Copy original request/task

    Select the request id with CTRL + Y and copy it with CTRL + C. Now select the transport of copies request and click on Include Objects (CTRL + F11).

    Include Objects
    Include Objects

    Choose the Object List from Request and paste the original request id.

    Include Objects into transport of copies
    Include Objects into transport of copies

    Now all objects of the original request are in your copy and you can continue with your normal transport management.

    author.


    I am Tobias, I write this blog since 2014, you can find me on twitter and youtube. If you want you can leave me a paypal coffee donation. You can also contact me directly if you want.

  • SAP BW Create SPO via BAdI – Part 3

    After we created in Part 1 the transparent tables and in Part 2 all BAdI implementation, we can now maintain and create our SPO. First we have to fill our table ZSPOPATTERN with a
    PATTERNID and a corresponding INFOOBJECT. Go to the se16 and create a new table entry. As PATTERNID enter a unique id for
    example CALYEAR and as INFOOBJECT 0CALYEAR. For TXTLG and TXTSM enter a useful text. Depending on how many InfoObject are used for a partition, create the other
    pattern.

    Table ZSPOPATTERN
    Table ZSPOPATTERN

    After we filled ZSPOPATTERN, we can now fill ZSPOINFOPROV. As SPONAME enter the technical Name of the SPO. As PATTERNID1 to
    PATTERNID4 enter your previous created pattern. For example Y_TM as SPONAME and CALYEAR as PATTERNID1.

    Table ZSPOINFOPROV
    Table ZSPOINFOPROV

    The next table is ZSPOCRITERIA. Enter the previous created PATTERNID, a PARTGROUP, a LOWVALUE and if necessary a
    HIGHVALUE. For example:

    • PATTERNID – CALYEAR
    • PARTGROUP – 1
    • LOWVALUE – 2016

    For 2017 use PARTGROUP 2, for more explanation see the screenshot below.

    Table ZSPOCRITERIA
    Table ZSPOCRITERIA

    The last table is ZSPODTP. Enter a SPONAME, OBJTYPE, LOGSYS, DTPTEMPLATE and DTPTEMPLATEID.
    The DTPTEMPLATEID can be found in table RSLPO_DFG_DTPTPL. For example:

    • SPONAME – Y_TM
    • OBJTYPE – ODSO
    • OBJNAME – YTM01
    • LOGSYS – T04CLNT100
    • DTPTEMPLATE – DSO FULL
    • DTPTEMPLATEID – 00O2TGUDQNX7RY71D737H5IZ2
    Table ZSPODTP
    Table ZSPODTP

    After the initial maintenance is done, we can go to the transaction RSA1. We can either maintain our SPO directly or under Administration you find the
    Mass Activation of BAdI SPOs. The first new partion will be created directly and the second and third under Mass Activation of BAdI SPOs. When you start from scretch you
    click on Change Partitions to create your new partitions. Now you can choose your criteria.

    SPO: Select Partitioning Criteria
    SPO: Select Partitioning Criteria

    As you can see on the screenshot below, when you select Read Charactcs. from BAdI, the InfoObject 0CALYEAR is automatically add as criteria.

    SPO: Select Partitioning Criteria via BAdI
    SPO: Select Partitioning Criteria via BAdI

    In the screenshot below you see the partition 1 is automatically added with the year 2016.

    SPO: Partition created by BAdI
    SPO: Partition created by BAdI

    Now we can activate our SPO and see, that the partition 1 is created. You can now add your new partitions either by clicking on Build Version From or via Mass Activation
    of BAdI SPOs
    . I choose the second way to show you how can activate multiple SPOs at once. Goto Administration >> Mass Activation of BAdI SPOs.

    SPO: Mass Activation of BAdI SPOs
    SPO: Mass Activation of BAdI SPOs

    As you can see in the screeshot above, our SPO find new partitions. With the function Version Comparison you can compare the actual version with the new.

    SPO: Version Comparison
    SPO: Version Comparison

    As you see, the two new partitions for 2017 and 2018 will be created. By click on Activate, the partitions are created.

    SPO: New partitions are created via Mass Activation
    SPO: New partitions are created via Mass Activation

    Now our SPO is up to date and all partitions are created. If you need for example 2019, you have to maintain the table ZSPOCRITERIA and go back to the Mass Activation of BAdI
    SPOs
    . The last part is now to create the DTPs. Go to the SPO and open it in change mode. Click on Create Data Transfer Processes. You will see the following screen.

    SPO: Create DTP for SPO
    SPO: Create DTP for SPO

    Select your partitions and click on the button BAdI Version.

    SPO: Create DTP for SPO via BAdI
    SPO: Create DTP for SPO via BAdI

    The DTPs automatically appear and you only have to generate them.

    SPO: DTP created via BAdI
    SPO: DTP created via BAdI

    That’s it. Your SPO and associated DTPS can be created via BAdI. I tested it with a Business Warehouse 7.31 SP18, maybe it is a little bit
    different in a higher release.

    author.


    I am Tobias, I write this blog since 2014, you can find me on twitter and youtube. If you want you can leave me a paypal coffee donation. You can also contact me directly if you want.

  • SAP BW Create SPO via BAdI – Part 2

    After we created in part 1 all tables and objects, we can now create a new BAdI to generate the partitions. Go to
    the transaction se19 and create a new implementation with the Name RSLPO_BADI_PARTITIONING.

    BAdI Builder: Create Implementation
    BAdI Builder: Create Implementation

    Give the enhancement implementation a name and a short text.

    Create Enhancement Implementation
    Create Enhancement Implementation

    Click continue and save. Now specify the BAdI implementation name, the implementation class and the BAdI
    definition
    . Select for the BAdI Definition RSLPO_BADI_PARTITIONING, click continue and save.

    Enhancement Implementation: Create BAdI Implement
    Enhancement Implementation: Create BAdI Implement

    After that the following screen appears.

    Enhancement Implementation ZDEMO_BADI_PARTITION Change
    Enhancement Implementation ZDEMO_BADI_PARTITION Change

    Double click the implementation class and the following screen appears. The 6 methods of the class ZCL_DEMO_BADI_PARTITION which we use to define the partitions are displayed in the right panel.

    • GET_T_SPO
    • GET_T_PART
    • GET_T_PART_TEXT
    • GET_T_PART_CRIT
    • GET_T_PART_PROP
    • GET_T_PART_DTP

    Each method has a specific role, which you can see under the short description. Double click the method IF_RSLPO_BADI_PARTITIONING~GET_T_SPO.

    Enhancement Implementation: Implementing Class
    Enhancement Implementation: Implementing Class

    First we have to implement the name of the Semantic Partitioning Object (SPO).

    1
    2
    3
    4
    5
    6
    7
    8
    method IF_RSLPO_BADI_PARTITIONING~GET_T_SPO.
      DATA: l_spo TYPE rslponame.
      
      "Return a table with names of supported BAdI SPOs.
      SELECT SPONAME from ZSPOINFOPROV into l_spo.
        APPEND l_spo TO r_t_spo.
      ENDSELECT.
    endmethod.
    

     

    Save and activate the method and the class. Now implement the

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    method IF_RSLPO_BADI_PARTITIONING~GET_T_PART.
    
    DATA: l_cnt TYPE i,
          l_posit TYPE i VALUE 1,
          l_id TYPE c LENGTH 2,
          l_s_part TYPE rslpo_badi_s_part,
          "ZSPOINFOPROV Variable
          l_it_spoinfoprov TYPE TABLE OF ZSPOINFOPROV,
          l_wa_spoinfoprov TYPE ZSPOINFOPROV.
    
    SELECT * from ZSPOINFOPROV into CORRESPONDING FIELDS OF TABLE L_IT_SPOINFOPROV where SPONAME = I_SPO.
    
    Loop at L_IT_SPOINFOPROV into L_WA_SPOINFOPROV.
      SELECT COUNT(*) from zspocriteria into l_cnt where PATTERNID = L_WA_SPOINFOPROV-PATTERNID1.
        WHILE l_posit LE l_cnt.
          UNPACK l_posit to l_id.
          l_s_part-IDPART = l_id.
          l_s_part-POSIT = l_posit.
          APPEND l_s_part TO r_t_part.
          l_posit = l_posit + 1.
        ENDWHILE.
        CLEAR l_posit.
      ENDLOOP.
      
    endmethod. 
    

    IF_RSLPO_BADI_PARTITIONING~GET_T_PART_TEXT specifies the text for each partition. The problem is, the customer normally named the partitions after his own mind, so I just
    implemented a comment, so it would be initialized. The comment is necessary.

    1
    "Coding will follow later
    

     

    Now we implement the IF_RSLPO_BADI_PARTITIONING~GET_T_PART_CRIT. This implementation specifies the partition criteria.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    method IF_RSLPO_BADI_PARTITIONING~GET_T_PART_CRIT.
    
    DATA: l_id TYPE c length 2,
          l_s_part_crit TYPE rslpo_badi_s_part_crit,
          "SPOCRITERIA Variable
          l_it_criteria TYPE TABLE OF ZSPOCRITERIA,
          l_wa_criteria TYPE ZSPOCRITERIA,
          "ZSPOINFOPROV Variable
          l_it_spoinfoprov type table of zspoinfoprov,
          l_wa_spoinfoprov type zspoinfoprov.
    
    SELECT * from ZSPOINFOPROV into CORRESPONDING FIELDS OF TABLE L_IT_SPOINFOPROV where SPONAME = I_SPO.
    
    Loop at L_IT_SPOINFOPROV into L_WA_SPOINFOPROV.
      SELECT * from ZSPOCRITERIA into CORRESPONDING FIELDS OF TABLE l_it_criteria where patternid = L_WA_SPOINFOPROV-PATTERNID1 or patternid = l_wa_spoinfoprov-patternid2 or patternid = l_wa_spoinfoprov-patternid3 or patternid = l_wa_spoinfoprov-patternid4.
    
      LOOP AT l_it_criteria INTO l_wa_criteria.
        SELECT INFOOBJECT FROM ZSPOPATTERN into l_s_part_crit-IOBJNM where patternid = l_wa_criteria-patternid.
          If L_WA_CRITERIA-HIGHVALUE NE ''.
            l_s_part_crit-opt = 'BT'.
          ELSE.
            l_s_part_crit-opt = 'EQ'.
          ENDIF.
          UNPACK L_WA_CRITERIA-PARTGROUP to l_id.
          l_s_part_crit-IDPART = l_id.
          l_s_part_crit-low = l_wa_criteria-LOWVALUE.
          l_s_part_crit-high = l_wa_criteria-HIGHVALUE.
          l_s_part_crit-posit = L_WA_CRITERIA-PARTGROUP.
          APPEND l_s_part_crit TO r_t_part_crit.
        ENDSELECT.
      ENDLOOP.
    ENDLOOP.
    
    endmethod.
    

    The method IF_RSLPO_BADI_PARTITIONING~GET_T_PART_PROP will only be initialized with the following code:

    1
    "Coding will follow later
    

     

    The next and last method is IF_RSLPO_BADI_PARTITIONING~GET_T_PART_DTP. It specifies the template of the DTP.

     

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    method IF_RSLPO_BADI_PARTITIONING~GET_T_PART_DTP.
    
    DATA: l_posit TYPE i VALUE 1,
          l_cnt TYPE i,
          l_id TYPE c LENGTH 2,
          l_s_part_dtp type rslpo_badi_s_part_dtp,
          "ZSPODTP Variable
          l_it_dtp type table of zspodtp,
          l_wa_dtp type zspodtp,
          "ZSPOINFOPROV Variable
          l_it_spoinfoprov type table of zspoinfoprov,
          l_wa_spoinfoprov type zspoinfoprov.
    
    SELECT * from ZSPOINFOPROV into CORRESPONDING FIELDS OF TABLE L_IT_SPOINFOPROV where SPONAME = I_SPO.
    
    Loop at L_IT_SPOINFOPROV into L_WA_SPOINFOPROV.
    
      SELECT COUNT(*) FROM ZSPOCRITERIA into l_cnt where PATTERNID = L_WA_SPOINFOPROV-PATTERNID1.
      SELECT * from ZSPODTP into CORRESPONDING FIELDS OF TABLE l_it_dtp where SPONAME = I_SPO.
    
      LOOP at l_it_dtp into l_wa_dtp.
        l_s_part_dtp-DTPTEMPLATE = l_wa_dtp-DTPTEMPLATE.
        l_s_part_dtp-OBJNM = l_wa_dtp-OBJNAME.
        l_s_part_dtp-LOGSYS = l_wa_dtp-LOGSYS.
        l_s_part_dtp-TLOGO = l_wa_dtp-OBJTYPE.
        WHILE l_posit LE l_cnt.
          UNPACK l_posit to l_id.
          l_s_part_dtp-IDPART = l_id.
          APPEND l_s_part_dtp TO r_t_part_dtp.
          l_posit = l_posit + 1 .
        ENDWHILE.
      ENDLOOP.
    ENDLOOP.
    
    endmethod.
    

    After all methods are implemented, activate the Enhancement Implementation. Now we are able to create a Semantic Partitioning Object (SPO). What we need to maintain will be described in Part 3 of this series.

    author.


    I am Tobias, I write this blog since 2014, you can find me on twitter and youtube. If you want you can leave me a paypal coffee donation. You can also contact me directly if you want.

  • SAP BW Create SPO via BAdI – Part 1

    At my current project I needed a way to create Semantic Partitioning Object (SPO) via BAdI to reduce the end-of-year work. After a little search via Google (you cannot find anything on the new
    SAP Community Page), I found these threads.

    Both were not perfect, so I build a solution between them. I also put everything via control tables, so it would be easier for the users to manage them. So let’s get started.

    Create own data dictionary objects

    The following domains have to be implemented:

    • ZSPOPARTGROUP – SPO Partition Group
    • ZSPOPATTERNID – SPO Partitioning Pattern
    • ZSPOTLOGO – SPO Object Type for DTP

    SPO Partition Group

    Domain: ZSPOPARTGROUP
    Domain: ZSPOPARTGROUP

    SPO Partitioning Pattern

    Domain: ZSPOPATTERNID
    Domain: ZSPOPATTERNID

    SPO Object Type for DTP

    Domain: ZSPOTLOGO
    Domain: ZSPOTLOGO
    Domain: ZSPOTLOGO Value Range
    Domain: ZSPOTLOGO Value Range

    After we created the domains, we have to create the following data elements:

    • ZSPOPARTGROUP – SPO Partition Group
    • ZSPOPATTERNID – SPO Partitioning Pattern
    • ZSPOPATTERNID1 – SPO Partitioning Pattern 1
    • ZSPOPATTERNID2 – SPO Partitioning Pattern 2
    • ZSPOPATTERNID3 – SPO Partitioning Pattern 3
    • ZSPOPATTERNID4 – SPO Partitioning Pattern 4
    • ZSPOTLOGO – SPO Object Type for DTP

    SPO Partition Group

    Data Element: ZSPOPARTGROUP
    Data Element: ZSPOPARTGROUP

    SPO Partitioning Pattern

    Data Element: ZSPOPATTERNID
    Data Element: ZSPOPATTERNID

    Note: The data elements ZSPOPATTERNID1, ZSPOPATTERNID2, ZSPOPATTERNID3 and ZSPOPATTERNID4 are defined like the ZSPOPATTERNID.

    SPO Object Type for DTP

    Data Element: ZSPOTLOGO
    Data Element: ZSPOTLOGO

    We also implement a search help ZSPO_DTPTEMPLATE – SPO Templates

    SPO Templates

    Search Help: ZSPO_DTPTEMPLATE
    Search Help: ZSPO_DTPTEMPLATE

    Create Transparent Tables

    After all these elements are created, we can now create the following transparent tables:

    • ZSPOINFOPROV – SPO BAdI Managed InfoProvider
    • ZSPOPATTERN – SPO Authorized Partition Pattern
    • ZSPOPATTERNT – SPO Authorized Partition Pattern Text
    • ZSPOCRITERIA – SPO Pattern Partition Criteria
    • ZSPODTP – SPO BAdI Managed DTP

    Table ZSPOPATTERN

    The following fields have to be implemented:

    • PATTERNID
    • INFOOBJECT
    Table ZSPOPATTERN Fields
    Table ZSPOPATTERN Fields

    This entry helps and checks have to be implemented:

    Table ZSPOPATTERN Entry help/check
    Table ZSPOPATTERN Entry help/check
    Table ZSPOPATTERN Foreign Key
    Table ZSPOPATTERN Foreign Key

    Table ZSPOPATTERNT

    The following fields have to be implemented:

    • LANGU
    • PATTERNID
    • TXTLG
    • TXTSM
    Table ZSPOPATTERNT Fields
    Table ZSPOPATTERNT Fields

    This entry helps and checks have to be implemented:

    Table ZSPOPATTERNT Entry help/check
    Table ZSPOPATTERNT Entry help/check
    Table ZSPOPATTERNT Foreign Key
    Table ZSPOPATTERNT Foreign Key

    Table ZSPOCRITERIA

    The following fields have to be implemented:

    • PATTERNID
    • PARTGROUP
    • LOWVALUE
    • HIGHVALUE
    Table ZSPOCRITERIA Fields
    Table ZSPOCRITERIA Fields

    This entry helps and checks have to be implemented:

    Table ZSPOCRITERIA Entry help/check
    Table ZSPOCRITERIA Entry help/check
    Table ZSPOCRITERIA Foreign Key
    Table ZSPOCRITERIA Foreign Key

    Table ZSPOINFOPROV

    The following fields have to be implemented:

    • SPONAME
    • PATTERNID1
    • PATTERNID2
    • PATTERNID3
    • PATTERNID4
    Table ZSPOINFOPROV Fields
    Table ZSPOINFOPROV Fields

    This entry helps and checks have to be implemented:

    Table ZSPOINFOPROV Entry help/check
    Table ZSPOINFOPROV Entry help/check
    Table ZSPOINFOPROV Foreign Key
    Table ZSPOINFOPROV Foreign Key

    Table ZSPODTP

    The following fields have to be implemented:

    • SPONAME
    • OBJTYPE
    • OBJNAME
    • LOGSYS
    • DTPTEMPLATE
    • DTPTEMPLATEID
    Table ZSPODTP Fields
    Table ZSPODTP Fields

    This entry helps and checks have to be implemented:

    Table ZSPODTP Entry help/check
    Table ZSPODTP Entry help/check
    Table ZSPODTP Foreign Key ZSPOINFOPROV
    Table ZSPODTP Foreign Key ZSPOINFOPROV
    Table ZSPODTP Foreign Key TBDLS
    Table ZSPODTP Foreign Key TBDLS
    Table ZSPODTP Foreign Key RSLPO_DFG_DTPTPL
    Table ZSPODTP Foreign Key RSLPO_DFG_DTPTPL

    After we created all control tables, we can now create an implementation of BAdI RSLPO_BADI_PARTITIONING. How this works, can be read in Part 2.

    author.


    I am Tobias, I write this blog since 2014, you can find me on twitter and youtube. If you want you can leave me a paypal coffee donation. You can also contact me directly if you want.

  • BW Modeling Tools add a new project

    After I started my BW/4HANA instance on cal.sap.com and everything was working, I logged on and typed RSA1. But there was no modeling tab anymore. Then I rememberd, I need the BW Modeling Tools. So I installed the latest Version of Eclipse and the BW Modeling Tools. After that
    I need a Project. The project is the binder for all activities in our BW system. Make a right-click in the Eclipse Project Explorer and choose BW Project.

    Eclipse Add new BW-Project
    Eclipse Add new BW-Project

    A new dialog appears where you have to choose a system connection. You can choose between a new system connection from scratch or an existing one.

    New BW-Project: System Connection
    New BW-Project: System Connection

    In my case I choose my BW4HANA instance and click on Next.

    New BW-Project Connetion Settings
    New BW-Project Connetion Settings

    After you choose your system, you can edit the connection parameters if you want. Click on Next to log on to the system.

    New BW-Project Logon to System
    New BW-Project Logon to System

    After your logon was successful, you have to enter a project name for the new Project.

    New BW-Project enter project name
    New BW-Project enter project name

    Click Finish to close this dialog. Your new project has been created. The next blog posts will be give you an overview about InfoObjects, Advanced DSOs, Queries and so on.

     

    Note: I don’t know why some Information on this screenshots are in German. Has any one an idea?

    author.


    I am Tobias, I write this blog since 2014, you can find me on twitter and youtube. If you want you can leave me a paypal coffee donation. You can also contact me directly if you want.

  • Analysis Office 2.4 Workbook Protection and Styles

    A new feature of Analysis for Office 2.4 is workbook or sheet protection. It is similar to the Microsoft
    Excel Protect Sheet / Workbook function, but it is also different. When you need to protect your workbook or sheet and you use the Excel
    functionality, you can not refresh or drill down your Crosstab. But when you want to refresh your data or give the users the opportunity to drill down or filter, you have to use the workbook /
    sheet protection from Analysis for Office.

    SAP Analysis for Office Protect Options
    SAP Analysis for Office Protect Options

    You can define almost the same options like the normal Excel function. But if you protect your workbook or sheet with this function, the Excel ribbon also shows the protection. But if you remove
    it from there and and set it again with another password, it is no longer the Analysis for Office protection, it is the Excel protection, which means you can not refresh or drill down anymore.

    Microsoft Excel Protected Sheet
    Microsoft Excel Protected Sheet

    Instead you receive the following message. So be aware of which protection you use and communicate this also to your colleagues.

    SAP Analysis for Office Excel Sheet Protection
    SAP Analysis for Office Excel Sheet Protection

    If you use Analysis for Office IP you now have a new custom style called SAPError. This style shows you information if something in your planning doesn’t work correctly. When you
    enter your value you can simply autocomplete them. Enter a prefix for a member and use F4/value help or CTRL-Space (autocomplete).

    SAPError
    SAPError

    Normally you get also a message, but if you have suppress all messages, you don’t see them.

    SAP Analysis for Office Integrated Planning Message
    SAP Analysis for Office Integrated Planning Message

    author.


    I am Tobias, I write this blog since 2014, you can find me on twitter and youtube. If you want you can leave me a paypal coffee donation. You can also contact me directly if you want.

  • Analysis Office 2.4 File System Settings

    Analysis for Office 2.4 also provides new file system settings. Especially for the new Customize User Interface function. The file Cof_app.config provides all these parameters:

    • AppBuilderDefaultProfilePath
    • AppBuilderUserProfileDirectory
    • AppBuilderCompanyProfileDirectory
    • AppBuilderReadOnlyProfileDirectories

    And also these parameters:

    • CurrentCodePage
    • SapWebGuiPath
    • NwbcTicketIssuerPath

    Only then AppBuilderCompanyProfileDirectory is a PerMachine parameter, the others are UserRoaming. How the other parameters exactly work has to be tested. The
    Ao_app.config also provides new parameters:

    • DefaultBWQueryDesigner
    • DoSelectorHierarchyExplicitSelection
    • AutoCompleteFetchMemberLimit
    • HanaHttpConnectionTimeout

    So it can be possible that the user can choose between the old BEx Query Designer and the new BW
    Modeling Tools
    . The default parameter is „0“, so at the moment I cannot say what exactly has to be the value for other query designers. The parameter
    DoSelectorHierarchyExplicitSelection should select only the child nodes of a node and the parent node is not automatically checked. But I haven’t got a chance to test this. So I
    can’t confirm this. I don’t know at the moment how the parameter AutoCompleteFetchMemberLimit works, I only know the default value is 30. But as soon as possible
    I add these information to this post.

    author.


    I am Tobias, I write this blog since 2014, you can find me on twitter and youtube. If you want you can leave me a paypal coffee donation. You can also contact me directly if you want.