Hierarchical + Analytical query for organizational unit parameters

Hello gurus,
I try for a couples of hour ago to make a query work as I would like.
Our application need to store some parameters for our organization units. These organization units are typically organized in in an hierarchy manner: one top unit with many level of child units. The parameters are stored into another table with 1:1 relationship.
For sake of visualisation, here is the data for the organization unit and parameter table in a more visual format:
SQL> select * from organization_unit;
UNIT_CODE  UNIT_NAME            PARENT_UNIT_CODE
00000      Top level
10         L2 unit #10          00000
10-01      L3 unit #10-01       10
10-02      L3 unit #10-02       10
20         L2 unit #20          00000
20-01      L3 unit #20-01       20
20-02      L3 unit #20-02       20
SQL>  select * from org_unit_parameters;
UNIT_CODE  PARAM1               PARAM2               PARAM3               PARAM4
00000      Default value        Default value        Default value        {null}
10         {null}               Value from 10        Value from 10        {null}
10-01      {null}               {null}               Value from 10-01     {null}
10-02      {null}               {null}               {null}               Value from 10-02
20         Value from 20        Value from 20        Value from 20        {null}
20-01      {null}               Value from 20-01     {null}               {null}
20-02      {null}               Value from 20-02     {null}               {null}The application will query the parameter table to get a parameter value for a given unit.
The parameter resolution algorithm is rather simple: when querying a unit, the applicable parameter is the one defined at the requested level. If the parameter is not defined (null) at the requested level, the parameter value that must be returned is the next defined one in the parent hierarchy. In some rare cases, it can be null if a parameter is not defined anywhere from the requested level to top.
I've made a query that seems to work when querying for one unit at a time. It use hierarchical operators (start with + connect by) with a bit of analytical functions. Here is a test & raw output example:
SQL> WITH hierarchy
  2  AS
  3  (
  4    SELECT ou.unit_code,
  5         LEVEL            AS lvl
  6    FROM   organization_unit ou
  7    START WITH
  8      ou.unit_code = '20-01'
  9    CONNECT BY
10      ou.unit_code = PRIOR ou.parent_unit_code
11  )
12  SELECT h.*,
13       p.param1                                                        AS param1_raw,
14       LAST_VALUE (p.param1 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param1_with_last,
15       FIRST_VALUE(p.param1 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param1_with_first,
16       p.param2                                                        AS param2_raw,
17       LAST_VALUE (p.param2 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param2_with_last,
18       FIRST_VALUE(p.param2 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param2_with_first,
19       p.param3                                                        AS param3_raw,
20       LAST_VALUE (p.param3 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param3_with_last,
21       FIRST_VALUE(p.param3 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param3_with_first,
22       p.param4                                                        AS param4_raw,
23       LAST_VALUE (p.param4 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param4_with_last,
24       FIRST_VALUE(p.param4 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param4_with_first
25  FROM   hierarchy                                h
26         LEFT JOIN org_unit_parameters         p
27         ON h.unit_code = p.unit_code
28  ORDER BY h.lvl DESC;
UNIT_CODE   LVL PARAM1_RAW           PARAM1_WITH_LAST     PARAM1_WITH_FIRST    PARAM2_RAW           PARAM2_WITH_LAST     PARAM2_WITH_FIRST    PARAM3_RAW           PARAM3_WITH_LAST     PARAM3_WITH_FIRST    PARAM4_RAW           PARAM4_WITH_LAST     PARAM4_WITH_FIRST
00000         3 Default value        Default value        Value from 20        Default value        Default value        Value from 20-01     Default value        Default value        Value from 20        {null}               {null}               {null}
20            2 Value from 20        Value from 20        Value from 20        Value from 20        Value from 20        Value from 20-01     Value from 20        Value from 20        Value from 20        {null}               {null}               {null}
20-01         1 {null}               Value from 20        {null}               Value from 20-01     Value from 20-01     Value from 20-01     {null}               Value from 20        {null}               {null}               {null}               {null}Seems pretty good, the upper parameters are well «propagated» down with LAST_VALUE function. But, I don't understand why the use of FIRST_VALUE and oppposite ordering doesn't give the same result. A little more playing with the last query for getting the final result for a given unit code:
SQL> SELECT *
  2  FROM
  3  (
  4     WITH hierarchy
  5     AS
  6     (
  7        SELECT ou.unit_code,
  8               LEVEL            AS lvl
  9        FROM   organization_unit ou
10        START WITH
11           ou.unit_code = '20-01'
12        CONNECT BY
13           ou.unit_code = PRIOR ou.parent_unit_code
14     )
15     SELECT h.*,
16            LAST_VALUE (p.param1 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param1,
17            LAST_VALUE (p.param2 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param2,
18            LAST_VALUE (p.param3 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param3,
19            LAST_VALUE (p.param4 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param4
20     FROM   hierarchy                                h
21               LEFT JOIN org_unit_parameters         p
22               ON h.unit_code = p.unit_code
23     ORDER BY h.lvl
24  )
25  WHERE ROWNUM = 1;
UNIT_CODE   LVL PARAM1               PARAM2               PARAM3               PARAM4
20-01         1 Value from 20        Value from 20-01     Value from 20        {null}Works well!
But, my ultimate goal is to create a view that resolve correctly all these parameters for each level of the organization with proper propagation rather then querying for each unit at a time. I played a bit, but without success. :( My current raw query is this one:
SQL> WITH hierarchy
  2  AS
  3  (
  4     SELECT ou.unit_code,
  5            LPAD(' ',2*(LEVEL-1)) || ou.unit_code    AS tree,
  6            LEVEL                                    AS lvl
  7     FROM   organization_unit ou
  8     START WITH
  9        parent_unit_code IS NULL
10     CONNECT BY
11        PRIOR unit_code =  parent_unit_code
12  )
13  SELECT h.*,
14         p.param1                                                        AS param1_raw,
15         LAST_VALUE (p.param1 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param1_with_last,
16         FIRST_VALUE(p.param1 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param1_with_first,
17         p.param2                                                        AS param2_raw,
18         LAST_VALUE (p.param2 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param2_with_last,
19         FIRST_VALUE(p.param2 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param2_with_first,
20         p.param3                                                        AS param3_raw,
21         LAST_VALUE (p.param3 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param3_with_last,
22         FIRST_VALUE(p.param3 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param3_with_first,
23         p.param4                                                        AS param4_raw,
24         LAST_VALUE (p.param4 IGNORE NULLS) OVER (ORDER BY h.lvl DESC)   AS param4_with_last,
25         FIRST_VALUE(p.param4 IGNORE NULLS) OVER (ORDER BY h.lvl ASC)    AS param4_with_first
26  FROM   hierarchy                          h
27            LEFT JOIN org_unit_parameters   p
28            ON h.unit_code = p.unit_code
29  ORDER BY h.unit_code;
UNIT_CODE  TREE        LVL PARAM1_RAW                PARAM1_WITH_LAST          PARAM1_WITH_FIRST      PARAM2_RAW                   PARAM2_WITH_LAST          PARAM2_WITH_FIRST         PARAM3_RAW                PARAM3_WITH_LAST          PARAM3_WITH_FIRST         PARAM4_RAW                PARAM4_WITH_LAST       PARAM4_WITH_FIRST
00000      00000         1 Default value             Default value             Default value          Default value                Default value             Default value             Default value             Default value             Default value             {null}                    Value from 10-02       {null}
10           10          2 {null}                    Value from 20             Default value          Value from 10                Value from 10             Default value             Value from 10             Value from 10             Default value             {null}                    Value from 10-02       {null}
10-01          10-01     3 {null}                    {null}                    Default value          {null}                       Value from 20-02          Default value             Value from 10-01          Value from 10-01          Default value             {null}                    Value from 10-02       Value from 10-02
10-02          10-02     3 {null}                    {null}                    Default value          {null}                       Value from 20-02          Default value             {null}                    Value from 10-01          Default value             Value from 10-02          Value from 10-02       Value from 10-02
20           20          2 Value from 20             Value from 20             Default value          Value from 20                Value from 10             Default value             Value from 20             Value from 10             Default value             {null}                    Value from 10-02       {null}
20-01          20-01     3 {null}                    {null}                    Default value          Value from 20-01             Value from 20-02          Default value             {null}                    Value from 10-01          Default value             {null}                    Value from 10-02       Value from 10-02
20-02          20-02     3 {null}                    {null}                    Default value          Value from 20-02             Value from 20-02          Default value             {null}                    Value from 10-01          Default value             {null}                    Value from 10-02       Value from 10-02As you can see, it's not as I expected. I know there's something to do with a PARTITION BY clause, but don't know how.
Is anyone knows how to solve my problem?
Thanks
Bruno
For reproductibility purposes, here is the code to create sturcture and data:
Here is the format of my tables and some samble data:
CREATE TABLE organization_unit (
   unit_code         VARCHAR2(5 CHAR)   NOT NULL PRIMARY KEY,
   unit_name         VARCHAR2(100 CHAR) NOT NULL,
   parent_unit_code  VARCHAR2(5 CHAR)  
CREATE TABLE org_unit_parameters (
   unit_code         VARCHAR2(5 CHAR)   NOT NULL PRIMARY KEY,
   param1            VARCHAR2(100 CHAR),
   param2            VARCHAR2(100 CHAR),
   param3            VARCHAR2(100 CHAR),
   param4            VARCHAR2(100 CHAR)
-- Inserting data
INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
VALUES ('00000', 'Top level', NULL);
INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
VALUES ('10', 'L2 unit #10', '00000');
INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
VALUES ('10-01', 'L3 unit #10-01', '10');
INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
VALUES ('10-02', 'L3 unit #10-02', '10');
INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
VALUES ('20', 'L2 unit #20', '00000');
INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
VALUES ('20-01', 'L3 unit #20-01', '20');
INSERT INTO organization_unit (unit_code, unit_name, parent_unit_code)
VALUES ('20-02', 'L3 unit #20-02', '20');
INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param1, param2, param3)
VALUES ('00000', 'Default value', 'Default value', 'Default value');
INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param2, param3)
VALUES ('10', 'Value from 10', 'Value from 10');
INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param3)
VALUES ('10-01', 'Value from 10-01');
INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param4)
VALUES ('10-02', 'Value from 10-02');
INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param1, param2, param3)
VALUES ('20', 'Value from 20', 'Value from 20', 'Value from 20');
INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param2)
VALUES ('20-01', 'Value from 20-01');
INSERT INTO ORG_UNIT_PARAMETERS (unit_code, param2)
VALUES ('20-02', 'Value from 20-02');
COMMIT;

Now, I hoppe I got your reqs:
WITH hierarchy AS (
                   SELECT  ou.unit_code,
                           LPAD(' ',2*(LEVEL-1)) || ou.unit_code    AS tree,
                           LEVEL                                    AS lvl,
                           param1                                   AS param1_raw,
                           param2                                   AS param2_raw,
                           param3                                   AS param3_raw,
                           param4                                   AS param4_raw,
                           SYS_CONNECT_BY_PATH(p.param1,'#') || '#' AS param1_path,
                           SYS_CONNECT_BY_PATH(p.param2,'#') || '#' AS param2_path,
                           SYS_CONNECT_BY_PATH(p.param3,'#') || '#' AS param3_path,
                           SYS_CONNECT_BY_PATH(p.param4,'#') || '#' AS param4_path
                     FROM  organization_unit ou LEFT JOIN org_unit_parameters p
                             ON ou.unit_code = p.unit_code
                     START WITH parent_unit_code IS NULL
                     CONNECT BY PRIOR ou.unit_code =  parent_unit_code
SELECT  unit_code,
        tree,
        lvl,
        param1_raw,
        REGEXP_SUBSTR(param1_path,'[^#]+',1,GREATEST(1,REGEXP_COUNT(param1_path,'[^#]+'))) AS param1_with_last,
        REGEXP_SUBSTR(param1_path,'[^#]+')                                                 AS param1_with_first,
        param2_raw,
        REGEXP_SUBSTR(param2_path,'[^#]+',1,GREATEST(1,REGEXP_COUNT(param2_path,'[^#]+'))) AS param2_with_last,
        REGEXP_SUBSTR(param2_path,'[^#]+')                                                 AS param2_with_first,
        param3_raw,
        REGEXP_SUBSTR(param3_path,'[^#]+',1,GREATEST(1,REGEXP_COUNT(param3_path,'[^#]+'))) AS param3_with_last,
        REGEXP_SUBSTR(param3_path,'[^#]+')                                                 AS param3_with_first,
        param4_raw,
        REGEXP_SUBSTR(param4_path,'[^#]+',1,GREATEST(1,REGEXP_COUNT(param4_path,'[^#]+'))) AS param4_with_last,
        REGEXP_SUBSTR(param4_path,'[^#]+')                                                 AS param4_with_first
  FROM  hierarchy
  ORDER BY unit_code
UNIT_ TREE              LVL PARAM1_RAW       PARAM1_WITH_LAST PARAM1_WITH_FIRS PARAM2_RAW       PARAM2_WITH_LAST PARAM2_WITH_FIRS PARAM3_RAW       PARAM3_WITH_LAST PARAM3_WITH_FIRS PARAM4_RAW       PARAM4_WITH_LAST PARAM4_WITH_FIRS
00000 00000               1 Default value    Default value    Default value    Default value    Default value    Default value    Default value    Default value    Default value
10      10                2                  Default value    Default value    Value from 10    Value from 10    Default value    Value from 10    Value from 10    Default value
10-01     10-01           3                  Default value    Default value                     Value from 10    Default value    Value from 10-01 Value from 10-01 Default value
10-02     10-02           3                  Default value    Default value                     Value from 10    Default value                     Value from 10    Default value    Value from 10-02 Value from 10-02 Value from 10-02
20      20                2 Value from 20    Value from 20    Default value    Value from 20    Value from 20    Default value    Value from 20    Value from 20    Default value
20-01     20-01           3                  Value from 20    Default value    Value from 20-01 Value from 20-01 Default value                     Value from 20    Default value
20-02     20-02           3                  Value from 20    Default value    Value from 20-02 Value from 20-02 Default value                     Value from 20    Default value
7 rows selected.
SQL>  SY.
Edited by: Solomon Yakobson on Nov 12, 2010 10:09 AM

Similar Messages

  • No value found for Organizational Unit BILL_ORG

    Hi Experts,
    I am creating a Service transaction - Incident and then creating a follow up document (RFC). Upon saving the follow up document the system shows the following error:
    An error occurred in system FEDCLNT200 during account assignment
    Message no. CRM_ORDER_MISC 060
    Orgfinder: No value found for Organizational Unit BILL_ORG (Notification E CRM_OFI 002)
    I am not using any billing unit and do not even require one - also made settings for billing unit in Master data>Organization Management> Cross-system assignment of Org.Units... but still facing the same error
    Kindly help.
    Regards.

    Hi Amit,
    It has been a long time since I have seen this issue. As far as I remember, and also mentioned in my answer, if distributing the document to another system is not part of your process / requirement, then simply switch off the distribution via status management and transaction control.
    Select the status profile and add transaction control to the status on which the error shows up.
    Hope it helps !
    Haseeb.

  • Tables for organizational unit

    Hello!
    I created an organizational unit including position and user id's.
    In which tables this information is avaliable?
    regards
    yifat

    Hi,
    If you want to see the Organizational unit assigned to an employee, check PA0001 for that PERNR(Employee ID) and pick the ORGEH (Organizational Unit) and PLANS(Position).
    If you just want to see the existence of org unit and position goto HRP1000 table and pick OTYPE = 'O' for organizational Unit and OTYPE = 'S' for positions.
    If you want to see the relationship between them then goto table HRP1001. OTYPE = 'O' for org unit, OTYPE = 'S' for position and Check their relationship with OTYPE = 'P' for Person.
    Regards,
    Amit
    Reward all helpful replies.

  • LSO course authorization for Organizational Unit

    Hi,
    Is is possible to restrict courses in a course catalog according to Organizational unit. In the system we can restrict users to specific courses through structural authorization, but is it possible to maintain authorizations on Organizational units for LSO Courses or course types.
    Regards,
    Asad

    Disappering is the right behavior. On delivery method WBT participant type 'O' cannot be booked because WBT can be only accessed using Learning portal and Learning portal cannot be logged in using Org. Unit. So this is not possible for this release.
    But i have heard in EHP4 this option of Org. unit booking on WBT is possible but not directly but system will take care if you select an org unit for booking.
    Regards, kavya
    Edited by: Kavya Shree on Oct 30, 2008 10:08 AM

  • Account for organizational unit - translation of BP names possible?

    Hello,
    we created accounts for BP-Role BUP004 - organizational unit.
    We need to have different translations of the name of this BP depending on the login language.
    e.g.:
    german BP-name = Einsatzplanung Lagern
    english BP-name = WFM stroage systems
    Is there a way to maintain different names per language?
    Kind regards
    Manfred

    Hi Manfred,
    You can maintain multiple language version of the bp name & address using International address version.
    For more info, [http://help.sap.com/saphelp_sm40/helpdata/en/18/c042ffda4811d3b571006094192fe3/content.htm]
    Cheers, Satish

  • Search Help for Organization Unit ID..

    Hello Friends,
       Is there any search help which will display all the Organization Unit ID?..
    John.

    Hello Friends,
       When you goto Users_gen->create->copy user and employee... - > create users from existing SU01 users.. you can see the Organization unit id input field.. which has F4 help.. I need to have same F4 help in my custom program.. when i try to find the search help in debug mode i found that 'HRBAS00OBJID' but when i execute this search help in se11.. i dont find the same value which appear in the Users_gen. when i execute in se11 i can see more than 5000 records... appear but when execute users_gen i can see only 20 records.. i want to know is there any other search help will only display the Organiztion unit id only..
    John.

  • Standard Report for Organizational Unit

    Hello Team,
    Is there any standard report to fetch orgunit and their parent org unit ID in Organizational Management? Can we do it through Adhoc query??
    Please suggest suitable solution.
    Best Regards,
    RP

    Dear Rajas P,
    SAP has given no.of option's like you can fetch the data through
    S_AHR_61016362 - Flexible Employee Data
    SAP Query : -> SQ03, SQ02, SQ01 or SQVI
    Postimage.org / gallery - SQ 01 1, SQ 01 2, SQ 01 3, SQ 01 4, SQ 01 5, SQ 01 6, SQ 01 7
    SE16
    Try with these If still not getting expected result I think so you need to go with custom report..
    Ur's
    Mohan

  • Authorisation Object for Organizational Unit.

    Hi Experts
    I have an query on user authorisation as follow,
    As in my project I have two user as Maker & Checker. Maker is having Business Area B001 Authorisation and in checker is also having the different role with same Business area authorisation, Now my query is I wanted to sort this on Organisational Unit level. So is there any object available for to assign Org Unit level Authorasation. as like P_Origin is there in SAP sytem.. please guide me ...
    Regards
    Swapnil

    Hi Swapnil,
    You can use HR Master Data Customer-Specific object to include any fields from infotype 0001 to authorisation checks. Please check the |help.sap.com (http://help.sap.com/erp2005_ehp_02/helpdata/en/4e/74ba3bd14a6a6ae10000000a114084/frameset.htm) regarding use of this object. On the bottom of that page is a link for creating the object and activating the check against it.
    Regards,
    Saku

  • Change of Cost Center Assignment for Organization Unit in HR

    Hi,
    Recently my client is changing their cost center number from 6char to 5 char format. I have created customized mapping table to link between old cost center number and new ones.
    Create new cost center referencing to old cost center is done too.
    However, for each Personnel Number, i need to change the cost center assignment which link to org unit. I have done this too manually at t-code PPOM. How can I do this for mass change? I have a list of org unit number with me. Is there any standard program to do this or i should use LSMW ?
    How do I make sure for each Personnel number, their cost center assignment will change to new 5 char format in the end as required?
    I am new to HR module.
    Thank you for your help.

    Hi,
    As Sikandar said, you will have to write an LSMW or BDC ( where in you can check and validate the input Cost centers) using PP01 or Po10.
    Also I think if you use BDC or LSMW you will have to run the RHINTE30 report. Check the documentation on RHINTEXX reports to get better idea.
    Cheers..
    Ajay

  • Budgets for Organizational units

    Hi There,
    We are implementing ECM at a client right now and are running into a couple of issues/concerns. As of today, they have SAP 4.7 and EP 6.0 on their servers. The issue we face revolves around budgets.
    The client has offices in US and UK and other places in Europe. In some of the Org units, we have employees who are based in Europe and report to somebody in US. In other words, these UK based employees are in an US org unit. In some cases, we have the other scenario too. The issue that i need an answer to is:
    How do we calculate budgets for them? In US, the standard merit increase is at 3 % and in UK, it is at 4%. There is a danger of the budget being overloaded in a US org unit containing UK people and that obviously is not a good thing. If it is the other way round, it is not an issue. In other words, for US people who are in an UK org unit, there isn't a danger of the budget being overused, but for UK people in a US org unit, this is definately an issue.
    Any of you out there who has faced a similar issue and managed to resolve it, please feel free to comment on this.
    Thanks,
    Bhushan.

    Hi Bhushan
    What does the business want? With expatriate population, these issues are bound to come. Also if you add the exchange rate the company uses when it created the budget and when it's allocating the awards......
    I think it's more of a business question and once you get a clear answer from the stakeholders, it will become much easier to handle the system aspect.

  • HR Requirements creation for organizational unit

    Hi,
    Has anyone had any experience do this by any method other than using batch input of transaction PP63 ??
    Basically this transaction is cumbersome and slow and does not work particularly well so I am looking to create the requirements by another method such as a BAPI/function module or method call.
    Any sensible suggestions would be greatly appreciated.
    Cheers
    Colin.
    Message was edited by: Colin Bickell

    Hi Colin
    Unfortunately, your thread does not seem to be a question thread. You may have set this property while posting your first question.
    I do not know whether you can set this property at this point.
    *--Serdar
    Oh you can set it as question by editing your first post. But I do not know whether you can give points then. I marked one of my previous posts as question but it seems still I can't reward points.
    *--Serdar
    Message was edited by: Serdar Simsekler

  • Number range for Object (Organizational unit, Job, Position)

    Hi all,
    How to maintain number range for Organizational unit or Job or Position by Company Code or PA, EG, ...?
    Thanks,
    Quang

    Hi,
    For organizational objects maintain number ranges via OONR.
    e.g. In order to maintain number range for C - Job object in plan version 01 add the following line to OONR:
    01C  IN  EX
    Then select this line and hit "Number range maintenance"
    There create the interval you want.
    (EX 60000000 69999999)
    For PA, EG there is no number range maintained.
    Regards,
    Dilek
    Edited by: Dilek Ersoz Adak on Jan 14, 2010 8:08 AM

  • How to get Personnel Numbers from Organizational Unit ?

    Hello All,
    I have a requirement in the HR module to get a list of all the personnel numbers maintained for a Organizational Unit.
    Is there any Function Module to find out the Personnel Numbers assigned to a Organizational Unit for HR module ?
    Thanks,
    Ketan.

    Hi Ketan,
        I'm not sure that there is any Function Module available for finding the Personnel Numbers. I have listed some Tables in HR Module try whether this will help you in finding Personnel Numbers for Organizational Unit.
    DD01L Domains 
    DD02L SAP tables 
    DD03L Table Fields 
    DD03T DD: Texts for fields (language dependent) 
    DD04L Data elements 
    DD04T R/3 DD: Data element texts 
    DD05S Foreign key fields 
    DD06L Pool/cluster structures 
    DD20L Matchcode Ids 
    DD24S Fields of a matchcode ID 
    T000    Clients 
    T001    Company Codes 
    T001E  Company code-dependent address data 
    T001P  Personnel Areas/Subareas 
    T012    House banks 
    T012K House bank accounts 
    T012T House bank account names 
    T500L Personnel Country Grouping 
    T500P Personnel Areas 
    T500T Personnel Country Groupings 
    T501    Employee Group 
    T501T Employee Group Names 
    T502T Marital Status Designators 
    T503    Employee Groups / Subgroups 
    T503K Employee subgroup 
    T503T Employee Subgroup Names 
    T504A Benefits - Default Values (NA) 
    T504B Benefit Option Texts (North America) 
    T504C Benefit Type (NA) 
    T504D Benefit Credit Group Amount 
    T504E Benefit Amount 
    T504F Benefit Costs 
    T508A Work Schedule Rules 
    T508T Texts for Employee Subgroup Groupings for Work Schedules 
    T510   Pay Scale Groups 
    T510A Pay Scale Types 
    T510F Assign Pay Scale > Time Unit, Currency 
    T510G Pay Scale Areas 
    T510H Payroll Constants with Regard to Time Unit 
    T510I Standard Working Hours 
    T510J Constant Valuations 
    T510L Levels 
    T510M Valuation of pay scale groups acc. to hiring date 
    T510N Pay Scales for Annual Salaries (NA) 
    T510S Time Wage Type Selection Rule 
    T510U Pay Scale Groups 
    T510Y Special Rules for Wage Type Generation 
    T511    Wage Types 
    T512R Cumulation Wage Types in Forms 
    T512S Texts for Cumulation Wage Types in Forms 
    T512T Wage Type Texts 
    T512W Wage Type Valuation 
    T512Z   Permissibility of Wage Types per Infotype 
    T513    Jobs 
    T514S Table Name Texts 
    T514T Field Name Texts 
    T51D2 Wage Type Classes 
    T51D3 Reduction Rules 
    T51D4 Cumulation Rules 
    T527X Organizational Units 
    T528B Positions - Work Centers 
    T528C Wage Type Catalog 
    T528T Position Texts 
    T529A Personnel Event 
    T529F Fast Data Entry for Events 
    T529T Personnel Event Texts 
    T52BT Texts For HR Objects 
    T52C0 Payroll Schemas 
    T52C1 Payroll Schemas 
    T52C2 Texts for Personnel Calculation Schemas 
    T52C3 Texts for Personnel Calculation Schemas 
    T52C5 Personnel Calculation Rules 
    T52CC Schema Directory 
    T52CD Schema Directory 
    T52CE Directory of Personnel Calculation Rules 
    T52CT Text Elements 
    T52CX Cross References via Generated Schemas 
    T52D1 Valid Processing Classes 
    T52D2 Valid Values for Processing Classes 
    T52D3 Valid Evaluation Classes 
    T52D4 Permitted Values for Evaluation Classes 
    T52D5 Wage Type Groups 
    T52D6 Wage Type Group Texts 
    T52D7 Assign Wage Types to Wage Type Groups 
    T52D8 Valid Processing Classes - Texts 
    T52D9 Valid Values for Processing Classes - Texts 
    T530 Reasons for Events 
    T530E Reasons for Changes 
    T530F Reasons for Changes 
    T530L Wage Types for Special Payments 
    T530T Event Reason Texts 
    T531 Deadline Types 
    T531S Deadline Type Texts 
    T533 Leave Types 
    T533T Leave Type Texts 
    T539A Default Wage Types for Basic Pay 
    T539J Base Wage Type Valuation 
    T539R Events for Standard Wage Maintenance 
    T539S Wage Types for Standard Wage Maintenance 
    T548 Date Types 
    T548S Date Conversion 
    T548T Date Types 
    T548Y Date Types 
    T549A Payroll Areas 
    T549B Company Features 
    T549C Decision Trees for Features (Customers) 
    T549D Feature Directory 
    T549L Date modifiers 
    T549M Monthly Assignment: Payroll Period 
    T549N Period Modifiers 
    T549O Text for date modifier 
    T549P Valid Time Units for Payroll Accounting 
    T549Q Payroll Periods 
    T549R Period Parameters 
    T549S Payroll date types 
    T549T Payroll Areas 
    T549M Monthly Assignment: Payroll Period 
    T549N Period Modifiers 
    T549O Text for date modifier 
    T549P Valid Time Units for Payroll Accounting 
    T549Q Payroll Periods 
    T549R Period Parameters 
    T549S Payroll date types 
    T549T Payroll Areas 
    T554S Absence and Attendance Types 
    T554T Absence and Attendance Texts 
    T554V Defaults for Absence Types 
    T554Y Time Constraints in HR TIME 
    T555A Time Types 
    T555B Time Type Designations 
    T559A Working Weeks 
    T559B Name of Working Week 
    T572F Event Texts 
    T572G Allowed Values for Events 
    T572H Event Value Texts 
    T582A Infotypes 
    T582B Infotypes Which Are Created Automatically 
    T582S Infotype Texts 
    T582V Assignment of Infotypes to Views 
    T582W Assigns Infotype View to Primary Infotype 
    T582Z Control Table for PA Time Management 
    T584A Checking Procedures - Infotype Assignment 
    T588A Transaction Codes 
    T588B Infotype Menus 
    T588C Infotype Menus/Info Groups 
    T588D Infogroups for Events 
    T588J Screen Header Definition 
    T588M Infotype Screen Control 
    T588N Screen Modification for Account Assignment Block 
    T588O Screen Modification for Assignment Data 
    T588Q Screen types for fast entry 
    T588R Selection Reports for Fast Data Entry 
    T588S Screen Types for Fast Entry 
    T588T Menu and Infogroup Designations 
    T588V Business object type 
    T588W Event types for infotype operations 
    T588X Cust. composite definition of event types for IT operations 
    T588Z Dynamic Events 
    T591A Subtype Characteristics 
    T591B Time Constraints for Wage Types 
    T591S Subtype Texts 
    T596F HR Subroutines 
    T596G Cumulation wage types 
    T596H _Cumulation wage type texts 
    T596I Calculation rule for cumulation wage types 
    T596U Conversion Table 
    T599B Report Classes 
    T599C Report Classes 
    T599D Report Categories 
    T599F Report Classes - Select Options 
    T777A Building Addresses 
    T777T Infotypes 
    T777Z Infotype Time Constraints 
    T778T Infotypes 
    T778U Subtypes 
    Error Messages tables 
    T100 Messages 
    T100A Message IDs for T100 
    T100C Control of messages by the user 
    T100O Assignment of message to object 
    T100S Configurable system messages 
    T100T Table T100A text 
    T100V Assignment of messages to tables/views 
    T100W Assign Messages to Workflow 
    T100X Error Messages: Supplements

  • Controlling area already used for org. unit problem

    Hi people,
    can you please help me with one problem, my customer is upgrading SAP HR from 4.6 to 6.0 and now we are testing QAS system.
    When I create new or. unit in PPOME, I have Cost-centre inherited from the org.unit above, but when I want to put another Cost-centre it gives me the next error "Controlling area HR01 already used for organizational unit XXXXXXXX".
    The same procedure worksin PRD system which is on version 4. 6. Could you please help me what is wrong because i am not able to change cost centre in the QAS system.
    Thank you.
    Romano
    Edited by: Romano Cinotti on Oct 13, 2009 11:25 AM

    Hi,
    To which object u are going to change the cost center i.e, position, job, org.unit.
    If you are changing the cost center to position, If it is not allowing to change the cost center then u have to check the parameters:
    May be u already assigned cost center
    May be u already assigned cost center to ur org, unit, which u assigned to ur position. If u already assigned diffrent cost center to ur org.unit, you may not change the cost center to ur position or job.
    Regards
    Devi.

  • Business partner of organizational unit is not consistent

    Hi,
    Client is on SRM 4.0. When we are trying to search a user in the org structure, and when clicking on "Check" for this user, it was showing fine. But when we are searching any BP in the org strucutre, then immediately the BP name is vanishing against the BP of the user and when doing the "Check" it is showing the below two messages:
    Business Partner of organizational unit XXXXXXX is not consistent
    User cannot be repaired becasue the organizational unit contains errors
    When checking in BBP_CHECK_USRES, the user is not showing as defective. It is green.
    Similarly, the the organizational unit check is also showing as green.
    System is advising to run BBP_BP_OM_INTEGRATE. When we run this for the org units, these are coming as green.
    Users are able to create the shopping carts and also are able to create confirmations. But the problem is happening for some of the users where the system is not allowing to create shopping basket / confirmation.
    Strange thing is that, when we are searching the user by user id in the org structure, then the check is showing no messages. But if we search the same user using the BP number, then in the check, the messages are coming. And once the messages appear, it is appearing for all the users in the org strucutre even at the root node level.
    Any help is highly appreciated.
    Thanks & Regards,
    Aswini

    Hi Aswini,
    There are some possibilities to raise these kind of errors messages:                                                                               
    1) User with inconsistent data.                                           
    Please, check the instructions described in the following notes:          
    597475 - Repair users with inconsistent address data                      
    -> use the report B_REPAIR_EBP_USER_2 to make the user consistent.        
    419423 - Repairing incorrect EBP users                                    
    350129 - Creating business partner for organizational unit                                                                               
    When you create the Org Units have you fully completed the address        
    data, e.g post coe, telephone/fax number etc..                            
    If not, please enter a full address, save the data and see if this        
    generates the Business Partner.                                           
    Remember, that you can delete this user and create a new user.                                                                               
    2) Error in the positions after HR replication                                                                               
    Please, implement the following notes and retest the scenario:            
    1056873 -  Incorrect SRM users after HR distribution                      
    1016450 - Replication of persons deletes positions in SRM                                                                               
    After implementing these notes you should send the employee               
    corresponsing to the user in error with his position (using               
    transaction PFAL or report RHALEINI in UPDATE mode for all periods.                                                                               
    3) the user was deleted and a new was created and during these two        
    actions the user opened documents. So, in this case, the new user         
    becomes inconsistent                                                                               
    If the user is deleted from SU01 still the BP and S which is related to   
    that user will be retained (we can see this in PPOMA_BBP) transaction.    
    In this case we can create the user again using SU01 and can be attached  
    with the old 'S' and 'BP'.                                                                               
    2. If the user is completed deleted ie., all relations BP and S.          
    The new user has created.   
    In this case if the new user is corrupted we can delete this                  
    user (since the new user doesn't create any documents so far). But the        
    old documents should refer to the new BP related to the new user.   
    ========================
    Also, another option would be to follow the below instructions
    After applying the notes 1056873 & 1016450, send the employees        
    corresponding to the users in errors with their positions (using              
    transaction PFAL or report RHALEINI in UPDATE mode for all periods,           
    using evaluation path A008) ? If not, please do this and it must repair       
    the SRM users. Please test and give me the feedback.     
    Hope this helps,
    Kind Regards,
    Matthew

Maybe you are looking for

  • Sub Contracting Challan Error during Reconcillation

    Dear All While doing Sub Contracting quantity reconcilation in J1IFQ i am getting the following error."Challan material is different from material document" I am entering the correct (101)material document only. In MIGO itself i have reffered challan

  • Why wont my new ipod sync my enitre library?

    I've been trying to sync my entire library to a new iPod but nothing is working. Even dragging and dropping individual songs won't work. What am I doing wrong??

  • Itunes/QT converts video from sound to no-sound

    I have a video that has sound. when i convert it for ipod or when I convert in QT to ipod, it ends up converted with no sound. Any thoughts? Thanks!

  • BA Error

    Hi, We are getting Business area required entry for the GL account XXXX in Migo Transaction we made Business Area mandatory for all the GL accounts Business Area is assigned to Cost center. How to solve this Error

  • SUGGESTION PLZ

    Hi,      I completed my certification in SAP ABAP - how i am looking forward to do one more certification which will help in my carrier, can you suggest me with any options --- thanks in advance