GVKun编程网logo

Oracle EBS INV 创建物料搬运单行(oracle创建表并导入数据)

3

此处将为大家介绍关于OracleEBSINV创建物料搬运单行的详细内容,并且为您解答有关oracle创建表并导入数据的相关问题,此外,我们还将为您介绍关于APC&INVdifferentaboutit

此处将为大家介绍关于Oracle EBS INV 创建物料搬运单行的详细内容,并且为您解答有关oracle创建表并导入数据的相关问题,此外,我们还将为您介绍关于APC&INV different about items、c – Mat.inv()在opencv中产生全零、EBS - INV 接口大全、EBS oracle 批量导入更新 MOQ(最小拆分量、采购提前期、最小订购量、最小包装量)的有用信息。

本文目录一览:

Oracle EBS INV 创建物料搬运单行(oracle创建表并导入数据)

Oracle EBS INV 创建物料搬运单行(oracle创建表并导入数据)

CREATE OR REPLACE
PROCEDURE CreateMoveOrderLines AS 
        -- Common Declarations
        l_api_version     NUMBER := 1.0; 
        l_init_msg_list     VARCHAR2(2) := FND_API.G_TRUE; 
        l_return_values    VARCHAR2(2) := FND_API.G_FALSE; 
        l_commit     VARCHAR2(2) := FND_API.G_FALSE; 
        x_return_status    VARCHAR2(2);
        x_msg_count     NUMBER := 0;
        x_msg_data         VARCHAR2(255);
    
        -- WHO columns
        l_user_id          NUMBER := -1;
        l_resp_id          NUMBER := -1;
        l_application_id  NUMBER := -1;
        l_row_cnt           NUMBER := 1;
        l_user_name          VARCHAR2(30) := ''MFG'';
        l_resp_name        VARCHAR2(50) := ''Manufacturing and Distribution Manager'';   
        
        -- API specific declarations
        l_trolin_tbl             INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
        l_trolin_val_tbl         INV_MOVE_ORDER_PUB.TROLIN_VAL_TBL_TYPE;
        x_trolin_tbl             INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
        x_trolin_val_tbl         INV_MOVE_ORDER_PUB.TROLIN_VAL_TBL_TYPE;
        l_validation_flag        VARCHAR2(2) := INV_MOVE_ORDER_PUB.G_VALIDATION_YES; 
  
