zoukankan      html  css  js  c++  java
  • 获取 Transaction Source

    报表上要获取物料事务处理表上的的Source(来源)字段,非数据库项。

    /*==================================================
        Procedure Name:
            get_txn_source
        Description:
            This procedure is used to calculate transaction
            source name of one specified material transaction.
        Arguments
            p_transaction_id  IN  *material transaction id
            x_txn_source      OUT *transaction source name                  
        History:
    .00  2012-03-01  ech0-silence  Creation
      ==================================================
    */
      procedure get_txn_source(
                  p_transaction_id in number
                , x_txn_source     out nocopy varchar2
                )
      is
        PO                   CONSTANT NUMBER  := 1;
        Sales_Order          CONSTANT NUMBER  := 2;
        Account              CONSTANT NUMBER  := 3;
        Move_Order           CONSTANT NUMBER  := 4;
        WIP_Job_or_Schedule  CONSTANT NUMBER  := 5;
        Account_Alias        CONSTANT NUMBER  := 6;
        Requisition          CONSTANT NUMBER  := 7;
        Internal_Order       CONSTANT NUMBER  := 8;
        Cycle_count          CONSTANT NUMBER  := 9;
        Physical_inventory   CONSTANT NUMBER  := 10;
        Cost_update          CONSTANT NUMBER  := 11;
        RMA                  CONSTANT NUMBER  := 12;
        Inventory            CONSTANT NUMBER  := 13;
        --Layer_cost_update    CONSTANT NUMBER  := 15;
        PrjContracts         CONSTANT NUMBER  := 16;
        
        v_process_phase      varchar2(30);
        n_organization_id    number;
        n_txn_source_type_id number;
        n_txn_source_id      number;
        v_txn_source_name    MTL_MATERIAL_TRANSACTIONS.TRANSACTION_SOURCE_NAME%TYPE;
      begin
        v_process_phase := 'Fetch txn infomation';
        -- get transaction information
        SELECT MMT.ORGANIZATION_ID,
               MMT.TRANSACTION_SOURCE_TYPE_ID,
               MMT.TRANSACTION_SOURCE_ID,
               MMT.TRANSACTION_SOURCE_NAME
          INTO n_organization_id,
               n_txn_source_type_id,
               n_txn_source_id,
               v_txn_source_name
          FROM MTL_MATERIAL_TRANSACTIONS MMT
         WHERE MMT.TRANSACTION_ID = p_transaction_id
        ;
      
        if n_txn_source_type_id = Cost_update then
          v_process_phase := 'Cost Update';
          SELECT DESCRIPTION INTO x_txn_source
            FROM CST_COST_UPDATES
           WHERE COST_UPDATE_ID = n_txn_source_id
          ;
        elsif n_txn_source_type_id = Cycle_count then
          v_process_phase := 'Cycle Count';
          SELECT CYCLE_COUNT_HEADER_NAME
            INTO x_txn_source
            FROM MTL_CYCLE_COUNT_HEADERS
           WHERE CYCLE_COUNT_HEADER_ID = n_txn_source_id
             AND organization_id = n_organization_id
          ;
        elsif (n_txn_source_type_id = Inventory or n_txn_source_type_id >= 100then
          v_process_phase := 'Inventory';
          x_txn_source := v_txn_source_name;
        elsif  n_txn_source_type_id = Physical_inventory then
          v_process_phase := 'Physical Inventory';
          SELECT PHYSICAL_INVENTORY_NAME 
            INTO x_txn_source
            FROM MTL_PHYSICAL_INVENTORIES
           WHERE PHYSICAL_INVENTORY_ID = n_txn_source_id
             AND organization_id = n_organization_id
          ;
        elsif n_txn_source_type_id = PO then
          v_process_phase := 'PO';
          select nvl(CLM_DOCUMENT_NUMBER, POH.SEGMENT1)
            INTO x_txn_source
            from po_headers_all poh
           where poh.po_header_id = n_txn_source_id
          ;
        elsif n_txn_source_type_id = PrjContracts then
          v_process_phase := 'PrjContracts';
          SELECT contract_number 
            INTO x_txn_source
            FROM okc_k_headers_b
           WHERE id = n_txn_source_id
          ;
        elsif n_txn_source_type_id = Requisition then
          v_process_phase := 'Requisition';
          SELECT SEGMENT1 
            INTO x_txn_source
            FROM PO_REQUISITION_HEADERS_ALL
           WHERE REQUISITION_HEADER_ID = n_txn_source_id
          ;
        elsif n_txn_source_type_id = WIP_Job_or_Schedule then
          v_process_phase := 'WIP Job or Schedule';
          SELECT WIP_ENTITY_NAME 
            INTO x_txn_source 
            FROM WIP_ENTITIES
           WHERE WIP_ENTITY_ID = n_txn_source_id
             AND organization_id = n_organization_id
          ;
        elsif n_txn_source_type_id = Move_Order then
          v_process_phase := 'Move Order';
          SELECT REQUEST_NUMBER 
            INTO x_txn_source 
            FROM MTL_TXN_REQUEST_HEADERS
           WHERE HEADER_ID = n_txn_source_id
             AND organization_id = n_organization_id
          ;
        elsif ( (n_txn_source_type_id = Sales_Order) OR 
                (n_txn_source_type_id = Internal_Order) OR 
                (n_txn_source_type_id = RMA) ) then
          v_process_phase := 'Sales Order';
          select concatenated_segments
            into x_txn_source
            from MTL_SALES_ORDERS_KFV
           where SALES_ORDER_ID = n_txn_source_id
          ;
        elsif n_txn_source_type_id = Account_Alias then
          v_process_phase := 'Account Alias';
          select concatenated_segments
            into x_txn_source
            from MTL_GENERIC_DISPOSITIONS_KFV
           where disposition_id = n_txn_source_id
          ;
        elsif n_txn_source_type_id = Account then
          v_process_phase := 'Account';
          select concatenated_segments
            into x_txn_source
            from GL_CODE_COMBINATIONS_KFV
           where CODE_COMBINATION_ID = n_txn_source_id
          ;         
        else
          -- We do not need display txn source for other types.
          -- including Layer_cost_update
          v_process_phase := 'Others';
          x_txn_source := null;
        end if;
      
      EXCEPTION
        WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
          if g_debug_mode = 'Y' then
            dbms_output.put_line('GET_TXN_SOURCE: ' || SQLERRM);
            dbms_output.put_line('Process phase : ' || v_process_phase);
          end if;
          x_txn_source := null;
      end;
  • 相关阅读:
    C++中头文件包含的问题
    linux环境变量
    win32进程和线程
    断言
    win32中的常用类型转换
    可变形参
    #define
    CString与char*互相转化
    extern
    手机CPU和GPU厂商
  • 原文地址:https://www.cnblogs.com/benio/p/2519298.html
Copyright © 2011-2022 走看看