Transaction tab in ODI Procedure

Hi Experts,
Can anyone help me on what and how exactly the Transaction tab in the ODI Procedure step works? Thanks!
Warm Regards,
VBV

Hi,
I take you mean the Transaction drop box on a procedure step?
This you can use to isolate transactions within the session, and commit at the end. For an example, if you want to load data from various sources into a table, you can set the Transaction for each procedure step to the same transaction isolation value, with the 'Commit' as 'No commit' and when all data is loaded into the table, have a commit step in your procedure to commit that specific transaction. If for some reason a step fails, then no data within that transaction will be committed to the database.
Its the same as using SQL Developer and having auto commit turned off. You have to manually commit to the database if you want to see the data changes in another session, or you can Role Back your changes within the session if you do not want to commit them.
Have a look at the IKM 'IKM Oracle Incremental Update' - this uses Transaction 1 on the following steps, both have a specified 'No Commit':
'update existing rows'
'Insert new rows',
then has a specific commit step afterwards.
Hope this helps.
Cheers
Bos

Similar Messages

  • ODI Procedure...same table in source and target tabs?

    In ODI Procedures is it possible to use the same table in the same logical schema, on the source as well as the target tabs and performdata binding?

    Thank you all.
    Here's what I am trying to do. I am trying to convert PO data from Sybase into Oracle EBS. I have a custom table which captures the vendor name. It also has a field for the vendor_id which is the identifier for this vendor. I am bringing in the vendor name from sybase table into the custom table. Now I need to retreive the identifier value for this vendor from an ebs table *"AP_SUPPLIERS"* and update the same custom table. I was trying to use a procedure to retrieve the records from the custom table on the source side and update the corresponding record on the target side.
    any ideas or suggestions for this would help.
    Thanks again.

  • How to execute unix command from ODI Procedure

    Hi,
    I am trying to execute below unix command from ODI Procedure (Command on Target tab) but I am getting the error "java.io.IOException: Cannot run program "cd": error=2, No such file or directory" but when I try to execute the same command using OdiOSCommand, it is executing successfully. I don't want to use shell script to execute this command. Is there any specific syntax am I missing to execute this command from ODI procedure?
    cd /project3/tmt/;ls *.dmp > dmplist.lst
    Please help me on this...
    Thanks
    MT

    Hi nahlikh,
    Thank you for the reply.
    I used below command in Procedure but still getting the same error as "java.io.IOException: Cannot run program "OdiOSCommand": error=2, No such file or directory".
    OdiOSCommand "-COMMAND=cd /project3/tmt/;ls *.dmp > dmplist.lst"
    as I mentioned earlier if I use the command cd /project3/tmt/;ls *.dmp > dmplist.lst in OdiOSCommand tool it is executing successfully without any issues.
    any thoughts appreciated to get a solution for this issue.
    Thanks
    MT

  • Isolation Levels in ODI procedures

    Hi,
    I have a package with 1 interfaces and 2 procedures which I want to configure in as one transactional unit
    The package executes the following sequence
    1. Interface loads data from the source to target table
    2. Procedure updates a statuscode on the source table to S
    3. Procedure updates target table sequence number, but the procedure contains a where clause which filter records to updates
    based on records in the source table with statuscode = S.
    Step 3's execution is dependent on update in step 2. These steps behave as expected and all units tests pass when I
    leave the transaction porperty of the procedures as AutoCommit.
    However I want the interface and packages to be executed as a transcational unit so I configued them as follows.
    The 2 procedures are configured to execute in the same Transaction (Transaction 0) with Commit property as "No Commit".
    I based this on other forum entries.
    With this configuration my unit tests seem to fail, the 3 step does not result in any record being updated.
    I think the issue may be related to the isolation levels on the procedures, so I then configured the procedure's "Transaction Isolation" property to be "Read Uncommited".
    When I ran the test in ODI I got the following error below.
    Can you let me know if what I am trying to do is possible ?. Can you have a number of procedures in a single transactional unit,
    where uncommited changes carried out in the first procedure(not committed), can be read in subsequent steps within that same transactional unit.
    I am current using ODI Repository: Development_ODI_D8B4A_RC5
    Any feedback would be appreciated.
    Thanks,
    Breda
    ODI-1226: Step UPD REVN LSM fails after 1 attempt(s).
    ODI-1232: Procedure UPD REVN LSM execution fails.
    ODI-1228: Task UPD REVN LSM (Procedure) fails on the target ORACLE connection SALES_IMP_DATA_SERVER.
    Caused By: java.sql.SQLException: ODI-10068: SnpsConnection: Isolation level not supported
         at com.sunopsis.sql.SnpsConnection.setTransactionIsolation(SnpsConnection.java:905)
         at com.sunopsis.sql.SnpsConnection.changeIsolationLevel(SnpsConnection.java:329)
         at com.sunopsis.dwg.dbobj.SnpSession.changeIsolationLevel(SnpSession.java:3519)
         at com.sunopsis.dwg.dbobj.SnpSessTask.getDefaultDwgConnectConnection(SnpSessTask.java:518)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.getExecutor(SnpSessTaskSql.java:2936)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.processTask(SnpSessTaskSql.java:2878)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2602)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:546)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:461)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1736)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1591)
         at oracle.odi.runtime.agent.processor.impl.StartScenRequestProcessor$2.doAction(StartScenRequestProcessor.java:568)
         at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:224)
         at oracle.odi.runtime.agent.processor.impl.StartScenRequestProcessor.doProcessStartScenTask(StartScenRequestProcessor.java:489)
         at oracle.odi.runtime.agent.processor.impl.StartScenRequestProcessor$StartScenTask.doExecute(StartScenRequestProcessor.java:1062)
         at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:118)
         at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$1.run(DefaultAgentTaskExecutor.java:49)
         at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
         at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor.executeAgentTask(DefaultAgentTaskExecutor.java:41)
         at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor.doExecuteAgentTask(TaskExecutorAgentRequestProcessor.java:94)
         at oracle.odi.runtime.agent.processor.TaskExecutorAgentRequestProcessor.process(TaskExecutorAgentRequestProcessor.java:85)
         at oracle.odi.runtime.agent.RuntimeAgent.startScenario(RuntimeAgent.java:700)
         at oracle.odi.runtime.agent.InternalRuntimeAgent.startScenario(InternalRuntimeAgent.java:52)
         at com.sunopsis.dwg.tools.StartScen.startScenOnLocalAgent(StartScen.java:983)
         at com.sunopsis.dwg.tools.StartScen.actionExecute(StartScen.java:245)
         at com.sunopsis.dwg.function.SnpsFunctionBaseRepositoryConnected.execute(SnpsFunctionBaseRepos
    Edited by: user807308 on 14-Jan-2011 01:04
    Edited by: user807308 on 14-Jan-2011 01:04

    Similar issue has been discussed here:
    Re: Transaction rollback...
    Check that out

  • ODI Scenario Hang on ODI Procedure

    Hi Experts,
    We have one ODI scenario which consists of a few ODI procedure steps with anonymous PL/SQL block. When one procedure takes a long time to process data (>60min. when data volume is large), the ODI scenario hangs intermittently on the procedure (ODI Operator shows Running state and no progress to next step in Scenario). The pl/sql script finished fine when running against database directly processing the same dataset.
    When the ODI step hangs, the database side where the pl/sql runs on has no more activities, and the db session(v$session) which processes the ODI procedure goes away as well (db session not existing on db anymore). But the ODI Operator still shows the step in running state and hangs there forever (days). The jdbc connection from ODI to db looks fine.
    How can we fix this problem in ODI? The ODI version is 10.1.3.5.
    Appreciate your input on this.
    Thanks,

    The doc said "If your command is being executed in a transaction (numbered 0 to 9)" then I should set 'Commit'. But I used 'Autocommit' for transaction, is the 'Commit' necessary here?
    Thanks!

  • ODI Procedure error log syntax

    hi
    I need to call an odi procedure and an error log needs to be stored on an error table.
    I have created an ODI procedure and in command on source select Oracle as technology and the logical schema
    here I put
    DECLARE
    ODI_VAR VARCHAR2(4000);
    BEGIN
    select ( '<%=odiRef.getPrevStepLog( "MESSAGE" )%>') into ODI_VAR from dual;
    END;
    and in target tab.
    Insert into ERROR_LOG (TASK_NAME,ERROR_DESCRIPTION)
    Values ('test','ODI_VAR');
    AFTER executing I am getting the below error
    900 : 42000 : java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement
    java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:457)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:397)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389)
         at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:662)
         at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:476)
         at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:204)
         at oracle.jdbc.driver.T4C8Odscrarr.doODNY(T4C8Odscrarr.java:101)
         at oracle.jdbc.driver.T4CPreparedStatement.doDescribe(T4CPreparedStatement.java:848)
         at oracle.jdbc.driver.OracleStatement.describe(OracleStatement.java:5331)
         at oracle.jdbc.driver.OracleResultSetMetaData.<init>(OracleResultSetMetaData.java:58)
         at oracle.jdbc.driver.OracleResultSetImpl.getMetaData(OracleResultSetImpl.java:274)
         at oracle.odi.runtime.agent.execution.sql.concurrent.FastJDBCRecordSet.<init>(FastJDBCRecordSet.java:73)
         at oracle.odi.runtime.agent.execution.sql.SQLDataProvider.readData(SQLDataProvider.java:97)
         at oracle.odi.runtime.agent.execution.sql.SQLDataProvider.readData(SQLDataProvider.java:1)
         at oracle.odi.runtime.agent.execution.DataMovementTaskExecutionHandler.handleTask(DataMovementTaskExecutionHandler.java:67)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.processTask(SnpSessTaskSql.java:2906)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2609)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:537)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:453)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:1740)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:338)
         at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:214)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:272)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:263)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:822)
         at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:123)
         at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:82)
         at java.lang.Thread.run(Thread.java:662)
    Please help me to resolve this issue.

    Hi,
    Try like this :
    Command on source :
    select ( '<%=odiRef.getPrevStepLog( "MESSAGE" )%>')  ODI_VAR from dual
    Command on target:
    Insert into ERROR_LOG (TASK_NAME,ERROR_DESCRIPTION)
    Values ('test',:ODI_VAR)
    Use the above syntax as it is....it should work..........

  • Make Payment transaction tab in XD01,02,03 disable

    Hello,
    Want to make payment transaction tab disable in XD01,02,03 for specific users.Please gimme the solutions asap, Thanks in advance
    Thanks
    Suchi

    Authorisation relates to security. Please discuss with your Basis or Security consultant for actual process.
    But the procedure is that they make changes to User Roles to limit access to users for making changes to customer data or Transactions by using Authorisation Object  F_KNA1_APP Or F_KNA1_GEN

  • ODI Procedure: Using Variable Logical Schema

    Hi!
    i wrote a PL\SQL procedure inside an odi procedure, using options, variables etc.
    now we need to execute the procedure in different logical schemas.
    We've at least 20 different logical schemas and to semplify the maintenance we'd like to pass the logical schema as an Option or something similar,
    is it possibile to do this with a procedure?
    The version of ODI is 11.1.1.5.0 and the targets are only Oracle DB.

    I've got a question : are all you schema in the same server (database) ?
    If so, you can LIST the schemas with a SQL Statement in the "command as SOURCE" tab.
    example :
    select owner as SCHEMA
    from all_tables
    where ...or a SQL Statement in ODI MASTER_Repository to get the logical schema :
    select lschema_name as SCHEMA
    from snp_lschema t1
    where ...And in the "command as destination" tab, you execute the PL SQL, but you use the result of SCHEMA.
    As a result, if you have 40 schema retrieved by the first SQL Statement, ODI will execut your PL/SQL statement 40 times, changing the SCHEMA value each time.
    And, in the first tab (command as destination), you use a generic Oracle User that have access to all schema of the dabase (or at least, the 40 schema you want).

  • ODI Procedure - updting the source table

    Hi,
    I need to call a PL/SQL package via ODI. I used ODI procedure to do the task.
    In source tab - select empid from employee
    In target tab -
    decalre
    ab varchar2(25);
    begin
    pack1.proced1(:empid,ab);
    update success1 set val1 = ab where empid = *:empid;*
    commit;
    end;
    But when i execute the procedure, its giving the error as missing parameter empid. It could not recognise the bolded part. When i give the direct value in the cmd,
    update success1 set val1 = ab where empid = *101;* its working fine.
    Any idea to resove this issue.
    Thanks in Advance,
    Ram Mohan T

    Vijay,
    1. Do you expect a single record to be returned by your source query?
    No. My source query returns with multiple records.
    2. What is the signature of your procedure? Does it accept a list of Id's or a single number.
    My procedure accepts only one id at a time. After that is processed, the next id will be passed to the procedure.
    Vijay, one thing i am confused is when I use a insert statement after the procedure its working fine (insert into success1 values(:empid,ab)).
    When i use the update stmt without where condition after the procedure also working fine (update success1 set empid1 = :empid).
    But when i use the where condition, update success1 set empid1 = ab where empid1=:empid its not working fine. Error is "Missing Parameter empid"
    Thanks in Advance,
    Ram Mohan T

  • Passing parameters into ODI procedure step which has an OS command

    Folks,
    I have an ODI procedure step which does a directory listing for a specific directory. The command I am using is
    cmd /C dir d:\local_dir /b > D:\dir_list.txt
    I have put on the 'Command on Target' tab. This works fine
    I want to remove the hardcoding for the directory references. I have tried the command
    cmd /C dir '#src_dir' /b > D:\dir_list.txt
    but when this executes it generates an ODI error 'Wrong process return code'
    any suggestions?

    I've figured it out. The issue was with using quotes in the value being passed into the variable. Once removed, it worked fine. Thanks for the assistance.
    Regards.
    Edited by: user810644 on 17-May-2010 01:59

  • Not able to see ikm oracle incremental update and ikm oracle slowly changing dimensions under PHYSCIAL tab in odi 12c

    not able to see ikm oracle incremental update and ikm oracle slowly changing dimensions under PHYSCIAL tab in odi 12c
    But i'm able to see other IKM's please help me, how can i see them

    Nope, It has not been altered.
    COMPONENT NAME: LKM Oracle to Oracle (datapump)
    COMPONENT VERSION: 11.1.2.3
    AUTHOR: Oracle
    COMPATIBILITY: ODI 11.1.2 and above
    Description:
    - Loading Knowledge Module
    - Loads data from an Oracle Server to an Oracle Server using external tables in the datapump format.
    - This module is recommended when developing interfaces between two Oracle servers when DBLINK is not an option.
    - An External table definition is created on the source and target servers.
    - When using this module on a journalized source table, the Journaling table is first updated to flag the records consumed and then cleaned from these records at the end of the interface.

  • Error in ODI procedure

    Hi Experts,
    I have created following procedure and triyng to get column value by using rownum. When I run the scenario, I am getting following exception at ODI Procedure step. Can any one please help me on it
    I have created loop package to fetch column value until loop end.
    Please let me know if you are not clear my query
    ODI Procedure:
    begin
    select a.eno into '#EMPNO' from (select rownum r,e.* from trg_emp_01 e) a where a.r=#Counter;
    end;
    #EMPNO variable created as alphanumeric datatype and
    #Counter variable created as alphanumic datatype and it is assign with '1' value
    Exception:
    6550 : 65000 : java.sql.SQLException: ORA-06550: line 1, column 25:
    PLS-00220: simple name required in this context
    ORA-06550: line 1, column 28:
    PL/SQL: ORA-00904: : invalid identifier
    ORA-06550: line 1, column 7:
    PL/SQL: SQL Statement ignored
    java.sql.SQLException: ORA-06550: line 1, column 25:
    PLS-00220: simple name required in this context
    ORA-06550: line 1, column 28:
    PL/SQL: ORA-00904: : invalid identifier
    ORA-06550: line 1, column 7:
    PL/SQL: SQL Statement ignored
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:316)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)
         at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:639)
         at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:185)
         at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:633)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1086)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2984)
         at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3057)
         at com.sunopsis.sql.SnpsQuery.executeUpdate(SnpsQuery.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execSrcOrders(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlS.treatTaskTrt(SnpSessTaskSqlS.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandScenario.treatCommand(DwgCommandScenario.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.i(e.java)
         at com.sunopsis.dwg.cmd.g.y(g.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Thread.java:595)
    ODI Procedure:
    begin
    select a.eno into #EMPNO from (select rownum r,e.* from trg_emp_01 e) a where a.r=#Counter;
    end;
    Exception:
    6550 : 65000 : java.sql.SQLException: ORA-06550: line 1, column 26:
    PL/SQL: ORA-00936: missing expression
    ORA-06550: line 1, column 7:
    PL/SQL: SQL Statement ignored
    java.sql.SQLException: ORA-06550: line 1, column 26:
    PL/SQL: ORA-00936: missing expression
    ORA-06550: line 1, column 7:
    PL/SQL: SQL Statement ignored
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:316)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)
         at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:639)
         at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:185)
         at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:633)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1086)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2984)
         at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3057)
         at com.sunopsis.sql.SnpsQuery.executeUpdate(SnpsQuery.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execSrcOrders(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlS.treatTaskTrt(SnpSessTaskSqlS.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandScenario.treatCommand(DwgCommandScenario.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.i(e.java)
         at com.sunopsis.dwg.cmd.g.y(g.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Thread.java:595)
    Thanks
    Phani
    Edited by: Phanikanth on Jul 9, 2010 1:25 AM
    Edited by: Phanikanth on Jul 9, 2010 2:08 AM

    Good point - In my case, these are single executable statements. These have been saved in ODI and executed successfully. Just no using my machine.
    EXAMPLE 1------------
    DECLARE
    RetVal ;
    I_STRING VARCHAR2(200);
    BEGIN
    I_STRING := '';
    RetVal := XXX.PKG_XXX.SF_COMMA_TO_TABLE ( I_STRING );
    COMMIT;
    END;
    EXAMPLE 2------------
    SELECT C.COL1, B.COL2, B.COL3,TO_CHAR(B.EFFDT,'YYYY-MM-DD') COL4,B.COL5,B.COL6
    FROM TABLE1 A, TABLE2 B, TABLE3 C
    WHERE
    and A.ID = 'XXX'
    and a.setcntrlvalue = ' '
    AND A.NAME = 'XXX'
    AND A.EFFDT =
    (SELECT MAX(A_ED.EFFDT) FROM TABLE1 A_ED
    WHERE A.SETID = A_ED.SETID
    AND A_ED.EFFDT <= SYSDATE)
    AND B.EFFDT =
    (SELECT MAX(B_ED.EFFDT) FROM TABLE2 B_ED
    WHERE B.SETID = B_ED.SETID
    AND B.ACCOUNT = B_ED.ACCOUNT
    AND B_ED.EFFDT <= SYSDATE)
    AND A.SETID = B.SETID
    AND A.RANGE_FROM = A.RANGE_TO
    AND B.ACCOUNT = A.RANGE_FROM
    AND A.SETID = C.SETID
    AND A.TREE_NAME = C.TREE_NAME
    AND A.TREE_NODE_NUM = C.TREE_NODE_NUM
    AND C.EFFDT =
    (SELECT MAX(C_ED.EFFDT) FROM TABLE3 C_ED
    WHERE C.SETID = C_ED.SETID
    AND C_ED.EFFDT <= A.EFFDT)
    ------------------

  • How to restrict executing tcodes in transaction tab for master clients

    This question applies SOLMAN project implementation tools: SOLAR01, SOLAR02 and so on.
    Our ERP2005 development U50 system has two clients:
    One is master client 101 where all customizing should take place  but no transactions are allowed
    second client 102 works as sandbox client where new customizing can be test and master data and transaction are allowed.
    Only U50/101 is defined in Solution manager SMSY in system role 'development system'. Currently U50/102 is not defined in Solution manager to any system role at all.
    As configuration should take place via Solution manager,  the consultants use SOLAR01 and SOLAR02 in system role 'development system' meaning that they are connected to U50/101 if want to execute transactions in transaction tabs or IMG nodes in Configuration nodes.
    But U50/101 is our MASTER client and no transactions nor most master data are allowed in there. We want to keep it clean. How can I avoid tcodes being executed in system role 'development'. I want to allow consultants use tcodes if they change to system role 'quality system'. But they might forget to change the system role before executing the transaction.
    Is there an option in Solution manager Project implementation tools that do not allow tcode launch from transaction tabs when system role is 'development system'.
    Of course I can restrict tcode execution with authorizations in satellite systems, but then I would need to disable authorizations for each tcode possibly being used. So I don't like that option.
    br: Kimmo

    Okay, I'll continue dialog with myself. I found solution how to assign other clients on one system to other system roles, which are so-called 'customer roles'.
    See solution manager help:
    http://help.sap.com/saphelp_sm40/helpdata/en/3b/8be61c54d22945837fd69861d21a08/content.htm
    I did not know until know, that system roles are actually customizable. The roles with letter P,D,C,T,E, etc. are reserved for SAP but you can create your own system roles into table SMSY_ROLES. You would not do it with SM30, but from tcode SMSY and following menu Utilities-System Settings->tab:System Roles. Switch to change mode. Roles with 0-9 are available for "customer roles". Choose role type and write your own description ( like: Sandbox client in development system ).
    Now the new role is available in SMSY. But You cannot see it yet in SOLAR_PROJECT_ADMIN/System Landscape tab. In there you must press button 'System role assignment' and in the opening window add your own 0-9 role defined earlier and save. Now you see your new role in 'system landscape' tab and you can assign systems to it like you had done with SAP standard roles.
    Now users using implementation tools can change their current system role to your new 'customer role'.
    But what it comes to my original problem (see title), that still remains. I have debugged the tcode execution from transaction tabs and don't see any possible way to avoid tcodes being executed for an unwanted system role. An Enhancement Spot ( =new BADI) can of cource be used for making custom rule for my requirement.
    I'll make this thread answered. Hope you joined my self-dialog.
    Keywords: DEFINE EDIT SYSTEM CUSTOMER ROLES SMSY_ROLES
    br: Kimmo

  • I modified the budget categories on the numbers template so now the transaction tab does not communicate with the budget tab. I figured out how to change the drop down options but how do I get it to reflect on my budget sheet? Please help.

    If you are familar with the Numbers Budget Template it has two tabs 'Budget' and 'Transactions'. If you use the template as it is designed when you input expenses on the transaction tab it will automatically add that amount into the selected category on the budget tab. I have madified my budget tab to reflect the caegories that I need, which included adding several to the template. I also added to the table so it reflects my income and expenses so I can track where I am at with a glance. Since I did this, I can't get my transactions tab to communicate with the budget tab. I figured out how to change the options in the drop down box for category but I con't figure out how to get it to reflect onto my budget tab. I'm sure that it is an easy fix, however, I am just not well versed in Numbers. I appreciate your time in helping me with this issue.
    Respectfully,
    Jon

    My guess is that while you added catetories to your Budget Sheet by adding new lines and filling in the category column, you didn't also add the formulas to these new budget lines.
    The proper way to add those lines would have been to select a cell in the line just above where you want to add a line and type Option/Alt-DownArrow. This would have copied the formulas into the new line. Maybe you did this, and maybe not. You didn't give details on how you added the lines.
    Select C2 and D2 and Command-C to copy them to the Clipboard.
    Select all the cells of Columns C and D except for the top and bottom rows and Command-V to Paste.
    If I have properly guessed the problem, you should be in business. This assumes that your Categories are exaclty the same as the entries in your Pop-up menus. Spelling counts, as does case.
    Jerry

  • In Scope missing in Transaction tab

    Hi All,
    My company has recently started to work with Solution manager.
    We have created a template project in solution manager that contains all our processes.
    I'm now tasked by testing the testing functionality of solution manager.
    By reading and doing some initial testing I noticed that we do not have the "In Scope" column in the transactions tab.
    Is this only available in implementation projects or did we configure something wrong?
    regards,
    Peter

    Hi Peter,
    scoping is generally not possible in Template projects, neither in structure nor on transaction tab.
    Regards
    Andreas

Maybe you are looking for