Tuesday, 14 July 2026

Oracle Apex - Script to Send the Table/Query Extract via email

0 comments

 Wrap the export/email logic into a procedure

CREATE OR REPLACE PROCEDURE xxsea_send_downtime_extract_email IS

    v_context   apex_exec.t_context;

    v_export    apex_data_export.t_export;

    v_mail_id   NUMBER;

BEGIN

    -- 1. Open a query context against your source table

    v_context := apex_exec.open_query_context (

                     p_location  => apex_exec.c_location_local_db,

                     p_sql_query => 'SELECT * FROM XXAL_DOWNTIME_FORM_HISTORY ORDER BY 1 DESC'

                 );


    -- 2. Export that context as CSV

    v_export := apex_data_export.export (

                    p_context   => v_context,

                    p_format    => apex_data_export.c_format_xlsx,

                    p_file_name => 'Downtime_Incident_Table_Extract'

                );


    apex_exec.close (v_context);


    -- 3. Send the email shell and capture the returned mail_id

    v_mail_id := apex_mail.send (

                     p_to   => 'aalam@abc.com',

                     p_from => 'apexadmin@abc.com',

                     p_body => 'Please find the attached downtime incident data extract.',

                     p_subj => 'Automated Downtime Incident Data Extract'

                 );


    -- 4. Attach the exported CSV using that mail_id

    apex_mail.add_attachment (

        p_mail_id    => v_mail_id,

        p_attachment => v_export.content_blob,

        p_filename   => v_export.file_name,

        p_mime_type  => v_export.mime_type

    );


    -- 5. Push the mail queue immediately (optional)

    apex_mail.push_queue;


EXCEPTION

    WHEN OTHERS THEN

        apex_exec.close (v_context);

        RAISE;

END xxsea_send_downtime_extract_email;

/


Important - set the APEX session context inside the job

APEX_DATA_EXPORT and APEX_MAIL need an APEX session/workspace context to resolve correctly. A DBMS_SCHEDULER job runs as a raw DB session with no APEX context by default, so you need to establish one inside the job action. Wrap the call like this:


CREATE OR REPLACE PROCEDURE xxsea_run_downtime_extract_job IS

    l_security_group_id NUMBER;

BEGIN

    -- point at the correct workspace before calling APEX APIs

    l_security_group_id := apex_util.find_security_group_id(p_workspace => 'SEAMAN');

    apex_util.set_security_group_id(p_security_group_id => l_security_group_id);


    xxsea_send_downtime_extract_email;

END xxsea_run_downtime_extract_job;

/


Create the scheduler job

BEGIN

    DBMS_SCHEDULER.CREATE_JOB (

        job_name        => 'JOB_DOWNTIME_EXTRACT_EMAIL',

        job_type        => 'PLSQL_BLOCK',

        job_action      => 'BEGIN xxsea_run_downtime_extract_job; END;',

        start_date      => SYSTIMESTAMP,

        repeat_interval => 'FREQ=DAILY; BYHOUR=7; BYMINUTE=0',  -- daily at 7:00 AM

        enabled         => TRUE,

        comments        => 'Sends daily downtime incident extract via email'

    );

END;

/


Verify the job is registered and check its run history

-- Confirm it's scheduled

SELECT job_name, enabled, state, next_run_date

FROM user_scheduler_jobs

WHERE job_name = 'JOB_DOWNTIME_EXTRACT_EMAIL';


-- Check whether it actually ran and if it errored

SELECT log_date, status, additional_info

FROM user_scheduler_job_run_details

WHERE job_name = 'JOB_DOWNTIME_EXTRACT_EMAIL'

ORDER BY log_date DESC;


Test it manually before waiting for the schedule

BEGIN

    DBMS_SCHEDULER.RUN_JOB('JOB_DOWNTIME_EXTRACT_EMAIL');

END;

/


To disable/drop it later

BEGIN

    DBMS_SCHEDULER.DISABLE('JOB_DOWNTIME_EXTRACT_EMAIL');

    -- or to remove entirely:

    -- DBMS_SCHEDULER.DROP_JOB('JOB_DOWNTIME_EXTRACT_EMAIL');

END;

/

Monday, 13 July 2026

Oracle APEX - Add a user to a group (without removing existing groups)

