从SAP CLM提取CLM合同文档(PDF)

2020-09-09 08:19发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我们正在尝试使用工具栏脚本从主协议中下载采购服务器中的合同文档。 所有合同文件均为.pdf格式。 以下程序能够在采购服务器路径"/img/sourcing/inbound/materials/upload/"中下载CLM合同文档,但无法打开PDF文档。 我已经附上了工具栏脚本截图,程序和损坏的PDF文档。 我收到"文件已损坏,无法修复"的错误消息。 我们使用的是CLM版本:9.0.07。

我认为问题在于以下代码。 有人可以检查并帮助我修复以下代码。

d =新的DataInputStream(新的FileInputStream(fileData));

 out =新的DataOutputStream(新的FileOutputStream(文件)); 

 import com.sap.eso.api.contracts.ContractIBeanHomeIfc;
 导入com.sap.eso.api.contracts.ContractIBeanIfc;
 导入com.sap.odp.api.common.types.AttachmentIfc;
 导入com.sap.odp.api.comp.attachments.AttachmentSubIBeanIfc;
 导入com.sap.odp.api.ibean.OrderedSubordinateCollectionIfc;
 导入com.sap.odp.api.ibean.SubordinateCollectionIfc;
 导入com.sap.eso.api.common.types.ObjectReferenceIfc;
 导入com.sap.eso.api.common.types.TypeFactory;
 导入com.sap.eso.api.contracts.ContractIBeanIfc。*;
 导入com.sap.eso.common.db.PersistentBo;
 导入com.sap.eso.api.doc.collaboration。*;
 导入com.sap.eso.api.common.log.Logger;
 导入java.math.BigDecimal;
 导入java.util。*;
 导入com.sap.eso.api.doccommon.masterdata。*;
 导入com.sap.eso.api.common.exception。*;
 导入com.sap.eso.api.ibean.IBeanIfc;
 导入com.sap.eso.api.ibean.IBeanHomeIfc;
 导入com.sap.eso.api.doccommon.doc.contract.ContractDocumentIBeanIfc;
 导入com.sap.eso.api.contracts。*;
 导入com.sap.eso.api.usermgmt.masterdata。*;
 导入com.sap.eso.api.common.types。*;
 导入com.sap.eso.api.ibean。*;
 导入java.text.SimpleDateFormat;
 导入com.sap.eso.api.doccommon.masterdata.ValueListValueIBeanIfc。*;
 导入com.sap.odp.api.util。*;
 导入javax.mail。*;
 导入javax.mail.internet。*;
 导入javax.activation。*;
 导入java.io.File;
 导入java.net。*;
 导入com.sap.eso.api.doccommon.doc.contract.ContractDocumentIBeanIfc;
 导入com.sap.eso.api.common.platform.IapiSessionContextIfc;
 导入com.sap.eso.api.common.platform.IapiDbHandleIfc;
 导入com.sap.eso.api.common.types.SimpleObjectReferenceIfc;
 导入com.sap.eso.api.common.types。*;
 导入com.sap.odp.api.common.log.Logger;


//记录器


 logMsg = Logger.createLogMessage(会话);


 导入com.sap.api.common.types.AttachmentIfc;
 导入com.sap.odp.common.types.Attachment;


//导入com.sap.eso.api.common.types.AttachmentIfc;
//导入com.sap.eso.odp.common.types.Attachment;


 导入com.sap.eso.api.doccommon.doc.contract.DocumentVersionIBeanIfc;
 导入com.sap.eso.api.common.platform.IapiDbHandleIfc;
 导入java.io. *;
 导入java.io.File;
 导入com.sap.eso.api.ibean.AssociativeCollectionIfc;
 文件file = null;
 BufferedWriter输出= null;


 尝试
 {
 contractColl = doc.getContractDocuments();
 for(迭代器iterator1 = ContractsColl.iterator(); iterator1.hasNext();)
 {
 ContractDocumentIBeanIfc contractDocument =(ContractDocumentIBeanIfc)iterator1.next();
 docVersions = contractDocument.getDocVersions();
 topDocVersion = docVersions.get(0);
 Attachment = topDocVersion.getDoc();//键入AttachmentIfc
 displayName = attachment.getDisplayName();
 fileData = attachment.getFileData(session);


 canonicalFilename ="/采购/入站/物料/上传/" + displayName;
 file =新文件(canonicalFilename);
 logMsg.setLogMessage(" downloaded_file" + canonicalFilename);




 d =新的DataInputStream(新的FileInputStream(fileData));
 out =新的DataOutputStream(新的FileOutputStream(文件));


 字符串计数;
 while((count = d.readLine())!= null){
 System.out.println(count);
 out.writeBytes(count);
 }
 d.close();
 out.close();


 }


 }
 捕获(异常e)
 {
 字符串err = e.toString();
 System.out.println("文件错误***" + err);
 logMsg.setLogMessage(" Error_while_downloading_file" + err);


 }
 

(16.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我们正在尝试使用工具栏脚本从主协议中下载采购服务器中的合同文档。 所有合同文件均为.pdf格式。 以下程序能够在采购服务器路径"/img/sourcing/inbound/materials/upload/"中下载CLM合同文档,但无法打开PDF文档。 我已经附上了工具栏脚本截图,程序和损坏的PDF文档。 我收到"文件已损坏,无法修复"的错误消息。 我们使用的是CLM版本:9.0.07。

我认为问题在于以下代码。 有人可以检查并帮助我修复以下代码。

d =新的DataInputStream(新的FileInputStream(fileData));

 out =新的DataOutputStream(新的FileOutputStream(文件)); 

 import com.sap.eso.api.contracts.ContractIBeanHomeIfc;
 导入com.sap.eso.api.contracts.ContractIBeanIfc;
 导入com.sap.odp.api.common.types.AttachmentIfc;
 导入com.sap.odp.api.comp.attachments.AttachmentSubIBeanIfc;
 导入com.sap.odp.api.ibean.OrderedSubordinateCollectionIfc;
 导入com.sap.odp.api.ibean.SubordinateCollectionIfc;
 导入com.sap.eso.api.common.types.ObjectReferenceIfc;
 导入com.sap.eso.api.common.types.TypeFactory;
 导入com.sap.eso.api.contracts.ContractIBeanIfc。*;
 导入com.sap.eso.common.db.PersistentBo;
 导入com.sap.eso.api.doc.collaboration。*;
 导入com.sap.eso.api.common.log.Logger;
 导入java.math.BigDecimal;
 导入java.util。*;
 导入com.sap.eso.api.doccommon.masterdata。*;
 导入com.sap.eso.api.common.exception。*;
 导入com.sap.eso.api.ibean.IBeanIfc;
 导入com.sap.eso.api.ibean.IBeanHomeIfc;
 导入com.sap.eso.api.doccommon.doc.contract.ContractDocumentIBeanIfc;
 导入com.sap.eso.api.contracts。*;
 导入com.sap.eso.api.usermgmt.masterdata。*;
 导入com.sap.eso.api.common.types。*;
 导入com.sap.eso.api.ibean。*;
 导入java.text.SimpleDateFormat;
 导入com.sap.eso.api.doccommon.masterdata.ValueListValueIBeanIfc。*;
 导入com.sap.odp.api.util。*;
 导入javax.mail。*;
 导入javax.mail.internet。*;
 导入javax.activation。*;
 导入java.io.File;
 导入java.net。*;
 导入com.sap.eso.api.doccommon.doc.contract.ContractDocumentIBeanIfc;
 导入com.sap.eso.api.common.platform.IapiSessionContextIfc;
 导入com.sap.eso.api.common.platform.IapiDbHandleIfc;
 导入com.sap.eso.api.common.types.SimpleObjectReferenceIfc;
 导入com.sap.eso.api.common.types。*;
 导入com.sap.odp.api.common.log.Logger;


//记录器


 logMsg = Logger.createLogMessage(会话);


 导入com.sap.api.common.types.AttachmentIfc;
 导入com.sap.odp.common.types.Attachment;


//导入com.sap.eso.api.common.types.AttachmentIfc;
//导入com.sap.eso.odp.common.types.Attachment;


 导入com.sap.eso.api.doccommon.doc.contract.DocumentVersionIBeanIfc;
 导入com.sap.eso.api.common.platform.IapiDbHandleIfc;
 导入java.io. *;
 导入java.io.File;
 导入com.sap.eso.api.ibean.AssociativeCollectionIfc;
 文件file = null;
 BufferedWriter输出= null;


 尝试
 {
 contractColl = doc.getContractDocuments();
 for(迭代器iterator1 = ContractsColl.iterator(); iterator1.hasNext();)
 {
 ContractDocumentIBeanIfc contractDocument =(ContractDocumentIBeanIfc)iterator1.next();
 docVersions = contractDocument.getDocVersions();
 topDocVersion = docVersions.get(0);
 Attachment = topDocVersion.getDoc();//键入AttachmentIfc
 displayName = attachment.getDisplayName();
 fileData = attachment.getFileData(session);


 canonicalFilename ="/采购/入站/物料/上传/" + displayName;
 file =新文件(canonicalFilename);
 logMsg.setLogMessage(" downloaded_file" + canonicalFilename);




 d =新的DataInputStream(新的FileInputStream(fileData));
 out =新的DataOutputStream(新的FileOutputStream(文件));


 字符串计数;
 while((count = d.readLine())!= null){
 System.out.println(count);
 out.writeBytes(count);
 }
 d.close();
 out.close();


 }


 }
 捕获(异常e)
 {
 字符串err = e.toString();
 System.out.println("文件错误***" + err);
 logMsg.setLogMessage(" Error_while_downloading_file" + err);


 }
 

(16.6 kB)
付费偷看设置
发送
3条回答

我认为首先您将readline用作字符串来读取文件,但您将其写为字节吗? 您应该与此保持一致。 pdf或ms字文件应视为二进制文件,而不是文本文件。

SC_Yao
2楼-- · 2020-09-09 08:58

嗨,

我们所有的合同文件均为.pdf格式,而非.txt格式。 请尽快提供帮助。

Aaron 3364
3楼-- · 2020-09-09 08:59

嗨,Erik,

感谢您的回复。 您能告诉我如何在上述代码中使用字符串吗? 请修改此代码,然后将其发送回给我。

一周热门 更多>