Showing posts with label #OracleEBS. Show all posts
Showing posts with label #OracleEBS. Show all posts

Monday, 25 April 2022

Oracle EBS - Enable Item as Lot Control PLSQL Script

 DECLARE

    l_item_tbl_typ   ego_item_pub.item_tbl_type;

    x_item_tbl_typ   ego_item_pub.item_tbl_type;

    x_return_status  VARCHAR2(100);

    x_msg_count      NUMBER;

    x_message_list   error_handler.error_tbl_type;

   -- User Variables: Update for your environment ~~!

    l_resp_appl_id   NUMBER := 401; --FND_PROFILE.VALUE ('RESP_APPL_ID');

    l_resp_id        NUMBER := 20634; --FND_PROFILE.VALUE ('RESP_ID');

    l_user_id        NUMBER := -1; --26406 --FND_PROFILE.VALUE ('USER_ID');

BEGIN

    fnd_global.apps_initialize(user_id => l_user_id, resp_id => l_resp_id, resp_appl_id => l_resp_appl_id);


--Calling Enable Item as Lot Control procedure--


    FOR i IN (

        SELECT

            msib.inventory_item_id,

            msib.organization_id,

            msib.segment1,

            msib.lot_control_code,

            msib.lot_split_enabled,

            msib.lot_merge_enabled,

            msib.lot_divisible_flag

        FROM

            mtl_system_items_b msib

        WHERE

                msib.organization_id = 85

            AND msib.segment1 = '320672'

            AND msib.last_update_date >= sysdate - 10

        ORDER BY

            msib.last_update_date DESC

    ) LOOP

        BEGIN

            l_item_tbl_typ(1).transaction_type := ego_item_pub.g_ttype_update;

            l_item_tbl_typ(1).inventory_item_id := i.inventory_item_id;

            l_item_tbl_typ(1).organization_id := i.organization_id;

            l_item_tbl_typ(1).lot_control_code := 2;

            l_item_tbl_typ(1).lot_split_enabled := 'Y';

            l_item_tbl_typ(1).lot_merge_enabled := 'Y';

--            l_item_tbl_typ(1).auto_lot_alpha_prefix := 'L';

--            l_item_tbl_typ(1).start_auto_lot_number := 1;

            ego_item_pub.process_items(p_api_version => 1.0, p_init_msg_list => fnd_api.g_false,

                                      p_commit => fnd_api.g_true,

                                      p_item_tbl => l_item_tbl_typ,

                                      x_item_tbl => x_item_tbl_typ,

                                      p_role_grant_tbl => ego_item_pub.g_miss_role_grant_tbl,

                                      x_return_status => x_return_status,

                                      x_msg_count => x_msg_count);


            dbms_output.put_line('x_return_status : ' || x_return_status);

            error_handler.get_message_list(x_message_list);

            FOR i IN 1..x_message_list.count LOOP

                dbms_output.put_line(x_message_list(i).message_text);

            END LOOP;


            COMMIT;

        END xxtlm_enable_item_lot;

    END LOOP;


END;

Oracle EBS - Clear Reservation PLSQL Script

 DECLARE

    p_rsv           apps.inv_reservation_global.mtl_reservation_rec_type;

    p_dummy_sn      apps.inv_reservation_global.serial_number_tbl_type;

    l_msg_count     NUMBER;

    l_msg_data      VARCHAR2(240);

    l_status        VARCHAR2(1);

    l_index_out     NUMBER;

    v_reserv_id     NUMBER;

    l_err_status    VARCHAR2(50);

    l_err_mesg      VARCHAR2(2000);


    -- User Variables: Update for your environment

    l_resp_appl_id  NUMBER := 401; --FND_PROFILE.VALUE ('RESP_APPL_ID');

    l_resp_id       NUMBER := 20634; --FND_PROFILE.VALUE ('RESP_ID');

    l_user_id       NUMBER := -1; --26406 --FND_PROFILE.VALUE ('USER_ID');