0 comments
CREATE OR REPLACE PROCEDURE add_user_to_apex_group (
    p_workspace_name IN VARCHAR2,   -- e.g. 'MY_WORKSPACE'
    p_user_name           IN VARCHAR2,   -- e.g. 'AALAM'
    p_group_name        IN VARCHAR2    -- e.g. 'MANAGERS'
) IS
    l_security_group_id   NUMBER;
    l_existing_groups      VARCHAR2(32767);
    l_group_table             apex_t_varchar2 := apex_t_varchar2();
BEGIN
    -- 1. Point APEX at the correct workspace (needed outside an APEX session)
    l_security_group_id := apex_util.find_security_group_id(p_workspace => p_workspace_name);
    apex_util.set_security_group_id(p_security_group_id => l_security_group_id);

    -- 2. Create the group if it doesn't already exist
    BEGIN
        IF apex_util.get_group_id(p_group_name => p_group_name) IS NULL THEN
            apex_util.create_user_group(p_group_name => p_group_name);
        END IF;
    EXCEPTION
        WHEN OTHERS THEN
            IF apex_util.get_group_id(p_group_name => p_group_name) IS NULL THEN
                apex_util.create_user_group(p_group_name => p_group_name);
            END IF;
    END;

    -- 3. Get the groups this user already belongs to (comma-space separated string)
    l_existing_groups := apex_util.get_groups_user_belongs_to(p_username => p_user_name);

    -- 4. Build the combined group list (existing + new), avoiding duplicates
    IF l_existing_groups IS NOT NULL THEN
        FOR i IN 1 .. REGEXP_COUNT(l_existing_groups, ',') + 1 LOOP
            l_group_table.EXTEND;
            l_group_table(l_group_table.COUNT) := TRIM(REGEXP_SUBSTR(l_existing_groups, '[^,]+', 1, i));
        END LOOP;
    END IF;

    -- only add the new group if it isn't already in the list
    IF NOT p_group_name MEMBER OF l_group_table THEN
        l_group_table.EXTEND;
        l_group_table(l_group_table.COUNT) := p_group_name;
    END IF;

    -- 5. Apply the full group list back to the user
    apex_util.set_group_user_grants (
        p_user_name           => p_user_name,
        p_granted_group_names => l_group_table
    );

    COMMIT;
END add_user_to_apex_group;
/

DECLARE
CURSOR C1 IS
select user_name from APEX_WORKSPACE_APEX_USERS;
BEGIN
FOR i IN C1
LOOP
    add_user_to_apex_group (
        p_workspace_name => 'SEAMAN',
        p_user_name      => i.user_name,
        p_group_name     => 'PLM'
    );
END LOOP;
END;
/

Monday, 18 May 2026

Wip Completion (intellinum/Telnet) Query to Fetch Work Order, Lot and LPN Numbers Details

0 comments

 SELECT

    we.wip_entity_name,

    wlc.organization_id,

    wlc.wip_entity_id,

    wlc.inventory_item_id,

    msik.concatenated_segments item,

    mmt.transaction_id,

    mmt.transaction_quantity,

    mmt.transaction_date,

    lpn.attribute4 lot_number,

    lpn.license_plate_number

FROM

    wip_lpn_completions       wlc,

    wip_entities              we,

    mtl_material_transactions mmt,

    mtl_transaction_lot_numbers lot,

    wms_license_plate_numbers lpn,

    mtl_system_items_kfv      msik

WHERE

        we.wip_entity_id = wlc.wip_entity_id

    AND we.organization_id = wlc.organization_id

    AND mmt.completion_transaction_id = wlc.completion_transaction_id

    AND lot.transaction_id = mmt.transaction_id

    AND lpn.lpn_id = wlc.lpn_id

    AND msik.inventory_item_id = wlc.inventory_item_id

    AND msik.organization_id = wlc.organization_id

--    AND we.wip_entity_name = '129465'--'129502'

    AND we.organization_id IN (91, 93)

    AND msik.item_type = 'FG'

ORDER BY

    mmt.transaction_date DESC;

Tuesday, 21 October 2025

Fixed Assets few useful Queries in Oracle APPS

5 comments

