Introduction

To fetch the Purchase Order along with Requisition Preparer details, we can use the following queries.

 

/* Query 1 To Fetch Cancel PO*/

SELECT action_date cancel_po_date

FROM po_action_history pah

WHERE pah.object_id = :poh_po_header_id

AND (   (    pah.object_type_code = ‘PO’

AND pah.object_sub_type_code IN (‘PLANNED’, ‘STANDARD’)

)

OR (    pah.object_type_code = ‘PA’

AND pah.object_sub_type_code IN (‘BLANKET’, ‘CONTRACT’)

)

)

AND pah.action_code = ‘CANCEL’

AND :poh_po_type != ‘RELEASE’

AND :poh_cancel_flag = ‘Y’

AND sequence_num = (SELECT MAX (sequence_num)

FROM po_action_history pah2

WHERE pah2.object_id = :poh_po_header_id)

/* Query 2 To Fetch Cancel Release PO */

SELECT action_date cancel_release_date

FROM po_action_history pah

WHERE pah.object_id = :poh_po_release_id

AND pah.object_type_code = ‘RELEASE’

AND pah.action_code = ‘CANCEL’

/* Query 3 To Fetch Company Details */

SELECT gsb.NAME c_company, fsp.inventory_organization_id c_organization_id,

gsb.currency_code base_currency_code,

gsb.chart_of_accounts_id structure_acc, mdv.structure_id structure_cat,

mdv.category_set_id c_category_set_id, flo1.meaning c_yes,

flo2.meaning c_no, psp.manual_po_num_type manual_po_num_type

FROM gl_sets_of_books gsb,

financials_system_parameters fsp,

po_system_parameters psp,

mtl_default_sets_view mdv,

fnd_lookups flo1,

fnd_lookups flo2

WHERE gsb.set_of_books_id = fsp.set_of_books_id

AND mdv.functional_area_id = 2

AND flo1.lookup_type = ‘YES_NO’

AND flo1.lookup_code = ‘Y’

AND flo2.lookup_type = ‘YES_NO’

AND flo2.lookup_code = ‘N’

/* Query 4 To Fetch Requestor and Distribution details */

SELECT line_location_id pod_line_location_id,

po_distribution_id pod_po_distribution_id,

requestor_name pod_requestor_name,

ROUND (quantity_ordered, :p_qty_precision) pod_quantity_ordered

FROM po_distributions_print pod

/* Query 5 To Fetch File Name and its details */

SELECT fl.file_name

FROM fnd_documents_vl fdv,

fnd_attached_documents fad,

fnd_lobs fl,

po_headers poh

WHERE fdv.document_id = fad.document_id

AND fad.pk1_value = poh.po_header_id

AND fdv.datatype_name = ‘File’

AND fdv.category_description = ‘To Supplier’

AND fad.entity_name = ‘PO_HEADERS’

AND fdv.media_id = fl.file_id

AND poh.po_header_id = :poh_po_header_id

UNION

SELECT fl.file_name

FROM fnd_documents_vl fdv,

fnd_attached_documents fad,

fnd_lobs fl,

po_requisition_headers prh

WHERE fdv.document_id = fad.document_id

AND fad.pk1_value = prh.requisition_header_id

AND fdv.datatype_name = ‘File’

AND fdv.category_description = ‘To Supplier’

AND fad.entity_name = ‘REQ_HEADERS’

AND fdv.media_id = fl.file_id

AND prh.requisition_header_id = :cp_requisition_id;

/* Query 6 To Fetch Header details */

SELECT   DECODE (:p_sortby, ‘PO NUMBER’, NULL, poh.document_buyer_last_name),

DECODE (:p_sortby, ‘PO NUMBER’, NULL, poh.document_buyer_first_name),

DECODE (:po_num_type, ‘NUMERIC’, NULL, poh.po_num),

DECODE (:po_num_type,

‘NUMERIC’, DECODE (RTRIM (poh.po_num, ‘0123456789’),

NULL, TO_NUMBER (poh.po_num),

-1

),

NULL

),

poh.po_type poh_po_type, por.release_type poh_release_type,

poh.po_num

|| DECODE (poh.po_type, ‘RELEASE’, ‘-‘ || por.release_num, NULL)

poh_po_num,

poh.po_num security_poh_po_num, por.release_num security_por_po_num,

poh.revision_num poh_revision_num, poh.vendor_name poh_vendor_name,

poh.vendor_address_line1 poh_vendor_address_line1,

poh.vendor_address_line2 poh_vendor_address_line2,

poh.vendor_address_line3 poh_vendor_address_line3,

