cancel
Showing results for 
Search instead for 
Did you mean: 

Converting sap script output into pdf format?

Former Member
0 Kudos

Hi all,

I have modified the standard purchase order script form MEDRUCK . Now i need to generate the output into pdf format.

This is not only limited to spool requests , But also when the user creates the purchase order and clicks on print or print preview the output should be in pdf format.

Please help on where and what code has to be written for this requirement?

Thanks,

Aravind.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Max,

Just add the codes inside entry_neu.

Former Member
0 Kudos

Hi

If you're using a release greater or equal to 4.6C, the std drive program is SAPFM06P, and here the std fm ME_READ_PO_FOR_PRINTING and ME_PRINT_PO are called in routine ENTRY_NEU.

Those std fm are real print program, so u need to change them, so u should:

- Create the program ZAPFM06P as copy of SAPFM06P (copy the main program only, not its includes;

- Replace the std include FM06PE02 (where the routine ENTRY_NEU is defined) with ZFM06PE02;

- Copy the function group MEDRUCK and all its function modules;

- Modify the routine ENTRY_NEU (defined in the new include ZFM06PE02) in order to call the new fms:

data: l_druvo like t166k-druvo,
        l_nast  like nast,
        l_from_memory,
        l_doc   type meein_purchase_doc_print.

  clear ent_retco.
  if nast-aende eq space.
    l_druvo = '1'.
  else.
    l_druvo = '2'.
  endif.

  call function 'ZME_READ_PO_FOR_PRINTING'
       exporting
            ix_nast        = nast
            ix_screen      = ent_screen
       importing
            ex_retco       = ent_retco
            ex_nast        = l_nast
            doc            = l_doc
       changing
            cx_druvo       = l_druvo
            cx_from_memory = l_from_memory.
  check ent_retco eq 0.
  call function 'ZME_PRINT_PO'
       exporting
            ix_nast        = l_nast
            ix_druvo       = l_druvo
            doc            = l_doc
            ix_screen      = ent_screen
            ix_from_memory = l_from_memory
            ix_toa_dara    = toa_dara
            ix_arc_params  = arc_params
            ix_fonam       = tnapr-fonam          "HW 214570
       importing
            ex_retco       = ent_retco.

- Change the fm ZME_PRINT_PO in order to manage the pdf format

- U should create a new message (ZPDF) in order to create the pdf file instead of spool;

Max

Former Member
0 Kudos

Hi max,

Thanks again for your reply. I am using ECC 6.0 version and my standard print program SAPFM06P .

I will apply the changes said by you. I will ask the doubts if any.

Thanks,

Aravind.

Edited by: aravind kosaraju on Oct 16, 2008 5:49 PM

Former Member
0 Kudos

hi max,

I followed the procedure told by you and i am not getting the PDF file down load .

The error is after executing the 'CONVERT_OTF_2_PDF' fm. the error message is otf data empty. T-OTF is empty.( I didn't used p_pdf = 'x' because i didn't get what is p_pdf variable.)

So can you tell me where the error is ?

Thanks,

Aravind.

Edited by: aravind kosaraju on Oct 21, 2008 12:42 AM

Former Member
0 Kudos

hi Max,

Thanks for your help and the problem solved.

Thanks,

Aravind.

Former Member
0 Kudos

hi max ,

could you please tell me the changes that i have make in fm ZME_PRINT_PO to get print preview in PDF.

Thanks in advance.

regards,

Deepak.

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi

I don't know which is your release, but I don't think it's possible to create a preview in pdf format, but u can create a pdf file instead of the spool and then open it automatically, this is an example:

- A) Open form

IF P_PDF = 'X'.
          XDEVICE        = 'PRINTER'.
* Get OTF
          ITCPO-TDGETOTF = 'X'.
      ENDIF.

      CALL FUNCTION 'OPEN_FORM'
           EXPORTING
                DEVICE                      = XDEVICE
                DIALOG                      = 'X'
                FORM                        = 'ZFI_CL_EC_MOVI'
                OPTIONS                     = ITCPO
                MAIL_SENDER                 = LVS_SENDER
                MAIL_RECIPIENT              = LVS_RECIPIENT
           EXCEPTIONS
                CANCELED                    = 1
                DEVICE                      = 2
                FORM                        = 3
                OPTIONS                     = 4
                UNCLOSED                    = 5
                MAIL_OPTIONS                = 6
                ARCHIVE_ERROR               = 7
                INVALID_FAX_NUMBER          = 8
                MORE_PARAMS_NEEDED_IN_BATCH = 9
                SPOOL_ERROR                 = 10
                OTHERS                      = 11.
      IF SY-SUBRC <> 0.
        EXIT.
      ENDIF.

