How-toOracle E-Business SuitePayables / Trading Community (suppliers)

Oracle EBS Query for a Vendor Extract Report

Question
oracle ebs query for vendor extract report

Also searched as

  • oracle ebs supplier sql query ap_suppliers
  • oracle r12 vendor sites contacts bank account query
  • ap_supplier_sites_all query
  • oracle ebs supplier extract

Short answer

In EBS R12 the supplier header is AP_SUPPLIERS, supplier sites are AP_SUPPLIER_SITES_ALL (org-specific, so filter by ORG_ID), contacts link through AP_SUPPLIER_CONTACTS and HZ_PARTIES, and bank accounts live in the Payments tables (IBY_EXTERNAL_PAYEES_ALL, IBY_PMT_INSTR_USES_ALL, IBY_EXT_BANK_ACCOUNTS). Join them with VENDOR_ID and the party and payee keys.

Applies to: Oracle E-Business Suite R12.1 and 12.2 with Payables and Trading Community Architecture. Verify columns in your release before production use.

How to build the supplier extract

  1. 1Start from AP_SUPPLIERS (alias aps) and select VENDOR_ID, SEGMENT1 (supplier number), VENDOR_NAME, VENDOR_TYPE_LOOKUP_CODE, ENABLED_FLAG and END_DATE_ACTIVE.
  2. 2Join AP_SUPPLIER_SITES_ALL on VENDOR_ID for site code, address, pay group, inactive date and ORG_ID. Filter by ORG_ID for the operating unit you want.
  3. 3Add contacts by joining AP_SUPPLIER_CONTACTS to the site and to HZ_PARTIES on PER_PARTY_ID for the contact name.
  4. 4For bank accounts, join IBY_EXTERNAL_PAYEES_ALL on supplier site, then IBY_PMT_INSTR_USES_ALL on the payee, then IBY_EXT_BANK_ACCOUNTS for the account.
  5. 5Use outer joins for contacts and banks so suppliers without them still appear.
  6. 6Exclude or mask bank account numbers unless the report is approved for them.
  7. 7Run it from SQL Developer on a reporting copy, or wrap it in a concurrent program with a BI Publisher template.
  8. 8Check row counts against the Suppliers summary screen to confirm the joins did not multiply rows.

Core supplier and site query

Suppliers are global across operating units, but sites are specific to an operating unit, which is why the site table is the _ALL table with ORG_ID. Reading it through the multi-org view AP_SUPPLIER_SITES (which depends on the session policy context) gives different results from a raw SQL session, so for extracts use the _ALL table and filter ORG_ID explicitly.

Be aware that a supplier with five sites returns five rows. If the report should be one row per supplier, aggregate or reduce to the primary pay site.

SELECT aps.segment1 supplier_num, aps.vendor_name,
       aps.vendor_type_lookup_code, aps.enabled_flag, aps.end_date_active,
       apss.vendor_site_code, apss.org_id, apss.address_line1,
       apss.city, apss.country, apss.pay_group_lookup_code,
       apss.inactive_date
FROM   ap_suppliers aps
LEFT   JOIN ap_supplier_sites_all apss
       ON apss.vendor_id = aps.vendor_id
WHERE  apss.org_id = :org_id
ORDER  BY aps.vendor_name, apss.vendor_site_code

Contacts and bank accounts

In R12 the contact record is a party relationship in the Trading Community Architecture, with AP_SUPPLIER_CONTACTS holding the supplier-specific link. Join it to HZ_PARTIES on PER_PARTY_ID for the person name, and use the contact point tables (HZ_CONTACT_POINTS) for email and phone.

Bank accounts moved to the Payments module. Payee records in IBY_EXTERNAL_PAYEES_ALL point to a supplier site, instrument assignments are in IBY_PMT_INSTR_USES_ALL, and the account details are in IBY_EXT_BANK_ACCOUNTS. Account numbers may be encrypted or masked depending on your security setup.

SELECT aps.vendor_name, apss.vendor_site_code,
       eba.bank_account_name, eba.currency_code
FROM   ap_suppliers aps
JOIN   ap_supplier_sites_all apss ON apss.vendor_id = aps.vendor_id
JOIN   iby_external_payees_all ep
       ON ep.supplier_site_id = apss.vendor_site_id
JOIN   iby_pmt_instr_uses_all iu
       ON iu.ext_pmt_party_id = ep.ext_payee_id
      AND iu.instrument_type = 'BANKACCOUNT'
JOIN   iby_ext_bank_accounts eba
       ON eba.ext_bank_account_id = iu.instrument_id
WHERE  apss.org_id = :org_id

Security and data handling

Supplier bank details are among the most sensitive data in the ERP and a common fraud target. Limit the extract to what the recipient needs, mask account numbers, log who runs it, and avoid emailing the file. If the extract feeds a migration or an AI tool, strip or tokenise banking fields first.

For repeated use, a BI Publisher report on a data model gives access control and scheduling, in line with the BI Publisher report page on this site.

Try it here, free

Oracle EBS Customer and Supplier Tables Reference

Open full tool

