Create Sales Order API
创建Drop Ship Orders API 实例如下:
DECLARE
Ln_Org_Id NUMBER := 81;
Lt_Header_Rec Oe_Order_Pub.Header_Rec_Type;
Ln_User_Id NUMBER := 1230;
Lt_Line_Tbl Oe_Order_Pub.Line_Tbl_Type;
i NUMBER := 0;
Lt_Ret_Header_Rec Oe_Order_Pub.Header_Rec_Type;
Xt_Ret_Line_Tbl Oe_Order_Pub.Line_Tbl_Type;
Xv_Ret_Status VARCHAR2(1);
Lv_Ret_Message VARCHAR2(2000);
Lt_Action_Qeq_Tbl Oe_Order_Pub.Request_Tbl_Type;
Lt_Header_Val_Rec Oe_Order_Pub.Header_Val_Rec_Type;
Lt_Header_Adj_Tbl Oe_Order_Pub.Header_Adj_Tbl_Type;
Lt_Header_Adj_Val_Tbl Oe_Order_Pub.Header_Adj_Val_Tbl_Type;
Lt_Header_Price_Att_Tbl Oe_Order_Pub.Header_Price_Att_Tbl_Type;
Lt_Header_Adj_Att_Tbl Oe_Order_Pub.Header_Adj_Att_Tbl_Type;
Lt_Header_Adj_Assoc_Tbl Oe_Order_Pub.Header_Adj_Assoc_Tbl_Type;
Lt_Header_Scredit_Tbl Oe_Order_Pub.Header_Scredit_Tbl_Type;
Lt_Header_Scredit_Val_Tbl Oe_Order_Pub.Header_Scredit_Val_Tbl_Type;
Lt_Line_Adj_Tbl Oe_Order_Pub.Line_Adj_Tbl_Type;
Lt_Line_Price_Att_Tbl Oe_Order_Pub.Line_Price_Att_Tbl_Type;
Lt_Line_Adj_Att_Tbl Oe_Order_Pub.Line_Adj_Att_Tbl_Type;
Lt_Line_Adj_Assoc_Tbl Oe_Order_Pub.Line_Adj_Assoc_Tbl_Type;
Lt_Line_Scredit_Tbl Oe_Order_Pub.Line_Scredit_Tbl_Type;
Lt_Lot_Serial_Tbl Oe_Order_Pub.Lot_Serial_Tbl_Type;
Lt_Line_Val_Tbl Oe_Order_Pub.Line_Val_Tbl_Type;
Lt_Line_Adj_Val_Tbl Oe_Order_Pub.Line_Adj_Val_Tbl_Type;
Lt_Line_Scredit_Val_Tbl Oe_Order_Pub.Line_Scredit_Val_Tbl_Type;
Lt_Lot_Serial_Val_Tbl Oe_Order_Pub.Lot_Serial_Val_Tbl_Type;
Xt_Action_Qeq_Tbl Oe_Order_Pub.Request_Tbl_Type;
Ln_Api_Version_Number NUMBER := 1;
Ln_Msg_Count NUMBER;
Lv_Msg_Data VARCHAR2(8000);
Lv_Msg_Index_Out VARCHAR2(2000);
BEGIN
Mo_Global.Init('ONT');
Mo_Global.Set_Policy_Context('S', Ln_Org_Id);
Fnd_Global.Apps_Initialize(User_Id => Ln_User_Id
,Resp_Id => 50747 -- Order Management Super User
,Resp_Appl_Id => 50201 -- Oracle Order Management
);
Oe_Msg_Pub.Initialize;
Oe_Debug_Pub.Initialize;
Lt_Header_Rec := Oe_Order_Pub.g_Miss_Header_Rec;
Lt_Header_Rec.Operation := Oe_Globals.g_Opr_Create;
Lt_Header_Rec.Sold_To_Org_Id := 1593; --
Lt_Header_Rec.Org_Id := Ln_Org_Id;
Lt_Header_Rec.Ship_From_Org_Id := 84;
Lt_Header_Rec.Orig_Sys_Document_Ref := '测试直发业务201904300821';
Lt_Header_Rec.Source_Document_Id := 20190603;
Lt_Header_Rec.Order_Type_Id := 1014;
Lt_Header_Rec.Order_Source_Id := 0;
Lt_Header_Rec.Transactional_Curr_Code := 'CNY';
Lt_Header_Rec.Attribute1 := '10'; --安状类型
Lt_Header_Rec.Attribute2 := '12000'; --合同号
Lt_Header_Rec.Attribute3 := 'NO'; --是否WMS处理
Lt_Header_Rec.Payment_Term_Id := 5;
Lt_Header_Rec.Price_List_Id := 6017;
Lt_Header_Rec.Conversion_Type_Code := 'Corporate';
Lt_Header_Rec.Salesrep_Id := -3;
Lt_Header_Rec.Ordered_Date := SYSDATE;
Lt_Header_Rec.Order_Category_Code := 'ORDER';
Lt_Header_Rec.Flow_Status_Code := 'BOOKED';
--Who Column
Lt_Header_Rec.Creation_Date := SYSDATE;
Lt_Header_Rec.Created_By := Ln_User_Id;
Lt_Header_Rec.Last_Updated_By := Ln_User_Id;
Lt_Header_Rec.Last_Update_Date := SYSDATE;
Lt_Header_Rec.Last_Update_Login := Fnd_Global.Login_Id;
i := i + 1;
Lt_Line_Tbl(i) := Oe_Order_Pub.g_Miss_Line_Rec;
Lt_Line_Tbl(i).Operation := Oe_Globals.g_Opr_Create;
--与header相同的字段
Lt_Line_Tbl(i).Order_Source_Id := Lt_Header_Rec.Order_Source_Id;
Lt_Line_Tbl(i).Org_Id := Lt_Header_Rec.Org_Id;
Lt_Line_Tbl(i).Sold_To_Org_Id := Lt_Header_Rec.Sold_To_Org_Id;
Lt_Line_Tbl(i).Ship_From_Org_Id := Lt_Header_Rec.Ship_From_Org_Id;
Lt_Line_Tbl(i).Price_List_Id := Lt_Header_Rec.Price_List_Id;
Lt_Line_Tbl(i).Salesrep_Id := Lt_Header_Rec.Salesrep_Id;
Lt_Line_Tbl(i).Invoice_To_Org_Id := Lt_Header_Rec.Invoice_To_Org_Id;
Lt_Line_Tbl(i).Ship_To_Org_Id := Lt_Header_Rec.Ship_To_Org_Id;
--Who Column
Lt_Line_Tbl(i).Created_By := Lt_Header_Rec.Created_By;
Lt_Line_Tbl(i).Creation_Date := Lt_Header_Rec.Creation_Date;
Lt_Line_Tbl(i).Last_Updated_By := Lt_Header_Rec.Last_Updated_By;
Lt_Line_Tbl(i).Last_Update_Date := Lt_Header_Rec.Last_Update_Date;
Lt_Line_Tbl(i).Last_Update_Login := Lt_Header_Rec.Last_Update_Login;
--Om Line
Lt_Line_Tbl(i).Orig_Sys_Line_Ref := '测试直发业务201904300821';
Lt_Line_Tbl(i).Item_Type_Code := 'STANDARD';
Lt_Line_Tbl(i).Inventory_Item_Id := 34;
Lt_Line_Tbl(i).Schedule_Ship_Date := SYSDATE + 10;
Lt_Line_Tbl(i).Schedule_Arrival_Date := SYSDATE + 10;
Lt_Line_Tbl(i).Promise_Date := Trunc(SYSDATE);
Lt_Line_Tbl(i).Ordered_Quantity := 1000;
Lt_Line_Tbl(i).Order_Quantity_Uom := 'EA';
Lt_Line_Tbl(i).Unit_List_Price := 10;
Lt_Line_Tbl(i).Unit_Selling_Price := 3000;
Lt_Line_Tbl(i).Tax_Code := NULL;
Lt_Line_Tbl(i).Tax_Date := SYSDATE;
Lt_Line_Tbl(i).Calculate_Price_Flag := 'N';
Lt_Line_Tbl(i).Orig_Sys_Document_Ref := '测试直发业务201904300821';
Lt_Line_Tbl(i).Orig_Sys_Line_Ref := '1';
Lt_Line_Tbl(i).Orig_Sys_Document_Ref := 'fasf';
Lt_Line_Tbl(i).Orig_Sys_Line_Ref := '1';
Lt_Line_Tbl(i).Source_Document_Id := 1;
Lt_Line_Tbl(i).Source_Document_Line_Id := 2;
Lt_Line_Tbl(i).SOURCE_TYPE_CODE := 'EXTERNAL'; --Drop Ship的来源类型“外部”
Lt_Action_Qeq_Tbl(1).Request_Type := Oe_Globals.g_Book_Order;
Lt_Action_Qeq_Tbl(1).Entity_Code := Oe_Globals.g_Entity_Header;
Lt_Action_Qeq_Tbl(1).Entity_Id := Lt_Header_Rec.Header_Id; -- SO's Header_Id
Oe_Order_Pub.Process_Order(p_Org_Id => Lt_Header_Rec.Org_Id
,p_Api_Version_Number => Ln_Api_Version_Number
,p_Init_Msg_List => Fnd_Api.g_False
,p_Return_Values => Fnd_Api.g_False
,p_Action_Commit => Fnd_Api.g_False
,x_Return_Status => Xv_Ret_Status
,x_Msg_Count => Ln_Msg_Count
,x_Msg_Data => Lv_Msg_Data
,p_Header_Rec => Lt_Header_Rec
,p_Line_Tbl => Lt_Line_Tbl
,p_Line_Adj_Tbl => Lt_Line_Adj_Tbl
,p_Action_Request_Tbl => Lt_Action_Qeq_Tbl
,p_Header_Scredit_Tbl => Lt_Header_Scredit_Tbl
,x_Header_Rec => Lt_Ret_Header_Rec
,x_Header_Val_Rec => Lt_Header_Val_Rec
,x_Header_Adj_Tbl => Lt_Header_Adj_Tbl
,x_Header_Adj_Val_Tbl => Lt_Header_Adj_Val_Tbl
,x_Header_Price_Att_Tbl => Lt_Header_Price_Att_Tbl
,x_Header_Adj_Att_Tbl => Lt_Header_Adj_Att_Tbl
,x_Header_Adj_Assoc_Tbl => Lt_Header_Adj_Assoc_Tbl
,x_Header_Scredit_Tbl => Lt_Header_Scredit_Tbl
,x_Header_Scredit_Val_Tbl => Lt_Header_Scredit_Val_Tbl
,x_Line_Tbl => Xt_Ret_Line_Tbl
,x_Line_Val_Tbl => Lt_Line_Val_Tbl
,x_Line_Adj_Tbl => Lt_Line_Adj_Tbl
,x_Line_Adj_Val_Tbl => Lt_Line_Adj_Val_Tbl
,x_Line_Price_Att_Tbl => Lt_Line_Price_Att_Tbl
,x_Line_Adj_Att_Tbl => Lt_Line_Adj_Att_Tbl
,x_Line_Adj_Assoc_Tbl => Lt_Line_Adj_Assoc_Tbl
,x_Line_Scredit_Tbl => Lt_Line_Scredit_Tbl
,x_Line_Scredit_Val_Tbl => Lt_Line_Scredit_Val_Tbl
,x_Lot_Serial_Tbl => Lt_Lot_Serial_Tbl
,x_Lot_Serial_Val_Tbl => Lt_Lot_Serial_Val_Tbl
,x_Action_Request_Tbl => Xt_Action_Qeq_Tbl);
IF (Xv_Ret_Status = Fnd_Api.g_Ret_Sts_Success) THEN
Dbms_Output.Put_Line('创建销售订单:' || Lt_Ret_Header_Rec.Order_Number);
Dbms_Output.Put_Line('销售订单创建成功:' || Lt_Ret_Header_Rec.Order_Number);
Dbms_Output.Put_Line('销售订单题头标识:' || Lt_Ret_Header_Rec.Header_Id);
FOR i IN 1 .. Xt_Ret_Line_Tbl.Count LOOP
Dbms_Output.Put_Line('销售订单行:' || Xt_Ret_Line_Tbl(i).Line_Number);
Dbms_Output.Put_Line('销售订单行标识:' || Xt_Ret_Line_Tbl(i).Line_Id);
END LOOP;
COMMIT;
ELSE
FOR i IN 1 .. Ln_Msg_Count LOOP
Oe_Msg_Pub.Get(p_Msg_Index => i
,p_Encoded => Fnd_Api.g_False
,p_Data => Lv_Msg_Data
,p_Msg_Index_Out => Lv_Msg_Index_Out);
Lv_Ret_Message := Lv_Ret_Message || ';' ||
Substr(Lv_Msg_Data, 1, 1500);
END LOOP;
Dbms_Output.Put_Line('销售订单创建失败! 状态:' || Xv_Ret_Status || ',信息:' ||
Lv_Ret_Message);
ROLLBACK;
END IF;
END;
重点关注的代码如下:
Lt_Line_Tbl(i).SOURCE_TYPE_CODE := 'EXTERNAL'; --Drop Ship的来源类型“外部”
核心业务表关联关系
客户使用该业务测试,可能需要我们开发一张报表
1.从销售订单对的PR和PO,接收入库多少数据?销售发运确认了多少数量?有多少PO在途的?有多少未发运确认的?
2.与客户的对帐单和与供应商的对帐单。
相关核业务表之间实例关系如下:
SELECT Oh.Header_Id
,Oh.Order_Number
,Ol.Line_Id
,Ol.Line_Number || '.' || Ol.Shipment_Number Line_Number
,Prh.Requisition_Header_Id
,Prh.Segment1 Req_Number
,Prl.Requisition_Line_Id
,Pla.Po_Line_Id
,Poh.Po_Header_Id
,Poh.Segment1 Po_Number
FROM Oe_Order_Headers_All Oh
,Oe_Order_Lines_All Ol
,Oe_Drop_Ship_Sources Odss
,Po_Headers_All Poh
,Po_Lines_All Pla
,Po_Line_Locations_All Pol
,Po_Requisition_Headers_All Prh
,Po_Requisition_Lines_All Prl
WHERE Oh.Header_Id = Ol.Header_Id
AND Ol.Header_Id = Odss.Header_Id(+)
AND Ol.Line_Id = Odss.Line_Id(+)
AND Odss.Po_Header_Id = Poh.Po_Header_Id(+)
AND Odss.Po_Header_Id = Poh.Po_Header_Id(+)
AND Odss.Po_Line_Id = Pla.Po_Line_Id(+)
AND Odss.Line_Location_Id = Pol.Line_Location_Id(+)
AND Odss.Requisition_Header_Id = Prh.Requisition_Header_Id(+)
AND Odss.Requisition_Line_Id = Prl.Requisition_Line_Id(+)
AND Oh.Order_Number = '10012000006'