B) Close FORM

CALL FUNCTION 'CLOSE_FORM'
         TABLES
              OTFDATA                  = T_OTF
         EXCEPTIONS
              UNOPENED                 = 1
              BAD_PAGEFORMAT_FOR_PRINT = 2
              SEND_ERROR               = 3
              SPOOL_ERROR              = 4
              OTHERS                   = 5.
     
    IF SY-SUBRC <> 0.
      MESSAGE I208(00) WITH 'Errore chiusura stampa'(A02).
    ELSE.
      PERFORM DOWNLOAD_PDF.
    ENDIF.

C) Create PDF and open it:

FORM DOWNLOAD_PDF.

  DATA: BIN_FILESIZE TYPE I.

  DATA: T_FILE_PDF     TYPE STANDARD TABLE OF TLINE,
        DOCTAB_ARCHIVE TYPE STANDARD TABLE OF  DOCS.

  DATA: FILE_TABLE     TYPE FILETABLE WITH HEADER LINE.

  DATA: RC          TYPE I,
        USER_ACTION TYPE I.

  DATA: TITLE    TYPE STRING,
        FILENAME TYPE STRING.

  CHECK P_PDF = 'X'.

  CALL FUNCTION 'CONVERT_OTF_2_PDF'
       IMPORTING
            BIN_FILESIZE           = BIN_FILESIZE
       TABLES
            OTF                    = T_OTF
            DOCTAB_ARCHIVE         = DOCTAB_ARCHIVE
            LINES                  = T_FILE_PDF
       EXCEPTIONS
            ERR_CONV_NOT_POSSIBLE  = 1
            ERR_OTF_MC_NOENDMARKER = 2
            OTHERS                 = 3.
  IF SY-SUBRC <> 0.
    MESSAGE I208(00) WITH 'Errore conversione PDF'(A03).
    EXIT.
  ENDIF.

  TITLE = 'Creare File'(T02).

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
     EXPORTING
       WINDOW_TITLE            = TITLE
       DEFAULT_EXTENSION       = '*.pdf'
    CHANGING
      FILE_TABLE              = FILE_TABLE[]
      RC                      = RC
      USER_ACTION             = USER_ACTION
    EXCEPTIONS
      FILE_OPEN_DIALOG_FAILED = 1
      CNTL_ERROR              = 2
      ERROR_NO_GUI            = 3
      OTHERS                  = 4
          .
  IF SY-SUBRC <> 0.
    MESSAGE I208(00) WITH 'Errore creazione PDF'(A04).
    EXIT.
  ELSE.
    IF USER_ACTION = 9. EXIT. ENDIF.
    IF RC = 1.
      READ TABLE FILE_TABLE INDEX 1.
    ENDIF.
  ENDIF.

  MOVE FILE_TABLE-FILENAME TO FILENAME.

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
    EXPORTING
       BIN_FILESIZE            = BIN_FILESIZE
       FILENAME                = FILENAME
       FILETYPE                = 'BIN'
    CHANGING
      DATA_TAB                = T_FILE_PDF
    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 I208(00) WITH 'Errore creazione PDF'(A04).
    EXIT.
  ELSE.
    MESSAGE S208(00) WITH 'File creato con successo'(S01).
  ENDIF.

  CHECK P_OPEN = 'X'.

  CALL FUNCTION 'CALL_BROWSER'
       EXPORTING
            URL                    = FILE_TABLE-FILENAME
       EXCEPTIONS
            FRONTEND_NOT_SUPPORTED = 1
            FRONTEND_ERROR         = 2
            PROG_NOT_FOUND         = 3
            NO_BATCH               = 4
            UNSPECIFIED_ERROR      = 5
            OTHERS                 = 6.

  IF SY-SUBRC <> 0.
    MESSAGE S208(00) WITH 'Impossibile aprire file'(A05).
  ENDIF.

ENDFORM.                    " DOWNLOAD_PDF

Max

Former Member
0 Kudos

Hi max ,

Thanks for your quick reply.

But i am using the standard print program , these code i have to add there?

please explain .

Thanks,

Aravind.

Former Member
0 Kudos

Hi

If you use a std print program u need to create a Z-PROGRAM as copy of std one and insert the code to manage the pdf file.

If you can create or use a Z<print program> u can only convert the spool (created by std program) to pdf file: u can use the std program RSTXPDFT4 to convert the spool.

Max