BEGIN
 
        -- Get the user_id
        SELECT user_id
        INTO l_user_id
        FROM fnd_user
        WHERE user_name = l_user_name;
      
        -- Get the application_id and responsibility_id
        SELECT application_id, responsibility_id
        INTO l_application_id, l_resp_id
        FROM fnd_responsibility_vl
        WHERE responsibility_name = l_resp_name;
      
        FND_GLOBAL.APPS_INITIALIZE(l_user_id, l_resp_id, l_application_id);  
        dbms_output.put_line(''Initialized applications context: ''|| l_user_id || '' ''|| l_resp_id ||'' ''|| l_application_id );
        
        -- creates lines for every header created before, and provides the line_id        
        -- Initialize the variables
        l_trolin_tbl(l_row_cnt).header_id          :=  4073038;                       
        l_trolin_tbl(l_row_cnt).date_required      :=  sysdate;                                     
        l_trolin_tbl(l_row_cnt).organization_id     :=  207;        
        l_trolin_tbl(l_row_cnt).inventory_item_id    :=  513963;       
        l_trolin_tbl(l_row_cnt).from_subinventory_code    :=  ''Stores'';                                        
        l_trolin_tbl(l_row_cnt).to_subinventory_code    :=  ''FGI'';    
        l_trolin_tbl(l_row_cnt).quantity      :=  2;                                          
        l_trolin_tbl(l_row_cnt).status_date      :=  sysdate;                                      
        l_trolin_tbl(l_row_cnt).uom_code            :=  ''Ea'';   
        l_trolin_tbl(l_row_cnt).line_number            := l_row_cnt;                                   
        l_trolin_tbl(l_row_cnt).line_status      := INV_Globals.G_TO_STATUS_PREAPPROVED;          
        l_trolin_tbl(l_row_cnt).db_flag              := FND_API.G_TRUE;                               
        l_trolin_tbl(l_row_cnt).operation      := INV_GLOBALS.G_OPR_CREATE;                     

        -- Who columns
        l_trolin_tbl(l_row_cnt).created_by    := l_user_id;                           
        l_trolin_tbl(l_row_cnt).creation_date      := sysdate;                                      
        l_trolin_tbl(l_row_cnt).last_updated_by    := l_user_id;                           
        l_trolin_tbl(l_row_cnt).last_update_date  := sysdate;                                      
        l_trolin_tbl(l_row_cnt).last_update_login  := FND_GLOBAL.login_id;                       
           
       -- call API to create move order lines
       DBMS_OUTPUT.PUT_LINE(''=========================================================='');
       DBMS_OUTPUT.PUT_LINE(''Calling INV_MOVE_ORDER_PUB.Create_Move_Order_Lines API'');        

       INV_MOVE_ORDER_PUB.Create_Move_Order_Lines( 
                 P_API_VERSION_NUMBER   => l_api_version
              ,  P_INIT_MSG_LIST        => l_init_msg_list
              ,  P_RETURN_VALUES        => l_return_values
              ,  P_COMMIT               => l_commit
              ,  X_RETURN_STATUS        => x_return_status
              ,  X_MSG_COUNT            => x_msg_count
              ,  X_MSG_DATA             => x_msg_data
              ,  P_TROLIN_TBL           => l_trolin_tbl
              ,  P_TROLIN_VAL_TBL       => l_trolin_val_tbl
              ,  X_TROLIN_TBL           => x_trolin_tbl
              ,  X_TROLIN_VAL_TBL  => x_trolin_val_tbl
              ,  P_VALIDATION_FLAG  => l_validation_flag
      ); 
         
     DBMS_OUTPUT.PUT_LINE(''=========================================================='');
     DBMS_OUTPUT.PUT_LINE(''Return Status: ''||x_return_status);

     IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
        DBMS_OUTPUT.PUT_LINE(''Error Message :''||x_msg_data);
     END IF;
     
     IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
        DBMS_OUTPUT.PUT_LINE(''Move Order Lines Created Successfully for ''||x_trolin_tbl(l_row_cnt).header_id);
     END IF;                 

     DBMS_OUTPUT.PUT_LINE(''=========================================================='');

EXCEPTION
        WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE(''Exception Occured :'');
          DBMS_OUTPUT.PUT_LINE(SQLCODE ||'':''||SQLERRM);
          DBMS_OUTPUT.PUT_LINE(''======================================================='');
END CreateMoveOrderLines;

  

APC&INV different about items

APC&INV different about items

