1. Get rid of all advertisements and get unlimited access to documents by upgrading to Premium Membership. Upgrade to Premium Now and also get a Premium Badge!

OLM - Course Insert API

Discussion in 'Oracle Apps Technical' started by fanni339, Dec 18, 2014.

  1. fanni339

    fanni339 Active Member

    Messages:
    6
    Likes Received:
    0
    Trophy Points:
    75
    Introduction

    While creating setup for OLM, there is requirement for creating cataloge objects. Course is of the main component for OLM Cataloge objects. Here in this article, i am explaining Course Creation API by providing a copy of working example for it.

    Background

    This article explain the creation of courses in Bulk by using Course Creation API.

    The code

    Staging Table Creation Script is here

    CREATE TABLE LSG_COURSE_DETAILS_TEMP
    (
    LINEID NUMBER,
    COURSE_NAME VARCHAR2(200 BYTE),
    COURSE_CODE VARCHAR2(100 BYTE),
    COURSE_DESC VARCHAR2(500 BYTE),
    INTENDED_AUDIENCE VARCHAR2(4000 BYTE),
    OBJECTIVES VARCHAR2(4000 BYTE),
    START_DATE DATE,
    END_DATE DATE,
    SUB_CATEGORY VARCHAR2(100 BYTE),
    CATEGORY VARCHAR2(100 BYTE),
    STATUS VARCHAR2(100 BYTE),
    ERROR_MESSAGE VARCHAR2(500 BYTE)
    );

    Course Creation API Script is here
    Code (SQL):


    DECLARE
         errbuf                      VARCHAR2(200);
          retcode                    VARCHAR2(200);
          p_business_group_id          NUMBER:= 83;
          p_validate                     VARCHAR2(10):= 'FALSE';
          l_activity_version_id     NUMBER;
          l_object_version_number   NUMBER;
          l_activity_id             NUMBER;
          l_error_msg               VARCHAR2 (1000);
          l_category_usage_id       NUMBER;
          l_validate                BOOLEAN;
          l_status                  VARCHAR2 (40);
          l_parent_activity_id      NUMBER;

          CURSOR c1
          IS
             SELECT *
               FROM lsg_course_details_temp
              WHERE 1=1
              AND (STATUS IS NULL );
       BEGIN

          FOR i IN c1
          LOOP
             BEGIN
                l_activity_id := NULL;
                l_category_usage_id := NULL;
                l_activity_version_id := NULL;
                l_object_version_number := NULL;
                l_error_msg := NULL;
                BEGIN
                SELECT activity_id, category_usage_id
                  INTO l_activity_id, l_category_usage_id
                  FROM ota_activity_definitions
                 WHERE UPPER (NAME) LIKE UPPER (i.SUB_CATEGORY) || '%';
                exception WHEN others THEN
                 dbms_output.put_line('Category '||i.SUB_CATEGORY|| ' not found');
                END;


                IF p_validate = 'TRUE'
                THEN
                   l_validate := TRUE;
                ELSE
                   l_validate := FALSE;
                END IF;

                BEGIN
                   ota_activity_version_api.create_activity_version
                             (p_validate                       => l_validate,
                              p_effective_date                 => i.start_date,
                              p_activity_id                    => l_activity_id,
                              p_version_name                   => initcap(i.course_name),
                              p_version_code                   => UPPER(i.course_code),
                              p_description                    => i.course_desc,
                              p_intended_audience              => i.intended_audience,
                              p_objectives                     => i.objectives,
                              p_start_date                     => NVL
                                                                     (i.start_date,
                                                                      '01-JAN-1995'
                                                                     ),
                              p_business_group_id              => p_business_group_id,
                              p_activity_version_id            => l_activity_version_id,
                              p_object_version_number          => l_object_version_number,
                              p_developer_organization_id      => p_business_group_id
                             );
                   DBMS_OUTPUT.put_line (   'l_activity_version_id:'|| l_activity_version_id||' Created under Category '||i.SUB_CATEGORY);
                                       

                   UPDATE lsg_course_details_temp
                      SET STATUS = 'CC',
                          error_message = ''
                    WHERE lineid = i.lineid;
                EXCEPTION
                   WHEN OTHERS
                   THEN
                      l_error_msg := l_error_msg || SUBSTR (SQLERRM, 1, 200);

                      UPDATE lsg_course_details_temp
                         SET STATUS = 'Error',
                             error_message = 'CREATING COURSES' || l_error_msg
                       WHERE lineid = i.lineid;

                      DBMS_OUTPUT.put_line (   'l_activity_version_id Ex:'|| l_activity_version_id ||' sqlerrm '||sqlerrm
                                           );
                END;

                l_error_msg := 'ACTIVITY_VERSION_ID' || l_activity_version_id;
                IF l_activity_version_id IS NOT NULL THEN --added by Farhan
                    BEGIN
                       ota_activity_category_api.create_act_cat_inclusion
                                 (p_validate                   => l_validate,
                                  p_effective_date             => NVL (i.start_date,
                                                                       '01-JAN-1995'
                                                                      ),
                                  p_activity_version_id        => l_activity_version_id,
                                  p_activity_category          => initcap(i.sub_CATEGORY),
                                  p_object_version_number      => l_object_version_number,
                                  p_primary_flag               => 'Y' ,
                                  p_category_usage_id          => l_category_usage_id
                                 );

                       UPDATE lsg_course_details_temp
                          SET STATUS = Uploaded,
                              error_message = ''
                        WHERE lineid = i.lineid;

                    EXCEPTION
                       WHEN OTHERS
                       THEN
                          l_error_msg := l_error_msg || SUBSTR (SQLERRM, 1, 200);

                          UPDATE lsg_course_details_temp
                             SET STATUS = 'Error',
                                 error_message = 'INCLUDING COURSES' || l_error_msg
                           WHERE lineid = i.lineid;
                    END;
                END IF;
             END;
          END LOOP;
       END ;