Thursday, December 27, 2018

How to check value(if it is null or not) in processFormRequest

How to check value(if it is null or not) in processFormRequest
if (pageContext.getParameter("ApplyBtn") != null){

         OAViewObject voh = (OAViewObject)am.findViewObject("XxVO1");
         try {
             voh.getCurrentRow().getAttribute("XxColumnName").toString();
         } catch (NullPointerException e) {
             throw new OAException("XxColumnName Name is Required", OAException.ERROR);
         }
}

Monday, December 17, 2018

Creating Lookup and Lookup Values through API

Creating Lookup and Lookup Values through API
DECLARE
   err_code    VARCHAR2 (50);
   err_msg     VARCHAR2 (1000);
   ln_rowid    ROWID;
   ln_rowid1   ROWID;

   CURSOR C
   IS
        SELECT   CODE, NAMES
          FROM   XX_TABLE_NAME
         WHERE   LINE_STATUS <> 'INSERTED' OR LINE_STATUS IS NULL
      ORDER BY   1;
BEGIN
   fnd_lookup_types_pkg.insert_row (
      x_rowid                 => ln_rowid,
      x_lookup_type           => 'XX_TYPE',                      --Lookup Type
      x_security_group_id     => 0,                        --Security Group Id
      x_view_application_id   => 3,                  -- Application Id (0-AOL)
      x_application_id        => 50000,              -- Application Id (0-AOL)
      x_customization_level   => 'U',                                   --User
      x_meaning               => 'XX_MEANING',            --Meaning for Lookup
      x_description           => 'XX_DESCRIPTION',    --Description for Lookup
      x_creation_date         => SYSDATE,
      x_created_by            => -1,
      x_last_update_date      => SYSDATE,
      x_last_updated_by       => -1,
      x_last_update_login     => -1
   );


   FOR REC IN C
   LOOP
      BEGIN
         fnd_lookup_values_pkg.insert_row (
            x_rowid                 => ln_rowid1,
            x_lookup_type           => 'XX_TYPE',
            x_security_group_id     => 0,
            x_view_application_id   => 3,
            x_lookup_code           => rec.code,
            x_tag                   => NULL,
            x_attribute_category    => NULL,
            x_attribute1            => NULL,
            x_attribute2            => NULL,
            x_attribute3            => NULL,
            x_attribute4            => NULL,
            x_enabled_flag          => 'Y',
            x_start_date_active     => TO_DATE ('01-DEC-2015', 'DD-MON-YYYY'),
            x_end_date_active       => NULL,
            x_territory_code        => NULL,
            x_attribute5            => NULL,
            x_attribute6            => NULL,
            x_attribute7            => NULL,
            x_attribute8            => NULL,
            x_attribute9            => NULL,
            x_attribute10           => NULL,
            x_attribute11           => NULL,
            x_attribute12           => NULL,
            x_attribute13           => NULL,
            x_attribute14           => NULL,
            x_attribute15           => NULL,
            x_meaning               => REC.NAMES,             --Lookup Meaning
            x_description           => REC.NAMES,
            x_creation_date         => SYSDATE,
            x_created_by            => -1,
            x_last_update_date      => SYSDATE,
            x_last_updated_by       => -1,
            x_last_update_login     => -1
         );

         UPDATE   XX_TABLE_NAME
            SET   LINE_STATUS = 'INSERTED', ERROR_TEXT = ''
          WHERE   CODE = rec.CODE;

         COMMIT;
      EXCEPTION
         WHEN OTHERS
         THEN
            ROLLBACK;

            err_code := SQLCODE;
            err_msg := SUBSTR (SQLERRM, 1, 200);

            UPDATE   XX_TABLE_NAME
               SET   LINE_STATUS = 'ERROR',
                     ERROR_TEXT = err_code || ':' || err_msg
             WHERE   CODE = rec.CODE;

            COMMIT;

            DBMS_OUTPUT.put_line (SQLERRM);
      END;
   END LOOP;
END;