SELECT *   FROM (SELECT msib.segment1 item_num,               fl_col.descriptive_flex_context_code attr_group_name,               fl_col.end_user_column_name attr_internal_name_apc,               tl.form_left_prompt attr_name_apc,               fl_col.application_column_name database_column_apc,               DECODE (fl_col.application_column_name,                       'C_EXT_ATTR1',emib.c_ext_attr1,                       'C_EXT_ATTR2',emib.c_ext_attr2,                       'C_EXT_ATTR3',emib.c_ext_attr3,                       'C_EXT_ATTR4',emib.c_ext_attr4,                       'C_EXT_ATTR5',emib.c_ext_attr5,                       'C_EXT_ATTR6',emib.c_ext_attr6,                       'C_EXT_ATTR7',emib.c_ext_attr7,                       'C_EXT_ATTR8',emib.c_ext_attr8,                       'C_EXT_ATTR9',emib.c_ext_attr9,                       'C_EXT_ATTR10',emib.c_ext_attr10,                       'C_EXT_ATTR11',emib.c_ext_attr11,                       'C_EXT_ATTR12',emib.c_ext_attr12,                       'C_EXT_ATTR13',emib.c_ext_attr13,                       'C_EXT_ATTR14',emib.c_ext_attr14,                       'C_EXT_ATTR15',emib.c_ext_attr15,                       'C_EXT_ATTR16',emib.c_ext_attr16,                       'C_EXT_ATTR17',emib.c_ext_attr17,                       'C_EXT_ATTR18',emib.c_ext_attr18,                       'C_EXT_ATTR19',emib.c_ext_attr19,                       'C_EXT_ATTR20',emib.c_ext_attr20,                       'C_EXT_ATTR21',emib.c_ext_attr21,                       'C_EXT_ATTR22',emib.c_ext_attr22,                       'C_EXT_ATTR23',emib.c_ext_attr23,                       'C_EXT_ATTR24',emib.c_ext_attr24,                       'C_EXT_ATTR25',emib.c_ext_attr25,                       'C_EXT_ATTR26',emib.c_ext_attr26,                       'C_EXT_ATTR27',emib.c_ext_attr27,                       'C_EXT_ATTR28',emib.c_ext_attr28,                       'C_EXT_ATTR29',emib.c_ext_attr29,                       'C_EXT_ATTR30',emib.c_ext_attr30,                       'C_EXT_ATTR31',emib.c_ext_attr31,                       'C_EXT_ATTR32',emib.c_ext_attr32,                       'C_EXT_ATTR33',emib.c_ext_attr33,                       'C_EXT_ATTR34',emib.c_ext_attr34,                       'C_EXT_ATTR35',emib.c_ext_attr35,                       'C_EXT_ATTR36',emib.c_ext_attr36,                       'C_EXT_ATTR37',emib.c_ext_attr37,                       'C_EXT_ATTR38',emib.c_ext_attr38,                       'C_EXT_ATTR39',emib.c_ext_attr39,                       'C_EXT_ATTR40',emib.c_ext_attr40                       ) attr_name_value_apc,               (SELECT MAX (mdev.element_value)                   FROM mtl_descr_element_values mdev                  WHERE msib.inventory_item_id =                                         mdev.inventory_item_id                    AND mdev.element_name = tl.form_left_prompt)                                                                attr_value_inv           FROM fnd_descr_flex_column_usages fl_col,               ego_fnd_dsc_flx_ctx_ext fl_ctx_ext,               fnd_descr_flex_col_usage_tl tl,               ego_mtl_sy_items_ext_b emib,               mtl_system_items_b msib,               hr_organization_units hou,               mtl_item_catalog_groups_tl mcg,               fnd_descr_flex_contexts_tl fdfct          WHERE msib.organization_id = hou.organization_id            AND hou.NAME = 'Item Master Org - IO'            AND (msib.item_type = 'emm' OR msib.item_type = 'OEMOD')            AND msib.item_catalog_group_id = mcg.item_catalog_group_id            AND fdfct.application_id = fl_col.application_id            AND fl_col.application_id = fl_ctx_ext.application_id            AND fl_col.descriptive_flex_context_code =                                       fl_ctx_ext.descriptive_flex_context_code            AND fl_col.descriptive_flexfield_name =                                          fl_ctx_ext.descriptive_flexfield_name            AND tl.application_id = fl_col.application_id            AND tl.descriptive_flexfield_name =                                              fl_col.descriptive_flexfield_name            AND tl.descriptive_flex_context_code =                                           fl_col.descriptive_flex_context_code            AND tl.application_column_name = fl_col.application_column_name            AND fl_col.enabled_flag = 'Y'            AND tl.LANGUAGE = USERENV ('LANG')            AND tl.LANGUAGE = mcg.LANGUAGE            AND tl.LANGUAGE = fdfct.LANGUAGE            AND emib.organization_id = hou.organization_id            AND emib.attr_group_id = fl_ctx_ext.attr_group_id            AND fdfct.descriptive_flex_context_code =                                       fl_ctx_ext.descriptive_flex_context_code            AND fdfct.descriptive_flex_context_name = mcg.description            AND fl_ctx_ext.application_id > 0            AND emib.inventory_item_id = msib.inventory_item_id            AND emib.organization_id = msib.organization_id            AND fl_col.descriptive_flex_context_code <> 'EMR_PIC_ATTRIBS' --        AND   msib.SEGMENT1='EZX2-A20'        )  WHERE NVL (attr_name_value_apc,CHR (0)) <> NVL (attr_value_inv,CHR (0))

