ustawienie / zmiana kontekstu organizacji

Aby zobaczyć dane w niektórych widokach w bazie danych, należy ustawić odpowiedni kontekst organizacji.

Jest to element funkcjonalności Muli-org.

R12

1) If you know the security_profile_id for that responsibility and user, you could call:

mo_global.set_org_access(null, <sp_id>, 'PA');

Security profiles are stored in PER_SECURITY_PROFILES, and the final parameter is the application short name of the application associated with the responsibility you would be using.

 

2) To set the operating unit context to a single operating unit, you could simply use:

mo_global.set_policy_context(‘S’,<org_id>);

However, it is generally preferable to use the following wrapper functions from MO_GLOBAL which will call the appropriate utilities to maintain the various elements of the multi-org context:

Procedure: SET_POLICY_CONTEXT(p_access_mode varchar2, p_org_id number)
This procedure will set the access mode, and when applicable the current operating unit context.

Procedure: SET_ORG_ACCESS(p_org_id_char varchar2, p_sp_id_char varchar2, p_appl_short_name varchar2)
This procedure determines if the application specified has multi-org access control enabled, by querying FND_MO_PRODUCT_INIT for the application short name. If this is enabled, and a security profile is specified (p_sp_id_char), then all orgs the user has access to will be populated in MO_GLOB_ORG_ACCESS_TMP. If there are more than one such org, the access method will be set to „Multiple”. Otherwise if no security profile id is specified, it will use the value of p_org_id to set the current operating unit value and set the access mode to „Single”.

Procedure: INIT(p_appl_short_name varchar2)
The procedure used by the applications when starting a new session. Based on the profile options „MO: Operating Unit” (ORG_ID) and „MO: Security Profile” (XLA_MO_SECURITY_PROFILE_LEVEL), this procedure calls set_org_access to establish the multi-org context for the session. To call this from withing SQL, the profile option context should have been initialized for the session.

Function: GET_CURRENT_ORG_ID
Returns the current operating unit setting. This should be null if the access mode is not 'S’

Function: GET_ACCESS_MODE
Returns the current access mode value.

11i

-- zmiana kontekstu organizacji --
 
BEGIN
 
  apps.fnd_client_info.SET_ORG_CONTEXT('107');
 
END;
 
--ID organizacji można odczytać z:
SELECT * FROM hr_operating_units
SELECT * FROM org_organization_definitions
 
DECLARE
  auser_name           VARCHAR2(50) := 'LUSER';
  aresponsibility_name VARCHAR2(150) := 'XX-Dystrybucja';
  l_req_id             NUMBER;
  auser_id             NUMBER;
  aresponsibility_id   NUMBER;
  aapplication_id      NUMBER;
BEGIN
  EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_LANGUAGE = POLISH';
  SELECT user_id INTO auser_id FROM fnd_user WHERE user_name = auser_name;
  SELECT responsibility_id, application_id
    INTO aresponsibility_id, aapplication_id
    FROM fnd_responsibility_tl
   WHERE language = USERENV('lang')
     AND UPPER(responsibility_name) LIKE UPPER(aresponsibility_name);
  fnd_global.apps_initialize(auser_id, aresponsibility_id, aapplication_id);
  BEGIN
    INSERT INTO fnd_sessions VALUES (USERENV('sessionid'), TRUNC(SYSDATE));
  EXCEPTION
    WHEN OTHERS THEN
      NULL;
  END;
  COMMIT;
END;
Ten wpis został opublikowany w kategorii _EBS - ogólnie, PLSQL i oznaczony tagami , , . Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz