Thursday 31 March 2022

Convert XML to rows and columns in pl/sql

 with t as
(
select
'<responsibility>
<responsibility_data><responsibility_name>@Advanced Supply Chain Planner</responsibility_name><end_date>2008-07-11</end_date></responsibility_data>
<responsibility_data><responsibility_name>Advanced Planning Scenario Manager</responsibility_name><end_date>2017-02-27</end_date></responsibility_data>
</responsibility>' myxml from dual
)
SELECT x.*
FROM t,
XMLTABLE ('/responsibility/responsibility_data'
PASSING XMLPARSE (DOCUMENT t.myxml)
COLUMNS "responsibility_name" VARCHAR2 (2000) PATH 'responsibility_name',
"end_date" DATE PATH 'end_date') x;

Thursday 17 March 2022

Script to update function and sub menu in FND Menu

 DECLARE
    l_menu_id     NUMBER;
    l_row_id      VARCHAR2(20);
    l_function_id NUMBER;
    l_seq         NUMBER;
    l_prompt      fnd_menu_entries_vl.prompt%TYPE;
    l_description fnd_menu_entries_vl.description%TYPE;
    l_fnc_cnt     NUMBER := 0;
    l_sm_cnt      NUMBER := 0;
l_smy_cnt     NUMBER := 0;

    CURSOR c1 IS
    SELECT
    fm.user_menu_name||'-'|| fff.user_function_name menu_function_name,
        fm.menu_id,
        fme.function_id,
        fme.entry_sequence,
        fme.prompt,
        fme.description
    FROM
        fnd_menus_vl          fm,
        fnd_menu_entries_vl   fme,
        fnd_form_functions_vl fff
    WHERE
        1 = 1
        AND fm.menu_id = fme.menu_id
        AND fme.function_id = fff.function_id
        AND fm.user_menu_name||'-'|| fff.user_function_name IN (
'General Pref Menu-Manage Proxies Page',
'General Pref Menu-User Management - My Application Access'
);

    CURSOR c2 IS
    SELECT
    fm.user_menu_name||'-'|| fm1.user_menu_name menu_submenu_name,
        fm.menu_id,
        fme.sub_menu_id,
        fme.entry_sequence,
        fme.prompt,
        fme.description
    FROM
        fnd_menus_vl        fm,
        fnd_menus_vl        fm1,
        fnd_menu_entries_vl fme
    WHERE
        1 = 1
        AND fm.menu_id = fme.menu_id
        AND fme.sub_menu_id = fm1.menu_id
        AND fm.user_menu_name||'-'|| fm1.user_menu_name IN (
'IEX: Collections Agent Responsibility Menu-TeleSales Collateral Menu',
'IEX: Collections Agent Responsibility Menu-TeleSales Contracts Tab Menu'
);
    CURSOR c3 IS
    SELECT
    fm.user_menu_name||'-'|| fm1.user_menu_name menu_submenu_name,
        fm.menu_id,
        fme.sub_menu_id,
        fme.entry_sequence,
        fme.prompt,
        fme.description
    FROM
        fnd_menus_vl        fm,
        fnd_menus_vl        fm1,
        fnd_menu_entries_vl fme
    WHERE
        1 = 1
        AND fm.menu_id = fme.menu_id
        AND fme.sub_menu_id = fm1.menu_id
        AND fm.user_menu_name||'-'|| fm1.user_menu_name IN 
( 'Setup:-iProcurement Administration: Home Page' );

