ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 11i_AP_一键付款批

11i_AP_一键付款批

原创 Linux操作系统 作者:imzh 时间:2011-06-02 13:21:24 0 删除 编辑

在11i中除了单个付款外还有付款批,付款批付款批包括四部分内容:自动选择、建立付款、格式化付款、确认付款批
财务人员在实际操作过程中发现经常会忘记这步骤或者那个步骤。查阅相关文档,知道应付有个“付款批集”的概念,但可惜的是产品有BUG,对“支票”、“电汇”等无效,只对”电子“类型的有效。但”电子“类型的却依旧有这样那样的限制。使用正确率达不到100%,一旦报错了,需要将此付款批集全部取消。反而更麻烦。

经过测试,可以将付款批的四个部份连接起来,通过此程序进行点击一次进行付款。

程序请见扩展内容。定义并发请求时请定义P_BatchName为唯一参数。


CREATE OR REPLACE PACKAGE NBCB_AP_PAYMENT IS

PROCEDURE MAIN(errbuf OUT VARCHAR2,
retcode OUT VARCHAR2,
P_BatchName VARCHAR2);

end NBCB_AP_PAYMENT;
/
CREATE OR REPLACE PACKAGE BODY NBCB_AP_PAYMENT IS

/* ===============================================
* PROGRAM NAME:
* NBCB_AP_PAYMENT
* DESCRIPTION:
* NBCB_一键付款
*
* 原来付款批包括四部分内容:自动选择、建立付款、格式化付款、确认付款批
* 财务人员在实际操作过程中发现经常会忘记这步骤或者那个步骤。通过此程序
* 进行点击一次进行付款。
*
* HISTORY:
* 1.00 2010-04-08 amwlq Creation
*
* ==============================================*/

PROCEDURE MAIN(errbuf OUT VARCHAR2,
retcode OUT VARCHAR2,
P_BatchName IN VARCHAR2 --批名
) IS

l_UserId number := fnd_profile.VALUE('USER_ID');
l_LoginId number := fnd_profile.VALUE('LOGIN_ID');
l_RequestId number;
l_msg_data VARCHAR2(2000);

BEGIN
retcode := 0;

nbcb_conc_utl.log_msg('P_BatchName=> ' || P_BatchName);
nbcb_conc_utl.log_msg('l_UserId=> ' || l_UserId);
nbcb_conc_utl.log_msg('l_LoginId=> ' || l_LoginId);

-- concurrent header log
nbcb_conc_utl.log_header;
nbcb_conc_utl.log_msg(' --> 标准 付款流程管理器 程序开始运行......');

l_RequestId := fnd_request.submit_request('SQLAP',
'APPPRSPR',
'',
'',
FALSE,
'Payment_batch:' ||
P_BatchName,
--自动选择
'<<##Program_Name:AUTOSELECT##Parameters::P_PAYMENT_BATCH:' ||
P_BatchName ||
'#*P_DEBUG_SWITCH:N#*P_TRACE_SWITCH:N#*##>>',
--建立付款
'<<##Program_Name:BUILD##Parameters::P_PAYMENT_BATCH:' ||
P_BatchName || '#*P_USER_ID:' ||
l_UserId || '#*P_LOGIN_ID:' ||
l_LoginId ||
'#*P_DEBUG_SWITCH:N#*P_TRACE_SWITCH:N#*P_CONFIRM_NOW:Y#*##>>',
--格式化付款(标准 Oracle)
'<<##Program_Name:FORMAT##Parameters::P_PAYMENT_BATCH:' ||
P_BatchName ||
'#*P_FORMAT_PAYMENTS_PROGRAM_NAME:APXPBFOR#*##>>',
--确认付款批
'<<##Program_Name:CONFIRM##Parameters::CHECKRUN:' ||
P_BatchName ||
'#*UPDATE_DATE:' ||
TO_CHAR(SYSDATE,
'YYYY/MM/DD HH24:MI:SS') ||
'#*UPDATE_BY:' || l_UserId ||
'#*LINES_PER_PG:58#*##>>',
--最终付款登记
'<<##Program_Name:FINAL_REGISTER##Parameters::P_PAYMENT_BATCH:' ||
P_BatchName ||
'#*P_FINAL_REGISTER_PRINTER:noprint#*##>>',
'End_of_List',
'',
'',
P_BatchName, --ARG10
'AUTOSELECTBUILDFORMATCONFIRMFINAL_REGISTER',
fnd_profile.VALUE('ORG_ID'),
'BATCH_PROCESS',
'APXPAWKB->PAYMENT_PROCESSOR.Submit_Conc_Program->AP_PAYMENT_PROCESSOR.submit',
CHR(0));

IF l_RequestId IS NULL OR l_RequestId = 0 THEN
l_msg_data := 'ERROR:Call 付款流程管理器 Failed!';
RAISE fnd_api.g_exc_error;
ELSE
COMMIT;
END IF;

-- concurrent footer log
nbcb_conc_utl.log_footer;
--------------------------------------------------
-- Exception Process
--------------------------------------------------
EXCEPTION
WHEN fnd_api.g_exc_error THEN
nbcb_conc_utl.log_message_list;
retcode := '1';
errbuf := l_msg_data;
WHEN fnd_api.g_exc_unexpected_error THEN
nbcb_conc_utl.log_message_list;
retcode := '2';
errbuf := l_msg_data;
WHEN OTHERS THEN
fnd_msg_pub.add_exc_msg(p_pkg_name => 'NBCB_AP_PAYMENT',
p_procedure_name => 'MAIN');
nbcb_conc_utl.log_message_list;
retcode := '2';
errbuf := SQLERRM;

END;

end NBCB_AP_PAYMENT;
/

<!-- comment these out if you want to see an example of custom fields, but remember to name the fields in the same way they are named here: 'imfeeling' (livejournal.com style), 'listening' and 'new_field'

: ?

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

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

注册时间:2008-12-30

  • 博文量
    30
  • 访问量
    324066