Tuesday, October 24, 2017

API to Create Element Entry in Oracle HRMS

DECLARE

CURSOR cur_input_name (p_ele_name    varchar2)
  is
    SELECT piv.display_sequence
          ,piv.name
          ,piv.element_type_id
      FROM pay_element_types_f_tl petl
          ,pay_element_types_f    pet
          ,pay_input_values_f     piv
     WHERE petl.element_name   = p_ele_name
       AND petl.LANGUAGE       = 'US'
       AND pet.element_type_id = petl.element_type_id
       AND piv.element_type_id = pet.element_type_id
  ORDER BY piv.display_sequence;
 
   ln_element_link_id               pay_element_links_f.element_link_id%TYPE;
   ld_effective_start_date          DATE;
   ld_effective_end_date            DATE;
   ln_element_entry_id              pay_element_entries_f.element_entry_id%TYPE;
   ln_object_version_number         pay_element_entries_f.object_version_number%TYPE;
   lb_create_warning                BOOLEAN;
   ln_screen_entry_value               pay_element_entry_values_f.screen_entry_value%TYPE;
   ln_element_type_id               pay_element_types_f.element_type_id%TYPE;
   ln_input_value_id1               pay_input_values_f.input_value_id%TYPE;
   ln_input_value_id2               pay_input_values_f.input_value_id%TYPE;
   ln_input_value_id                pay_input_values_f.input_value_id%TYPE;
   ln_element_type_id               pay_element_types_f.element_type_id%TYPE;
   ln_assignment_id                 NUMBER := 123456789;
   lc_element_name                  pay_element_types_f.element_name%TYPE := 'Test Element';
-- 
BEGIN
--
   --
   SAVEPOINT sv_create_element;

   -- Get the element type id
   SELECT tl.element_type_id
     INTO ln_element_type_id
     FROM pay_element_types_f_tl tl
         ,pay_element_types_f    t
    WHERE tl.element_name = lc_element_name
      AND LANGUAGE = 'US'
      AND t.element_type_id = tl.element_type_id
      AND TRUNC(SYSDATE) BETWEEN t.effective_start_date AND t.effective_end_date;

   -- You can have upto many more input values depending on the element setup, proceed accordingly
   FOR rec_input_name IN cur_input_name (lc_element_name )
   LOOP

      SELECT piv.input_value_id
        INTO ln_input_value_id
        FROM pay_input_values_f    piv
       WHERE piv.element_type_id = rec_input_name.element_type_id
         AND piv.name            = rec_input_name.name
        ;
      IF rec_input_name.display_sequence = 1 THEN  -- AK Value     
         ln_input_value_id1 := ln_input_value_id;    
      ELSIF rec_input_name.display_sequence = 2 THEN  -- Employee Rate    
         ln_input_value_id2 := ln_input_value_id;
      END IF;
    --
    end loop;

 
    -- Get Element Link Id
    -- ------------------------------
    ln_element_link_id :=  hr_entry_api.get_link
                                             (p_assignment_id     => ln_assignment_id,
                                              p_element_type_id   => ln_element_type_id,
                                              p_session_date  => TRUNC(SYSDATE)
                                              );

       dbms_output.put_line( '  API: Element Link Id: ' || ln_element_link_id );

       -- Create Element Entry
       -- ------------------------------
       pay_element_entry_api.create_element_entry
         (     -- Input data elements
               -- -----------------------------
               p_validate               => FALSE,
               p_effective_date         => TO_DATE('01-JAN-2015','DD-MON-YYYY'),
               p_business_group_id      => fnd_profile.value('PER_BUSINESS_GROUP_ID'),
               p_assignment_id             => ln_assignment_id,
               p_element_link_id           => ln_element_link_id,
               p_entry_type             => 'E',
               p_input_value_id1          => ln_input_value_id1,
               p_entry_value1           => NULL,
               p_input_value_id2           => ln_input_value_id2,
               p_entry_value2           => 4,
               -- Output data elements
               -- --------------------------------
               p_effective_start_date   => ld_effective_start_date,
               p_effective_end_date        => ld_effective_end_date,
               p_element_entry_id       => ln_element_entry_id,
               p_object_version_number  => ln_object_version_number,
               p_create_warning         => lb_create_warning
         );

     dbms_output.put_line( '  API: pay_element_entry_api.create_element_entry successfull - Element Entry Id: ' || ln_element_entry_id );

--rollback;
COMMIT;

EXCEPTION
   WHEN OTHERS THEN
      dbms_output.put_line('Error: '||SQLERRM);
      ROLLBACK TO sv_create_element;
END;
/

No comments:

Post a Comment

Query to get the Concurrent Program along with Value Set details

SELECT fcpl1.user_concurrent_program_name       ,fdfcuv.end_user_column_name       ,ffvs.flex_value_set_name value_set_name       ,ffvt.appl...