ORACLE EBS之 ECO导入

ECO 导入API

CREATE OR REPLACE PROCEDURE Eco_Test_Harry(p_Test_Tag IN VARCHAR2) IS
    l_Eco_Rec            Eng_Eco_Pub.Eco_Rec_Type;
    l_Eco_Revision_Tbl   Eng_Eco_Pub.Eco_Revision_Tbl_Type;
    l_Revised_Item_Tbl   Eng_Eco_Pub.Revised_Item_Tbl_Type;
    l_Rev_Component_Tbl  Bom_Bo_Pub.Rev_Component_Tbl_Type;
    l_Sub_Component_Tbl  Bom_Bo_Pub.Sub_Component_Tbl_Type;
    l_Ref_Designator_Tbl Bom_Bo_Pub.Ref_Designator_Tbl_Type;
  
    l_Orgai_Code           VARCHAR2(10);
    x_Eco_Rec              Eng_Eco_Pub.Eco_Rec_Type;
    x_Eco_Revision_Tbl     Eng_Eco_Pub.Eco_Revision_Tbl_Type;
    x_Revised_Item_Tbl     Eng_Eco_Pub.Revised_Item_Tbl_Type;
    x_Rev_Component_Tbl    Bom_Bo_Pub.Rev_Component_Tbl_Type;
    x_Sub_Component_Tbl    Bom_Bo_Pub.Sub_Component_Tbl_Type;
    x_Ref_Designator_Tbl   Bom_Bo_Pub.Ref_Designator_Tbl_Type;
    x_Rev_Operation_Tbl    Bom_Rtg_Pub.Rev_Operation_Tbl_Type;
    x_Rev_Op_Resource_Tbl  Bom_Rtg_Pub.Rev_Op_Resource_Tbl_Type;
    x_Rev_Sub_Resource_Tbl Bom_Rtg_Pub.Rev_Sub_Resource_Tbl_Type;
    l_Application_Id  NUMBER;
    l_Resp_Id         NUMBER;
    l_Resp_Name       VARCHAR2(30) := 'ENGINEERING';
    l_Return_Status        VARCHAR2(1);
    l_Msg_Count            NUMBER;
    l_Msg_Data             VARCHAR2(2000);
  --l_Error_Table Eng_Eco_Pub.Error_Tbl_Type;
  l_Error_Table  Error_Handler.Error_Tbl_Type;
  l_Message_Text VARCHAR2(2000);
  CURSOR c_Eco_Rec IS
    SELECT *
      FROM Eng_Eng_Changes_Interface
     WHERE Eng_Changes_Ifce_Key LIKE p_Test_Tag;
  CURSOR c_Eco_Rev IS
    SELECT *
      FROM Eng_Eco_Revisions_Interface
     WHERE Eng_Eco_Revisions_Ifce_Key LIKE p_Test_Tag;
  CURSOR c_Rev_Items IS
    SELECT *
      FROM Eng_Revised_Items_Interface
     WHERE Eng_Revised_Items_Ifce_Key LIKE p_Test_Tag;
  CURSOR c_Rev_Comps IS
    SELECT *
      FROM Bom_Inventory_Comps_Interface
     WHERE Bom_Inventory_Comps_Ifce_Key LIKE p_Test_Tag;
  CURSOR c_Sub_Comps IS
    SELECT *
      FROM Bom_Sub_Comps_Interface
     WHERE Bom_Sub_Comps_Ifce_Key LIKE p_Test_Tag;
  CURSOR c_Ref_Desgs IS
    SELECT *
      FROM Bom_Ref_Desgs_Interface
     WHERE Bom_Ref_Desgs_Ifce_Key LIKE p_Test_Tag;
  i NUMBER;
BEGIN
  -- 取当前用户登录的语言环境  
    SELECT Userenv('LANG')
      INTO v_Lang
      FROM Dual;  
    -- 依不同环境设定值
    IF v_Lang = 'ZHS' THEN
      v_Approval_Status_Name := '批准';
      v_Status_Name          := '打开';
    ELSE
      v_Approval_Status_Name := 'Approved';
      v_Status_Name          := 'Open';
    END IF;
  -- Query all the records and call the Private API.
  FOR Eco_Rec IN c_Eco_Rec LOOP
    l_Eco_Rec.Eco_Name          := Eco_Rec.Change_Notice;
    l_Eco_Rec.Organization_Code := Eco_Rec.Organization_Code;
    l_Eco_Rec.Change_Type_Code  := Eco_Rec.Change_Order_Type;
    --l_eco_rec.status_type := eco_rec.status_type; --HARRY
    l_Eco_Rec.Status_Name := Eco_Rec.Status_Name; --HARRY
    --    l_eco_rec.eco_department_name := eco_rec.responsible_org_code;
    l_Eco_Rec.Eco_Department_Name := Eco_Rec.Eco_Department_Name;
    l_Eco_Rec.Priority_Code       := Eco_Rec.Priority_Code;
    l_Eco_Rec.Approval_List_Name  := Eco_Rec.Approval_List_Name;
    --l_eco_rec.approval_status_type := eco_rec.approval_status_type; --HARRY
    l_Eco_Rec.Approval_Status_Name    := Eco_Rec.Approval_Status_Name; --HARRY
    l_Eco_Rec.Reason_Code             := Eco_Rec.Reason_Code;
    l_Eco_Rec.Eng_Implementation_Cost := Eco_Rec.Estimated_Eng_Cost;
    l_Eco_Rec.Mfg_Implementation_Cost := Eco_Rec.Estimated_Mfg_Cost;
    l_Eco_Rec.Cancellation_Comments   := Eco_Rec.Cancellation_Comments;
    --l_eco_rec.requestor := eco_rec.requestor; --HARRY
    l_Eco_Rec.Requestor := Eco_Rec.Requestor_User_Name; --HARRY
    --    l_eco_rec.requestor := eco_rec.requestor_id; --HARRY
    l_Eco_Rec.Description       := Eco_Rec.Description;
    l_Eco_Rec.Transaction_Type  := Eco_Rec.Transaction_Type;
    l_Eco_Rec.Plm_Or_Erp_Change := 'ERP';
  END LOOP;
  -- Fetch ECO Revisions
  i := 1;
  FOR Rev IN c_Eco_Rev LOOP
    l_Eco_Revision_Tbl(i).Eco_Name := Rev.Change_Notice;
    l_Eco_Revision_Tbl(i).Organization_Code := Rev.Organization_Code;
    l_Eco_Revision_Tbl(i).Revision := Rev.Revision;
    l_Eco_Revision_Tbl(i).New_Revision := Rev.New_Revision;
    l_Eco_Revision_Tbl(i).Comments := Rev.Comments;
    l_Eco_Revision_Tbl(i).Transaction_Type := Rev.Transaction_Type;
    i := i + 1;
  END LOOP;
  -- Fetch revised items
  i := 1;
  FOR Ri IN c_Rev_Items LOOP
    l_Revised_Item_Tbl(i).Eco_Name := Ri.Change_Notice;
    l_Revised_Item_Tbl(i).Organization_Code := Ri.Organization_Code;
    l_Revised_Item_Tbl(i).Revised_Item_Name := Ri.Revised_Item_Number;
    IF Ri.New_Item_Revision = Fnd_Api.g_Miss_Char THEN
      l_Revised_Item_Tbl(i).New_Revised_Item_Revision := NULL;
    ELSE
      l_Revised_Item_Tbl(i).New_Revised_Item_Revision := Ri.New_Item_Revision;
    END IF;
    l_Revised_Item_Tbl(i).Start_Effective_Date := Ri.Scheduled_Date;
    l_Revised_Item_Tbl(i).Alternate_Bom_Code := Ri.Alternate_Bom_Designator;
    l_Revised_Item_Tbl(i).Status_Type := Ri.Status_Type;
    l_Revised_Item_Tbl(i).Mrp_Active := Ri.Mrp_Active;
    l_Revised_Item_Tbl(i).Earliest_Effective_Date := Ri.Early_Schedule_Date;
    l_Revised_Item_Tbl(i).Use_Up_Item_Name := Ri.Use_Up_Item_Number;
    l_Revised_Item_Tbl(i).Use_Up_Plan_Name := Ri.Use_Up_Plan_Name;
    l_Revised_Item_Tbl(i).Disposition_Type := Ri.Disposition_Type;
    l_Revised_Item_Tbl(i).Update_Wip := Ri.Update_Wip;
    l_Revised_Item_Tbl(i).Cancel_Comments := Ri.Cancel_Comments;
    l_Revised_Item_Tbl(i).Change_Description := Ri.Descriptive_Text;
    l_Revised_Item_Tbl(i).Transaction_Type := Ri.Transaction_Type;
    i := i + 1;
  END LOOP;
  -- Fetch revised components
  i := 1;
  FOR Rc IN c_Rev_Comps LOOP
    l_Rev_Component_Tbl(i).Eco_Name := Rc.Change_Notice;
    l_Rev_Component_Tbl(i).Organization_Code := Rc.Organization_Code;
    l_Rev_Component_Tbl(i).Revised_Item_Name := Rc.Assembly_Item_Number;
    l_Rev_Component_Tbl(i).New_Revised_Item_Revision := NULL;
    l_Rev_Component_Tbl(i).Start_Effective_Date := Rc.Effectivity_Date;
    l_Rev_Component_Tbl(i).Disable_Date := Rc.Disable_Date;
    l_Rev_Component_Tbl(i).Operation_Sequence_Number := Rc.Operation_Seq_Num;
    l_Rev_Component_Tbl(i).Component_Item_Name := Rc.Component_Item_Number;
    l_Rev_Component_Tbl(i).Alternate_Bom_Code := Rc.Alternate_Bom_Designator;
    l_Rev_Component_Tbl(i).Acd_Type := Rc.Acd_Type;
    l_Rev_Component_Tbl(i).Old_Effectivity_Date := Rc.Old_Effectivity_Date;
    l_Rev_Component_Tbl(i).Old_Operation_Sequence_Number := Rc.Old_Operation_Seq_Num;
    l_Rev_Component_Tbl(i).Item_Sequence_Number := Rc.Item_Num;
    l_Rev_Component_Tbl(i).Quantity_Per_Assembly := Rc.Component_Quantity;
    l_Rev_Component_Tbl(i).Planning_Percent := Rc.Planning_Factor;
    l_Rev_Component_Tbl(i).Projected_Yield := Rc.Component_Yield_Factor;
    l_Rev_Component_Tbl(i).Include_In_Cost_Rollup := Rc.Include_In_Cost_Rollup;
    l_Rev_Component_Tbl(i).Wip_Supply_Type := Rc.Wip_Supply_Type;
    l_Rev_Component_Tbl(i).So_Basis := Rc.So_Basis;
    l_Rev_Component_Tbl(i).Optional := Rc.Optional;
    l_Rev_Component_Tbl(i).Mutually_Exclusive := Rc.Mutually_Exclusive_Options;
    l_Rev_Component_Tbl(i).Check_Atp := Rc.Check_Atp;
    l_Rev_Component_Tbl(i).Shipping_Allowed := Rc.Shipping_Allowed;
    l_Rev_Component_Tbl(i).Required_To_Ship := Rc.Required_To_Ship;
    l_Rev_Component_Tbl(i).Required_For_Revenue := Rc.Required_For_Revenue;
    l_Rev_Component_Tbl(i).Include_On_Ship_Docs := Rc.Include_On_Ship_Docs;
    l_Rev_Component_Tbl(i).Quantity_Related := Rc.Quantity_Related;
    l_Rev_Component_Tbl(i).Supply_Subinventory := Rc.Supply_Subinventory;
    l_Rev_Component_Tbl(i).Location_Name := Rc.Location_Name;
    l_Rev_Component_Tbl(i).Minimum_Allowed_Quantity := Rc.Low_Quantity;
    l_Rev_Component_Tbl(i).Maximum_Allowed_Quantity := Rc.High_Quantity;
    --l_rev_component_tbl(i).component_remarks :=
    --rc.component_remarks;  --HARRY
    l_Rev_Component_Tbl(i).Comments := Rc.Component_Remarks; --HARRY
    l_Rev_Component_Tbl(i).Transaction_Type := Rc.Transaction_Type;
    i := i + 1;
  END LOOP;
  -- Fetch substitute component records
  i := 1;
  FOR Sc IN c_Sub_Comps LOOP
    l_Sub_Component_Tbl(i).Eco_Name := Sc.Change_Notice;
    l_Sub_Component_Tbl(i).Organization_Code := Sc.Organization_Code;
    l_Sub_Component_Tbl(i).Revised_Item_Name := Sc.Assembly_Item_Number;
    l_Sub_Component_Tbl(i).Start_Effective_Date := Sc.Effectivity_Date;
    l_Sub_Component_Tbl(i).New_Revised_Item_Revision := NULL;
    l_Sub_Component_Tbl(i).Component_Item_Name := Sc.Component_Item_Number;
    l_Sub_Component_Tbl(i).Alternate_Bom_Code := Sc.Alternate_Bom_Designator;
    l_Sub_Component_Tbl(i).Substitute_Component_Name := Sc.Substitute_Comp_Number;
    l_Sub_Component_Tbl(i).Acd_Type := Sc.Acd_Type;
    l_Sub_Component_Tbl(i).Operation_Sequence_Number := Sc.Operation_Seq_Num;
    l_Sub_Component_Tbl(i).Substitute_Item_Quantity := Sc.Substitute_Item_Quantity;
    l_Sub_Component_Tbl(i).Transaction_Type := Sc.Transaction_Type;
    i := i + 1;
  END LOOP;
  -- Fetch reference designators
  i := 1;
  FOR Rd IN c_Ref_Desgs LOOP
    l_Ref_Designator_Tbl(i).Eco_Name := Rd.Change_Notice;
    l_Ref_Designator_Tbl(i).Organization_Code := Rd.Organization_Code;
    l_Ref_Designator_Tbl(i).Revised_Item_Name := Rd.Assembly_Item_Number;
    l_Ref_Designator_Tbl(i).Start_Effective_Date := Rd.Effectivity_Date;
    l_Ref_Designator_Tbl(i).New_Revised_Item_Revision := NULL;
    l_Ref_Designator_Tbl(i).Operation_Sequence_Number := Rd.Operation_Seq_Num;
    l_Ref_Designator_Tbl(i).Component_Item_Name := Rd.Component_Item_Number;
    l_Ref_Designator_Tbl(i).Alternate_Bom_Code := Rd.Alternate_Bom_Designator;
    l_Ref_Designator_Tbl(i).Reference_Designator_Name := Rd.Component_Reference_Designator;
    l_Ref_Designator_Tbl(i).Acd_Type := Rd.Acd_Type;
    l_Ref_Designator_Tbl(i).Ref_Designator_Comment := Rd.Ref_Designator_Comment;
    l_Ref_Designator_Tbl(i).New_Reference_Designator := Rd.New_Designator;
    l_Ref_Designator_Tbl(i).Transaction_Type := Rd.Transaction_Type;
  END LOOP;
  SELECT Application_Id
              ,Responsibility_Id
          INTO l_Application_Id
              ,l_Resp_Id
          FROM Fnd_Responsibility
         WHERE Responsibility_Key = l_Resp_Name;
      
        Fnd_Global.Apps_Initialize(User_Id      => Fnd_Global.User_Id
                                  ,Resp_Id      => l_Resp_Id
                                  ,Resp_Appl_Id => l_Application_Id);
  Dbms_Output.Put_Line('Comes before process_eco call');
  -- Call the private API
  Eng_Eco_Pub.Process_Eco(p_Api_Version_Number   => 1.0
                         ,x_Return_Status        => l_Return_Status
                         ,x_Msg_Count            => l_Msg_Count
                         ,p_Eco_Rec              => l_Eco_Rec
                         ,p_Eco_Revision_Tbl     => l_Eco_Revision_Tbl
                         ,p_Revised_Item_Tbl     => l_Revised_Item_Tbl
                         ,p_Rev_Component_Tbl    => l_Rev_Component_Tbl
                         ,p_Sub_Component_Tbl    => l_Sub_Component_Tbl
                         ,p_Ref_Designator_Tbl   => l_Ref_Designator_Tbl
                         ,x_Eco_Rec              => l_Eco_Rec
                         ,x_Eco_Revision_Tbl     => l_Eco_Revision_Tbl
                         ,x_Revised_Item_Tbl     => l_Revised_Item_Tbl
                         ,x_Rev_Component_Tbl    => l_Rev_Component_Tbl
                         ,x_Sub_Component_Tbl    => l_Sub_Component_Tbl
                         ,x_Ref_Designator_Tbl   => l_Ref_Designator_Tbl
                         ,x_Rev_Operation_Tbl    => l_Rev_Operation_Tbl
                         ,x_Rev_Op_Resource_Tbl  => l_Rev_Op_Resource_Tbl
                         ,x_Rev_Sub_Resource_Tbl => l_Rev_Sub_Resource_Tbl);
  --
  -- On return from the PUB API
  -- Perform all the error handler operations to verify that the
  -- error or warning are displayed and all the error table interface
  -- function provided to the user work correctly;
  --
  Error_Handler.Get_Message_List(x_Message_List => l_Error_Table);
  FOR i IN 1 .. l_Error_Table.Count LOOP
    Dbms_Output.Put_Line('Entity Id:' || l_Error_Table(i).Entity_Id);
    Dbms_Output.Put_Line('Index:' || l_Error_Table(i).Entity_Index);
    Dbms_Output.Put_Line('Mesg:' || l_Error_Table(i).Message_Text);
    Dbms_Output.Put_Line('---------------------------------------');
  END LOOP;
  Dbms_Output.Put_Line('Total Messages:' || To_Char(i));
  l_Msg_Count := Error_Handler.Get_Message_Count;
  Dbms_Output.Put_Line('Message Count Function:' || To_Char(l_Msg_Count));
  Error_Handler.Dump_Message_List;
  Error_Handler.Get_Entity_Message(p_Entity_Id    => 'ECO'
                                  ,x_Message_List => l_Error_Table);
  Error_Handler.Get_Entity_Message(p_Entity_Id    => 'REV'
                                  ,x_Message_List => l_Error_Table);
  Error_Handler.Get_Entity_Message(p_Entity_Id    => 'RI'
                                  ,x_Message_List => l_Error_Table);
  Error_Handler.Get_Entity_Message(p_Entity_Id    => 'RC'
                                  ,x_Message_List => l_Error_Table);
  Error_Handler.Get_Entity_Message(p_Entity_Id    => 'SC'
                                  ,x_Message_List => l_Error_Table);
  Error_Handler.Get_Entity_Message(p_Entity_Id    => 'RD'
                                  ,x_Message_List => l_Error_Table);
  COMMIT;
END Eco_Test_Harry;

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值