ABAP怎么直接打印PDF文件?
https://faskomyabap.blogspot.com/2017/10/how-to-print-pdf-file-content-from-abap.html
里面的程序可以直接將本地文件打印出來,讀一下過程,這個程序是把本地PDF文件使用upload函數到ABAP中,先是二進制,然后轉成XSTRING,然后使用 連招 ADS_SR_OPEN, ADS_GET_PATH , ADS_SR_CONFIRM , ADS_SR_CLOSE可以直接打印或者發送到SPOOL。因為沒找到官方文檔 ,問了下deepseek,是這么解釋這四個函數的作用的:
- ADS_SR_OPEN: 打開與存檔系統的連接。初始化與外部存檔系統(如文檔管理系統DMS)的會話,建立通信通道。
- ADS_GET_PATH:獲取文檔存儲路徑。根據文檔的唯一標識符(如存檔鍵)獲取其在存檔系統中的物理路徑或URL。
- ADS_SR_CONFIRM:確認操作并提交更改。在文檔存儲或修改后,顯式確認操作以確保事務一致性(類似數據庫提交)。
- ADS_SR_CLOSE:關閉連接。結束與存檔系統的會話,釋放資源。
還有一套函數也可以實現:RSPO_R_RHELP_PRIN,ADS_CREATE_PDF_SPOOLJOB
它的原理都是一樣的,先轉XSTRING,然后調ADS的API。ADS_CREATE_PDF_SPOOLJOB函數里也會調上面那4個函數。
常見問題
(如果百思不得解,試試升級GUI版本和SAP ABA組件,別問為什么,一問一個不吱聲)
相關的程序和函數
TCODE:
- SP01: Spool Request List
- SPAD: Spool Administration
- PDF!
程序:
-
RSPO0020: Display Report for ADS Spool Job Parts
-
RSTXPDFT4: Converting OTP or Spool to PDF
函數組:
- SPOO
- SPADS
函數:
- RSPO_OUTPUT_SPOOL_REQUEST
- ADS_SR_OPEN
- ADS_GET_PATH
- ADS_SR_CONFIRM
- ADS_SR_CLOSE
- RSPO_R_RHELP_PRIN
- ADS_CREATE_PDF_SPOOLJOB
- SSF_FUNCTION_MODULE_NAME
- SSF_GET_DEVICE_TYPE
- CONVERT_OTF,輸入PDF,輸出BIN二進制
- CONVERT_OTF_2_PDF,
- CONVERT_ABAPSPOOLJOB_2_PDF
- GUI_DOWNLOAD
Link
- https://community.sap.com/t5/enterprise-resource-planning-blogs-by-members/save-print-output-as-pdf-file-in-front-end-system-using-pdf-printer-output/ba-p/13212479
- https://www.kodyaz.com/articles/sap-tutorial-convert-spool-request-to-pdf-file-using-rstxpdf4-abap-report.aspx
- https://community.sap.com/t5/application-development-blog-posts/convert-download-abap-report-to-pdf/ba-p