Skip to Content

Automate execution of any Data Manager package

 

Business Planning and Consolidation version for Netweaver uses Data Manager module to move data in to BPC as well as copy and move data within and across applications. To this effect it uses the data manager packages to accomplish this. These packages can be configured and executed from within BPC for Excel. The data manager also allows you to schedule these packages to run at a given time. These packages extensively use BW process chains. We can also create custom process chains that in turn will execute the data manager packages and thereby automate execution of data manager packages. (You can read more about creating such custom process chains at Running BPC process chains within non-BPC process chains). In this blog we will talk about some tricks that we can use to easily automate execution of any data manager package. We can use this technique for debugging a data manager package also. If the data manager log that we get after executing the data manager package does not help us to trouble shoot an issue, we can debug that package using ABAP debugger by following exactly the same steps.

 

The answer prompts in the data manager package:

One of the important steps in execution of a data manager package is to create the answer prompt file regarding the prompts that you get while running the package. For example, if we execute a package that loads transaction data from an infoprovider to our application, we get the following prompts while running the package:

image 

Here we can see that the prompts that the user has to fill while running this package are: name of the Infoprovider, the transformation file to be used with this Infoprovider, method of importing the data and the option to run default logic. Similarly, on the next screen, we get the prompt to select whether the work status needs to be checked. Only after the user enters these prompts successfully, the execution of the data manager package begins. Hence any attempt to automate the execution of this package will involve providing answers to these prompts in some way.

 

Creating the answer prompt file:

One way out is to create this answer prompt file manually. The answer prompt file must be a tab delimited file and each prompt should start on a new line. If we follow this rule, then the answer prompt may look like the following:

image 

Now is this the format for all answer prompt files for all data manager packages? Can we get any clue about the format of each package anywhere in the system? When we execute the data manager package manually, what happens to the prompts that we entered? At a later date, can we see what prompts we had entered while executing that data manager package? Let us try to answer these questions here. Firstly, though all answer prompts need to be tab delimited, the detailed format is not the same for all packages. So how do we know what the format is for each package? The answer is – refer to the data manager package log. Let us see how this can be done.

 

Creating answer prompts from the data manager package log:

When a user executes a data manager package manually by answering the prompts presented to him/her during the execution, those answers are stored in the data manager log file in the file service. In BPC version for Netweaver, we can access the file service using the SAP GUI and going to the transaction ujfs. The file service for our appset is as shown below..

image

The data manager log files that have the answer prompts are stored in the ‘privatepublications’ folder within the node for the application.

image

Within the privatepublications folder, access the domain and within the domain the user folder who has executed the data manager package. For that user, the answer prompt files are stored in the folder called tempfiles.

image

In order to view this log, we need to download it. The log may look something like the following:

image

We can notice that the answer prompt that we created manually in the earlier step is included here in the top portion of the log. In order to create the answer prompt file from this log, we need to copy the pertinent portion and clean up the remaining. This way we can create the answer prompt from one of the successful manual executions of the data manager package.

 

Using the answer prompt:

Now we are in a good position to automate the execution of this data manager package using the program ujd_test_package. Enter the information regarding appset, user, package etc as shown below. At the answer prompt field, drop down to select the answer prompt file that was created in the above section.

image 

We can save this variant so that we can use it as the program variant for automatic execution

image 

This can now be used in the custom process chain to automatically execute the data manager package.

 

Automate any data manager package:

This technique of creating the answer prompt file from the data manager package log can be used to automate any data manager package. For some data manager packages, the answer prompts are not intuitive. For example, for a copy package, the front-end screen for the prompts looks like the following:

image

 On the next screen, the prompt includes the ‘from’ and ‘to’ dimension members to be copied.

image

If we execute this package, the data manager package log would look like the following:

image 

We can notice here that without looking at the data manager package log, it would be difficult to manually construct the prompt file for automating this package since the format of the prompt file in this case is not very intuitive. However the trick of using the data manager package log makes our work very easy – just copy the log and clean it up a bit  – and we get our answer prompt file. This way we can automate any data manager package – even those that are not delivered. There is only one caveat here – the program ujd_test_package may be changed later since the primary purpose of that program is to enable debugging of the data manager package than help automate it. However we can always copy that program to our own program and use it to automate execution of any data manager package.

To report this post you need to login first.

17 Comments

