1.接口表数据检查无误

2.同样数据界面能正常完成

界面做trace

SQL ID: b2mw8gjyv7guh Plan Hash: 2015965341



DELETE FROM MTL_SERIAL_NUMBERS_TEMP 

WHERE

TRANSACTION_TEMP_ID =  :b1





call     count       cpu    elapsed       disk      query    current        rows

------- ------  -------- ---------- ---------- ---------- ----------  ----------

Parse        0      0.00       0.00          0          0          0           0

Execute      2      0.00       0.00          0          4          0           0

Fetch        0      0.00       0.00          0          0          0           0

------- ------  -------- ---------- ---------- ---------- ----------  ----------

total        2      0.00       0.00          0          4          0           0



Misses in library cache during parse: 0

Optimizer mode: ALL_ROWS

Parsing user id: 173 



Elapsed times include waiting on following events:

  Event waited on                             Times   Max. Wait  Total Waited

  ----------------------------------------   Waited  ----------  ------------

  SQL*Net message to client                       2        0.00          0.00

  SQL*Net message from client                     2        0.00          0.00

********************************************************************************



SQL ID: 9mq64qp6s994x Plan Hash: 0



INSERT INTO MTL_SERIAL_NUMBERS_TEMP ( TRANSACTION_TEMP_ID , LAST_UPDATE_DATE ,

   LAST_UPDATED_BY , CREATION_DATE , CREATED_BY , LAST_UPDATE_LOGIN ,

  REQUEST_ID , PROGRAM_APPLICATION_ID , PROGRAM_ID , PROGRAM_UPDATE_DATE ,

  VENDOR_SERIAL_NUMBER , VENDOR_LOT_NUMBER , FM_SERIAL_NUMBER ,

  TO_SERIAL_NUMBER , SERIAL_PREFIX , ERROR_CODE , GROUP_HEADER_ID ,

  PARENT_SERIAL_NUMBER , PRODUCT_TRANSACTION_ID , PRODUCT_CODE ,

  PARENT_OBJECT_ID , PARENT_OBJECT_TYPE , PARENT_OBJECT_ID2 ,

  PARENT_OBJECT_TYPE2 ) 

VALUES

( :b1 , :b2 , :b3 , :b4 , :b5 , :b6 , :b7 , :b8 , :b9 , :b10 , :b11 , :b12 ,

  :b13 , :b14 , :b15 , :b16 , :b17 , :b18 , :b19 , :b20 , :b21 , :b22 , :b23 ,

   :b24 )





call     count       cpu    elapsed       disk      query    current        rows

------- ------  -------- ---------- ---------- ---------- ----------  ----------

Parse        0      0.00       0.00          0          0          0           0

Execute      2      0.02       0.02          0          0         10           2

Fetch        0      0.00       0.00          0          0          0           0

------- ------  -------- ---------- ---------- ---------- ----------  ----------

total        2      0.02       0.02          0          0         10           2



Misses in library cache during parse: 0

Optimizer mode: ALL_ROWS

Parsing user id: 173 



Elapsed times include waiting on following events:

  Event waited on                             Times   Max. Wait  Total Waited

  ----------------------------------------   Waited  ----------  ------------

  SQL*Net message to client                       2        0.00          0.00

  SQL*Net message from client                     2        0.00          0.01

  SQL*Net more data from client                   2        0.00          0.00

********************************************************************************

发现界面走的是temp 表跳过验证,详情参见 http://blog.csdn.net/cai_xingyun/article/details/38071713

没办法做程序trace
API  :inv_txn_manager_pub.process_transactions
打开相关调试配置文件

先备份;重写 日志生成包  inv_log_util  将日志插入 log_test 表

CREATE OR REPLACE PACKAGE BODY inv_log_util AS
/* $Header: INVLOGUB.pls 120.2 2006/10/13 16:41:35 rambrose noship $ */

/** Globals to hold Logging attributs **/
g_fd utl_file.file_type;         --
Log file descriptor
g_trace_on number := NULL;          --
Log ON state
g_dbg_lvl number := 0;
g_cp_flag number := 0;
g_file_init boolean := false;
g_dbgpath varchar2( 256)
:= '_' ;
g_invfile  varchar2( 256)
:= NULL ;

g_conc_request_id number :=
FND_GLOBAL.CONC_REQUEST_ID;