c – Mat.inv()在opencv中产生全零

c – Mat.inv()在opencv中产生全零

我有以下代码:
cv::Mat temp0 = R.t();
    cv::Mat temp1 = R * temp0;
    cv::Mat temp2(960,960,CV_32FC1);
    temp2 = temp1.inv();

    cv::Size s = temp1.size();
    std::cout<<s.height<<" "<<s.width<<std::endl;

    std::cout<<cv::format(temp1,"numpy" ) << std::endl;
    std::cout<<cv::format(temp2,"numpy" ) << std::endl;

Transpose工作正常,矩阵乘法也是如此.因此,Mat temp1的大小为960×960.但是,当我执行temp2 = temp1.inv()时,我收到temp2中的所有零.我的意思是零是所有960×960细胞.此外,R仅为CV_32FC1类型.所以它可能不是数据类型问题.我无法理解这里的问题.我用Google搜索了这么多.你能帮忙吗?

编辑

我正在复制Mat :: inv()函数的gdb输出下面.我很难搞清楚这一切,但如果有人更熟悉OpenCV,也许它会有所帮助:)

Breakpoint 1,CreateShares::ConstructShares (this=0x80556d0,channel=...,k=2,n=4) at CreateShares.cpp:165
165     temp2 = temp1.inv();
(gdb) step

cv::Mat::operator= (this=0xbffff294,e=...) at /usr/include/opencv2/core/mat.hpp:1373
1373        e.op->assign(e,*this);
(gdb) 
1374        return *this;
(gdb) step
1375    }    
(gdb) step
cv::MatExpr::~MatExpr (this=0xbfffef64,__in_chrg=<optimized out>) at /usr/include/opencv2/core/mat.hpp:1167
1167    class CV_EXPORTS MatExpr
(gdb) step
cv::Mat::~Mat (this=0xbfffefdc,__in_chrg=<optimized out>) at /usr/include/opencv2/core/mat.hpp:295
295     release();
(gdb) step
cv::Mat::release (this=0xbfffefdc) at /usr/include/opencv2/core/mat.hpp:381
381     if( refcount && CV_XADD(refcount,-1) == 1 )
(gdb) step
383     data = datastart = dataend = datalimit = 0;
(gdb) step
384     size.p[0] = 0;
(gdb) step
385     refcount = 0;
(gdb) step
386 }
(gdb) step
cv::Mat::~Mat (this=0xbfffefdc,__in_chrg=<optimized out>) at /usr/include/opencv2/core/mat.hpp:296
296     if( step.p != step.buf )
(gdb) step
298 }
(gdb) step
cv::Mat::~Mat (this=0xbfffefa4,__in_chrg=<optimized out>) at /usr/include/opencv2/core/mat.hpp:295
295     release();
(gdb) step
cv::Mat::release (this=0xbfffefa4) at /usr/include/opencv2/core/mat.hpp:381
381     if( refcount && CV_XADD(refcount,-1) == 1 )
(gdb) step
383     data = datastart = dataend = datalimit = 0;
(gdb) step
384     size.p[0] = 0;
(gdb) step
385     refcount = 0;
(gdb) step
386 }
(gdb) step
cv::Mat::~Mat (this=0xbfffefa4,__in_chrg=<optimized out>) at /usr/include/opencv2/core/mat.hpp:296
296     if( step.p != step.buf )
(gdb) step
298 }
(gdb) step
cv::Mat::~Mat (this=0xbfffef6c,__in_chrg=<optimized out>) at /usr/include/opencv2/core/mat.hpp:295
295     release();
(gdb) step
cv::Mat::release (this=0xbfffef6c) at /usr/include/opencv2/core/mat.hpp:381
381     if( refcount && CV_XADD(refcount,-1) == 1 )
(gdb) step
383     data = datastart = dataend = datalimit = 0;
(gdb) step
384     size.p[0] = 0;
(gdb) step
385     refcount = 0;
(gdb) step
386 }
(gdb) step
cv::Mat::~Mat (this=0xbfffef6c,__in_chrg=<optimized out>) at /usr/include/opencv2/core/mat.hpp:296
296     if( step.p != step.buf )
(gdb) step
298 }
(gdb) step
CreateShares::ConstructShares (this=0x80556d0,n=4) at CreateShares.cpp:167
167     cv::Size s = temp1.size();
(gdb) step
cv::Mat::MSize::operator() (this=0xbffff284) at /usr/include/opencv2/core/mat.hpp:705
705     return Size(p[1],p[0]);
(gdb) step
cv::Size_<int>::Size_ (this=0xbffff2f8,_width=960,_height=960) at /usr/include/opencv2/core/operations.hpp:1624
1624        : width(_width),height(_height) {}
(gdb) step
cv::Mat::MSize::operator() (this=0xbffff284) at /usr/include/opencv2/core/mat.hpp:706
706 }
(gdb) step

