Search Results paap_pwp_pkg_w




Overview

PAAP_PWP_PKG_W is a public wrapper package in the Oracle E-Business Suite APPS schema that exposes hold management functionality for Oracle Projects (PA) invoice and payment processing. Its name associates it with the PAAP (Oracle Projects Applications) family, the PWP (Pay When Paid / payment processing) layer, and the "_W" convention denoting an outward-facing wrapper that shields callers from the underlying implementation package. The package is defined with AUTHID CURRENT_USER, so it executes with the privileges of the invoking session rather than the definer, a standard pattern for public API wrappers that must respect the caller's security context.

Functionally, the package provides the entry points used to place and release holds on Project Billing invoices — most notably the Payment When Paid (PWP) hold applied to invoices whose funding has not yet been received from the customer. The user search term "paap_apply_hold" corresponds directly to one of its two business procedures, indicating that most callers arrive at this package to apply a hold programmatically to a set of invoices.

Key Procedures and Functions

The package exposes four documented procedures:

  • PAAP_APPLY_HOLD — Applies a hold against a set of invoices passed in as a collection. This is the procedure most commonly targeted by the search term "paap_apply_hold". It reports success or failure through the standard concurrent-style return status, message count, and message data outputs.
  • PAAP_RELEASE_HOLD — The complement of PAAP_APPLY_HOLD. Releases previously applied holds against a supplied set of invoices and accepts an additional release-option argument that governs how the release is performed.
  • ROSETTA_TABLE_COPY_IN_P0 — A generated utility that copies an external JTF_NUMBER_TABLE collection into the internal invoice ID collection type (paap_pwp_pkg.invoiceid) used by the package. This is a Rosetta/pluggable-table conversion helper rather than business logic.
  • ROSETTA_TABLE_COPY_OUT_P0 — The reverse of the above, copying the internal invoice ID collection back out to a JTF_NUMBER_TABLE for the calling layer.

The two Rosetta procedures exist to marshal data between the JTF-number array representation used in Web/toolkit layers and the internal collection type expected by the PA package body. They follow the standard Rosetta naming convention produced by Oracle's integration generator.

Tables Accessed

The documented table reference for this package is PLITBLM, accessed through an APPS synonym. PLITBLM is a temporary/interface table used within the Project Billing invoice hold process to stage invoice identifiers while holds are being applied or released. Because the package operates on collections of invoice IDs supplied by the caller, it uses PLITBLM as intermediate storage rather than performing direct DML on the base invoice and hold tables; the actual hold insertion and removal is delegated to the underlying paap_pwp_pkg implementation and its own table set.

Usage Notes

PAAP_PWP_PKG_W is normally invoked indirectly rather than by end users. Typical call paths include:

  • Project Billing and Payment When Paid hold maintenance actions driven from the forms or OAF pages that manage invoice holds.
  • Concurrent programs that mass-apply or mass-release payment holds as part of billing cycles or collection-driven hold processing.
  • Custom PL/SQL integration code that needs a supported API to apply the PWP hold to a list of invoices; such code should build a JTF_NUMBER_TABLE and call PAAP_APPLY_HOLD or PAAP_RELEASE_HOLD, then inspect x_return_status for 'S' (success) or 'E'/'U' and read x_msg_count and x_msg_data via FND_MSG_PUB for diagnostics.

Because the package is AUTHID CURRENT_USER and the procedures are pure wrappers, callers must have appropriate grants on the underlying PA objects and must handle the buffer of messages that the routine populates. No other packaged object in the ETRM inventory references this wrapper, so it is intended as a terminal API called from forms or external code.