Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Вопрос оп стандартной API процедуре QP_PRICE_LIST_PUB.Process_Price_List  [new]
godar
Member

Откуда:
Сообщений: 22
Может кто пользовался данной процедурой.
Почему то процедура завершается с ошибкой -
может кто подскажет как вообще посмотреть ошибку...
в output процедура выводит строку "msg count 2 is : N "
N- порядок запуска этой процедуры
declare
l_return_status varchar2(1) := NULL;
l_msg_count number := 0;
l_msg_data varchar2(2000);
gpr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
gpr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
gpr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
gpr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
gpr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
gpr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
gpr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
gpr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
ppr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
ppr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
ppr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
ppr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
ppr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
ppr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
ppr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
ppr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
K number := 1;
j number := 1;
jjj number;
V_HEADER_ID number;
begin
--dbms_output.put_line('after get price list ');
select t.list_header_id into V_HEADER_ID from QP_LIST_HEADERS_TL t where t.language = 'RU' and t.name = 'Цена Украина, RUB';
gpr_price_list_rec.list_header_id := V_HEADER_ID ;
gpr_price_list_rec.name := 'Цена Украина, RUB';
gpr_price_list_rec.list_type_code := 'PRL';
gpr_price_list_rec.description := null;
/* you can set the currency of price list to whatever, say FRA */
gpr_price_list_rec.currency_code := 'RUB';
gpr_price_list_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
--FOR K IN 1..3 LOOP
gpr_price_list_line_tbl(K).list_line_id := FND_API.G_MISS_NUM;
gpr_price_list_line_tbl(K).list_line_type_code := 'PLL';
gpr_price_list_line_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
gpr_price_list_line_tbl(K).operand := 10;
gpr_price_list_line_tbl(K).arithmetic_operator := 'UNIT_PRICE';

--END LOOP;
/*
product_attr_value stores inventory item id - product_attribute for Item Number
is Pricing_Attribute1 product_attribute_context is ITEM. Each line can have one
or more pricing attributes. PRICE_LIST_LINE_INDEX is used to link the child
(pricing attributes) to the parent(line).
When you have pricing attributes like color, length, width etc, populate the
fields pricing_attribute_context, pricing_attribute, pricing_attr_value_from,
pricing_attr_value_to and comparison_operator_code ( '=' or 'between') and
repeat the product_attr_value and its attribute and context for each record.
*/
select nvl(max (to_number(t.orig_sys_line_ref))+1,0) into jjj from QP_LIST_LINES t /*where t.orig_sys_header_ref = 'Ukraine_RUB'*/;
J := 1;
gpr_pricing_attr_tbl(J).pricing_attribute_id := FND_API.G_MISS_NUM;
gpr_pricing_attr_tbl(J).list_line_id := FND_API.G_MISS_NUM;
gpr_pricing_attr_tbl(J).PRODUCT_ATTRIBUTE_CONTEXT := 'ITEM';
gpr_pricing_attr_tbl(J).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE1';
gpr_pricing_attr_tbl(J).PRODUCT_ATTR_VALUE := '100';
gpr_pricing_attr_tbl(J).PRODUCT_UOM_CODE := 'ЕА';
gpr_pricing_attr_tbl(J).EXCLUDER_FLAG := 'N';
gpr_pricing_attr_tbl(J).ATTRIBUTE_GROUPING_NO := jjj;
gpr_pricing_attr_tbl(J).PRICE_LIST_LINE_INDEX := '1';
gpr_pricing_attr_tbl(J).operation := QP_GLOBALS.G_OPR_CREATE;

dbms_output.put_line('before process price list ');
QP_PRICE_LIST_PUB.Process_Price_List
( p_api_version_number=> 1
, p_init_msg_list=> FND_API.G_FALSE
, p_return_values=> FND_API.G_FALSE
, p_commit=> FND_API.G_FALSE
, x_return_status=> l_return_status
, x_msg_count=> l_msg_count
, x_msg_data=> l_msg_data
, p_PRICE_LIST_rec=> gpr_price_list_rec
, p_PRICE_LIST_LINE_tbl=> gpr_price_list_line_tbl
, p_PRICING_ATTR_tbl=> gpr_pricing_attr_tbl
, x_PRICE_LIST_rec=> ppr_price_list_rec
, x_PRICE_LIST_val_rec=> ppr_price_list_val_rec
, x_PRICE_LIST_LINE_tbl=> ppr_price_list_line_tbl
, x_PRICE_LIST_LINE_val_tbl=> ppr_price_list_line_val_tbl
, x_QUALIFIERS_tbl=> ppr_qualifiers_tbl
, x_QUALIFIERS_val_tbl=> ppr_qualifiers_val_tbl
, x_PRICING_ATTR_tbl=> ppr_pricing_attr_tbl
, x_PRICING_ATTR_val_tbl=> ppr_pricing_attr_val_tbl
);
IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
dbms_output.put_line('error ');

RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
END IF;
dbms_output.put_line('after process price list ');
EXCEPTION
WHEN FND_API.G_EXC_ERROR THEN
l_return_status := FND_API.G_RET_STS_ERROR;
--Get message count and data
dbms_output.put_line('err msg 1 is : ' || l_msg_data);
Rollback;
WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
l_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
dbms_output.put_line(' msg count 2 is : ' || l_msg_count);
for k in 1 .. l_msg_count loop
l_msg_data := oe_msg_pub.get( p_msg_index => k,
p_encoded => 'F'
);
/*
oe_msg_pub.Count_And_Get
( p_count=> l_msg_count
, p_data=> l_msg_data
);
*/
--Get message count and data
--dbms_output.put_line('err msg ' || k ||'is: ' || l_msg_data);
null;
end loop;
Rollback;

WHEN OTHERS THEN
l_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
--Get message count and data
--dbms_output.put_line('err msg 3 is : ' || l_msg_data);
Rollback;
end;
23 май 08, 11:20    [5704885]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос оп стандартной API процедуре QP_PRICE_LIST_PUB.Process_Price_List  [new]
Jack Carver
Member

Откуда: obi2ru.blogspot.com
Сообщений: 1717
Игорь, что содержит переменная "l_msg_data" после выполнения процедуры?

П.С. Следовало бы использовать тег SRC
23 май 08, 11:34    [5705063]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос оп стандартной API процедуре QP_PRICE_LIST_PUB.Process_Price_List  [new]
godar
Member

Откуда:
Сообщений: 22
declare
l_return_status varchar2(1) := NULL;
l_msg_count number := 0;
l_msg_data varchar2(2000);
gpr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
gpr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
gpr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
gpr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
gpr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
gpr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
gpr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
gpr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
ppr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
ppr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
ppr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
ppr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
ppr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
ppr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
ppr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
ppr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
K number := 1;
j number := 1;
jjj number;
V_HEADER_ID number;
begin
--dbms_output.put_line('after get price list ');
select t.list_header_id into V_HEADER_ID from QP_LIST_HEADERS_TL t where t.language = 'RU' and t.name = 'Цена Украина, RUB';
gpr_price_list_rec.list_header_id := V_HEADER_ID ;
gpr_price_list_rec.name := 'Цена Украина, RUB';
gpr_price_list_rec.list_type_code := 'PRL';
gpr_price_list_rec.description := null;
/* you can set the currency of price list to whatever, say FRA */
gpr_price_list_rec.currency_code := 'RUB';
gpr_price_list_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
--FOR K IN 1..3 LOOP
gpr_price_list_line_tbl(K).list_line_id := FND_API.G_MISS_NUM;
gpr_price_list_line_tbl(K).list_line_type_code := 'PLL';
gpr_price_list_line_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
gpr_price_list_line_tbl(K).operand := 10;
gpr_price_list_line_tbl(K).arithmetic_operator := 'UNIT_PRICE';

--END LOOP;
/*
product_attr_value stores inventory item id - product_attribute for Item Number
is Pricing_Attribute1 product_attribute_context is ITEM. Each line can have one
or more pricing attributes. PRICE_LIST_LINE_INDEX is used to link the child
(pricing attributes) to the parent(line).
When you have pricing attributes like color, length, width etc, populate the
fields pricing_attribute_context, pricing_attribute, pricing_attr_value_from,
pricing_attr_value_to and comparison_operator_code ( '=' or 'between') and
repeat the product_attr_value and its attribute and context for each record.
*/
select nvl(max (to_number(t.orig_sys_line_ref))+1,0) into jjj from QP_LIST_LINES t /*where t.orig_sys_header_ref = 'Ukraine_RUB'*/;
J := 1;
gpr_pricing_attr_tbl(J).pricing_attribute_id := FND_API.G_MISS_NUM;
gpr_pricing_attr_tbl(J).list_line_id := FND_API.G_MISS_NUM;
gpr_pricing_attr_tbl(J).PRODUCT_ATTRIBUTE_CONTEXT := 'ITEM';
gpr_pricing_attr_tbl(J).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE1';
gpr_pricing_attr_tbl(J).PRODUCT_ATTR_VALUE := '100';
gpr_pricing_attr_tbl(J).PRODUCT_UOM_CODE := 'ЕА';
gpr_pricing_attr_tbl(J).EXCLUDER_FLAG := 'N';
gpr_pricing_attr_tbl(J).ATTRIBUTE_GROUPING_NO := jjj;
gpr_pricing_attr_tbl(J).PRICE_LIST_LINE_INDEX := '1';
gpr_pricing_attr_tbl(J).operation := QP_GLOBALS.G_OPR_CREATE;