解决方法

最有可能的是,行列式为零.

来自维基百科:

A square matrix that is not invertible is called singular or
degenerate. A square matrix is singular if and only if its determinant
is 0.

你可以像这样显示行列式……

std::cout<<"determinant(temp1)="<<cv::determinant(temp1)<<"\n";

从the documentation for Mat::inv()开始,有三种方法可供选择:

> DECOMP_LU(默认值)是LU分解.矩阵必须是非单数的.
> DECOMP_CHOLESKY只是对称正定义矩阵的Cholesky分解.这种类型比大矩阵上的LU快两倍.
> DECOMP_SVD是SVD分解.如果矩阵是奇异的或甚至是非正方形,则计算伪反转.

从the documentation for invert()开始,这可能是由Mat :: inv()在内部使用的:

In the case of DECOMP_LU method,the function returns the src
determinant ( src must be square). If it is 0,the matrix is not
inverted and dst is filled with zeros.

这与您所看到的结果一致.

关于数学的注释

我不是数学家,但我觉得反转矩阵可能是一个混乱的事情 – 如果你的矩阵非常大,更是如此.实际上,原则上存在这些反转可能是正确的,但实际上不可能以任何精度计算.在使用您的代码进行一些实验时,我发现在很多情况下,我会得到不完全为零的行列式,但非常接近于零 – 可能表明数值精度可能是限制因素.我尝试使用64位值而不是32来指定矩阵,并且得到了不同,但不一定是更好的答案.

根据计算temp1矩阵的方式,识别它总是对称的可能是有用的. DECOMP_CHOLESKY方法专门设计用于对称positive definite矩阵,因此使用它可能会提供一些优势.

在实验上,我发现归一化(由@cedrou建议)使得反函数更有可能返回非零矩阵(使用DECOMP_LU但不使用DECOMP_CHOLESKY).但是,根据我对如何初始化R矩阵的猜测,得到的矩阵似乎永远不会满足逆矩阵的定义:A * inverse(A)= Identity.但是你并不一定关心这一点 – 这也许是SVD方法计算伪逆的原因.

最后,似乎关于为什么反演失败的这个更深层次的问题可能是数学问题而不是编程问题.基于此我在数学网站上做了一些搜索,结果发现有人已经问过如何做这件事:https://math.stackexchange.com/questions/182662

关于调试的说明

根据您的调试跟踪,我倾向于认为您感兴趣的部分已编译为不可跟踪的库,并在您运行步骤时跳过.换句话说,在第一步之后的那个神秘的空白行代表它实际运行inv()函数的部分.之后,它将结果分配给temp2并破坏临时对象.因此,您的调试跟踪不会告诉我们有关inv()内部发生的事情.

165     temp2 = temp1.inv();
(gdb) step