BEGIN
    dbms_output.put_line('Main Program start');
    FOR i IN c1 LOOP
        BEGIN
            dbms_output.put_line('cursor start for menu_function:'|| i.menu_function_name);
            fnd_menu_entries_pkg.update_row(
                                           x_menu_id           => i.menu_id,
                                           x_entry_sequence    => i.entry_sequence,
                                           x_sub_menu_id       => NULL,
                                           x_function_id       => i.function_id,
                                           x_grant_flag        => 'N',                 -- Grant Flag
                                           x_prompt            => i.prompt,            -- Prompt
                                           x_description       => i.description,
                                           x_last_update_date  => sysdate,
                                           x_last_updated_by   => - 1,--fnd_global.user_id,
                                           x_last_update_login => - 1--fnd_global.login_id
            );
            l_fnc_cnt := l_fnc_cnt + 1;
        EXCEPTION
            WHEN OTHERS THEN
                dbms_output.put_line('Inner Exception: ' || sqlerrm);
        END;
        COMMIT;
    END LOOP;
    dbms_output.put_line('totla function updated l_fnc_cnt:' || l_fnc_cnt);

    FOR i IN c2 LOOP
        BEGIN
            dbms_output.put_line('cursor start for menu_submenu:'|| i.menu_submenu_name);
            fnd_menu_entries_pkg.update_row(
                                           x_menu_id           => i.menu_id,
                                           x_entry_sequence    => i.entry_sequence,
                                           x_sub_menu_id       => i.sub_menu_id,
                                           x_function_id       => NULL,
                                           x_grant_flag        => 'N',                 -- Grant Flag
                                           x_prompt            => i.prompt,            -- Prompt
                                           x_description       => i.description,
                                           x_last_update_date  => sysdate,
                                           x_last_updated_by   => - 1,--fnd_global.user_id,
                                           x_last_update_login => - 1--fnd_global.login_id
            );
            l_sm_cnt := l_sm_cnt + 1;
        EXCEPTION
            WHEN OTHERS THEN
                dbms_output.put_line('Inner Exception: ' || sqlerrm);
        END;
        COMMIT;
    END LOOP;
    dbms_output.put_line('totla function updated l_sm_cnt:' || l_sm_cnt);

    FOR i IN c3 LOOP
        BEGIN
            dbms_output.put_line('cursor start for Y menu_submenu:'|| i.menu_submenu_name);
            fnd_menu_entries_pkg.update_row(
                                           x_menu_id           => i.menu_id,
                                           x_entry_sequence    => i.entry_sequence,
                                           x_sub_menu_id       => i.sub_menu_id,
                                           x_function_id       => NULL,
                                           x_grant_flag        => 'Y',                 -- Grant Flag
                                           x_prompt            => i.prompt,            -- Prompt
                                           x_description       => i.description,
                                           x_last_update_date  => sysdate,
                                           x_last_updated_by   => - 1,--fnd_global.user_id,
                                           x_last_update_login => - 1--fnd_global.login_id
            );
            l_smy_cnt := l_smy_cnt + 1;
        EXCEPTION
            WHEN OTHERS THEN
                dbms_output.put_line('Inner Exception: ' || sqlerrm);
        END;
        COMMIT;
    END LOOP;
    dbms_output.put_line('totla function updated l_smy_cnt:' || l_smy_cnt);

    dbms_output.put_line('Main Program end');
EXCEPTION
    WHEN OTHERS THEN
        dbms_output.put_line('Main Exception:' || sqlerrm);
END;
/

Script to update responsibility end date

 DECLARE
   CURSOR c1
   IS
      SELECT   fr.responsibility_id,
               fr.application_id,
               fr.data_group_application_id,
               fr.data_group_id,
               fr.menu_id,
               fr.web_host_name,
               fr.web_agent_name,
               fr.group_application_id,
               fr.request_group_id,
               fr.responsibility_key,
               frt.responsibility_name,
               frt.description,
               fr.start_date,
               fr.version
        FROM   fnd_responsibility_tl frt, fnd_responsibility fr
       WHERE   UPPER (frt.responsibility_name) IN
                     upper('OM Super User')
               AND frt.language = userenv('LANG')
               AND fr.responsibility_id = frt.responsibility_id;
BEGIN
   FOR i IN c1
   LOOP
      BEGIN
         FND_RESPONSIBILITY_PKG.UPDATE_ROW (
            X_RESPONSIBILITY_ID           => i.responsibility_id,
            X_APPLICATION_ID              => i.application_id,
            X_WEB_HOST_NAME               => i.web_host_name,
            X_WEB_AGENT_NAME              => i.web_agent_name,
            X_DATA_GROUP_APPLICATION_ID   => i.data_group_application_id,
            X_DATA_GROUP_ID               => i.data_group_id,
            X_MENU_ID                     => i.menu_id,
            X_START_DATE                  => i.start_date,
            X_END_DATE                    => SYSDATE,
            X_GROUP_APPLICATION_ID        => i.group_application_id,
            X_REQUEST_GROUP_ID            => i.request_group_id,
            X_VERSION                     => i.version,
            X_RESPONSIBILITY_KEY          => i.responsibility_key,
            X_RESPONSIBILITY_NAME         => i.responsibility_name,
            X_DESCRIPTION                 => i.description,
            X_LAST_UPDATE_DATE            => SYSDATE,
            X_LAST_UPDATED_BY             => -1,
            X_LAST_UPDATE_LOGIN           => 0
         );
         COMMIT;
         DBMS_OUTPUT.put_line ( i.responsibility_name || ' has been updated !!!' );
      EXCEPTION
         WHEN OTHERS THEN
            DBMS_OUTPUT.put_line ('Inner Exception: ' || SQLERRM);
      END;
   END LOOP;
EXCEPTION
   WHEN OTHERS THEN
      DBMS_OUTPUT.put_line ('Main Exception: ' || SQLERRM);
END;
/

Wednesday 16 March 2022

How to enable diagnostics in oracle apps R12

Profile Option Name: Utilities:Diagnostics
User Level: Yes


Profile Option Name: Hide Diagnostics menu entry
User Level: No

Tuesday 15 March 2022

Script to end date responsibility for user in oracle apps

 DECLARE
    v_user_name           VARCHAR2(100) := 'SSHARMA';
    v_responsibility_name VARCHAR2(100) := 'OM Super User';
    v_application_name    VARCHAR2(100) := NULL;
    v_responsibility_key  VARCHAR2(100) := NULL;
    v_security_group      VARCHAR2(100) := NULL;
BEGIN
    SELECT
        fa.application_short_name,
        fr.responsibility_key,
        frg.security_group_key
    INTO
        v_application_name,
        v_responsibility_key,
        v_security_group
    FROM
        fnd_responsibility    fr,
        fnd_application       fa,
        fnd_security_groups   frg,
        fnd_responsibility_tl frt
    WHERE
        fr.application_id = fa.application_id
        AND fr.data_group_id = frg.security_group_id
        AND fr.responsibility_id = frt.responsibility_id
        AND frt.language = userenv('LANG')
        AND frt.responsibility_name = v_responsibility_name;
    fnd_user_pkg.delresp(
                        username       => v_user_name,
                        resp_app       => v_application_name,
                        resp_key       => v_responsibility_key,
                        security_group => v_security_group
    );
    COMMIT;
    dbms_output.put_line('Responsibility '
                         || v_responsibility_name
                         || ' end dated for the user '
                         || v_user_name
                         || ' Successfully');
EXCEPTION
    WHEN OTHERS THEN
        dbms_output.put_line('Error encountered while end dated responsibility from the user:' || sqlerrm);
END;
/

query to find active responsibilities in oracle apps

SELECT
frt.responsibility_name,
fr.responsibility_key,
frt.description,
to_char(fr.start_date,'DD-MON-RRRR') start_date,
to_char(fr.end_date,'DD-MON-RRRR') end_date
FROM
fnd_responsibility_tl frt,
fnd_responsibility fr
WHERE
1 = 1
AND fr.responsibility_id = frt.responsibility_id
AND frt.language = userenv('LANG')
--AND upper(frt.responsibility_name) IN upper('OM Super User')
AND trunc(nvl(fr.end_date,sysdate)) <= trunc(sysdate);

Tuesday 8 March 2022

query to find processing constraints in Order Management in oracle APPS

SELECT
c.constraint_id,
e.entity_display_name entity,
c.column_display_name attribute,
l1.meaning opeartion,
l2.meaning user_action,
l4.meaning seeded,
cc.group_number,
l3.meaning scope,
cc.validation_entity_display_name val_entity,
cc.record_set_display_name record_set,
decode(
cc.modifier_flag, 'Y', NULL, ' '
) modifier,
cc.validation_tmplt_display_name val_template,
l5.meaning seeded_flag
FROM
oe_pc_constraints_v c,
oe_pc_entities_v e,
oe_pc_constraint_cnds_v cc,
oe_lookups l1,
oe_lookups l2,
oe_lookups l3,
oe_lookups l4,
oe_lookups l5
WHERE
c.entity_id = e.entity_id (+)
AND l1.lookup_code (+) = c.constrained_operation
AND l1.lookup_type (+) = 'PC_OPERATION'
AND l2.lookup_code (+) = c.on_operation_action
AND l2.lookup_type (+) = 'PC_ON_OPERATION_ACTION'
AND l4.lookup_code (+) = c.system_flag
AND l4.lookup_type (+) = 'YES_NO'
AND c.constraint_id = cc.constraint_id (+)
AND l3.lookup_code (+) = cc.scope_op
AND l3.lookup_type (+) = 'PC_SCOPE_OP'
AND l5.lookup_code (+) = cc.system_flag
AND l5.lookup_type (+) = 'YES_NO'
and c.constraint_id =1002
ORDER BY
e.entity_display_name,
nvl(
l1.meaning, 'A'
),
nvl(
c.column_display_name, 'A'
),
cc.group_number