Tuesday 26 September 2017

Script to update natural account

CREATE OR REPLACE PROCEDURE XX_GL_EXTRACT_ENABLE_ACCOUNT AS

v_set_id    number;
v_position_account_type    number:=3;
v_acc_flex_value_set    varchar2(240):='XXX_COA_ACCOUNT'; /**Pass the COA name/
flex_value_exeception    EXCEPTION;
v_upd_count    number:=0;

BEGIN
 
   SELECT   flex_value_set_id
     INTO   v_set_id
     FROM   fnd_flex_value_sets
    WHERE   flex_value_set_name = v_acc_flex_value_set;


   IF v_set_id IS NULL
   THEN
      RAISE flex_value_exeception;
   END IF;



   IF v_set_id IS NOT NULL
   THEN
     
      SELECT   COUNT (v.flex_value)
        INTO   v_upd_count
        FROM   fnd_flex_hierarchies_tl h,
               fnd_flex_values v,
               fnd_flex_values_tl vt,
               gl_lookups l1,
               gl_lookups l2,
               gl_lookups l5
       WHERE       h.flex_value_set_id(+) = v_set_id
               AND h.hierarchy_id(+) = v.structured_hierarchy_level
               AND h.language(+) = USERENV ('LANG')
               AND v.flex_value_set_id = v_set_id
               AND vt.flex_value_id = v.flex_value_id + 0
               AND vt.language = USERENV ('LANG')
               AND v.enabled_flag = l1.lookup_code
               AND l1.lookup_type = 'YES/NO'
               AND v.summary_flag = l2.lookup_code
               AND l2.lookup_type = 'YES/NO'
               AND NVL (
                     SUBSTRB (
                           fnd_global.newline
                        || v.compiled_value_attributes
                        || fnd_global.newline,
                        INSTRB (
                              fnd_global.newline
                           || v.compiled_value_attributes
                           || fnd_global.newline,
                           fnd_global.newline,
                           1,
                           v_position_account_type
                        )
                        + 1,
                        1
                     ),
                     'A'
                  ) = l5.lookup_code(+)
               AND l5.lookup_type(+) = 'ACCOUNT TYPE'
               AND l5.lookup_code IN ('A', 'L', 'O');

      IF v_upd_count > 1
      THEN
         UPDATE   fnd_flex_values
            SET   attribute1 = 'Y', value_category = 'XXX_COA_ACCOUNT'
          WHERE   flex_value IN
                        (SELECT   v.flex_value
                           FROM   fnd_flex_hierarchies_tl h,
                                  fnd_flex_values v,
                                  fnd_flex_values_tl vt,
                                  gl_lookups l1,
                                  gl_lookups l2,
                                  gl_lookups l5
                          WHERE   h.flex_value_set_id(+) = v_set_id
                                  AND h.hierarchy_id(+) =
                                        v.structured_hierarchy_level
                                  AND h.language(+) = USERENV ('LANG')
                                  AND v.flex_value_set_id = v_set_id
                                  AND vt.flex_value_id = v.flex_value_id + 0
                                  AND vt.language = USERENV ('LANG')
                                  AND v.enabled_flag = l1.lookup_code
                                  AND l1.lookup_type = 'YES/NO'
                                  AND v.summary_flag = l2.lookup_code
                                  AND l2.lookup_type = 'YES/NO'
                                  AND NVL (
                                        SUBSTRB (
                                              fnd_global.newline
                                           || v.compiled_value_attributes
                                           || fnd_global.newline,
                                           INSTRB (
                                                 fnd_global.newline
                                              || v.compiled_value_attributes
                                              || fnd_global.newline,
                                              fnd_global.newline,
                                              1,
                                              v_position_account_type
                                           )
                                           + 1,
                                           1
                                        ),
                                        'A'
                                     ) = l5.lookup_code(+)
                                  AND l5.lookup_type(+) = 'ACCOUNT TYPE'
                                  AND l5.lookup_code IN ('A', 'L', 'O'));
      END IF;
   Commit;
   END IF;

   DBMS_OUTPUT.put_line (
      'Number of Records updated :' || TO_CHAR (v_upd_count)
   );
EXCEPTION
   WHEN flex_value_exeception
   THEN
      DBMS_OUTPUT.put_line('Unable to deriver flex value set id for the value set XXX_COA_ACCOUNT');
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line ('Error in updating DFF values for Natural account'
      );
END XX_GL_EXTRACT_ENABLE_ACCOUNT;
/


2 comments:

  1. Excellent blog I visit this blog it's really awesome. The important thing is that in this blog content written clearly and understandable.
    Oracle Fusion SCM Online Training
    Oracle Fusion Financials Online Training

    ReplyDelete
  2. Very educational blog. Thanks for posting this excellent blog

    Document Annotation software

    ReplyDelete