cv::Mat::operator= (this=0xbffff294,*this);

我自己运行了一个调试器,并能够通过内部调用遍历invert()并观察它根据矩阵的内部分析(确定它不可逆)决定失败 – 并因此返回填充的矩阵使用零,匹配您报告的内容.

如果您有兴趣查看源代码,则可以在cxlapack.cpp中定义invert()函数.

EBS - INV 接口大全

EBS - INV 接口大全

#接口 API 列表 | 序号 | 接口名称 | API 名称 | |------------|:------------|:-----------| |1 | 物料 ABC 分类创建 |<a href="#1">inv_abc_assignments_pub.create_abc_assignments</a>| |2 | 创建物料批次 |<a href="#2">inv_lot_api_pub.create_inv_lot</a>| |3 | 物料组织分配 |<a href="#3">ego_item_pub.process_item_org_assignments</a>| |4 | 物料搬运单关闭 | 关闭头:<a href="#4.1">inv_mo_admin_pub.close_order</a><br > 关闭行:<a href="#4.2">inv_mo_admin_pub.close_line</a>|

对应接口测试脚本

##<a name="1">1. 物料 ABC 分类创建 </a>

DECLARE
  x_return_status VARCHAR2(10);
  x_msg_count     NUMBER;
  x_msg_data      VARCHAR2(2000);

  l_abc_assignments_rec inv_abc_assignments_pub.abc_assignments_rec_type := inv_abc_assignments_pub.g_miss_assignments_rec_type;
BEGIN
  l_abc_assignments_rec.inventory_item_id   := 196161;--物料
  l_abc_assignments_rec.assignment_group_id := 2003;--分配组
  l_abc_assignments_rec.abc_class_id        := 2001;--ABC 分类

  inv_abc_assignments_pub.create_abc_assignments(p_init_msg_list       => fnd_api.g_true
                                                ,p_commit              => fnd_api.g_false
                                                ,p_api_version_number  => 1.0
                                                ,x_return_status       => x_return_status
                                                ,x_msg_count           => x_msg_count
                                                ,x_msg_data            => x_msg_data
                                                ,p_abc_assignments_rec => l_abc_assignments_rec);
  dbms_output.put_line(''x_msg_data:'' || x_msg_data);
END;

##<a name="2">2. 创建物料批次 </a>

##<a name="3">3. 物料组织分配 </a>

##4. 物料搬运单关闭头 ###<a name="4.1">4.1. 物料搬运单关闭头 </a>

###<a name="4.2">4.2. 物料搬运单关闭行 </a>

EBS oracle 批量导入更新 MOQ(最小拆分量、采购提前期、最小订购量、最小包装量)

EBS oracle 批量导入更新 MOQ(最小拆分量、采购提前期、最小订购量、最小包装量)

EXCEL 的列:组织 id, 供应商编号,供应商地点,料号,最小拆分量、采购提前期、最小订购量、最小包装量

 

