将smartform转换成pdf并上传

注:这里存在两种情况下参数 control_parameter的不同设置

第一种没有用到SSF_OPEN,即不用根据条件ON CHANGE 重复打印.

这种情况下设置参数

   control_parameters-getotf    = 'X'.   "此参数必须

          control_parameters-no_close   ''.  "可选,不能等于'X',否则会下载不成功,且不能有control_parameters-no_open  = 'X'. 因为没打开怎么转换?

          control_parameters-no_dialog  'X'. "不显示窗口,可选

第二种用到了SSF_OPENSSF_CLOSE,则:

  control_parameters-getotf    = 'X'.    "此参数必须,而且要在调用SSF_OPEN之前就赋值,调用FNAME时改为等于空也没影响,

     control_parameters-no_open   'X'.   "此参数必须,因为重复调用,不能打开

   

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

*  Download file of pdf

          CONCATENATE 'D:\' gt_outtab-vbeln '.PDF' INTO filename.

"如果把名字的后缀名改为EXCEL,就会存为excel.

          DATA fm_name TYPE rs38l_fnam.

          DATA control_parameters        TYPE    ssfctrlop.

          DATA job_output_info           TYPE    ssfcrescl.    "表格打印结束时返回值

          DATA job_output_options        TYPE    ssfcresop.    "表格打印开始时返回值

  DATA  document_output_info            TYPE            ssfcrespd

 

 

  DATA output_options             TYPE    ssfcompop.

          DATA BEGIN OF pdf OCCURS 10.

                  INCLUDE STRUCTURE tline.

          DATA END OF pdf.

 

          DATA len TYPE i.

          control_parameters-getotf    = 'X'.    "此参数必须

          control_parameters-no_close  = ''.     "不能等于'X',否则会下载不成功,且不能有control_parameters-no_open  = 'X'. 因为没打开怎么转换?

          control_parameters-no_dialog = 'X'.    "不显示窗口

 

   output_options-tddest        = 'PDF'.  "选择输出设备,如'LP01'.

 

*         Get data from smartform

          CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

            EXPORTING

              formname           = 'ZFELIX_TEST'

            IMPORTING

              fm_name            = fm_name

            EXCEPTIONS

              no_form            = 1

              no_function_module = 2

              OTHERS             = 3.

          IF sy-subrc = 0.

            CALL FUNCTION fm_name

              EXPORTING

                control_parameters = control_parameters

 output_options     = output_options

                gs_out             = gt_outtab

              IMPORTING

                job_output_info    = job_output_info

                job_output_options = job_output_options

              EXCEPTIONS

                formatting_error   = 1

                internal_error     = 2

                send_error         = 3

                user_canceled      = 4

                OTHERS             = 5.

 

*           Convert smartforms to PDF

            IF sy-subrc = 0.

              CALL FUNCTION 'CONVERT_OTF'

                EXPORTING

                  format                = 'PDF'

                IMPORTING

                  bin_filesize          = len

                TABLES

                  otf                   = job_output_info-otfdata

                  lines                 = pdf

                EXCEPTIONS

                  err_max_linewidth     = 1

                  err_format            = 2

                  err_conv_not_possible = 3

                  OTHERS                = 4.

              IF sy-subrc = 0.

                CALL FUNCTION 'WS_DOWNLOAD'   "注意这里下载中文可能乱码,是因为打印设备的问题,得要把

                  EXPORTING

                    filename            = filename

                    filetype            = 'BIN'    "'ASC'格式不行

                    bin_filesize        = len

                  TABLES

                    data_tab            = pdf

                  EXCEPTIONS

                    file_open_error     = 1

                    file_write_error    = 2

                    invalid_filesize    = 3

                    invalid_table_width = 4

                    invalid_type        = 5

                    no_batch            = 6

                    unknown_error       = 7

                    OTHERS              = 8.

 

*                Upload pdf to sever

                IF sy-subrc = 0.

                  CONCATENATE 'D:\usr\sap\IDE\SYS\global\' gt_outtab-vbeln '.PDF' INTO ufile.

                  CALL FUNCTION 'C13Z_FILE_UPLOAD_BINARY'

                    EXPORTING

                      i_file_front_end   = filename

                      i_file_appl        = ufile

                      i_file_overwrite   = 'X'

                    EXCEPTIONS

                      fe_file_not_exists = 1

                      fe_file_read_error = 2

                      ap_no_authority    = 3

                      ap_file_open_error = 4

                      ap_file_exists     = 5

                      OTHERS             = 6.

                  COMMIT WORK.

                ENDIF.

              ENDIF.

            ENDIF.

          ENDIF.

 

    IF sy-subrc <> 0.

            MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

                    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

          ENDIF.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值