SELECT *

   FROM fa_additions_b

  WHERE asset_number = p_asset_number;


SELECT *

   FROM fa_additions_tl

  WHERE asset_id = p_asset_id

    AND LANGUAGE = USERENV('LANG');


  SELECT *

    FROM fa_transaction_headers

   WHERE asset_id = p_asset_id

     AND book_type_code = p_book_type_code

ORDER BY book_type_code, date_effective;


SELECT *

  FROM fa_asset_history

 WHERE asset_id = p_asset_id;


 SELECT *

   FROM fa_adjustments

  WHERE asset_id = p_asset_id;


  SELECT *

    FROM fa_books

  WHERE asset_id = p_asset_id;


  SELECT *

    FROM fa_deprn_summary

   WHERE asset_id = p_asset_id

     AND book_type_code = p_book_type_code

  ORDER BY deprn_run_date;


SELECT *

    FROM fa_deprn_summary_h

   WHERE asset_id = p_asset_id;


SELECT *

    FROM fa_deprn_detail

   WHERE asset_id = p_asset_id

  ORDER BY book_type_code, deprn_run_date;


SELECT *

    FROM fa_deprn_detail_h

  WHERE asset_id = p_asset_id;



  SELECT *

    FROM fa_deprn_events

   WHERE asset_id = p_asset_id

ORDER BY book_type_code, deprn_run_date;


SELECT *

  FROM fa_asset_invoices

 WHERE asset_id = p_asset_id;


SELECT *

  FROM fa_invoice_transactions

 WHERE invoice_transaction_id IN (SELECT DISTINCT invoice_transaction_id_in

                                    FROM fa_asset_invoices

                                   WHERE asset_id = p_asset_id);


  SELECT *

    FROM fa_books_summary

   WHERE asset_id = p_asset_id

ORDER BY book_type_code, period_counter;


  SELECT *

    FROM fa_deprn_periods

   WHERE book_type_code = (SELECT DISTINCT book_type_code

                             FROM fa_deprn_detail_h

                            WHERE asset_id = p_asset_id)

ORDER BY period_counter;


SELECT *

  FROM fa_mass_additions

 WHERE asset_number = p_asset_number;


SELECT *

  FROM fa_massadd_distributions

 WHERE mass_addition_id IN (SELECT DISTINCT mass_addition_id

                              FROM FA_MASS_ADDITIONS

                             WHERE asset_number = p_asset_number);


SELECT *

  FROM fa_book_controls

 WHERE book_type_code = (SELECT DISTINCT book_type_code

                           FROM fa_deprn_detail_h

                          WHERE asset_id = p_asset_id);


SELECT *

  FROM fa_book_controls_history

 WHERE book_type_code = (SELECT DISTINCT book_type_code

                           FROM fa_deprn_detail_h

                          WHERE asset_id = p_asset_id

                          );


SELECT *

  FROM fa_categories_b

 WHERE category_id IN (SELECT DISTINCT asset_category_id

                         FROM fa_additions_b

                        WHERE asset_number = p_asset_number);


SELECT *

  FROM fa_categories_tl

 WHERE category_id IN (SELECT DISTINCT asset_category_id

                         FROM fa_additions_b

                        WHERE asset_number = p_asset_number

                        );


SELECT *

  FROM fa_category_books

 WHERE category_id IN (SELECT DISTINCT asset_category_id

                         FROM fa_additions_b

                        WHERE asset_number = p_asset_number

                            )

   AND book_type_code = (SELECT DISTINCT book_type_code

                           FROM fa_deprn_detail_h

                          WHERE asset_id = p_asset_id

                          );


SELECT *

  FROM fa_category_book_defaults

 WHERE category_id IN (SELECT DISTINCT asset_category_id

                         FROM fa_additions_b

                        WHERE asset_number = p_asset_number

                      )

   AND book_type_code = (SELECT DISTINCT book_type_code

                           FROM fa_deprn_detail_h

                          WHERE asset_id = p_asset_id

                        );


SELECT *

  FROM fa_calendar_periods

 WHERE calendar_type =

          (SELECT deprn_calendar

             FROM fa_book_controls

            WHERE book_type_code = (SELECT DISTINCT book_type_code

                                      FROM fa_deprn_detail_h

                                     WHERE asset_id = p_asset_id

                                     )

          );


