附上源代码
FORM FRM_PRINT_DOC .
DATA: LS_CONTROL TYPE SSFCTRLOP,
LS_OUTPUT_OPTIONS TYPE SSFCOMPOP,
LS_JOB_OPTIONS TYPE SSFCRESOP,
LS_JOB_INFO TYPE SSFCRESCL,
LV_FM_NAME TYPE RS38L_FNAM,
LV_TITLE TYPE CHAR30.
DATA: LT_ZQ_INFO TYPE TABLE OF ZFIT_SQ_INFO, "选中的行
LS_ZQ_INFO LIKE LINE OF LT_ZQ_INFO,
LS_OUT_DATA LIKE LINE OF GT_OUT_DATA.
* 判断是否没有选中
READ TABLE GT_OUT_DATA WITH KEY EDIT = 'X' TRANSPORTING NO FIELDS.
IF SY-SUBRC <> 0.
MESSAGE '请至少选中一行有效行项目!' TYPE 'I'.
EXIT.
ENDIF.
LOOP AT GT_OUT_DATA INTO LS_OUT_DATA WHERE EDIT = 'X'.
MOVE-CORRESPONDING LS_OUT_DATA TO LS_ZQ_INFO.
APPEND LS_ZQ_INFO TO LT_ZQ_INFO.
CLEAR LS_ZQ_INFO.
ENDLOOP.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZFIF0099'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = LV_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.
LS_CONTROL-PREVIEW = 'X'.
LS_CONTROL-NO_OPEN = 'X'.
LS_CONTROL-NO_CLOSE = 'X'.
* LS_CONTROL-NO_DIALOG = 'X'.
LS_CONTROL-DEVICE = 'PRINTER'.
LS_OUTPUT_OPTIONS-TDDEST = 'LP01'.
* LS_OUTPUT_OPTIONS-TDNOPRINT = 'X'. "没有打印预览的打印输出
LS_OUTPUT_OPTIONS-TDIMMED = 'X'. "立即打印
LS_OUTPUT_OPTIONS-TDDELETE = 'X'. "打印后删除
CALL FUNCTION 'SSF_OPEN'
EXPORTING
OUTPUT_OPTIONS = LS_OUTPUT_OPTIONS
CONTROL_PARAMETERS = LS_CONTROL
USER_SETTINGS = ''
IMPORTING
JOB_OUTPUT_OPTIONS = LS_JOB_OPTIONS
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.
CALL FUNCTION LV_FM_NAME
EXPORTING
CONTROL_PARAMETERS = LS_CONTROL
OUTPUT_OPTIONS = LS_OUTPUT_OPTIONS
I_TITLE = LV_TITLE
IMPORTING
JOB_OUTPUT_INFO = LS_JOB_INFO
JOB_OUTPUT_OPTIONS = LS_JOB_OPTIONS
TABLES:
T_ZFIT_ZQ = LT_ZQ_INFO[]
EXCEPTIONS
FORMATTING ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELLED = 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.
CALL FUNCTION 'SSF_CLOSE'
IMPORTING
JOB_OUTPUT_INFO = LS_JOB_INFO
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
FORM FRM_PRINT_DOC .
DATA: LS_CONTROL TYPE SSFCTRLOP,
LS_OUTPUT_OPTIONS TYPE SSFCOMPOP,
LS_JOB_OPTIONS TYPE SSFCRESOP,
LS_JOB_INFO TYPE SSFCRESCL,
LV_FM_NAME TYPE RS38L_FNAM,
LV_TITLE TYPE CHAR30.
DATA: LT_ZQ_INFO TYPE TABLE OF ZFIT_SQ_INFO, "选中的行
LS_ZQ_INFO LIKE LINE OF LT_ZQ_INFO,
LS_OUT_DATA LIKE LINE OF GT_OUT_DATA.
* 判断是否没有选中
READ TABLE GT_OUT_DATA WITH KEY EDIT = 'X' TRANSPORTING NO FIELDS.
IF SY-SUBRC <> 0.
MESSAGE '请至少选中一行有效行项目!' TYPE 'I'.
EXIT.
ENDIF.
LOOP AT GT_OUT_DATA INTO LS_OUT_DATA WHERE EDIT = 'X'.
MOVE-CORRESPONDING LS_OUT_DATA TO LS_ZQ_INFO.
APPEND LS_ZQ_INFO TO LT_ZQ_INFO.
CLEAR LS_ZQ_INFO.
ENDLOOP.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZFIF0099'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = LV_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.
LS_CONTROL-PREVIEW = 'X'.
LS_CONTROL-NO_OPEN = 'X'.
LS_CONTROL-NO_CLOSE = 'X'.
* LS_CONTROL-NO_DIALOG = 'X'.
LS_CONTROL-DEVICE = 'PRINTER'.
LS_OUTPUT_OPTIONS-TDDEST = 'LP01'.
* LS_OUTPUT_OPTIONS-TDNOPRINT = 'X'. "没有打印预览的打印输出
LS_OUTPUT_OPTIONS-TDIMMED = 'X'. "立即打印
LS_OUTPUT_OPTIONS-TDDELETE = 'X'. "打印后删除
CALL FUNCTION 'SSF_OPEN'
EXPORTING
OUTPUT_OPTIONS = LS_OUTPUT_OPTIONS
CONTROL_PARAMETERS = LS_CONTROL
USER_SETTINGS = ''
IMPORTING
JOB_OUTPUT_OPTIONS = LS_JOB_OPTIONS
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.
CALL FUNCTION LV_FM_NAME
EXPORTING
CONTROL_PARAMETERS = LS_CONTROL
OUTPUT_OPTIONS = LS_OUTPUT_OPTIONS
I_TITLE = LV_TITLE
IMPORTING
JOB_OUTPUT_INFO = LS_JOB_INFO
JOB_OUTPUT_OPTIONS = LS_JOB_OPTIONS
TABLES:
T_ZFIT_ZQ = LT_ZQ_INFO[]
EXCEPTIONS
FORMATTING ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELLED = 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.
CALL FUNCTION 'SSF_CLOSE'
IMPORTING
JOB_OUTPUT_INFO = LS_JOB_INFO
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.