--
-- ***** trace ****
-- Looks up the profile values INV_DEBUG_LEVEL, INV_DEBUG_TRACE, and
-- INV_DEBUG_FILE and red1irects the log-output based on the profile values.
-- If this is invoked in the context of a concurrent program, then
-- the output is also redirected to the concurrent program's log file
--
PROCEDURE trace(p_message VARCHAR2 ,
                p_module  VARCHAR2,
                p_level   NUMBER := 9 ) IS

  l_dbgfile        varchar2(256 )
;
  l_errmsg         varchar2(256 );
  l_timestamp      varchar2(256 );
  l_dbgpath        varchar2(128 );
  l_ndx            number;
  l_strlen         number;
  l_dbgdir         varchar2(256 );
  l_dir_separator  varchar2(1 );
  l_session     varchar2(256 );
  l_message     VARCHAR2(2000 );
  --Bug
3559334 fix. Variable not used in code, but resulting in
  --extra
calls to fnd api.
  --l_debug
number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
BEGIN
  --
Since the forms-server and MWA server recycles database connections
  --
we need to always check for debug profiles values and see if they
  --
are different from the values with which it was initialized earlier. If
  --
different then reinitialize the debug variables
 CUX_DEBUG.test_log( '1',p_module,p_message);
END trace;
END inv_log_util;

获取出错信息定位

找到对应程序包 INV_TRX_MGR 发现调用java
FUNCTION PROCESS_TRX_BATCH(p_header_id IN   NUMBER,
                           p_commit    IN  NUMBER ,
                           p_atomic    IN  NUMBER ,
                           p_business_flow_code IN NUMBER ,
                           x_proc_msg  OUT NOCOPY VARCHAR2 )  RETURN NUMBER AS
    LANGUAGE JAVA NAME 'oracle.apps.inv.transaction.server.TrxProcessor.processTrxBatch(java.lang.Long,
                        java.lang.Integer,
                        java.lang.Integer,
                        java.lang.Integer,
                        java.lang.String[]) return java.lang.Integer' ;


上服务器找到java包

