AIM: Component is used for Create the Requisition against the Blanket Purchase Agreement For different Locations.

SCRIPT:

CREATE OR REPLACE PACKAGE BODY APPS.XXTTK_BPO_PKG IS

PROCEDURE XXTTK_REQ ( ERRORBUF     OUT       VARCHAR2

,RETCODE     OUT       NUMBER

,P_ORG_ID    IN OUT    NUMBER) IS

CURSOR C1 IS SELECT

TRANSACTION_ID

,OPERATING_UNIT

,REQ_TYPE

,PREPARER

,LINE_TYPE

,ITEM

,DESCRIPTION

,QUANTITY

,DESTINATION_ORGANIZATION

,DELIVER_TO_LOCATION

,SOURCE_TYPE_CODE

,AUTHORIZATION_STATUS

,DELIVER_TO_REQUESTOR

,NEED_BY_DATE

,INTERFACE_SOURCE_CODE

,DESTINATION_TYPE_CODE

FROM XXTTK_REQ

WHERE ORG_ID = P_ORG_ID;

 

V_TRANSACTION_ID           NUMBER;

V_ORG_ID                   NUMBER;

V_PROCESS_FLAG             VARCHAR2(5);

V_ERROR_MESSAGE            VARCHAR2(3500);

V_REQ_TYPE                 VARCHAR2(100);

V_PREPARER_ID              NUMBER;

V_LINE_TYPE_ID             number;

V_ITEM_ID                  NUMBER;

V_ITEM_DESCRIPTION         VARCHAR2(500);

V_DESTINATION_ORGANIZATION NUMBER;

V_DELIVER_TO_LOCATION      NUMBER;

V_REQ_SUR_TYPE            VARCHAR2(100);

V_REQUESTOR_ID             NUMBER;

V_COUNT                    NUMBER := 0;

BEGIN

 

DBMS_OUTPUT.put_line (‘PARAMETER : ORG_ID……’|| P_ORG_ID);

 

FOR VAR IN C1 LOOP

–=================

–validation start

–=============================

–validation for ORGANIZATION_ID

–============================

 

BEGIN

 

SELECT ORGANIZATION_ID

INTO V_ORG_ID

FROM HR_OPERATING_UNITS

WHERE NAME = VAR.OPERATING_UNIT;

IF

V_ORG_ID IS NOT NULL  THEN

V_PROCESS_FLAG := ‘V’;

ELSE

V_PROCESS_FLAG := ‘E’;

END IF;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.put_line(‘NO DATA FOUND FOR THIS ORGANIZATION..’|| ‘ ‘||VAR.OPERATING_UNIT );

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := ‘OPERATING UNIT NOT FOUND….’||VAR.OPERATING_UNIT;

WHEN TOO_MANY_ROWS  THEN

DBMS_OUTPUT.put_line(‘MULTI ROWS RETURN THIS ORGANIZATION..’|| VAR.OPERATING_UNIT);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE :=V_ERROR_MESSAGE || ‘MULTIPLE ROWS RETURN ORG ID….’;

WHEN OTHERS

THEN DBMS_OUTPUT.put_line (‘NOTHING FOUND..’ || SQLCODE);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := ‘ORG ID NOT FOUND….’||VAR.OPERATING_UNIT;

END;

–========================

–VALIDATTION FOR REQ_TYPE

–========================

BEGIN

SELECT LOOKUP_CODE

INTO   V_REQ_TYPE

FROM   FND_LOOKUP_VALUES

WHERE LOOKUP_TYPE = ‘REQUISITION TYPE’

AND   LOOKUP_CODE = VAR.REQ_TYPE;

EXCEPTION

WHEN NO_DATA_FOUND THEN

dbms_output.put_line(‘NO DATA FOUND THIS REQUISITION TYPE..’||VAR.REQ_TYPE);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := ‘REQUISITION TYPE NOT FOUND….’;

WHEN TOO_MANY_ROWS THEN

dbms_output.put_line(‘MULTI ROWS RETURN THIS REQUISITION TYPE..’||VAR.REQ_TYPE);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := ‘MULTIPLE ROWS RETURN REQUISITION TYPE….’||VAR.REQ_TYPE;

WHEN OTHERS THEN

