前提:PLSQL或Form中提交请求
https://blog.csdn.net/weixin_42683386/article/details/107950708
方法1:FORMS_DDL
Step1: 用一个特定的PO号在PL\SQL中测试能否提交请求打印采购合同
Declare
l_layout_result BOOLEAN;
v_request_id number;
begin
FND_GLOBAL.APPS_INITIALIZE(1326, --user_id, ACENOL
50657, --resp_id, HGZ All Resp
700); --resp_appl_id, Manufacturing
l_layout_result := fnd_request.add_layout('XXE', --template_appl_name
'JCNPOVATTAX', --template_code:XML,not executable
'en', --template_language
'US', --template_territory
'PDF'); --output format
v_request_id := FND_request.SUBMIT_request('XXE', --application
'JCNPOVATTAX', --program:HUH采购合同
NULL,
NULL,
false,
2100010876, --PO
2100010876,
NULL,
82, --Org:HGZ
CHR(0));
Commit;
END;
成功之后再部署到个性化:在PO界面增加”HUH采购合同”菜单选项,MENU1至15都是在 Tools 菜单下
效果:
Step3: 添加个性化,点击菜单调用请求“HUH采购合同”。
Builtin Type Argumetn: 将Step1中的语句去掉初始化部分(FORM中已经初始化了)和注释
='declare
l_layout_result BOOLEAN;
v_request_id number;
begin
l_layout_result := fnd_request.add_layout(' || '''XXE''' || ',' || '''JCNPOVATTAX''' || ',' || '''en''' || ',' || '''US''' || ',' || '''PDF''' || ');' || '
v_request_id := FND_request.SUBMIT_request(' || '''XXE''' || ',' || '''JCNPOVATTAX''' || ',NULL, NULL,false,' || :po_headers.segment1 || ',' || :po_headers.segment1 || ',NULL,' ||:PO_HEADERS.ORG_ID || ',CHR(0));'|| '
commit;
end;'
方法2:Execute a Procedure
将方法1 的语句封装成一个带参Procedure, 在PL\SQL测试成功打印后去掉初始化语句。
CREATE OR REPLACE PROCEDURE SUBMIT_REQUEST_B
( v_po_from IN VARCHAR2, --input name, output id
v_po_to IN VARCHAR2,
v_org_id IN NUMBER )
IS
v_request_id number;
l_layout_result BOOLEAN;
BEGIN
FND_GLOBAL.APPS_INITIALIZE(1326, --user_id, A CENOL
50657, --resp_id, HGZ All Resp
700); --resp_appl_id, Manufacturing
l_layout_result := fnd_request.add_layout('XXE', --template_appl_name
'JCNPOVATTAX', --template_code:XML,not executable
'en', --template_language
'US', --template_territory
'PDF'); --output format
v_request_id := FND_request.SUBMIT_request('XXE', --application
'JCNPOVATTAX', --program
NULL,
NULL,
false,
v_po_from, --PO
v_PO_to,
NULL,
v_org_id, --Org:HGZ
CHR(0));
commit;
dbms_output.put_line('v_request_id:'||v_request_id);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END;
其他步骤和方法1一样,只是将Builtin Type由FORMS_DDL改为Execute a Procedure.