使用假脱机将Smarform转换为PDF

2020-09-13 08:44发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我需要将smartform转换为PDF并通过后台处理请求中的邮件将其发送。 我设法使用FM'SSF_FUNCTION_MODULE_NAME'进行了转换,然后使用'CALL FUNCTION v_form_name'调用了智能表单,它可以正常工作。

smartform的导入参数需要填充数据,因此smartform不会为空。

数据:

       gv_addr TYPE addr_key,

       gv_nast TYPE nast,

       gv_vbdka TYPE vbdka,

       gv_vbdpa类似于vbdpa表,

       gv_vbdpau类似vbdpau的表。

 呼叫功能v_form_name

   出口

     control_parameters = w_ctrlop

     output_options = w_compop

     is_addres = gv_addr

     is_nast = gv_nast

     is_vbdka = gv_vbdka

     user_settings ='X'

   输入

     job_output_info = w_return

   桌子

     it_vbdpa = gv_vbdpa

     it_vbdpau = gv_vbdpau

   例外情况

     formatting_error = 1

     internal_error = 2

     send_error = 3

     user_canceled = 4

     其他= 5。
 

is_addres,is_nast和is_vbdka是必需的。

smartform 导入参数的界面如下:

 *" VALUE(ARCHIVE_INDEX)类型TOA_DARA可选

 *" VALUE(ARCHIVE_INDEX_TAB)类型TSFDARA可选

 *" VALUE(ARCHIVE_PARAMETERS)类型ARC_PARAMS可选

 *" VALUE(CONTROL_PARAMETERS)类型SSFCTRLOP可选

 *" VALUE(MAIL_APPL_OBJ)类型SWOTOBJID可选

 *" VALUE(MAIL_RECIPIENT)类型SWOTOBJID可选

 *" VALUE(MAIL_SENDER)类型SWOTOBJID可选

 *" VALUE(OUTPUT_OPTIONS)类型SSFCOMPOP可选

 *" VALUE(USER_SETTINGS)类型TDBOOL默认值'X'

 *" VALUE(IS_VBDKA)TYPE VBDKA

 *" VALUE(IS_NAST)TYPE NAST

 *" VALUE(IS_ADDRES)类型ADDR_KEY 

我在两者之间找不到任何关系。 NAST 表中的 ADRNR 为空,这是我发现的唯一可能获取我需要的数据的关系。 甚至 SP01 事务中的假脱机请求都没有提供任何有关如何填充这些内容的信息。

如果我运行我的程序,邮件将被发送(但不会立即发送)。 PDF文件中具有smartform的结构,但没有所需的数据。 看到这里:

如果有任何方法可以填充这些参数,并且您可以告诉我或其他任何方法,我将非常感激。

(49.6 kB)
5条回答
野沐沐
2020-09-13 09:18

请检查是否有帮助:这是将线轴转换为PDF-

 FORM f_prepare_pdf_attach TABLES pt_table。

  数据:lw_print_params TYPE pri_params,
  lt_data_otf线型表,
  lw_pdf_otf TYPE线条,
  lv_xstring TYPE xstring,
  lc_mode TYPE调用程序。

 *获取打印参数
  如果gv_spoolid_ut不是INITIAL。
  lc_mode ='当前'。
  万一。

  通话功能'GET_PRINT_PARAMETERS'
  出口
  权威=空间
  副本= gc_copy_u
  cover_page =空间
  data_set =空间
  部门=空间
  目的地=空间
  到期时间= gc_exp_u
  立即=空间
  new_list_id = abap_true
  no_dialog = abap_true
  用户= sy-uname
  模式= lc_mode
  输入
  out_parameters = lw_print_params
  例外情况
  archive_info_not_found = 1
  invalid_print_params = 2
  invalid_archive_params = 3
  其他= 4。
  如果sy-subrc <> 0。
  消息ID sy-msgid类型sy-msgty编号sy-msgno
  与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。
  万一。

 *设置打印机目的地
  如果lw_print_params-pdest =空间。
  lw_print_params-pdest = gc_dest_u。  " LOCL
  万一。

 *设置行大小和纸张格式
  lw_print_params-linsz ='132'。
  lw_print_params-paart ='X_65_132'。

 *设置线轴的打印参数
  参数上的新页打印lw_print_params
  没有对话,没有标题,没有标题。

 *检查是否输出数据
  如果不是pt_table []是INITIAL。
 *在阀芯中的ALV中打印输出数据
  执行f_print_alv_data表pt_table。
  万一。

  新页打印关闭。
 *获取线轴号
  如果gv_spoolid_ut是INITIAL。
  gv_spoolid_ut = sy-spono。
  万一。

  如果gv_spoolid_ut不是INITIAL。

  lw_print_params-linsz ='-185'。
  lw_print_params-paart ='X_65_255'。
 *将假脱机转换为OTF格式数据
  通话功能'CONVERT_ABAPSPOOLJOB_2_PDF'
  出口
  src_spoolid = gv_spoolid_ut
  dst_device = lw_print_params-pdest
  桌子
  pdf = lt_data_otf
  例外情况
  err_no_abap_spooljob = 1
  err_no_spooljob = 2
  err_no_permission = 3
  err_conv_not_possible = 4
  err_bad_destdevice = 5
  user_cancelled = 6
  err_spoolerror = 7
  err_temseerror = 8
  err_btcjob_open_failed = 9
  err_btcjob_submit_failed = 10
  err_btcjob_close_failed = 11
  其他= 12。
  如果sy-subrc <> 0。
  消息ID sy-msgid类型sy-msgty编号sy-msgno
  与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。
  万一。

 *将OTF数据转换为Xtring格式
  循环至lt_data_otf INTO lw_pdf_otf。
  ASSIGN lw_pdf_otf至铸造。
  CONCATENATE lv_xstring  INTO lv_xstring在字节模式中。
  结局。

 *获取PDF xstring并将其转换为BCS格式
  gv_size_x_u = XSTRLEN(lv_xstring)。
  gt_objbin_x_u = cl_document_bcs => xstring_to_solix(
  ip_xstring = lv_xstring)。
  万一。

 ENDFORM。  " F_PREPARE_PDF_ATTACH 

一周热门 更多>