使用细节来交付API

时间:2015-09-05 00:41:16

标签: oracle 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 个答案:

答案 0 :(得分:1)

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

该表单的一个区域是&#34;交付分组属性&#34;。有些属性是强制性的 - 从船舶运送到船舶。想想看 - 如果两个订单行从两个不同的地点发货,它们不属于同一交货(它们可能是同一个行程的一部分,但这是一个单独的虽然Oracle Shipping Execution中的相关概念。)

无论如何,如果您运送的组织具有设置的运输参数,指定给定属性是交付分组属性的一部分,那么您添加到的每个交付详细信息(〜订单行,但不总是)交货必须与交货的属性相匹配。

例如,如果&#34; Ship Method&#34;是一个交付分组属性,您尝试添加一个订单行发货&#34;次日空气&#34;到了&#34; LTL卡车&#34;发货,您将收到您遇到的错误。

检查您要从中运送的组织的运输参数,然后检查每个交货分组属性的值,以确保它们在您尝试分配给交货的交货和交货详细信息之间匹配。