DBA Data[Home] [Help]

APPS.BOM_RTG_ISETUP_IMP dependencies on DBMS_XMLSAVE

Line 46: insCtx DBMS_XMLSave.ctxType;

42: X_return_status OUT NOCOPY VARCHAR2,
43: X_msg_count OUT NOCOPY NUMBER,
44: X_G_msg_data OUT NOCOPY LONG) IS
45:
46: insCtx DBMS_XMLSave.ctxType;
47: rows NUMBER;
48: ename_v VARCHAR2(20);
49:
50: l_rtg_header_rec Bom_Rtg_Pub.Rtg_Header_Rec_Type

Line 844: insCtx := DBMS_XMLSave.newContext('BOM_ROUTING_HEADER_TEMP');

840: FND_MESSAGE.SET_NAME('BOM', 'BOM_SETUP_NO_ROWS');
841: FND_MESSAGE.RETRIEVE(X_G_msg_data);
842: ELSE
843: -- get the context handle
844: insCtx := DBMS_XMLSave.newContext('BOM_ROUTING_HEADER_TEMP');
845: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
846: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
847: DBMS_XMLSave.setRowTag(insCtx , 'OperationalRoutingsVO');
848: -- this inserts the document

Line 845: DBMS_XMLSave.setIgnoreCase(insCtx, 1);

841: FND_MESSAGE.RETRIEVE(X_G_msg_data);
842: ELSE
843: -- get the context handle
844: insCtx := DBMS_XMLSave.newContext('BOM_ROUTING_HEADER_TEMP');
845: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
846: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
847: DBMS_XMLSave.setRowTag(insCtx , 'OperationalRoutingsVO');
848: -- this inserts the document
849: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_hdr_XML);

Line 846: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');

842: ELSE
843: -- get the context handle
844: insCtx := DBMS_XMLSave.newContext('BOM_ROUTING_HEADER_TEMP');
845: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
846: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
847: DBMS_XMLSave.setRowTag(insCtx , 'OperationalRoutingsVO');
848: -- this inserts the document
849: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_hdr_XML);
850: -- this closes the handle

Line 847: DBMS_XMLSave.setRowTag(insCtx , 'OperationalRoutingsVO');

843: -- get the context handle
844: insCtx := DBMS_XMLSave.newContext('BOM_ROUTING_HEADER_TEMP');
845: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
846: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
847: DBMS_XMLSave.setRowTag(insCtx , 'OperationalRoutingsVO');
848: -- this inserts the document
849: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_hdr_XML);
850: -- this closes the handle
851: DBMS_XMLSave.closeContext(insCtx);

Line 849: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_hdr_XML);

845: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
846: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
847: DBMS_XMLSave.setRowTag(insCtx , 'OperationalRoutingsVO');
848: -- this inserts the document
849: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_hdr_XML);
850: -- this closes the handle
851: DBMS_XMLSave.closeContext(insCtx);
852: -- Routing Revisions Table
853: IF (P_rtg_rev_XML IS NOT NULL) THEN

Line 851: DBMS_XMLSave.closeContext(insCtx);

847: DBMS_XMLSave.setRowTag(insCtx , 'OperationalRoutingsVO');
848: -- this inserts the document
849: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_hdr_XML);
850: -- this closes the handle
851: DBMS_XMLSave.closeContext(insCtx);
852: -- Routing Revisions Table
853: IF (P_rtg_rev_XML IS NOT NULL) THEN
854: -- get the context handle
855: insCtx := DBMS_XMLSave.newContext('BOM_RTG_REVISIONS_TEMP');

Line 855: insCtx := DBMS_XMLSave.newContext('BOM_RTG_REVISIONS_TEMP');

851: DBMS_XMLSave.closeContext(insCtx);
852: -- Routing Revisions Table
853: IF (P_rtg_rev_XML IS NOT NULL) THEN
854: -- get the context handle
855: insCtx := DBMS_XMLSave.newContext('BOM_RTG_REVISIONS_TEMP');
856: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
857: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
858: DBMS_XMLSave.setRowTag(insCtx , 'RoutingRevisionsVO');
859: -- this inserts the document

Line 856: DBMS_XMLSave.setIgnoreCase(insCtx, 1);

