IF cn_unified = cn_flagx.
lv_sfnam = 'ZBC_PROCODE_PRINT'.
ELSE.
lv_sfnam = 'ZBC_PROCODE_PO_PRINTER'.
ENDIF.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = lv_sfnam
IMPORTING
fm_name = lv_fmnam
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-
*&---------------------------------------------------------------------*
*& FORM FRM_OUTPUT_FORM
*&---------------------------------------------------------------------*
FORM frm_output_form USING isautoflag.
DATA: lt_out TYPE STANDARD TABLE OF zst_bc001code2,
lw_out TYPE zst_bc001code2.
DATA: lw_control TYPE ssfctrlop.
DATA: lw_options TYPE ssfcompop,
lv_index TYPE sy-tabix.
DATA: lv_fmnam TYPE rs38l_fnam, "FUNCTION NAME
lv_sfnam TYPE tdsfname. "SMARTFORMS NAME
*SET PRINT PARAMETERS
lw_control-no_dialog = cn_flagx.
IF isautoflag = 'N'.
lw_control-preview = cn_flagx. "设置自动打印
ENDIF.
lw_control-langu = sy-langu.
lw_control-no_open = cn_flagx.
lw_control-no_close = cn_flagx.
lw_options-tdimmed = cn_flagx.
* LW_CONTROL-DEVICE = 'PRINTER'. "打印机设备
IF sy-langu = '1'.
lw_options-tddest = cn_locn.
* ELSEIF SY-LANGU = 'J'.
* LW_OPTIONS-TDDEST = CN_LOJP.
* ELSEIF SY-LANGU = 'E'.
* LW_OPTIONS-TDDEST = CN_LOHK. "英文版
ENDIF.
* SMARTFORMS NAME
IF cn_unified = cn_flagx.
lv_sfnam = 'ZBC_PROCODE_PRINT'.
ELSE.
lv_sfnam = 'ZBC_PROCODE_PO_PRINTER'.
ENDIF.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = lv_sfnam
IMPORTING
fm_name = lv_fmnam
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.
*---SSF_OPEN
CALL FUNCTION 'SSF_OPEN' "打开打印窗口
EXPORTING
control_parameters = lw_control
output_options = lw_options
* USER_SETTINGS = CN_FLAGX
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
*----- SET PRINT DATA ----------------------------------------------*
CLEAR:gt_ztbc001[].
LOOP AT gt_print.
IF gt_print-check = cn_flagx.
"内表ZTBC001赋值
PERFORM frm_print_menge USING gt_print-menge
gt_print-ebeln gt_print-ebelp.
* 遍历打印
LOOP AT gt_print_out.
lw_out-matnr = gt_print_out-matnr.
lw_out-pcode = gt_print_out-pcode.
lw_out-promo = gt_print_out-promo.
*---- CALL SMARTFORMS ----------------------------------------------*
CALL FUNCTION lv_fmnam
EXPORTING
control_parameters = lw_control
output_options = lw_options
gw_out = lw_out
* TABLES
* GT_OUT = LT_OUT
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.
* WAIT UP TO 1 SECONDS.
ENDLOOP.
ENDIF.
ENDLOOP.
*---SSF_CLOSE "关闭打印窗口,如点打印预览会关闭此窗口
CALL FUNCTION 'SSF_CLOSE'
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
OTHERS = 4.
**********************************************************************
* Modify By Jevin At 2013.02.01
* Descriptioin:
* 1.PO打印后不需要清空条码操作。
**********************************************************************
*注:先关闭预览窗口再确认
* CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
* EXPORTING
** " TEXT-014 STANDS FOR 'SAVE DATA'
* titel = text-003
** " TEXT-012 STANDS FOR 'THIS WOULD UPDATE THE DATA INTO SYSTEM,'
* textline1 = text-001
** " TEXT-013 STANDS FOR 'CONFIRM TO PROCEED?'
* textline2 = text-002
* cancel_display = space
* IMPORTING
* answer = gv_answer.
*
** 打印成功
* IF gv_answer = cn_yes.
* CLEAR:pr_ebeln. "PR_MENGE. "PR_EBELP,
* CLEAR:gt_ztbc001[],gt_print[],gt_print_out[].
* pr_aedat = sy-datum.
* ELSE.
** 打印失败 删除产品条码
* DELETE ztbc001 FROM TABLE gt_ztbc001.
* IF sy-subrc = 0.
* COMMIT WORK AND WAIT.
* ELSE.
* ROLLBACK WORK.
* ENDIF.
*
* CLEAR:gt_ztbc001[].
* ENDIF.
ENDFORM. "FRM_OUTPUT_FORM