Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

regarding smartforms and pdf conversion

Former Member
0 Likes
521

hi experts,

i m converting smartforms into pdf and sending as an attachment to the mail ids.

i want to know one thing,what is the functionality of the codes which are in bold state.

actually i got this codes from sdn n i cud not understand even by debug also.

***FM FOR PDF.

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

FORMAT = 'PDF'

MAX_LINEWIDTH = 132

IMPORTING

BIN_FILESIZE = V_LEN_IN

TABLES

OTF = I_OTF

LINES = I_TLINE

EXCEPTIONS

ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

OTHERS = 4.

IF SY-SUBRC <> 0.

ENDIF.

LOOP AT I_TLINE

TRANSLATE I_TLINE USING '~'.

CONCATENATE WA_BUFFER I_TLINE INTO WA_BUFFER.

ENDLOOP.

TRANSLATE WA_BUFFER USING '~'.

DO.

i_RECORD = WA_BUFFER

APPEND I_RECORD.

SHIFT WA_BUFFER LEFT BY 255 PLACES.

IF WA_BUFFER IS INITIAL.

EXIT.

ENDIF.

ENDDO.*

Edited by: Rajat on Nov 3, 2008 7:31 AM

Edited by: Rajat on Nov 3, 2008 7:33 AM

3 REPLIES 3
Read only

Former Member
0 Likes
476

Hi Rajat,

Check out the below code.....This might help you....



REPORT zpprep_shopfloor_viewer_zoom.

*--------------------------------------------------------------------*
* T A B L E S    D E C L A R A T I O N
*--------------------------------------------------------------------*
*---Tables Used.
TABLES: afpo,
        mara,
        marc,
        aufk,
        afko,
        itcoo,
        nast,                          "Messages
        *nast,                         "Messages
        tnapr,                         "Programs & Forms
        addr_key,
        arc_params,                    "Archive parameters
        toa_dara.                      "Archive parameters



*--------------------------------------------------------------------*
* I N T E R N A L    T A B L E S     D E C L A R A T I O N
*--------------------------------------------------------------------*
*--Internal Tables Used.

*--------------------------------------------------------------------*
* D A T A     D E C L A R A T I O N
*--------------------------------------------------------------------*
*--Global Variables Used.
DATA: ws_matnr LIKE afpo-matnr,
      ws_werks LIKE aufk-werks,
      ws_mtart LIKE mara-mtart,
      ws_wrkst LIKE mara-wrkst,
      ws_fname TYPE rs38l_fnam,
      ws_ctrlp TYPE ssfctrlop,
      ws_optns TYPE ssfcompop,
      w_padest LIKE tsp03l-padest.                          "BMC01+

DATA: da_message_printed(1) TYPE c,
      da_preview_processed(1) TYPE c,
      repeat(1) TYPE c,
      da_subrc LIKE sy-subrc.

DATA: w_otfdata  TYPE ssfcrescl.
DATA: BEGIN OF it_itcoo OCCURS 0.
        INCLUDE STRUCTURE itcoo.
DATA: END OF it_itcoo.
DATA: w_otf  TYPE itcoo.

*--Data Declaration for Printing Layout
DATA: ls_itcpo     TYPE itcpo.
DATA: lf_repid     TYPE sy-repid.
DATA: lf_device    TYPE tddevice.
DATA: cf_retcode   TYPE sy-subrc.
DATA: ls_recipient TYPE swotobjid.
DATA: ls_sender    TYPE swotobjid.
DATA: ls_control_param   TYPE ssfctrlop.
DATA: ls_composer_param  TYPE ssfcompop.
DATA: ls_addr_key        LIKE addr_key.
DATA: w_screen(1) TYPE c.
DATA: xscreen(1) TYPE c.

