Report output to PDF and email
Hi
I have a requirement in which we have to add functionality to convert my ALV report out put into .pdf file and send it to mail as attachement.
Please let me know how i can add this functionality to my report.
It is possible to send e-mails of any SAP report in PDF format without changing the existing Program.
Follow these steps.
Check SCOT is configured to send mails.
Execute the RSPO0075 report in SE38 ( Enter Various additional access methods) and create the e-mail method "M".
Create a new output device in the SPAD transaction and enter PDF1 as the device type and M as the access method. No e-mail is required.
Thats all. Then, when you want to send any report by e-mail in a PDF format, you should pull up the report to your screen.
Then go to print, select the output device created before and enter the destination e-mail address. Don't forget to select "print out immediately."
You also need to be sure to have the RSCONN01 report scheduled to run periodicaly (i.e., every 15 minutes).
This report is resposible to deliver the SAPconnect objects.
bye
anupma
Similar Messages
-
BIP report output in PDF and RTF generating some blank columns or � symbols
Hi Experts,
I am new to BIP. I have developed some BIP reports in 10.1.3.4.1 version which are working fine in Dev and UAT environment.
But it's generating some blank columns and some columns with proper data and some columns with"cellphone" kind of symbol in PDF and " �"
symbols in RTF in Prod environment.
In all the environments the version of BIP is same.
So any help in resolving this issue is appreciated.
Thanks in advance..
Regards,
Suresh.AAll of the complex report logic is handled in your Oracle Report (rdf) file.
If your Oracle report is working OK, then this report should be generating XML.
After running your report, go to the View Requests window. Highlight your request, and click the Diagnostics button. Then click the 'View XML' button. If you see XML data, then you should be OK.
When I faced a similar issue, it was because the '1 step' process didnt work for the particular report I was using. The '1 step' process doesn't work for every report. Which report are you using?
If the report is submitted via a form (not the concurrent manager request form), then you probably need to use 2 steps to produce the desired output.
For more information, see the following thread:
Enhancment to avoid 2 step check printing
HTH,
Mark K -
Publishing the report output to PDF and Excel
Hi,
Is there any way to get the Report title, Report run date, Page numbers when we export the report output to Excel or PDF.Hi
I am assuming you are working in 2004s
<u><b>Exporting to PDF</b></u>
For page numbering, add the following parameter to the export command, which defaults the footer to the page numbering
<bi:FOOTER_RIGHT value="PAGEOFPAGES" />
Report Run Date ... we have included this in a text element in our report, and made sure that element is part of the export command. The text element we have used is configured as a Generic Text Element and uses the LAST_REFRESHED property
Report Title ... this is done in the same way, but uses the QUERY_DESCRIPTION property.
<u><b>Exporting to Excel</b></u>
As mentioned already, there is no sense in including page numbers when exporting to Excel, as everything is shown on 1 sheet.
Report Title and Report Run Date are included in the export the same way as above.
Hope this helps.
Cheers,
Andrew -
Report output in PDF and i need to email that how?
Hi,
My requirement is ,
i need to get the details of supplier depends on supplier code and the the output i need to convert into pdf file and the same i need to send email which is from in ADR6-SMTP_ADDR .
here i a getting problem in generating the no of files at a time in backgroud depends on LIFNR.
Regards,
KumarHello friend,
you can also try the following links:
http://wiki.sdn.sap.com/wiki/display/Snippets/SaveReportOutputtoaPDFFile
http://wiki.sdn.sap.com/wiki/display/Snippets/GeneratePDFfromABAPList+Output
http://wiki.sdn.sap.com/wiki/display/Snippets/HowtoCreatePDFfromABAPLIST+Output
Best Regards,
Jerry -
Dynamic CRM 2013 Online how to execute Report, generate PDF and email
Dear All,
I am using Dynamic CRM 2013 online. For quote, I have workflow and Dialogue processes for review process. On approval, I want the system to generate a PDF of quote report, attach the PDF and email it to the Customer.
Better I would like, When approver, clicks on the approve button, the system should auto generate a PDF of quote report, attach the PDF and email it to the Customer, without any further input from the user. If its not possible, I may have to put button on
quote form.
I am using the attached code, but facing various issues.
1. Under prepare the SOAP Message coding part, I am not sure what should be the below URL for CRM 2013 Online?
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
2. What should be the emailid here? Is it Recepient Contact id(Guid) ?
var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
alert("emailid" + emailid.toString());
3. Using this code, not able to create Entity for "ActivityMimeAttachment", I am getting newEntity as undefined.
Below is the code I am using. Please check and help me out, where I am going wrong. Let me know if any better way to implement it. At present, I have put one button on quote form, on click event, below code will get executed.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
var Xrm;
if (window.opener) { Xrm = window.opener.Xrm; }
else if (window.parent) { Xrm = window.parent.Xrm; }
function getReportingSession() {
var reportName = "Quotation_Report"; //set this to the report you are trying to download
var reportId = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
var recordid = Xrm.Page.data.entity.getId();
// recordid = recordid.substring(1, 37); //getting rid of curly brackets
alert(recordid);
var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
var retrieveEntityReq = new XMLHttpRequest();
retrieveEntityReq.open("POST", pth, false);
retrieveEntityReq.setRequestHeader("Accept", "*/*");
retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
retrieveEntityReq.send("id=%7B" + reportId + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false");
var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
var ret = new Array();
ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
x = retrieveEntityReq.responseText.indexOf("ControlID=");
ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
return ret;
function createEntity(ent, entName, upd) {
var jsonEntity = JSON.stringify(ent);
var createEntityReq = new XMLHttpRequest();
var ODataPath = Xrm.Page.context.getServerUrl() + "XRMServices/2011/OrganizationData.svc";
createEntityReq.open("POST", ODataPath + "/" + entName + "Set" + upd, false);
createEntityReq.setRequestHeader("Accept", "application/json");
createEntityReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
createEntityReq.send(jsonEntity);
var newEntity = JSON.parse(createEntityReq.responseText).d;
alert("new entity" + newEntity);
return newEntity;
function createAttachment() {
var params = getReportingSession();
var recordid = Xrm.Page.data.entity.getId();
alert("recordid " + recordid);
var orgName = Xrm.Page.context.getOrgUniqueName();
var userID = Xrm.Page.context.getUserId();
//create email record
// Prepare the SOAP message.
var xml = "<?xml version='1.0' encoding='utf-8'?>" +"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" +
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" +
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +
"<soap:Header>" +
"</soap:Header>" +
"<soap:Body>" +
"<Create xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
"<entity xsi:type='email'>" +
"<regardingobjectid type='quote'>" + recordid + "</regardingobjectid>" +
"<subject>" + "Email with Attachment4" + "</subject>" +
"</entity>" +
"</Create>" +
"</soap:Body>" +
"</soap:Envelope>";
// Prepare the xmlHttpObject and send the request.
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Create");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
// Capture the result
var resultXml = xHReq.responseXML;
// alert("resultXml " + resultXml);
// Check for errors.
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0) {
alert("ERROR");
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
alert("emailid" + emailid.toString());
//var emailid = userID;
var post = Object();
post.Body = encodePdf(params);
var email = new Array();
email[0] =new Object();
email[0].id = emailid;
email[0].entityType ='email';
post.Subject ="File Attachment";
post.AttachmentNumber = 1;
post.FileName ="Report.pdf";
post.MimeType ="application/pdf";
post.ObjectId = Object();
post.ObjectId.LogicalName ="email";
post.ObjectId.Id = email[0].id;
post.ObjectTypeCode ="email";
alert(post.ObjectId.Id);
createEntity(post,"ActivityMimeAttachment", "");
alert("created successfully");
email.Subject = "Your Order";
//Set The current order as the Regarding object
email.RegardingObjectId = {
Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
//Create Email Activity
SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
// Email Call Back function
function EmailCallBack(result) {
email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
var activityPartyFrom = new Object();
// Set the From party of the ActivityParty to relate an entity with Email From field
activityPartyFrom.PartyId = {
Id: customerId, // id of entity you want to associate this activity with.
LogicalName: "contact"
// Set the "activity" of the ActivityParty
activityPartyFrom.ActivityId = {
Id: result.ActivityId,
LogicalName: "email"
// Now set the participation type that describes the role of the party on the activity).
activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
// Create the from ActivityParty for the email
SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
var activityPartyTo = new Object();
// Set the From party of the ActivityParty to relate an entity with Email From field
activityPartyTo.PartyId = {
Id: ownerId, // id of entity you want to associate this activity with.
LogicalName: "systemuser"
// Set the "activity" of the ActivityParty
activityPartyTo.ActivityId = {
Id: result.ActivityId,
LogicalName: "email"
// Now set the participation type that describes the role of the party on the activity). activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
// Create the from ActivityParty
SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
//ActivityParty From Callback
function ActivityPartyFromCallBack(result) {
//ActivityParty To Callback
function ActivityPartyToCallBack(result) {
var StringMaker = function () {
this.parts = [];
this.length = 0;
this.append = function (s) {
this.parts.push(s);
this.length += s.length;
this.prepend = function (s) {
this.parts.unshift(s);
this.length += s.length;
this.toString = function () {
return this.parts.join('');
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encode64(input) {
var output = new StringMaker();
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
while (i < input.length) {
chr1 = input[i++];
chr2 = input[i++];
chr3 = input[i++];
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
else if (isNaN(chr3)) {
enc4 = 64;
output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
return output.toString();
var bdy = new Array();
var bdyLen = 0;
function concat2Bdy(x) {
bdy[bdyLen] = x;
bdyLen++;
function encodePdf(params) {
bdy = new Array();
bdyLen = 0;
var retrieveEntityReq = new XMLHttpRequest();
var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] + "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] + "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
retrieveEntityReq.open("GET", pth, false);
retrieveEntityReq.setRequestHeader("Accept", "*/*");
retrieveEntityReq.send();
BinaryToArray(retrieveEntityReq.responseBody);
return encode64(bdy);
</SCRIPT>
<SCRIPT type=text/vbscript>
Function BinaryToArray(Binary)
Dim i
ReDim byteArray(LenB(Binary))
For i = 1 To LenB(Binary)
byteArray(i-1) = AscB(MidB(Binary, i, 1))
concat2Bdy(AscB(MidB(Binary, i, 1)))
Next
BinaryToArray = byteArray
End Function
</SCRIPT>
</head>
<body>
<input type="button" onclick="createAttachment();" value="Attach Report" />
</body>
</html>
Thanks. and waiting for your valuable comments.
- MittalHello,
Yes, I was able to make my code working as below. Tested on CRM online 2013.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript">
if (typeof (SDK) == "undefined")
{ SDK = { __namespace: true }; }
SDK.JScriptRESTDataOperations = {
_context: function () {
if (typeof GetGlobalContext != "undefined")
{ return GetGlobalContext(); }
else {
if (typeof Xrm != "undefined") {
return Xrm.Page.context;
else { return new Error("Context is not available."); }
_getServerUrl: function () {
var serverUrl = this._context().getServerUrl()
if (serverUrl.match(/\/$/)) {
serverUrl = serverUrl.substring(0, serverUrl.length - 1);
return serverUrl;
_ODataPath: function () {
return this._getServerUrl() + "/XRMServices/2011/OrganizationData.svc/";
_errorHandler: function (req) {
return new Error("Error : " +
req.status + ": " +
req.statusText + ": " +
JSON.parse(req.responseText).error.message.value);
_dateReviver: function (key, value) {
var a;
if (typeof value === 'string') {
a = /Date\(([-+]?\d+)\)/.exec(value);
if (a) {
return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
return value;
Create: function (object, type, successCallback, errorCallback) {
var req = new XMLHttpRequest();
req.open("POST", this._ODataPath() + type + "Set", true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
if (this.status == 201) {
successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
else {
errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
req.send(JSON.stringify(object));
Retrieve: function (id, type, successCallback, errorCallback) {
var req = new XMLHttpRequest();
req.open("GET", this._ODataPath() + type + "Set(guid'" + id + "')", true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
if (this.status == 200) {
successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
else {
errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
req.send();
Update: function (id, object, type, successCallback, errorCallback) {
var req = new XMLHttpRequest();
req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("X-HTTP-Method", "MERGE");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
if (this.status == 204 || this.status == 1223) {
successCallback();
else {
errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
req.send(JSON.stringify(object));
Delete: function (id, type, successCallback, errorCallback) {
var req = new XMLHttpRequest();
req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("X-HTTP-Method", "DELETE");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
if (this.status == 204 || this.status == 1223) {
successCallback();
else {
errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
req.send();
RetrieveMultiple: function (type, filter, successCallback, errorCallback) {
if (filter != null) {
filter = "?" + filter;
else { filter = ""; }
var req = new XMLHttpRequest();
req.open("GET", this._ODataPath() + type + "Set" + filter, true);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.onreadystatechange = function () {
if (this.readyState == 4 /* complete */) {
if (this.status == 200) {
successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d.results);
else {
errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
req.send();
__namespace: true
</script>
<script type="text/javascript">
//Create Email and link it with Order as Regarding field
var Xrm;
var email = new Object();
var ownerID = "";
var CustomerId = "";
if (window.opener) { Xrm = window.opener.Xrm; }
else if (window.parent) { Xrm = window.parent.Xrm; }
//Get ownerid who send email of quotation to customer
function GetOwnerID() {
var owner = Xrm.Page.getAttribute("ownerid").getValue();
ownerID = owner[0].id;
var ownerName = owner[0].name;
var entityType = owner[0].entityType;
GetToEmailGUID();
//Get customerid who receive email of quotation from owner
function GetToEmailGUID() {
var Customer = Xrm.Page.getAttribute('customerid').getValue();
CustomerId = Customer[0].id;
var CustomerName = Customer[0].name;
var entityType = Customer[0].entityType;
//if CustomerId is type of "Account" then get Primary Contact id of that account
if (entityType == "account") {
var contact = Xrm.Page.getAttribute("customerid").getValue();
if (contact === null) return;
var serverUrl = Xrm.Page.context.getClientUrl();
var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet(guid'" + contact[0].id + "')?$select=PrimaryContactId";
var req = new XMLHttpRequest();
req.open("GET", oDataSelect, false);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json;charset=utf-8");
req.onreadystatechange = function () {
if (req.readyState === 4) {
if (req.status === 200) {
var retrieved = JSON.parse(req.responseText).d;
CustomerId = retrieved.PrimaryContactId.Id;
else {
alert(this.statusText);
req.send();
function CreateEmail() {
GetOwnerID();
email.Subject = "Email with Report Attachment";
//Set The current order as the Regarding object
email.RegardingObjectId = {
Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
//Create Email Activity
SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
// Email Call Back function
function EmailCallBack(result) {
email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
var activityPartyFrom = new Object();
// Set the From party of the ActivityParty to relate an entity with Email From field
activityPartyFrom.PartyId = {
Id: CustomerId, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
LogicalName: "contact"
// Set the "activity" of the ActivityParty
activityPartyFrom.ActivityId = {
Id: result.ActivityId,
LogicalName: "email"
// Now set the participation type that describes the role of the party on the activity).
activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
// Create the from ActivityParty for the email
SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
var activityPartyTo = new Object();
// Set the From party of the ActivityParty to relate an entity with Email From field
activityPartyTo.PartyId = {
Id: ownerID, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
LogicalName: "systemuser"
// Set the "activity" of the ActivityParty
activityPartyTo.ActivityId = {
Id: result.ActivityId,
LogicalName: "email"
// Now set the participation type that describes the role of the party on the activity).
activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
// Create the from ActivityParty
SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
//ActivityParty From Callback
function ActivityPartyFromCallBack(result) {
//ActivityParty To Callback
function ActivityPartyToCallBack(result) {
GetReportId('Quotation');
//Create attachment for the created email
function CreateEmailAttachment() {
//get reporting session and use the params to convert a report in PDF
var params = getReportingSession();
//Email attachment parameters
var activitymimeattachment = Object();
activitymimeattachment.ObjectId = Object();
activitymimeattachment.ObjectId.LogicalName = "email";
activitymimeattachment.ObjectId.Id = email.ActivityId;
activitymimeattachment.ObjectTypeCode = "email",
activitymimeattachment.Subject = "File Attachment";
activitymimeattachment.Body = encodePdf(params);
activitymimeattachment.FileName = "Report.pdf";
activitymimeattachment.MimeType = "application/pdf";
//Attachment call
SDK.JScriptRESTDataOperations.Create(activitymimeattachment, "ActivityMimeAttachment", ActivityMimeAttachmentCallBack, function (error) { alert(error.message); });
//ActivityMimeAttachment CallBack function
function ActivityMimeAttachmentCallBack(result) {
var features = "location=no,menubar=no,status=no,toolbar=no,resizable=yes";
var width = "800px";
var height = "600px";
window.open(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", features);
// To open window which works in outlook and IE both
//openStdWin(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", width, height, features);
//This method will get the reportId based on a report name that will be used in getReportingSession() function
function GetReportId(reportName) {
var oDataSetName = "ReportSet";
var columns = "ReportId";
var filter = "Name eq '" + reportName + "'";
retrieveMultiple(oDataSetName, columns, filter, onSuccess);
function retrieveMultiple(odataSetName, select, filter, successCallback) {
var serverUrl = Xrm.Page.context.getServerUrl();
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?";
if (select) {
odataUri += "$select=" + select + "&";
if (filter) {
odataUri += "$filter=" + filter;
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: odataUri,
beforeSend: function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader("Accept", "application/json");
success: function (data) {
if (successCallback) {
if (data && data.d && data.d.results) {
successCallback(data.d.results);
else if (data && data.d) {
successCallback(data.d);
else {
successCallback(data);
error: function (XmlHttpRequest, errorThrown) {
if (XmlHttpRequest && XmlHttpRequest.responseText) {
alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
function onSuccess(data) {
reportId = data[0].ReportId.replace('{', ").replace('}', ");
CreateEmailAttachment(); // Create Email Attachment
//Gets the report contents
function getReportingSession() {
var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
var retrieveEntityReq = new XMLHttpRequest();
var Id = Xrm.Page.data.entity.getId();
var quotationGUID = Id.replace('{', ""); //set this to selected quotation GUID
quotationGUID = quotationGUID.replace('}', "");
var reportName = "Quotation"; //set this to the report you are trying to download
var reportID = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
var rptPathString = ""; //set this to the CRMF_Filtered parameter
var strParameterXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='quote'><all-attributes /><filter type='and'><condition attribute='quoteid' operator='eq' uitype='quote' value='" + quotationGUID + "' /> </filter></entity></fetch>";
retrieveEntityReq.open("POST", pth, false);
retrieveEntityReq.setRequestHeader("Accept", "*/*");
retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
rptPathString = "id=%7B" + reportID + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" +
reportName + "&isScheduledReport=false&p:CRMAF_Filteredquote=" + strParameterXML;
//remove the part starting from &p:salesorderid if your report has no parameters
retrieveEntityReq.send(rptPathString);
var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
var ret = new Array();
ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
x = retrieveEntityReq.responseText.indexOf("ControlID=");
ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
return ret;
var bdy = new Array();
var bdyLen = 0;
function concat2Bdy(x) {
bdy[bdyLen] = x;
bdyLen++;
function encodePdf(params) {
bdy = new Array();
bdyLen = 0;
var retrieveEntityReq = new XMLHttpRequest();
var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] +
"&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] +
"&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
retrieveEntityReq.open("GET", pth, false);
retrieveEntityReq.setRequestHeader("Accept", "*/*");
retrieveEntityReq.send();
BinaryToArray(retrieveEntityReq.responseBody);
return encode64(bdy);
var StringMaker = function () {
this.parts = [];
this.length = 0;
this.append = function (s) {
this.parts.push(s);
this.length += s.length;
this.prepend = function (s) {
this.parts.unshift(s);
this.length += s.length;
this.toString = function () {
return this.parts.join('');
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encode64(input) {
var output = new StringMaker();
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
while (i < input.length) {
chr1 = input[i++];
chr2 = input[i++];
chr3 = input[i++];
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
return output.toString();
</script>
<script type="text/vbscript">
Function BinaryToArray(Binary)
Dim i
ReDim byteArray(LenB(Binary))
For i = 1 To LenB(Binary)
byteArray(i-1) = AscB(MidB(Binary, i, 1))
concat2Bdy(AscB(MidB(Binary, i, 1)))
Next
BinaryToArray = byteArray
End Function
</script>
</head>
<body>
<input type="button" onclick="CreateEmail();" value="Attach Report" />
</body>
</html>
Thank you,
Mittal. -
Converting report output to pdf by submit spooland email to multiple vendor
Hi all,
my current program converting the report output to pdf and then downaloding andsending to vendor email.If user enter single vendor is o.k. but if suppose user enter multiple vendors,report is dipalying with multiple vendor information and all this information converting to one pdf file only.but i need particular vendor pdf have particular vendor info only excluding remaining vendor info.I am pasting my code.can anyone suggest?
TYPES: BEGIN OF type_data,
lifnr TYPE ekko-lifnr,
matnr TYPE lips-matnr,
vgbel TYPE lips-vgbel,
vgpos TYPE lips-vgpos,
mfrgr TYPE lips-mfrgr,
vbeln TYPE ekes-vbeln,
erdat TYPE ekes-erdat,
lfdat TYPE ekes-eindt,
lgort TYPE lips-lgort,
verur TYPE ekes-xblnr,
lfuhr TYPE ekes-uzeit,
lfimg TYPE lips-lfimg,
meins TYPE lips-meins,
posnr TYPE lips-posnr,
kdmat TYPE lips-kdmat,
dabmg TYPE ekes-dabmg,
eindt TYPE eket-eindt,
* Add by liza DEVK989704
park TYPE ZPO_PARK-menge,
* End by liza DEVK989704
END OF type_data.
DATA: gt_data TYPE STANDARD TABLE OF type_data.
DATA: gw_data LIKE LINE OF gt_data.
form display_list.
DATA: lv_maktx TYPE makt-maktx,
lv_adv(01) TYPE c.
DATA: lv_menge TYPE zomm_t0104m-menge.
*-- Set titles
title1 = 'Shipping notifications'.
title2 = '(Formerly Known As Matsushita Industrial )'.
title3 = sy-title.
IF NOT pa_fax IS INITIAL.
NEW-PAGE LINE-SIZE 120 LINE-COUNT 44.
title3 = 'Outstanding shipping notifications by supplier'.
ENDIF.
SORT gt_data BY lifnr lfdat matnr vgbel vgpos eindt.
LOOP AT gt_data INTO gw_data.
AT NEW lifnr.
NEW-PAGE.
sy-pagno = 1.
*-- Get the vendor name
CLEAR: gv_name1,
gv_telf1,
gv_telfx.
SELECT SINGLE name1 telf1 telfx
INTO (gv_name1, gv_telf1, gv_telfx)
FROM lfa1
WHERE lifnr = gw_data-lifnr.
ENDAT.
AT NEW matnr.
*-- Get the material description
CLEAR lv_maktx.
SELECT SINGLE maktx INTO lv_maktx
FROM makt
WHERE matnr = gw_data-matnr
AND spras = sy-langu.
ENDAT.
*-- If "only pending shipping notifications" is selected, remove all
* entries with no pending quantity
IF gw_data-lfimg LE gw_data-dabmg AND
pa_pend = 'X'.
CONTINUE.
ENDIF.
*-- Highlight entries where the SN delivery date is before the PO
* delivery date
IF gw_data-lfdat < gw_data-eindt.
FORMAT INTENSIFIED ON.
lv_adv = 'X'.
ELSE.
FORMAT INTENSIFIED OFF.
CLEAR lv_adv.
ENDIF.
lv_menge = gw_data-lfimg - gw_data-dabmg.
* Add by liza DEVK989704
clear: PARKING, T_PARK.
refresh: T_PARK.
Select * from ZPO_PARK into T_PARK
where vbeln = gw_data-vbeln
and lifnr = gw_data-lifnr
and matnr = gw_data-matnr.
Append T_PARK.
Endselect.
Loop at T_PARK.
PARKING = PARKING + T_PARK-menge.
Endloop.
gw_data-park = PARKING.
* End by liza DEVK989704
IF pa_fax IS INITIAL.
WRITE:/2(18) gw_data-matnr,
(40) lv_maktx,
gw_data-vgbel,
gw_data-eindt,
(04) gw_data-mfrgr,
(18) gw_data-verur,
gw_data-vbeln,
gw_data-lfdat,
(07) gw_data-lfimg UNIT gw_data-meins,
(07) gw_data-dabmg UNIT gw_data-meins,
(07) lv_menge UNIT gw_data-meins,
gw_data-lgort,
gw_data-erdat,
(01) lv_adv,
* Add by liza DEVK989704
(08) gw_data-park.
* End by liza DEVK989704
ELSE.
WRITE:/2(12) gw_data-matnr,
(26) lv_maktx,
gw_data-vgbel,
(16) gw_data-verur,
gw_data-vbeln,
gw_data-lfdat,
(07) gw_data-lfimg UNIT gw_data-meins,
(07) gw_data-dabmg UNIT gw_data-meins,
(07) lv_menge UNIT gw_data-meins,
gw_data-lgort.
ENDIF.
PERFORM write_vline.AT END OF lifnr.
If pa_dtim NE '000000'.
ULINE.
SKIP.
WRITE:/12 TS_VEND.
WRITE:/12 TS_ATT.
WRITE:/12 TS_FROM.
SKIP. "D01K934099
WRITE:/12'DELIVERY TIME:',pa_dtim. "D01K934099
SKIP. "D01K934099
WRITE:/12 TS_TEXT1.
WRITE:/12 TS_TEXT2.
WRITE:/12 TS_TEXT3.
WRITE:/12 TS_TEXT4.
Else.
ULINE.
SKIP.
WRITE:/12 TS_VEND.
WRITE:/12 TS_ATT.
WRITE:/12 TS_FROM.
WRITE:/12 TS_TEXT1.
WRITE:/12 TS_TEXT2.
WRITE:/12 TS_TEXT3.
WRITE:/12 TS_TEXT4.
Endif.
ENDAT.
move-corresponding gw_data to t_data.
move : lv_maktx to t_data-maktx,
lv_menge to t_data-menge,
lv_adv to t_data-adv,
parking to t_data-park.
append t_data.
L_X = 'X'.
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
NO_DIALOG = L_X
IMPORTING
OUT_PARAMETERS = GS_PRINT_PARAMS
VALID = G_VALID
IF SY-SUBRC 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
GS_PRINT_PARAMS-PAART = 'X_65_80'.
GS_PRINT_PARAMS-LINSZ = '185'.
* /*----------store the current selection screen details---------/
CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING
CURR_REPORT = SY-REPID
TABLES
SELECTION_TABLE = T_RSPARAMS
EXCEPTIONS
NOT_FOUND = 1
NO_REPORT = 2
OTHERS = 3
IF SY-SUBRC 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* /*--- importing variable value set at first time to restrict the infinite loop --------/.
IMPORT VAR FROM MEMORY ID 'abc' .
VAR = VAR + 1 .
P_UNAME = SY-UNAME .
P_REPID = SY-REPID .
* /*------checking variable to restricted scecond time exction of this block of code---------/
IF VAR = 1 .
V_MEMID = 1 .
EXPORT VAR TO MEMORY ID 'abc' .
* /*-----------submitting the spool request--------------/
SUBMIT (P_REPID) WITH SELECTION-TABLE T_RSPARAMS
TO SAP-SPOOL
SPOOL PARAMETERS GS_PRINT_PARAMS
WITHOUT SPOOL DYNPRO
AND RETURN.
endif.
FREE MEMORY ID 'abc'.
* /*-------Calculating the lenth of report name--------/
v_len = STRLEN( P_REPID ) .
* /*-------consutrucing the database variable rq2name to search the spool request---------/
IF v_len >= 9 .
CONCATENATE P_REPID+0(9)
P_UNAME+0(3) INTO LC_RQ2NAME .
ELSE.
V_LEN1 = 9 - V_LEN .
DO V_LEN1 TIMES .
CONCATENATE V_TEMP '_' INTO V_TEMP .
ENDDO.
CONCATENATE P_REPID V_TEMP
P_UNAME INTO LC_RQ2NAME .
ENDIF.
* /*--------selecting the spool request using the above constructed variable----------/
SELECT * FROM TSP01 INTO TABLe IT_TSP01
WHERE RQ2NAME = LC_RQ2NAME .
* /*--------sorting the internal table-----------/
SORT it_tsp01 BY RQCRETIME DESCENDING .
* /*--------reading the first spool request-------/
READ TABLE IT_TSP01 INDEX 1.
* /*--------Convert Spool to PDF-----------/
IF GS_PRINT_PARAMS-PDEST IS INITIAL.
GS_PRINT_PARAMS-PDEST = 'LOCL'.
ENDIF.
CONCATENATE P_DEST T_DATA-LIFNR '.PDF' INTO G_FILENAME.
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = IT_TSP01-RQIDENT
NO_DIALOG = SPACE
IMPORTING
PDF_BYTECOUNT = G_BYTECOUNT
TABLES
PDF = T_PDF
EXCEPTIONS
ERR_NO_ABAP_SPOOLJOB = 1
ERR_NO_SPOOLJOB = 2
ERR_NO_PERMISSION = 3
ERR_CONV_NOT_POSSIBLE = 4
ERR_BAD_DESTDEVICE = 5
USER_CANCELLED = 6
ERR_SPOOLERROR = 7
ERR_TEMSEERROR = 8
ERR_BTCJOB_OPEN_FAILED = 9
ERR_BTCJOB_SUBMIT_FAILED = 10
ERR_BTCJOB_CLOSE_FAILED = 11
OTHERS = 12
IF SY-SUBRC 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. -
PAYABLES NOT GETTING THE REPORT OUTPUT IN PDF AFTER APPLYING RUP5 R12
Hi All,
RDBMS:10.2.0.3.0
Oracle Apps :12.0.4
OS:AIX 5.3
Problem Description:
We are presently facing an issue in Payables not getting the report output in PDF esp for the reports "Invoice Register", Invoice Hold Report and also other reports. We were able to generate the reports till our last test performed on last Thursday. This instance was cloned over the last weekend and probably the new upgrade to RUP5 R12,would have impacted it.
Concurrent Programs submitted are completed normal but on clicking "view output" results in Blank PDF output.
The error message what was shown is as below:
"Adobe Reader could not open 'AcrC.tmp' because it is either not a supported file type or because the file has been damaged (for example, it was sent as an email attachment and wasn't correctly decoded)".
Where could we locate ther above 'AcrC.tmp' of Adobe Reader..
could anyone please share such an experience encountered for resolution..
Would appreciate an early response..
Thanks for your time!
Regards,I suggest you speak to your DBA/sysadmin. This is not likely to be a reports problem.
Check that you can see the output from apps through the viewer (the report may not hav output anything)
Check whether you can print anything on that printer from apps.
May also be worth checking to see if you can print to another printer from this report. -
Converting simple report output to PDF print layout issue
Hi all,
I am converted one report output to PDF format, it is working fine in one DEV sever, but when we moved it to other server the layout of output preview & font size is not coming properly (as same in DEV server) in the new server. I am using the below code, please check & correct me if anything is wrong.
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
copies = '1'
cover_page = space
destination = 'LOCL'
expiration = '1'
immediately = space
mode = space
new_list_id = 'X'
no_dialog = 'X'
user = sy-uname
line_size = 200
line_count = 65
* layout = 'Z_65_230'
layout = 'X_58_170'
sap_cover_page = 'X'
IMPORTING
out_parameters = mstr_print_parms
valid = mc_valid
EXCEPTIONS
archive_info_not_found = 1
invalid_print_params = 2
invalid_archive_params = 3
OTHERS = 4.
IF sy-subrc EQ 0.
**--Creating Spool Request.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = lv_job_name
IMPORTING
jobcount = lv_job_count
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
**--Submitting the Report & Get the Output.
SUBMIT zpsr_submit_prcng WITH SELECTION-TABLE t_ebeln TO SAP-SPOOL WITHOUT SPOOL DYNPRO
SPOOL PARAMETERS mstr_print_parms
USER sy-uname " User for runtime authorizations
VIA JOB lv_job_name
NUMBER lv_job_count
AND RETURN.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = lv_job_count
jobname = lv_job_name
strtimmed = 'X'
IMPORTING
job_was_released = lv_job_released.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Thanks & Regards
Avish
Moderator Message: Please use code tags when pasting code snippets. Also paste relevant portions of the code
Edited by: Suhas Saha on Jul 13, 2011 3:05 PMDear Alexander,
Thanks for the reply.
In this I am using the FM 'CONVERT_ABAPSPOOLJOB_2_PDF'. I have checked the settings from SPAD that is also same in both servers for particular output device. But the patches are diffrennt in both the servers, the server from which layout is not coming properly having the high level patches in compare to the other server(which is working fine). -
Report output in PDF format instead of TEXT
Hello every1,
I am using oracle application E-bS version 11.5.10.2 and i want ORACLE reports output in PDF format instead of standard 'text' default format(the place where v register concurrent programs). so can any one tell me what changes should i do to achieve my goal i had change format as pdf in concurrent program and run report but it shows error as follows:
REP-3000: Internal error starting Oracle Toolkit.
REP-3000: Internal error starting Oracle Toolkit.
Plz. share your knowledge regarding.
Radhi
Edited by: user713 on Jun 20, 2011 9:32 AMHi,
check this support note.
Reference
Master Note : Comprehensive REP-3000 Troubleshooting and Overview Guide (Doc ID 200474.1)
Regards, roberto -
Custom sapscript to PDF and email
Hi all,
I have a requirement to create a new sapscript that can be converted to PDF and emailed. I have done this for regular reports but have no idea about doing it for sapscript.
Does anybody know how I can do this?
I've search the forums here but I haven't found a definate solution.
Cheers,
TonyHere is a sample program.
REPORT ZRICH_0003.
DATA: ITCPO LIKE ITCPO,
TAB_LINES LIKE SY-TABIX.
* Variables for EMAIL functionality
DATA: MAILDATA LIKE SODOCCHGI1.
DATA: MAILPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
DATA: MAILHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.
DATA: MAILBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: MAILTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: MAILREC LIKE SOMLREC90 OCCURS 0 WITH HEADER LINE.
DATA: SOLISTI1 LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.
PERFORM SEND_FORM_VIA_EMAIL.
* FORM SEND_FORM_VIA_EMAIL *
FORM SEND_FORM_VIA_EMAIL.
CLEAR: MAILDATA, MAILTXT, MAILBIN, MAILPACK, MAILHEAD, MAILREC.
REFRESH: MAILTXT, MAILBIN, MAILPACK, MAILHEAD, MAILREC.
* Creation of the document to be sent File Name
MAILDATA-OBJ_NAME = 'TEST'.
* Mail Subject
MAILDATA-OBJ_DESCR = 'Subject'.
* Mail Contents
MAILTXT-LINE = 'Here is your file'.
APPEND MAILTXT.
* Prepare Packing List
PERFORM PREPARE_PACKING_LIST.
* Set recipient - email address here!!!
MAILREC-RECEIVER = '[email protected]'.
MAILREC-REC_TYPE = 'U'.
APPEND MAILREC.
* Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = MAILDATA
PUT_IN_OUTBOX = ' '
TABLES
PACKING_LIST = MAILPACK
OBJECT_HEADER = MAILHEAD
CONTENTS_BIN = MAILBIN
CONTENTS_TXT = MAILTXT
RECEIVERS = MAILREC
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
OPERATION_NO_AUTHORIZATION = 4
OTHERS = 99.
ENDFORM.
* Form PREPARE_PACKING_LIST
FORM PREPARE_PACKING_LIST.
CLEAR: MAILPACK, MAILBIN, MAILHEAD.
REFRESH: MAILPACK, MAILBIN, MAILHEAD.
DESCRIBE TABLE MAILTXT LINES TAB_LINES.
READ TABLE MAILTXT INDEX TAB_LINES.
MAILDATA-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( MAILTXT ).
* Creation of the entry for the compressed document
CLEAR MAILPACK-TRANSF_BIN.
MAILPACK-HEAD_START = 1.
MAILPACK-HEAD_NUM = 0.
MAILPACK-BODY_START = 1.
MAILPACK-BODY_NUM = TAB_LINES.
MAILPACK-DOC_TYPE = 'RAW'.
APPEND MAILPACK.
* Creation of the document attachment
* This form gets the OTF code from the SAPscript form.
* If you already have your OTF code, I believe that you may
* be able to skip this form. just do the following code, looping thru
* your SOLISTI1 and updating MAILBIN.
<b> PERFORM GET_OTF_CODE.
LOOP AT SOLISTI1.
MOVE-CORRESPONDING SOLISTI1 TO MAILBIN.
APPEND MAILBIN.
ENDLOOP.</b>
DESCRIBE TABLE MAILBIN LINES TAB_LINES.
MAILHEAD = 'TEST.OTF'.
APPEND MAILHEAD.
** Creation of the entry for the compressed attachment
MAILPACK-TRANSF_BIN = 'X'.
MAILPACK-HEAD_START = 1.
MAILPACK-HEAD_NUM = 1.
MAILPACK-BODY_START = 1.
MAILPACK-BODY_NUM = TAB_LINES.
MAILPACK-DOC_TYPE = 'OTF'.
MAILPACK-OBJ_NAME = 'TEST'.
MAILPACK-OBJ_DESCR = 'Subject'.
MAILPACK-DOC_SIZE = TAB_LINES * 255.
APPEND MAILPACK.
ENDFORM.
* Form GET_OTF_CODE
FORM GET_OTF_CODE.
DATA: BEGIN OF OTF OCCURS 0.
INCLUDE STRUCTURE ITCOO .
DATA: END OF OTF.
DATA: ITCPO LIKE ITCPO.
DATA: ITCPP LIKE ITCPP.
<b> CLEAR ITCPO.
ITCPO-TDGETOTF = 'X'.</b>
* Start writing OTF code
CALL FUNCTION 'OPEN_FORM'
EXPORTING
FORM = 'ZTEST_FORM'
LANGUAGE = SY-LANGU
OPTIONS = ITCPO
DIALOG = ' '
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION 'START_FORM'
EXCEPTIONS
ERROR_MESSAGE = 01
OTHERS = 02.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
WINDOW = 'MAIN'
EXCEPTIONS
ERROR_MESSAGE = 01
OTHERS = 02.
* Close up Form and get OTF code
CALL FUNCTION 'END_FORM'
EXCEPTIONS
ERROR_MESSAGE = 01
OTHERS = 02.
MOVE-CORRESPONDING ITCPO TO ITCPP.
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT = ITCPP
<b> TABLES
OTFDATA = OTF</b>
EXCEPTIONS
OTHERS = 1.
* Move OTF code to structure SOLI form email
<b> CLEAR SOLISTI1. REFRESH SOLISTI1.
LOOP AT OTF.
SOLISTI1-LINE = OTF.
APPEND SOLISTI1.
ENDLOOP.</b>
ENDFORM.
Please make sure to award points for helpful answers and Welcome to SDN!!!
Regards,
Rich Heilman -
Is there a way to merge 3 or more report output in PDF into one
Hi All,
I know about the report sectioning. I am wondering is there any other way to merge 3 or more report output in pdf form to a single document.
I have seen that there are many thrid party tools. Wondering is there anything from Oracle reports feature or any Oracle product for this?
Thank You
Rajesh ALexIf not changing the reports design, third party tools is the only options. AFAIK, there is no Oracle proprietary tool for merging PDF files..
-
Oracle HTMLDB report output in PDF format using FOP
Hi,
We are currently using Oracle HTMLDB1.6.I am trying to implement the HTMLDB report output in PDF format.I got at document but it is not clear.Could you please let use know wheether anybody has already used in their organization.
Appreciate your response.
Regards
MuraiHey Murai,
did you read the technote:
http://www.oracle.com/technology/pub/notes/technote_htmldb_fop.html
There is anything explained!
greets,
tim -
Printing report output in PDF format
Hi,
I want to know what are the settings needed to print a report output in PDF format, while executing the report from Oracle applications (Ver 11.5.6).
Report is executed as a concurrent request from Oracle applications.
Normally when we run the report from Oracle applications, output will be opened in a internet browser(IE) in HTML format. But I want the output to be opened in PDF format instead of HTML.
OS: Sun Solaris 2.8.
Thanks & Regards,
SarishHi Sarish
Please contact Oracle Support for an answer or to customise your application so that it prints a report output in PDF Format.
To get PDF output you must run report/job with DESFORMAT=PDF in the command line instead of DESFORMAT=HTML/HTMLCSS.
Regards
Sripathy -
How to archive smartform output as PDF and store in External server
Hi,
I have requirement on archiving smartform output.
1.need to archive smartform output as PDF and need to store the PDF in FileNet server.
2.These iPDF need to link to SAP transaction FEBA_LOCKBOX at service for object level.
I know that it can possible through SAP ArchiveLink feature , also aware that i have to enable Archive and Archive print button in the smartform output.
If any body can give me some solutions it will be a great help.
Regards,
Ratheesh BSHi,
DATA: T_SSFCTRLOP TYPE SSFCTRLOP. "FOR SMART FORMS
DATA: T_SSFCRESCL TYPE SSFCRESCL.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'Smart Form Name'
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
T_SSFCTRLOP-NO_DIALOG = 'X'.
T_SSFCTRLOP-GETOTF = 'X'.
T_SSFCTRLOP-LANGU = 'E'.
CALL FUNCTION FM_NAME
EXPORTING
CONTROL_PARAMETERS = T_SSFCTRLOP
IMPORTING
JOB_OUTPUT_INFO = T_SSFCRESCL
TABLES
G_T_PERNR = G_T_PERNR. "(Internal Table).
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'HR_EFI_SHOW_PDF_FORM'
EXPORTING
TOP_EDGE = 10
LEFT_EDGE = 15
TABLES
OTF_TABLE = T_SSFCRESCL-OTFDATA. -
My form was created by FormsCentral. I save as a PDF and emailed it to all of my club members. When they complete the form, save it, and email it back to me, I get a blank form. Why?
If you had iCloud backup turned on, and it made a backup - yes. If you didn't have iCloud backup turned on - but were using iCloud for Contacts, calendars, etc. You will get the contacts and calendars, etc back.
Purchases made with your appleID can be redownloaded as long as they are still available in the iTunes store.
If you connected your phone to a computer with iTunes, there may be a backup on there as well.
Maybe you are looking for
-
Iphone does not work after update
my iphone says "no sim" and i cannot make calls. everything else seems to work. tried reboot but usually phone asks for pin, looks like it is not seeing sim
-
How do i convert my music and pics over from windows to mac using a external hard drive.
New mac user. How do i convert my files from windows to mac using external hard drive. I am using a Seagate freeagent go flex.
-
I'd like to send photos to friends with comments comments about the photo. How can I do that? I'm using iPhoto '11 with Leopard.
-
Assign search help to tcode F-47 (field purchasing doc)
Hi All, I've created an Elementary search helps via SE11. Now I want to link the search help I've created with transaction down payment request screen F-47 , in the field purchasing document. Expected result, when I drill down in the purchasing doc
-
2.5 basic iPad questions
If I had an iPad I could answer these questions for myself, but I don't, so: If an iPad has been synched with a computer's iTune account, what can and cannot be done with that iPad on a different computer (different iTune account)? When an iPad is co