This appendix covers the following topics:
You can use this API if you have a custom interface that makes it difficult to use with the existing interfaces in Oracle Assets. The Transfer API uses the FA_TRANSFER_PUB.DO_TRANSFER procedure. You can use this API if you have a custom interface that makes it difficult to use with the existing asset transfer interfaces in Oracle Assets.
Oracle Assets also allows you to transfer assets using any of the following methods:
Asset Workbench: You use the Asset Workbench process to manually transfer individual assets.
Mass Transfer: You use the Mass Transfer process to transfer groups of assets selected by ranges.
The Transfer API provides the following functionality:
The Transfer API automatically transfers assets in all the tax books that are associated with the corporate book where the transfer transaction originated.
If you have set up alternate ledger currency , when you add or modify assets using an Oracle Assets API, the API copies the transactions to the reporting currencies automatically. Invoice rounding issues are avoided by using the API to drive the alternate ledger currency accounting for both the ledger and reporting currencies.
Related Topics
Sample Script: Using the Transfer API to Transfer Units
The Transfer API procedure is called: FA_TRANSFER_PUB.DO_TRANSFER ().
The following table provides the arguments, types, value, and descriptions of the elements of the FA_TRANSFER_PUB.DO_TRANSFER procedure.
Each argument has a prefix of P, X, or PX. These prefixes mean the following:
P - indicates an In argument
X - indicates an Out argument
PX - indicates an argument that is both In and Out
Argument | Type | Value | Description |
---|---|---|---|
P_API_VERSION | NUMBER | Internal use only | Version of the API in use. |
P_INIT_MSG_LIST | VARCHAR2(1) | FND_API.G_TRUE - Initialize the message stack. FND_API.G_FALSE - Do not initialize the message stack (Default). |
Determines whether the messages stack should be initialized and cleared. |
P_COMMIT | VARCHAR2(1) | FND_API.G_TRUE - Commit automatically. FND_API.G_FALSE - Do not commit automatically (Default) |
Commits the transaction. |
P_VALIDATION_LEVEL | NUMBER | FND_API.G_VALID_ LEVEL_NONE - Low level validation for a transaction. FND_API.G_VALID_ LEVEL_FULL - High level validation for a transaction (Default). |
Asset validation by the API. |
P_CALLING_FN | VARCHAR2(30) | Function calling the API | |
X_RETURN_STATUS | VARCHAR2(1) | FND_API.G_RET_STS_ SUCCESS - Indicates a successful transfer. FND_API.G_RET_STS_ ERROR - transfer failed. FND_API.G_RET_STS_ UNEXP_ERROR - Unexpected error |
Determines if the API is successful. |
X_MSG_COUNT | NUMBER | Number of messages on the message stack. Returns number of messages added onto the message stack. | |
X_MSG_DATA | VARCHAR2(1024) | Message stack. Returns top most message on the message stack. | |
PX_TRANS_REC | FA_API_TYPES. TRANS_REC_TYPE | Describes the transaction taking place. Transaction information provided by the user. | |
PX_ASSET_HDR_REC | FA_API_TYPES. ASSET_HDR_REC_ TYPE | Asset information provided by user. Unique identifiers for the assets. | |
PX_ASSET_DIST_TBL | FA_API_TYPES. ASSET_DIST_TBL | Distribution information of the asset. |
This section details how to call the API and how to populate parameter structures required by the API. Sample scripts are also included at the end of this document to show you how this can be called in PL/SQL.
There are three structures that need to be populated before calling the API.
The TRANS_REC_TYPE transaction structure contains information about the transaction, such as the transaction header ID and the transaction type code. The following table shows type and value information for each argument.
Argument | Required / Optional | Type | Value |
---|---|---|---|
TRANSACTION_DATE_ ENTERED | Optional | DATE | Populate if you are doing a previous period transfer, otherwise do nothing or set it to null. Defaults to the current period. |
TRANSACTION_NAME | Optional | VARCHAR2(20) | Description of the transaction. This field is the Comments field in the Asset Workbench. |
DESC_FLEX | Optional | DESC_FLEX_ REC_ TYPE | Descriptive flexfield segments. |
WHO_INFO | Required | STANDARD_ WHO_REC_ TYPE | Standard Who columns. |
CALLING_INTERFACE | Optional | VARCHAR2(30) | Defaults to CUSTOM |
TRANSACTION_HEADER_ ID | Internal use only | NUMBER(15) | Optional OUT parameter |
The ASSET_HDR_REC_TYPE asset structure contains unique identification information for a given asset, such as the asset ID and book type code. The following table shows type and value information for each argument.
Argument | Required / Optional | Type | Value |
---|---|---|---|
ASSET_ID | Required | NUMBER(15) | The asset ID |
BOOK_TYPE_CODE | Required | VARCHAR2(15) | Book name |
The ASSET_DIST_REC_TYPE asset structure contains information that represents a single source or destination distribution line. All the ASSET_DIST_REC_TYPE records comprising a single transfer transaction are contained in the ASSET_DIST_TBL table. At least one source line and at least one destination line are required for each transfer transaction. The following table shows type and value information for each argument.
Argument | Required / Optional | Type | Value |
---|---|---|---|
DISTRIBUTION_ID | Required if row is source distribution | NUMBER(15) | Unique distribution identification number. |
TRANSACTION_UNITS | Required | NUMBER | Number of units involved in the transaction. |
ASSIGNED_TO | Optional | NUMBER(15) | Employee identification number. |
EXPENSE_CCID | Required if row is destination distribution | NUMBER(15) | Depreciation expense account identification number. |
LOCATION_CCID | Required if row is destination distribution | NUMBER(15) | Location flexfield identification number. |
The following example shows how to use Transfer API for transfer transaction. The example shows transfer of two units from an existing distribution of two new distributions, each having one unit.
set serveroutput on; declare l_trans_rec fa_api_types.trans_rec_type; l_asset_hdr_rec fa_api_types.asset_hdr_rec_type; l_asset_dist_tbl fa_api_types.asset_dist_tbl_type; l_return_status VARCHAR2(1); l_mesg_count number; l_mesg varchar2(512); begin dbms_output.enable(1000000); fa_srvr_msg.init_server_message; -- fill in asset information l_asset_hdr_rec.asset_id := &asset_id; l_asset_hdr_rec.book_type_code := '&book'; -- fill in distribution data for existing distribution lines -- affected by this transfer txn. Note: You need to fill in -- only affected distribution lines. -- -- For source distribution, you must fill in either existing -- distribution id or 2 columns(expense_ccid,location_ccid) or -- 3-tuple columns(assigned_to,expense_ccid, and location_ccid) -- depending on the makeup of the particular distribution -- of the asset. l_asset_dist_tbl(1).transaction_units := &trx_unit; -- Source -- Option A - known dist id l_asset_dist_tbl(1).distribution_id := &existing_dist_id; -- or -- Option B - known dist attributes l_asset_dist_tbl(1).assigned_to := &existing_assigned_to l_asset_dist_tbl(1).expense_ccid := &existing_expense_ccid l_asset_dist_tbl(1).location_ccid := &existing_location_id -- Destination -- fill in dist info for one or more destination distribution (start with 2..(3,4,..)) l_asset_dist_tbl(2).transaction_units := &trx_units2; l_asset_dist_tbl(2).assigned_to := &new_assigned_to; l_asset_dist_tbl(2).expense_ccid := &new_expense_ccid; l_asset_dist_tbl(2).location_ccid := &new_location_id; FA_TRANSFER_PUB.do_transfer( -- std parameters p_api_version => 1.0, p_init_msg_list => FND_API.G_FALSE, p_commit => FND_API.G_FALSE, p_validation_level => FND_API.G_VALID_LEVEL_FULL, p_calling_fn => NULL, x_return_status => l_return_status, x_msg_count => l_mesg_count, x_msg_data => l_mesg, -- api parameters px_trans_rec => l_trans_rec, px_asset_hdr_rec => l_asset_hdr_rec, px_asset_dist_tbl => l_asset_dist_tbl); --dump messages l_mesg_count := fnd_msg_pub.count_msg; if l_mesg_count > 0 then l_mesg := chr(10) || substr(fnd_msg_pub.get (fnd_msg_pub.G_FIRST, fnd_api.G_FALSE), 1, 250); dbms_output.put_line(l_mesg); for i in 1..(l_mesg_count - 1) loop l_mesg := substr(fnd_msg_pub.get (fnd_msg_pub.G_NEXT, fnd_api.G_FALSE), 1, 250); dbms_output.put_line(l_mesg); end loop; fnd_msg_pub.delete_msg(); end if; if (l_return_status <> FND_API.G_RET_STS_SUCCESS) then dbms_output.put_line('FAILURE'); else dbms_output.put_line('SUCCESS'); dbms_output.put_line('THID' || to_char(l_trans_rec.transaction_header_id)); end if; end; /