DATA: da_mess LIKE vbfs OCCURS 0 WITH HEADER LINE.
*--------------------------------------------------------------------*
* C O N S T A N T S
*--------------------------------------------------------------------*
CONSTANTS: c_fas1(8)  TYPE c VALUE 'PRINTFAS',
           c_fas2(15) TYPE c VALUE 'PRINTFASDRAWING',
           c_wip1(8)  TYPE c VALUE 'PRINTWIP',
           c_wip2(15) TYPE c VALUE 'PRINTWIPDRAWING'.

*--------------------------------------------------------------------*
* S E L E C T I O N - S C R E E N.
*--------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-bl1.
* Production order
PARAMETERS: p_aufnr LIKE afpo-aufnr OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bl1.

*--------------------------------------------------------------------*
START-OF-SELECTION.
*--------------------------------------------------------------------*


*--Get Partially processed orders
  MOVE: sy-mandt         TO nast-mandt,
        'V1'             TO nast-kappl,
        p_aufnr          TO nast-objky,
        p_aufnr          TO nast-parnr,
        sy-langu         TO nast-spras,
        sy-datum         TO nast-erdat,
        '1'              TO nast-nacha,
        '3'              TO nast-vsztp,
        'X'              TO nast-manue,
        sy-uname         TO nast-usnam,
        'DFLT'           TO nast-ldest,
        sy-langu         TO nast-tdspras,
        'Shop Floor Papers' TO nast-tdcovtitle,
        '1'              TO nast-tdarmod,
        'BUS2032'        TO nast-objtype.

*--Printer settings
  CALL FUNCTION 'WFMC_PREPARE_SMART_FORM'
    EXPORTING
      pi_nast       = nast
      pi_repid      = sy-repid
    IMPORTING
      pe_returncode = cf_retcode
      pe_itcpo      = ls_itcpo
      pe_device     = lf_device
      pe_recipient  = ls_recipient
      pe_sender     = ls_sender.

  MOVE-CORRESPONDING ls_itcpo TO ls_composer_param.
  ls_control_param-device      = 'PRINTER'.
  ls_control_param-no_dialog   = 'X'.
  ls_control_param-preview     = 'X'.
  ls_control_param-getotf      = ls_itcpo-tdgetotf.
  ls_control_param-langu       = sy-langu.


  CLEAR:   ws_werks.
  SELECT   SINGLE werks
           INTO   ws_werks
           FROM   aufk
           WHERE  aufnr = p_aufnr.

  CLEAR:   ws_matnr.
  SELECT   SINGLE plnbez
           INTO   ws_matnr
           FROM   afko
           WHERE  aufnr = p_aufnr.

  CLEAR:   marc.
  SELECT   SINGLE matgr
           INTO   marc-matgr
           FROM   marc
           WHERE  matnr = ws_matnr
           AND    werks = ws_werks.



*  CHECK NOT ws_matnr IS INITIAL.        
  IF NOT ws_matnr IS INITIAL.           



    SELECT   SINGLE matgr
             INTO   marc-matgr
             FROM   marc
             WHERE  matnr = ws_matnr
             AND    werks = ws_werks.


  ELSE.
    marc-matgr = c_wip1.
  ENDIF.
*--------------------------------------------------------------------*
END-OF-SELECTION.
*--------------------------------------------------------------------*
  PERFORM call_smartform.

*--------------------------------------------------------------------*
* F O R M    R O U T I N E S
*--------------------------------------------------------------------*
*&-------------------------------------------------------------------*
*&      Form  call_smartform
*&-------------------------------------------------------------------*
*       text
*--------------------------------------------------------------------*
FORM call_smartform.

  CLEAR: ws_ctrlp, ws_optns, ws_fname.



  TRANSLATE marc-matgr TO UPPER CASE.
  IF marc-matgr = c_fas1 OR
     marc-matgr = c_fas2.
    PERFORM call_paper_a.
  ELSEIF marc-matgr = c_wip1 OR
         marc-matgr = c_wip2.
    PERFORM call_paper_b.
  ENDIF.




ENDFORM.                    "call_smartform

