Package with script logic CANCELLED

Hi everybody,
I am trying to implement a very simple script logic that removes negative values from the Units account.
*XDIM_MEMBERSET C_CATEGORY=%C_CATEGORY_SET%
*XDIM_MEMBERSET TIEMPO=%TIEMPO_SET%
*XDIM_MEMBERSET MERCADO=%MERCADO_SET%
*XDIM_MEMBERSET ORG_VENTAS=%ORG_VENTAS_SET%
*XDIM_MEMBERSET CUSTOMER=BAS(TOTALCUSTOMERS)
*XDIM_MEMBERSET PRODUCT=BAS(00001)
*XDIM_MEMBERSET P_DATASRC=DRIVER
*XDIM_MEMBERSET ACCOUNT_SIM=Unit
*XDIM_MEMBERSET TIPO_CLIENTE=BAS(TOTAL_TOP)
[ACCOUNT_SIM].[#Unit]=IIF(([ACCOUNT_SIM].[Unit])*(-1)<0, 0, [ACCOUNT_SIM].[Unit])
*COMMIT
When I execute it with the Data Manager the result of the package is "Cancelled". I have one large dimension ("Customer" with more than 2000 elements) but there are not too many records in the database now. However, when I restrict the number of elements, the package works fine. It seems like a memory issue, I don't know... We are using SAP BPC NW 7.0 SP5
Any idea out there? Is our logic not 'optimized' for BPC?
Thanks a lot,
Mr. Albert Mas

Hi Albert,
I think you're running into a dimensionality limit. I believe this was fixed in SP06.
In any case, it's easy to fix. Just add
*XDIM_MAXMEMBERS CUSTOMER = 1
after your other *XDIM statements.
You should be able to up this number a fair amount, depending on the number of members in other dimensions. In the script logic evaluation, there is code that multiplies the number of members in your memberset in each dimension and then attempts to assign the result to an INT datatype. I don't remember the size of the INT, but if you look at the short dump in ST22 of the SAP GUI, you'll see the code.
Hopefully that helps.
Ethan

Similar Messages

  • Changing Work Status using data package or script logic

    Is it possible to set Work Status using Script logic, or an SSIS package.
    I know status is kept is an SQL table, is it possible to just update the locking table with a new record, or is there more to changing the work status.
    Thanks for you help

    Thanks for your reply. This would be a nice enhancement.
    Although the work status does help with the audit trail of who and what locks the data, doing it automatically will allow the system to automatically unlock the period when it is opened before auto-loading the current closing balances. It will need to be carefully used in order to maintain proper audit trail of the data. When done automatically, the system userid would be used in the lock table witha  timestamp.
    I am needing to know if there are anyother steps involved in locking data other than writing to the SQL lock table. Is usppose this is especailly relevant when locking a parent and pushing the status to the children.

  • Error with Script logic

    Hello friends,
    I am getting an error with running currency conversion in an app, the error says Invalid dimension "C_Category". Here is the script logic, I dont see C_Category anywhere. For the record, the name of dimension is category.
    *RUN_PROGRAM CURR_CONVERSION
          CATEGORY     = %C_CATEGORY_SET% 
          GROUP = %GROUPS_SET% 
          TID_RA = %TIME_SET%
          RATEENTITY = GLOBAL
          OTHER = [ENTITY=%ENTITY_SET%]//For More than one other scope parameters: OTHER = [ENTITY=%ENTITY_SET%;INTCO=%INTCO_SET%...]
    *ENDRUN_PROGRAM

    Hello,
    Variable %C_CATEGORY_SET% means set of members selected for Dimension C_CATEGORY. So, if you want to use CATEGORY instead replace it with %CATEGORY_SET%, but if are running Consolidations I think you need C_CATEGORY Dimension.
    Regards,
    Gersh

  • Problem with Script logic logs

    Hi Experts,
    I am using BPC 7.5M with SQL Server 2008, I am looking into script logic log but found one very strange statement "(More than 300,000 records. Details are not being logged)", Earlier it was not showing this statement and was showing all the entries to be posted, Is there any setting we need to do for having all the entries in the log file.
    Status log file showing as of now:
    App: HEADCOUNT - Records to be posted are 310875  (calc diff = 0)
    (More than 300,000 records. Details are not being logged)
    Time to validate records: 100.3 sec.
    Post Record Status
    Submit count : 100001
    Accept count : 100001
    Reject count : 0
    Post Record Status
    Submit count : 200002
    Accept count : 200002
    Reject count : 0
    Post Record Status
    Submit count : 300003
    Accept count : 300003
    Reject count : 0
    Post Record Status
    Submit count : 310875
    Accept count : 310875
    Reject count : 0
    Posting ok
    Time to post records:325.4 sec.
    Please Advice
    Thanks & Regards,
    Rohit

    Hi Rohit,
    This is not a problem.
    If the resultant number of records is more than 300,000, then the records are not logged.
    This can be controlled by the UNLIMIT_PRINT_LOG appset parameter. By default, this is set as NO. This will allow only 300k records to be logged.
    You can set the above parameter as YES to log all the records for the execution of all logics across the appset in all applications.
    Warning:
    Of course, it will add slow down the logic execution. Logging the records will always slow down the execution. The system has to open the file and keep writing all the records in the flatfile, which is a slow process. You can increase the speed of your logics by disabling this logging completely by using the CALCULATE_DIFFERENCE statement in your script logic for each commit section. You can reduce the logic execution time by disabling this logging.
    Karthik AJ

  • Incorrect value with Script Logic

    Hello,
    From initial value called 2008.ORC we want to calculate for each month the percentage , from child DIASMES.
    Now, with the script logic ( I´ll put down later) we have an incorrect value in the column 2008.TOTAL.
    In other words, I´m sure I´m wrong with "WHAT" or "WHERE sentence or maybe the operation "FACTOR=USING/TOTAL" fails because the crossing between dimensions it´s incorrect.
    *RUNALLOCATION
    *FACTOR = USING/TOTAL
    *DIM FABRICA_MAQ WHAT=BAS(FABRICAFF); WHERE=BAS(FABRICAFF); USING=BAS(FABRICAFF);
    *DIM PRODUTOS WHAT=BAS(TOTALPROD); WHERE=BAS(TOTALPROD); USING=SP;
    *DIM TIME WHAT=2008.ORC;WHERE=BAS(2008.TOTAL); USING=BAS(2008.TOTAL);
    *DIM TIPO WHAT=BAS(TOT); WHERE=BAS(TOT); USING=ST;
    *DIM VARIAVEIS WHAT=MIXACABADA; WHERE=MIXACABADA; USING=DIASMES;
    *DIM DATASRC WHAT=INPUT; WHERE=INPUT; USING=INPUT;
    *DIM VERSAO WHAT=BUDGET; WHERE=BUDGET; USING=BUDGET;
    *ENDALLOCATION
    *COMMIT
    The Key is to see in the column 2008.TOTAL ( when we selected  "BAS") the value of parent divided into "DIASMES" !
    Thanks !! 

    Your factor statment references a TOTAL, but you don't reference the total in your DIM statements. If you look at the debug log carefully, you should notice that there's no calculation of a TOTAL value.
    Try something like this. The only reason I move some dimensions from the *RUNALLOCATION up to the *XDIM's is for legibility, since the allocation makes no shifts to these dimensions. The logic should produce the same results, either way.
    // These dimensions have no shift of data.
    *XDIM_MEMBER VERSAO=BUDGET
    *XDIM_MEMBER DATASRC=INPUT
    // I'm assuming here that FACRICAFF is the top member of this dimension.
    *XDIM_MEMBERSET FABRICA_MAQ = <ALL>
    *RUNALLOCATION
    *FACTOR = USING/TOTAL
    *DIM PRODUTOS WHAT=BAS(TOTALPROD); WHERE=BAS(TOTALPROD); USING=SP; TOTAL=<<<
    *DIM TIME WHAT=2008.ORC;WHERE=BAS(2008.TOTAL); USING=BAS(2008.TOTAL); TOTAL=<<<
    *DIM TIPO WHAT=BAS(TOT); WHERE=BAS(TOT); USING=ST; TOTAL=<<<
    *DIM VARIAVEIS WHAT=MIXACABADA; WHERE=MIXACABADA; USING=DIASMES;  TOTAL=<<<
    *ENDALLOCATION
    *COMMIT

  • CSA: Use with Script Logic

    Has anybody used CSA to protect a Script logic server. With so many remote applications attempting access to the script logic server and files, what method do you find is best to keep this server protected without opening up too many holes?
    Thanks!
    -Wyley

    I would make a group of servers that are allowed to talk to the Script login server and either turn off alerts for them or just make them informational.
    Also create another protection policy if you want even more protection on that server.

  • Allocations with Script Logic

    Hi Experts,
    We're trying to run script logic for allocations, but aren't able to sum to values to one Costelement.
    In the Account dimension we have:
    - Costelements (CE)
    - Keyfigures (KF)
    - Prices (PR)
    What we want to do is:
    write (KF_A * PR_A) + (KF_B * PR_B) to CE_A
    Any suggestions on the right syntax would be very welcome.
    Regards,
    Vincent

    Hi,
        Can you explain me clearly so that i can give you solution.
    Regards,
    Naresh.K

  • Declaration issues with  script logic

    we use to write the logic as below in 5.1
    *MEMEBERSET(%PRODUCT%,"Desendents(PRODUCT_LTERM.TOT_PROD,999,LEAVES)")
    *XDIM_MEMBERSET ACCOUNT_LTERM=100000000_D,110000000_D,120000000_D,130200000_D,
    *XDIM_MEMBERSET DATASRC=INPUT
    *XDIM_MEMBERSET ENTITY_LTERM=%ENTITY_LTERM_SET%
    *XDIM_MEMBERSET PRODUCT_LTERM=%PRODUCT%
    *XDIM_MEMBERSET RPTCURRENCY=LC
    *XDIM_MEMBERSET SCENARIO=%SCENARIO_SET%
    *XDIM_MEMBERSET TIME_LTERM=CY,CY+1
    *WHEN *
    *IS *
         *REC(EXPRESSION=0)
    *ENDWHEN
    As we know that sql based keywords are not used now in thi new version 7.0
    I want to know the replacement in 7.0 for *MEMBERSET() COMMAND and also
    How * in when command for specificing consideratrion of all the declaration is replaced in 7.0

    Hi sheldon,
    Thanks for your time in replying to the question. Chennuru and I are working together.
    Let me give you a clear picture of our issue.
    1. *memberset() command which is used to retrieve a list of members of a particular dimension, is not being recognised in 7.0NW version.
    We want to know if we have any replacement or other format for this command.
    2. After declaring the dimensions using XDIM_MEMBERSET statements for all the existing dimensions, if we need to manipulate on all the existing combinations we use
    WHEN *
    IS *
                                                                               REC(EXPRESSION=0)
                                                                         *ENDWHEN
    In this case, the star to the right of the when is not recognised. Even if we replace * with <ALL> the result is not achieved.
    We would like to know what must be used to select all the existing dimensions.

  • Help with Script Logic

    Hi All
    I am trying to write the following script
    *INCLUDE ..\finance\system_constants.lgl
    *XDIM_MEMBERSET RATE=AVG,END
    *SELECT(%IP_Currencies%, "[ID]", "INPUTCURRENCYDIM", "[MD] = 'D' OR [MD]= 'M'") )
    *XDIM_MEMBERSET INPUTCURRENCY= %IP_Currencies%
    *XDIM_MEMBER RATESRC=RATEINPUT
    *WHEN INPUTCURRENCY.MD
    *IS "D"
    *REC(EXPRESSION=ROUND(1/%VALUE%,6),RATESRC="RATECALC")
    *ELSE
    *REC(RATESRC="RATECALC")
    *ENDWHEN
    *CLEAR_DESTINATION
    *DESTINATION RATESRC=RATECALC
    My LGX file looks like this.
    *XDIM_MEMBERSET RATE=AVG,END
    *XDIM_MEMBERSET INPUTCURRENCY= DZD,USD,ARS,AUD,ATS,BSD,BBD,BEF,BMD,BRL,GBP,BGN,CAD,CLP,CNY,CYP,CZK,DKK,XCD,EGP,EUR,FJD,FIM,FRF,DEM,XAU,GRD,HKD,HUF,ISK,INR,IDR,IEP,ILS,ITL,JMD,JPY,JOD,LBP,LUF,MYR,MXN,NZD,NOK,NLG,PKR,PHP,XPT,PLN,PTE,ROL,RUR,SAR,XAG,SGD,SKK,ZAR,KRW,ESP,XDR,SDD,SEK,CHF,TWD,THB,TTD,TRL,VEB,ZMK
    *XDIM_MEMBER RATESRC=RATEINPUT
    *WHEN INPUTCURRENCY.MD
    *IS "D"
    *REC(EXPRESSION=ROUND(1/%VALUE%,6),RATESRC="RATECALC")
    *ELSE
    *REC(RATESRC="RATECALC")
    *ENDWHEN
    *CLEAR_DESTINATION
    *DESTINATION RATESRC=RATECALC
    It gets validated fine and it also runs successfully through DPM. But the problem i am facing is that the above script is only running and posting data for USD  in RATECALC where as I have lot many currencies listed in "INPUTCURRENCYDIM". It does not execute for any other currency except for USD. I want to run it for all the currencies.
    Please suggest.
    Diksha.
    Edited by: Diksha Chopra on Jun 3, 2010 9:23 PM

    Hi Diksha,
    Please check in your inputcurrency dimension, how many members are there with the property MD as D?
    I would suggest you to change your scritp to
    *INCLUDE ..\finance\system_constants.lgl
    *XDIM_MEMBERSET RATE=AVG,END
    *XDIM_MEMBER RATESRC=RATEINPUT
    *WHEN INPUTCURRENCY.MD
    *IS "D"
       *REC(EXPRESSION=ROUND(1/%VALUE%,6),RATESRC="RATECALC")
    *IS "M"
       *REC(RATESRC="RATECALC")
    *ENDWHEN
    *COMMIT
    *CLEAR_DESTINATION
    *DESTINATION RATESRC=RATECALC
    Hope this helps.

  • Dimension Formula versus Script Logic that runs on default

    Hi Experts,
    Which is better to use dimension formula or script logic that runs on default? We have a lot of dimension formulas and when noticed that it has a huge impact in the performance of our AppSet. When we try to remove them, the performance seems better. We we're thinking of transforming these dimension formulas into script logic which will run by default instead. Right now I'm hesitant with two things, 1.) Will there be improvement in performance if I all these formulas are run at default via script logic? 2.) The maintenance seems to be much more complex for the user if we use script logic.
    Thanks,
    Marvin

    Hi Marvin,
    Actually you pointed very well the advantage and disantavage regarding dimension formula.
    Dimension formula are executed into run time which means that value are not calculated. Of course this will have an impact regarding performances.
    Usually our recommendation is to use dimension formula just when yoiu have KPI's to calculate which will be very difficult to be implemented into SQL scrip logic or when you have very simple calculation like Account A = Account B+ Account C.
    For other calculation we advice our customer to use script logic.
    But attention:
    Default formula should not become very heavy because you will arrive into other issue with performances.
    When you will send data if default formula script will be heavy you will arrive into situation to wait may be minutes just to send one figure and of course this will be not acceptable for users.
    So you have to use script logic but you have to run into batch mode (schedule package) that script logic.
    Into default formula you have to keep just minimum (you have to calculate just figures which have importance for user imediat, real time).
    Also you have to be aware that moving dimension formula into scrip logic actually your fact table will grow a lot because the number of records generated will be probably 3-4 times bigger than number of records from fact table with dimension formula.
    Maintenance of script logic is more complex than dimension formula and you pointed very well this.
    So it is a balance and I tried o provide you suggestions or best practice when you have to use dimesnion formula and you have to avoid dimension formula.
    I hope this will help you to arrive to best combination for your application.
    Kind Regards
    Sorin Radulescu

  • *Prior statement in script logic

    Hi,
    I'm getting started with script logic and I'm trying to create a record that will be the result of the current amount in a specific account minus the amount for the same account in the previous period.
    I was thinking to use a "prior" statement, but not really sure how to do that. Do somebody could write me an example that would sbustract my current amount minus the amount from the previous period where the account is the same in a sql logic?
    Thanks
    Martin

    Hi,
    This should do the trick.
    *INCLUDE SYSTEM_CONSTANTS.LGL
    *XDIM_MEMBERSET TIMEDIM=PRIOR,%TIME_SET%
    *XDIM_Member DataSrc=INput
    *WHEN *
    *IS *
    *REC(EXPRESSION=GET(DATASRC="INPUTSAP",TIME=PRIOR)-GET(DATASRC="INPUTSAP"),NOADD,DATASRC="Movement")
    *ENDWHEN
    *commit
    Cheers,
    AvdB
    Edited by: Gert Andries van den Berg on Aug 12, 2009 9:14 AM

  • Script logic folder empty!

    Hello every body,
    After installing Patch1 of BPC MS 7.5 SP04  I had a problem with script logic folder when expanding the Legal application in the Admin console. The folder is empty, no Logic found, even the Default.LGF!!!
    When I try to create a new one through the "Create New Logic" link in the Action Pane, I get this error displayed:
    System.IO.DirectoryNotFoundException: Could not find a part of the path 'E:\BPC\Data\Webfolders\<AppSet>\AdminApp\Legal(my application)'
    When I tried to access this path I didn't find it, I found: 'C:\PC_MS\Data\Webfolders\<AppSet>\AdminApp\Legal' instead.
    PS:I performed an update for the client with an Admin Account, after installing the patch.
    Any help?
    Thank you in advance.

    Hello,
    Thank you nilanjan for your reply
    We have resolved the issue.
    The problem was that on the BPC server on OS level the folder E:\BPC was not shared and we have added the everyone group to have access to the folder and now all the users that are using the BPC client can see the content of the Script logic in BPC Admin.
    The File Share Server was pointing to E:\BPC\Data but the folder BPC was not shared and we have added the group: Domain Users to access the network path. Now we can see all the files in the appset  Production \ Application \Legal\ Script Logic . We can create a new Script logic with success.
    Thank you.

  • Script Logic wrong results in migration to BPC 7.5M

    Hi Experts,
    We have an issue with Script Logic calculation after migration of BPC 7.0M to BPC 7.5M. At the beginning we thought that was the issue mentioned in SAP note 1515973, because we had SP03.
    Now we have SP07 and the problems persist. The result of a simply product between two numbers is wrong. For example in the next Default Script Logic:
    *WHEN TIME.GROUP
       *IS INPUT
    *WHEN CATEGORY
         *IS  <> "ACTUAL","B_ACTUAL"
              *WHEN ACCOUNTP             
                    *IS "M_SALES"
                        *REC(FACTOR=GET(ACCOUNTP="PRCT_SALES_BASIC"),ACCOUNTP="700200")
                        *REC(FACTOR=GET(ACCOUNTP="PRCT_SALES_PROMO"),ACCOUNTP="700230")
                        *REC(FACTOR=GET(ACCOUNTP="PRCT_SALES_LIMITED"),ACCOUNTP="700235")             
              *ENDWHEN
      *ENDWHEN
    *ENDWHEN
    *COMMIT
    Input:      M_SALES =           -195,75933
    Input:      PRCT_SALES_BASIC =      1
    Result: 700200 =           -195
    Are there some application parameter that defins de presicion of logic calculations?
    Some ideas? Thanks in advance.
    Best Regards
    Albert

    Hi Jörg,
    We changed to a new server with a multi-server architecture 64 bit (BPC Server and DB Server).
    Did you have the same problem? How do you resolve it?
    Thanks in advance.
    Best regards,
    Albert

  • Script logic using Dimension.Property

    Hello, Gurus!
    I have next problem with script logic:
    Dimension Company
    Company1
    Company2...
    Dimension Document
    Document1
    Document2...
    Dimension Document has property PCompany, where there is Company ID.
    I need to summation all data for Company=Company2 (for example).
    How can I choose records from Dimension Document for PCompany=Company2 with BPC script logic?
    Thanks!
    Regards,
    Svetlana.

    Hello Gersh!
    Thank you very much. It's worked.
    I should clarify the question
    I have several company which I choose with property of Company (for example, INTERCOMP=Y)
    So, I have :
    *SELECT(%COMPANY%,ID,COMPANY,INTERCOMP=Y)
    *WHEN Document.PCompany
    *IS  %COMPANY%
    *ENDWHEN
    This construction doesn't work.
    Regards,
    Svetlana.

  • Pass package variable to script logic

    Hi expert,
    I have creted a variable in a Package with the statement
    PROMPT(TEXT,%PERCE%,"Revaluation rate",,"")
    the variable appears and properly stores a value.
    However, what statement can be used to pass it to the sript logic?
    I tried 'TASK(Execute formulas,REPLACEPARAM,PERCE%EQU%%PERCE%) but it's somehow wrong.
    Please..any help?
    Thanks,
    Alberto Sabate

    Jeffrey,
    Thanks for your answer.
    I am aware that within the script logic I have to use a variable between $ signs. So $PERCE$ is exactly what I had in my script logic.
    However in order to get a value there we have to enter a command into the dstx file to actually send the value enter by the user into the script logic.
    In the Package I have:
    PROMPT(TEXT,%PERCE%,"Revaluation rate",,"")
    TASK(RUNLOGIC,FORMULASCRIPT,"*FUNCTION PER=%PERCE%")
    In the script I have
    *WHEN *
    IS
    *REC(FACTOR=PER.INPUT)
    *ENDWHEN
    I have also tried $PERCE$ instead of PER.INPUT, but no luck either.
    Still I'm not able to get the variable %PERCE% into the formula. Why?
    Thanks
    Alberto

Maybe you are looking for