dbms_output.put_line(‘NOT VALID REQUISITION TYPE..’);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE       := ‘NOT VALID REQUISITION TYPE….’||VAR.REQ_TYPE;

END;

–========================

–VALIDATION FOR PREPARER

–======================

BEGIN

SELECT PERSON_ID

INTO   V_PREPARER_ID

FROM   PER_ALL_PEOPLE_F

WHERE  FULL_NAME = VAR.PREPARER;

EXCEPTION

WHEN NO_DATA_FOUND THEN

FND_FILE.PUT_LINE(FND_FILE.LOG,’NO DATA FOUND THIS PREPARER..’||VAR.PREPARER);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := ‘PREPARER NOT FOUND….’||VAR.PREPARER;

WHEN TOO_MANY_ROWS THEN

FND_FILE.PUT_LINE(FND_FILE.LOG,’MULTI ROWS RETURN THIS PREPARER..’||VAR.PREPARER);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         :=’MULTIPLE ROWS RETURN PREPARER….’||VAR.PREPARER;

WHEN OTHERS THEN

FND_FILE.PUT_LINE(FND_FILE.LOG,’NOT VALID PREPARER..’||VAR.PREPARER);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := ‘NOT VALID PREPARER….’||VAR.PREPARER;

END;

–============================

–VALIDATION FOR LINE_TYPE_ID

–============================

BEGIN

 

SELECT LINE_TYPE_ID

INTO   V_LINE_TYPE_ID

FROM   PO_LINE_TYPES

WHERE LINE_TYPE   = VAR.LINE_TYPE;

EXCEPTION

WHEN NO_DATA_FOUND THEN

FND_FILE.PUT_LINE(FND_FILE.LOG,’NO DATA FOUND FOR THIS LINE_TYPE..’||VAR.PREPARER);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         :=’NOT FOUND THIS LINE_TYPE….’;

WHEN TOO_MANY_ROWS THEN

FND_FILE.PUT_LINE(FND_FILE.LOG,’MULTI ROWS RETURN THIS LINE TYPE..’||VAR.PREPARER);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := ‘MULTIPLE ROWS RETURN LINE TYPE….’||VAR.PREPARER;

WHEN OTHERS THEN

FND_FILE.PUT_LINE(FND_FILE.LOG,’NOT VALID LINE TYPE..’||VAR.PREPARER);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := ‘NOT VALID PREPARER….’||VAR.PREPARER;

END;

–===================

–VALIDATION FOR ITEM

–===================

BEGIN

 

SELECT DISTINCT INVENTORY_ITEM_ID

INTO   V_ITEM_ID

FROM   MTL_SYSTEM_ITEMS_B

WHERE  SEGMENT1 =VAR.ITEM;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE(‘ITEM NOT FOUND FOR EXISTING ITEM’||’ ‘||VAR.ITEM);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := ‘ITEM NOT FOUND….’;

WHEN TOO_MANY_ROWS THEN

DBMS_OUTPUT.PUT_LINE(‘MULTIPLE ROWS RETURN FOR THIS ITEM’||VAR.ITEM);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := ‘MULTIPLE ROWS RETURN….’||VAR.ITEM;

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(‘OTHER ERROR’||VAR.ITEM);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := ‘OTHER ERROR CAPTURED….’||VAR.ITEM;

END;

 

–================================

–VALIDATION FOR ITEM DESCRIPTION

–================================

BEGIN

SELECT DISTINCT DESCRIPTION

INTO V_ITEM_DESCRIPTION

FROM MTL_SYSTEM_ITEMS_B