*&-------------------------------------------------------------------*
*&      Form  call_paper_a
*&-------------------------------------------------------------------*
*       text
*--------------------------------------------------------------------*
FORM call_paper_a.

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING

      formname           = 'ZPPSF_SHOP_FLOOR_PAPER_C'  


    IMPORTING
      fm_name            = ws_fname
    EXCEPTIONS
      no_form            = 1
      no_function_module = 2
      OTHERS             = 3.

  CHECK NOT ws_fname IS INITIAL.

  CLEAR w_otfdata.
  ls_control_param-getotf = 'X'.

  CALL FUNCTION ws_fname
    EXPORTING
      archive_index      = toa_dara
      archive_parameters = arc_params
      control_parameters = ls_control_param
      mail_recipient     = ls_recipient
      mail_sender        = ls_sender
      output_options     = ls_composer_param
      user_settings      = ' '
      is_nast            = nast
      aufnr              = p_aufnr
      flag_orig          = 'X'
    IMPORTING
      job_output_info    = w_otfdata
    EXCEPTIONS
      formatting_error   = 1
      internal_error     = 2
      send_error         = 3
      user_canceled      = 4
      OTHERS             = 5.

  LOOP AT w_otfdata-otfdata INTO w_otf.

    APPEND w_otf TO it_itcoo.

  ENDLOOP.

  CALL FUNCTION 'HR_IT_DISPLAY_WITH_PDF'
    TABLES
      otf_table = it_itcoo.


ENDFORM.                    "call_paper_a

*&-------------------------------------------------------------------*
*&      Form  call_paper_b
*&-------------------------------------------------------------------*
*       text
*--------------------------------------------------------------------*
FORM call_paper_b.

  DATA: ws_doknr TYPE draw-doknr,
        ws_dokvr TYPE draw-dokvr.

  CLEAR: ws_doknr, ws_dokvr.

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           = 'ZPPSF_SHOP_FLOOR_PAPER_B'
    IMPORTING
      fm_name            = ws_fname
    EXCEPTIONS
      no_form            = 1
      no_function_module = 2
      OTHERS             = 3.

  CHECK NOT ws_fname IS INITIAL.

  CLEAR w_otfdata.
  ls_control_param-getotf = 'X'.

  CALL FUNCTION ws_fname
    EXPORTING
      archive_index      = toa_dara
      archive_parameters = arc_params
      control_parameters = ls_control_param
      mail_recipient     = ls_recipient
      mail_sender        = ls_sender
      output_options     = ls_composer_param
      user_settings      = ' '
      is_nast            = nast
      aufnr              = p_aufnr
      doknr              = ws_doknr
      dokvr              = ws_dokvr
      flag_orig          = 'X'
    IMPORTING
      job_output_info    = w_otfdata
    EXCEPTIONS
      formatting_error   = 1
      internal_error     = 2
      send_error         = 3
      user_canceled      = 4
      OTHERS             = 5.

  LOOP AT w_otfdata-otfdata INTO w_otf.

    APPEND w_otf TO it_itcoo.

  ENDLOOP.

  CALL FUNCTION 'HR_IT_DISPLAY_WITH_PDF'
    TABLES
      otf_table = it_itcoo.


ENDFORM.                    "call_paper_b

Thanks,

Chidanand

Read only

Former Member
0 Likes
476

Hi Rajat,

In the Smartforms generated function module, In Control Prameters we have an option called GETOTF. when you pass the vale 'X' to that the data is converted to OTF( Other Text Formate) formate .

All that OTF data can be found in the JOB_OUTPUT_INFO-OTFDATA

Then we convert these OTF data to PDF format through the function module CONVERT_OTF.

here is a sample code.


W_CNTRL_PARAMETERS-GETOTF = 'X'.
W_CNTRL_PARAMETERS-DEVICE = 'PRINTER'.
CALL FUNCTION W_FNAME
*  EXPORTING
*     ARCHIVE_INDEX              =
*     ARCHIVE_INDEX_TAB          =
*     ARCHIVE_PARAMETERS         =
*      CONTROL_PARAMETERS         = W_CNTRL_PARAMETERS
*     MAIL_APPL_OBJ              =
*     MAIL_RECIPIENT             =
*     MAIL_SENDER                =
*     OUTPUT_OPTIONS              = W_OUTPUT_OPTIONS
*     USER_SETTINGS              = 'X'
   IMPORTING
*     DOCUMENT_OUTPUT_INFO       =
    JOB_OUTPUT_INFO            = T_JOB_INFO
*     JOB_OUTPUT_OPTIONS         =
  TABLES
    SF_EKKO                    = I_EKKO
 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.
IF  NOT T_JOB_INFO-OTFDATA[] IS INITIAL.
  T_OTF_DATA[] = T_JOB_INFO-OTFDATA[].

  CALL FUNCTION 'CONVERT_OTF'
    EXPORTING
      FORMAT                      = 'PDF'
      MAX_LINEWIDTH               = 132
*     ARCHIVE_INDEX               = ' '
*     COPYNUMBER                  = 0
*     ASCII_BIDI_VIS2LOG          = ' '
    IMPORTING
      BIN_FILESIZE                = W_BINSIZE
*     BIN_FILE                    =
    TABLES
      OTF                         =  T_OTF_DATA
      LINES                       =  T_LINES
   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.
  DATA : W_STRING TYPE STRING.
  CONCATENATE 'E:\MUKESH\' 'xyz' '.pdf' INTO W_STRING.
  CONDENSE W_STRING.
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      BIN_FILESIZE                    = W_BINSIZE
      FILENAME                        = W_STRING
      FILETYPE                        = 'BIN'
*     APPEND                          = ' '
*     WRITE_FIELD_SEPARATOR           = ' '
*     HEADER                          = '00'
*     TRUNC_TRAILING_BLANKS           = ' '
*     WRITE_LF                        = 'X'
*     COL_SELECT                      = ' '
*     COL_SELECT_MASK                 = ' '
*     DAT_MODE                        = ' '
*     CONFIRM_OVERWRITE               = ' '
*     NO_AUTH_CHECK                   = ' '
*     CODEPAGE                        = ' '
*     IGNORE_CERR                     = ABAP_TRUE
*     REPLACEMENT                     = '#'
*     WRITE_BOM                       = ' '
*     TRUNC_TRAILING_BLANKS_EOL       = 'X'
*   IMPORTING
*     FILELENGTH                      =
    TABLES
      DATA_TAB                        = T_LINES
*     FIELDNAMES                      =
   EXCEPTIONS
     FILE_WRITE_ERROR                = 1
     NO_BATCH                        = 2
     GUI_REFUSE_FILETRANSFER         = 3
     INVALID_TYPE                    = 4
     NO_AUTHORITY                    = 5
     UNKNOWN_ERROR                   = 6
     HEADER_NOT_ALLOWED              = 7
     SEPARATOR_NOT_ALLOWED           = 8
     FILESIZE_NOT_ALLOWED            = 9
     HEADER_TOO_LONG                 = 10
     DP_ERROR_CREATE                 = 11
     DP_ERROR_SEND                   = 12
     DP_ERROR_WRITE                  = 13
     UNKNOWN_DP_ERROR                = 14
     ACCESS_DENIED                   = 15
     DP_OUT_OF_MEMORY                = 16
     DISK_FULL                       = 17
     DP_TIMEOUT                      = 18
     FILE_NOT_FOUND                  = 19
     DATAPROVIDER_EXCEPTION          = 20
     CONTROL_FLUSH_ERROR             = 21
     OTHERS                          = 22
            .
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDIF.

Regards

Kumar M.

Edited by: mukesh kumar on Nov 3, 2008 7:40 AM

Read only

Former Member
0 Likes
476

SOLVED BY OWN