在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,
--自动选择
'<P_BatchName ||
'#*P_DEBUG_SWITCH:N#*P_TRACE_SWITCH:N#*##>>',
--建立付款
'<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)
'<P_BatchName ||
'#*P_FORMAT_PAYMENTS_PROGRAM_NAME:APXPBFOR#*##>>',
--确认付款批
'<P_BatchName ||
'#*UPDATE_DATE:' ||
TO_CHAR(SYSDATE,
'YYYY/MM/DD HH24:MI:SS') ||
'#*UPDATE_BY:' || l_UserId ||
'#*LINES_PER_PG:58#*##>>',
--最终付款登记
'<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;
/
: ?
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/126211/viewspace-696961/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/126211/viewspace-696961/