Friday, November 30, 2018

Popup Regions in R12.1.2 for Jdeveloper 10g OAF

Our objective is when a user hover its mouse over Employee name field a popup window will open that shows the details of that employee.


Step 1

For this we will create a query view of Employee name it as EmployeePopupVO for our popup region. After this create an external region with AM definition inside webui package as shown below name it as EmpSummaryPopupRN.



Step 2

Now in our EmployeeSearchPG page we will create a new flowLayout region and drag our EmpName messageStyleText field into it.



Step 3

Now under this flowLayout region EmpNameLayout we will create a region of style popup and set Region property to above external region (EmpSummaryPopupRN, created in Step1) name it as EmpSummaryPopup.






Now for the popup region to come up as soon as a user hover over EmpName field we need to set some properties of this field like


ID : Empname
Popup ID : EmpSummaryPopup
Popup Render Event : onHover
Popup Enable : True



After completing this run your page and hover over EmpName field you will see a new popup window coming on to your page as shown in starting of this article.

Tuesday, October 2, 2018

PO_UNIQUE_IDENTIFIER_CONT_ALL

PO_UNIQUE_IDENTIFIER_CONT_ALL
PO_UNIQUE_IDENTIFIER_CONT_ALL stores information about the current, highest, system-generated numbers for the Oracle Purchasing tables that require special sequencing. You need one row for each sequentially system-generated number for each organization. The table includes rows for each of the following: purchase orders, requisitions, receipts, suppliers, quotations, and requests for quotations (RFQs). . For each organization, there are four rows for each of the following entities: PO_HEADERS_ALL, PO_REQUISITION_HEADERS_ALL, PO_HEADERS_RFQ and PO_HEADERS_QUOTE. There are two rows corresponding to the entities PO_VENDORS and RCV_SHIPMENT_HEADERS. . The information for the quotation and RFQ sub-entities is associated with the PO_HEADERS_ALL table entity. TABLE_NAME values for quotations and RFQs are 'PO_HEADERS_QUOTE' and 'PO_HEADERS_RFQ' respectively. . .

Thursday, September 6, 2018

Registering Table through API in Oracle apps r12

Registering Table through API in Oracle apps r12
BEGIN
AD_DD.REGISTER_TABLE ('FND','XXCUST_KFF_DEMO','T');
END;
/
BEGIN
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','CODE_COMBINATION_ID', 1, 'NUMBER', 38, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','ID_FLEX_NUM', 2, 'NUMBER', 38, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT1', 3, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT2', 4, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT3', 5, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT4', 6, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT5', 7, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT6', 8, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT7', 9, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT8', 10, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT9', 11, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT10', 12, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT11', 13, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT12', 14, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT13', 15, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT14', 16, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT15', 17, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT16', 18, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT17', 19, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT18', 20, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT19', 21, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT20', 22, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT21', 23, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT22', 24, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT23', 25, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT24', 26, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT25', 27, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT26', 28, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT27', 29, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT28', 30, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT29', 31, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SEGMENT30', 32, 'VARCHAR2', 100, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','SUMMARY_FLAG', 33, 'VARCHAR2', 1, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','ENABLED_FLAG', 34, 'VARCHAR2', 1, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','START_DATE_ACTIVE', 35, 'DATE', 9, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','END_DATE_ACTIVE', 36, 'DATE', 9, 'Y', 'N');
-- WHO Columns
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','CREATED_BY', 37, 'NUMBER', 38, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','CREATION_DATE', 38, 'DATE', 9, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','LAST_UPDATED_BY', 39, 'NUMBER', 38, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','LAST_UPDATE_DATE', 40, 'DATE', 9, 'Y', 'N');
AD_DD.REGISTER_COLUMN ('FND', 'XXCUST_KFF_DEMO','LAST_UPDATE_LOGIN', 41, 'NUMBER', 38, 'Y', 'N');
END;
/

Wednesday, July 11, 2018

PAY_ELEMENT_LINK_API.delete_element_link