SELECT *

  FROM fa_conventions

 WHERE prorate_convention_code =

          (SELECT DISTINCT prorate_convention_code

             FROM fa_category_books

            WHERE category_id IN (SELECT DISTINCT asset_category_id

                                    FROM fa_additions_b

                                   WHERE asset_number = p_asset_number

                                     )

              AND book_type_code = (SELECT DISTINCT book_type_code

                                      FROM fa_deprn_detail_h

                                     WHERE asset_id = p_asset_id

                                    )

          );


SELECT *

  FROM fa_methods

 WHERE     method_code =

              (SELECT DISTINCT deprn_method

                 FROM fa_category_book_defaults

                WHERE     category_id IN (SELECT DISTINCT asset_category_id

                                            FROM fa_additions_b

                                           WHERE asset_number =p_asset_number

                                         )

                  AND book_type_code = (SELECT DISTINCT book_type_code

                                              FROM fa_deprn_detail_h

                                             WHERE asset_id = p_asset_id

                                             )

              )

       AND life_in_months =

              (SELECT DISTINCT life_in_months

                 FROM fa_category_book_defaults

                WHERE     category_id IN (SELECT DISTINCT asset_category_id

                                            FROM fa_additions_b

                                           WHERE asset_number =

                                                    p_asset_number)

                      AND book_type_code = (SELECT DISTINCT book_type_code

                                              FROM fa_deprn_detail_h

                                             WHERE asset_id = p_asset_id

                                             )

            );



SELECT *

    FROM xla_events

   WHERE event_id IN (SELECT DISTINCT event_id

                        FROM fa_transaction_headers

                       WHERE asset_id = p_asset_id

                         AND book_type_code = p_book_type_code

                      UNION ALL

                      SELECT DISTINCT event_id

                        FROM fa_deprn_summary

                       WHERE asset_id = p_asset_id

                         AND book_type_code = p_book_type_code

                      UNION ALL

                      SELECT DISTINCT event_id

                        FROM fa_deprn_summary_h

                       WHERE asset_id = p_asset_id

                         AND book_type_code = p_book_type_code)

ORDER BY event_date;


SELECT *

    FROM ( (SELECT *

              FROM xla_transaction_entities

             WHERE source_id_int_1 IN (SELECT DISTINCT

                                                  transaction_header_id

                                         FROM fa_transaction_headers

                                        WHERE asset_id = p_asset_id

                                          AND book_type_code = p_book_type_code

                                          AND event_id IS NOT NULL

                                       )

               AND source_id_char_1 = p_book_type_code

             )

          UNION ALL

          (SELECT *

             FROM xla_transaction_entities

            WHERE     source_id_int_3 IN (SELECT DISTINCT deprn_run_id

                                            FROM fa_deprn_summary

                                           WHERE asset_id = p_asset_id

                                             AND book_type_code = p_book_type_code

                                             AND event_id IS NOT NULL

                                             )

                  AND source_id_char_1 = p_book_type_code

                  AND source_id_int_1 = p_asset_id

           )

          UNION ALL

          (SELECT *

             FROM xla_transaction_entities

            WHERE source_id_int_3 IN (SELECT DISTINCT deprn_run_id

                                            FROM fa_deprn_summary_h

                                           WHERE asset_id = p_asset_id

                                             AND book_type_code = p_book_type_code

                                             )

             AND source_id_char_1 = p_book_type_code

             AND source_id_int_1 = p_asset_id

                  )

       )

ORDER BY creation_date;



SELECT *

    FROM xla_ae_headers

   WHERE event_id IN (SELECT DISTINCT event_id

                        FROM fa_transaction_headers

                       WHERE asset_id = p_asset_id

                         AND book_type_code = p_book_type_code

                      UNION ALL

                      SELECT DISTINCT event_id

                        FROM fa_deprn_summary

                       WHERE asset_id = p_asset_id

                         AND book_type_code = p_book_type_code

                      UNION ALL

                      SELECT DISTINCT event_id

                        FROM fa_deprn_summary_h

                       WHERE asset_id = p_asset_id

                         AND book_type_code = p_book_type_code

                       )

ORDER BY accounting_date;

Sunday, 8 June 2025

Exchange Rate Handling in Oracle Cloud

0 comments

 Please find below a summary regarding exchange rate handling in Oracle Cloud:

  • The exchange rate values in both RA_CUSTOMER_TRX_ALL and GL_DAILY_RATES are identical.

  • However, the Fusion UI typically displays the exchange rate rounded to 6 decimal places. To ensure consistency, it is recommended to use ROUND(exchange_rate, 6) in custom reports or queries.

  • The AutoInvoice interface (RA_INTERFACE_LINES_ALL) does not apply rounding by default, which can result in high-precision values being inserted—particularly when CONVERSION_TYPE is set to 'User' or a custom type.

Recommendations to Avoid High-Precision Exchange Rates:

  • Round the exchange rate in FBDI templates, APIs, or integration sources before loading data.

  • Ensure values in GL_DAILY_RATES are stored with a consistent precision (ideally up to 6 decimal places).

  • Use ROUND(exchange_rate, 6) in all custom queries and reports to match how values are displayed in the Fusion UI.

Tuesday, 4 March 2025

Oracle EBS + Query to Find List of XML Publisher Reports

9 comments

 SELECT fe.executable_name,'Data Template (XML) Reports' object_type,fe.EXECUTION_FILE_NAME,

fcp.CONCURRENT_PROGRAM_NAME concurrent_program_short_name,fcpt.USER_CONCURRENT_PROGRAM_NAME,fcp.enabled_flag,DECODE (NVL(fcp.ENABLED_FLAG,'N'),'Y','Active','Inactive') active_status,

(select max(fcr.actual_start_date) from fnd_concurrent_requests fcr where fcr.concurrent_program_id = fcp.concurrent_program_id) last_execuation_date

FROM FND_EXECUTABLES FE,

FND_CONCURRENT_PROGRAMS FCP,

FND_CONCURRENT_PROGRAMS_TL FCPT

WHERE fe.execution_method_code = 'K'

AND fe.executable_name = 'XDODTEXE'

AND FE.executable_id = FCP.executable_id

AND FCP.concurrent_program_id = FCPT.concurrent_program_id

AND FCPT.language = 'US'

AND (fcpt.USER_CONCURRENT_PROGRAM_NAME LIKE 'XX%' OR fcpt.USER_CONCURRENT_PROGRAM_NAME LIKE 'LIN%' OR fcp.CONCURRENT_PROGRAM_NAME LIKE 'XX%' OR fcp.CONCURRENT_PROGRAM_NAME LIKE 'LIN%')

UNION

SELECT fe.executable_name,'PLSQL (XML) Reports' object_type,fe.EXECUTION_FILE_NAME,

fcp.CONCURRENT_PROGRAM_NAME concurrent_program_short_name,fcpt.USER_CONCURRENT_PROGRAM_NAME,fcp.enabled_flag,DECODE (NVL(fcp.ENABLED_FLAG,'N'),'Y','Active','Inactive') active_status,

(select max(fcr.actual_start_date) from fnd_concurrent_requests fcr where fcr.concurrent_program_id = fcp.concurrent_program_id) last_execuation_date

FROM FND_EXECUTABLES FE,

FND_CONCURRENT_PROGRAMS FCP,

FND_CONCURRENT_PROGRAMS_TL FCPT

WHERE fe.execution_method_code = 'I'

AND fcp.OUTPUT_FILE_TYPE = 'XML'

AND FE.executable_id = FCP.executable_id

AND FCP.concurrent_program_id = FCPT.concurrent_program_id

AND FCPT.language = 'US'

AND (fcpt.USER_CONCURRENT_PROGRAM_NAME LIKE 'XX%' OR fcpt.USER_CONCURRENT_PROGRAM_NAME LIKE 'LIN%' OR fcp.CONCURRENT_PROGRAM_NAME LIKE 'XX%' OR fcp.CONCURRENT_PROGRAM_NAME LIKE 'LIN%')

UNION

SELECT fe.executable_name,'RDF (XML) Reports' object_type,fe.EXECUTION_FILE_NAME,

fcp.CONCURRENT_PROGRAM_NAME concurrent_program_short_name,fcpt.USER_CONCURRENT_PROGRAM_NAME,fcp.enabled_flag,DECODE (NVL(fcp.ENABLED_FLAG,'N'),'Y','Active','Inactive') active_status,