猜测是在验证序列里出错 查找文件 SerialNumber.class 找到出错方法

    public static int validateStatus(int i, int j, boolean flag, int k, int l, long l1, int i1,

            long l2, long l3)

        throws InvTrxException

    {

        int j1 = getGroupId(i, j);

        int k1 = l;

        Object obj = null;

        int i2 = -1;

        if(TrxUtil.isTraceEnabled)

        {

            TrxUtil.log("Came here inside of validate serial status", 1);

            TrxUtil.log("SrcTypeId = " + i + ",ActId=" + j + ",SerCtrl+" + k + ",CurStatus=" + l + ",TrxGroup=" + j1 + " ,LstTxnSrcTypId=" + l1 + ",xfrSerCtrl=" + i1 + ",mOrigWipEntId=" + l2 + ",TrxSrcId=" + l3);

        }

        switch(j1)

        {

        default:

            break;



        case 1: // '\001'

            if(flag)

            {

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("validate_status:SO_RMA_GROUP. isIssue true");

                if(k == 2 || k == 3 || k == 5)

                {

                    if(i == 8 && j == 21)

                    {

                        if(l == 3)

                        {

                            if(i1 == 1)

                                k1 = 4;

                            else

                                k1 = 5;

                        } else

                        {

                            if(TrxUtil.isTraceEnabled)

                                TrxUtil.log("Invalid status for Int. Order Intransit ship1 :" + l, 1);

                            TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                            throw new InvTrxException("Invalid status in SO_RMA_GROUP");

                        }

                    } else

                    if(l == 3)

                    {

                        if(i == 8 && j == 3 && i1 == 6)

                            k1 = 1;

                        else

                            k1 = 4;

                    } else

                    {

                        if(TrxUtil.isTraceEnabled)

                            TrxUtil.log("Invalid status in RMA_GRP/Issue1 :" + l, 1);

                        TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                        throw new InvTrxException("Invalid status in SO_RMA_GROUP");

                    }

                } else

                if(k == 6)

                    if(i == 8 && j == 21)

                    {

                        if(l == 1 || l == 3 || l == 6)

                        {

                            if(i1 == 1)

                                k1 = 4;

                            else

                                k1 = 5;

                        } else

                        {

                            if(TrxUtil.isTraceEnabled)

                                TrxUtil.log("Invalid status for Int. Order Intransit ship2 :" + l, 1);

                            TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                            throw new InvTrxException("Invalid status in RMA_GRP");

                        }

                    } else

                    if(l == 1 || l == 3)

                    {

                        if(i == 8 && j == 3 && i1 == 6)

                            k1 = 1;

                        else

                            k1 = 4;

                    } else

                    {

                        if(TrxUtil.isTraceEnabled)

                            TrxUtil.log("Invalid status in RMA_GRP/Issue2 :" + l, 1);

                        TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                        throw new InvTrxException("Invalid status in RMA_GRP");

                    }

                break;

            }

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("validate_status:SO_RMA_GROUP. isIssue false");

            if(k == 2 || k == 3)

            {

                if(l == 1 || l == 4)

                {

                    k1 = 3;

                    break;

                }

                if((i == 12 || i == 7) && (l == 5 || l == 7))

                {

                    k1 = 3;

                    break;

                }

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("Invalid status in RMA_GRP/Rcpt :" + l, 1);

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in RMA_GRP");

            }

            if(k == 5)

            {

                if(l == 1 || l == 4)

                {

                    k1 = 3;

                    break;

                }

                if((i == 12 || i == 7) && (l == 5 || l == 7))

                {

                    k1 = 3;

                    break;

                }

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("Invalid status in RMA_GRP/Rcpt2 :" + l, 1);

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in RMA_GRP");

            }

            if(k != 6)

                break;

            if(l1 == 12L && l == 1 && TrxUtil.restrictRcptSerial)

            {

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("Invalid status in RMA_GRP- Trying to receive the SerialNumber that is already received thro RMA :" + l, 1);

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in RMA_GRP");

            }

            if((i == 7 || j == 12) && (l == 5 || l == 7))

            {

                k1 = 1;

                break;

            }

            if(l == 1 || l == 4 || l == 5 || l == 7)

            {

                k1 = 1;

                break;

            }

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("Invalid status in RMA_GRP/Rcpt3 :" + l, 1);

            TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

            throw new InvTrxException("Invalid status in RMA_GRP");



        case 2: // '\002'

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("validate_status:SUB_XFER_GROUP:Came here inside", 1);

            if(k != 2 && k != 3 && k != 5)

                break;

            if(flag && l == 3)

            {

                k1 = 4;

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("validatestaus CurStatus=" + l, 1);

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("validatestaus Newstatus= " + k1, 1);

                break;

            }

            if(!flag && (l == 4 || l == 3))

            {

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("validatestaus CurStatus=" + l, 1);

                k1 = 3;

                break;

            }

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("Invalid status in SUBXFER_GRP :" + l, 1);

            TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

            throw new InvTrxException("Invalid status in SuvXfer_Grp");



        case 3: // '\003'

            if(flag)

            {

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("validate_status:INTRANS_GROUP. isIssue true");

                if(k != 2 && k != 3 && k != 5)

                    break;

                if(l == 3)

                {

                    if(TrxUtil.isTraceEnabled)

                        TrxUtil.log("-----> Inside isIssue of INTRANS_GROUP");

                    if(i1 == 1)

                        k1 = 4;

                    else

                        k1 = 5;

                    break;

                }

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("Invalid status in INTRAN group: curstat=" + l, 1);

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in INTRAN ");

            }

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("validate_status:INTRANS_GROUP. isIssue false");

            if(k == 2 || k == 3)

            {

                if(l == 1 || l == 4 || l == 5 || l == 7)

                {

                    k1 = 3;

                    break;

                }

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("Invalid status in INTRAN Group:", 1);

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in INTRAN ");

            }

            if(k == 5)

            {

                if(l == 1 || l == 4 || l == 5 || l == 7)

                {

                    k1 = 3;

                    break;

                }

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("Invalid status in INTRAN Group:", 1);

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in INTRAN ");

            }

            if(k != 6)

                break;

            if((l == 5 || l == 7) && (i == 7 || j == 12))

            {

                k1 = 1;

                break;

            }

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("Invalid status in INTRAN Group:", 1);

            TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

            throw new InvTrxException("Invalid status in INTRAN ");



        case 4: // '\004'

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("validate_status:PACKUNPACK_GROUP.");

            if(flag && l == 3)

            {

                k1 = 4;

                break;

            }

            if(!flag && (l == 4 || l == 3))

            {

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("validatestaus CurStatus=" + l, 1);

                k1 = 3;

                break;

            }

            if(l == 3 || l == 5 && l1 == 5L)

                break;

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("Invalid status in PACKUNPACK_GROUP :" + l, 1);

            TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

            throw new InvTrxException("Invalid status in PACKUNPACK_GROUP ");



        case 6: // '\006'

            if(flag)

            {

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("validate_status:LOT_TRX_GROUP. isIssue true");

                if(j == 40 || j == 41)

                {

                    if(l != 3)

                    {

                        if(TrxUtil.isTraceEnabled)

                            TrxUtil.log("Invalid status in LOT_TRX_GROUP :" + l, 1);

                        TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                        throw new InvTrxException("Invalid status in LOT_TRX_GROUP ");

                    }

                    k1 = 3;

                    break;

                }

                if(j != 42)

                    break;

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("CASE LOT_TRX_GROUP:Issue:TA_LOTTRANS");

                if(l != 3)

                {

                    if(TrxUtil.isTraceEnabled)

                        TrxUtil.log("Invalid status in LOT_TRX_GROUP for lot trans :" + l, 1);

                    TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                    throw new InvTrxException("Invalid status in LOT_TRX_GROUP ");

                }

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("CASE LOT_TRX_GROUP:Issue:TA_LOTTRANS: newStatus SN_NOTUSED");

                k1 = 1;

                break;

            }

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("validate_status:LOT_TRX_GROUP. isIssue false");

            if(j == 40 || j == 41)

            {

                if(l != 3)

                {

                    if(TrxUtil.isTraceEnabled)

                        TrxUtil.log("Invalid status in LOT_TRX_GROUP :" + l, 1);

                    TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                    throw new InvTrxException("Invalid status in LOT_TRX_GROUP ");

                }

                k1 = 3;

                break;

            }

            if(j != 42)

                break;

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("CASE LOT_TRX_GROUP:!Issue:TA_LOTTRANS:CurSTatus=> " + l);

            if(l == 1 || l == 6 || l == 3)

            {

                k1 = 3;

                break;

            }

            if(l != 4)

                break;

            if(TrxUtil.restrictRcptSerial)

            {

                if(TrxUtil.isTraceEnabled)

                {

                    TrxUtil.log("CASE LOT_TRX_GROUP:Receipt of Issued Out Serials Not allowed :CurSTatus=> " + l);

                    TrxUtil.log("Invalid status due to RESTRICT_RCPT_SER :" + l, 1);

                }

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in STD_GRP");

            }

            k1 = 3;

            break;



        case 5: // '\005'

            if(i == 5)

            {

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("validate_status:STD_GROUP. srcType WIP, action:" + j);

                if(j == 31 || j == 32)

                    try

                    {

                        PSChkWipEtyTyp.setLong(1, l3);

                        ResultSet resultset = PSChkWipEtyTyp.executeQuery();

                        if(resultset.next())

                            i2 = resultset.getInt(1);

                        resultset.close();

                    }

                    catch(Exception exception)

                    {

                        if(TrxUtil.isTraceEnabled)

                            TrxUtil.log(" Ex. in getting wip entity id" + exception);

                    }

                if((j == 31 && l != 1 && l1 != 5L || j == 32 && l1 == 5L) && l2 == -1L)

                {

                    if(TrxUtil.isTraceEnabled)

                        TrxUtil.log("Error: Wip entity id is null", 1);

                    if(i2 != 6 && i2 != 7)

                    {

                        if(TrxUtil.isTraceEnabled)

                            TrxUtil.log("Error: Not an EAM job and Wip entity id is null", 1);

                        TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                        throw new InvTrxException("Invalid status in STD_GROUP ");

                    }

                    if(TrxUtil.isTraceEnabled)

                        TrxUtil.log("EAM job and Wip entity id is null, it is ok!!", 1);

                }

                if(j == 31 && l == 4 && l1 == 5L && l2 != 0L && l3 != 0L && i2 == 1 && l2 != l3 && TrxUtil.restrictRcptSerial)

                {

                    if(TrxUtil.isTraceEnabled)

                        TrxUtil.log("Error: This serial was returned through some other job and can not be used for the current job ", 1);

                    TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                    throw new InvTrxException("Invalid status in STD_GROUP ");

                }

            }

            if(flag)

            {

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("validate_status:STD_GROUP. isIssue true");

                if(k != 2 && k != 3 && k != 5)

                    break;

                if(l == 3)

                {

                    k1 = 4;

                    break;

                }

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("Invalid status in STD_GRP/Issue1 :" + l, 1);

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in STD_GRP");

            }

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("validate_status:STD_GROUP. isIssue false");

            if(k == 2 || k == 3)

            {

                if(i == 5)

                {

                    if(TrxUtil.restrictRcptSerial && j == 27 && l == 4 && l1 != 1L && l1 != 5L)

                    {

                        if(TrxUtil.isTraceEnabled)

                            TrxUtil.log("Invalid status due to RESTRICT_RCPT_SER :" + l, 1);

                        TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                        throw new InvTrxException("Invalid status in STD_GRP");

                    }

                } else

                if(TrxUtil.restrictRcptSerial && j == 27 && l == 4 && l1 != 1L)

                {

                    if(TrxUtil.isTraceEnabled)

                        TrxUtil.log("Invalid status due to RESTRICT_RCPT_SER :" + l, 1);

                    TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                    throw new InvTrxException("Invalid status in STD_GRP");

                }

                if(TrxUtil.restrictRcptSerial && j == 31 && l == 4 && l1 != 5L)

                {

                    if(TrxUtil.isTraceEnabled)

                        TrxUtil.log("Invalid status due to RESTRICT_RCPT_SER  :" + l, 1);

                    TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                    throw new InvTrxException("Invalid status in STD_GRP");

                }

                if(l == 1 || l == 4)

                {

                    if(j == 3 && i1 == 6)

                        k1 = 1;

                    else

                        k1 = 3;

                    break;

                }

                if(i == 1 && l == 5 && l1 != 8L && l1 != 13L || i == 5 && l == 5 && l1 != 8L && l1 != 13L || i == 1 && l == 7)

                {

                    k1 = 3;

                    break;

                }

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("Invalid status in STD_GRP/Rcpt1 :" + l, 1);

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in STD_GRP");

            }

            if(k != 5)

                break;

            if(i == 5)

            {

                if(TrxUtil.restrictRcptSerial && j == 27 && l == 4 && l1 != 1L && l1 != 5L)

                {

                    if(TrxUtil.isTraceEnabled)

                        TrxUtil.log("Invalid status due to RESTRICT_RCPT_SER :" + l, 1);

                    TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                    throw new InvTrxException("Invalid status in STD_GRP");

                }

            } else

            if(TrxUtil.restrictRcptSerial && j == 27 && l == 4 && l1 != 1L)

            {

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("Invalid status due to RESTRICT_RCPT_SER :" + l, 1);

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in STD_GRP");

            }

            if(TrxUtil.restrictRcptSerial && j == 31 && l == 4 && l1 != 5L)

            {

                if(TrxUtil.isTraceEnabled)

                    TrxUtil.log("Invalid status due to RESTRICT_RCPT_SER  :" + l, 1);

                TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

                throw new InvTrxException("Invalid status in STD_GRP");

            }

            if(l == 1 || l == 4)

            {

                if(j == 3 && i1 == 6)

                    k1 = 1;

                else

                    k1 = 3;

                break;

            }

            if(i == 1 && l == 5 && l1 != 8L && l1 != 13L || i == 5 && l == 5 && l1 != 8L && l1 != 13L || i == 1 && l == 7)

            {

                k1 = 3;

                break;

            }

            if(TrxUtil.isTraceEnabled)

                TrxUtil.log("Invalid status in STD_GRP/Rcpt2 :" + l, 1);

            TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

            throw new InvTrxException("Invalid status in STD_GRP");

        }

        return k1;

    }