dbms_output.put_line('before process price list ');
QP_PRICE_LIST_PUB.Process_Price_List
( p_api_version_number=> 1
, p_init_msg_list=> FND_API.G_FALSE
, p_return_values=> FND_API.G_FALSE
, p_commit=> FND_API.G_FALSE
, x_return_status=> l_return_status
, x_msg_count=> l_msg_count
, x_msg_data=> l_msg_data
, p_PRICE_LIST_rec=> gpr_price_list_rec
, p_PRICE_LIST_LINE_tbl=> gpr_price_list_line_tbl
, p_PRICING_ATTR_tbl=> gpr_pricing_attr_tbl
, x_PRICE_LIST_rec=> ppr_price_list_rec
, x_PRICE_LIST_val_rec=> ppr_price_list_val_rec
, x_PRICE_LIST_LINE_tbl=> ppr_price_list_line_tbl
, x_PRICE_LIST_LINE_val_tbl=> ppr_price_list_line_val_tbl
, x_QUALIFIERS_tbl=> ppr_qualifiers_tbl
, x_QUALIFIERS_val_tbl=> ppr_qualifiers_val_tbl
, x_PRICING_ATTR_tbl=> ppr_pricing_attr_tbl
, x_PRICING_ATTR_val_tbl=> ppr_pricing_attr_val_tbl
);
IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
dbms_output.put_line('error ');

RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
END IF;
dbms_output.put_line('after process price list ');
EXCEPTION
WHEN FND_API.G_EXC_ERROR THEN
l_return_status := FND_API.G_RET_STS_ERROR;
--Get message count and data
dbms_output.put_line('err msg 1 is : ' || l_msg_data);
Rollback;
WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
l_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
dbms_output.put_line(' msg count 2 is : ' || l_msg_count);
for k in 1 .. l_msg_count loop
l_msg_data := oe_msg_pub.get( p_msg_index => k,
p_encoded => 'F'
);
/*
oe_msg_pub.Count_And_Get
( p_count=> l_msg_count
, p_data=> l_msg_data
);
*/
--Get message count and data
--dbms_output.put_line('err msg ' || k ||'is: ' || l_msg_data);
null;
end loop;
Rollback;

WHEN OTHERS THEN
l_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
--Get message count and data
--dbms_output.put_line('err msg 3 is : ' || l_msg_data);
Rollback;
end;
23 май 08, 11:44    [5705196]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос оп стандартной API процедуре QP_PRICE_LIST_PUB.Process_Price_List  [new]
godar
Member

Откуда:
Сообщений: 22
Это какой то возвращаемый параметр
23 май 08, 11:45    [5705221]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос оп стандартной API процедуре QP_PRICE_LIST_PUB.Process_Price_List  [new]
Jack Carver
Member

Откуда: obi2ru.blogspot.com
Сообщений: 1717
Попробуй расскоментировать строку
--dbms_output.put_line('err msg ' || k ||'is: ' || l_msg_data);
Судя по коду, для каждой сгенерированной ошибки должно отобразиться сообщение.
23 май 08, 11:52    [5705301]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос оп стандартной API процедуре QP_PRICE_LIST_PUB.Process_Price_List  [new]
Wladislaw
Member

Откуда:
Сообщений: 245
Я использую следующую конструкцию для вывода стандартных сообщений об ошибках:
  --------------------------------------------------------------------------------
  procedure out_msg(p_txt varchar2) is
  begin
    dbms_output.put_line(substr(p_txt, 1, 254));
  end out_msg;

  --------------------------------------------------------------------------------
  procedure out_lasts_api_msg(p_count          number default 1,
                              p_msg_data       varchar2,
                              p_return_status  varchar2,
                              x_return_message in out varchar2) is
    l_mesg varchar2(2000);
    l_ind  number := 0;
  begin
    if p_return_status = fnd_api.g_ret_sts_success then
      return;
    end if;
    
    if p_count = 1 then
      x_return_message := x_return_message || 'Error - ' || p_msg_data ||
                          chr(13) || chr(10);
    elsif p_count > 1 then
      --the messages on the stack are more than one so call them in a loop
      for i in 1 .. p_count loop
        fnd_msg_pub.get(i, 'F', l_mesg, l_ind);
        out_msg(l_mesg);
        x_return_message := x_return_message || 'Error - ' || l_mesg ||
                            chr(13) || chr(10);
      end loop;
    end if;
  end out_lasts_api_msg;
23 май 08, 11:54    [5705327]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос оп стандартной API процедуре QP_PRICE_LIST_PUB.Process_Price_List  [new]
godar
Member

Откуда:
Сообщений: 22
Спасбо, ошибки плучил. Буду дальше тестить
23 май 08, 12:01    [5705432]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос оп стандартной API процедуре QP_PRICE_LIST_PUB.Process_Price_List  [new]
godar
Member

Откуда:
Сообщений: 22
Все спасибо! :) заборол...
23 май 08, 12:09    [5705526]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить