SAP document output - print preview

In order to add Print Preview functionality to your output program the following modifications are required in addition to those described in the SAP document output page.

1) Clear global variables.

Clear gt_rec_emails, gt_vars and gs_vars.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
FORM initialize_data.

  CLEAR:
    gt_vedpa,
    gt_vbtyp_fix_values,
    gt_item_cancellation_dates,
    gt_komv,

    gs_interface,
    gs_komk,
    gs_nast,

    gv_screen_display,
    gv_price_print_mode,
    gv_language,
    gv_scenario,
    gv_dummy,

    <gv_returncode>,

*Floe
    gt_rec_emails,
    gt_vars,
    gs_vars.

ENDFORM.                    " initialize_data

2) Add check on print preview parameter

For example, this could be done as follows:

1:
2:
3:
4:
5:
6:
* Check for print preview
  IF gv_screen_display = 'X'.
    PERFORM preview_data.
  ELSE.
    PERFORM print_data.
  ENDIF.

3) Call Floe using the preview parameter, and then call the Floe E-mail viewer function

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
FORM preview_data.

  DATA:
    ls_outputparams   TYPE sfpoutputparams,
    ls_docparams      TYPE sfpdocparams,
    lv_device         TYPE output_device.

  DATA:
    lt_mess           TYPE bapiret2_t,
    ls_mess           TYPE bapiret2.

  DATA:
    ev_ebody          TYPE  string,
    et_rec_emails     TYPE  /floe/rec_email_t,
    et_attachments    TYPE  /floe/att_t,
    ev_esubject_long  TYPE  /floe/esubject_long.

* Get output parameters
  PERFORM get_output_params CHANGING ls_outputparams
                                     ls_docparams
                                     lv_device.
  CHECK <gv_returncode> IS INITIAL.

* Fill recipient
  gs_rec_email-email = gs_nast-email_addr.
  gs_rec_email-type = '1'.
  APPEND gs_rec_email TO gt_rec_emails.

* Call Floe interface.
  CLEAR ev_ebody.
*
  CALL FUNCTION '/FLOE/EMAIL_OUT' 
    EXPORTING
      im_etype         = tnapr-fonam
      im_elang         = gv_language    
      im_document      = <gs_vbdka>-vbeln
      im_rec_emails    = gt_rec_emails
      im_variables     = gt_vars
      im_preview       = 'X'
    IMPORTING
      ex_subrc         = <gv_returncode>
      ex_ebody         = ev_ebody
      ex_mess          = lt_mess
      ex_rec_emails    = et_rec_emails
      ex_attachments   = et_attachments
      ex_esubject_long = ev_esubject_long.

* Drop out if API has thrown an error
  IF <gv_returncode> NE 0.

    LOOP AT lt_mess INTO ls_mess.
      CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
        EXPORTING
          msg_arbgb = ls_mess-id
          msg_nr    = ls_mess-number
          msg_ty    = ls_mess-type
          msg_v1    = ls_mess-message_v1
          msg_v2    = ls_mess-message_v2
          msg_v3    = ls_mess-message_v3
          msg_v4    = ls_mess-message_v4
        EXCEPTIONS
          OTHERS    = 0.
    ENDLOOP.
    RETURN.

  ENDIF.
*
  CALL FUNCTION '/FLOE/EMAIL_VIEWER'
    EXPORTING
      im_preview     = 'X'
*     IM_ETYPE       =
*     IM_EID         =
      im_esubject    = 'FLOE Preview'
      im_ebody       = ev_ebody
      im_rec_emails  = et_rec_emails
      im_attachments = et_attachments
    IMPORTING
      ex_subrc       = <gv_returncode>.

ENDFORM.                    " preview_data