Monday, 13 November 2017

Oracle Inventory Item Master API

CREATE OR REPLACE PROCEDURE APPS.xx_item_master_upload_api
--(errbuf out varchar2, rectcode out varchar2)
AS
   l_verify_flag         VARCHAR2 (3);
   l_error_message       VARCHAR2 (2500);
   l_count               NUMBER (2);
   l_category_set_id     NUMBER (20);
   l_category_id         NUMBER (20);
   l_org_id              NUMBER (4);
   l_template_name       VARCHAR2 (250);
   l_uom                 VARCHAR2 (20);
   l_item_type           VARCHAR2 (20);
   l_organization_id     NUMBER (10);
   l_organization_code   VARCHAR2 (10);

   CURSOR c1
   IS
      SELECT *
        FROM xxx_item_master_stg;
BEGIN
   FOR c_rec IN c1
   LOOP
      l_verify_flag := 'Y';
      l_error_message := NULL;
      l_count := 0;

      BEGIN
         SELECT organization_id, organization_code
           INTO l_organization_id, l_organization_code
           FROM org_organization_definitions
          WHERE organization_code = 'ABC'  --<Enter Your Inventory Org Code>
      EXCEPTION
         WHEN OTHERS
         THEN
            l_verify_flag := 'N';
            l_error_message := 'INVALID ORGANIZATION';
      END;

      BEGIN
         SELECT COUNT (*)
           INTO l_count
           FROM mtl_system_items_b
          WHERE segment1 = c_rec.segment1
            AND organization_id = l_organization_id;

         IF l_count > 0
         THEN
            l_verify_flag := 'N';
            l_error_message := 'ITEM ALREADY EXISTING';
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            NULL;
      END;

      IF c_rec.segment1 IS NULL
      THEN
         l_verify_flag := 'N';
         l_error_message := 'ITEM SEGMENT SHOULD NOT BE NULL';
      END IF;

      IF c_rec.description IS NULL
      THEN
         l_verify_flag := 'N';
         l_error_message := 'INVALID DESCRIPTION';
      END IF;

      BEGIN
         SELECT template_name
           INTO l_template_name
           FROM mtl_item_templates
          WHERE template_id = c_rec.template_id;
      EXCEPTION
         WHEN OTHERS
         THEN
            l_verify_flag := 'N';
            l_error_message := 'INVALID TEMPLATE NAME';
      END;

      BEGIN
         SELECT unit_of_measure
           INTO l_uom
           FROM mtl_units_of_measure
          WHERE uom_code = TRIM (c_rec.primary_unit_of_measure);
      /* Use Primary Unit Measure Code*/
      EXCEPTION
         WHEN OTHERS
         THEN
            l_verify_flag := 'N';
            l_error_message := 'INVALID UOM';
      END;

      IF l_verify_flag <> 'N'
      THEN
         BEGIN
            INSERT INTO mtl_system_items_interface
                        (segment1, description, primary_unit_of_measure,
                         process_flag, set_process_id, template_name,
                         organization_id, organization_code,
                         transaction_type, attribute_category,
                         attribute1, attribute2,
                         attribute3, attribute4,
                         attribute8, attribute9
                        )
                 VALUES (c_rec.segment1, c_rec.description, l_uom,
                         1, 1, l_template_name,
                         l_organization_id, l_organization_code,
                         'CREATE', c_rec.attribute_category,
                         c_rec.attribute1, c_rec.attribute2,
                         c_rec.attribute3, c_rec.attribute4,
                         c_rec.attribute8, c_rec.attribute9
                        );

            UPDATE xxx_item_master_stg
               SET verify_flag = 'Y'
             WHERE segment1 = c_rec.segment1;

            DBMS_OUTPUT.put_line ('ITEMS UPLOADED SUCCESSFULLY!');
         EXCEPTION
            WHEN OTHERS
            THEN
               l_error_message := SQLERRM;

               UPDATE xxx_item_master_stg
                  SET verify_flag = 'N',
                      error_message = l_error_message
                WHERE segment1 = c_rec.segment1;
         END;

         COMMIT;
      ELSE
         UPDATE xxx_item_master_stg
            SET verify_flag = 'N',
                error_message = l_error_message
          WHERE segment1 = c_rec.segment1;

         COMMIT;
      END IF;
   END LOOP;

   COMMIT;
END xx_item_master_upload_api;
/

Note:

After Items inserted in the Inventory Interface Table (mtl_system_items_interface), Run the concurrent Program  " Import Items". 

No comments:

Post a Comment