PAY_ELEMENT_LINK_API.delete_element_link
DECLARE
   l_effective_start_date   DATE;
   l_effective_end_date     DATE;
   l_entries_warning        BOOLEAN;

   CURSOR c1
   IS
      SELECT   *
        FROM   hr.pay_element_links_f
       WHERE   ELEMENT_LINK_ID IN (SELECT   ELEMENT_LINK_ID FROM TMP_TABLE);
BEGIN
   FOR r1 IN c1
   LOOP
      PAY_ELEMENT_LINK_API.delete_element_link (
         p_effective_date          => R1.EFFECTIVE_START_DATE,
         p_element_link_id         => r1.ELEMENT_LINK_ID,
         p_datetrack_delete_mode   => 'ZAP',
         p_object_version_number   => R1.object_version_number,
         p_effective_start_date    => l_effective_start_date,
         p_effective_end_date      => l_effective_end_date,
         p_entries_warning         => l_entries_warning
      );

      DBMS_OUTPUT.PUT_LINE ('DELETED');
   END LOOP;

   COMMIT;
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.PUT_LINE ('ERROR' || '     ' || SQLERRM);
END;

Thursday, July 5, 2018

hr_sit_api.create_sit

hr_sit_api.create_sit
DECLARE
   err_code                         varchar2 (50);
   err_msg                          varchar2 (1000);
   lv_pea_object_version_number     NUMBER;
   lv_analysis_criteria_id          NUMBER;
   lv_person_analysis_criteria_id   NUMBER;

   CURSOR EMP_DETAIL
   IS
      SELECT   *
        FROM   ---TMP_SIT_TABLE
       WHERE       SIT_NAME = :SIT_NAME
               AND (status <> 'U' OR STATUS IS NULL);
BEGIN
   FOR REC IN EMP_DETAIL
   LOOP
      BEGIN
         hr_sit_api.create_sit (
            p_validate                    => FALSE,
            p_effective_date              => SYSDATE,
            p_person_id                   => rec.PERSON_ID,
            p_pea_object_version_number   => lv_pea_object_version_number,
            p_business_group_id           => ---101,
            p_id_flex_num                 => -----50284,
            p_analysis_criteria_id        => lv_analysis_criteria_id,
            p_person_analysis_id          => lv_person_analysis_criteria_id,
            p_date_from                   => TO_DATE (rec.SEGMENT1,
                                                      'DD-MON-RRRR'),
            p_date_to                     => TO_DATE (rec.SEGMENT2,
                                                      'DD-MON-RRRR'), --=> NULL,
            p_segment1                    => TO_CHAR (rec.SEGMENT1,
                                                      'YYYY/MM/DD HH24:MI:SS'),
            p_segment2                    => TO_CHAR (rec.SEGMENT2,
                                                      'YYYY/MM/DD HH24:MI:SS'),
            p_segment3                    => rec.segment3,
            p_segment4                    => rec.segment4,
            p_segment5                    => rec.segment5,
            p_segment6                    => TO_CHAR (rec.SEGMENT6,
                                                      'YYYY/MM/DD HH24:MI:SS'),
            p_segment7                    => rec.segment7,
            p_segment8                    => rec.segment8,
            p_segment9                    => rec.segment9,
            p_segment10                   => rec.segment10,
            p_segment11                   => rec.segment11,
            p_segment12                   => rec.segment12,
            p_segment13                   => rec.segment13,
            p_segment14                   => rec.segment14,
            p_segment15                   => rec.segment15,
            p_segment16                   => rec.segment16,
            p_segment17                   => rec.segment17,
            p_segment18                   => rec.segment18,
            p_segment19                   => rec.segment19,
            p_segment20                   => rec.segment20,
            p_segment21                   => rec.segment21,
            p_segment22                   => rec.segment22,
            p_segment23                   => rec.segment23,
            p_segment24                   => rec.segment24,
            p_segment25                   => rec.segment25,
            p_segment26                   => rec.segment26,
            p_segment27                   => TO_CHAR (rec.SEGMENT27,
                                                      'YYYY/MM/DD HH24:MI:SS'),
            p_segment28                   => rec.segment28,
            p_segment29                   => rec.segment29,
            p_segment30                   => rec.segment30
         );

         COMMIT;

         UPDATE   ----TMP_SIT_TABLE
            SET   ANALYSIS_CRITERIA_ID = lv_analysis_criteria_id,
                  PERSON_ANALYSIS_ID = lv_person_analysis_criteria_id,
                  status = 'U',
                  ERROR_TEXT = 'No Error'
          WHERE   employee_number = rec.employee_number
                  AND srl_no = rec.srl_no;

         COMMIT;
      EXCEPTION
         WHEN OTHERS
         THEN
            ROLLBACK;

            err_code := SQLCODE;
            err_msg := SUBSTR (SQLERRM, 1, 200);

            UPDATE   ----TMP_SIT_TABLE
               SET   status = 'E', ERROR_TEXT = err_code || ':' || err_msg
             WHERE   employee_number = rec.employee_number
                     AND srl_no = rec.srl_no;

            COMMIT;

            DBMS_OUTPUT.put_line (' Error Msg:  ' || SQLERRM);
      END;
   END LOOP;
END;

hr_sit_api.delete_sit

hr_sit_api.delete_sit
DECLARE
   CURSOR c1
   IS
      SELECT   PERSON_ANALYSIS_ID, OBJECT_VERSION_NUMBER
        FROM   PER_PERSON_ANALYSES
       WHERE   TRUNC (CREATION_DATE) = TRUNC (SYSDATE);
BEGIN
   FOR r1 IN c1
   LOOP
      hr_sit_api.delete_sit (
         p_person_analysis_id          => r1.PERSON_ANALYSIS_ID,
         p_pea_object_version_number   => r1.OBJECT_VERSION_NUMBER,
         p_validate                    => FALSE
      );
   END LOOP;

   COMMIT;
END;

Monday, July 2, 2018

Create Person Phone in Oracle apps HRMS

Create Person Phone in Oracle apps HRMS
Create Person Phone in Oracle apps HRMS:

Sample code:


DECLARE

   err_code                  VARCHAR2 (50);
   err_msg                   VARCHAR2 (1000);
   l_phone_id                per_phones.phone_id%TYPE;
   l_object_version_number   per_phones.object_version_number%TYPE;

   CURSOR EMP_PHONE
   IS

      SELECT   PHONE_NUMBER,
               EMPLOYEE_NUMBER,
               PERSON_ID,
               SR
        FROM   --- temporary_phone_table
       WHERE   PERSON_ID IS NOT NULL AND LINE_STATUS <> 'INSERTED' OR LINE_STATUS IS NULL;

BEGIN

   FOR REC IN EMP_PHONE

   LOOP

      BEGIN

         hr_phone_api.create_phone (
            p_date_from               => TRUNC (SYSDATE),
            p_date_to                 => NULL,
            p_phone_type              => 'M',
            p_phone_number            => REC.PHONE_NUMBER,
            p_parent_id               => REC.PERSON_ID,
            p_parent_table            => 'PER_ALL_PEOPLE_F',
            p_validate                => FALSE,
            p_effective_date          => SYSDATE,
            p_object_version_number   => l_object_version_number,
            p_phone_id                => l_phone_id
         );

         UPDATE   ----temporary_phone_table
            SET   PHONE_ID = l_phone_id,
                  LINE_STATUS = 'INSERTED',
                  ERROR_TEXT = ''
          WHERE   EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND SR = rec.SR;

         COMMIT;

      EXCEPTION
         WHEN OTHERS
         THEN
            ROLLBACK;

            err_code := SQLCODE;
            err_msg := SUBSTR (SQLERRM, 1, 200);

            UPDATE   ----temporary_phone_table
               SET   LINE_STATUS = 'ERROR',
                     ERROR_TEXT = err_code || ':' || err_msg
             WHERE   EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND SR = rec.SR;

            COMMIT;

            DBMS_OUTPUT.put_line (SQLERRM);

      END;

   END LOOP;

