欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

SMARTFORMS打印后转存为PDF文件相关问题

发布时间:2025/3/20 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 SMARTFORMS打印后转存为PDF文件相关问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.转成PDF文件时可以参考的函数(本人只试过一种其它有待尝试):

CONVERT_OTFSPOOLJOB_2_PDF;
CONVERT_OTF_2_PDF;
SX_OBJECT_CONVER_OTF_PDF;
HRHAP_DOC_CONVERT_SMF_TO_PDF.

2.保存后出现了乱码(建议ADOBE READER最新的来读,可以避免乱码,不行了才找其它原因)

t-code spad
新建一个输出设备或用LP01,关键是选对设备类型,据说CN 开头的都是可以的。
例如 CNSAPWIN : MS WINDOWS DRIVER VIA SPLPD 然后保存就行了
调用smartforms的时候,用刚定义的这个就行了
调用SMARTFORMS里面有个相关参数可以适当修改(有些不是必须的根据自己情况设置)

     (DATA L_CONTROL_PARAMETERS TYPE SSFCTRLOP.)
      L_CONTROL_PARAMETERS-GETOTF    = ‘X’.   “此参数必须,不然不会导出PDF而直接显示smartform
      L_CONTROL_PARAMETERS-NO_CLOSE  = ”.
      L_CONTROL_PARAMETERS-NO_DIALOG = ‘X’.   “不显示打印对话框
      (DATA L_OUTPUT_OPTIONS TYPE SSFCOMPOP.)
      L_OUTPUT_OPTIONS-BCS_LANGU = ‘1′.
      L_OUTPUT_OPTIONS-TDDEST = ‘DEFAULT’.

3.以下打印时调用部分参考代码
FORM FRM_USER_COMMAND_ALV
USING R_UCOMM  LIKE SY-UCOMM
                        RS_SELFIELD TYPE SLIS_SELFIELD.”行数 
*—>smartforms 中相关参数定义
  DATA:L_FM_NAME TYPE RS38L_FNAM.
  DATA:L_JOB_OUTPUT_INFO TYPE SSFCRESCL,
       L_JOB_OUTPUT_OPTIONS TYPE SSFCRESOP,
       L_LEN TYPE I.
  DATA L_CONTROL_PARAMETERS TYPE SSFCTRLOP.
  DATA L_OUTPUT_OPTIONS TYPE SSFCOMPOP.
  DATA BEGIN OF LT_PDF OCCURS 10.
          INCLUDE STRUCTURE TLINE.
  DATA END OF LT_PDF.

  CASE R_UCOMM.
    WHEN ‘&ZRNT’.

      CLEAR: L_FM_NAME.
      REFRESH IT_HEAD .
      IT_HEAD = IT_ALV.
      DELETE ADJACENT DUPLICATES FROM IT_HEAD COMPARING RSNUM.

      CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
        EXPORTING
          FORMNAME                 = ‘ZMMR03′
*       VARIANT                  = ‘ ‘
*       DIRECT_CALL              = ‘ ‘
        IMPORTING
          FM_NAME                  = L_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.
      L_CONTROL_PARAMETERS-GETOTF    = ‘X’.   “此参数必须,不然不会导出PDF而直接显示smartform
      L_CONTROL_PARAMETERS-NO_CLOSE  = ”.
*     L_CONTROL_PARAMETERS-NO_DIALOG = ‘X’.   “不显示打印对话框
*     L_OUTPUT_OPTIONS-BCS_LANGU = ‘1′.
*     L_OUTPUT_OPTIONS-TDDEST = ‘DEFAULT’.

      CALL FUNCTION L_FM_NAME
        EXPORTING
*   ARCHIVE_INDEX              =
*   ARCHIVE_INDEX_TAB          =
*   ARCHIVE_PARAMETERS         =
CONTROL_PARAMETERS         = L_CONTROL_PARAMETERS
*   MAIL_APPL_OBJ              =
*   MAIL_RECIPIENT             =
*   MAIL_SENDER                =
  OUTPUT_OPTIONS             = L_OUTPUT_OPTIONS
    USER_SETTINGS              = ‘X’
  IMPORTING
*   DOCUMENT_OUTPUT_INFO       =
    JOB_OUTPUT_INFO            = L_JOB_OUTPUT_INFO
    JOB_OUTPUT_OPTIONS         = L_JOB_OUTPUT_OPTIONS
        TABLES
          IT_ALV                     = IT_ALV
          IT_HEAD                    = IT_HEAD
* EXCEPTIONS
*   FORMATTING_ERROR           = 1
*   INTERNAL_ERROR             = 2
*   SEND_ERROR                 = 3
*   USER_CANCELED              = 4
*   OTHERS                     = 5
                .
      IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      IF SY-SUBRC EQ 0.
*—>转成PDF
        CALL FUNCTION ‘CONVERT_OTF’
          EXPORTING
            FORMAT                      = ‘PDF’
*           MAX_LINEWIDTH               = 132
*           ARCHIVE_INDEX               = ‘ ‘
*           COPYNUMBER                  = 0
*           ASCII_BIDI_VIS2LOG          = ‘ ‘
*           PDF_DELETE_OTFTAB           = ‘ ‘
          IMPORTING
            BIN_FILESIZE                = L_LEN
*           BIN_FILE                    =
          TABLES
            OTF                         = L_JOB_OUTPUT_INFO-OTFDATA
            LINES                       = LT_PDF[]
*         EXCEPTIONS
*           ERR_MAX_LINEWIDTH           = 1
*           ERR_FORMAT                  = 2
*           ERR_CONV_NOT_POSSIBLE       = 3
*           ERR_BAD_OTF                 = 4
*           OTHERS                      = 5
                  .
        IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        IF SY-SUBRC EQ 0.
*—>下载
          CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
            EXPORTING
              BIN_FILESIZE = L_LEN
              FILENAME     = P_FNAME  ”此处是路径,例D:\TEMP.PDF
              FILETYPE     = ‘BIN’
            CHANGING
              DATA_TAB     = LT_PDF[]
            EXCEPTIONS
              OTHERS       = 1.
          IF SY-SUBRC <> 0.
*MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
          ENDIF.
        ENDIF.
      ENDIF.
  ENDCASE.

ENDFORM.                    “user_command

总结

以上是生活随笔为你收集整理的SMARTFORMS打印后转存为PDF文件相关问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。