@cwright @william.klotz
yes you will get to the answer more quickly using PL/SQL, with the command_sys package.
An example is below - this is not tested so apologies for any small bugs.
DECLARE
mailto_ VARCHAR2(800) := 'PAUL@IFS.COM';
mailfrom_ VARCHAR2(800) := 'No_Reply@ifs.com';
file_name_ varchar2(2000);
file_names_ varchar2(2000);
doc_type_ varchar2(2000);
AM Plsqlap_Record_API.type_record_;
f_ varchar2(2000);
doc_class_ VARCHAR2(100) := '&NEW:DOC_CLASS';
doc_no_ VARCHAR2(100) := '&NEW:DOC_NO';
doc_sheet_ VARCHAR2(100) := '&NEW:DOC_SHEET';
doc_rev_ VARCHAR2(100) := '&NEW:DOC_REV';
BEGIN
EDM_FILE_API.REFERENCE_EXIST(F_,doc_class_, doc_no_, doc_sheet_, doc_rev_,'VIEW');
IF F_ = 'TRUE' THEN
doc_type_ := 'VIEW';
ELSE
doc_type_ := 'ORIGINAL';
END IF;
file_name_ := EDM_FILE_API.GET_NEW_LOCAL_FILE_NAME(doc_class_, doc_no_, doc_sheet_, doc_rev_,doc_type_,'1');
AM :=
Plsqlap_Record_API.New_record('DOCUMENT_FILE_DATA');
Plsqlap_Record_API.Set_Value (AM, 'DOC_CLASS', doc_class_, Plsqlap_Record_API.dt_Text_Key, FALSE);
Plsqlap_Record_API.Set_Value (AM, 'DOC_NO', doc_no_, Plsqlap_Record_API.dt_Text_Key, FALSE);
Plsqlap_Record_API.Set_Value (AM, 'DOC_SHEET', doc_sheet_, Plsqlap_Record_API.dt_Text_Key, FALSE);
Plsqlap_Record_API.Set_Value (AM, 'DOC_REV', doc_rev_, Plsqlap_Record_API.dt_Text_Key, FALSE);
Plsqlap_Record_API.Set_Value (AM, 'DOC_TYPE', doc_type_, Plsqlap_Record_API.dt_Text_Key, FALSE);
Plsqlap_Record_API.Set_Value (AM, 'FILE_NO', '1', Plsqlap_Record_API.dt_Integer, FALSE);
Plsqlap_Record_API.Set_Value (AM, 'LOCAL_FILE_NAME',file_name_, Plsqlap_Record_API.dt_Text_Key, FALSE);
Plsqlap_Server_API.Invoke_Record_Impersonate('BatchTransferHelper', 'readFromDatabase', AM);
COMMAND_SYS.MAIL(
FROM_USER_NAME_ => mailfrom_,
TO_USER_NAME_ => mailto_,
TEXT_ => 'Please find attached document',
SUBJECT_ => 'document attached',
ATTACH_ => file_name_ );
END;