Searchable list of the Trading Community Architecture customer tables and the supplier tables in Oracle EBS, with keys, join columns and where to confirm in the eTRM.

Common pitfalls

  • !Using the wrong site view and getting different results in SQL Developer than in the application.
  • !Forgetting the ORG_ID filter and mixing operating units.
  • !Inner joining contacts and bank accounts and dropping suppliers that have none.
  • !Exporting full bank account numbers into spreadsheets with no controls.
  • !Relying on pre-R12 column names such as the old PO_VENDORS tables for new work.

How an ERP-grounded AI assistant handles this

An assistant grounded in your EBS schema (ERPray with read-only access, showing the SQL it generated) can build and explain this kind of join when a buyer asks for inactive suppliers with open POs or sites missing a pay group. For EBS running on-premises, the model can be hosted on local hardware, which matters when the question touches supplier banking data. Treat generated SQL as something a DBA reviews, and keep banking columns excluded by default.

Frequently asked questions

What table stores suppliers in Oracle EBS R12?

AP_SUPPLIERS holds the supplier header (it replaced PO_VENDORS in R12). Sites are in AP_SUPPLIER_SITES_ALL, and contacts reference HZ_PARTIES. The supplier is also registered as a party in the Trading Community.

How do I get supplier bank accounts in R12?

Join the supplier site to IBY_EXTERNAL_PAYEES_ALL, then to IBY_PMT_INSTR_USES_ALL and IBY_EXT_BANK_ACCOUNTS. Banks and branches are held as parties. Mask the account number in any extract that is not strictly approved.

Why does my supplier query return duplicate suppliers?

Because each supplier has multiple sites, contacts or bank accounts, and joining them multiplies rows. Aggregate, filter to primary sites, or produce separate extracts for each level.

Can I use this query in Fusion Cloud?

No. Fusion Cloud does not give direct table access, and its supplier tables differ. Use the Suppliers REST resource or a BI Publisher report with Oracle's supplier data model.

Related

How-to

How to Create a BI Publisher Report in Oracle EBS

An EBS BI Publisher report has three parts: a data model that produces XML data (usually a SQL-based data template), a Data Definition registered in the XML Publisher Administrator responsibility, and an RTF or Excel template built with the BI Publisher desktop tools and uploaded against that definition. A concurrent program then ties them together and runs the same way any standard EBS report does.

How-to

SQL to Find Responsibilities Assigned to a User in Oracle EBS

Join FND_USER to FND_USER_RESP_GROUPS on USER_ID, then to FND_RESPONSIBILITY_TL on RESPONSIBILITY_ID and APPLICATION_ID to get the responsibility name, filtering the END_DATE columns to show only currently active assignments. This is the standard query DBAs and support teams use instead of clicking through System Administrator > Security > User > Define for every user.

How-to

How to Import AP Invoices in Oracle EBS with Payables Open Interface Import

Load invoice header and line data into AP_INVOICES_INTERFACE and AP_INVOICE_LINES_INTERFACE, then run the Payables Open Interface Import concurrent program to create standard invoices in Oracle Payables. Rows that fail validation land in AP_INTERFACE_REJECTIONS with a specific reject reason you can query directly, without opening the Invoice Workbench.

How-to

Oracle EBS REST API: Integrated SOA Gateway and PL/SQL APIs

Oracle E-Business Suite exposes APIs through the Integration Repository, which catalogs PL/SQL public APIs, open interfaces, business events and web services. Integrated SOA Gateway (ISG) can deploy selected interface definitions as REST or SOAP services. You find the API, deploy it, grant a user access, and call it over HTTPS with the right application context.

Error fix

Fix FRM-40735: WHEN-VALIDATE-RECORD Trigger Raised Unhandled Exception ORA-06508

FRM-40735 with ORA-06508 almost always means a PL/SQL package used by the form was recompiled while your session still held the old cached state, or the trigger's own exception handling does not trap a real data error. Exit the form completely and re-enter it; if the error repeats for all users, recompile invalid objects on the database and check for a bad custom trigger.

Error fix

Oracle EBS Concurrent Manager Will Not Start: How to Fix It

A concurrent manager that will not start in Oracle EBS is almost always one of three things: the node registered in FND_NODES no longer matches the actual hostname (common after cloning), stale OS processes are blocking a fresh start, or the database and listener the manager connects to are unreachable. Check the internal manager log, verify the node name, clear stale processes, and restart with adcmctl.sh.

AI for ERP

AI for Oracle E-Business Suite, Without Leaving On-Prem

Hosting Oracle EBS 12.2 on-prem or in a private cloud? Add a private LLM over concurrent programs, interface tables and AP/PO data without moving to Fusion.

AI for ERP

A Private LLM Grounded on Your ERP Data

How a private LLM answers questions on your ERP data: RAG plus text-to-SQL, role-based permissions inherited from the ERP, and where each fits.

Stuck on Oracle E-Business Suite?

Talk to engineers who work inside Oracle E-Business Suite every week, and who build private AI that answers these questions from your own ERP data.

Keep exploring

Free tools

ERP fixes and how-tos

Runs with your ERP

AI on your ERP

Integrations

Software