Monday, 11 January 2016

                                    eAM  - Asset Number Conversion

Asset Number:

An asset number uniquely identifies each asset.

Possible Validations:

  • Asset Number Mandatory.
  • Asset Serial Number Mandatory.
  • Asset Group Mandatory.
  • Asset Category Mandatory.
  • Owning Department Mandatory.
  • Criticality Code Mandatory.
  • Area Mandatory.
  • Wip Accounting Class Mandatory.

Code for reference:
PROCEDURE XXX_validate
   IS
      CURSOR cur_main
      IS
         SELECT *
           FROM xxx_stage —-Select all the records to be processed
         
      l_organization_id     NUMBER;
      l_inventory_item_id   NUMBER;
      l_asset_count         NUMBER;
      l_category_id         NUMBER;
      l_department_id       NUMBER;
      l_area_id             NUMBER;
      l_criticality_code    VARCHAR2 (10);
      l_class_code          VARCHAR2 (100);
      l_user_id             NUMBER;
      lc_cat_seg            VARCHAR2 (245);
   BEGIN
     
      FOR i IN cur_main
      LOOP
     ---Validate Category Set
         BEGIN
            SELECT category_concat_segs
              INTO lc_cat_seg
              FROM mtl_item_categories_v mic, mtl_system_items_b msi
             WHERE mic.category_set_name = :set_name                        
             AND mic.inventory_item_id = msi.inventory_item_id
               AND mic.organization_id = msi.organization_id
               AND msi.segment1 = i.asset_group
               AND msi.organization_id =i.organization_code);
                  END;

--To Validate Asset Group
        
            BEGIN
               SELECT inventory_item_id
                 INTO l_inventory_item_id
                 FROM mtl_system_items_b
                WHERE segment1 = i.asset_group
                  AND organization_id = l_organization_id;
            END;

            --Validate Asset category
            IF i.asset_category IS NOT NULL
            THEN
               BEGIN
                SELECT category_id
                 INTO l_category_id
                FROM mtl_categories_v
             WHERE UPPER (category_concat_segs)= (i.asset_category)
              AND structure_name = i.name            
              AND enabled_flag = 'Y';
               END;
            END IF;

            --Validate owning department
            BEGIN
               SELECT department_id
                 INTO l_department_id
                 FROM bom_departments
                WHERE UPPER (department_code) = (i.owning_department)
                 AND organization_id = l_organization_id
                  AND disable_date IS NULL;
           
            END;

            IF i.criticality IS NOT NULL
            THEN
               BEGIN
                  SELECT lookup_code
                    INTO l_criticality_code
                    FROM fnd_lookup_values
                   WHERE lookup_type = 'MTL_EAM_ASSET_CRITICALITY'
                     AND meaning = i.criticality
                     AND enabled_flag = 'Y';
               End;
            END IF;

            --Validate Area
            IF i.area IS NOT NULL
            THEN
               BEGIN
                  SELECT location_id
                    INTO l_area_id
                    FROM mtl_eam_locations
                   WHERE location_codes = i.area
                     AND organization_id = l_organization_id
                     AND end_date IS NULL;
              
               END;
            END IF;

            --Validate WIP Accounting Classe
            BEGIN
               SELECT class_code
                 INTO l_class_code
                 FROM wip_accounting_classes
                WHERE class_code = i.wip_accounting_class
                  AND organization_id = l_organization_id;
                              END;

         IF l_error_message IS NULL
           -- UPDATE  stage table with process flag as ‘V’
         END IF;
      END LOOP;

      COMMIT;
   END validate_asset_data;

PROCEDURE XXX_import (
   errbuff      OUT      VARCHAR2,
   retcode      OUT      NUMBER,
   p_batch_no   IN       NUMBER
)
IS
   CURSOR cur_main
   IS
      SELECT *
        FROM XXX_STG
       WHERE process_flag = 'V' AND batch_no = p_batch_no;

   l_error     VARCHAR2 (1000);
   l_user_id   NUMBER;