-- 采购导入更新 MOQ 四个值,若有为空的那列,会保留原来的值,不会去更新那列的值
PROCEDURE UPDATE_PO_MOQ AS
CURSOR PO_MOQ_CUR IS
SELECT ID,
TRIM(ORG_ID) ORG_ID,
trim(vendor_no) vendor_no,
trim(vendor_site) vendor_site,
trim(segment1) segment1,
TRIM(min_split_qty) min_split_qty,
TRIM(processing_lead_time) processing_lead_time,
TRIM(min_order_qty) min_order_qty,
TRIM(fixed_order_quantity) fixed_order_quantity
FROM CUX.UPDATE_PO_MOQ_TEMP1; --CUX.EXCEL_BOM_LMH;
E_CHECK EXCEPTION;
V_ERR_MESSAGE VARCHAR2(2000);
L_VENDOR_ID NUMBER :=0;
L_VENDOR_SITE NUMBER :=0;
l_INVENTORY_ITEM_ID number := 0;
-- l_ORGANIZATION_ID number := 0;
L_COUNT NUMBER := 0;
begin
BEGIN
-- 清空导入错误表
DELETE FROM CUX_IMPORT_DATA_ERROR;
FOR PO_MOQ_REC IN PO_MOQ_CUR LOOP
BEGIN
SELECT count(*) into L_COUNT
FROM MEG_CUX_ORG_V
WHERE OPERATING_UNIT = PO_MOQ_REC.ORG_ID;
EXCEPTION
WHEN NO_DATA_FOUND THEN
V_ERR_MESSAGE := '' 业务实体【'' || PO_MOQ_REC.ORG_ID || ''】不存在 -'';
RAISE E_CHECK;
END;
BEGIN
SELECT P.VENDOR_ID into L_VENDOR_ID
FROM PO_VENDORS P
WHERE SEGMENT1 = PO_MOQ_REC.VENDOR_NO;
EXCEPTION
WHEN NO_DATA_FOUND THEN
V_ERR_MESSAGE := '' 供应商编号【'' || PO_MOQ_REC.VENDOR_NO || ''】不存在 -'';
RAISE E_CHECK;
END;
BEGIN
SELECT T.VENDOR_SITE_ID INTO L_VENDOR_SITE
FROM AP_SUPPLIER_SITES_ALL T
WHERE vendor_site_code = PO_MOQ_REC.VENDOR_SITE
and T.VENDOR_ID=L_VENDOR_ID
AND org_id =PO_MOQ_REC.ORG_ID;
EXCEPTION
WHEN NO_DATA_FOUND THEN
V_ERR_MESSAGE := '' 供应商简称 / 地点【'' || PO_MOQ_REC.VENDOR_SITE || ''】不存在 -'';
RAISE E_CHECK;
END ;
BEGIN
select msi.inventory_item_id
into l_INVENTORY_ITEM_ID
from mtl_system_items_b msi
where msi.segment1 = PO_MOQ_REC.SEGMENT1
and msi.organization_id = 140;
EXCEPTION
WHEN NO_DATA_FOUND THEN
V_ERR_MESSAGE := '' 料号【'' || PO_MOQ_REC.SEGMENT1 || ''】不存在 -'';
RAISE E_CHECK;
END;
BEGIN
-- 为空的列,不更新,保留原来的值
UPDATE PO_ASL_ATTRIBUTES PAA
SET PAA.ATTRIBUTE1=nvl(PO_MOQ_REC.MIN_SPLIT_QTY,PAA.ATTRIBUTE1),
PAA.PROCESSING_LEAD_TIME=nvl(PO_MOQ_REC.PROCESSING_LEAD_TIME,PAA.PROCESSING_LEAD_TIME),
PAA.MIN_ORDER_QTY=nvl(PO_MOQ_REC.MIN_ORDER_QTY,PAA.MIN_ORDER_QTY),
PAA.FIXED_LOT_MULTIPLE=nvl(PO_MOQ_REC.FIXED_ORDER_QUANTITY,PAA.FIXED_LOT_MULTIPLE)
WHERE vendor_id= L_VENDOR_ID
AND vendor_site_id =L_VENDOR_SITE
AND item_id =l_INVENTORY_ITEM_ID;
EXCEPTION
WHEN E_CHECK THEN
INSERT INTO CUX_IMPORT_DATA_ERROR
(ID, COLUMN_VALUES, ERR_MESSAGE)
VALUES
(PO_MOQ_REC.ID,
''【'' || PO_MOQ_REC.VENDOR_NO || ''】-【'' ||
PO_MOQ_REC.SEGMENT1 || ''】'',
V_ERR_MESSAGE);
END;
END LOOP;
END;
COMMIT;
end UPDATE_PO_MOQ;

关于Oracle EBS INV 创建物料搬运单行oracle创建表并导入数据的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于APC&INV different about items、c – Mat.inv()在opencv中产生全零、EBS - INV 接口大全、EBS oracle 批量导入更新 MOQ(最小拆分量、采购提前期、最小订购量、最小包装量)等相关内容,可以在本站寻找。

本文标签: