How to find the parent package

Hi,
The problem I'm trying to solve is, given an instance of a SSIS package being executed, I need to find the GUID and execution id of the package that calls it. According to the API (https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.package.aspx)
the Package class
has a property "Parent", which returns the instance of the container that contains the child package. In reality though, this doesn't seem to work. Here's what I did,
1. Create a child package that simply has a script task which writes a line to a file for debugging purpose.
2. Create a custom SSIS component in which the child package is called by the myPackage.Execute() method;
3. Given the reference myPackage, try to print the parent container id through the FireInfo() method from IDTSComponents interface.
What I got was an "reference not set to an object" error, which means the parent property is null. This leads me to wonder, when is the parent property set? Is it only set during the execution of the child package? I tried to access it both before
and after executing the child package, and in both cases the value was null.
My ultimate goal is to write the parent package id (and execution id) into the ssis log so as to easily trace the execution of packages. Another option to achieving this goal would be through passing values via parent package variables but that seems to
be too clumsy. 
Any help / suggestion is greatly appreciated.
Regards,
Amos

I have done the same thing via different way. Let me tell you how
Step 1: Create a log table
CREATE TABLE [dbo].[ExecutionLog](
[LogID] [int] IDENTITY(1,1) NOT NULL,
[ParentLogID] [int] NULL,
[Description] [varchar](50) NULL,
[PackageName] [varchar](50) NOT NULL,
[PackageGuid] [uniqueidentifier] NOT NULL,
[MachineName] [varchar](50) NOT NULL,
[ExecutionGuid] [uniqueidentifier] NOT NULL,
[Operator] [varchar](50) NOT NULL,
[StartTime] [datetime] NOT NULL,
[EndTime] [datetime] NULL,
[Status] [tinyint] NOT NULL,
[FailureTask] [varchar](64) NULL,
CONSTRAINT [PK_ExecutionLog] PRIMARY KEY CLUSTERED
[LogID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[ExecutionLog] WITH CHECK ADD CONSTRAINT [FK_ExecutionLog_ExecutionLog] FOREIGN KEY([ParentLogID])
REFERENCES [dbo].[ExecutionLog] ([LogID])
GO
ALTER TABLE [dbo].[ExecutionLog] CHECK CONSTRAINT [FK_ExecutionLog_ExecutionLog]
GO
Step 2: On every package Create three Execute SQL Task
 Execute SQL Task 1 :  On begin of package 
 Execute SQL Task 2  : After completion of all task
Step 3: Now create two SP
For EQT #1
--Root-level nodes should have a null parent
if @ParentLogID <= 0 set @ParentLogID = null
--Insert the log record
insert into dbo.ExecutionLog(
ParentLogID
,Description
,PackageName
,PackageGuid
,MachineName
,ExecutionGuid
,Operator
,StartTime
,EndTime
,Status
,FailureTask
) values (
@ParentLogID
,@Description
,@PackageName
,@PackageGuid
,@MachineName
,@ExecutionGuid
,@operator
,getdate()
,null
,0 --InProcess
,null
set @logID = scope_identity()
EQT #2 On End
update dbo.ExecutionLog set
EndTime = getdate() -
,Status = case
when Status = 0 then 1 --Complete
else Status
end --case
where
LogID = @logID
You can create similar SP for OnError if you want 
Step 4: Now create two variables LogId & parentLogId Int default value 0
Step 5: Step up parent package variable configuration for logId like below
Step 6: Call these SP in respective execute SQL task
Hope this will help
Glad to help! Please remember to accept the answer if you found it helpful. It will be useful for future readers having same issue.
My Profile on Microsoft ASP.NET forum

Similar Messages

  • How to find the exact package that I need?

    How can I find the exact package that I need, for example, in Ubuntu, I can add launcher in System -> Preferences -> Main Menu, but in Arch, I can not find this Main Menu, I know I need to install something, but don't know where to go?

    Ghost1227 wrote:depends... where are you now?
    LOL
    pacman -Ss <package-name>
    would help you out. You can also put in part of the name and it will return all the matches. As for a GUI -- you don't get that by default in Arch.
    There is a GUI wrapper for pacman called shaman, but iirc, it uses kdelibs and integrates well with KDE. It looks like you are using Gnome, but you can use shaman in Gnome too.

  • How to find the Parent process in workflow

    Hi all,
    I have a .wft file with me.
    It contains atleast 8 processess.
    I need to understand the flow of this workflow.
    How do i getto know the flow?
    How do I getto know the parent process?
    I am sure if i know the parent process then i can figure out the flow as well.
    Hope someone can help me in thisproblem.
    Thanks in anticipation.
    regards.

    Hello,
    You can open the .wft file using the Workflow builder and see visually how the processes are designed. You can also see which processes are used as sub processes. These will be your children flows.
    Cheers,
    Raja

  • How to find the info packages which have periodic data selections?

    Hi,
    is there any way we can find the list of infopackages that have data selection enabled only on time? ( say calendar day )
    if not, is there anyway to find the list of infopackages which has data selection?
    Thanks,
    Ravi

    Hi Ravi,
    what do you mean exactly?
    if you are in SE16 or SE11 in the selection screen, you can enable these fields for the selection via menu Setting / fields for selection; then mark FIELDNAME and IOBJNM.
    then enter OBJVERS = 'A'
    and e.g. IOBJNM = 0CALDAY
    or double click in the input box of IOBJNM and select "not equal to" and leave the input box empty in order to see all IPack with a selection on any IObj.
    hope this helps otherwise pls let me know
    Olivier.

  • How to check the parent process chain of a meta chain

    Hello Friends,
    Recently I joined a new project, which is of environment BW 3.0. I am trying to find the dependent process chain's parent, but could'nt able to find them. I went through all the process chains manually to check whther the dependent process chain is mentioned in them, but could'nt find any......
    Can any of you help me to know how to find the parent process chain of a meta chain ?
    I really appreciate your time, will be awarding points to any answers.......
    Thanks,

    Hello Radhan,
    thanks for your quick reply. I searched the table based on your advice, but i could'nt get the parent process chain's name. Can you throw some more ideas please..........
    Thanks,

  • Where or how do I find the installation package containing "iTunes.msi"?

    I have iTunes 10.5.3.3 installed on my computer with a Windows XP operating system.  I have tried to download the new itunes 10.6 but continually get a pop up which states "The feature you are trying to use is on a network resource that is currently unavailable.  Enter an alternate path to a folder containing the installation package "iTunes.msi".  I have tried  and failed to find this package. 
    I have also tried the support page suggestion by uninstalling the old itunes and then install the new one.  This did not work.  Another pop up also tells me that I cannot remove the old (10.5.3.3) itunes...because..." the feature I am trying to use is on a network resource that is currently unavailable". I am caught in a loop.  It appears that I need to locate the "iTunes.msi" installation package in order to be able to uninstall the old and replace with the new iTunes upgrade.
    Where or how do I find the installation package containing "iTunes.msi"?  Secondly, when I find it is there anything special I need to do or be aware of?

    Download the Windows Installer CleanUp utility from the following page (use one of the links under the "DOWNLOAD LOCATIONS" thingy on the Major Geeks page):
    http://majorgeeks.com/download.php?det=4459
    To install the utility, doubleclick the msicuu2.exe file you downloaded.
    Now run the utility ("Start > All Programs > Windows Install Clean Up"). In the list of programs that appears in CleanUp, select any iTunes entries and click "Remove", as per the following screenshot:
    Quit out of CleanUp, restart the PC and try another iTunes install. Does it go through properly this time?

  • How to find the Last modified date and time of a package

    Hi,
    We need a clarification on how to find the Last modified date and time of a package in Oracle. We used the example below to explain our scenario,
    Lets consider the following example
    Let A, B be two packages.
    Package A calls the package B. So A is dependent on B.
    When A is compiled the TIMESTAMP,LAST_DDL_TIME in USER_OBJECTS gets updated.
    Now there a modification in package B so it is compiled. There is no modification in package A.
    Now when the package A is executed the TIMESTAMP,LAST_DDL_TIME in USER_OBJECTS gets updated but we did not make any change in Package A. Now we need to find last modified date and time of the package A . So we can not rely on the TIMESTAMP,LAST_DDL_TIME in USER_OBJECTS . Can u please tell us any other solution to get last modified date and time of the package A .
    Regards,
    Vijayanand.C

    Here is an example:
    SQL> SELECT OBJECT_NAME,CREATED,LAST_DDL_TIME,TIMESTAMP,STATUS FROM USER_OBJECTS
    2 WHERE OBJECT_NAME = ANY('A','B');
    OBJECT_NAM CREATED LAST_DDL_TIME TIMESTAMP STATUS
    A 20-MAY-2004 10:57:32 20-MAY-2004 10:57:32 2004-05-20:10:57:32 VALID
    B 20-MAY-2004 10:58:22 20-MAY-2004 10:59:04 2004-05-20:10:59:04 VALID
    SQL> CREATE OR REPLACE PROCEDURE A AS
    2 BEGIN
    3 NULL;
    4 NULL;
    5 END;
    6 /
    Procedure created.
    SQL> SELECT OBJECT_NAME,CREATED,LAST_DDL_TIME,TIMESTAMP,STATUS FROM USER_OBJECTS
    2 WHERE OBJECT_NAME = ANY('A','B');
    OBJECT_NAM CREATED LAST_DDL_TIME TIMESTAMP STATUS
    A 20-MAY-2004 10:57:32 20-MAY-2004 11:01:28 2004-05-20:11:01:28 VALID
    B 20-MAY-2004 10:58:22 20-MAY-2004 10:59:04 2004-05-20:10:59:04 INVALID
    SQL> EXEC B
    PL/SQL procedure successfully completed.
    SQL> SELECT OBJECT_NAME,CREATED,LAST_DDL_TIME,TIMESTAMP,STATUS FROM USER_OBJECTS
    2 WHERE OBJECT_NAME = ANY('A','B');
    OBJECT_NAM CREATED LAST_DDL_TIME TIMESTAMP STATUS
    A 20-MAY-2004 10:57:32 20-MAY-2004 11:01:28 2004-05-20:11:01:28 VALID
    B 20-MAY-2004 10:58:22 20-MAY-2004 11:01:53 2004-05-20:11:01:53 VALID
    Note that the date under the column 'created' only changes when you really create or replace the procedure.
    Hence you can use the column 'created' of 'user_objects'.

  • How to find the grants given to user for package/procedure?

    Hi all,
    how to find the grants in oracle for what all are the grants a user is having for package and procedure?
    Thanks & Regards,
    M.Murali..

    M. Murali
    Questions like this are asked over and over again on numerous sites on the Internet, including this forum, and answered.
    You are aware this forum has a 'Search Forum' button?
    PLEASE USE IT and STOP asking FAQ and DOC questions!!!!!!!!!!!!!!!!!!!
    Sybrand Bakker
    Senior Oracle DBA
    Experts: those who did read the documentation

  • How to find the status of package (valid/invalid) was at a particular time

    How to find the status of package (valid/invalid) was at a particular time ?
    I want to find the status of one oracle package at 3pm yesterday. The status of this package today is INVALID.
    I am sure it was VALID yesterday. But no way to prove it. Can any one help please???
    I can generate AWR report for last 7 days...

    Try using a flashback query, like this:
    select object_name, object_type, status
    from dba_objects AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '18' HOUR)  -- 18 hours ago
    where object_name = 'MY_OBJECT'
    ;if you haven't granted FLASHBACK privs, you may need to connect as SYS to do a flashback query on a data dictionary table.
    But this should give you the info you need - if it's still in undo.

  • How to find the level of each child table in a relational model?

    Earthlings,
    I need your help and I know that, 'yes, we can change'. Change this thread to a answered question.
    So: How to find the level of each child table in a relational model?
    I have a relacional database (9.2), all right?!
         O /* This is a child who makes N references to each of the follow N parent tables (here: three), and so on. */
        /↑\ Fks
       O"O O" <-- level 2 for first table (circle)
      /↑\ Fks
    "o"o"o" <-- level 1 for middle table (circle)
       ↑ Fk
      "º"Tips:
    - each circle represents a table;
    - red tables no have foreign key
    - the table in first line of tree, for example, has level 3, but when 3 becomes N? How much is N? This's the question.
    I started thinking about the following:
    First I have to know how to take the children:
    select distinct child.table_name child
      from all_cons_columns father
      join all_cons_columns child
    using (owner, position)
      join (select child.owner,
                   child.constraint_name fk,
                   child.table_name child,
                   child.r_constraint_name pk,
                   father.table_name father
              from all_constraints father, all_constraints child
             where child.r_owner = father.owner
               and child.r_constraint_name = father.constraint_name
               and father.constraint_type in ('P', 'U')
               and child.constraint_type = 'R'
               and child.owner = 'OWNER') aux
    using (owner)
    where child.constraint_name = aux.fk
       and child.table_name = aux.child
       and father.constraint_name = aux.pk
       and father.table_name = aux.father;Thinking...
    Let's Share!
    My thanks in advance,
    Philips
    Edited by: BluShadow on 01-Apr-2011 15:08
    formatted the code and the hierarchy for readbility

    Justin,
    Understood.
    Nocycle not work in 9.2 and, even that would work, would not be appropriate.
    With your help, I decided a much simpler way (but there is still a small problem, <font color=red>IN RED</font>):
    -- 1
    declare
      type udt_roles is table of varchar2(30) index by pls_integer;
      cRoles udt_roles;
    begin
      execute immediate 'create user philips
        identified by philips';
      select granted_role bulk collect
        into cRoles
        from user_role_privs
       where username = user;
      for i in cRoles.first .. cRoles.count loop
        execute immediate 'grant ' || cRoles(i) || ' to philips';
      end loop;
    end;
    -- 2
    create table philips.root1(root1_id number,
                               constraint root1_id_pk primary key(root1_id)
                               enable);
    grant all on philips.root1 to philips;
    create or replace trigger philips.tgr_root1
       before delete or insert or update on philips.root1
       begin
         null;
       end;
    create table philips.root2(root2_id number,
                               constraint root2_id_pk primary key(root2_id)
                               enable);
    grant all on philips.root2 to philips;
    create or replace trigger philips.tgr_root2
       before delete or insert or update on philips.root2
       begin
         null;
       end;
    create table philips.node1(node1_id number,
                               root1_id number,
                               node2_id number,
                               node4_id number,
                               constraint node1_id_pk primary key(node1_id)
                               enable,
                               constraint n1_r1_id_fk foreign key(root1_id)
                               references philips.root1(root1_id) enable,
                               constraint n1_n2_id_fk foreign key(node2_id)
                               references philips.node2(node2_id) enable,
                               constraint n1_n4_id_fk foreign key(node4_id)
                               references philips.node4(node4_id) enable);
    grant all on philips.node1 to philips;
    create or replace trigger philips.tgr_node1
       before delete or insert or update on philips.node1
       begin
         null;
       end;
    create table philips.node2(node2_id number,
                               root1_id number,
                               node3_id number,
                               constraint node2_id_pk primary key(node2_id)
                               enable,
                               constraint n2_r1_id_fk foreign key(root1_id)
                               references philips.root1(root1_id) enable,
                               constraint n2_n3_id_fk foreign key(node3_id)
                               references philips.node3(node3_id) enable);
    grant all on philips.node2 to philips;
    create or replace trigger philips.tgr_node2
       before delete or insert or update on philips.node2
       begin
         null;
       end;                          
    create table philips.node3(node3_id number,
                               root2_id number,
                               constraint node3_id_pk primary key(node3_id)
                               enable,
                               constraint n3_r2_id_fk foreign key(root2_id)
                               references philips.root2(root2_id) enable);
    grant all on philips.node3 to philips;
    create or replace trigger philips.tgr_node3
       before delete or insert or update on philips.node3
       begin
         null;
       end;                          
    create table philips.node4(node4_id number,
                               node2_id number,
                               constraint node4_id_pk primary key(node4_id)
                               enable,
                               constraint n4_n2_id_fk foreign key(node2_id)
                               references philips.node2(node2_id) enable);
    grant all on philips.node4 to philips;
    create or replace trigger philips.tgr_node4
       before delete or insert or update on philips.node4
       begin
         null;
       end;                          
    -- out of the relational model
    create table philips.node5(node5_id number,
                               constraint node5_id_pk primary key(node5_id)
                               enable);
    grant all on philips.node5 to philips;
    create or replace trigger philips.tgr_node5
       before delete or insert or update on philips.node5
       begin
         null;
       end;
    -- 3
    create table philips.dictionary(table_name varchar2(30));
    insert into philips.dictionary values ('ROOT1');
    insert into philips.dictionary values ('ROOT2');
    insert into philips.dictionary values ('NODE1');
    insert into philips.dictionary values ('NODE2');
    insert into philips.dictionary values ('NODE3');
    insert into philips.dictionary values ('NODE4');
    insert into philips.dictionary values ('NODE5');
    --4
    create or replace package body philips.pck_restore_philips as
      procedure sp_select_tables is
        aExportTablesPhilips     utl_file.file_type := null; -- file to write DDL of tables   
        aExportReferencesPhilips utl_file.file_type := null; -- file to write DDL of references
        aExportIndexesPhilips    utl_file.file_type := null; -- file to write DDL of indexes
        aExportGrantsPhilips     utl_file.file_type := null; -- file to write DDL of grants
        aExportTriggersPhilips   utl_file.file_type := null; -- file to write DDL of triggers
        sDirectory               varchar2(100) := '/app/oracle/admin/tace/utlfile'; -- directory \\bmduhom01or02 
        cTables                  udt_tables; -- collection to store table names for the relational depth
      begin
        -- omits all referential constraints:
        dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'REF_CONSTRAINTS', false);
        -- omits segment attributes (physical attributes, storage attributes, tablespace, logging):
        dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'SEGMENT_ATTRIBUTES', false);
        -- append a SQL terminator (; or /) to each DDL statement:
        dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'SQLTERMINATOR', true);
        -- create/open files for export DDL:
        aExportTablesPhilips := utl_file.fopen(sDirectory, 'DDLTablesPhilips.pdc', 'w', 32767);
        aExportReferencesPhilips := utl_file.fopen(sDirectory, 'DDLReferencesPhilips.pdc', 'w', 32767);
        aExportIndexesPhilips := utl_file.fopen(sDirectory, 'DDLIndexesPhilips.pdc', 'w', 32767);
        aExportGrantsPhilips := utl_file.fopen(sDirectory, 'DDLGrantsPhilips.pdc', 'w', 32767);
        aExportTriggersPhilips := utl_file.fopen(sDirectory, 'DDLTriggersPhilips.pdc', 'w', 32767);
        select d.table_name bulk collect
          into cTables -- collection with the names of tables in the schema philips
          from all_tables t, philips.dictionary d
         where owner = 'PHILIPS'
           and t.table_name = d.table_name;
        -- execution
        sp_seeks_ddl(aExportTablesPhilips,
                     aExportReferencesPhilips,
                     aExportIndexesPhilips,
                     aExportGrantsPhilips,
                     aExportTriggersPhilips,
                     cTables);
        -- closes all files
        utl_file.fclose_all;
      end sp_select_tables;
      procedure sp_seeks_ddl(aExportTablesPhilips     in utl_file.file_type,
                             aExportReferencesPhilips in utl_file.file_type,
                             aExportIndexesPhilips    in utl_file.file_type,
                             aExportGrantsPhilips     in utl_file.file_type,
                             aExportTriggersPhilips   in utl_file.file_type,
                             cTables                  in out nocopy udt_tables) is
        cDDL       clob := null; -- colletion to save DDL
        plIndex    pls_integer := null;
        sTableName varchar(30) := null;
      begin
        for i in cTables.first .. cTables.count loop
          plIndex    := i;
          sTableName := cTables(plIndex);
           * Retrieves the DDL and the dependent DDL into cDDL clob       *      
          * for the selected table in the collection, and writes to file.*
          begin
            cDDL := dbms_metadata.get_ddl('TABLE', sTableName, 'PHILIPS');
            sp_writes_ddl(aExportTablesPHILIPS, cDDL);
          exception
            when dbms_metadata.object_not_found then
              null;
          end;
          begin
            cDDL := dbms_metadata.get_dependent_ddl('REF_CONSTRAINT', sTableName, 'PHILIPS');
            sp_writes_ddl(aExportReferencesPhilips, cDDL);
          exception
            when dbms_metadata.object_not_found2 then
              null;
          end;
          begin
            cDDL := dbms_metadata.get_dependent_ddl('INDEX', sTableName, 'PHILIPS');
            sp_writes_ddl(aExportIndexesPhilips, cDDL);
          exception
            when dbms_metadata.object_not_found2 then
              null;
          end;
          begin
            cDDL := dbms_metadata.get_dependent_ddl('OBJECT_GRANT', sTableName, 'PHILIPS');
            sp_writes_ddl(aExportGrantsPhilips, cDDL);
          exception
            when dbms_metadata.object_not_found2 then
              null;
          end;
          begin
            cDDL := dbms_metadata.get_dependent_ddl('TRIGGER', sTableName, 'PHILIPS');
            sp_writes_ddl(aExportTriggersPhilips, cDDL);
          exception
            when dbms_metadata.object_not_found2 then
              null;
          end;
        end loop;
      end sp_seeks_ddl;
      procedure sp_writes_ddl(aExport in utl_file.file_type,
                              cDDL    in out nocopy clob) is
        pLengthDDL  pls_integer := length(cDDL);
        plQuotient  pls_integer := null;
        plRemainder pls_integer := null;
      begin
          * Register variables to control the amount of lines needed   *
         * for each DDL and the remaining characters to the last row. *
        select trunc(pLengthDDL / 32766), mod(pLengthDDL, 32766)
          into plQuotient, plRemainder
          from dual;
          * Join DDL in the export file.                            *
         * ps. 32766 characters + 1 character for each line break. *
        -- if the size of the DDL is greater than or equal to limit the line ...
        if plQuotient >= 1 then
          -- loops for substring (lines of 32766 characters + 1 break character):
          for i in 1 .. plQuotient loop
            utl_file.put_line(aExport, substr(cDDL, 1, 32766));
            -- removes the last line, of clob, recorded in the buffer:
            cDDL := substr(cDDL, 32767, length(cDDL) - 32766);
          end loop;
        end if;
          * If any remains or the number of characters is less than the threshold (quotient = 0), *
         * no need to substring.                                                                 *
        if plRemainder > 0 then
          utl_file.put_line(aExport, cDDL);
        end if;
        -- record DDL buffered in the export file:
        utl_file.fflush(aExport);
      end sp_writes_ddl;
    begin
      -- executes main procedure:
      sp_select_tables;
    end pck_restore_philips;<font color="red">The problem is that I still have ...
    When creating the primary key index is created and this is repeated in the file indexes.
    How to avoid?</font>

  • How to find the exact user exit for our requirement?

    Dear Mr. keerthi,
    can you please explain me how to find the exact user exit for our requirement?

    Hi sandip
    There is more than one method in which you can check for user-exits.The following method is used very often.
    <b>How to find the exact user-exit for your requirement.</b>
    1.     You can check the user exists using transaction SE85.
    2.     Repository Information System -> Enhancements -> Customer exits
    3.     You can search the user-exits by package name.
    4.     Double click on each exit name to check the function module exits.
    <b>The procedure to find the package name.</b>
    Execute transaction SE93 
    Enter the tcode of the transaction for which you want to check the user exit.
    Example: if you want to find the user-exit for purchase orders while changing, enter ME22n  and press display.
    You will get to see the package name
    But you need to confirm that the user exit will get triggered at the appropriate event.
    ( example: you might want some validations to be done ON SAVE of a purchase order)
    <b>Checking if the user-exit is getting triggered or not.</b>
    1.     Open the user exit function module (that you have got in step 4) in Tcode SE37.
    2.     Click on where used button. In the pop up that immediately appears choose only programs .
    3.     You will get a list of programs. Double click on the program name.
    4.     You will get the list of location where this function module user exit is used.
    5.     Place session break points at each of these location ( at each CALL FUNCTION statement)
    6.     Now go to your transaction ( say change purchase order tcode:Me22n) and check if the user exit is getting triggered on appropriate event.
    regards,
    Prasad

  • How to find the ME29N 'USER EXIT' when our save the release PO after.

    How to find the ME29N 'USER EXIT' when our save the release PO after.
    which user exit will be used?
    thanks.
    alex.

    Hi,
      process :
        go to tranx code :   ME29N ,
           System---->Status , here copy the program name (SAPLMEGUI),
         go to abap editor and specify the program name SAPLMEGUI and find the package "ME".
         tranx code : CMOD ,  Utilites--->Sap Enanchement,
                                         specify the package name : ME
                                          and execute, displays a list of exits ,
                                 and find out our suitable exit based on requirement.
    check these :   EXIT_SAPMM06E_021
    reg
    Siva

  • How to find the user exits and BADIS from SPRO

    Hi all,
    please let us know how to find the User exits or BADIS for an application from SPRO.
    Regards,
    Madhavi

    Hi Varisetty,
    Finding user exits and BAdis from SPRO can be cumbsersome. In most instances you know the standard SAP program and want to check (find) an exit called in the flow of the transaction. You can do this as follows:
    For User Exit:
    Put "/h" in the command box (to start debugging)
    Execute your transaction
    When you enter debugging - put a breakpoint at statement
    CALL CUSTOMER-FUNCTION
    the control will stop at all calls to User Exits
    For BAdi (it's simpler)
    Go to class CL_EXITHANDLER in SE24
    Enter method GET_INSTANCE
    Put a breakpoint in this method
    Run your standard transaction - control will stop at all BAdis called within the flow since this method is used to check BAdi implementations before invoking them
    Also, if you want to find enhancements by package - go to SE80, enter the package and check function groups starting with X - those contain function exits (conventional user exits). For BAdis in a package, there is normally a separate tree node (under the package) for Enhancements hence clearly identifiable.
    Cheers,
    Adi

  • How to Get the Parent - Child Relationship

    Hi ,
    In my application having 100 tables with parent - child releation ship without using casecade constraints
    i want to delete the parent with child and sub child records
    Example
    Table - 1
    parent1
    child 2
    Table - 2
    Child 1 - Parent 1
    Parent 2
    Table - 3
    Child 1 - Parent 2
    Parent 3
    Table - 4
    Child 1 - Parent 3
    How to delete the parent table ? Is it any scripts available ?
    Regards
    Sudhakar P.

    Hi,
    1) Firstly identify the parent tables using
    SELECT a.table_name, 0
    FROM user_tables a, user_tab_columns b
    WHERE a.table_name = b.table_name
    store these in one table say ID_table
    2) Identify dependent tables and sore in table say table_dependency using
    SELECT LEVEL, parenttable, parentcol, childtable, childcol
    FROM (SELECT UNIQUE parenttable, parentcol, childtable,
    b.column_name childcol
    FROM (SELECT p.table_name parenttable,
    k.column_name parentcol,
    k.POSITION pos,
    c.table_name childtable,
    c.constraint_name CONSTRAINT
    FROM all_constraints p,
    all_constraints c,
    all_cons_columns k
    WHERE p.constraint_name =
    c.r_constraint_name
    AND c.r_constraint_name =
    k.constraint_name
    AND p.constraint_type IN ('P', 'U')
    AND c.constraint_type = 'R'
    AND p.table_name != c.table_name
    ORDER BY p.table_name,
    c.constraint_name,
    k.POSITION) a,
    all_cons_columns b
    WHERE a.CONSTRAINT = b.constraint_name
    AND a.pos = b.POSITION)     
    3)Now using these details find tables without cascade rule as below
    SELECT *
    FROM table_dependency
    WHERE child_table IN (
    SELECT DISTINCT table_name
    FROM user_constraints
    WHERE constraint_type = 'R'
    AND delete_rule <> 'CASCADE'
    AND table_name IN (SELECT child_table
    FROM table_dependency)
    AND r_constraint_name IN (
    SELECT constraint_name
    FROM user_constraints
    WHERE table_name IN (
    SELECT table_name
    FROM id_table
    UNION
    SELECT child_table
    FROM table_dependency))
    AND table_name NOT IN (
    SELECT table_name
    FROM id_table));

  • How to find the patches for perticular concurrent program

    HI
    How to find the patches for perticular concurrent program. suppose for one concurrent program we create the patch and applied now i want know the which patch applied for perticular concurrent program through back end.
    Thank's

    Query the concurrent program in Sysadmin responsibility.
    Note the concurrent executable.
    Query the concurrent executable in Sysadmin.
    Note the file name.
    If it is a package, open the package in TOAD and note down the file name.
    If it is a report/form, open it in form developer and note down the file name.
    Go to patch find screen in metalink. In the advanced search screen, enter the file name and you will see patches that contain it.
    Hope this answers your question
    Sandeep Gandhi
    Independent Consultant
    513-325-9026

Maybe you are looking for

  • Help with external speakers please

    Just bought an HP G62-457DX.  I plugged in my external speakers and got a message that confirmed it, but I don't know how to make the sound come out of those speakers instead of the built-in one.  Can someone help?  Thank you.

  • Dynamic Table using drag and drop table columns

    Hi, I want to create an ADF table which allows me to insert new columns from the list of columns. List of columns will be shown in the tree. I would like to drag a tree node to the table, table should highlight where i can drop the node. Once, i drop

  • Integration of SNC to XI

    Hi . We have recently installed Supplier network Collaboration (SNC 5.1) and want to integrate with BW system and also XI system. Please help me with the options available... Regards Satish kumar

  • Problem with logical or

    hi friends i am using OR in a select statement like this : select single KAWRT from KONV into var2 where KNUMV = var1 and STUNR = 65 or STUNR = 60 . but what i want is that the result for this should be calculated as KNUMV =var1 and (STUNR = 65 or ST

  • Populating text in an idoc segment

    Hi sap gurus,    I have extended ORDERS05 IDOC and i have one Zsegment as child under E1EDP01. This Zsegment has one field TXT(part number description). Now i have to populate PO/SA text notes in this segment. and if it exceeds 1000 bytes, then this