WHERE SEGMENT1 = VAR.ITEM;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE(‘NO DATA FOUND FOR DESC..’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’NO DATA FOR DESC…..’;

WHEN TOO_MANY_ROWS THEN

DBMS_OUTPUT.PUT_LINE(‘MULTIPLLE ROWS RETURN…’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’MULTIPLE ROWS DATA FOR DESC…..’;

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(‘OTHER ERROR CAP..’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’OTHER…..’;

 

END;

 

–=========================

–VALIDATION FOR QUANTITY

–=======================

BEGIN

IF VAR.QUANTITY IS NULL

THEN

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE :=V_ERROR_MESSAGE || ‘QUANTITY CAN NOT BE NULL’;

DBMS_OUTPUT.put_line (‘QUANTITY CAN NOT BE NULL’);

END IF;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(‘OTHER ERROR CAPTURED…….’);

END;

 

–===========================

–VALIDATION FRO NEED-BY-DATE

–===========================

BEGIN

IF VAR.NEED_BY_DATE > SYSDATE

THEN

V_PROCESS_FLAG := ‘V’;

ELSE

DBMS_OUTPUT.PUT_LINE(‘NEED-BY-DATE CAN NOT BE LESS THEN CREATION DATE !’||’  ‘||VAR.NEED_BY_DATE);

V_PROCESS_FLAG:= ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE || ‘NEED BY DATE CAN NOT BE LESS THEN CREATION DATE’|| VAR.NEED_BY_DATE;

END IF;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(‘OTHER ERROR CAP..’);

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’OTHER…..’;

END;

 

–========================================

–VALLIDATION FOR DESTINATION_ORGANIZATION

—========================================

 

BEGIN

SELECT ORGANIZATION_ID

INTO V_DESTINATION_ORGANIZATION

FROM ORG_ORGANIZATION_DEFINITIONS

WHERE ORGANIZATION_NAME = VAR.DESTINATION_ORGANIZATION;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE(‘NO DATA FOUND FOR DESTINATION_ORGANIZATION..’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’NO DATA FOR DESTINATION_ORGANIZATION…..’;

WHEN TOO_MANY_ROWS THEN

DBMS_OUTPUT.PUT_LINE(‘MULTIPLLE ROWS RETURN…’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’MULTIPLE ROWS DATA FOR DESTINATION_ORGANIZATION…..’;

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(‘OTHER ERROR CAP..’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’OTHER…..’;

 

END;

–====================================

–VVALIDATION FOR DESTINATION LOCATION

–====================================

BEGIN

 

SELECT LOCATION_ID

INTO V_DELIVER_TO_LOCATION

FROM HR_LOCATIONS

WHERE LOCATION_CODE = VAR.DELIVER_TO_LOCATION;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE(‘NO DATA FOUND FOR DELIVER_TO_LOCATION..’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’NO DATA FOR DELIVER_TO_LOCATION…..’;

WHEN TOO_MANY_ROWS THEN

DBMS_OUTPUT.PUT_LINE(‘MULTIPLLE ROWS RETURN…’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’MULTIPLE ROWS DATA FOR DELIVER_TO_LOCATION…..’;

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(‘OTHER ERROR CAP..’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’OTHER…..’;

 

END;

–==========================

–VALIDATION FOR REQ SOURCE

–=========================

BEGIN

SELECT LOOKUP_CODE

INTO V_REQ_SUR_TYPE

FROM FND_LOOKUP_VALUES

WHERE LOOKUP_TYPE = ‘REQUISITION SOURCE TYPE’

AND   LOOKUP_CODE = VAR.SOURCE_TYPE_CODE;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE(‘NO DATA FOUND FOR DESC..’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’NO DATA FOR DESC…..’;

WHEN TOO_MANY_ROWS THEN

DBMS_OUTPUT.PUT_LINE(‘MULTIPLLE ROWS RETURN…’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’MULTIPLE ROWS DATA FOR DESC…..’;

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(‘OTHER ERROR CAP..’);

V_PROCESS_FLAG := ‘E’;

V_ERROR_MESSAGE := V_ERROR_MESSAGE||’OTHER…..’;

 

END ;

 

–==========================

— VALIDATION FOR REQUESTOR

–==========================

 

BEGIN

SELECT PERSON_ID

INTO   V_REQUESTOR_ID

FROM   PER_ALL_PEOPLE_F

WHERE  FULL_NAME = VAR.DELIVER_TO_REQUESTOR;

EXCEPTION

WHEN NO_DATA_FOUND THEN

FND_FILE.PUT_LINE(FND_FILE.LOG,’NO DATA FOUND THIS REQUESTOR..’);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := V_ERROR_MESSAGE||’NOT FOUND  REQUESTOR….’;

WHEN TOO_MANY_ROWS THEN

FND_FILE.PUT_LINE(FND_FILE.LOG,’MULTI ROWS RETURN THIS REQUESTOR..’);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := V_ERROR_MESSAGE||’MULTIPLE ROWS RETURN REQUESTOR….’;

WHEN OTHERS THEN

FND_FILE.PUT_LINE(FND_FILE.LOG,’NOT VALID REQUESTOR..’);

V_PROCESS_FLAG        := ‘E’;

V_ERROR_MESSAGE         := V_ERROR_MESSAGE||’NOT VALID REQUESTOR….’;

END;

 

–===========================

–UPDATE INTO STAGING TABLE

–==========================

 

BEGIN

 

IF V_PROCESS_FLAG = ‘V’ THEN

 

SELECT  PO_REQUISITIONS_INTERFACE_S.NEXTVAL

INTO    V_TRANSACTION_ID

FROM DUAL;

 

BEGIN

UPDATE XXTTK_REQ

SET VALIDATED_FLAG = V_PROCESS_FLAG

,ERROR_MESSAGE = ‘DATA SUCCESFULLY INSERTED INTO REQUISITION INTERFACE TABLE’

WHERE  org_id= v_org_id;

EXCEPTION

WHEN OTHERS

THEN

DBMS_OUTPUT.put_line(‘error while updating table …’|| SQLERRM);

END;

ELSIF V_PROCESS_FLAG = ‘E’

THEN

BEGIN

UPDATE XXTTK_REQ

SET VALIDATED_FLAG= V_PROCESS_FLAG,

ERROR_MESSAGE =  V_ERROR_MESSAGE

WHERE org_id=v_org_id;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.put_line(‘error while updating table…..’|| SQLERRM);

DBMS_OUTPUT.put_line (‘validated flag E …’ || SQLERRM);

END;

END IF;

 

END;

 

–============================

–INSERT INTO INTERFACE TABLE

–============================

BEGIN

IF

V_PROCESS_FLAG = ‘V’ THEN

 

INSERT INTO PO_REQUISITIONS_INTERFACE_ALL

(TRANSACTION_ID

,ORG_ID

,REQUISITION_TYPE

,PREPARER_ID

,LINE_TYPE_ID

,ITEM_ID

,ITEM_DESCRIPTION

,QUANTITY

,NEED_BY_DATE

,DESTINATION_ORGANIZATION_ID

,DELIVER_TO_LOCATION_ID

,SOURCE_TYPE_CODE

,AUTHORIZATION_STATUS

,DELIVER_TO_REQUESTOR_ID

,INTERFACE_SOURCE_CODE

,DESTINATION_TYPE_CODE

)

VALUES

(

V_TRANSACTION_ID

,V_ORG_ID

,V_REQ_TYPE

,V_PREPARER_ID

,V_LINE_TYPE_ID

,V_ITEM_ID

,V_ITEM_DESCRIPTION

,VAR.QUANTITY

,VAR.NEED_BY_DATE

,V_DESTINATION_ORGANIZATION

,V_DELIVER_TO_LOCATION

,V_REQ_SUR_TYPE

,VAR.AUTHORIZATION_STATUS

,V_REQUESTOR_ID

,VAR.INTERFACE_SOURCE_CODE

,VAR.DESTINATION_TYPE_CODE

);

 

V_COUNT := V_COUNT+sql%Rowcount;

END IF;

EXCEPTION

WHEN OTHERS

THEN

DBMS_OUTPUT.put_line (‘PROCES FLAG……’|| V_PROCESS_FLAG);

DBMS_OUTPUT.put_line (‘ERROR !!! DATA DATA NOT INSERTED INTO INTERFACE TABLE…’|| SQLERRM);

 

END;

END LOOP;

 

IF V_PROCESS_FLAG = ‘V’ THEN

DBMS_OUTPUT.put_line (‘REQUISITION INFORMATION INSERTED SUCESSFULY INTO INTERFACE TABLE….’);

DBMS_OUTPUT.PUT_LINE(‘NUMBER OF ROWS INSERTED’||’ ‘||V_COUNT);

END IF ;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(‘NUMBER OF ROWS REJECTED’||V_COUNT);

 

COMMIT ;

END ;

 

END XXTTK_BPO_PKG ;

 

After create the Requisition we need to run the requisition Import program.

Parameter : Locations

Requisition for different locations:

 

After Create the requisition we need to Run the Create release Program on SRS Window

Check the Release NAV: Purchase Order > Purchase Order Summary

 

check The Status = Approved

Do drop a note by writing us at Dileep.dinesh@doyensys.com or use the comment section below to ask your questions

 

Recent Posts

Start typing and press Enter to search