天天看點

Solution:在Smartform的基礎上增加一個pdf檔案,合并後再列印

需求概述

目前的項目上,客戶有個憑證列印的需求,如下:

通過SAP的SMARTFORM生成SAP端的列印檔案(付款憑證),作為列印結果的正面;通過其他系統生成的PDF檔案(電子回單),作為列印結果的背面。雙方的張數都是一。

需求分解

1、SAP端的列印檔案(以下簡稱PDF1),輸出到PDF

2、SAP輸出的PDF,與其他系統生成的PDF(以下簡稱PDF2),進行合并

3、通過SAP系統線上列印合并後的PDF

4、要求雙面列印

需求分析

1、SAP的檔案輸出到PDF。這個網上有大量的例子

2、合并PDF。在系統裡搜CL*PDF*的類,找到了一個CL_RSPO_PDF_MERGE(731版本),甚至還有一個DEMO程式RSPO_TEST_MERGE_PDF_FILES。

3、列印合并後的PDF。上面的類,可以把多個PDF合并為一個,并輸出合并後的XSTRING。但是該怎麼列印這個合并後的PDF呢……

Google……ABAP PRINT PDF,找到了老外寫的一個Z_PRINT_PDF的程式,裡面用到了SPADS函數組的一些函數,比如ADS_SR_OPEN、ADS_WRITE_TO_FILE、ADS_SR_CONFIRM、ADS_SR_CLOSE等。我這邊的系統裡還有函數ADS_CREATE_PDF_SPOOLJOB(版本731),封裝了上面的幾個函數。

簡單說一下原理:首先通過ADS_SR_OPEN建立一個列印執行個體,這個列印執行個體會在伺服器上有一個對應的檔案,然後我們通過DATASET的方式打開這個檔案,把PDF1+PDF2的XSTRING寫入到這個檔案裡,再執行列印。

4、雙面列印。SAP裡的雙面列印,一般都是在FORM上設定的,不是在device上或列印作業的屬性上設定的,目前還是無解狀态,繼續研究……歡迎大姑們指點一二!

代碼下載下傳位址

連結: 

​​https://pan.baidu.com/s/1VwjtI9w7FDYpnctwvD1aIw ​​

提取碼: ry7z 

繼續閱讀