END;

Finding dates against day name in a specific month in Oracle Pl/sql

Finding dates against day name in a specific month in Oracle Pl/sql

  SELECT   A.LEV, MONTH_DATE, DAY_NAME
    FROM   (    SELECT   LEVEL LEV,
                         TO_DATE (
                            TO_CHAR (LEVEL, '09')
                            || (SELECT   TO_CHAR (TO_DATE (:DATE1, 'DD-MON-RRRR'),
                                                  'MM')
                                  FROM   DUAL)
                            || (SELECT   TO_CHAR (TO_DATE (:DATE1, 'DD-MON-RRRR'),
                                                  'RRRR')
                                  FROM   DUAL),
                            'dd.mm.yyyy'
                         )
                            month_date,
                         TRIM(UPPER(TO_CHAR (
                                       TO_DATE (
                                          TO_CHAR (LEVEL, '09')
                                          || (SELECT   TO_CHAR (
                                                          TO_DATE (:DATE1,
                                                                   'DD-MON-RRRR'),
                                                          'MM'
                                                       )
                                                FROM   DUAL)
                                          || (SELECT   TO_CHAR (
                                                          TO_DATE (:DATE1,
                                                                   'DD-MON-RRRR'),
                                                          'RRRR'
                                                       )
                                                FROM   DUAL),
                                          'dd.mm.yyyy'
                                       ),
                                       'DAY'
                                    )))
                            DAY_NAME
                  FROM   DUAL
                 WHERE   ROWNUM <= EXTRACT (DAY FROM LAST_DAY (:DATE1))
            CONNECT BY   LEVEL = ROWNUM) A
   WHERE   A.DAY_NAME = 'SATURDAY'
ORDER BY   1

Sunday, July 1, 2018

Create Person Address (Temporary) in Oracle apps HRMS

Create Person Address (Temporary) in Oracle apps HRMS
Create Person Address (Temporary) in Oracle apps HRMS:


Sample Code:

DECLARE
   err_code                   VARCHAR2 (50);
   err_msg                    VARCHAR2 (1000);
   ln_address_id              PER_ADDRESSES.ADDRESS_ID%TYPE;
   ln_object_version_number   PER_ADDRESSES.OBJECT_VERSION_NUMBER%TYPE;
   V_COUNT                    NUMBER (5);

   CURSOR EMP_ADD
   IS
      SELECT T.ADDRESS_LINE1,
             T.TOWN_OR_CITY,
             T.COUNTRY,
             T.ADDR_ATTRIBUTE1,
             T.ADDR_ATTRIBUTE2,
             T.ADDR_ATTRIBUTE3,
             PERSON_ID,
             EMPLOYEE_NUMBER,
             SR
        FROM temporary_address_table T
       WHERE     PRIMARY_FLAG = 'N'
             AND ADDRESS_ID IS NULL
             AND PERSON_ID IS NOT NULL
             AND (LINE_STATUS NOT IN ('I', 'U') OR LINE_STATUS IS NULL);

