This code can be run to both generate the PDF parameters and send the PDF in one hit, to either negate the need to create the PDF parameters or to override the existing PDF parameters. Note the expansion of the ATTR_ data.
Now it would be nice to be able to change the email subject and body.
DECLARE
LAYOUT_NAME_ VARCHAR(2000):='PurchaseOrderPrintRep.rdl';
REPORT_ID_ VARCHAR2(2000):= 'PURCHASE_ORDER_PRINT_REP';
REPORT_ATTR_ VARCHAR2(2000):= '';
PARAMETER_ATTR_ VARCHAR2(2000):= '';
DISTRIBUTION_LIST_ VARCHAR2(2000):= '';
INSTANCE_ATTR_ VARCHAR2(2000):= '';
PRINT_JOB_ID_ VARCHAR2(2000):= '';
PRINT_ATTR_ VARCHAR2(2000):= '';
PRINTER_ID_ VARCHAR2(2000):= 'PDF_PRINTER';
PUR_ORDER_PRINT_OPTION_ VARCHAR(2000) := 'Order';
ORDER_NO_ VARCHAR2(2000):= ORDER_NO;
RESULT_KEY_ VARCHAR2(2000):= '';
ATTR_ VARCHAR2(2000):= '';
BEGIN
REPORT_ATTR_:= 'REPORT_ID'||CHR(31)||'PURCHASE_ORDER_PRINT_REP'||CHR(30)||'LAYOUT_NAME'||CHR(31)||'PurchaseOrderPrintRep.rdl'||CHR(30);
PARAMETER_ATTR_:= 'ORDER_NO_LIST'||CHR(31)||ORDER_NO_||CHR(30)||'PUR_ORDER_PRINT_OPTION'||CHR(31)||PUR_ORDER_PRINT_OPTION_||CHR(30);
ARCHIVE_API.NEW_CLIENT_REPORT(RESULT_KEY_, REPORT_ATTR_, PARAMETER_ATTR_, DISTRIBUTION_LIST_, PRINT_ATTR_);
ARCHIVE_API.GET_INFO(INSTANCE_ATTR_,PARAMETER_ATTR_,RESULT_KEY_);
ATTR_:= 'PRINTER_ID'||CHR(31)||PRINTER_ID_||CHR(30)
||'SETTINGS'||CHR(31)||'!FNDINF.SEND_PDF
$SEND_PDF=TRUE
$SEND_PDF_TO=gerrard.pierce@unipart.com
$APPLY_DEFAULTS=FALSE
!PDF
$PDF_ARCHIVING=TRUE
$PDF_EVENT_PARAM_1=
$PDF_EVENT_PARAM_2='||myline.vendor_no||'
$PDF_EVENT_PARAM_3='||myline.contract||'
$PDF_EVENT_PARAM_4=
$PDF_EVENT_PARAM_5=IFS APPLICATIONS
$PDF_EVENT_PARAM_6='||myline.order_no||'
$REPLY_TO_USER=IFSAPP'||CHR(30);
PRINT_JOB_API.NEW(PRINT_JOB_ID_,ATTR_);
CLIENT_SYS.ADD_TO_ATTR('PRINT_JOB_ID',PRINT_JOB_ID_,INSTANCE_ATTR_);
CLIENT_SYS.ADD_TO_ATTR('RESULT_KEY',RESULT_KEY_,INSTANCE_ATTR_);
PRINT_JOB_CONTENTS_API.NEW_INSTANCE(INSTANCE_ATTR_);
PRINT_JOB_API.PRINT(PRINT_JOB_ID_);
END;