-- Item/Organization Variables

--    l_organization_id  NUMBER := 2177;

BEGIN

    fnd_global.apps_initialize(user_id => l_user_id, resp_id => l_resp_id, resp_appl_id => l_resp_appl_id);


    FOR r_reserve IN (

        SELECT

            xx.reservation_id,

            xx.segment1 item_code,

            xx.inventory_item_id,

            xx.organization_id,

            xx.locator_id

        FROM

            (

                SELECT

                    msib.segment1,

                    mp.organization_code,

                    msib.organization_id,

                    msib.inventory_item_id,

                    msib.purchasing_item_flag,

                    msib.shippable_item_flag,

                    msib.inventory_item_flag,

                    lot_control_code,

                    decode(serial_number_control_code, 1, 'Non Serialized', 2, 'Predefined',

                           5,

                           'At Receipt',

                           6,

                           'At Issue')         "Serial Control",

                    mc.segment1                "PPL",

                    mc.segment2                "SPL",

                    mc.segment3                "ITEM CATEGORY",

                    mr.reservation_quantity    reserved_qty,

                    mr.reservation_id,

                    mr.locator_id

                FROM

                    mtl_system_items_b   msib,

                    mtl_item_categories  mic,

                    mtl_categories       mc,

                    mtl_parameters       mp,

                    mtl_reservations     mr

                WHERE

                        msib.inventory_item_id = mic.inventory_item_id

                    AND msib.organization_id = mic.organization_id

                    AND msib.organization_id = mp.organization_id

                    AND mic.category_id = mc.category_id

                    AND mic.category_set_id = 1

                    AND mc.structure_id = 101

                    AND msib.enabled_flag = 'Y'

                    AND msib.lot_control_code = 1

--            AND msib.segment1='NTTC90ABE6'

                    AND nvl(msib.end_date_active, sysdate) >= sysdate

                    AND upper(mc.segment1) IN ( 'JUNIPER', 'CIENA', 'UTAHSCI',

                                                'WESTELL',

                                                'ADTRAN',

                                                'NOKIA',

                                                'ALCATEL',

                                                'ALCATEL-LUCENT',

                                                'TELLABS',

                                                'FUJI',

                                                'DELTA ELECTRONICS',

                                                'CORNING' )

                    AND mc.disable_date IS NULL

                    AND msib.organization_id IN ( 85, 97 )

                    AND mr.inventory_item_id = msib.inventory_item_id

                    AND mr.organization_id = msib.organization_id

                ORDER BY

                    mc.segment1

            ) xx

        WHERE

            reserved_qty <> 0

    ) LOOP

        dbms_output.put_line('Reservation ID : ' || r_reserve.reservation_id);

        p_rsv.reservation_id := r_reserve.reservation_id;

        apps.inv_reservation_pub.delete_reservation(p_api_version_number => 1.0,

                                                   p_init_msg_lst => fnd_api.g_false,

                                                   p_rsv_rec => p_rsv,

                                                   p_serial_number => p_dummy_sn,

                                                -- p_validation_flag => fnd_api.g_true,

                                                   x_return_status => l_status,

                                                   x_msg_count => l_msg_count,

                                                   x_msg_data => l_msg_data);


        dbms_output.put_line('Reservation API : ' || l_status);

        IF l_status <> 'S' THEN

            fnd_msg_pub.get(p_msg_index => l_msg_count, p_data => l_msg_data, p_encoded => 'F',

                           p_msg_index_out => l_index_out);


            l_err_status := 'E';

            l_err_mesg := 'Delete Allocations API failed ' || rtrim(l_msg_data);

            dbms_output.put_line('API failed ' || l_err_mesg);

        ELSE

            l_err_status := 'S';

            l_err_mesg := NULL;

            dbms_output.put_line('API success ' || l_err_mesg);

        END IF;


    END LOOP;


    COMMIT;

EXCEPTION

    WHEN OTHERS THEN

        dbms_output.put_line('p_msg_cnt: ');

END;