100% found this document useful (1 vote)
338 views

Cancel PO Line API

This procedure cancels a line on a purchase order (PO) by calling the PO cancellation API. It takes the PO number, line number, and line ID as input. For each PO line to cancel, it initializes the API, calls the cancellation API, and updates the status of the line in the database. It tracks the number of successful and failed cancellations.

Uploaded by

Nagaraj Gunti
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
338 views

Cancel PO Line API

This procedure cancels a line on a purchase order (PO) by calling the PO cancellation API. It takes the PO number, line number, and line ID as input. For each PO line to cancel, it initializes the API, calls the cancellation API, and updates the status of the line in the database. It tracks the number of successful and failed cancellations.

Uploaded by

Nagaraj Gunti
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

Cancel PO Line API

The following code is use to cancel the Line of PO:


required information:
PO Number
Line Number
Line ID
Code is as follow:
CREATE OR REPLACE PROCEDURE APPS.XXPO_CANCEL_PO (
ERRBUFF VARCHAR2,
RETCODE NUMBER
)
IS
CURSOR FETCH_PO_CUR
IS
SELECT ATTRIBUTE10, ATTRIBUTE9, PO_NUMBER, ATTRIBUTE11, STATUS, SEQ_ID
FROM XX_PO_CLO
WHERE FLAG = 'NP';
V_USER_ID NUMBER;
V_RESPONSIBILITY_ID NUMBER;
V_RESPONSIBILITY_APPL_ID NUMBER;
V_ORG_ID VARCHAR2 (20);
L_RETURN_STATUS VARCHAR2 (1) := NULL;
L_MSG_DATA VARCHAR2 (2000);
V_SUCCESS_COUNT NUMBER;
V_FAILURE_COUNT NUMBER;
BEGIN
V_SUCCESS_COUNT := 0;
V_FAILURE_COUNT := 0;
FOR FETCH_PO_REC IN FETCH_PO_CUR
LOOP
FND_FILE.PUT_LINE (FND_FILE.LOG,
'START OF CANCEL PO PROCESS API' || ' ' || SYSDATE
);
BEGIN
V_USER_ID := FND_GLOBAL.USER_ID;
V_RESPONSIBILITY_ID := FND_GLOBAL.RESP_ID;
V_RESPONSIBILITY_APPL_ID := FND_GLOBAL.RESP_APPL_ID;
FND_GLOBAL.APPS_INITIALIZE (V_USER_ID,
V_RESPONSIBILITY_ID,
V_RESPONSIBILITY_APPL_ID
);
V_ORG_ID := FETCH_PO_REC.ATTRIBUTE10;
--V_ORG_ID:=FND_PROFILE.VALUE('ORG_ID');
MO_GLOBAL.INIT ('PO');
MO_GLOBAL.SET_POLICY_CONTEXT ('S', V_ORG_ID);
EXCEPTION
WHEN OTHERS
THEN
FND_FILE.PUT_LINE (FND_FILE.LOG,
'ERROR CODE FOR INITIALIZATION IS :'
|| TO_NUMBER (SQLCODE)

|| 'ERROR MSG FOR INITIALIZATION IS :'


|| SUBSTR (SQLERRM, 1, 50)
);
END;
FND_MSG_PUB.INITIALIZE;
FND_FILE.PUT_LINE (FND_FILE.LOG,
'PO NUMBER TO CANCEL IS :' || FETCH_PO_REC.PO_NUMBER
);
IF FETCH_PO_REC.STATUS = 'CANCEL'
THEN
PO_DOCUMENT_CONTROL_PUB.CONTROL_DOCUMENT
(1.0, -- P_API_VERSION
FND_API.G_TRUE, -- P_INIT_MSG_LIST
FND_API.G_TRUE, -- P_COMMIT
L_RETURN_STATUS, -- X_RETURN_STATUS
'PO', -- P_DOC_TYPE
'STANDARD', -- P_DOC_SUBTYPE
NULL, -- P_DOC_ID
FETCH_PO_REC.PO_NUMBER, -- P_DOC_NUM
NULL, -- P_RELEASE_ID
NULL, -- P_RELEASE_NUM
FETCH_PO_REC.ATTRIBUTE11, --NULL, -- P_DOC_LINE_ID
FETCH_PO_REC.ATTRIBUTE9, --NULL, -- P_DOC_LINE_NUM
NULL, -- P_DOC_LINE_LOC_ID
NULL, -- P_DOC_SHIPMENT_NUM
'CANCEL', -- P_ACTION
SYSDATE, -- P_ACTION_DATE
NULL, -- P_CANCEL_REASON
'N', -- P_CANCEL_REQS_FLAG
NULL, -- P_PRINT_FLAG
NULL, -- P_NOTE_TO_VENDOR
'N'
); --P_USE_GLDATE
FND_FILE.PUT_LINE (FND_FILE.LOG,
'API RETURN STATUS IS-' || L_RETURN_STATUS
);
IF L_RETURN_STATUS = 'U'
THEN --( FND_API.G_RET_STS_UNEXP_ERROR)
FND_FILE.PUT_LINE (FND_FILE.LOG,
'UNEXPECTED ERROR IN CANCEL PO PROCESS API'
);
FND_MSG_PUB.ADD_EXC_MSG
('QP_PRICE_LIST_PUB',
' UNEXPECTED ERROR IN CANCEL PO PROCESS API'
);
ELSIF L_RETURN_STATUS = 'E'
THEN --- ( FND_API.G_RET_STS_ERROR )
FND_FILE.PUT_LINE (FND_FILE.LOG,
'ERROR IN CANCEL PO PROCESS API');
FND_MSG_PUB.ADD_EXC_MSG ('QP_PRICE_LIST_PUB',
'ERROR IN CANCEL PO PROCESS API'
);
END IF;
IF L_RETURN_STATUS != 'S'
THEN
V_FAILURE_COUNT := V_FAILURE_COUNT + 1;

FND_FILE.PUT_LINE (FND_FILE.LOG,
'TOTAL FAIL RECORD COUNT' || V_FAILURE_COUNT
);
FOR ERR_CODE IN 1 .. FND_MSG_PUB.COUNT_MSG
LOOP
L_MSG_DATA :=
SUBSTR (FND_MSG_PUB.GET (P_MSG_INDEX => 1,
P_ENCODED => 'F'),
1,
200
);
FND_FILE.PUT_LINE
(FND_FILE.LOG,
'CANCEL PO PROCESS API FAILED FOR REASON-'
|| L_MSG_DATA
);
END LOOP;
END IF;
IF L_RETURN_STATUS = 'S'
THEN --- ( FND_API.G_RET_STS_SUCESS)
FND_FILE.PUT_LINE (FND_FILE.LOG, 'CANCEL PO PROCESS API PASSED');
V_SUCCESS_COUNT := V_SUCCESS_COUNT + 1;
FND_FILE.PUT_LINE (FND_FILE.LOG,
'TOTAL SUCCESS RECORD COUNT-'
|| V_SUCCESS_COUNT
);
-- RENAME PO NUMBER AFTER CANCELLATION
UPDATE XX_PO_CLO
SET FLAG = 'P',
ATTRIBUTE1 = 'CANCELED'
WHERE SEQ_ID = FETCH_PO_REC.SEQ_ID;
END IF;
ELSE
UPDATE XX_PO_CLO
SET FLAG = 'P'
WHERE SEQ_ID = FETCH_PO_REC.SEQ_ID;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
FND_FILE.PUT_LINE (FND_FILE.LOG,
'ERROR CODE IN THE EXECUTION OF CANCEL API IS :'
|| TO_NUMBER (SQLCODE)
|| SUBSTR (SQLERRM, 1, 50)
);
END XXPO_CANCEL_PO;

You might also like