852: -- Routing Revisions Table
853: IF (P_rtg_rev_XML IS NOT NULL) THEN
854: -- get the context handle
855: insCtx := DBMS_XMLSave.newContext('BOM_RTG_REVISIONS_TEMP');
856: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
857: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
858: DBMS_XMLSave.setRowTag(insCtx , 'RoutingRevisionsVO');
859: -- this inserts the document
860: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_rev_XML);

Line 857: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');

853: IF (P_rtg_rev_XML IS NOT NULL) THEN
854: -- get the context handle
855: insCtx := DBMS_XMLSave.newContext('BOM_RTG_REVISIONS_TEMP');
856: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
857: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
858: DBMS_XMLSave.setRowTag(insCtx , 'RoutingRevisionsVO');
859: -- this inserts the document
860: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_rev_XML);
861: -- this closes the handle

Line 858: DBMS_XMLSave.setRowTag(insCtx , 'RoutingRevisionsVO');

854: -- get the context handle
855: insCtx := DBMS_XMLSave.newContext('BOM_RTG_REVISIONS_TEMP');
856: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
857: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
858: DBMS_XMLSave.setRowTag(insCtx , 'RoutingRevisionsVO');
859: -- this inserts the document
860: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_rev_XML);
861: -- this closes the handle
862: DBMS_XMLSave.closeContext(insCtx);

Line 860: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_rev_XML);

856: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
857: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
858: DBMS_XMLSave.setRowTag(insCtx , 'RoutingRevisionsVO');
859: -- this inserts the document
860: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_rev_XML);
861: -- this closes the handle
862: DBMS_XMLSave.closeContext(insCtx);
863: END IF;
864:

Line 862: DBMS_XMLSave.closeContext(insCtx);

858: DBMS_XMLSave.setRowTag(insCtx , 'RoutingRevisionsVO');
859: -- this inserts the document
860: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_rev_XML);
861: -- this closes the handle
862: DBMS_XMLSave.closeContext(insCtx);
863: END IF;
864:
865: -- Routing Operations Table
866: IF (P_rtg_op_XML IS NOT NULL) THEN

Line 868: insCtx := DBMS_XMLSave.newContext('BOM_ROUTING_OPERATIONS_TEMP');

864:
865: -- Routing Operations Table
866: IF (P_rtg_op_XML IS NOT NULL) THEN
867: -- get the context handle
868: insCtx := DBMS_XMLSave.newContext('BOM_ROUTING_OPERATIONS_TEMP');
869: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
870: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
871: DBMS_XMLSave.setRowTag(insCtx , 'OperationSequencesVO');
872: -- this inserts the document

Line 869: DBMS_XMLSave.setIgnoreCase(insCtx, 1);

865: -- Routing Operations Table
866: IF (P_rtg_op_XML IS NOT NULL) THEN
867: -- get the context handle
868: insCtx := DBMS_XMLSave.newContext('BOM_ROUTING_OPERATIONS_TEMP');
869: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
870: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
871: DBMS_XMLSave.setRowTag(insCtx , 'OperationSequencesVO');
872: -- this inserts the document
873: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_XML);

Line 870: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');

866: IF (P_rtg_op_XML IS NOT NULL) THEN
867: -- get the context handle
868: insCtx := DBMS_XMLSave.newContext('BOM_ROUTING_OPERATIONS_TEMP');
869: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
870: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
871: DBMS_XMLSave.setRowTag(insCtx , 'OperationSequencesVO');
872: -- this inserts the document
873: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_XML);
874: -- this closes the handle

Line 871: DBMS_XMLSave.setRowTag(insCtx , 'OperationSequencesVO');

867: -- get the context handle
868: insCtx := DBMS_XMLSave.newContext('BOM_ROUTING_OPERATIONS_TEMP');
869: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
870: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
871: DBMS_XMLSave.setRowTag(insCtx , 'OperationSequencesVO');
872: -- this inserts the document
873: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_XML);
874: -- this closes the handle
875: DBMS_XMLSave.closeContext(insCtx);

Line 873: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_XML);

869: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
870: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
871: DBMS_XMLSave.setRowTag(insCtx , 'OperationSequencesVO');
872: -- this inserts the document
873: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_XML);
874: -- this closes the handle
875: DBMS_XMLSave.closeContext(insCtx);
876: END IF;
877:

Line 875: DBMS_XMLSave.closeContext(insCtx);