BEGIN
    FOR i IN cur_main
   LOOP
      l_error := NULL;

  BEGIN
   INSERT INTO mtl_eam_asset_num_interface
   (inventory_item_id, serial_number, last_update_date,
   last_updated_by, creation_date, created_by, descriptive_text,
   wip_accounting_class_code, maintainable_flag,
   owning_department_id, fa_asset_id,
   eam_location_id, asset_criticality_code,
   category_id, interface_header_id, batch_id, organization_code,
   fa_asset_number, location_codes, process_flag, import_mode,                       import_scope, owning_department_code, asset_criticality_id,                       instance_number, operational_log_flag)
   VALUES (i.inventory_item_id, i.asset_serial_number, SYSDATE,
   l_user_id, SYSDATE, l_user_id, i.asset_description,
   i.class_code, 'Y', i.department_id, i.category_id,
   mtl_eam_asset_num_interface_s.NEXTVAL, i.organization_code,
   i.finance_asset_number, i.area, 'P', 1,
   NULL, i.criticality_code, i.asset_number, 'Y'
   );
END;
END LOOP;
END;


Run the Standard Program  “ Import Asset  Number”  .

Base Table :

  • MTL_SERIAL_NUMBERS
  • CSI_ITEM_INSTANCES

Sample Query to get the  Asset Number Details:

SELECT   (SELECT organization_code
            FROM org_organization_definitions
           WHERE organization_id = last_vld_organization_id) "Inventory Org",
         (SELECT DISTINCT segment1
                     FROM mtl_system_items_b
                    WHERE inventory_item_id =
                                           c.inventory_item_id)
                                                               "Asset Groups",
         instance_number "Asset Number",
         instance_description "Asset Number Description",
         c.serial_number "Asset Serial Number",
         (SELECT department_code
            FROM bom_departments
           WHERE department_id =
                       (SELECT owning_department_id
                          FROM eam_org_maint_defaults
                         WHERE object_id = c.instance_id))
                                                          "owning department",
         (SELECT meaning
            FROM fnd_lookup_values
           WHERE lookup_type = 'MTL_EAM_ASSET_CRITICALITY'
             AND enabled_flag = 'Y'
             AND lookup_code = c.asset_criticality_code) "criticality",
         (SELECT accounting_class_code
            FROM eam_org_maint_defaults
           WHERE object_id = c.instance_id) "accounting_class_code",
         (SELECT location_codes
            FROM mtl_eam_locations
           WHERE location_id = (SELECT area_id
                                  FROM eam_org_maint_defaults
                                 WHERE object_id = c.instance_id)) "area"
    FROM csi_item_instances c, mtl_serial_numbers msn
   WHERE c.serial_number = msn.serial_number
     AND c.inventory_item_id = msn.inventory_item_id
ORDER BY instance_number

Wednesday, 16 December 2015

Progress Bar in Reports in APEX5

APEX can create "Percentage Bars" within a report. This can be achieved using HTML Code in your Report SQL Query.

Steps:

1- Create your report:


Create an Interactive or Classic Report using SQL query :

SELECT CASE
          WHEN COLUMN <= 30
             THEN    '<div class="a-Report-percentChart" style="background-color:#000000;width:100%;"><div class="a-Report-percentChart-fill" style="width:'
                  || COLUMN
                  || '% ; background-color: 330099;"></div><span class="u-VisuallyHidden">'
                  || COLUMN
                  || '</span></div>'
                  || COLUMN
                  || '%'
          WHEN COLUMN BETWEEN 30 AND 50
             THEN    '<div class="a-Report-percentChart" style="background-color:#000000;width:100%;"><div class="a-Report-percentChart-fill" style="width:'
                  || COLUMN
                  || '% ; background-color:CC0000;"></div><span class="u-VisuallyHidden">'
                  || COLUMN
                  || '</span></div>'
                  || COLUMN
                  || '%'
          WHEN COLUMN BETWEEN 55 AND 70
             THEN    '<div class="a-Report-percentChart" style="background-color:#000000;width:100%;"><div class="a-Report-percentChart-fill" style="width:'
                  || COLUMN
                  || '% ; background-color:#99eb47;"></div><span class="u-VisuallyHidden">'
                  || COLUMN
                  || '</span></div>'
                  || COLUMN
                  || '%'
       END AS "Progress bar"
  FROM Table


Note: 
 Use CASE Statement to display different colors for the bars based on percentage.

2-Set the Report Bar column to Standard Report Column

3-Output:

In this report we're using the employees percentage of salary within their department




















Note: 
If you want same color for the bar then use the same query without CASE Statements.