发现是对一系列设置组合校验
  TrxUtil.log("Came here inside of validate serial status", 1);

            TrxUtil.log("SrcTypeId = " + i + ",ActId=" + j + ",SerCtrl+" + k + ",CurStatus=" + l + ",TrxGroup=" + j1 + " ,LstTxnSrcTypId=" + l1 + ",xfrSerCtrl=" + i1 + ",mOrigWipEntId=" + l2 + ",TrxSrcId=" + l3);

分析后程序最后没有找到组合最后抛出异常
 if(TrxUtil.isTraceEnabled)

                TrxUtil.log("Invalid status in STD_GRP/Rcpt2 :" + l, 1);

            TrxUtil.addMessage("INV", "INV_INVALID_SERIAL");

            throw new InvTrxException("Invalid status in STD_GRP");

检查上面组合系统设置
'SrcTypeId = 5  i   l_iface_rec.transaction_source_type_id
:= 5; --mtl_txn_source_types--生产管理


,ActId=27,  j   事物处理类型决定

SerCtrl+5  k   物料序列号控制 :接收时控制

,CurStatus=3, l  当前状态有现有量

TrxGroup=5 , j1  java程序根据 i 和 j 获取

LstTxnSrcTypId=13 l1 该物料上一次事物处理类型,序列表里