871: DBMS_XMLSave.setRowTag(insCtx , 'OperationSequencesVO');
872: -- this inserts the document
873: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_XML);
874: -- this closes the handle
875: DBMS_XMLSave.closeContext(insCtx);
876: END IF;
877:
878: -- Routing Operation Resources Table
879: IF (P_rtg_op_res_XML IS NOT NULL) THEN

Line 881: insCtx := DBMS_XMLSave.newContext('BOM_RTG_OPER_RES_TEMP');

877:
878: -- Routing Operation Resources Table
879: IF (P_rtg_op_res_XML IS NOT NULL) THEN
880: -- get the context handle
881: insCtx := DBMS_XMLSave.newContext('BOM_RTG_OPER_RES_TEMP');
882: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
883: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
884: DBMS_XMLSave.setRowTag(insCtx , 'OperationResourcesVO');
885: -- this inserts the document

Line 882: DBMS_XMLSave.setIgnoreCase(insCtx, 1);

878: -- Routing Operation Resources Table
879: IF (P_rtg_op_res_XML IS NOT NULL) THEN
880: -- get the context handle
881: insCtx := DBMS_XMLSave.newContext('BOM_RTG_OPER_RES_TEMP');
882: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
883: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
884: DBMS_XMLSave.setRowTag(insCtx , 'OperationResourcesVO');
885: -- this inserts the document
886: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_res_XML);

Line 883: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');

879: IF (P_rtg_op_res_XML IS NOT NULL) THEN
880: -- get the context handle
881: insCtx := DBMS_XMLSave.newContext('BOM_RTG_OPER_RES_TEMP');
882: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
883: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
884: DBMS_XMLSave.setRowTag(insCtx , 'OperationResourcesVO');
885: -- this inserts the document
886: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_res_XML);
887: -- this closes the handle

Line 884: DBMS_XMLSave.setRowTag(insCtx , 'OperationResourcesVO');

880: -- get the context handle
881: insCtx := DBMS_XMLSave.newContext('BOM_RTG_OPER_RES_TEMP');
882: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
883: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
884: DBMS_XMLSave.setRowTag(insCtx , 'OperationResourcesVO');
885: -- this inserts the document
886: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_res_XML);
887: -- this closes the handle
888: DBMS_XMLSave.closeContext(insCtx);

Line 886: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_res_XML);

882: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
883: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
884: DBMS_XMLSave.setRowTag(insCtx , 'OperationResourcesVO');
885: -- this inserts the document
886: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_res_XML);
887: -- this closes the handle
888: DBMS_XMLSave.closeContext(insCtx);
889: END IF;
890:

Line 888: DBMS_XMLSave.closeContext(insCtx);

884: DBMS_XMLSave.setRowTag(insCtx , 'OperationResourcesVO');
885: -- this inserts the document
886: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_res_XML);
887: -- this closes the handle
888: DBMS_XMLSave.closeContext(insCtx);
889: END IF;
890:
891: -- Routing Substitute Operation Resources Table
892: IF (p_rtg_sub_op_res_XML IS NOT NULL) THEN

Line 894: insCtx := DBMS_XMLSave.newContext('BOM_SUB_OPER_RESOURCES_TEMP');

890:
891: -- Routing Substitute Operation Resources Table
892: IF (p_rtg_sub_op_res_XML IS NOT NULL) THEN
893: -- get the context handle
894: insCtx := DBMS_XMLSave.newContext('BOM_SUB_OPER_RESOURCES_TEMP');
895: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
896: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
897: DBMS_XMLSave.setRowTag(insCtx , 'SubstituteOperationResourcesVO');
898: -- this inserts the document

Line 895: DBMS_XMLSave.setIgnoreCase(insCtx, 1);

891: -- Routing Substitute Operation Resources Table
892: IF (p_rtg_sub_op_res_XML IS NOT NULL) THEN
893: -- get the context handle
894: insCtx := DBMS_XMLSave.newContext('BOM_SUB_OPER_RESOURCES_TEMP');
895: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
896: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
897: DBMS_XMLSave.setRowTag(insCtx , 'SubstituteOperationResourcesVO');
898: -- this inserts the document
899: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_sub_op_res_XML);

Line 896: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');

892: IF (p_rtg_sub_op_res_XML IS NOT NULL) THEN
893: -- get the context handle
894: insCtx := DBMS_XMLSave.newContext('BOM_SUB_OPER_RESOURCES_TEMP');
895: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
896: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
897: DBMS_XMLSave.setRowTag(insCtx , 'SubstituteOperationResourcesVO');
898: -- this inserts the document
899: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_sub_op_res_XML);
900: -- this closes the handle

