SMARTFORM不同模板一起打印

SMARTFORM不同模板一起打印 一、背景由于客户提出发货单要加上条形码打印条形码单独一个模板加在后面打印输出PDF并发送邮件。二、效果展示不同模板一起打印效果如下建立smartforms的表单时也使用了两个不同的模板三、smartforms建立表单一条形码事务码SE73设置条形码长宽高SMARTFORMS设置条形码格式二表单主窗口采用table的方式可以实现自动换行会比使用模板更好。但是使用table我遇到一个未解决的问题。在条件那里加上比较值的判断未生效比如加上header的语言判断使用不同文本就未生效如果是判断这个字段是否为空是生效的很奇怪希望大佬们指点一下。在smartforms 里面填写内容的时候将字段的格式选择为设置的格式就可以了系统会自动的将字段的内容转换成条形码的格式四、代码一示例打印发送邮件会单独放一期来写这里只到输出PDF字符DATA:gcos_sfname TYPE tdsfname, gcos_sfname_2 TYPE tdsfname. DATA: l_fnam TYPE rs38l_fnam, Function name l_fnam_2 TYPE rs38l_fnam, l_ctrlparm TYPE ssfctrlop, Control parameters for smartforms l_output_info TYPE ssfcrescl. job output infomation for smartforms DATA: t_control_parameters TYPE ssfctrlop, t_output_options TYPE ssfcompop. DATA: git_lines TYPE STANDARD TABLE OF tline, git_lines_2 TYPE STANDARD TABLE OF tline. DATA: gs_lines TYPE solix_tab . DATA:gs_lines_2 TYPE solix_tab. DATA:lv_xstring TYPE xstring, lv_xstring_2 TYPE xstring. IF wa_header-country CN. gcos_sfname ZSDF003_SF_V1. gcos_sfname_2 ZSDF003_SF_CODE. ELSE. gcos_sfname ZSDF003_SF_EN. gcos_sfname_2 ZSDF003_SF_CODE_EN. ENDIF. CALL FUNCTION SSF_FUNCTION_MODULE_NAME EXPORTING formname gcos_sfname SMARTFORMS 名称 * VARIANT * DIRECT_CALL IMPORTING fm_name l_fnam 转换后的函数名 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. t_output_options-tdiexit X. 这个参数最后一次打印一定要是X前面的几次都是空才会连续打印 * t_control_parameters-no_close X. t_control_parameters-no_dialog X. 设置了不弹出对话框 t_control_parameters-getotf X. 要导出PDF这个参数一定要设:OTF 表的返回 IF p_code X. 选择了条码打印 t_control_parameters-no_close X. ELSE. t_control_parameters-no_close . ENDIF. CALL FUNCTION l_fnam EXPORTING control_parameters t_control_parameters 连续预览 output_options t_output_options 默认打印选项设置传输 wa_header wa_header IMPORTING job_output_info t_otf_from_fm TABLES it_item it_tab it_item2 it_tab2 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. ELSE. t_control_parameters-no_open X. 未知 ENDIF. 执行打印功能后进行的操作如数据库之类的 CALL FUNCTION CONVERT_OTF EXPORTING format PDF IMPORTING bin_file lv_xstring TABLES otf t_otf_from_fm-otfdata[] lines git_lines EXCEPTIONS err_max_linewidth 1 err_format 2 err_conv_not_possible 3 OTHERS 4. 转换二进制 CALL FUNCTION SCMS_XSTRING_TO_BINARY EXPORTING buffer lv_xstring TABLES binary_tab gs_lines. IF p_code X. t_control_parameters-no_close space. CALL FUNCTION SSF_FUNCTION_MODULE_NAME EXPORTING formname gcos_sfname_2 SMARTFORMS 名称 * VARIANT * DIRECT_CALL IMPORTING fm_name l_fnam_2 转换后的函数名 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. CALL FUNCTION l_fnam_2 EXPORTING control_parameters t_control_parameters 连续预览 output_options t_output_options 默认打印选项设置传输 * wa_header wa_header IMPORTING job_output_info t_otf_from_fm_2 TABLES it_item it_tab_code * it_item2 it_tab2 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. ELSE. t_control_parameters-no_open X. 未知 ENDIF. ENDIF. CALL FUNCTION CONVERT_OTF EXPORTING format PDF IMPORTING bin_file lv_xstring_2 TABLES otf t_otf_from_fm_2-otfdata[] PDF字符最终会存储到这里前面的会是空 lines git_lines_2 EXCEPTIONS err_max_linewidth 1 err_format 2 err_conv_not_possible 3 OTHERS 4. 转换二进制 CALL FUNCTION SCMS_XSTRING_TO_BINARY EXPORTING buffer lv_xstring_2 TABLES binary_tab gs_lines_2. APPEND LINES OF gs_lines_2 TO gs_lines.二补充如果不需要发送PDF邮件则不需要输出下面这一段在打印完结束即可执行打印功能后进行的操作如数据库之类的 CALL FUNCTION CONVERT_OTF EXPORTING format PDF IMPORTING bin_file lv_xstring TABLES otf t_otf_from_fm-otfdata[] lines git_lines EXCEPTIONS err_max_linewidth 1 err_format 2 err_conv_not_possible 3 OTHERS 4. 转换二进制 CALL FUNCTION SCMS_XSTRING_TO_BINARY EXPORTING buffer lv_xstring TABLES binary_tab gs_lines.