,xfrSerCtrl=-1, i1
mOrigWipEntId=-1, l2
TrxSrcId=265059' l3

WIP 投料报 Invalid Serial Number的更多相关文章

  1. 解决软件卸载时Abstract: "Invalid serial number" xe4

    In RAD Studio, Delphi, C++Builder, XE4 there can become a scenario if you try to modify, repair, upg ...

  2. nginx 报invalid pid number

    /opt/ibis/sbin/nginx -c /opt/ibis/conf/nginx.conf 这是make make install之后生成的文件夹和文件. -c c是configure的缩写 ...

  3. win8(x64)下,重新安装delphi 2007时出现“Invalid Serial Number”,如何解决?

    1)在添加删除程序里卸载delphi 2007 2)删除C:\ProgramData\CodeGear 3)删除C:\Program Files (x86)CodeGear 4)删除d:\Progra ...

  4. PP生产订单创建、下达、报工、收货、投料

    转自http://blog.sina.com.cn/s/blog_69fb8eb60102vpjd.html SAP 物料订单创建.下达.报工.收货与投料(ABAP代码) (2015-06-03 22 ...

  5. Source insight 3572版本安装及An invalid source insight serial number was detected解决方法

    Source insight有最新版3572.3.50.0076 下载连接:http://www.sourceinsight.com/down35.html,   http://www.sourcei ...

  6. 【排障】nginx在reload时候报错invalid PID number

    nginx在reload时候报错invalid PID number nginx重新加载配置文件时候报错,提示无效的PID: 解决的办法有二: 第一种思路是因为是加载配置文件报的错,所以用-c 选项指 ...

  7. Source insight 3572安装和版本号An invalid source insight serial number was detected解

    Source insight最新版本3572 下载链接:http://www.sourceinsight.com/down35.html,   http://www.sourceinsight.com ...

  8. nginx重启报错:nginx: [error] invalid PID number "" in "/run/nginx.pid"

    问题描述:执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错 nginx: [error] invalid PID number “” in “/run/ngin ...

  9. Centos7.5中Nginx报错:nginx: [error] invalid PID number "" in "/run/nginx.pid" 解决方法

    服务器重启之后,执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错 nginx: [error] invalid PID number "" ...

