ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oe_Order_Pub的使用方法

Oe_Order_Pub的使用方法

原创 Linux操作系统 作者:zuibunan 时间:2009-09-16 16:27:59 0 删除 编辑

/*
调用Oe_Order_Pub.process_order Update及Insert记录的方法
1、使用范围
Process Order可以对以下销售订单实体做Update,Insert及Delete处理
Order Header :

OE_ORDER_HEADERS_ALL
Order Price Adjustments
OE_PRICE_ADJUSTMENTS
Order Sales Credits
OE_SALES_CREDITS

Order Line:

OE_ORDER_LINES_ALL
Order Pricing Attributes
OE_ORDER_PRICE_ATTRIBS
Order Adjustment Attributes
OE_PRICE_ADJ_ATTRIBS
Order Adjustment Associations
OE_PRICE_ADJ_ASSOCS
Line Sales Credits
OE_SALES_CREDITS
Line Price Adjustments
OE_PRICE_ADJUSTMENTS
Line Pricing Attributes
OE_ORDER_PRICE_ATTRIBS
Line Adjustment Attributes
OE_PRICE_ADJ_ATTRIBS
Line Adjustment Associations
OE_PRICE_ADJ_ASSOCS
Lot Serial Numbers
OE_LOT_SERIAL_NUMBERS
2、设置初始化参数
API版本初始化,消息列表初始化;调用API的时候所有的输出参数必须赋值,必要的输入参数也需赋值;每调用一次API只能处理同一张订单。
3、调用Oe_Order_Pub.process_order更新记录
Update的情况,必须使用Oe_Globals.g_opr_update操作,需传入该订单项目的主键参数,比如更新订单行的时候要传入该行的line_id,再传入需更新的项的值。
4、调用Oe_Order_Pub.process_order插入新记录
Insert的情况,必须使用Oe_Globals.g_opr_create操作。传入必需项的值,其它项API会自动赋予缺损值。
注意,不必需项当传入NULL值的时候,则API将NULL值赋予指定项而不再赋予缺损值。
5、返回值处理及消息列表获取
API通过 l_return_status返回值告诉程序员API是否处理成功。还可以通过调用Oe_Msg_Pub.get来获取错误消息列表,后面例子中有详细说明。
6、实例说明
以下是通过一个Procedure调用API来更新oe_order_lines_all的SSD的实例:
--Procedure头,定义传入参数
*/
PROCEDURE update_line_ssd(p_line_id IN NUMBER,
                          p_org_id  IN NUMBER,
                          p_ssd     IN Date) IS
  --必须的输入参数和全部的输出参数定义
  l_header_rec         Oe_Order_Pub.header_rec_type; -- pl/sql记录类型,订单头记录类型
  l_line_tbl           Oe_Order_Pub.line_tbl_type; --pl/sql记录类型,订单行记录类型
  l_action_request_tbl Oe_Order_Pub.request_tbl_type; --pl/sql记录类型
  l_return_status      VARCHAR2(1); --返回状态值,表明请求是否执行成功,成功则返回FND_API.G_RET_STS_SUCCESS,返回值S出错则返回FND_API.G_RET_STS_ERROR,返回值E意外错误则返回FND_API.G_RET_STS_UNEXP_ERROR,返回值U
  l_msg_count          NUMBER; --返回错误消息值,如果大于等于1,则通过调用OE_MSG_PUB.GET返回错误消息列表
  --调用方法:
  --Oe_Msg_Pub.get(p_msg_index => l_index, p_encoded => 'F');
  l_msg_data     VARCHAR2(1000); --显示错误消息内容,若l_msg_count等于1,则该参数将包含实际的消息内容

  --以下是必须的输入参数的定义
  x_header_val_rec         Oe_Order_Pub.header_val_rec_type;
  x_header_adj_tbl         Oe_Order_Pub.header_adj_tbl_type;
  x_header_adj_val_tbl     Oe_Order_Pub.header_adj_val_tbl_type;
  x_header_price_att_tbl   Oe_Order_Pub.header_price_att_tbl_type;
  x_header_adj_att_tbl     Oe_Order_Pub.header_adj_att_tbl_type;
  x_header_adj_assoc_tbl   Oe_Order_Pub.header_adj_assoc_tbl_type;
  x_header_scredit_tbl     Oe_Order_Pub.header_scredit_tbl_type;
  x_header_scredit_val_tbl Oe_Order_Pub.header_scredit_val_tbl_type;

  x_line_val_tbl         Oe_Order_Pub.line_val_tbl_type;
  x_line_adj_tbl         Oe_Order_Pub.line_adj_tbl_type;
  x_line_adj_val_tbl     Oe_Order_Pub.line_adj_val_tbl_type;
  x_line_price_att_tbl   Oe_Order_Pub.line_price_att_tbl_type;
  x_line_adj_att_tbl     Oe_Order_Pub.line_adj_att_tbl_type;
  x_line_adj_assoc_tbl   Oe_Order_Pub.line_adj_assoc_tbl_type;
  x_line_scredit_tbl     Oe_Order_Pub.line_scredit_tbl_type;
  x_line_scredit_val_tbl Oe_Order_Pub.line_scredit_val_tbl_type;
  x_lot_serial_tbl       Oe_Order_Pub.lot_serial_tbl_type;
  x_lot_serial_val_tbl   Oe_Order_Pub.lot_serial_val_tbl_type;
Begin
  Oe_Msg_Pub.initialize; --Message初始化
  Oe_Debug_Pub.initialize; --Debug初始化,清除debug cache
  Oe_Debug_Pub.debug_on; --Debug打开
  Oe_Debug_Pub.setdebuglevel(5); --设置Debug级别
  DBMS_APPLICATION_INFO.set_client_info(p_org_id); --设置org_id
  --查询数据
  l_line_tbl(1) := Oe_Order_Pub.g_miss_line_rec; --指明是订单行记录
  l_line_tbl(1).line_id := p_line_id; --指明该订单行的主键
  l_line_tbl(1).operation := Oe_Globals.g_opr_update; --指明是对行做更新操作
  l_line_tbl(1).schedule_ship_date := p_ssd; --用传入的p_ssd的值更新记录

 -- action request订单登记

  l_action_request_tbl(1) := NULL;
  /*
  l_action_request_tbl(l_line_tbl_index) := oe_order_pub.g_miss_request_rec;
  l_action_request_tbl(l_line_tbl_index).request_type := oe_globals.g_book_order;
  l_action_request_tbl(l_line_tbl_index).entity_code := oe_globals.g_entity_header;
  l_action_request_tbl(l_line_tbl_index).entity_id := l_header_rec.header_id;
  */
  --调用API
  Oe_Order_Pub.process_order(p_api_version_number => 1.0, --API版本初始化
                             --给必须的输入参数和全部输出参数赋值
                             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      => l_return_status,
                             x_msg_count          => l_msg_count,
                             x_msg_data           => l_msg_data,
                             p_header_rec         => l_header_rec,
                             p_line_tbl           => l_line_tbl,
                             p_action_request_tbl => l_action_request_tbl,
                            
                             x_header_rec             => l_header_rec,
                             x_header_val_rec         => x_header_val_rec,
                             x_header_adj_tbl         => x_header_adj_tbl,
                             x_header_adj_val_tbl     => x_header_adj_val_tbl,
                             x_header_price_att_tbl   => x_header_price_att_tbl,
                             x_header_adj_att_tbl     => x_header_adj_att_tbl,
                             x_header_adj_assoc_tbl   => x_header_adj_assoc_tbl,
                             x_header_scredit_tbl     => x_header_scredit_tbl,
                             x_header_scredit_val_tbl => x_header_scredit_val_tbl,
                            
                             x_line_tbl             => l_line_tbl,
                             x_line_val_tbl         => x_line_val_tbl,
                             x_line_adj_tbl         => x_line_adj_tbl,
                             x_line_adj_val_tbl     => x_line_adj_val_tbl,
                             x_line_price_att_tbl   => x_line_price_att_tbl,
                             x_line_adj_att_tbl     => x_line_adj_att_tbl,
                             x_line_adj_assoc_tbl   => x_line_adj_assoc_tbl,
                             x_line_scredit_tbl     => x_line_scredit_tbl,
                             x_line_scredit_val_tbl => x_line_scredit_val_tbl,
                             x_lot_serial_tbl       => x_lot_serial_tbl,
                             x_lot_serial_val_tbl   => x_lot_serial_val_tbl,
                             x_action_request_tbl   => l_action_request_tbl);
  --调用Oe_Msg_Pub.get得到错误消息内容
  IF l_msg_count > 0 THEN
    FOR l_index IN 1 .. l_msg_count LOOP
      l_msg_data := Oe_Msg_Pub.get(p_msg_index => l_index, p_encoded => 'F');
    END LOOP;
  END IF;
  --判断API是否执行成功
  IF l_return_status = Fnd_Api.g_ret_sts_success THEN
    --API执行成功,返回值S
    Reuturn(‘success’);
    COMMIT;
  Else
    --API执行不成功,返回值E或者U
    Reuturn(‘false’);
    ROLLBACK;
  End if;
  --异常处理
Exception
  When others then
    ROLLBACK;
End;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15725751/viewspace-614812/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-09-15

  • 博文量
    39
  • 访问量
    92223