zoukankan      html  css  js  c++  java
  • 不能创建会计分录

    http://blog.csdn.net/yy5512/article/details/4404772

    能创建会计分录   
    --------------------------------------------------------------------------------
    打补丁:6826219和6901404

    处理原理:
    如果创建会计分录失败,只要把xla_events.event_status_code和xla_events.process_status_code都改成'U',
    然后提交<<创建会计科目>>请求或者直接在**界面创建会计分录,
    创建会计分录程序不管xla_ae_headers和xla_ae_lines是否有与xla_events相应记录,
    都会重新创建xla_ae_headers和xla_ae_lines记录

    -----------------------------------------------------------------------------
    处理应付**不能创建会计分录例子一:
    create table xla_events_bkp
    as select * from xla_events
    where event_id in (select event_id  from xla_events e
                      where e.application_id = 200
                      and e.event_status_code ='P'
                    and not exists ( select 1 from xla_ae_headers h
                                    where e.event_id = h.event_id ));
    UPDATE xla_events
    SET event_status_code = 'U',
      process_status_code = 'U'
    WHERE event_id IN (select event_id  from xla_events e
                      where e.application_id = 200
                      and e.event_status_code ='P'
                      and not exists ( select 1 from xla_ae_headers h
                                        where e.event_id = h.event_id ));
    运行<<创建会计科目>>请求
    -----------------------------------------------------------------------------
    处理应付**不能创建会计分录例子二:
    **号200803005(已取消) 部分创建会计分录,付款号1102000006 不能创建会计分录
    因为先有**再有付款,所以思路
    1.先试图创建**的会计分录
    SELECT invoice_num,invoice_id,doc_sequence_id,doc_sequence_value FROM ap_invoices_all
    WHERE invoice_num = '200803005'

    select event_id,ae_header_id,a.* from xla_ae_headers a
    WHERE doc_sequence_id = 130
    AND doc_sequence_value = '210401983'

    SELECT event_id,a.* FROM xla_ae_headers a
    WHERE event_id IN (70300,80395)
    找到那条xla_ae_headers记录没有创建会计分录的event_id=70300,ae_header_id=57016

    DELETE FROM xla_ae_lines
    WHERE ae_header_id = 57016

    DELETE FROM xla_ae_headers
    WHERE ae_header_id = 57016

    UPDATE xla_events
    SET event_status_code = 'U',
      process_status_code = 'U'
    WHERE event_id =  70300
    运行<<创建会计科目>>请求
    2.再试图创建付款的会计分录
    SELECT * FROM xla_ae_headers
    WHERE DESCRIPTION LIKE '%1102000006%'
      AND je_category_name = 'Payments'

    DELETE xla_ae_lines
    WHERE ae_header_id IN (101270,101271)

    DELETE xla_ae_headers
    WHERE ae_header_id IN (101270,101271)

    UPDATE xla_events
    SET event_status_code = 'U',
      process_status_code = 'U'
    WHERE event_id IN (70302,80394)
    运行<<创建会计科目>>请求
    -----------------------------------------------------------------------------
    处理应付**不能创建会计分录例子三
    ET1104应付 **号8000480849/859/862没有创建会计分录的原因是:
    该**行1和 **行2 已放弃.

    损益行中的帐户无效。如果您已定义损益日记帐行类型,请在日记帐行定义中检查附加至该类型的帐户推导规则。否则,请检查映射至会计属性“汇兑收益帐户”和“汇兑损失帐户”
    的来源值。
    无法创建帐户,因为 &OWNER 拥有的帐户推导规则 &COMPONENT_NAME 的所有条件均不满足。请更新 &COMPONENT_NAME 的条件,或分配其它帐户推导规则至 &PAD_OWNER 拥有的
    应用产品会计定义 &PAD_NAME.
    子分类帐会计无法使用 &OWNER 拥有的帐户推导规则 &COMPONENT_NAME 导出会计科目代码组合。请复核帐户推导规则,并确保对于为此事务处理传送的来源值,此规则可以导出
    有效的会计科目弹性域组合。

    请根据以上错误信息,检查 当**行被放弃时,汇兑损益 相关的帐户推导规则 ,映射至会计属性“汇兑收益帐户”和“汇兑损失帐户”的来源值,

    但是顾问没有检查出来设置是否有问题。这也许是oracle的一个bug.

    临时处理方法:
    直接在表中删除了放弃行的**分配行和**行
    CREATE TABLE AP_INVOICE_DISTRIBUTIONS_0427
    AS SELECT * FROM AP_INVOICE_DISTRIBUTIONS_all
    WHERE invoice_id = 15761 and invoice_line_number IN (1,2) 

    SELECT * FROM AP_INVOICE_DISTRIBUTIONS_0427

    CREATE TABLE AP_INVOICE_LINES_0427 as
    SELECT * FROM AP_INVOICE_LINES_all
    WHERE invoice_id = 15761
      AND line_number IN (1,2)
      
    SELECT * FROM AP_INVOICE_LINES_0427
      
    DELETE FROM AP_INVOICE_DISTRIBUTIONS_all
    WHERE invoice_id = 15761 and invoice_line_number IN (1,2) 

    DELETE FROM AP_INVOICE_LINES_all
    WHERE invoice_id = 15761
      AND line_number IN (1,2)
    直接在**界面创建会计分录

    最终处理方法:建议用户提tar由oracle官方解决
    -----------------------------------------------------------------------------
    处理应付**不能创建会计分录例子四:
    这张**2008030888.不能创建会计分录的原因是 没有录入**的分配信息
    -----------------------------------------------------------------------------
    处理应付**不能创建会计分录例子五:
    标准**核销预付款**后,部分会计分录不能创建。已入帐显示:部分
    措施:
    先在**界面上验证相关**,然后在**界面上创建会计分录
    -----------------------------------------------------------------------------
    处理应付**不能创建会计分录例子六:
    骆勇平员工由于EBS bug,再导入费用报表后,产生两个骆勇平供应商,经过删除其中一个供应商和供应商地点后
    产生的出来会计分录信息居然还有被删除供应商的ID,供应商地点ID
    措施:
    找到了xla_ae_lines.party_id(这里找到有些会计分录的创建是根据以前会计分录记录来创建的,比如ref_event_id,ref_ae_header_id)
    于是将xla_ae_lines.party_id,xla_ae_lines.party_site_id统统改成了现在的骆勇平供应商ID和供应商地点ID
    运行cux_fix_invoice_accounting_pkg.fix_invoices程序,修正数据
    运行<<创建会计科目>>请求
    ----------------------------------------------------------------------------
    修正数据的程序包cux_fix_invoice_accounting_pkg:
    CREATE OR REPLACE PACKAGE cux_fix_invoice_accounting_pkg IS
      PROCEDURE fix_invoices(p_invoice_id IN NUMBER);
      PROCEDURE fix_payments(p_payment_num IN VARCHAR2);
    END;
    /
    CREATE OR REPLACE PACKAGE BODY cux_fix_invoice_accounting_pkg IS
      PROCEDURE fix_invoices(p_invoice_id IN NUMBER) IS
        CURSOR cur_invoice(i_cur_invoice_id IN NUMBER) IS
          SELECT doc_sequence_id,doc_sequence_value FROM ap_invoices_all
            WHERE invoice_id = i_cur_invoice_id;
        CURSOR cur_xla_ae_headers(i_cur_doc_sequence_id IN NUMBER,i_cur_doc_sequence_value IN NUMBER) IS
          SELECT event_id,ae_header_id from xla_ae_headers
           WHERE doc_sequence_id = i_cur_doc_sequence_id
             AND doc_sequence_value = i_cur_doc_sequence_value;
      BEGIN
        FOR rec_invoice IN cur_invoice(p_invoice_id) LOOP
          FOR rec_xla_ae_headers IN cur_xla_ae_headers(rec_invoice.doc_sequence_id,rec_invoice.doc_sequence_value) LOOP
            INSERT  INTO xla_ae_lines080421
              SELECT * FROM xla_ae_lines
                WHERE ae_header_id = rec_xla_ae_headers.ae_header_id;
            INSERT INTO xla_ae_headers080421
              SELECT * FROM xla_ae_headers
              WHERE ae_header_id = rec_xla_ae_headers.ae_header_id;
            DELETE xla_ae_lines
              WHERE ae_header_id = rec_xla_ae_headers.ae_header_id;
            DELETE xla_ae_headers
              WHERE ae_header_id = rec_xla_ae_headers.ae_header_id;
          END LOOP;
        END LOOP;
        
        UPDATE xla_events
        SET event_status_code = 'U',process_status_code = 'U'
        WHERE event_id IN (SELECT event_id  FROM xla_events e
                             WHERE e.application_id = 200
                               AND e.event_status_code ='P'
                               AND NOT EXISTS (SELECT 1 FROM xla_ae_headers h
                                                 WHERE e.event_id = h.event_id ));
        COMMIT;
      END;
      
      PROCEDURE fix_payments(p_payment_num IN VARCHAR2) IS
        CURSOR cur_xla_ae_headers(i_cur_payment_num IN NUMBER) IS
          SELECT event_id,ae_header_id from xla_ae_headers
           WHERE description LIKE '%'||i_cur_payment_num||'%'
             AND je_category_name = 'Payments';
      BEGIN
        FOR rec_xla_ae_headers IN cur_xla_ae_headers(p_payment_num) LOOP
          INSERT  INTO xla_ae_lines080421
            SELECT * FROM xla_ae_lines
              WHERE ae_header_id = rec_xla_ae_headers.ae_header_id;
          INSERT INTO xla_ae_headers080421
            SELECT * FROM xla_ae_headers
            WHERE ae_header_id = rec_xla_ae_headers.ae_header_id;
          DELETE xla_ae_lines
            WHERE ae_header_id = rec_xla_ae_headers.ae_header_id;
          DELETE xla_ae_headers
            WHERE ae_header_id = rec_xla_ae_headers.ae_header_id;
        END LOOP;
        
        UPDATE xla_events
        SET event_status_code = 'U',process_status_code = 'U'
        WHERE event_id IN (SELECT event_id  FROM xla_events e
                             WHERE e.application_id = 200
                               AND e.event_status_code ='P'
                               AND NOT EXISTS (SELECT 1 FROM xla_ae_headers h
                                                 WHERE e.event_id = h.event_id ));
        COMMIT;
      END;
    END;
    /
    --=============================================================================
    处理应收事务处理不能创建会计分录例子:
    贷项通知单11040000002921不能创建会计分录

    通过界面找到贷项通知单11040000002921对应的原始**11040000002801,
    发现11040000002801没有创建会计分录,在界面上将11040000002801创建会计分录成功。

    贷项通知单11040000002921按完成按钮后,发现不能保存,做跟踪约束值,
    发现跟踪文件的最后几句
    *******************************************************************************

    SELECT AE.EVENT_ID , AE.EVENT_DATE , AE.EVENT_STATUS_CODE, AE.EVENT_TYPE_CODE 
    FROM
    XLA_EVENTS AE, XLA_TRANSACTION_ENTITIES_UPG XT, RA_CUSTOMER_TRX_ALL TRX 
      WHERE TRX.CUSTOMER_TRX_ID = :B3 AND NVL(XT.SOURCE_ID_INT_1,-99) = 
      TRX.CUSTOMER_TRX_ID AND XT.ENTITY_CODE = 'TRANSACTIONS' AND XT.LEDGER_ID = 
      TRX.SET_OF_BOOKS_ID AND XT.ENTITY_ID = AE.ENTITY_ID AND XT.APPLICATION_ID = 
      222 AND AE.APPLICATION_ID = 222 AND NVL(AE.EVENT_DATE, TO_DATE('01-01-1900',
      'DD-MM-YYYY')) = :B2 AND AE.EVENT_STATUS_CODE <> 'P' AND :B1 = 
      AE.EVENT_TYPE_CODE 


    call     count       cpu    elapsed       disk      query    current        rows
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    Parse        1      0.00       0.00          0          0          0           0
    Execute      1      0.00       0.00          0          0          0           0
    Fetch        1      0.00       0.00          0         11          2           1
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    total        3      0.00       0.00          0         11          2           1

    Misses in library cache during parse: 0
    Optimizer mode: ALL_ROWS
    Parsing user id: 44     (recursive depth: 1)
    *******************************************************************************

    SELECT MESSAGE_TEXT, MESSAGE_NUMBER, TYPE, FND_LOG_SEVERITY, CATEGORY, 
      SEVERITY 
    FROM
    FND_NEW_MESSAGES M, FND_APPLICATION A WHERE :B3 = M.MESSAGE_NAME AND :B2 = 
      M.LANGUAGE_CODE AND :B1 = A.APPLICATION_SHORT_NAME AND M.APPLICATION_ID = 
      A.APPLICATION_ID


    call     count       cpu    elapsed       disk      query    current        rows
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    Parse        0      0.00       0.00          0          0          0           0
    Execute      1      0.00       0.00          0          0          0           0
    Fetch        1      0.00       0.00          0          0          0           0
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    total        2      0.00       0.00          0          0          0           0

    Misses in library cache during parse: 0
    Optimizer mode: ALL_ROWS
    Parsing user id: 44     (recursive depth: 1)
    ********************************************************************************

    ROLLBACK TO AR_PAYMENT_SCHEDULE

    SELECT AE.EVENT_ID , AE.EVENT_DATE , AE.EVENT_STATUS_CODE, AE.EVENT_TYPE_CODE FROM XLA_EVENTS AE, XLA_TRANSACTION_ENTITIES_UPG XT, RA_CUSTOMER_TRX_ALL TRX WHERE TRX.CUSTOMER_TRX_ID = :B3 AND NVL(XT.SOURCE_ID_INT_1,-99) = TRX.CUSTOMER_TRX_ID AND XT.ENTITY_CODE = 'TRANSACTIONS' AND XT.LEDGER_ID = TRX.SET_OF_BOOKS_ID AND XT.ENTITY_ID = AE.ENTITY_ID AND XT.APPLICATION_ID = 222 AND AE.APPLICATION_ID = 222 AND NVL(AE.EVENT_DATE, TO_DATE('01-01-1900','DD-MM-YYYY')) = :B2 AND AE.EVENT_STATUS_CODE <> 'P' AND :B1 = AE.EVENT_TYPE_CODE 
    END OF STMT
    PARSE #358:c=0,e=53,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,tim=4237611529714
    BINDS #358:
    kkscoacd
    Bind#0
      oacdty=02 mxl=22(21) mxlc=00 mal=00 scl=00 pre=00
      oacflg=13 fl2=206001 frm=00 csi=00 siz=24 off=0
      kxsbbbfp=110ad52a0  bln=22  avl=04  flg=09
      value=22716
    Bind#1
      oacdty=12 mxl=07(07) mxlc=00 mal=00 scl=00 pre=00
      oacflg=13 fl2=206001 frm=00 csi=00 siz=8 off=0
      kxsbbbfp=110ad52d0  bln=07  avl=07  flg=09
      value="5/23/2008 0:0:0"
    Bind#2
      oacdty=01 mxl=32(09) mxlc=00 mal=00 scl=00 pre=00
      oacflg=13 fl2=206001 frm=01 csi=871 siz=32 off=0
      kxsbbbfp=110ad4a60  bln=32  avl=09  flg=09
      value="CM_CREATE"
    将具体参数值代入sql语句,得到:
    SELECT AE.EVENT_ID, AE.EVENT_DATE, AE.EVENT_STATUS_CODE, AE.EVENT_TYPE_CODE
      FROM XLA_EVENTS                   AE,
           XLA_TRANSACTION_ENTITIES_UPG XT,
           RA_CUSTOMER_TRX_ALL          TRX
    WHERE TRX.CUSTOMER_TRX_ID = 22716
       AND NVL(XT.SOURCE_ID_INT_1, -99) = TRX.CUSTOMER_TRX_ID
       AND XT.ENTITY_CODE = 'TRANSACTIONS'
       AND XT.LEDGER_ID = TRX.SET_OF_BOOKS_ID
       AND XT.ENTITY_ID = AE.ENTITY_ID
       AND XT.APPLICATION_ID = 222
       AND AE.APPLICATION_ID = 222
       AND NVL(AE.EVENT_DATE, TO_DATE('01-01-1900', 'DD-MM-YYYY')) = to_date('2008-05-23 00:00:00','YYYY-MM-DD HH24:MI:SS')
       AND AE.EVENT_STATUS_CODE <> 'P'
       AND 'CM_CREATE'= AE.EVENT_TYPE_CODE
    也就是说在按完成按钮是不应该出现以上SQL语句有值,即XLA_EVENTS.EVENT_STATUS_CODE <> 'P'的记录应该不存在

    措施:
    1.AE.EVENT_STATUS_CODE,ae.process_status_code暂时都改为'P', 
    然后再按完成按钮,这次保存成功。

    2.将AE.EVENT_STATUS_CODE,ae.process_status_code都改回'U',
    检查 xla_ae_headers,xla_ae_lines是否有数据,
    SELECT * FROM xla_ae_headers--no row
    WHERE event_id IN (162517,162518)
    SELECT * FROM xla_ae_lines--no row
    在界面上将11040000002801创建会计分录成功

  • 相关阅读:
    两种&
    安装版Windows是必须的
    检验CSS3.0兼容性的有趣东东
    Quadro和Geforce系列的区别
    ECMAScript
    多拉A梦的CSS(6) :not
    多拉A梦的CSS(1) Transform
    表单
    关于a元素的伪类
    多拉A梦的CSS(4) gradient
  • 原文地址:https://www.cnblogs.com/xiaoL/p/5170168.html
Copyright © 2011-2022 走看看