BEGIN
   FOR REC IN EMP_ADD
   LOOP
      BEGIN
         SELECT COUNT (*)
           INTO V_COUNT
           FROM PER_ADDRESSES
          WHERE PERSON_ID = rec.person_id AND PRIMARY_FLAG = 'N';

         IF V_COUNT = 0
         THEN
            hr_person_address_api.create_person_address (
               p_effective_date          => TRUNC (SYSDATE),
               --            P_PRADD_OVLAPVAL_OVERRIDE   => FALSE,

               --            P_VALIDATE_COUNTY           => TRUE,

               p_person_id               => rec.person_id,
               p_primary_flag            => 'N',
               p_style                   => 'PK_GLB',
               p_date_from               => TRUNC (SYSDATE),
               p_address_line1           => REC.ADDRESS_LINE1,
               p_addr_attribute1         => REC.ADDRESS_LINE1,
               p_town_or_city            => REC.TOWN_OR_CITY,
               p_addr_attribute2         => REC.TOWN_OR_CITY,
               p_addr_attribute3         => 'Pakistan',
               p_country                 => 'PK',
               p_address_id              => ln_address_id,
               p_object_version_number   => ln_object_version_number);

            COMMIT;

            UPDATE temporary_address_table
               SET ADDRESS_ID = ln_address_id,
                   LINE_STATUS = 'I',
                   ERROR_TEXT = ''
             WHERE EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND sr = rec.sr;

            COMMIT;
         ELSE
            NULL;
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            ROLLBACK;
            err_code := SQLCODE;
            err_msg := SUBSTR (SQLERRM, 1, 200);

            UPDATE temporary_address_table
               SET LINE_STATUS = 'E', ERROR_TEXT = err_code || ':' || err_msg
             WHERE EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND sr = rec.sr;

            COMMIT;
            DBMS_OUTPUT.put_line (SQLERRM);
      END;
   END LOOP;
END;

Create Person Address (Permanent) in Oracle apps HRMS

Create Person Address (Permanent) in Oracle apps HRMS
Create Person Address (Permanent) in Oracle apps HRMS:

Sample Code:

DECLARE
   err_code                   VARCHAR2 (50);
   err_msg                    VARCHAR2 (1000);
   ln_address_id              PER_ADDRESSES.ADDRESS_ID%TYPE;
   ln_object_version_number   PER_ADDRESSES.OBJECT_VERSION_NUMBER%TYPE;

   CURSOR EMP_ADD
   IS
      SELECT   T.ADDRESS_LINE1,
               T.TOWN_OR_CITY,
               T.COUNTRY,
               T.ADDR_ATTRIBUTE1,
               T.ADDR_ATTRIBUTE2,
               T.ADDR_ATTRIBUTE3,
               PERSON_ID,
               EMPLOYEE_NUMBER,
               SR
        FROM   temporary_address_table T
       WHERE   LINE_STATUS NOT IN ('I', 'U')
               OR    LINE_STATUS IS NULL
                 AND ADDRESS_ID IS NULL
                 AND PRIMARY_FLAG = 'Y';
BEGIN
   FOR REC IN EMP_ADD
   LOOP
      BEGIN
         hr_person_address_api.create_person_address (
            p_effective_date          => TRUNC (SYSDATE),
            --            P_PRADD_OVLAPVAL_OVERRIDE   => FALSE,
            --            P_VALIDATE_COUNTY           => TRUE,
            p_person_id               => rec.person_id,
            p_primary_flag            => 'Y',
            p_style                   => 'PK_GLB',
            p_date_from               => TRUNC (SYSDATE),
            p_address_line1           => REC.ADDRESS_LINE1,
            p_addr_attribute1         => REC.ADDRESS_LINE1,
            p_town_or_city            => REC.TOWN_OR_CITY,
            p_addr_attribute2         => REC.TOWN_OR_CITY,
            p_addr_attribute3         => 'Pakistan',
            p_country                 => 'PK',
            p_address_id              => ln_address_id,
            p_object_version_number   => ln_object_version_number
         );

         COMMIT;

         UPDATE   temporary_address_table
            SET   ADDRESS_ID = ln_address_id,
                  LINE_STATUS = 'I',
                  ERROR_TEXT = ''
          WHERE   EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND sr = rec.sr;

         COMMIT;
      EXCEPTION
         WHEN OTHERS
         THEN
            ROLLBACK;
            err_code := SQLCODE;
            err_msg := SUBSTR (SQLERRM, 1, 200);

            UPDATE   temporary_address_table
               SET   LINE_STATUS = 'E',
                     ERROR_TEXT = err_code || ':' || err_msg
             WHERE   EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND sr = rec.sr;

            COMMIT;
            DBMS_OUTPUT.put_line (SQLERRM);
      END;
   END LOOP;
END;