博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle EBS INV 释放保留
阅读量:5334 次
发布时间:2019-06-15

本文共 11088 字,大约阅读时间需要 36 分钟。

CREATE or REPPLACE PROCEDURE RelieveReservationAS         -- Common Declarations        l_api_version       NUMBER      := 1.0;         l_init_msg_list     VARCHAR2(2) := FND_API.G_TRUE;         x_return_status     VARCHAR2(2);        x_msg_count     NUMBER         := 0;        x_msg_data     VARCHAR2(255);        x_error_code   NUMBER         := 0;            -- WHO columns        l_user_id    NUMBER := -1;        l_resp_id    NUMBER := -1;        l_application_id  NUMBER := -1;        l_row_cnt    NUMBER := 1;        l_user_name    VARCHAR2(30) := 'MFG';        l_resp_name    VARCHAR2(50) := 'Manufacturing and Distribution Manager';                   -- API specific declarations        l_rsv_rec                   INV_RESERVATION_GLOBAL.MTL_RESERVATION_REC_TYPE;        l_serial_number             INV_RESERVATION_GLOBAL.SERIAL_NUMBER_TBL_TYPE;        l_validation_flag           VARCHAR2(2) := FND_API.G_TRUE;          x_mtl_reservation_tbl       INV_RESERVATION_GLOBAL.MTL_RESERVATION_TBL_TYPE;        x_mtl_reservation_tbl_count NUMBER := 0;        x_primary_relieved_qty      NUMBER := 0;        x_primary_remain_qty        NUMBER := 0;        l_primary_reservation_qty   NUMBER := 10;   -- total qty         l_primary_relieved_qty      NUMBER := 2;          l_subinventory_code         VARCHAR2(40) := NULL; --'Stores';  -- will create a hard reservation                -- Load reservation for this item        CURSOR c_item_reservations IS        SELECT msi.organization_id, msi.inventory_item_id, res.reservation_id, res.reservation_quantity, res.demand_source_name        FROM mtl_system_items_b msi, mtl_parameters mp, mtl_reservations res        WHERE msi.segment1 = 'SU_TEST_STS3'        AND mp.organization_code = 'M1'        AND msi.organization_id = mp.organization_id         AND res.organization_id = msi.organization_id        AND res.inventory_item_id = msi.inventory_item_id;                -- Load required serial numbers to be reserved        CURSOR c_serials IS        SELECT msn.inventory_item_id, msn.serial_number        FROM mtl_system_items_b msi, mtl_serial_numbers msn, mtl_parameters mp        WHERE msi.organization_id = mp.organization_id         AND msi.organization_id = msn.current_organization_id        AND msi.inventory_item_id = msn.inventory_item_id        AND msi.segment1 = 'SU_TEST_STS3'        AND mp.organization_code = 'M1'        AND msi.serial_number_control_code not in (1, 6)  -- item is not serial controlled / controlled at sales order issue         AND msn.serial_number BETWEEN '' AND '';   -- can leave this NULL if item is not serial controlled       BEGIN         -- Get the user_id        SELECT user_id        INTO l_user_id        FROM fnd_user        WHERE user_name = l_user_name;              -- Get the application_id and responsibility_id        SELECT application_id, responsibility_id        INTO l_application_id, l_resp_id        FROM fnd_responsibility_vl        WHERE responsibility_name = l_resp_name;              FND_GLOBAL.APPS_INITIALIZE(l_user_id, l_resp_id, l_application_id);          dbms_output.put_line('Initialized applications context: '|| l_user_id || ' '|| l_resp_id ||' '|| l_application_id );                      -- Get the first row        FOR ir IN c_item_reservations LOOP          l_rsv_rec.organization_id := ir.organization_id;          l_rsv_rec.inventory_item_id := ir.inventory_item_id;          EXIT;        END LOOP;                -- Get all reservations that exist for this item        -- call API to get all the reservations for this item        DBMS_OUTPUT.PUT_LINE('=======================================================');        DBMS_OUTPUT.PUT_LINE('Calling INV_RESERVATION_PUB.Query_Reservation');                 INV_RESERVATION_PUB.QUERY_RESERVATION(                  P_API_VERSION_NUMBER => l_api_version                , P_INIT_MSG_LST      => l_init_msg_list                , X_RETURN_STATUS      => x_return_status                , X_MSG_COUNT        => x_msg_count                , X_MSG_DATA        => x_msg_data                , P_QUERY_INPUT        => l_rsv_rec                , P_LOCK_RECORDS      => FND_API.G_FALSE                , P_SORT_BY_REQ_DATE    => INV_RESERVATION_GLOBAL.G_QUERY_NO_SORT                , P_CANCEL_ORDER_MODE  => INV_RESERVATION_GLOBAL.G_CANCEL_ORDER_NO                , X_MTL_RESERVATION_TBL          => x_mtl_reservation_tbl                , X_MTL_RESERVATION_TBL_COUNT    => x_mtl_reservation_tbl_count                , X_ERROR_CODE        => x_error_code           );                  DBMS_OUTPUT.PUT_LINE('=======================================================');         DBMS_OUTPUT.PUT_LINE('Return Status: '||x_return_status);           IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN            DBMS_OUTPUT.PUT_LINE('Error Message :'||x_msg_data);         END IF;                  IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN            FOR i IN 1..x_mtl_reservation_tbl_count LOOP                DBMS_OUTPUT.PUT_LINE('=======================================================');                dbms_output.put_line('reservation_id              : '|| TO_CHAR(x_mtl_reservation_tbl(i).reservation_id));                dbms_output.put_line('requirement_date            : '|| TO_CHAR(x_mtl_reservation_tbl(i).requirement_date, 'YYYY/MM/DD'));                dbms_output.put_line('organization_id             : '|| TO_CHAR(x_mtl_reservation_tbl(i).organization_id));                dbms_output.put_line('inventory_item_id           : '|| TO_CHAR(x_mtl_reservation_tbl(i).inventory_item_id));                dbms_output.put_line('demand_source_type_id       : '|| TO_CHAR(x_mtl_reservation_tbl(i).demand_source_type_id));                dbms_output.put_line('demand_source_name          : '|| x_mtl_reservation_tbl(i).demand_source_name);                dbms_output.put_line('demand_source_header_id     : '|| TO_CHAR(x_mtl_reservation_tbl(i).demand_source_header_id));                dbms_output.put_line('demand_source_line_id       : '|| TO_CHAR(x_mtl_reservation_tbl(i).demand_source_line_id));                dbms_output.put_line('demand_source_line_detail   : '|| TO_CHAR(x_mtl_reservation_tbl(i).demand_source_line_detail));                dbms_output.put_line('primary_uom_code            : '|| x_mtl_reservation_tbl(i).primary_uom_code);                dbms_output.put_line('reservation_uom_code        : '|| x_mtl_reservation_tbl(i).reservation_uom_code);                dbms_output.put_line('reservation_quantity        : '|| TO_CHAR(x_mtl_reservation_tbl(i).reservation_quantity));                dbms_output.put_line('primary_reservation_quantity: '|| TO_CHAR(x_mtl_reservation_tbl(i).primary_reservation_quantity));                dbms_output.put_line('detailed_quantity           : '|| TO_CHAR(x_mtl_reservation_tbl(i).detailed_quantity));                dbms_output.put_line('supply_source_type_id       : '|| TO_CHAR(x_mtl_reservation_tbl(i).supply_source_type_id));                dbms_output.put_line('supply_source_header_id     : '|| TO_CHAR(x_mtl_reservation_tbl(i).supply_source_header_id));                dbms_output.put_line('supply_source_line_id       : '|| TO_CHAR(x_mtl_reservation_tbl(i).supply_source_line_id));                dbms_output.put_line('supply_source_name          : '|| (x_mtl_reservation_tbl(i).supply_source_name));                dbms_output.put_line('supply_source_line_detail   : '|| TO_CHAR(x_mtl_reservation_tbl(i).supply_source_line_detail));                dbms_output.put_line('subinventory_code           : '|| x_mtl_reservation_tbl(i).subinventory_code);                dbms_output.put_line('ship_ready_flag             : '|| TO_CHAR(x_mtl_reservation_tbl(i).ship_ready_flag));                dbms_output.put_line('staged_flag                 : '|| x_mtl_reservation_tbl(i).staged_flag);                DBMS_OUTPUT.PUT_LINE('=======================================================');             END LOOP;              END IF;        -- call API to relieve all the queried reservations for this item        DBMS_OUTPUT.PUT_LINE('=======================================================');        DBMS_OUTPUT.PUT_LINE('Calling INV_RESERVATION_PUB.Relieve_Reservation');                  FOR i IN 1..x_mtl_reservation_tbl_count LOOP                      BEGIN                  -- Initialize Serials to be relieved                  FOR ser IN c_serials LOOP                    l_serial_number(l_row_cnt).inventory_item_id := ser.inventory_item_id;                    l_serial_number(l_row_cnt).serial_number     := ser.serial_number;                    l_row_cnt := l_row_cnt + 1;                  END LOOP;                                    IF (l_serial_number.COUNT > 0) THEN                      l_primary_relieved_qty := l_serial_number.COUNT;                   END IF;             EXCEPTION              WHEN NO_DATA_FOUND THEN                dbms_output.put_line('Item not serial controlled / serials not provided');             END;                                          -- Call the API to relieve reservations for the provided serial numbers              INV_RESERVATION_PUB.RELIEVE_RESERVATION(                  P_API_VERSION_NUMBER          =>  l_api_version                  , P_INIT_MSG_LST    =>  l_init_msg_list                  , X_RETURN_STATUS    =>  x_return_status                   ,  X_MSG_COUNT    =>  x_msg_count                       ,  X_MSG_DATA            =>  x_msg_data                        ,  P_RSV_REC            =>  x_mtl_reservation_tbl(i)                         ,  P_PRIMARY_RELIEVED_QUANTITY =>  l_primary_relieved_qty                  ,  P_RELIEVE_ALL     =>  FND_API.G_FALSE     -- Relieve ALL -> set to false, relieve partially                  ,  P_ORIGINAL_SERIAL_NUMBER   =>  l_serial_number                  ,  P_VALIDATION_FLAG            =>  l_validation_flag                  ,  X_PRIMARY_RELIEVED_QUANTITY =>  x_primary_relieved_qty                  ,  X_PRIMARY_REMAIN_QUANTITY   =>  x_primary_remain_qty              );                                   DBMS_OUTPUT.PUT_LINE('=======================================================');              DBMS_OUTPUT.PUT_LINE('Return Status: '||x_return_status);                      IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN                 DBMS_OUTPUT.PUT_LINE('Error Message :'||x_msg_data);              END IF;                            IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN                 DBMS_OUTPUT.PUT_LINE('Reservation ID:'||x_mtl_reservation_tbl(i).reservation_id);                 DBMS_OUTPUT.PUT_LINE('Primary Relieved Quantity: '||x_primary_relieved_qty);                 DBMS_OUTPUT.PUT_LINE('Primary Remain Quantity: '||x_primary_remain_qty);                            END IF;                END LOOP;   EXCEPTION        WHEN OTHERS THEN          DBMS_OUTPUT.PUT_LINE('Exception Occured :');          DBMS_OUTPUT.PUT_LINE(SQLCODE ||':'||SQLERRM);          DBMS_OUTPUT.PUT_LINE('=======================================================');END RelieveReservation;

  

转载于:https://www.cnblogs.com/jenrry/p/10020851.html

你可能感兴趣的文章
TCP连接
查看>>
HTML-meta
查看>>
使用ubifs作为根文件系统的openwrt如何在进行sysupgrade时保存旧的配置
查看>>
Android 异步加载解决方案
查看>>
app 后端技术
查看>>
协程的原理及其在高并发服务中的应用
查看>>
Android的一个自定义的动态添加Dialog类
查看>>
js中对时间的操作
查看>>
WIN10配置MongoDB
查看>>
iOS resign code with App Store profile and post to AppStore
查看>>
python 表格操作
查看>>
LeetCode 84. Largest Rectangle in Histogram
查看>>
LeetCode Two Sum III - Data structure design
查看>>
session和xsrf
查看>>
Cookie与Session
查看>>
配置redis外网可访问
查看>>
跟随大神实现简单的Vue框架
查看>>
Linux目录结构
查看>>
learning awk
查看>>
LeetCode-Strobogrammatic Number
查看>>