(select max(fcr.actual_start_date) from fnd_concurrent_requests fcr where fcr.concurrent_program_id = fcp.concurrent_program_id) last_execuation_date

FROM FND_EXECUTABLES FE,

FND_CONCURRENT_PROGRAMS FCP,

FND_CONCURRENT_PROGRAMS_TL FCPT

WHERE fe.execution_method_code = 'P'

AND fcp.OUTPUT_FILE_TYPE = 'XML'

AND FE.executable_id = FCP.executable_id

AND FCP.concurrent_program_id = FCPT.concurrent_program_id

AND FCPT.language = 'US'

AND (fcpt.USER_CONCURRENT_PROGRAM_NAME LIKE 'XX%' OR fcpt.USER_CONCURRENT_PROGRAM_NAME LIKE 'LIN%' OR fcp.CONCURRENT_PROGRAM_NAME LIKE 'XX%' OR fcp.CONCURRENT_PROGRAM_NAME LIKE 'LIN%');

Regards,

Amar Alam

Oracle Fusion + Sales Order Audit Report Query + Sales Order Fulfillment Lines EFF Query

0 comments

 SELECT * FROM 

(SELECT --dla.line_id,

       --dha.header_id,
   dha.order_number "Order Number",
       hp.party_name "customer",
       hp.country "country",
   (NVL(dla.ordered_qty,0) * NVL(dla.unit_selling_price,0)) amount,
  (SELECT attribute_char3
   FROM doo_headers_eff_b dheb
   WHERE dheb.header_id = dha.header_id
     AND CONTEXT_CODE='Subscription')  region,
       Revenue_Management.attribute_char8 "workday contract name",
       Subscription.attribute_char1 "billing_offset",
       ACCOUNTS_RECEIVABLES.attribute_char1 "invoice group by number",
       ACCOUNTS_RECEIVABLES.attribute_char2 "invoice group by description",
       ACCOUNTS_RECEIVABLES.attribute_char3 "management group",
        SF_SUBSCRIPTION.ATTRIBUTE_CHAR10 "align billing from",
            SF_SUBSCRIPTION.attribute_char11 "custom billing",
                 Conversion.ATTRIBUTE_CHAR4 "Misc info",
                 Conversion.attribute_char2 "PS billed amount",
                 Conversion.attribute_char3 "PS unbilled amount",
                 Conversion.attribute_char5 "supplier purchase order",
                 TO_CHAR(SNOW.attribute_timestamp1,'MM/DD/YY HH:MI') "cloud provision date",
                 TO_CHAR(SNOW.attribute_timestamp2,'MM/DD/YY HH:MI') "on-perm provision date",
                 IB.attribute_char2 "asset line identifer",
                 IB.attribute_char3 "life cycle pid ",
                 SFDC.attribute_char1 "PO requied",
 SFDC.attribute_char2 "PO Number",
 SFDC.attribute_char3 "PO Line Number",
                 SFDC.attribute_char4 "invoice trigger event",
                 SFDC.attribute_char5 "site id",
                 SFDC.attribute_char6 "bundle id",
                 SFDC.attribute_char7 "advanced billing flag",
                 SFDC.attribute_char10 "used inventory flag",
                 SFDC.attribute_char11 "GSS validation flag",
                 SFDC.attribute_char16 "suppress fulfillment",
                 Procurement.attribute_char1 "cabinet position",
                 Procurement.attribute_char2 "PO vendor cost/transfer price",
                 Procurement.attribute_char3 "related manual order",
                 Tax.attribute_char2 "0% tax  rate flag",
                 BRAZIL.attribute_char1 "CFOP-line order",
                 CSP.attribute_char1 "CSP flag",
                 CSP.attribute_char3 "private order flag",
     esib.item_number,
 esib.description item_description,
 bill_to_party.party_name bill_to_customer,
 ship_to_party.party_name ship_to_customer,
 SF_SUBSCRIPTION.ATTRIBUTE_CHAR5 sf_subscription_number,
 SF_SUBSCRIPTION.ATTRIBUTE_CHAR2  "SF Line Identifier (Model)",
 revenue_management.attribute_char6 "Rev Contract Grouping" ,
 (SELECT header_curr_duration_ext_amt
 FROM doo_order_pricing_details_v dopdv
 WHERE dopdv.fulfill_line_id = dfla.fulfill_line_id
                 AND dopdv.PRICE_ELEMENT_CODE='QP_NET_PRICE'
                 AND dopdv.ROLLUP_FLAG ='Y' ) Total_Amount_for_Duration
FROM doo_headers_all dha,
     doo_lines_all dla,
     doo_fulfill_lines_all dfla,
     doo_fulfill_lines_eff_b ACCOUNTS_RECEIVABLES,
     doo_fulfill_lines_eff_b Revenue_Management,
     doo_fulfill_lines_eff_b Subscription,
     doo_fulfill_lines_eff_b CONVERSION,
     doo_fulfill_lines_eff_b SFDC,
 doo_fulfill_lines_eff_b SNOW,
     doo_fulfill_lines_eff_b IB,
     doo_fulfill_lines_eff_b Procurement,
     doo_fulfill_lines_eff_b Tax,
     doo_fulfill_lines_eff_b BRAZIL,
     doo_fulfill_lines_eff_b CSP,
 doo_fulfill_lines_eff_b SF_SUBSCRIPTION,
     hz_parties hp,
 egp_system_items esib,
     doo_order_addresses bill_to,
 doo_order_addresses ship_to,
 hz_cust_accounts bill_to_cust,
 hz_parties bill_to_party,
 hz_parties ship_to_party
WHERE 1=1
  ---AND dha.order_number='00026264'
  AND dha.header_id=dla.header_id
  AND dla.line_id= dfla.line_id
  AND dfla.fulfill_line_id = accounts_receivables.fulfill_line_id (+)
  AND accounts_receivables.context_code (+)='ACCOUNTS RECEIVABLES'
  AND dfla.fulfill_line_id = Revenue_Management.fulfill_line_id (+)
  AND Revenue_Management.context_code (+)='Revenue_Management_Information_Line'
  AND dfla.fulfill_line_id = Subscription.fulfill_line_id (+)
  AND Subscription.context_code (+)='Subscription'
  AND dfla.fulfill_line_id = Conversion.fulfill_line_id (+)
  AND Conversion.context_code (+)='Conversion'
  AND dfla.fulfill_line_id = SFDC.fulfill_line_id (+)
  AND SFDC.context_code (+)='SFDC'
  AND dfla.fulfill_line_id = SNOW.fulfill_line_id (+)
  AND SNOW.context_code (+)='SNOW'
  AND dfla.fulfill_line_id = IB.fulfill_line_id (+)
  AND IB.context_code (+)='IB - Asset Line Identifier Model'
  AND dfla.fulfill_line_id = Procurement.fulfill_line_id (+)
  AND Procurement.context_code (+)='Procurement'
  AND dfla.fulfill_line_id = Tax.fulfill_line_id (+)
  AND Tax.context_code (+)='Tax'
  AND dfla.fulfill_line_id = BRAZIL.fulfill_line_id (+)
  AND BRAZIL.context_code (+)='BRAZIL-Localization'
  AND dfla.fulfill_line_id = CSP.fulfill_line_id (+)
  AND CSP.context_code (+)='CSP Details'
  AND dfla.fulfill_line_id = SF_SUBSCRIPTION.fulfill_line_id (+)
  AND SF_SUBSCRIPTION.context_code (+)='SF Subscription - SF Line Identifier Model'
  AND dha.sold_to_party_id = hp.party_id 
  AND dla.inventory_organization_id =esib.organization_id
  and dla.inventory_item_id = esib.inventory_item_id
  AND dha.header_id = bill_to.header_id (+)
  AND bill_to.address_use_type (+)= 'BILL_TO'
  AND bill_to.cust_acct_id = bill_to_cust.cust_account_id (+)
  AND bill_to_cust.party_id = bill_to_party.party_id
  AND dha.header_id = ship_to.header_id (+)
  AND ship_to.address_use_type (+) = 'SHIP_TO'
  AND ship_to.party_id = ship_to_party.party_id (+)
 ) 
  WHERE region = NVL(:p_region,region);

Regards,
Amar Alam