Line 897: DBMS_XMLSave.setRowTag(insCtx , 'SubstituteOperationResourcesVO');

893: -- get the context handle
894: insCtx := DBMS_XMLSave.newContext('BOM_SUB_OPER_RESOURCES_TEMP');
895: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
896: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
897: DBMS_XMLSave.setRowTag(insCtx , 'SubstituteOperationResourcesVO');
898: -- this inserts the document
899: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_sub_op_res_XML);
900: -- this closes the handle
901: DBMS_XMLSave.closeContext(insCtx);

Line 899: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_sub_op_res_XML);

895: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
896: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
897: DBMS_XMLSave.setRowTag(insCtx , 'SubstituteOperationResourcesVO');
898: -- this inserts the document
899: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_sub_op_res_XML);
900: -- this closes the handle
901: DBMS_XMLSave.closeContext(insCtx);
902: END IF;
903:

Line 901: DBMS_XMLSave.closeContext(insCtx);

897: DBMS_XMLSave.setRowTag(insCtx , 'SubstituteOperationResourcesVO');
898: -- this inserts the document
899: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_sub_op_res_XML);
900: -- this closes the handle
901: DBMS_XMLSave.closeContext(insCtx);
902: END IF;
903:
904: -- Routing Operation Networks Table
905: IF (P_rtg_op_network_XML IS NOT NULL) THEN

Line 907: insCtx := DBMS_XMLSave.newContext('BOM_OPER_NETWORKS_TEMP');

903:
904: -- Routing Operation Networks Table
905: IF (P_rtg_op_network_XML IS NOT NULL) THEN
906: -- get the context handle
907: insCtx := DBMS_XMLSave.newContext('BOM_OPER_NETWORKS_TEMP');
908: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
909: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
910: DBMS_XMLSave.setRowTag(insCtx , 'OperationNetworksVO');
911: -- this inserts the document

Line 908: DBMS_XMLSave.setIgnoreCase(insCtx, 1);

904: -- Routing Operation Networks Table
905: IF (P_rtg_op_network_XML IS NOT NULL) THEN
906: -- get the context handle
907: insCtx := DBMS_XMLSave.newContext('BOM_OPER_NETWORKS_TEMP');
908: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
909: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
910: DBMS_XMLSave.setRowTag(insCtx , 'OperationNetworksVO');
911: -- this inserts the document
912: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_network_XML);

Line 909: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');

905: IF (P_rtg_op_network_XML IS NOT NULL) THEN
906: -- get the context handle
907: insCtx := DBMS_XMLSave.newContext('BOM_OPER_NETWORKS_TEMP');
908: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
909: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
910: DBMS_XMLSave.setRowTag(insCtx , 'OperationNetworksVO');
911: -- this inserts the document
912: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_network_XML);
913: -- this closes the handle

Line 910: DBMS_XMLSave.setRowTag(insCtx , 'OperationNetworksVO');

906: -- get the context handle
907: insCtx := DBMS_XMLSave.newContext('BOM_OPER_NETWORKS_TEMP');
908: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
909: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
910: DBMS_XMLSave.setRowTag(insCtx , 'OperationNetworksVO');
911: -- this inserts the document
912: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_network_XML);
913: -- this closes the handle
914: DBMS_XMLSave.closeContext(insCtx);

Line 912: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_network_XML);

908: DBMS_XMLSave.setIgnoreCase(insCtx, 1);
909: DBMS_XMLSave.setDateFormat(insCtx, 'yyyy-MM-dd HH:mm:ss');
910: DBMS_XMLSave.setRowTag(insCtx , 'OperationNetworksVO');
911: -- this inserts the document
912: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_network_XML);
913: -- this closes the handle
914: DBMS_XMLSave.closeContext(insCtx);
915: END IF;
916:

Line 914: DBMS_XMLSave.closeContext(insCtx);

910: DBMS_XMLSave.setRowTag(insCtx , 'OperationNetworksVO');
911: -- this inserts the document
912: rows := DBMS_XMLSave.insertXML(insCtx,P_rtg_op_network_XML);
913: -- this closes the handle
914: DBMS_XMLSave.closeContext(insCtx);
915: END IF;
916:
917: OPEN rtg_hdr_CUR;
918: LOOP