zoukankan      html  css  js  c++  java
  • Oracle EBS OPM 查询现有量

    	
    --查询现有量
    --created by jenrry
    DECLARE
      p_inventory_item_id NUMBER := 231652; --NOT NULL
      p_organization_id   NUMBER :=  104; --NOT NULL
      p_subinventory      VARCHAR2(30) := 'JSK01';
      p_locator_id        NUMBER := NULL;
      p_lot_number        VARCHAR2(30) := NULL;
      p_qty_type          VARCHAR2(30) := 'QOH';
      p_onhand_source     NUMBER := 3;
    
      l_quantity NUMBER;
      -- reutnr msg parameter
      l_return_status VARCHAR2(1);
      l_msg_count     NUMBER;
      l_msg_data      VARCHAR2(2000);
    
      -- return quantity parameter
      l_qty_on_hand               NUMBER;
      l_qty_res_on_hand           NUMBER;
      l_qty_res                   NUMBER;
      l_qty_sug                   NUMBER;
      l_qty_att                   NUMBER;
      l_qty_available_to_reserve  NUMBER;
      l_sqty_on_hand              NUMBER;
      l_sqty_res_on_hand          NUMBER;
      l_sqty_res                  NUMBER;
      l_sqty_sug                  NUMBER;
      l_sqty_att                  NUMBER;
      l_sqty_available_to_reserve NUMBER;
    
      l_revision_control         mtl_system_items_b.revision_qty_control_code%TYPE;
      l_lot_control_type         mtl_system_items_b.lot_control_code%TYPE;
      l_item_serial_control_code mtl_system_items_b.serial_number_control_code%TYPE;
    
      --contorl parameter
      l_is_revision_control BOOLEAN;
      l_is_lot_control      BOOLEAN;
      l_is_serial_control   BOOLEAN;
    BEGIN
      --
      -- get attribute of the item
      --
      SELECT msi.revision_qty_control_code, msi.lot_control_code, msi.serial_number_control_code
        INTO l_revision_control, l_lot_control_type, l_item_serial_control_code
        FROM mtl_system_items_b msi
       WHERE msi.inventory_item_id = p_inventory_item_id
         AND msi.organization_id = p_organization_id;
    
      IF l_revision_control = 2 THEN
        l_is_revision_control := TRUE;
      ELSE
        l_is_revision_control := FALSE;
      END IF;
    
      IF l_lot_control_type <> 1 AND p_lot_number IS NOT NULL THEN
        l_is_lot_control := TRUE;
      ELSE
        l_is_lot_control := FALSE;
      END IF;
    
      IF l_item_serial_control_code = 2 THEN
        l_is_serial_control := TRUE;
      ELSE
        l_is_serial_control := FALSE;
      END IF; 
      inv_quantity_tree_pub.query_quantities(p_api_version_number      => 1.0,
                                             p_init_msg_lst            => fnd_api.g_false,
                                             x_return_status           => l_return_status,
                                             x_msg_count               => l_msg_count,
                                             x_msg_data                => l_msg_data,
                                             p_organization_id         => p_organization_id,
                                             p_inventory_item_id       => p_inventory_item_id,
                                             p_tree_mode               => 3,
                                             p_is_revision_control     => l_is_revision_control,
                                             p_is_lot_control          => l_is_lot_control,
                                             p_is_serial_control       => l_is_serial_control,
                                             p_grade_code              => NULL,
                                             p_demand_source_type_id   => -1,
                                             p_demand_source_header_id => -1,
                                             p_demand_source_line_id   => -1,
                                             p_demand_source_name      => NULL,
                                             p_revision                => NULL,
                                             p_lot_number              => p_lot_number,
                                             p_subinventory_code       => p_subinventory,
                                             p_locator_id              => p_locator_id,
                                             p_onhand_source           => p_onhand_source,
                                             x_qoh                     => l_qty_on_hand,
                                             x_rqoh                    => l_qty_res_on_hand,
                                             x_qr                      => l_qty_res,
                                             x_qs                      => l_qty_sug,
                                             x_att                     => l_qty_att,
                                             x_atr                     => l_qty_available_to_reserve,
                                             x_sqoh                    => l_sqty_on_hand,
                                             x_srqoh                   => l_sqty_res_on_hand,
                                             x_sqr                     => l_sqty_res,
                                             x_sqs                     => l_sqty_sug,
                                             x_satt                    => l_sqty_att,
                                             x_satr                    => l_sqty_available_to_reserve);
      IF l_return_status = fnd_api.g_ret_sts_success THEN
      
        IF p_qty_type = 'QOH' THEN
          l_quantity := l_qty_on_hand;
        ELSIF p_qty_type = 'ATT' THEN
          l_quantity := l_qty_att;
        ELSIF p_qty_type = 'QR' THEN
          l_quantity := l_qty_res;
        ELSIF p_qty_type = 'ATR' THEN
          l_quantity := l_qty_available_to_reserve;
        ELSE
          l_quantity := l_qty_att;
        END IF; --IF p_qty_type = 'QOH' THEN
      ELSE
        l_quantity := NULL;
      END IF;
      
      dbms_output.put_line('现有量l_qty_on_hand=' || l_qty_on_hand);
      dbms_output.put_line('保留现有量l_qty_res_on_hand=' || l_qty_res_on_hand);
      dbms_output.put_line('保留量l_qty_res=' || l_qty_res);
      dbms_output.put_line('分配量l_qty_sug=' || l_qty_sug);
      dbms_output.put_line('可处理l_qty_att=' || l_qty_att);
      dbms_output.put_line('可保留l_qty_available_to_reserve=' || l_qty_available_to_reserve);
      
    EXCEPTION
      WHEN OTHERS THEN
        dbms_output.put_line('出错' || SQLERRM);
    --    RETURN NULL;
    END;
    

      

    土豆君
  • 相关阅读:
    Python3之random模块常用方法
    Go语言学习笔记(九)之数组
    Go语言学习笔记之简单的几个排序
    Go语言学习笔记(八)
    Python3之logging模块
    Go语言学习笔记(六)
    123. Best Time to Buy and Sell Stock III(js)
    122. Best Time to Buy and Sell Stock II(js)
    121. Best Time to Buy and Sell Stock(js)
    120. Triangle(js)
  • 原文地址:https://www.cnblogs.com/jenrry/p/10021114.html
Copyright © 2011-2022 走看看