DECODE (poh.vendor_city,

NULL, poh.vendor_state || ‘ ‘ || poh.vendor_postal_code,

poh.vendor_city

|| ‘, ‘

|| poh.vendor_state

|| ‘ ‘

|| poh.vendor_postal_code

) poh_vendor_adr_info,

poh.vendor_city poh_vendor_address_line4,

poh.vendor_state poh_vendor_address_line5,

poh.vendor_postal_code poh_vendor_address_line6,

poh.vendor_country poh_vendor_country, poh.customer_num poh_customer,

poh.vendor_num poh_vendor_num, poh.creation_date poh_creation_date,

poh.revised_date poh_revised_date,

SUBSTR (   SUBSTR (poh.document_buyer_first_name, 1, 1)

|| ‘ ‘

|| poh.document_buyer_last_name,

1,

12

) poh_buyer,

SUBSTR

(TRIM (   SUBSTR (poh.archive_buyer_first_name, 1, 1)

|| ‘ ‘

|| poh.archive_buyer_last_name

),

1,

12

) poh_archive_buyer,

poh.document_buyer_agent_id poh_agent_id,

poh.payment_terms poh_payment_terms, poh.ship_via poh_ship_via,

poh.fob poh_fob, poh.freight_terms poh_freight_terms,

SUBSTR (poh.vendor_contact_first_name,

1,

1

)

|| ‘ ‘

|| SUBSTR (poh.vendor_contact_last_name, 1, 10)

poh_vendor_contact_name,

poh.vendor_phone poh_vendor_phone,

poh.vendor_contact_phone poh_vendor_contact_phone,

poh.note_to_vendor poh_note_to_vendor,

poh.printed_date poh_printed_date,

poh.amount_agreed poh_amount_agreed, poh.cancel_flag poh_cancel_flag,

poh.confirming_order_flag poh_confirming_order_flag,

poh.acceptance_required_flag poh_acceptance_req_flag,

poh.acceptance_due_date poh_acceptance_due_date,

poh.currency_code poh_currency_code, poh.currency_code c_currency,

poh.currency_name poh_currency_name,

poh.currency_conversion_rate poh_currency_conversion_rate,

poh.bill_to_location_id poh_bill_to_location,

poh.ship_to_location_id poh_ship_to_location,

poh.po_header_id poh_po_header_id,

poh.po_release_id poh_po_release_id, poh.po_type poh_po_type,

poh.approved_flag poh_approved_flag, poh.print_count poh_print_count,

poh.effective_date poh_effective_date,

poh.expiration_date poh_expiration_date,

NVL (poh.po_release_id, -1) poh_join_release_id,

poh.vendor_site_id poh_vendor_site_id, poh.vendor_id poh_vendor_id

FROM po_headers_print poh, po_releases por

WHERE poh.po_release_id = por.po_release_id(+)

AND (   NVL (por.release_num, -1) BETWEEN NVL (:p_release_num_from,

NVL (por.release_num, -1)

)

AND NVL (:p_release_num_to,

NVL (por.release_num, -1)

)

OR poh.po_type != ‘RELEASE’

)

AND poh.document_buyer_agent_id =

NVL (:p_agent_id, poh.document_buyer_agent_id)

AND (   poh.release_date IS NULL

OR TRUNC (poh.release_date) BETWEEN NVL (:p_date_from,

TRUNC (poh.release_date)

)

AND NVL (:p_date_to,

TRUNC (poh.release_date)

+ 1

)

)

AND NVL (poh.approved_flag, ‘N’) =

NVL (:p_approved_flag, NVL (poh.approved_flag, ‘N’))

AND (   (NVL (:p_print_releases, ‘Y’) = ‘Y’)

OR (NVL (:p_print_releases, ‘Y’) = ‘N’ AND poh.po_type != ‘RELEASE’

)

)

AND NVL (poh.consigned_consumption_flag, ‘N’) <> ‘Y’

AND NVL (por.consigned_consumption_flag, ‘N’) <> ‘Y’

ORDER BY poh_po_num;

/* Query 7 To Fetch Header Notes */

SELECT   datatype_id header_note_datatype_id, media_id header_note_media_id

FROM fnd_attached_docs_form_vl

WHERE (   (entity_name = ‘PO_HEADERS’ AND pk1_value = :poh_po_header_id)

OR (entity_name = ‘PO_VENDORS’ AND pk1_value = :poh_vendor_id)

)

AND function_name = ‘PO_PRINTPO’

AND datatype_id IN (1, 2)

ORDER BY seq_num;

/* Query 8 To Fetch Item Details */

SELECT DISTINCT msi.inventory_item_id msi_item_id, msi.description msi_desc,

msit.description msit_desc

FROM mtl_system_items_b msi, mtl_system_items_tl msit

WHERE msi.organization_id = :organization_id

AND msi.inventory_item_id = msit.inventory_item_id(+)

AND msi.organization_id = msit.organization_id(+)

AND USERENV (‘LANG’) = msit.LANGUAGE(+)

/* Query 9 To Fetch Item Notes */

SELECT   datatype_id item_note_datatype_id, media_id item_note_media_id

FROM fnd_attached_docs_form_vl

WHERE :pol_po_item_id IS NOT NULL

AND entity_name = ‘MTL_SYSTEM_ITEMS’

AND pk1_value = :organization_id

AND pk2_value = :pol_po_item_id

AND function_name = ‘PO_PRINTPO’

AND datatype_id IN (1, 2)

ORDER BY seq_num;

/* Query 10 To Fetch Line Details */

SELECT DISTINCT pol.line_num pol_line_num, pol.po_item_id pol_po_item_id,

pol.revision_num pol_item_revision,

pol.vendor_product_num pol_vendor_product_num,

pol.item_description pol_item_description,

ROUND (pol.quantity_to_print,

:p_qty_precision

) pol_quantity_to_print,

pol.unit_of_measure,

pol.price_to_print pol_price_to_print,

pol.amount_to_print c_amount_pol,

ROUND (pol.quantity_comitted,

:p_qty_precision

) pol_quantity_comitted,

pol.un_number_and_desc pol_un_number_and_desc,

pol.hazard_class pol_hazard_class,

pol.cancel_flag pol_cancel_flag,

pol.cancel_date pol_cancel_date,

pol.note_to_vendor pol_note_to_vendor,

pol.contract_num pol_contract_num,

pol.po_quote_num pol_po_quote_num,

pol.vendor_quote_num pol_vendor_quote_num,

pol.quotation_line pol_quotation_line,

pol.po_header_id pol_po_header_id,

pol.po_line_id pol_po_line_id, ROWNUM pol_row_num,

pol.line_type pol_line_type,

NVL (pol.po_release_id, -1) pol_join_release_id,

NVL (pol.src_ga_flag, ‘N’) pol_src_ga_flag,

pol.from_header_id pol_from_header_id,

pol.from_line_id pol_from_line_id

FROM po_lines_print pol

WHERE                                     –&cancel_where_clause AND

DECODE (:poh_po_type,

‘BLANKET’, DECODE (:p_blanket_lines, ‘Y’, -1, -2),

‘PLANNED’, DECODE (:p_blanket_lines, ‘Y’, -1, -2),

‘CONTRACT’, DECODE (:p_blanket_lines, ‘Y’, -1, -2),

-1

) = -1

ORDER BY pol.line_num;

/* Query 11 To Fetch Line Notes */

SELECT  datatype_id line_note_datatype_id, media_id line_note_media_id

FROM fnd_attached_docs_form_vl, financials_system_params_all fsp

WHERE 1 = 1

AND org_id = fnd_profile.VALUE (‘ORG_ID’)

AND (   (entity_name = ‘PO_LINES’ AND pk1_value = :pol_po_line_id)

OR (    entity_name = ‘PO_LINES’

AND pk1_value = :pol_from_line_id

AND :pol_from_line_id IS NOT NULL

AND :pol_src_ga_flag = ‘Y’

AND (   publish_flag = ‘Y’

OR (security_type = 1 AND security_id = fsp.org_id)

OR (security_type = 2 AND security_id = fsp.set_of_books_id

)

OR (security_type = 4)

)

)

OR (    entity_name = ‘PO_HEADERS’

AND pk1_value = :pol_from_header_id

AND :pol_from_header_id IS NOT NULL

AND :pol_src_ga_flag = ‘Y’

AND (   publish_flag = ‘Y’

OR (security_type = 1 AND security_id = fsp.org_id)

OR (security_type = 2 AND security_id = fsp.set_of_books_id

)

OR (security_type = 4)

)

)

)

AND function_name = ‘PO_PRINTPO’

AND datatype_id IN (1, 2)

ORDER BY seq_num;

/* Query 12 To Fetch Shipments Notes */

SELECT   plaa3.po_line_id, pll.shipment_num pll_shipment_num,

pll.due_date pll_due_date, pll.promised_date pll_promised_date,

pll.need_by_date pll_need_by_date, pllaa3.need_by_date,

pllaa2.po_header_id, pllaa2.po_line_id,

plaa.revision_num plaa_revision_num, pllaa1.max_rev_num,

pllaa2.max2_rev_num,

ROUND (pll.quantity_ordered, :p_qty_precision) pll_quantity_ordered,

pll.release_price pll_release_price,

ROUND (pll.quantity_cancelled,

:p_qty_precision

) pll_quantity_cancelled,

pll.cancel_flag pll_cancel_flag, pll.cancel_date pll_cancel_date,

pll.cancel_reason pll_cancel_reason, plaa.unit_meas_lookup_code,

pll.taxable_flag pll_taxable_flag, pll.start_date pll_start_date,

pll.end_date pll_end_date, pll.po_line_id pll_po_line_id,

pll.line_location_id pll_line_location_id,

pll.ship_to_location_id pll_ship_to_location,

NVL (pll.po_release_id, -1) pll_join_release_id,

NVL (pll.consigned_flag, ‘N’) pll_consigned_flag,

pll.amount pll_amount, pll.amount_cancelled pll_amount_cancelled,

DECODE (pha.revision_num – pllaa1.max_rev_num,

0, (  NVL (pllaa.need_by_date, SYSDATE)

– NVL (pllaa3.need_by_date, SYSDATE)

),

(  NVL (pllaa.need_by_date, SYSDATE)

– NVL (pllaa.need_by_date, SYSDATE)

)

) pll_need_date_diff,

DECODE (pha.revision_num – plaa2.max_rev_num,

0, (  ASCII (NVL (plaa.unit_meas_lookup_code, ‘U’))

– ASCII (NVL (plaa1.unit_meas_lookup_code, ‘U’))

),

(  ASCII (NVL (plaa.unit_meas_lookup_code, ‘U’))

– ASCII (NVL (plaa.unit_meas_lookup_code, ‘U’))

)

) pll_uom_diff,

DECODE (pha.revision_num – plaa2.max_rev_num,

0, (NVL (plaa.quantity, 0) – NVL (plaa1.quantity, 0)),

(NVL (plaa.quantity, 0) – NVL (plaa.quantity, 0)

)

) pll_qty_diff,

DECODE (pha.revision_num – plaa2.max_rev_num,

0, (NVL (plaa.unit_price, 0) – NVL (plaa1.unit_price, 0)),

(NVL (plaa.unit_price, 0) – NVL (plaa.unit_price, 0)

)

) pll_price_diff,

DECODE (plaa2.max_rev_num – pllaa1.max_rev_num,

0, (NVL (plaa.amount, 0) – NVL (plaa1.amount, 0)),

(NVL (plaa.amount, 0) – NVL (plaa.amount, 0)

)

) pll_amount_diff

FROM po_headers_all pha,

po_lines_archive_all plaa,

po_lines_archive_all plaa1,

(SELECT   plaa.po_header_id, plaa.po_line_id,

MAX (plaa.revision_num) max_rev_num,

MAX (plaa.revision_num) max2_rev_num, COUNT (*) count1

FROM po_headers_all pha, po_lines_archive_all plaa

WHERE pha.po_header_id = plaa.po_header_id

GROUP BY plaa.po_header_id, plaa.po_line_id) plaa2,

(SELECT   pha.po_header_id po_header_id, plaa.po_line_id po_line_id,

max_query.max_rev_num, MAX (plaa.revision_num)

max2_rev_num,

max_query.count1

FROM po_headers_all pha,

po_lines_archive_all plaa,

(SELECT   plaa.po_header_id, plaa.po_line_id,

MAX (plaa.revision_num) max_rev_num,

COUNT (*) count1

FROM po_headers_all pha, po_lines_archive_all plaa

WHERE pha.po_header_id = plaa.po_header_id

GROUP BY plaa.po_header_id, plaa.po_line_id

HAVING COUNT (*) <> 1) max_query

WHERE pha.po_header_id = plaa.po_header_id

AND plaa.po_header_id = max_query.po_header_id

AND pha.po_header_id = max_query.po_header_id

AND plaa.po_line_id = max_query.po_line_id

AND (   plaa.revision_num < max_query.max_rev_num

OR DECODE (pha.revision_num, 0, 0) =

DECODE (plaa.revision_num,

0, 0

)

OR DECODE (plaa.revision_num, 0, 0) =

DECODE (max_query.max_rev_num,

0, 0

)

OR DECODE (pha.revision_num, 0, 0) =

DECODE (plaa.revision_num,

0, 0

)

)

GROUP BY pha.po_header_id,

plaa.po_line_id,

max_query.max_rev_num,

max_query.count1

UNION

SELECT   plaa.po_header_id, plaa.po_line_id,

MAX (plaa.revision_num) max_rev_num,

MAX (plaa.revision_num) max2_rev_num, COUNT (*) count1

FROM po_headers_all pha, po_lines_archive_all plaa

WHERE pha.po_header_id = plaa.po_header_id

GROUP BY plaa.po_header_id, plaa.po_line_id

HAVING COUNT (*) = 1) plaa3,