You must be Logged on to comment or reply to a post.

  1. Adriano Trajano
    Hi Pravin,

    This is a very good article, but despite I execute all the steps described via your article, when I execute the process chain or  direct via UJD_TEST_PACKAGE, the process finishes without load data (and consequently without create the data manager automation)  and gives the info: “Instance notified as Synchronous mode to the chain c/hold = status G”.

    The parameters I´ve used inside UJD_TEST_PACKAGE are as follows:

    ID Synchronous: Y
    User ID: BPC_SYSADMIN (my user at SAP BPC)
    Package ID: Load Data
    Appset ID: Application_Test
    Appl ID: PLAN_LIQ
    Team ID:
    Group ID: Data Management
    Answer Prompt: %InforProvide%#0TRLP_C01##%TRANSFORMATION%#\ROOT\WEBFOLDERS\APPLICATION_TEST\PLAN_LIQ\DATAMANAGER\TRANSFORMATIONFILES\TRANSF CUBE LP.XLS##%CLEARDATA%#0##%RUNLOGIC%#1##%CHECKLCK%#1
    Schedule Info: Y0N

    But even so, I just do not get the transaction data loaded into my BPC application.

    Is there any parameter missing?

    I´d apreciate a lot your wise advices.

    Best Regards,

    Adriano Trajano

    (0) 
    1. Support Team
      Hi Pravin,

      I also get the same message as Adriano altough with a different file log (data import).

      There should be something extra that we need to do in order to make this work.

      Maybe inserting the program variant directly in the process chain as a new process?

      Can we, alternatively, introduce these variables and values somewhere on the process chain (im my case: /CPMB/IMPORT, in variant /CPMB/MODIFY)?

      Best regards,
      Joao Almeida

      (0) 
    2. Steve Ruggiero
      Adriano,
      I am getting the same error. Has anyone found an answer to this?

      Thanks to anyone that can help. The UJD_TEST_PACKAGE documentation is not very clear.

      (0) 
      1. Pravin Datar Post author
        You can get this error message for a variety of reasons. Before you do anything, please check if you can manually execute the data manager package succesfully. (If you get errors in manual execution of the data manager package, you will surelly get errors when you automate that package) One way out is to debug processing of this process chain using abap debugger. However it is not always easy to debug a process chain. Second very simple trick that works many times is that, while specifying the parameters in ujd_test_package, avoid typing in the parameters and instead just pick the parameter file. Save the parameter file in Notepad with say .prompt extension (avoid .txt extension. I have seen in many cases this takes care of the error message. Make sure that the parameters in the .prompt file are exactly as per the data manager log as discussed in this blog.
        In spite of this if you continue to get the error, then you may have to debug the process chain.
        Regards
        Pravin
        (0) 
        1. Steve Ruggiero
          Pravin,
          I changed the file type. I believe the problem to be in the “Answer Prompt” entry. When I click the F4 help button, I get a Windows Explorer type of browse. So I can’t get to the file that is stored on the BPC server. I believe the issue to be in that entry.

          I have used both of these and they both failed:
          1- %FILE%##\ROOT\WEBFOLDERS\FERRO_APPSET\FPA\DATAMANAGER\SELECTIONFILES\PCALOAD.PROMPT

          2- %InforProvide%#ZFI_PCAA##%TRANSFORMATION%#\ROOT\WEBFOLDERS\FERRO_APPSET\FPA\DATAMANAGER\TRANSFORMATIONFILES\R3_IMPORT.xls##%CLEARDATA%#1##%RUNLOGIC%#1##%CHECKLCK%#1

          I am loading from a BW cube to BPC. The load works through the “normal” BPC load process using the Infoprovider, but it doesn’t seem to work through ujd_test_package.

          Your help would be greatly appreciated. We are on BPC 7.0.

          Also, shouldn’t we be able to just execute the program in SE38 to make it load without going through a process chain?

          Thanks!

          (0) 
          1. Jeffrey Holdeman
            To create the answer prompt…
            1) After running the Data Manager package successfully from BPC Excel, then download the Data Manager log file from the File Service. To do this goto transaction UJFS and input the AppSet. Expand the folders called webfolders -> [your AppSet] –> [your Application] –> privatepublications –> [your domain] –> [your user id] –> tempfiles –> [your log files]
            2) Find the specific package log file (from the bottom up) using the date which is appended to the package name.
            3) Right click and use the option to Download Document (do not use the Download Document for DM option). When prompted to Download as a ZIP file, click no.
            4) Select a file name and location for log file.
            5) Open the file using Notepad or any text editor.
            6) Copy and paste the the relevant section of the log file into a new text file. Save this as the answer prompt.
            7) Be careful where you save the answer prompt file. The total length of the path and the filename must be <= 128 characters (per structure RLGRAP called from FM WS_UPLOAD). I suggest putting the file in C:\temp. If your file name and path is greater than 128 characters when you try to import the answer prompt using F4 from program UJD_TEST_PACKAGE it will not work. No error message is returned, but the answer prompt field will remain blank.
            (0) 
  2. Christophe Posson
    Hello Pravin,

    We are implementing BPC 7.5 for NetWeaver.

    I have tried implementing the steps you mention in your blog(s) on automation of data loading by means of the program UJD_TEST_PACKAGE.

    My prompt file is defined as follows (taken as a copy of the fixed part of the logfile from a successfull manual execution of the DataManager Package):

    %INFOOBJECT%     BPCPRCTR
    %SELECTION%     EBPCPRCTR0CO_AREA0RESP_PERS201008021
    %WRITEMODE%     2
    %FORMAT%     0
    %TRANSFORMATION%     \ROOT\WEBFOLDERS\ZTEST_KONE\ASSETS\DATAMANAGER\TRANSFORMATIONFILES\BW TRANSFORMATION FILES\BPCPRCTR Transformation.xls
    %DIMNAME%     PROFCENT

    The program executes fine from the process chain each time, but the log in the DataManager allways returns with the error:

    An exception with the type CX_ST_MATCH_ELEMENT occurred, but was neither handled locally, nor declared in a RAISING clause
    System expected element ‘Selections’

    Do you see any problems in the prompt file above? Or maybe other experience with these error?

    Thanks in advance,

    Christophe Posson

    (0) 
    1. Christophe Posson
      Hi Pravin,
      Never mind. I found the solution. The problem is that apparently the prompt file should not contain the<and > which are used in the lgo file that you can download from UJFS. Instead<and > should be used.

      Now the loading works fine.

      Kind regards,

      Christophe

      (0) 
  3. Christophe Posson
    Hi again,

    I did not notice but in my reply the web automatically transfers ‘& l t ;’ and ‘& g t ;’ (without spaces) into<and >.

    So the log file contains the wrong tags.

    If you replace those by<and > loading works fine.

    Kind regards,

    Christophe

    (0) 
  4. Andrea Marchini
    Ciao Pravin,
    thanks for your interesting blog, it really shows in a clear way how to run BPC packages via ABAP and BW process chains.
    I have a question though: in the %SELECTION% part of the answer prompt I need to have a variable for the dimension TIME, depending on the day the package is launched, eg. if the package is launched on January 2010, the selection for TIME should be 2010.JAN, on February 2010 2010.FEB and so on.
    I don’t want to manually modify the AnswerPrompt each month, is there a more flexible way to use a variable in the AnswerPrompt??

    Many thanks for your help,
    Andrea

    (0) 
    1. Marco Röber
      Hi Parvin,

      I am having the same trouble as Andrea in my case I need to have two variables one for the dimension entity and one for the dimension category as about 25 different entities are running the data manager package. Thus I do not want to create 25 answer prompts for each data manager package. In addition each entity has 5 categories. This would mean 125 answer promt for one data manager package. Is there any solution?

      Many thanks for your help, regards

      Marco

      (0) 
    2. Marco Röber
      Hi Parvin,

      I am having the same trouble as Andrea in my case I need to have two variables one for the dimension entity and one for the dimension category as about 25 different entities are running the data manager package. Thus I do not want to create 25 answer prompts for each data manager package. In addition each entity has 5 categories. This would mean 125 answer promt for one data manager package. Is there any solution?

      Many thanks for your help, regards

      Marco

      (0) 
  5. Marco Röber
    Hi Parvin,

    I am having the same trouble as Andrea in my case I need to have two variables one for the dimension entity and one for the dimension category as about 25 different entities are running the data manager package. Thus I do not want to create 25 answer prompts for each data manager package. In addition each entity has 5 categories. This would mean 125 answer promt for one data manager package. Is there any solution?

    Many thanks for your help, regards

    Marco

    (0) 
  6. klien silu
    Hi

    This is very nice article, from this article came to know that how answer prompt can be defined.

    I executed program using below parameters

    If Sync:Y
    User: xxxxxx
    Package: /CPMB/LOAD_INFOPROV_UI
    Application Set: xxxx
    Application: xxxxx
    Team:
    Group: Data Management
    Answer Prompt: %InforProvide%#ZFIGL##%SELECTION%#0COMPANY10010000CHNGID0CHRT_ACCTS0COMPANY0CS_CHART0CS_ITEM0CURRENCY0CURTYPE0FISCPER0FISCVARNT0FUNC_AREA0GL_ACCOUNT0MOVE_TYPE0PCOMPANY0RECORDTP0REQUID0VTYPE##%TRANSFORMATION%#/ROOT/WEBFOLDERS/

    Schedule: Y0N

    Here my actual answer prompt not completely fit in the parameter, still the answer prompt has more characters which not fit in parameter, I heard that answer prompt can take only 999 characters, then how can i fit complete string in the answer prompt when i take multiple selections. Please help me in this regard

    (0) 
      1. klien silu
        Hi

        Thank you for your immediate reply, how can i provide selections in Transformation file, I can’t restrict for all dimensions by giving fixed value, then we need to create multiple transformation files to copy data from bi to bpc.

        my transformation file is as below

        CATEGORY=*NEWCOL(XXX)
        GRP_ACCT=0CS_ITEM
        DATA_SRC=*NEWCOL(YYYY)
        COMPANY=0COMPANY
        FLOW=0MOVE_TYPE
        FUNC_AREA=0FUNC_AREA
        CONS_GROUP=*NEWCOL(ZZZZ)
        TRADING_PTR=0PCOMPANY
        RPTCURRENCY=0CURTYPE
        TIME=0FISCPER
        SIGNEDDATA=0BALANCE
        *CONVERSION
        CATEGORY=A.xls!CATEGORY
        GRP_ACCT=A.xls!GRP_ACCT
        COMPANY=A.xls!COMPANY
        FLOW=A.xls!FLOW
        FUNC_AREA=A.xls!FUNC_AREA
        TRADING_PTR=A.xls!TRADING_PTR
        RPTCURRENCY=A.xls!RPTCURRENCY
        TIME=A.xls!TIME

        and in Run package in “Selection” all of the dimension/field appearing, even though i selected only one field.

        (0) 

Leave a Reply