oracle ebs 采购订单关闭之PL/SQL实现方法
2012-07-04 00:25
309 查看
应客户需求,需要写个脚本,批量关闭Bonus Item类型的采购订单,在metalink上搜索到一些方法,但是都测试不通。原来需要将代码生成一个并发程序。下面是测试成功的代码。
1.首先创建一个存储过程,然后在存储过程中调用PO_ACTIONS.CLOSE_PO
2.注册一个存储过程类型的并发程序
3.在application中测试结果。
CREATE OR REPLACE PROCEDURE xx_po_close
(
err_buff OUT VARCHAR2,
retcode OUT NUMBER,
p_reason_desc VARCHAR2,
p_po_from VARCHAR2,
p_po_to VARCHAR2)
AS
l_return_code VARCHAR2(2000);
l_result BOOLEAN;
CURSOR PO_CLOSE_CUR
IS
SELECT poh.segment1,
poll.po_header_id ,
poll.po_line_id ,
poll.line_location_id
FROM po_line_locations_all poll,
po_headers_all poh ,
po_lines_all pol
WHERE poll.po_header_id = poh.po_header_id
AND poll.po_line_id =pol.po_line_id
AND pol.po_header_id = poh.po_header_id
AND upper(poh.authorization_status)='APPROVED'
AND UPPER(poll.closed_code )='CLOSED FOR RECEIVING'
AND (pol.unit_price =0 or poh.quantity_billed - poh.quantity >=0)
AND poh.segment1 between p_po_from and p_po_to;
BEGIN
FOR PO_CLOSE_REC IN PO_CLOSE_CUR
LOOP
l_result := po_actions.close_po(
p_docid => PO_CLOSE_REC.po_header_id,
p_doctyp => 'PO',
p_docsubtyp => 'STANDARD',
p_lineid => PO_CLOSE_REC.po_line_id,
p_shipid => PO_CLOSE_REC.line_location_id,
p_action => 'CLOSE',
p_reason => p_reason_desc,
p_calling_mode => 'PO',
p_conc_flag => 'N',
p_return_code => l_return_code,
p_auto_close => 'N',
p_action_date => SYSDATE,
p_origin_doc_id => NULL);
IF l_result THEN
FND_FILE.PUT_LINE( FND_FILE.OUTPUT,PO_CLOSE_REC.segment1 || ' is Closed. ');
ELSE
FND_FILE.PUT_LINE( FND_FILE.OUTPUT,PO_CLOSE_REC.segment1 || ' is not Closed. ');
END IF;
END LOOP;
END;
1.首先创建一个存储过程,然后在存储过程中调用PO_ACTIONS.CLOSE_PO
2.注册一个存储过程类型的并发程序
3.在application中测试结果。
CREATE OR REPLACE PROCEDURE xx_po_close
(
err_buff OUT VARCHAR2,
retcode OUT NUMBER,
p_reason_desc VARCHAR2,
p_po_from VARCHAR2,
p_po_to VARCHAR2)
AS
l_return_code VARCHAR2(2000);
l_result BOOLEAN;
CURSOR PO_CLOSE_CUR
IS
SELECT poh.segment1,
poll.po_header_id ,
poll.po_line_id ,
poll.line_location_id
FROM po_line_locations_all poll,
po_headers_all poh ,
po_lines_all pol
WHERE poll.po_header_id = poh.po_header_id
AND poll.po_line_id =pol.po_line_id
AND pol.po_header_id = poh.po_header_id
AND upper(poh.authorization_status)='APPROVED'
AND UPPER(poll.closed_code )='CLOSED FOR RECEIVING'
AND (pol.unit_price =0 or poh.quantity_billed - poh.quantity >=0)
AND poh.segment1 between p_po_from and p_po_to;
BEGIN
FOR PO_CLOSE_REC IN PO_CLOSE_CUR
LOOP
l_result := po_actions.close_po(
p_docid => PO_CLOSE_REC.po_header_id,
p_doctyp => 'PO',
p_docsubtyp => 'STANDARD',
p_lineid => PO_CLOSE_REC.po_line_id,
p_shipid => PO_CLOSE_REC.line_location_id,
p_action => 'CLOSE',
p_reason => p_reason_desc,
p_calling_mode => 'PO',
p_conc_flag => 'N',
p_return_code => l_return_code,
p_auto_close => 'N',
p_action_date => SYSDATE,
p_origin_doc_id => NULL);
IF l_result THEN
FND_FILE.PUT_LINE( FND_FILE.OUTPUT,PO_CLOSE_REC.segment1 || ' is Closed. ');
ELSE
FND_FILE.PUT_LINE( FND_FILE.OUTPUT,PO_CLOSE_REC.segment1 || ' is not Closed. ');
END IF;
END LOOP;
END;
相关文章推荐
- oracle ebs 采购订单关闭之PL/SQL实现方法
- 采购订单关闭之PL/SQL实现方法
- oracle ebs 采购订单关闭之PL/SQL实现方法
- 采购订单关闭之PL/SQL实现方法
- PL/SQL实现JAVA中的split()方法的例子
- PL/SQL实现JAVA中的split()方法的小例子
- pl/sql存储过程中游标嵌套的实现方法
- 用Oracle PL/SQL 编程实现小数转分数的方法
- Oracle EBS-SQL (PO-5):采购订单控制信息查询.sql
- Oracle EBS-SQL (PO-16):检查采购订单完成情况统计.sql
- pl/sql存储过程中游标嵌套的实现方法
- LINUX的ORACLE 中实现PL/SQL读写文件 问题解决方法
- pl/sql存储过程中游标嵌套的实现方法
- pl/sql存储过程中游标嵌套的实现方法
- Oracle EBS-SQL (PO-4):检查采购订单明细.sql
- 未清采购订单关闭最全的方法
- 用Oracle PL/SQL 编程实现小数转分数的方法
- 用SQL实现分页的三种方法
- Android 关闭多个Activity的实现方法
- PL/SQL Server连接64位Oracle数据库在界面中不出现Connect as的解决方法