2015-09-05 48 views
2

我创造了这个过程使用细节来传递API的

CREATE OR REPLACE PROCEDURE APPS.test_dlv3 
IS 
BEGIN 
DECLARE 

-- STANDARD PARAMETERS. 
pApiVersion NUMBER := 1.0; 
pInitMsgList VARCHAR2(30); 
pCommit  VARCHAR2(30); 

-- PARAMETERS FOR WSH_DELIVERY_DETAILS_PUB.DETAIL_TO_DELIVERY 
pDeliveryId NUMBER; 
pDeliveryName VARCHAR2(30); 
pTabOfDelDet WSH_DELIVERY_DETAILS_PUB.id_tab_type; 
pAction  VARCHAR2(30); 

-- OUT PARAMETERS 
xReturnStatus VARCHAR2(10); 
xMsgCount  NUMBER; 
xMsgData  VARCHAR2(2000); 
xMsgDetails VARCHAR2(3000); 
xMsgSummary VARCHAR2(3000); 

-- HANDLE EXCEPTIONS 
vFailApiException EXCEPTION; 

BEGIN 
-- INITIALIZE RETURN STATUS 
xReturnStatus := WSH_UTIL_CORE.G_RET_STS_SUCCESS; 

-- CALL THIS PROCEDURE TO INITIALIZE APPLICATIONS PARAMETERS. 
FND_GLOBAL.APPS_INITIALIZE(
     user_id  => , --hide 
     resp_id  => , --hide 
     resp_appl_id =>); --hide 

-- VALUES FOR WSH_DELIVERY_DETAILS_PUB.DETAIL_TO_DELIVERY 
pDeliveryId  := 379358; 
pDeliveryName  := 'Delivery01'; 
pTabOfDelDet(1) := 354601 ; 
pAction   := 'ASSIGN'; 

-- CALL TO WSH_DELIVERY_DETAILS_PUB.DETAIL_TO_DELIVERY. 
WSH_DELIVERY_DETAILS_PUB.detail_to_delivery( 
     p_api_version  => pApiVersion, 
     p_init_msg_list  => pInitMsgList, 
     p_commit   => pCommit, 
     x_return_status  => xReturnStatus, 
     x_msg_count   => xMsgCount, 
     x_msg_data   => xMsgData, 
     p_TabOfDelDets  => pTabOfDelDet, 
     p_action   => pAction, 
     p_delivery_id  => pDeliveryId, 
     p_delivery_name  => pDeliveryName); 

IF (xReturnStatus <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN RAISE vFailApiException; 

ELSE DBMS_OUTPUT.PUT_LINE('Detail '||pTabOfDelDet(1)|| ' assignment to the delivery '|| pDeliveryName ||' is successful'); 

END IF; 

Exception 

    WHEN vFailApiException THEN WSH_UTIL_CORE.get_messages('Y', xMsgSummary, xMsgDetails, xMsgCount); 

    IF xMsgCount > 1 THEN xMsgData := xMsgSummary || xMsgDetails; 
     DBMS_OUTPUT.PUT_LINE('Message Data : '||xMsgData); 

    ELSE xMsgData := xMsgSummary; 
     DBMS_OUTPUT.PUT_LINE('Message Data : '||xMsgData); 

    END IF; 

END;   
END; 
/

但结果始终是这样的:

Message Data : Error: Error in assigning one or more details to a delivery. 
Warning: These entities can not be grouped together as their grouping attributes do not match. 

谁能帮助我?

回答

1

您发货的每个库存组织都具有在订单管理/装运执行设置中定义的装运参数。

该表单的一个区域是“Delivery Grouping Attributes”。一些属性是强制性的 - 从出货到运送到。考虑一下 - 如果两个订单行从两个不同的位置发货,它们不是同一交货的一部分(它们可以是同一行程的一部分,但这是Oracle Shipping Execution中的一个独立但与之相关的概念)。

无论如何,如果您要运输的组织具有设置的运输参数(指定给定属性)是交货分组属性的一部分,那么您添加的每个交货详细信息(〜订单项,有点但不总是)交货必须符合该交货的属性。

例如,如果“运输方式”是交货分组属性,并且您尝试将“Next Day Air”运送到“LTL卡车”交货的订单行中,您将遇到您遇到的错误。

检查运输组织的运输参数,然后检查每个交货分组属性的值,以确保它们与您试图分配到交货的交货详细信息相匹配。

+0

谢谢你的回答,现在我的程序成功了... –