po_line_locations_print pll,

po_line_locations_archive_all pllaa,

po_line_locations_archive_all pllaa3,

(SELECT   pllaa.po_header_id, pllaa.po_line_id,

MAX (pllaa.revision_num) max_rev_num

FROM po_headers_all pha, po_line_locations_archive_all pllaa

WHERE pha.po_header_id = pllaa.po_header_id

GROUP BY pllaa.po_header_id, pllaa.po_line_id) pllaa1,

(SELECT   pha.po_header_id po_header_id, pllaa.po_line_id po_line_id,

max_query.max_rev_num,

MAX (pllaa.revision_num) max2_rev_num, COUNT (*) count1

FROM po_headers_all pha,

po_line_locations_archive_all pllaa,

(SELECT   MAX (pllaa.revision_num) max_rev_num,

pllaa.po_header_id, pllaa.po_line_id,

COUNT (*) count1

FROM po_headers_all pha,

po_line_locations_archive_all pllaa

WHERE pha.po_header_id = pllaa.po_header_id

GROUP BY pllaa.po_header_id, pllaa.po_line_id

HAVING COUNT (*) <> 1) max_query

WHERE pha.po_header_id = pllaa.po_header_id

AND pha.po_header_id = max_query.po_header_id

AND pllaa.po_line_id = max_query.po_line_id

AND (   pllaa.revision_num < max_query.max_rev_num

OR DECODE (pllaa.revision_num, 0, 0) =

DECODE (max_query.max_rev_num,

0, 0

)

OR DECODE (pha.revision_num, 0, 0) =

DECODE (max_query.max_rev_num,

0, 0

)

)

GROUP BY pha.po_header_id, pllaa.po_line_id, max_query.max_rev_num

UNION

SELECT   pllaa.po_header_id, pllaa.po_line_id,

MAX (pllaa.revision_num) max_rev_num,

MAX (pllaa.revision_num) max2_rev_num, COUNT (*) count1

FROM po_headers_all pha, po_line_locations_archive_all pllaa

WHERE pha.po_header_id = pllaa.po_header_id

GROUP BY pllaa.po_header_id, pllaa.po_line_id

HAVING COUNT (*) = 1) pllaa2

WHERE pll.po_header_id = pha.po_header_id

AND plaa.po_header_id = pha.po_header_id

AND plaa1.po_header_id = pha.po_header_id

AND plaa2.po_header_id = pha.po_header_id

AND plaa3.po_header_id = pha.po_header_id

AND plaa2.po_header_id = plaa3.po_header_id

AND plaa.revision_num = plaa2.max_rev_num

AND pll.po_line_id = plaa2.po_line_id

AND plaa.po_line_id = plaa2.po_line_id

AND plaa1.revision_num = plaa3.max2_rev_num

AND pll.po_line_id = plaa3.po_line_id

AND plaa1.po_line_id = plaa3.po_line_id

AND pllaa.po_header_id = pllaa1.po_header_id

AND pllaa.po_line_id = pllaa1.po_line_id

AND pllaa.revision_num = pllaa1.max_rev_num

AND pllaa2.max2_rev_num = pllaa3.revision_num

AND pllaa2.po_line_id = pllaa3.po_line_id

AND pll.po_line_id = pllaa2.po_line_id

AND pll.po_line_id = pllaa1.po_line_id

AND pha.po_header_id = pllaa.po_header_id

AND pha.po_header_id = pllaa1.po_header_id

AND pha.po_header_id = pllaa2.po_header_id

AND pllaa2.po_header_id = pllaa3.po_header_id

ORDER BY plaa2.po_line_id, plaa2.max_rev_num DESC, plaa3.max2_rev_num DESC;

 

What we expect in the script.

This script helps us to comprehend how Purchase Order along with Requisition Preparer details. Couple of tables which is being used in the query are

po_headers_all pha,

po_lines_archive_all plaa,

po_lines_archive_all plaa1 etc.

 

Summary

This Post described the script Purchase Order along with Requisition Preparer details in Oracle EBS R12.

Got any queries?

Do drop a note by writing us at doyen.ebiz@gmail.com or use the comment section below to ask your questions.

 

 

Recent Posts

Start typing and press Enter to search