本文由群内同行提供,十分感谢!

本文档是基于smartforms加密PDF

1.首先我们需要去下载jar应用程序(pdfbox-app-1.8.6.jar),在SAP使用事务码CG3Z进行对jar的上传。

f2b788db874dede6dd06d6bc79dd677b.png

7d94042723ca54eddc5eb2c16427502c.png

上传之后,我们可以在事务码AL11查看该文件,

8a57b9ad700e8ad3169bf5ecd9086e62.png

93d72a702222e65ac6c2d3812a5620ec.png

2.使用SAP事务码SM69创建定制的外部操作系统命令

392a22d00e718239f45053d2b5ccbb7c.png

由于本次测试的系统是Linux系统,Windows的没有测试,如果上面操作不行,则采用以下方式,

026a09fcd4a3a81cef5183c13e92d7fd.png

3.叫basis人员在sap下载java jdk插件

PS:本示例原理参考执行CMD,命令符:java -jar D:\pdfbox-app-1.8.6.jar Encrypt -U12345 C:\Users\Administrator\Desktop\1.pdf C:\Users\Administrator\Desktop\2.pdf

java -jar :执行jar

D:\pdfbox-app-1.8.6.jar : jar文件路径

Encrypt : 加密操作

-U 12345 :加密密码

C:\Users\Administrator\Desktop\1.pdf :文件输入路径

C:\Users\Administrator\Desktop\2.pdf : 文件输出路径

adf86d9b467a7c3d9636fd9b7a1e31be.png

5a6d02268459efe0e88c78299cea536e.png

代码示例:

REPORT ZTEST_LIJS1.*****test pdf *********DATA: L_FORMULARIO            TYPE TDSFNAME,
      L_FUN                   TYPE RS38L_FNAM,
      V_LANGUAGE              TYPE SFLANGU,
      V_E_DEVTYPE             TYPE RSPOPTYPE,
      ST_OUTPUT_OPTIONS       TYPE SSFCOMPOP,
      ST_CONTROL_PARAMETERS   TYPE SSFCTRLOP,
      ST_DOCUMENT_OUTPUT_INFO TYPE SSFCRESPD,
      ST_JOB_OUTPUT_INFO      TYPE SSFCRESCL,
      ST_JOB_OUTPUT_OPTIONS   TYPE SSFCRESOP,
      OTF_DATA                TYPE TSFOTF,
      GD_BUFFER               TYPE STRING,
      V_BIN_FILESIZE          TYPE I,
      IT_DOCS                 TYPE STANDARD TABLE OF DOCS,
      IT_LINES                TYPE STANDARD TABLE OF TLINE,
      WA_LINES                LIKE LINE OF IT_LINES,
      L_FILE                  TYPE STRING,
      IT_PARAMS               TYPE TABLE OF BTCXPGPAR,
      WA_PARAMS               LIKE LINE OF IT_PARAMS,
      L_CMD                   LIKE SXPGCOLIST-NAME,
      UNIQUE_NAME             TYPE SYSUUID_C.DATA:LS_ZSFI0012 LIKE ZSFI0012.
V_LANGUAGE = 'E'.CALL FUNCTION 'SSF_GET_DEVICE_TYPE'EXPORTING
    I_LANGUAGE    = V_LANGUAGE
    I_APPLICATION = 'SAPDEFAULT'IMPORTING
    E_DEVTYPE     = V_E_DEVTYPE.
ST_OUTPUT_OPTIONS-TDPRINTER = V_E_DEVTYPE.
ST_CONTROL_PARAMETERS-NO_DIALOG = 'X'.
ST_CONTROL_PARAMETERS-GETOTF = 'X'.
L_FORMULARIO = 'ZFMFI002'."smartformsCALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'EXPORTING
    FORMNAME           = L_FORMULARIOIMPORTING
    FM_NAME            = L_FUNEXCEPTIONS
    NO_FORM            = 1
    NO_FUNCTION_MODULE = 2OTHERS             = 3.CALL FUNCTION L_FUNEXPORTING
    CONTROL_PARAMETERS   = ST_CONTROL_PARAMETERS
    OUTPUT_OPTIONS       = ST_OUTPUT_OPTIONS
    LS_ZSFI0012          = LS_ZSFI0012IMPORTING
    DOCUMENT_OUTPUT_INFO = ST_DOCUMENT_OUTPUT_INFO
    JOB_OUTPUT_INFO      = ST_JOB_OUTPUT_INFO
    JOB_OUTPUT_OPTIONS   = ST_JOB_OUTPUT_OPTIONSEXCEPTIONS
    FORMATTING_ERROR     = 1
    INTERNAL_ERROR       = 2
    SEND_ERROR           = 3
    USER_CANCELED        = 4OTHERS               = 5.
OTF_DATA = ST_JOB_OUTPUT_INFO-OTFDATA.CALL FUNCTION 'CONVERT_OTF_2_PDF' "将smartforms转换PDFIMPORTING
    BIN_FILESIZE           = V_BIN_FILESIZETABLES
    OTF                    = OTF_DATA
    DOCTAB_ARCHIVE         = IT_DOCSLINES                  = IT_LINESEXCEPTIONS
    ERR_CONV_NOT_POSSIBLE  = 1
    ERR_OTF_MC_NOENDMARKER = 2OTHERS                 = 3.CALL FUNCTION 'SYSTEM_UUID_C_CREATE'IMPORTING
    UUID = UNIQUE_NAME.CONCATENATE  'C:\' UNIQUE_NAME '.PDF' INTO L_FILE.OPEN DATASET L_FILE FOR OUTPUT IN BINARY MODE  .IF  SY-SUBRC = 0 .LOOP AT IT_LINES INTO WA_LINES.TRANSFER WA_LINES TO L_FILE .ENDLOOP.CLOSE DATASET L_FILE  ."password  file"连接 密码 输入路径 输出路径CONCATENATE '12345' L_FILE L_FILE INTO WA_PARAMS SEPARATED BY SPACE."调用在SM69设置的外部命令
  L_CMD = 'Z_PDF_ENCRYPT'.CALL FUNCTION 'SXPG_COMMAND_EXECUTE' "执行命令EXPORTING
      COMMANDNAME           = L_CMD
      OPERATINGSYSTEM       = 'Linux'
      ADDITIONAL_PARAMETERS = WA_PARAMSEXCEPTIONSOTHERS                = 15.IF SY-SUBRC = 0.CLOSE DATASET L_FILE.OPEN DATASET L_FILE FOR INPUT IN BINARY MODE.IF SY-SUBRC EQ 0.REFRESH IT_LINES.DO.CLEAR WA_LINES.READ DATASET L_FILE INTO WA_LINES.IF SY-SUBRC = 0.APPEND WA_LINES TO IT_LINES.ELSE.IF WA_LINES IS NOT INITIAL.APPEND WA_LINES TO IT_LINES.ENDIF.EXIT.ENDIF.ENDDO.CLOSE DATASET L_FILE."send PDF by email / save as pdf …CALL FUNCTION 'GUI_DOWNLOAD'EXPORTING
          FILENAME = 'C:\TEMP\1.PDF'
          FILETYPE = 'BIN'TABLES
          DATA_TAB = IT_LINESEXCEPTIONSOTHERS   = 15.ENDIF.ENDIF."remove temp file from app serverDELETE DATASET L_FILE.ENDIF.

269045f070401cde830f38e246a72507.png

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