PL/SQLintermediate
Open Interface Tables and Import Programs
Understand the standard interface-table pattern EBS uses for high-volume data conversion and integration
Public APIs are correct and slow. For thirty thousand legacy invoices, EBS provides a different pattern: bulk-insert into a staging table, then run a standard import program.
Interface tables are like an airport customs pre-clearance area: travelers (data rows) queue up in a staging zone, get checked in batches, and anyone missing paperwork is pulled aside for correction while everyone else proceeds through — rather than the entire planeload being held up by one traveler's problem.
Key Concepts
1
AP_INVOICES_INTERFACE you populate these
AP_INVOICE_LINES_INTERFACE
| Payables Open Interface Import (a concurrent program)
| validation
v
AP_INVOICES_ALL the real invoices
AP_INVOICE_DISTRIBUTIONS_ALL2
The interface tables exist for every major module:
3
RA_INTERFACE_LINES_ALL receivables
MTL_TRANSACTIONS_INTERFACE inventory
GL_INTERFACE general ledger
PO_HEADERS_INTERFACE purchasing4
The pattern separates loading from validating, and that separation is what makes it usable at volume.
5
Rows go in fast, as a bulk insert. Validation happens afterwards, per row, and a bad row does not stop the
good ones.
6
Partial failure is the normal outcome, not an error.
30,000 rows loaded
-> 29,400 created
-> 600 rejected, still in the interface table with reasons7
Fix the 600 and resubmit. The 29,400 are not reprocessed, because the import marks what it has taken.
8
Use a GROUP_ID or batch identifier. Nearly every interface table has one, and it is what lets you
submit one batch at a time and report on it:
GROUP_ID
9
populate with GROUP_ID = 20260930_BATCH1
run the import with that GROUP_ID as a parameter
query rejections for that GROUP_ID10
Without it, a second load started while the first is being corrected mixes the two, and neither can be
reconciled.
11
The sequence.
1. Populate the interface tables, with a batch identifier
2. Run the import program for that batch
3. Read the exception report, or query the rejections table
4. Correct the source data
5. Resubmit only the failed rows12
Step 3 is the one that gets skipped. Rows sitting in an interface table are invisible to the
application. A conversion that "loaded successfully" and is short by six hundred invoices is usually a
rejection report nobody opened.
13
API or interface table. Small volumes and immediate feedback: the API. Large conversions and scheduled
feeds: the interface table. Both are supported; the interface tables are what Oracle's own programs use
internally for the same reason.
14
What the interviewer is probing.1. "What is the standard interface pattern?" Probing: the model. Stalls: "Load the table."
Moves up: insert into the interface table, run the import concurrent program, then review the
error table and correct and resubmit.
15
2. "Why are interface tables still used when APIs exist?" Probing: the judgement. Stalls:
"Legacy." Moves up: they handle high volume efficiently in a set-based way, where a row-by-row API
call is far slower.
16
3. "What must your load process handle?" Probing: the engineering. Stalls: "Inserting."
Moves up: reruns — a batch identifier and cleanup of prior rows, or a failed run leaves partially
processed data behind.
17
4. "How do you reconcile what was loaded?" Probing: the control. Stalls: "Count rows."
Moves up: compare source counts and totals against imported records plus rejected ones, so nothing
is silently dropped.