随机推荐

  1. 学生管理系统(SSM简易版)总结

    之前用 Servlet + JSP 实现了一个简易版的学生管理系统,在学习了 SSM 框架之后,我们来对之前写过的项目重构一下! 技术准备 为了完成这个项目,需要掌握如下技术: Java 基础知识 前 ...

  2. 背景重复样式background-repeat

    一.background-repeat属性 在CSS中,使用background-repeat属性可以设置背景图像是否平铺,并且可以设置如何平铺. 语法: background-repeat:取值; ...

  3. Docker学习系列(三)Docker搭建gitlab的两种方式

    一.直接下载docker-ce 1.拉取gitlab/gitlab-ce Randy:~ Randy$ docker pull gitlab/gitlab-ce Using default tag: ...

  4. spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

    在上一篇中分享了如何使用Eureka 进行服务治理,里面搭建的服务注册中心是单体的, 但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样 ...

  5. Android开发技巧——设置系统状态栏颜色

    开门见山,先来三张效果图: 然后我们再来讲如何实现以及如何快速地实现. 如何实现 实现设置系统状态栏颜色需要至少在Android 4.4.2(API 19)以上.这是因为,在这个版本以下,没有任何的A ...

  6. iOS Exception Code 之 Magic Number

    https://en.wikipedia.org/wiki/Hexspeak  iOS Exception Code 之 Magic Number 备忘.

  7. 初识Vulkan

    Vulkan是Khronos组织制定的"下一代"开放的图形显示API,是与DirectX12可以匹敌的GPU API标准.Vulkan是基于AMD的Mantle API演化而来,目 ...

  8. Android简易实战教程--第三十六话《电话录音》

    今天完成一个简单的电话录音功能,即接通电话后,立即录下自己打电话的声音.实现起来比较简单:一个服务,一个TelephonyManager.一个MediaRecorder就够了. 1.布局提供一个开启录 ...

  9. Objective-C's Init Method

    初始化器在其他面向对象的语言中(比如Java)指的是构造器. Objective-C同样拥有对象构造器在init形式的方法中.不管如何,在Objc中这些方法没有什么特殊的行为. 按照惯例,程序猿在in ...

  10. Android输入事件详解

    输入事件 在 Android 系统中,从用户与应用的交互中截获事件的方法不止一种.如考虑截获用户界面内的事件,则可从用户与之交互的特定视图对象中捕获事件. 为此,View 类提供了多种方法. 在您将用 ...