zoukankan      html  css  js  c++  java
  • 物料事务处理接口表 MTL_TRANSACTIONS_INTERFACE 账户别名使用 及 提示无效的分配账户字段

    实例:

    PROCEDURE MAIN(P_ORGANIZATION_ID NUMBER,
    P_PERIOD_NAME VARCHAR2,
    XV_STATUS OUT VARCHAR,
    XV_MESG OUT VARCHAR2) IS
    CURSOR LCUR_ADJUST IS
    SELECT COQ.TRX_ID,
    COQ.ORGANIZATION_ID,
    COQ.ITEM_ID,
    MTL.PRIMARY_UOM_CODE,
    COQ.SUBINVENTORY_CODE,
    COQ.LOCATOR_ID,
    COQ.LOT_NUMBER,
    (COQ.CHECK_QTY-COQ.ONHAND_QTY) ADJUST_QTY,
    COQ.PERIOD_NAME
    FROM CUX_ONHAND_QTY_ADJUST_T COQ
    JOIN MTL_SYSTEM_ITEMS_B MTL
    ON MTL.INVENTORY_ITEM_ID=COQ.ITEM_ID
    AND MTL.ORGANIZATION_ID=COQ.ORGANIZATION_ID
    WHERE COQ.ORGANIZATION_ID=P_ORGANIZATION_ID
    AND COQ.PERIOD_NAME=P_PERIOD_NAME
    AND NVL(COQ.IMPORT_FLAG,'N')='N'
    AND COQ.ONHAND_QTY<>COQ.CHECK_QTY;
    lv_transaction_date DATE;
    lv_distribution_account_id NUMBER;
    lv_transaction_source_id NUMBER;
    ln_txn_type_id NUMBER;
    ln_period_id number;
    ln_txn_source_type_id NUMBER :=6;
    l_iface_rec inv.mtl_transactions_interface%ROWTYPE;
    l_iface_lot_rec inv.mtl_transaction_lots_interface%ROWTYPE;
    BEGIN
    XV_STATUS:='S';
    BEGIN
    SELECT GP.SCHEDULE_CLOSE_DATE,GP.ACCT_PERIOD_ID INTO lv_transaction_date,ln_period_id FROM org_acct_periods GP
    WHERE GP.PERIOD_NAME=P_PERIOD_NAME
    AND GP.ORGANIZATION_ID=P_ORGANIZATION_ID
    AND GP.open_flag = 'Y'
    AND GP.PERIOD_SET_NAME='ZH_GL_PERIOD';
    EXCEPTION
    WHEN OTHERS THEN
    XV_STATUS:='E';
    XV_MESG:=XV_MESG||'获取期间日期出现错误!';
    END;
    IF lv_transaction_date>SYSDATE THEN
    lv_transaction_date:=SYSDATE;
    END IF;
    BEGIN
    SELECT distribution_account, disposition_id
    INTO lv_distribution_account_id, lv_transaction_source_id
    FROM mtl_generic_dispositions
    WHERE organization_id = P_ORGANIZATION_ID
    AND segment1 LIKE '%在线盈亏'
    AND disable_date IS NULL
    AND effective_date <= SYSDATE
    AND ROWNUM=1;
    EXCEPTION
    WHEN OTHERS THEN
    XV_STATUS:='E';
    XV_MESG:=XV_MESG||'账户别名类型出现错误!';
    END;
    IF XV_STATUS<>'E' THEN
    FOR LC IN LCUR_ADJUST LOOP
    IF LC.ADJUST_QTY>0 THEN
    ln_txn_type_id:=41;--账户别名接收
    ELSE
    ln_txn_type_id:=31;--账户别名发放
    END IF;
    SELECT mtl_material_transactions_s.nextval
    INTO l_iface_rec.transaction_interface_id
    FROM dual;
    l_iface_rec.last_update_date := SYSDATE;
    l_iface_rec.last_updated_by := FND_GLOBAL.USER_ID;
    l_iface_rec.creation_date := SYSDATE;
    l_iface_rec.created_by := FND_GLOBAL.USER_ID;
    l_iface_rec.last_update_login := -1;
    l_iface_rec.transaction_header_id := l_iface_rec.transaction_interface_id;
    l_iface_rec.transaction_mode := 3;
    l_iface_rec.process_flag := 1;
    l_iface_rec.transaction_type_id := ln_txn_type_id;
    l_iface_rec.transaction_source_id := lv_transaction_source_id;
    l_iface_rec.Transaction_Source_Type_Id :=ln_txn_source_type_id;
    l_iface_rec.organization_id := LC.ORGANIZATION_ID;
    l_iface_rec.inventory_item_id := LC.ITEM_ID;
    l_iface_rec.locator_id :=LC.LOCATOR_ID;
    l_iface_rec.subinventory_code := LC.SUBINVENTORY_CODE;
    l_iface_rec.transaction_quantity := LC.ADJUST_QTY;
    l_iface_rec.Primary_Quantity := LC.ADJUST_QTY;
    l_iface_rec.transaction_uom := LC.PRIMARY_UOM_CODE;
    l_iface_rec.transaction_date := lv_transaction_date;
    l_iface_rec.acct_period_id :=ln_period_id;
    l_iface_rec.source_code := '库存期末调整';
    l_iface_rec.source_header_id := l_iface_rec.transaction_interface_id;
    l_iface_rec.source_line_id := LC.TRX_ID;
    --l_iface_rec.distribution_account_id:=lv_distribution_account_id;
    INSERT INTO inv.mtl_transactions_interface VALUES l_iface_rec;
    IF LC.LOT_NUMBER IS NOT NULL THEN
    l_iface_lot_rec.transaction_interface_id := l_iface_rec.transaction_interface_id;
    l_iface_lot_rec.lot_number := LC.LOT_NUMBER;
    l_iface_lot_rec.transaction_quantity := l_iface_rec.transaction_quantity;
    l_iface_lot_rec.source_code := l_iface_rec.source_code;
    l_iface_lot_rec.source_line_id := l_iface_rec.source_line_id;
    END IF;
    UPDATE CUX_ONHAND_QTY_ADJUST_T COQA SET COQA.IMPORT_FLAG='Y' WHERE COQA.TRX_ID=LC.TRX_ID;
    END LOOP;
    COMMIT;
    DELETE CUX_ONHAND_QTY_ADJUST_T COQ WHERE COQ.IMPORT_FLAG IS NULL;
    COMMIT;
    END IF;
    EXCEPTION
    WHEN OTHERS THEN
    ROLLBACK;
    XV_STATUS:='E';
    XV_MESG:=XV_MESG||'数据插入接口出现错误!';
    END;

    插入接口表数据后,系统会使用计划的请求“库存事务处理工作流程” 和“处理事务处理接口” (接口管理中提交)对数据进行验证和处理

    遇到问题:分配账户字段无效

    原因分析:

    1、刚开始处理以为是账户组合被失效,检查每个账户字段未发现失效的段。然后通过系统标准的杂项事物处理功能操作账户别名,同样的账户别名可以正常操作,正常产生分配。

    3、考虑可能由账户安全性问题导致,但是用具体可操作的职责在事务处理接口界面查到后重新提交,发现仍有问题。

    2、后查看请求“库存事务处理工作流程” 和“处理事务处理接口” ,发现这两个请求是由一个单一访问库存组织的职责提交。可访问的公司段为102,但出错的事务处理账户分配公司段是101,由此得出错误出现的原因。

    3、系统在提交请求时会按照请求所提交的职责进行安全性验证(这就是我们在程序包调用请求时需要先初始化职责的原因)。

    结论:

    由以上分析可以得出,事务处理接口表中的数据在验证和处理时与请求提交的职责安全性验证有关,与数据录入的职责无关。

    所以在提交公共的接口处理及工作流处理请求时,一定要使用全访问的安全性校验的职责否则就会出现问题。

  • 相关阅读:
    Hadoop1重新格式化HDFS
    centos6.5之Hadoop1.2.1完全分布式部署安装
    Mybatis延迟加载和查询缓存
    剑指offer面试题7:用两个栈实现队列
    Mybatis输入输出映射
    Mybatis开发Dao
    Mybatis入门程序
    SpringMVC系列之URL匹配问题
    SpringMVC系列之主要组件
    mysql学习笔记(三)
  • 原文地址:https://www.cnblogs.com/lipera/p/6278994.html
Copyright © 2011-2022 走看看