REPORT zrmm079 NO STANDARD PAGE HEADING LINE-COUNT 65 LINE-SIZE 255.
ZRMM079
原创
©著作权归作者所有:来自51CTO博客作者tangwenchong的原创作品,请联系作者获取转载授权,否则将追究法律责任
*Declaration tables for this program
TABLES:mkpf,mseg,usr01.
*Data declaration: ALV parameters
TYPE-POOLS: slis.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,"Field catalogue
gt_sp_group TYPE slis_t_sp_group_alv."Groups for list display
DATA: gt_layout TYPE slis_layout_alv.
DATA: gt_events TYPE slis_t_event.
DATA: es_excluding TYPE slis_t_extab.
*Constants for ALV
DATA: g_boxnam TYPE slis_fieldname VALUE 'CHECK'.
DATA: g_repid LIKE sy-repid.
DATA: g_variant LIKE disvariant.
DATA: t_fieldcat TYPE slis_t_fieldcat_alv,
w_filedcat LIKE LINE OF t_fieldcat.
DATA: t_listheader TYPE slis_t_listheader,
w_listheader LIKE LINE OF t_listheader.
DATA: t_event TYPE slis_t_event,
w_event LIKE LINE OF t_event.
DATA: t_sort TYPE slis_t_sortinfo_alv.
DATA: x_sort LIKE LINE OF t_sort.
DATA: gs_layout TYPE slis_layout_alv.
*DATA g_status TYPE slis_formname VALUE 'STANDARD'.
DATA: g_user_command TYPE slis_formname VALUE 'MYCOMMAND'.
DATA: l_itcpo LIKE itcpo.
* printer control setting
DATA: l_prn_comp TYPE ssfcompop,
l_prn_ctrlop TYPE ssfctrlop,
job_output_options TYPE ssfcresop,
job_output_info TYPE ssfcrescl.
DATA: z_kind TYPE c. "added by MansonTang 20090429
DATA: BEGIN OF gt_result OCCURS 0,
check TYPE c,
werks LIKE mseg-werks,
plant LIKE t001w-name1,
budat LIKE mkpf-budat,
bwart LIKE mseg-bwart,
mblnr LIKE mkpf-mblnr,
matnr LIKE mseg-matnr,
zeile LIKE mseg-zeile, "mat doc item
bismt LIKE mara-bismt, "old mat
z0001 LIKE mara-z0001, "brand
brand LIKE wrf_brands_t-brand_descr,
ebeln LIKE mseg-ebeln,
ebelp LIKE mseg-ebelp,
lgort LIKE mseg-lgort,
lgobe LIKE t001l-lgobe,
umlgo LIKE mseg-umlgo,
lgobe2 LIKE t001l-lgobe,
shkzg LIKE mseg-shkzg,
bstmg LIKE mseg-bstmg,
erfmg LIKE mseg-erfmg, "for 931 932
kbetr LIKE konp-kbetr, "unit price
total(16) TYPE p DECIMALS 2, "TOTAl = BSTMG * KBETR
netpr LIKE ekpo-netpr, "PO NET PRICE
poamt(16) TYPE p DECIMALS 2, "PO TOTAL = NETPR * BSTMG.
verpr LIKE mbew-verpr, "Moving Price
zcost(16) TYPE p DECIMALS 2, "COST = VERPR * BSTMG.
waers LIKE mseg-waers,
END OF gt_result.
DATA:it_result LIKE gt_result OCCURS 0 WITH HEADER LINE.
DATA:gt_result_print LIKE gt_result OCCURS 0 WITH HEADER LINE.
DATA:gt_result_print_tmp LIKE gt_result OCCURS 0 WITH HEADER LINE.
*Define the selection-screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_werks LIKE mseg-werks OBLIGATORY DEFAULT '1221'.
SELECT-OPTIONS: s_budat FOR mkpf-budat OBLIGATORY.
SELECT-OPTIONS: s_bwart FOR mseg-bwart OBLIGATORY DEFAULT '931' TO '932'.
SELECT-OPTIONS: s_matnr FOR mseg-matnr.
SELECT-OPTIONS: s_mblnr FOR mkpf-mblnr.
SELECT-OPTIONS: s_lgort FOR mseg-lgort NO-EXTENSION NO INTERVALS..
SELECT-OPTIONS: s_umlgo FOR mseg-umlgo NO-EXTENSION NO INTERVALS..
PARAMETERS: s_alv1 RADIOBUTTON GROUP gr1 DEFAULT 'X',
s_alv2 RADIOBUTTON GROUP gr1.
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
* IF s_aufnr = ''.
* MESSAGE '请使用“工单编号”或者“成本中心”其中一个作为查询条件!' TYPE 'E'.
* ENDIF.
*----------------------------------------------------------------------*
*TOP-OF-PAGE
*----------------------------------------------------------------------*
TOP-OF-PAGE.
*---------------------------------------------------------------------*
* AT USER-COMMAND
*---------------------------------------------------------------------*
*AT USER-COMMAND.
* IF SY-UCOMM = 'ZPOST' .
* ENDIF.
END-OF-PAGE.
*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
PERFORM output_data.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
FORM get_data.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_result FROM mkpf AS a
INNER JOIN mseg AS b ON a~mblnr = b~mblnr
WHERE a~mblnr IN s_mblnr AND a~budat IN s_budat AND b~bwart IN s_bwart AND b~matnr IN
s_matnr AND b~werks = p_werks AND b~shkzg = 'H'
AND b~lgort IN s_lgort AND b~umlgo IN s_umlgo.
LOOP AT gt_result.
SELECT SINGLE name1 INTO gt_result-plant FROM t001w WHERE werks = gt_result-werks.
SELECT SINGLE lgobe INTO gt_result-lgobe FROM t001l WHERE lgort = gt_result-lgort.
SELECT SINGLE lgobe INTO gt_result-lgobe2 FROM t001l WHERE lgort = gt_result-umlgo.
SELECT SINGLE bismt INTO gt_result-bismt FROM mara WHERE matnr = gt_result-matnr.
SELECT SINGLE z0001 INTO gt_result-z0001 FROM mara WHERE matnr = gt_result-matnr.
SELECT SINGLE brand_descr INTO gt_result-brand FROM wrf_brands_t WHERE
wrf_brands_t~brand_id = gt_result-z0001.
SELECT SINGLE kbetr INTO gt_result-kbetr FROM konp AS a
* INNER JOIN a902 AS b ON a~knumh = b~knumh
INNER JOIN a902 AS b ON a~knumh = b~knumh AND a~kschl = b~kschl
* WHERE b~vkorg = gt_result-werks AND b~matnr = gt_result-matnr.
WHERE b~vkorg = gt_result-werks AND b~matnr = gt_result-matnr AND b~kschl = 'ZRET'.
gt_result-total = gt_result-kbetr * gt_result-erfmg.
SELECT SINGLE netpr INTO gt_result-netpr FROM ekpo WHERE ebeln = gt_result-ebeln AND
ebelp = gt_result-ebelp.
gt_result-poamt = gt_result-netpr * gt_result-erfmg.
SELECT SINGLE verpr INTO gt_result-verpr FROM mbew WHERE bwkey = gt_result-werks AND
matnr = gt_result-matnr.
gt_result-zcost = gt_result-verpr * gt_result-erfmg.
MODIFY gt_result.
ENDLOOP.
APPEND LINES OF gt_result TO it_result.
ENDFORM. "GET_DATA
*&---------------------------------------------------------------------*
*& Form OUTPUT_DATA
*&---------------------------------------------------------------------*
FORM output_data.
IF gt_result[] IS INITIAL.
MESSAGE 'No data!' TYPE 'S'.
STOP.
ELSE.
CLEAR gt_fieldcat.
PERFORM get_fields_attribute USING 'GT_RESULT' .
PERFORM get_alv_fields USING 'GT_RESULT'.
PERFORM output_detail_alv.
ENDIF.
ENDFORM. "OUTPUT_DATA
*&---------------------------------------------------------------------*
*& Form GET_FIELDS_ATTRIBUTE
*&---------------------------------------------------------------------*
FORM get_fields_attribute USING p_table .
IF s_alv1 = 'X'.
PERFORM change_field_name USING 'CHECK' p_table '打印' '' '' 'X' 'X' '' '' ''.
PERFORM change_field_name USING 'LGORT' p_table '店铺' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'LGOBE' p_table '店铺名称' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'BRAND' p_table '牌子' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'MATNR' p_table '物料编号' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'BISMT' p_table '存货代码' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'MBLNR' p_table '转仓单编号' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'LGORT' p_table '出仓仓位' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'LGOBE' p_table '出仓地点' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'UMLGO' p_table '入仓仓位' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'LGOBE2' p_table '入仓地点' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'ERFMG' p_table '数量' 'X' '' '' '' '' '' ''.
PERFORM change_field_name USING 'WAERS' p_table '货币' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'VERPR' p_table '移动平均价' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'ZCOST' p_table '成本总金额' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'KBETR' p_table '零售单价' 'X' '' '' '' '' '' ''.
PERFORM change_field_name USING 'TOTAL' p_table '零售总金额' 'X' '' '' '' '' '' ''.
ELSE.
PERFORM change_field_name USING 'CHECK' p_table '打印' '' '' 'X' 'X' '' '' ''.
PERFORM change_field_name USING 'MBLNR' p_table '转仓出仓单' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'BUDAT' p_table '日期' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'BWART' p_table '移动类型' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'MATNR' p_table '物料编号' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'BISMT' p_table '存货代码' '' '' '' '' '' '' ''.
* PERFORM change_field_name USING 'EBELN' p_table '原PO' '' '' '' '' '' '' ''.
* PERFORM change_field_name USING 'ZEILE' p_table '项目' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'BRAND' p_table '牌子' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'ERFMG' p_table '数量' 'X' '' '' '' '' '' ''.
PERFORM change_field_name USING 'KBETR' p_table '零售单价' 'X' '' '' '' '' '' ''.
PERFORM change_field_name USING 'TOTAL' p_table '零售金额' 'X' '' '' '' '' '' ''.
* PERFORM change_field_name USING 'POAMT' p_table 'PO金额' '' '' '' '' '' '' ''.
* PERFORM change_field_name USING 'ZCOST' p_table '成本价' '' '' '' '' '' '' ''.
* PERFORM change_field_name USING 'WERKS' p_table '商场' '' '' '' '' '' '' ''.
* PERFORM change_field_name USING 'PLANT' p_table '商场名称' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'LGORT' p_table '出仓仓位' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'LGOBE' p_table '出仓地点' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'UMLGO' p_table '入仓仓位' '' '' '' '' '' '' ''.
PERFORM change_field_name USING 'LGOBE2' p_table '入仓地点' '' '' '' '' '' '' ''.
ENDIF.
PERFORM build_alv_sort USING: 'MBLNR' p_table 'X' '' 'X' ''.
ENDFORM. "GET_FIELDS_ATTRIBUTE
*&---------------------------------------------------------------------*
*& Form build_alv_sort
*&---------------------------------------------------------------------*
FORM build_alv_sort USING fname fitab fup fdown fsubt fsum.
DATA: zsort TYPE slis_sortinfo_alv.
CLEAR zsort.
zsort-fieldname = fname.
zsort-tabname = fitab.
zsort-up = fup.
zsort-down = fdown.
zsort-subtot = fsubt.
APPEND zsort TO t_sort.
ENDFORM. "build_alv_sort
*&---------------------------------------------------------------------*
*& Form CHANGE_FIELD_NAME
*&---------------------------------------------------------------------*
FORM change_field_name USING pl_field pl_itab pl_text pl_sum pl_fix pl_edit pl_checkbox
pl_input pl_ref_fieldname pl_ref_tabname.
DATA lt_fieldcat TYPE slis_fieldcat_alv.
lt_fieldcat-fieldname = pl_field.
lt_fieldcat-tabname = pl_itab.
lt_fieldcat-reptext_ddic = pl_text.
lt_fieldcat-seltext_l = pl_text.
lt_fieldcat-seltext_m = pl_text.
lt_fieldcat-seltext_s = pl_text.
lt_fieldcat-do_sum = pl_sum.
lt_fieldcat-fix_column = pl_fix.
lt_fieldcat-edit_mask = ''.
lt_fieldcat-edit = pl_edit.
lt_fieldcat-checkbox = pl_checkbox. "the column is checkbox
lt_fieldcat-input = pl_input. "the column can be edited in ALV
lt_fieldcat-ddictxt = 'L'.
lt_fieldcat-ref_fieldname = pl_ref_fieldname.
lt_fieldcat-ref_tabname = pl_ref_tabname.
* lt_fieldcat-no_zero = '1' .
APPEND lt_fieldcat TO gt_fieldcat.
CLEAR: lt_fieldcat.
ENDFORM. "CHANGE_FIELD_NAME
*&---------------------------------------------------------------------*
*& Form GET_ALV_FIELDS
*&---------------------------------------------------------------------*
FORM get_alv_fields USING p_itabn.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = p_itabn
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
ENDFORM. " GET_ALV_FIELDS
*&---------------------------------------------------------------------*
*& Form OUTPUT_DETAIL_ALV
*&---------------------------------------------------------------------*
FORM output_detail_alv .
" for print button
DATA i_event_exit TYPE slis_t_event_exit.
DATA gw_event_exit LIKE LINE OF i_event_exit.
DATA gt_event_exit TYPE slis_t_event_exit.
gw_event_exit-ucomm = '&ALL'. "User command for print.
gw_event_exit-before = 'X'.
APPEND gw_event_exit TO gt_event_exit.
gw_event_exit-ucomm = '&SAL'. "User command for print.
APPEND gw_event_exit TO gt_event_exit.
gt_layout-colwidth_optimize = 'X'.
gt_layout-box_fieldname = g_boxnam.
* DELETE ADJACENT DUPLICATES FROM gt_result COMPARING mblnr matnr.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_user_command = 'USER_COMMAND'
i_callback_pf_status_set = 'SET_PF_STATUS'
* i_structure_name = 'GT_RESULT'
it_fieldcat = gt_fieldcat[]
it_sort = t_sort
*I_DEFAULT = 'X'
i_save = 'A'
is_layout = gt_layout
it_events = gt_events[]
it_event_exit = gt_event_exit
TABLES
t_outtab = gt_result
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. "OUTPUT_DETAIL_ALV
*&---------------------------------------------------------------------*
*& Form SET_PF_STATUS1
*&---------------------------------------------------------------------*
FORM set_pf_status USING extab TYPE slis_t_extab.
DATA: r_ucomm LIKE sy-ucomm.
SET PF-STATUS 'ZSTANDARD' ."EXCLUDING ES_EXCLUDING.
ENDFORM. "SET_PF_STATUS
*&---------------------------------------------------------------------*
*& Form sub_call_openform
*&---------------------------------------------------------------------*
FORM sub_call_openform .
CALL FUNCTION 'SSF_OPEN'
EXPORTING
* ARCHIVE_PARAMETERS = ARCHIVE_PARAMETERS
user_settings = ' '
output_options = l_prn_comp
control_parameters = l_prn_ctrlop
IMPORTING
job_output_options = job_output_options
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE 'User Cancelled' TYPE 'W'.
ENDIF.
ENDFORM. " sub_call_openform
*&---------------------------------------------------------------------*
*& Form sub_call_closeform
*&---------------------------------------------------------------------*
FORM sub_call_closeform .
CALL FUNCTION 'SSF_CLOSE'
IMPORTING
job_output_info = job_output_info
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
OTHERS = 4.
ENDFORM. " sub_call_closeform
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
FORM user_command USING rf_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield .
FIELD-SYMBOLS: <fs>,<fs1>,<fs2>.
ASSIGN COMPONENT 6 OF STRUCTURE rs_selfield TO <fs>.
ASSIGN COMPONENT 14 OF STRUCTURE rs_selfield TO <fs1>.
ASSIGN COMPONENT 2 OF STRUCTURE rs_selfield TO <fs2>.
DATA: wa_analy LIKE gt_result.
READ TABLE gt_result INDEX <fs2> INTO wa_analy.
DATA: index TYPE i.
DATA: answer TYPE c.
DATA: refresh_list TYPE c.
DATA: cursor_pos LIKE sy-tabix.
rs_selfield-tabindex = sy-tabix.
*---------------------------------------------------------------------------
DATA ref TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref.
CALL METHOD ref->check_changed_data.
rs_selfield-refresh = 'X'.
*--------------------------------------------------------------------------
CASE rf_ucomm.
WHEN 'ZPRINTB'.
PERFORM set_data_to_print.
PERFORM print_form.
WHEN 'ZPRINTPDF'.
PERFORM set_data_to_print.
PERFORM download_pdf.
WHEN 'RETURN' OR 'BACK' OR 'CANCE'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form set_data_to_print
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM set_data_to_print.
CLEAR: gt_result_print.
REFRESH:gt_result_print.
LOOP AT gt_result WHERE check EQ 'X'.
* gt_result-zneed = gt_result-bdmng - gt_result-enmng.
MOVE-CORRESPONDING gt_result TO gt_result_print.
APPEND gt_result_print.
ENDLOOP.
* remove the select when you go back. added by mansontang20090409
LOOP AT gt_result WHERE check NE ''.
gt_result-check = ''.
MODIFY gt_result.
ENDLOOP.
* --------------Delete the DUPLICATES data
* DELETE ADJACENT DUPLICATES FROM gt_result_print.
IF gt_result_print[] IS INITIAL.
MESSAGE 'Please choose!' TYPE 'E'.
ELSE." choosed print
PERFORM sub_set_printer_control.
l_prn_ctrlop-no_open = 'X'.
l_prn_ctrlop-no_close = 'X'.
*&---------------------------------------------------------------------*
REFRESH gt_result_print_tmp.
APPEND LINES OF gt_result_print TO gt_result_print_tmp.
DELETE ADJACENT DUPLICATES FROM gt_result_print_tmp COMPARING mblnr.
REFRESH gt_result_print.
LOOP AT gt_result_print_tmp.
LOOP AT it_result WHERE mblnr = gt_result_print_tmp-mblnr.
APPEND it_result TO gt_result_print.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFORM. "set_data_to_print
**&---------------------------------------------------------------------*
**& Form SET_DATA_TO_PRINT
**&---------------------------------------------------------------------*
*FORM set_data_to_print.
* CLEAR: gt_result_print.
* REFRESH:gt_result_print.
*
* LOOP AT gt_result WHERE check EQ 'X'.
*
** gt_result-zneed = gt_result-bdmng - gt_result-enmng.
* MOVE-CORRESPONDING gt_result TO gt_result_print.
* APPEND gt_result_print.
*
* ENDLOOP.
*
** remove the select when you go back. added by mansontang20090409
* LOOP AT gt_result WHERE check NE ''.
* gt_result-check = ''.
* MODIFY gt_result.
* ENDLOOP.
*
** --------------Delete the DUPLICATES data
** DELETE ADJACENT DUPLICATES FROM gt_result_print COMPARING mblnr matnr.
*
* IF gt_result_print[] IS INITIAL.
* MESSAGE 'Please choose!' TYPE 'E'.
* ELSE." choosed print
*
* PERFORM sub_set_printer_control.
*
* DATA l_function TYPE rs38l_fnam.
* CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
* EXPORTING
* formname = 'ZRMM079'
* IMPORTING
* fm_name = l_function.
*
* PERFORM sub_call_openform.
* l_prn_ctrlop-no_open = 'X'.
* l_prn_ctrlop-no_close = 'X'.
**&---------------------------------------------------------------------*
* REFRESH gt_result_print_tmp.
* APPEND LINES OF gt_result_print TO gt_result_print_tmp.
*
* DELETE ADJACENT DUPLICATES FROM gt_result_print_tmp COMPARING mblnr.
*
* LOOP AT gt_result_print_tmp.
* REFRESH gt_result_print.
* LOOP AT it_result WHERE mblnr = gt_result_print_tmp-mblnr.
* APPEND it_result TO gt_result_print.
* ENDLOOP.
*
* CALL FUNCTION l_function
* EXPORTING
* control_parameters = l_prn_ctrlop
* output_options = l_prn_comp
* user_settings = '' " using current setting
** ITAB = gt_result_print
* 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.
*
* ENDLOOP.
*
* PERFORM sub_call_closeform.
*
* ENDIF.
*ENDFORM. "SET_DATA_TO_PRINT
*&---------------------------------------------------------------------*
*& Form print_form
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM print_form.
DATA l_function TYPE rs38l_fnam.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZRMM079'
IMPORTING
fm_name = l_function.
PERFORM sub_call_openform.
CALL FUNCTION l_function
EXPORTING
control_parameters = l_prn_ctrlop
output_options = l_prn_comp
user_settings = '' " using current setting
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.ENDIF.
PERFORM sub_call_closeform.
ENDFORM. "print_form
*&---------------------------------------------------------------------*
*& Form sub_set_printer_control
*&---------------------------------------------------------------------*
FORM sub_set_printer_control .
CLEAR usr01.
SELECT SINGLE * FROM usr01 WHERE bname = sy-uname.
l_prn_ctrlop-no_open = 'X'.
* l_prn_ctrlop-no_close = 'X'.
* control setting
l_prn_ctrlop-preview = 'X'.
l_prn_ctrlop-no_dialog = 'X'.
* IF sy-langu = '1' OR sy-langu = 'M'.
l_prn_ctrlop-langu = '1'.
* ENDIF.
l_prn_ctrlop-device = 'PRINTER'.
* printer setting
l_prn_comp-tdcopies = '1'.
l_prn_comp-tdsuffix2 = sy-repid.
l_prn_comp-tddest = usr01-spld.
*** l_prn_comp-tdprinter = 'PRINTER'.
l_prn_comp-tdnewid = 'X'.
l_prn_comp-tdimmed = 'X'. "print it now.
l_prn_comp-tdfinal = 'X'.
* l_prn_comp-tddelete = 'X'.
ENDFORM. " sub_set_printer_control
*&---------------------------------------------------------------------*
*& Form download_pdf
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM download_pdf.
* variable declarations
DATA:
w_cparam TYPE ssfctrlop,
w_outoptions TYPE ssfcompop,
w_bin_filesize TYPE i," Binary File Size
w_filename TYPE string,
w_file_path TYPE string,
w_full_path TYPE string.
CONCATENATE sy-cprog '-' sy-datum '-' sy-uzeit '.PDF' INTO w_filename.
* Internal tables declaration
* Internal table to hold the OTF data
DATA:
t_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,
* Internal table to hold OTF data recd from the SMARTFORM
t_otf_from_fm TYPE ssfcrescl,
* Internal table to hold the data from the FM CONVERT_OTF
t_pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE.
* Calling the SMARTFORM using the function module retrieved above
* GET_OTF parameter in the CONTROL_PARAMETERS is set to get the OTF
* format of the output
w_cparam-no_dialog = 'X'.
w_cparam-preview = space. " Suppressing the dialog box
w_cparam-getotf = 'X'. " for print preview
w_cparam-langu = '1'.
* Printer name to be used is provided in the export parameter
* OUTPUT_OPTIONS
* w_outoptions-tddest = 'LP01'.
w_outoptions-tddest = 'DEFAULT'.
*&---------------------------------------------------------------------*
DATA l_function TYPE rs38l_fnam.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZRMM079'
IMPORTING
fm_name = l_function.
CALL FUNCTION l_function
EXPORTING
control_parameters = w_cparam
output_options = w_outoptions
IMPORTING
job_output_info = t_otf_from_fm
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.
t_otf[] = t_otf_from_fm-otfdata[].
* Function Module CONVERT_OTF is used to convert the OTF format to PDF
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = w_bin_filesize
TABLES
otf = t_otf
lines = t_pdf_tab
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 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.
* To display File SAVE dialog window
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
default_file_name = w_filename
CHANGING
filename = w_filename
path = w_file_path
fullpath = w_full_path
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 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.
* Use the FM GUI_DOWNLOAD to download the generated PDF file onto the
* presentation server
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = w_bin_filesize
filename = w_full_path
filetype = 'BIN'
TABLES
data_tab = t_pdf_tab.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. "download_pdf
上一篇:Print Program and Form Modify
下一篇:ZRFI032
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
079-竞争检测
大多数时候,我们对并发的直觉都是错误的,特别是在多核处理器上更为明显。这也是高并发程序难写的原因。人类想了种种a.// de...
竞争检测 golang i++ 高并发 -
class079 树型dp-下【算法】
class079 树型dp-下【算法】
算法 Math 数组 最长路 -
Java ASM系列:(079)Tree Based Class Transformation示例
本文主要介绍使用Tree API进行类转换的示例。
Java ASM ClassFile Bytecode Tree API