Function CONVERT_OTF_2_PDF

Hi. Can someone show me some code that uses this FM. im trying to use it but im having a litlle trouble in the DOCTAB_ARCHIVE parameter.
Thk,
´Regards

Check this thread -
Re: layout problem in PDF conversion
Regards,
Amit

Similar Messages

  • Pb unicode with function CONVERT_OTF_2_PDF

    Hello,
    I have a problem.
    I have to convert a smartform on PDF. I'm using the function CONVERT_OTF_2_PDF like this :
      CALL FUNCTION 'CONVERT_OTF_2_PDF'
        IMPORTING
          bin_filesize           = p_filesize
        TABLES
          otf                    = lt_itcoo
          doctab_archive         = lt_doctab
          lines                  = lt_tline
        EXCEPTIONS
          err_conv_not_possible  = 1
          err_otf_mc_noendmarker = 2
          OTHERS                 = 3.
    But in return i have a problem in the table lt_tline. the result is not unicode.
    can you help me?

    Yes it will be in unicode. After that use the GUI_DOWNLOAD FM with filetype as 'BIN'.
    *&      Form  f9100_save_to_pdf
          text
         -->P_WS_FORMNAME  text
    FORM f9100_save_to_pdf using value(ws_formname).
      data: i_lines    TYPE tline OCCURS 0 WITH HEADER LINE.
      data: ws_bin_size type i,
            ws_filename type string.
      CALL FUNCTION 'CONVERT_OTF'
        EXPORTING
          format                = 'PDF'
          max_linewidth         = 132
        IMPORTING
          bin_filesize          = ws_bin_size
        TABLES
          otf                   = i_otf
          lines                 = i_lines
        EXCEPTIONS
          err_max_linewidth     = 1
          err_format            = 2
          err_conv_not_possible = 3
          err_bad_otf           = 4
          OTHERS                = 5.
      IF sy-subrc <> 0.
        flg_exit = 'X'.
        MESSAGE i050 WITH 'Error converting to PDF format'.
        EXIT.
      ENDIF.
    Get the download path
      PERFORM get_download_path CHANGING ws_filename.
      if flg_exit = 'X'.
        EXIT.
      endif.
    Download
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          bin_filesize            = ws_bin_size
          filename                = ws_filename
          filetype                = 'BIN'
        TABLES
          data_tab                = i_lines
        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 i050 WITH 'Error while File download'.
        flg_exit = 'X'.
        EXIT.
      ELSE.
        MESSAGE i050 WITH 'File downloaded successfully '.
        flg_exit = 'X'.
        EXIT.
      ENDIF.
    Regards,
    Prakash.

  • Input values for CONVERT_OTF_2_PDF function module

    Hi All ,
    I am using this function module 'CONVERT_OTF_2_PDF ' in my report(which will convert smartform to PDF) .
    Can anyone please let me knw what are the input value should I pass to test
    this function .('CONVERT_OTF_2_PDF)
    OTF          
    DOCTAB_ARCHIVE
    LINES        
    Thanks in advance

    Hi,
         TYPES: l_ty_tab_objbin TYPE solisti1 OCCURS 0.
    data: l_otf TYPE STANDARD TABLE OF itcoo.
    DATA: l_objbin TYPE l_ty_tab_objbin.
    DATA: l_docs TYPE STANDARD TABLE OF docs.
    data: i_line TYPE STANDARD TABLE OF tline.
    CALL FUNCTION 'CONVERT_OTF_2_PDF'
    EXPORTING
    USE_OTF_MC_CMD = 'X'
    ARCHIVE_INDEX =
    IMPORTING
    BIN_FILESIZE =
    TABLES
    otf = l_otf
    doctab_archive = l_docs
    lines = i_line
    EXCEPTIONS
    ERR_CONV_NOT_POSSIBLE = 1
    ERR_OTF_MC_NOENDMARKER = 2
    OTHERS = 3
    Regards

  • 'Control parameters'  when call the smartform function module

    Hi all,
    I want to know what we have to export as value to control papameter while calling the fm of smartform.
    Plz also let me know the various parameters in CONVERT_OTF.
    Thanks in advance.

    WA_CONTROL_PARAMETERS-GETOTF    = 'X'.
    the above is needed if you want OTF data, to convert it to PDF
        WA_CONTROL_PARAMETERS-LANGU = 'E'.
    Language of smartform
        WA_CONTROL_PARAMETERS-DEVICE = 'PRINTER'.
    *default o/p device
        WA_CONTROL_PARAMETERS-NO_DIALOG = 'X'.
    if you dont want the pop up screen , that asks you for printing make the value as 'X' .
    other wise make it as space or clear it.
        WA_CONTROL_PARAMETERS-PREVIEW = SPACE.
    if u want the print preview , make it as 'X' , otherwise SPACE
    Below code shows how you can convert the OTF data to PDF data.
    calling the smartform.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          FORMNAME           = 'Z_SMARTFORM'
        IMPORTING
          FM_NAME            = WF_FUNCMODULENAME
        EXCEPTIONS
          NO_FORM            = 1
          NO_FUNCTION_MODULE = 2
          OTHERS             = 3.
    CALL FUNCTION WF_FUNCMODULENAME
          EXPORTING
            CONTROL_PARAMETERS   = WA_CONTROL_PARAMETERS "Control Params
            OUTPUT_OPTIONS       = WA_OUTPUT_OPT  "Output Options
            WF_CARRID            = WF_CARRID
            WF_CONNID            = WF_CONNID
            WF_FLDATE            = WF_FLDATE
          IMPORTING
            DOCUMENT_OUTPUT_INFO = WA_DOCUMENT_OUTPUT_INFO
            JOB_OUTPUT_INFO      = WA_JOB_OUTPUT_INFO
            JOB_OUTPUT_OPTIONS   = WA_JOB_OUTPUT_OPTIONS
          EXCEPTIONS
            FORMATTING_ERROR     = 1
            INTERNAL_ERROR       = 2
            SEND_ERROR           = 3
            USER_CANCELED        = 4
            OTHERS               = 5.
          CALL FUNCTION 'CONVERT_OTF_2_PDF'
            EXPORTING
              ARCHIVE_INDEX          = WA_ARC_IDX
            IMPORTING
              BIN_FILESIZE           = WF_NUMBYTES
            TABLES
              OTF                    = WA_JOB_OUTPUT_INFO-OTFDATA[]
              DOCTAB_ARCHIVE         = TB_DOCTAB_ARCHIVE[]
              LINES                  = TB_LINES[]
            EXCEPTIONS
              ERR_CONV_NOT_POSSIBLE  = 1
              ERR_OTF_MC_NOENDMARKER = 2
              OTHERS                 = 3.

  • Smartforms: How 2 fire print & download 2 PDF simultaniously 4  my forms

    Dear Murugesh, Cristian
      The following is my piece of code which directly downloads my forms into PDF but not creating any spool 4 firing print ,
    1) I need the both to happen simultaniously .
    2) I need to include the o/p(either SAPScript/report o/p) as the Smartform pages with o/p of my Driver prog ,by calling another TCODE from my driver prog .
    Please throw some light on this .
    have a look into my code
    *Printing of Export Invoice, Packing List,Enclosure to Packing List &  *
    *Case Marking in one SMART FORMS Layout                                *
    REPORT ZSD_REP_MULTI_PRINT.
    TABLES :
        vbak,
        vbap,
        vbpa,
        vbfa,
        VBRK,
        VBRP,
        LIKP,
        LIPS,
        KONV,
        objk,
        tvko,
        ser01,
        sadr,
        equi,
        makt,
        mast,
        t005t,
        kna1,
        t001w,
        T001,
        ADRC,
        sscrfields,
        zpp_plcmi,      "Packing list history For Conf: Item data
        zplh,           "PACKING LIST HISTORY : HEADER DATA
        zpli.           "PACKING LIST HISTORY : ITEM DATA
    DATA: FM_NAME1  TYPE RS38L_FNAM,
          FM_NAME2  TYPE RS38L_FNAM,
          FM_NAME3  TYPE RS38L_FNAM,
          FM_NAME4  TYPE RS38L_FNAM,
          P_E_DEVTYPE TYPE RSPOPTYPE,
          P_JOB_OUTPUT_INFO TYPE SSFCRESCL OCCURS 2000 WITH HEADER LINE,
          T_OTF LIKE ITCOO OCCURS 0 WITH HEADER LINE,
          P_OUTPUT_OPTIONS TYPE SSFCOMPOP OCCURS 0 WITH HEADER LINE,
          P_CONTROL_PARAMETERS TYPE SSFCTRLOP OCCURS 0 WITH HEADER LINE ,
          P_DOC  LIKE DOCS OCCURS 2000 WITH HEADER LINE,
          P_LINES LIKE TLINE OCCURS 200,
          P_BIN_FILESIZE TYPE I,
          P_LANGUAGE TYPE SFLANGU,
          P_BIN_FILE TYPE XSTRING,
          OK_CODE LIKE SY-UCOMM.
    DATA: T_ITEM   TYPE  ZSD_TABL_LITEM,
          WA_ITEM  TYPE  ZSD_STRUCT_LITEM,
          T_ADRS   LIKE  ZSD_STRUCT_ADRS  OCCURS 0 WITH HEADER LINE,
          MSLINES  LIKE  TLINE OCCURS 1 WITH HEADER LINE,
          TIDNO    LIKE STXL-TDID,
          TNAME    LIKE STXL-TDNAME,
          TOBJT    LIKE STXL-TDOBJECT,
          SSORD    LIKE VBAK-VBELN,
          TOT      LIKE VBAK-NETWR,
          WORD     LIKE SPELL.
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    PARAMETERS: P_DELNO LIKE  LIKP-VBELN OBLIGATORY,
                P_INVNO LIKE  VBRK-VBELN OBLIGATORY,
                P_DATE  LIKE  SY-DATUM.
    SELECTION-SCREEN END   OF BLOCK blk1.
    AT SELECTION-SCREEN.
      CLEAR T_ADRS.
      REFRESH T_ITEM.
      T_ADRS-INVNO = P_INVNO.
      T_ADRS-INVDAT = P_DATE.
      SELECT SINGLE VBELV INTO  VBFA-VBELV
                             FROM  VBFA
                             WHERE VBELN = P_DELNO
                               AND VBTYP_N = 'J'  .
      SSORD = VBFA-VBELV.
    *Exporter's  Address
      SELECT SINGLE BUKRS_VF INTO  VBAK-BUKRS_VF
                             FROM  VBAK
                             WHERE VBELN = VBFA-VBELV.
      SELECT SINGLE   ADRNR
                      INTO T001-ADRNR
                      FROM T001
                      WHERE BUKRS = VBAK-BUKRS_VF.
      SELECT SINGLE NAME1 STREET CITY1 POST_CODE1 COUNTRY
             INTO (T_ADRS-NAME1,T_ADRS-STREET,T_ADRS-CITY1,
                   T_ADRS-POST_CODE1, ADRC-COUNTRY)
             FROM  ADRC
             WHERE ADDRNUMBER EQ T001-ADRNR.
      SELECT SINGLE LANDX
                    INTO T_ADRS-COUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
    *Consignee Address & Buyer Other Than Consignee
      SELECT SINGLE KUNNR KUNAG INTO (LIKP-KUNNR, LIKP-KUNAG)
                                FROM LIKP WHERE VBELN = P_DELNO.
      IF LIKP-KUNNR = LIKP-KUNAG.
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                  INTO (T_ADRS-CNAME1, T_ADRS-CNAME2, T_ADRS-CSTREET,
                        T_ADRS-CCITY,  T_ADRS-CPCODE, T_ADRS-CREGIO,
                        T_ADRS-CTELF1, KNA1-ADRNR)
                  FROM  KNA1
                  WHERE KUNNR = LIKP-KUNNR.
        SELECT SINGLE COUNTRY INTO  ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-CCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
        T_ADRS-ONAME1   =  T_ADRS-CNAME1 .
        T_ADRS-ONAME2   =  T_ADRS-CNAME2 .
        T_ADRS-OSTREET  =  T_ADRS-CSTREET .
        T_ADRS-OCITY    =  T_ADRS-CCITY.
        T_ADRS-OPCODE   =  T_ADRS-CPCODE .
        T_ADRS-OREGIO   =  T_ADRS-CREGIO.
        T_ADRS-OTELF1   =  T_ADRS-CTELF1 .
        T_ADRS-OCOUNTRY =  T_ADRS-CCOUNTRY.
      ELSE.
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                  INTO (T_ADRS-CNAME1, T_ADRS-CNAME2, T_ADRS-CSTREET,
                        T_ADRS-CCITY,  T_ADRS-CPCODE, T_ADRS-CREGIO,
                        T_ADRS-CTELF1, KNA1-ADRNR)
                  FROM  KNA1
                  WHERE KUNNR = LIKP-KUNNR.
        SELECT SINGLE COUNTRY INTO ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-CCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
    *Buyer Other than Consignee
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                   INTO (T_ADRS-ONAME1, T_ADRS-ONAME2, T_ADRS-OSTREET,
                         T_ADRS-OCITY,  T_ADRS-OPCODE, T_ADRS-OREGIO,
                         T_ADRS-OTELF1, KNA1-ADRNR)
                   FROM  KNA1
                   WHERE KUNNR = LIKP-KUNAG.
        SELECT SINGLE COUNTRY INTO  ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-OCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
      ENDIF.
    *Other's Ref
      TIDNO = 'Z071'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-OREF = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Buyer's Order No  Ref
      TIDNO = 'Z023'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-BUYER = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Exporter Ref
      TIDNO = 'Z072'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-XPREF = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Pre-Carraige By
      TIDNO = 'Z074'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PCRG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Place Of reciept by Pre-Carraige
      TIDNO = 'Z073'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PLPCRG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Vessel/Flight No
      TIDNO = 'Z075'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-VFNO = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Port Of Loading
      TIDNO = 'Z077'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PLOAD = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Port Of Discharge
      TIDNO = 'Z076'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PDISG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Final Destination
      TIDNO = 'Z070'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-FDEST = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Terms Of Delivery & Payment
      TIDNO = 'Z080'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-TERMS = mslines-tdline(50).
        EXIT.
      ENDLOOP.
    APPEND T_ADRS.
    *BODY SECTION FOR LINE ITEMS
      SELECT POSNR KWMENG VRKME WAERK
             INTO  (VBAP-POSNR, VBAP-KWMENG, VBAP-VRKME, VBAP-WAERK)
             FROM  VBAP
             WHERE VBELN = SSORD.
    *Mark/Case No
        TIDNO = '0002'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-MARKNO = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Packing Type
        TIDNO = '0003'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-PACKTYP = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Goods Description
        TIDNO = '0001'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-GDESC = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Goods Quantity
        WA_ITEM-QTY = VBAP-KWMENG.
        WA_ITEM-VRKME = VBAP-VRKME.
    *Goods Rate
        SELECT SINGLE KNUMV INTO VBAK-KNUMV FROM VBAK WHERE VBELN = SSORD.
        SELECT SINGLE KBETR WAERS
                      INTO  (WA_ITEM-RATE, WA_ITEM-WAERS)
                      FROM  KONV
                      WHERE KNUMV = VBAK-KNUMV
                        AND KPOSN = VBAP-POSNR
                        AND KSCHL = 'PR00'.
    *Item Remarks
        TIDNO = 'ZREM'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-REMARK = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Goods Amount
        WA_ITEM-AMOUNT = WA_ITEM-QTY * WA_ITEM-RATE.
        WA_ITEM-WAERK = VBAP-WAERK.
        TOT = TOT + WA_ITEM-AMOUNT.
        APPEND WA_ITEM TO T_ITEM.
      ENDSELECT.
      T_ADRS-TOT = TOT.
      CALL FUNCTION 'SPELL_AMOUNT'
       EXPORTING
         AMOUNT          = TOT
         CURRENCY        = VBAP-WAERK
      FILLER          = ' '
         LANGUAGE        = SY-LANGU
       IMPORTING
         IN_WORDS        = WORD
       EXCEPTIONS
         NOT_FOUND       = 1
         TOO_LARGE       = 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.
    *Gross Wieght
      TIDNO = 'Z078'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-GWT = mslines-tdline(15).
        EXIT.
      ENDLOOP.
    *Net Wieght
      TIDNO = 'Z079'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-NWT = mslines-tdline(15).
        EXIT.
      ENDLOOP.
      T_ADRS-TOT_WORDS = WORD-WORD.
      APPEND T_ADRS.
    START-OF-SELECTION.
      P_LANGUAGE = 'EN'.
      CALL   FUNCTION 'SSF_GET_DEVICE_TYPE'
        EXPORTING
          I_LANGUAGE    = P_LANGUAGE
          I_APPLICATION = 'SAPDEFAULT'
        IMPORTING
          E_DEVTYPE     = P_E_DEVTYPE.
      P_OUTPUT_OPTIONS-XSFCMODE = 'X'.
      P_OUTPUT_OPTIONS-XSF = SPACE.
      P_OUTPUT_OPTIONS-XDFCMODE = 'X'.
      P_OUTPUT_OPTIONS-XDF = SPACE.
      P_OUTPUT_OPTIONS-TDPRINTER = P_E_DEVTYPE.
      P_OUTPUT_OPTIONS-TDDEST = 'LOHP'.
      APPEND P_OUTPUT_OPTIONS.
      P_CONTROL_PARAMETERS-NO_DIALOG = 'X'.
      P_CONTROL_PARAMETERS-GETOTF = 'X'.
      P_CONTROL_PARAMETERS-NO_CLOSE = SPACE.
      APPEND  P_CONTROL_PARAMETERS.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          FORMNAME                 = 'ZSD_REP_MULTI_PRINT1'
      VARIANT                  = ' '
      DIRECT_CALL              = ' '
       IMPORTING
          FM_NAME                  = FM_NAME1
       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.
      CALL FUNCTION FM_NAME1
       EXPORTING
      ARCHIVE_INDEX              =
      ARCHIVE_INDEX_TAB          =
      ARCHIVE_PARAMETERS         =
        CONTROL_PARAMETERS         = P_CONTROL_PARAMETERS
      MAIL_APPL_OBJ              =
      MAIL_RECIPIENT             =
      MAIL_SENDER                =
        OUTPUT_OPTIONS             = P_OUTPUT_OPTIONS
        USER_SETTINGS              = 'X'
      IMPORTING
      DOCUMENT_OUTPUT_INFO       =
        JOB_OUTPUT_INFO            = P_JOB_OUTPUT_INFO
      JOB_OUTPUT_OPTIONS         =
      TABLES
        T_ADRS                     = T_ADRS
        T_ITEM                     = T_ITEM
    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.
      LOOP AT P_JOB_OUTPUT_INFO-OTFDATA INTO T_OTF.
        APPEND T_OTF.
      ENDLOOP.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          FORMNAME                 = 'ZSD_REP_MULTI_PRINT2'
      VARIANT                  = ' '
      DIRECT_CALL              = ' '
       IMPORTING
          FM_NAME                  = FM_NAME2
       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.
      CALL FUNCTION FM_NAME2
       EXPORTING
      ARCHIVE_INDEX              =
      ARCHIVE_INDEX_TAB          =
      ARCHIVE_PARAMETERS         =
        CONTROL_PARAMETERS         = P_CONTROL_PARAMETERS
      MAIL_APPL_OBJ              =
      MAIL_RECIPIENT             =
      MAIL_SENDER                =
        OUTPUT_OPTIONS             = P_OUTPUT_OPTIONS
        USER_SETTINGS              = 'X'
      IMPORTING
      DOCUMENT_OUTPUT_INFO       =
        JOB_OUTPUT_INFO            = P_JOB_OUTPUT_INFO
      JOB_OUTPUT_OPTIONS         =
      TABLES
        T_ADRS                     = T_ADRS
        T_ITEM                     = T_ITEM
    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.
      LOOP AT P_JOB_OUTPUT_INFO-OTFDATA INTO T_OTF.
        APPEND T_OTF.
      ENDLOOP.
    <b>SET PARAMETER  ID: 'AUN' FIELD SSORD ,"VBAK-VBELN VALUE ,
                       'APO' FIELD ITNO."VBAP-POSNR.
    CALL TRANSACTION 'ZPL3' AND SKIP FIRST SCREEN.
    IF SY-SUBRC NE 0.
       MESSAGE E001(ZQOTBANK).
    ENDIF.
    *SET PARAMETER  ID: 'AUN' FIELD VBAK-VBELN,
                     'APO' FIELD VBAP-POSNR.
    *CALL TRANSACTION 'ZA3C' AND SKIP FIRST SCREEN.
    *IF SY-SUBRC NE 0.
    MESSAGE E001(ZQOTBANK).
    *ENDIF.
    IMPORT (T_OTF2) FROM  MEMORY ID 'MEMID'.
    LOOP AT T_OTF2 INTO T_OTF2.
        APPEND T_OTF2 TO T_OTF.
    ENDLOOP.
    </b>
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          FORMNAME                 = 'ZSD_REP_MULTI_PRINT4'
      VARIANT                  = ' '
      DIRECT_CALL              = ' '
       IMPORTING
          FM_NAME                  = FM_NAME4
       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.
      CALL FUNCTION FM_NAME4
       EXPORTING
      ARCHIVE_INDEX              =
      ARCHIVE_INDEX_TAB          =
      ARCHIVE_PARAMETERS         =
        CONTROL_PARAMETERS         = P_CONTROL_PARAMETERS
      MAIL_APPL_OBJ              =
      MAIL_RECIPIENT             =
      MAIL_SENDER                =
        OUTPUT_OPTIONS             = P_OUTPUT_OPTIONS
       USER_SETTINGS              = 'X'
      IMPORTING
      DOCUMENT_OUTPUT_INFO       =
        JOB_OUTPUT_INFO            = P_JOB_OUTPUT_INFO
      JOB_OUTPUT_OPTIONS         =
      TABLES
        T_ADRS                     = T_ADRS
        T_ITEM                     = T_ITEM
    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.
      LOOP AT P_JOB_OUTPUT_INFO-OTFDATA INTO T_OTF.
        APPEND T_OTF.
      ENDLOOP.
    CALL FUNCTION 'CONVERT_OTF_2_PDF'
      EXPORTING
        USE_OTF_MC_CMD               = 'X'
      ARCHIVE_INDEX                =
    IMPORTING
        BIN_FILESIZE                 = P_BIN_FILESIZE
    TABLES
        OTF                          = T_OTF
        DOCTAB_ARCHIVE               = P_DOC
        LINES                        = P_LINES
    EXCEPTIONS
       ERR_CONV_NOT_POSSIBLE        = 1
       ERR_OTF_MC_NOENDMARKER       = 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.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        BIN_FILESIZE                    = P_BIN_FILESIZE
        FILENAME                        = 'C:\SD4.pdf'
        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                      = P_BIN_FILESIZE
      TABLES
        DATA_TAB                        = P_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.
    *&      Form  FINDTEXT
          text
    FORM FINDTEXT.
      REFRESH mslines.
      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          client                  = sy-mandt
          id                      = tidno
          language                = sy-langu
          name                    = tname
          object                  = tobjt
        TABLES
          lines                   = mslines
        EXCEPTIONS
          id                      = 1
          language                = 2
          name                    = 3
          not_found               = 4
          object                  = 5
          reference_check         = 6
          wrong_access_to_archive = 7
          OTHERS                  = 8.
      DELETE mslines WHERE tdline IS INITIAL.
    ENDFORM.                    "FINDTEXT 
    Thnx
    moni
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman

    Hello,
    I had thought that your 4th output of the Transaction is an output of a list and NOT from a SCRIPT.
    Now, if it is a SAP SCRIPT ourput, it is quite simple as you have to get the OTFDATA from the SCRIPT. But you may have to make the correction in your SAPSCRIPT driver program.
    Sample:
    CALL FUNCTION 'CLOSE_FORM'
         TABLES
              otfdata                  = te_otf_table
         EXCEPTIONS
              unopened                 = 1
              bad_pageformat_for_print = 2
              OTHERS                   = 3.
    Next you may EXPORT this OTF Data Internal Table to ABAP Memory.
    In your program where you are calling all the 3 forms + the transaction which outputs the SAPScript output, the exported data may be imported and appended into the MAIN Interal Table and single PDF could be generated.
    Secondly, The PRINT prieview of the SSFs could be generated by passing Export options of the SSF FM
    SAmple:
    ssfctrlop-no_dialog = ' '.
    CALL FUNCTION l_form
        EXPORTING
             control_parameters = ssfctrlop
             output_options     = ssfcompop
    I hope this helps you.
    Regards, Murugesh AS

  • Error while sendinf pdf file as attachment

    hi all.,
    am trying to send the pdf file of a smartform as attachment thru mail .. but its getting failed am getting error (sy-subrc = 6 ) after calling the fm so_new_document_att_send_api1 .. pls. suggest the possible cause of errors.
    CALL FUNCTION 'CONVERT_OTF_2_PDF'
            IMPORTING
              bin_filesize           = lv_bin_filesize
            TABLES
              otf                    = ls_job_output_info-otfdata
              doctab_archive         = it_docs
              lines                  = it_lines
            EXCEPTIONS
              err_conv_not_possible  = 1
              err_otf_mc_noendmarker = 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.
    *--- Get filename to store DYNAMIC
          IF p_lsdir IS NOT INITIAL.
            MOVE p_lsdir  TO lv_path.
          ENDIF.
          CONDENSE wa_kna1-kunnr.
          CONCATENATE 'SOA' wa_kna1-kunnr  '.pdf' INTO lv_name.
          CONCATENATE  lv_path lv_name INTO  lv_fullpath.
          break ibm_prasad.
          CLEAR wa_buffer.
          LOOP AT it_lines.
            TRANSLATE it_lines USING '~'.
            CONCATENATE wa_buffer it_lines 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.
          REFRESH: i_reclist,
                   i_objtxt,
                   i_objbin,
                   i_objpack.
          CLEAR wa_objhead.
          i_objbin[] = i_record[].
          i_objtxt = 'SOA test with pdf-Attachment!'.
          APPEND i_objtxt.
          DESCRIBE TABLE i_objtxt LINES v_lines_txt.
          READ TABLE i_objtxt INDEX v_lines_txt.
          wa_doc_chng-obj_name = 'SOA'.
          wa_doc_chng-expiry_dat = sy-datum + 10.
          wa_doc_chng-obj_descr = 'SOA'.
          wa_doc_chng-sensitivty = 'F'.
          wa_doc_chng-doc_size = v_lines_txt * 255.
    *     Maint Text
          CLEAR i_objpack-transf_bin.
          i_objpack-head_start = 1.
          i_objpack-head_num = 0.
          i_objpack-body_start = 1.
          i_objpack-body_num = v_lines_txt.
          i_objpack-doc_type = 'RAW'.
          APPEND i_objpack.
    * Attachment (pdf-Attachment)
          i_objpack-transf_bin = 'X'.
          i_objpack-head_start = 1.
          i_objpack-head_num = 0.
          i_objpack-body_start = 1.
          DESCRIBE TABLE i_objbin LINES v_lines_bin.
          READ TABLE i_objbin INDEX v_lines_bin.
          i_objpack-doc_size = v_lines_bin * 255 .
          i_objpack-body_num = v_lines_bin.
          i_objpack-doc_type = 'PDF'.
          i_objpack-obj_name = 'SOA Eail'.
          i_objpack-obj_descr = 'test'.
          APPEND i_objpack.
          CLEAR i_reclist.
          i_reclist-receiver =  <mail id>
          i_reclist-rec_type = 'U'.
          APPEND i_reclist.
          CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
            EXPORTING
              document_data              = wa_doc_chng
              put_in_outbox              = 'X'
              commit_work                = 'X'
            TABLES
              packing_list               = i_objpack
              object_header              = wa_objhead
              contents_bin               = i_objbin
              contents_txt               = i_objtxt
              receivers                  = i_reclist
            EXCEPTIONS
              too_many_receivers         = 1
              document_not_sent          = 2
              document_type_not_exist    = 3
              operation_no_authorization = 4
              parameter_error            = 5
              x_error                    = 6
              enqueue_error              = 7
              OTHERS                     = 8.
    thanks
    suresh

    u need to use this SO_NEW_DOCUMENT_ATT_SEND_API1
    check this code tutorial on how to add pdf file as an attachment
    u need to modify the code to read the pdf from directory then rest of code is same
    https://www.sdn.sap.com/irj/scn/wiki?path=/display/snippets/mailsendthroughoutputcontrols
    кu03B1ятu03B9к
    Edited by: kartik tarla on Mar 9, 2009 7:31 PM

  • When sending email PO in a PDF attachment, the attachment can not be openen

    Hi all,
    We are trying to send an email with the PO in PDF format.  We got the email but the attachment can not be opened. 
    Error reads: Adobe could not open test.pdf because  it is either  not a supported file type  or because  the file has been damaged (for example , it was send as a email attachemnet and was not  correctly decoded).
    Could any body bring some light?   We know that everything in SCOT is fine because we can email the PO through configuration to the vendor without problem. It is just these extra copies that do not work.
    a) We are modifying our custom Print program to add the code below after closing the form.
    in few words:
    a) We are getting the OTF from closing the form.
    b) Converting the OTF to PDF
    c) Sending the PDF as attachment.
    data: lt_docs      TYPE TABLE OF docs.
    data: pdf_bytecount TYPE i.
    data: begin of pdfout occurs 0,
       tline type tline,
    end of pdfout.
    Ende Formulardruck --------------------------------------------------*
      CALL FUNCTION 'CLOSE_FORM'
           IMPORTING
                result = result
           tables
                otfdata = otf.
      IF RESULT-TDSPOOLID NE SPACE.
        SPOOLID = RESULT-TDSPOOLID.
        PERFORM PROTOCOL_UPDATE USING '320' SPOOLID SPACE SPACE SPACE.
      ENDIF.
      if result-userexit eq 'C' or
          result-userexit eq 'E'.
        retco = '9'.
      endif.
      CALL FUNCTION 'CONVERT_OTF_2_PDF'
        IMPORTING
          bin_filesize           = pdf_bytecount
        TABLES
          otf                    = otf
          doctab_archive         = lt_docs
          lines                  = pdfout
        EXCEPTIONS
          err_conv_not_possible  = 1
          err_otf_mc_noendmarker = 2
          OTHERS                 = 3.
    Creation of the document to be sent File Name
       maildata-obj_name = 'TEST'.
    Mail Subject
       maildata-obj_descr = 'Subject'.
    Mail Contents
       append mailtxt.
      describe table mailtxt lines tab_lines.
      read table mailtxt index tab_lines.
      maildata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( mailtxt ).
    Creation of the entry for the compressed document
      clear mailpack-transf_bin.
      mailpack-head_start = 1.
      mailpack-head_num = 0.
      mailpack-body_start = 1.
      mailpack-body_num = tab_lines.
      mailpack-doc_type = 'RAW'.
      append mailpack.
    Move OTF code to structure SOLI form email
    CLEAR solisti1. REFRESH solisti1.
    LOOP AT otf.
      solisti1-line = otf.
      APPEND solisti1.
    ENDLOOP.
    Move pdf code to structure soli form email
      clear solisti1. refresh solisti1.
      loop at pdfout.
        solisti1-line = pdfout.
        append solisti1.
      endloop.
      loop at solisti1.
         move-corresponding solisti1 to mailbin.
         append mailbin.
      endloop.
      describe table mailbin lines tab_lines.
    mailhead = 'TEST.OTF'.
      mailhead = 'TEST.PDF'.
      append mailhead.
    Creation of the entry for the compressed attachment
      mailpack-transf_bin = 'X'.
      mailpack-head_start = 1.
      mailpack-head_num = 1.
      mailpack-body_start = 1.
      mailpack-body_num = tab_lines.
    mailpack-doc_type = 'OTF'.
      mailpack-doc_type = 'PDF'.
      mailpack-obj_name = 'TEST'.
      mailpack-obj_descr = 'Subject'.
      mailpack-doc_size = tab_lines * 255.
      append mailpack.
      mailrec-receiver = '[email protected]'.
      mailrec-rec_type = 'U'.
      append mailrec.
      mailrec-receiver = '[email protected]'.
      mailrec-rec_type = 'U'.
      append mailrec.
      CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
              EXPORTING
                   DOCUMENT_DATA              = maildata
              TABLES
                   PACKING_LIST               = mailpack
                   OBJECT_HEADER              = mailhead
                   CONTENTS_TXT               = mailtxt
                   RECEIVERS                  = mailrec
              EXCEPTIONS
                   TOO_MANY_RECEIVERS         = 1
                   DOCUMENT_NOT_SENT          = 2
                   DOCUMENT_TYPE_NOT_EXIST    = 3
                   OPERATION_NO_AUTHORIZATION = 4
                   PARAMETER_ERROR            = 5
                   X_ERROR                    = 6
                   ENQUEUE_ERROR              = 7
                   OTHERS                     = 8.
    ENDFORM.

    Dear Monica,
      You need to configure the system with respect to functional point of view and need to write the following code in print program. i have done this and solution is as follows.
    <b>  Reward me for this solution.</b>
    Process 11 (MM)     Sending RFQs and POs to vendors directly from the system instead of sending thru Courier or Fax     
    Existing Process (AS-IS)     Presently system is not supporting this requirement
    Business Requirements     RFQ’s to be linked with vendor master with e-mail to send enquiries directly through system instead of courier/fax. Vice versa P.O’s.  Specifications, drawings should also go to vendor along with mail.
    To-Be     
    Configuration Settings:                  
    1) Spro – Materials management – Purchasing – Messages – Output control – Message types – Define message types for RFQ/ PO
    •     Created ZEK1,ZMI and ZEK2 for RFQs
    •     Created ZIK,ZOC,ZOK,ZOM,ZSI, ZSK2 and ZSM for Pos
    •     The above New output types Included with existing Print Forms and Programs but modified with External send(5) medium, and added company’s letter head thru ABAP developments (details provided below)
    •     The above new output types also maintained for Fine- tuned control (thru same navigation) for New(1) and Change(2) operations
          2) Spro – Materials management – Purchasing – Messages – Output control – Message   determination schemas – Define message schema for RFQ/ PO
    •     Maintained the new output types in the control data
    3)     Maintain Condition records for the New out put types (copied same document types from the existing old output types)
    Easy access – Logistics – Materials management – Purchasing – Master data – Messages – MN01 (for RFQs)/ MN04 (for Pos)
    4)     Maintain Email id of Vendor in Vendor master.
    Developments (ABAP):
    1)  Copied the existing print programs and forms of the corresponding out types.
    2) Addition of header window in each corresponding form (HEADER window). Uploaded the HEADER3 graphics in the header window.
    INCLUDE HEADER3 OBJECT GRAPHICS ID BCOL LANGUAGE EN
    3) Added the the following code in TOP includes
                       TYPE-POOLs szadr.
               INCLUDE:  LMEDRUCKF09.
    data: intnast         LIKE snast,
          lvs_recipient   LIKE swotobjid,       "Internet
          lvs_sender      LIKE swotobjid,       "Internet
          lvs_comm_type   TYPE ad_comm,
          lvs_comm_values TYPE szadr_comm_values,
          p_retco         TYPE i.
    5)     Addition of the perform to SOS include for header window display
           PERFORM WRITE_FORM_HEADER.
    *&      Form  WRITE_FORM_HEADER
          text
    -->  p1        text
    <--  p2        text
    FORM WRITE_FORM_HEADER.
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
       ELEMENT                        = 'HE1'
       FUNCTION                       = 'SET'
       TYPE                           = 'BODY'
       WINDOW                         = 'HEADER'
    IMPORTING
       PENDING_LINES                  =
    EXCEPTIONS
       ELEMENT                        = 1
       FUNCTION                       = 2
       TYPE                           = 3
       UNOPENED                       = 4
       UNSTARTED                      = 5
       WINDOW                         = 6
       BAD_PAGEFORMAT_FOR_PRINT       = 7
       SPOOL_ERROR                    = 8
       CODEPAGE                       = 9
       OTHERS                         = 10
    ENDFORM.
    6)     In the corresponding FORM include the following code has been added.
    DATA:  lvs_comm_type     TYPE   ad_comm,
            lvs_comm_values   TYPE   szadr_comm_values,
            xprogramm         type   sy-repid.
      ... use stratagy to get communication type
          CALL FUNCTION 'ADDR_GET_NEXT_COMM_TYPE'
               EXPORTING
                    strategy           = nast-tcode
                    address_number     = lfa1-adrnr
               IMPORTING
                    comm_type          = lvs_comm_type
                    comm_values        = lvs_comm_values
               EXCEPTIONS
                    address_not_exist  = 1
                    person_not_exist   = 2
                    no_comm_type_found = 3
                    internal_error     = 4
                    parameter_error    = 5
                    OTHERS             = 6.
          IF sy-subrc <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          ENDIF.
    convert communication data
          MOVE-CORRESPONDING nast TO intnast.
          MOVE sy-repid           TO xprogramm.
    7) By using the function module we can get sender and reciepient mail ids to variables lvs_recipient    lvs_sender
          CALL FUNCTION 'CONVERT_COMM_TYPE_DATA'
               EXPORTING
                    pi_comm_type              = lvs_comm_type
                    pi_comm_values            = lvs_comm_values
                    pi_country                = lfa1-land1
                    pi_repid                  = xprogramm
                    pi_snast                  = intnast
               IMPORTING
                    pe_itcpo                  = itcpo
                    pe_device                 = xdevice
                    pe_mail_recipient         = lvs_recipient
                    pe_mail_sender            = lvs_sender
               EXCEPTIONS
                    comm_type_not_supported   = 1
                    recipient_creation_failed = 2
                    sender_creation_failed    = 3
                    OTHERS                    = 4.
          IF sy-subrc <> 0.
          Avoids cancellation with message TD421
            p_retco = '1'.                                           "831984
            PERFORM protocol_update USING '740' space space space space.
          dummy message to make the message appear in the where-used list
            IF 1 = 2.
              MESSAGE S740(me).
            ENDIF.
            EXIT.
          ENDIF.
          IF xdevice = 'MAIL'.                                       "885787
        Check validity of email address to avoid cancellation with TD463
            CALL FUNCTION 'SX_ADDRESS_TO_DEVTYPE'                    "831984
              EXPORTING
                recipient_id            = lvs_recipient
                sender_id               = lvs_sender
              EXCEPTIONS
                err_invalid_route       = 1
                err_system              = 2
                OTHERS                  = 3.
            IF SY-SUBRC <> 0.
              p_retco = '1'.
              PERFORM protocol_update USING '740' space space space space.
           dummy message to make the message appear in the where-used list
              IF 1 = 2.
                MESSAGE S740(me).
              ENDIF.
              EXIT.
            ENDIF.
          ENDIF.
    8)     Attaching the new print program and form in NACE transaction.
    Steps for End user:
    1)     Creating the Purchase Order or RFQ with suitable document type through ME21N or ME41 .
    2)     Executing the transaction ME9F and in selecting the suitable output type.
    3)     Executing the transaction ZSEND_PDOC using INT as input.
    4) With above steps we can able to send purchase order or RFQ to vendor as an attachment through e-mail in PDF format.
    Regards
    Badari

  • Multiple pdf attachments from server folder using SO_DOCUMENT_SEND_API1

    Dears,
    I am trying to build a program able to send an email with multiple pdf attachments.
    The files are stored in a folder in SAP server.
    I am able to generate a pdf file from a spool and sucessfully attach it to the email using:
    CALL FUNCTION 'CONVERT_OTF_2_PDF'
          IMPORTING
            bin_filesize           = v_bin_filesize
          TABLES
            otf                    = job_output_info-otfdata
            doctab_archive         = it_docs
            lines                  = it_lines
          EXCEPTIONS
            err_conv_not_possible  = 1
            err_otf_mc_noendmarker = 2
            OTHERS                 = 3.
        IF sy-subrc = 0.
          LOOP AT it_lines.
            TRANSLATE it_lines USING ' ~'.
            CONCATENATE gd_buffer it_lines INTO gd_buffer.
          ENDLOOP.
          TRANSLATE gd_buffer USING '~ '.
          DO.
            it_mess_att_aux = gd_buffer.
            APPEND it_mess_att_aux.
            SHIFT gd_buffer LEFT BY 255 PLACES.
            IF gd_buffer IS INITIAL.
              EXIT.
            ENDIF.
          ENDDO.
        ENDIF.
    Internal table it_mess_att_aux is the parameter contents_bin of FM SO_DOCUMENT_SEND_API1.
    I have now 2 files on a server folder which I would like to include as well.
    I am reading the content of the pdf files in following way:
    DATA:   gd_buffer                 TYPE string,
          OPEN DATASET lv_fileserver FOR INPUT IN BINARY MODE.
          IF sy-subrc <> 0.
            MESSAGE e257(zmsgsd) WITH lv_fileserver.
          ELSE.
            CLEAR: it_mess_att_aux[], gd_buffer.
            DO.
              READ DATASET lv_fileserver INTO gd_buffer.
              IF sy-subrc <> 0.
                EXIT.
              ENDIF.
              APPEND gd_buffer TO it_mess_att_aux.
            ENDDO.
            APPEND LINES OF it_mess_att_aux TO it_mess_att.
    I do not understand the purpose of the statement:
            TRANSLATE it_lines USING ' ~'.
    in this context. Could anyone explain it?
    All the files are attached to email with the desired name but corrupted and with the wrong size.
    Can anyone help me build the logic to attach a pdf file from server in a email?
    Thank you in advance,
    Kind Regards,
    João Cabrita

    hi , try this ,it is working fine  .
      DATA: i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
              i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
              i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
    *          wa_doc_chng LIKE sodocchgi1,
              i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
    *         i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
           i_objhead LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          i_tline TYPE TABLE OF tline WITH HEADER LINE,
          i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          wa_doc_chng LIKE sodocchgi1,
          v_lines_txt TYPE i,
           l_lines TYPE I VALUE '20'.
      CALL FUNCTION 'CONVERT_OTF'
        EXPORTING
          format        = 'PDF'
          max_linewidth = 132
        IMPORTING
          bin_filesize  = bin_filesize
        TABLES
          otf           = int_tab_otf_final
          lines         = int_pdf_tab.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *****************soc ranjan***************************
    *  IF full_path IS INITIAL.
    *    CALL METHOD cl_gui_frontend_services=>file_save_dialog
    *      EXPORTING
    **    WINDOW_TITLE         =
    **           DEFAULT_EXTENSION    = 'PDF'
    **    DEFAULT_FILE_NAME    =
    *           file_filter          = 'Portable Document Format (.pdf)' " for restricting saving file only as pdf
    *      CHANGING
    *        filename             = file_name
    *        path                 = file_path
    *        fullpath             = full_path
    *    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.
    ******************eoc ranjan*****************
    *break-point.
      CONCATENATE full_path git_select_option-pernr INTO path SEPARATED BY '_'.
      CONCATENATE path 'PDF' INTO path SEPARATED BY '.'.
    **  **************************for downloading*********************************
    *  CALL FUNCTION 'GUI_DOWNLOAD'
    *    EXPORTING
    *      bin_filesize = bin_filesize
    *      filename     = path
    *      filetype     = 'BIN'
    *    IMPORTING
    *      filelength   = file_size
    *    TABLES
    *      data_tab     = int_pdf_tab.
    *  IF sy-subrc <> 0.
    ** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    **         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    *  ENDIF.
      CLEAR : lop , el , sl , cl .
    *  ******************addeddd later  by ranjan  21.04.2011
    DATA : desc TYPE char40 ,
          desc1 TYPE char100 .
      CALL FUNCTION 'QCE1_CONVERT'
    TABLES
    t_source_tab = int_pdf_tab
    t_target_tab = i_record
    EXCEPTIONS
    convert_not_possible = 1
    OTHERS = 2.
    IF sy-subrc <> 0.
    WRITE : / 'Error in conversion of pdf lines'(015).
    ENDIF.
    APPEND LINES OF i_record TO i_objbin.
    *Creation of the entry for the compressed attachment
    DESCRIBE TABLE i_objbin LINES bin_filesize.
    i_objtxt = 'Hi'.
    APPEND i_objtxt.
    i_objtxt = '                                     '.
    APPEND i_objtxt.
    i_objtxt = 'Pls  find  the attached  salary slip ' .
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = '         '.
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = '        '.
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = '         '.
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = '         '.
    APPEND i_objtxt.
    i_objtxt = '  '.
    APPEND i_objtxt.
    i_objtxt = 'Regards:  '.
    APPEND i_objtxt.
    i_objtxt = 'Corporate HR  '.
    APPEND i_objtxt.
    DESCRIBE TABLE i_objtxt LINES L_LINES.
    READ TABLE i_objtxt INDEX L_LINES.
    wa_doc_chng-doc_size = ( L_LINES - 1 ) * 255 + STRLEN( i_objtxt ).
    *Creating the entry for the compressed document
    CLEAR i_objpack-transf_bin.
    i_objpack-head_start = 1.
    i_objpack-head_num = 0.
    i_objpack-body_start = 1.
    i_objpack-body_num = L_LINES.
    i_objpack-doc_type = 'RAW'.
    APPEND i_objpack.
    ***CLEAR:  i_objpack .
    ***i_objpack-transf_bin = ' '.
    **i_objpack-head_start = 1.
    **i_objpack-head_num = 0.
    **i_objpack-body_start = 1.
    **i_objpack-body_num = L_LINES.
    **i_objpack-doc_type = 'TXT'.
    **i_objpack-obj_descr = desc1 .
    **APPEND i_objpack.
    *CLEAR: i_objhead .
    *i_objhead = DESC.
    *APPEND i_objhead.
    *break-point .
    i_objpack-transf_bin = 'X'.
    i_objpack-head_start = 1.
    i_objpack-head_num = 1.
    i_objpack-body_start = 1.
    i_objpack-body_num = bin_filesize.
    i_objpack-obj_name = 'Employee Payslip'.
    i_objpack-obj_descr = 'Employee Payslip'.
    i_objpack-doc_size = bin_filesize  * 255 .
    i_objpack-doc_type = 'PDF'.
    APPEND i_objpack.
    CONCATENATE 'Salary Slip of Month' p_month INTO desc SEPARATED BY ' ' .
    *DESCRIBE TABLE i_objtxt LINES v_lines_txt.
    *READ TABLE i_objtxt INDEX v_lines_txt.
    ****wa_doc_chng-doc_size = ( v_lines_txt - 1 ) * 375 + STRLEN( i_objtxt ).
    wa_doc_chng-obj_name = 'Payslip'.
    wa_doc_chng-expiry_dat = sy-datum + 10.
    wa_doc_chng-obj_descr = desc.
    wa_doc_chng-sensitivty = 'F'.
    wa_doc_chng-doc_size = v_lines_txt * 255.
    CLEAR i_objpack.
    DATA: l_usrid_long TYPE pa0105-usrid_long.
    DATA : emessage(70) TYPE c.
    CLEAR : l_usrid_long.
    SELECT SINGLE usrid_long
    FROM pa0105
    INTO l_usrid_long
    WHERE pernr = git_pa0001-pernr
    AND subty = '0010'.
    *break-point.
    IF sy-subrc EQ 0.
    i_reclist-receiver = l_usrid_long.                     
    i_reclist-rec_type = 'U'.
    i_reclist-com_type = 'INT'.
    APPEND i_reclist.
    ELSE.
    WRITE:/ 'No email id is maintained for this personnel number' , git_pa0001-pernr.
    ENDIF.
    IF NOT i_reclist[] IS INITIAL.
    ***************************************for senders id *************************************
    CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
      EXPORTING
        document_data                    = wa_doc_chng
      put_in_outbox = 'X'
       sender_address                   = 'xys'
       sender_address_type              = 'SMTP'
       commit_work                      = 'X'
    * IMPORTING
    *   SENT_TO_ALL                      =
    *   NEW_OBJECT_ID                    =
    *   SENDER_ID                        =
      TABLES
    packing_list = i_objpack
    object_header = i_objhead
    contents_bin = i_objbin
    contents_txt = i_objtxt
    receivers = i_reclist
    EXCEPTIONS
    too_many_receivers = 1
    document_not_sent = 2
    document_type_not_exist = 3
    operation_no_authorization = 4
    parameter_error = 5
    x_error = 6
    enqueue_error = 7
    OTHERS = 8.          .
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

  • ALV to PDF output format

    Hi Experts,
    I am using following code to convert Alv report to pdf format..........can i change the number of output lines shown in the pdf
    DATA :
           WA_TSTC              TYPE TSTC,
           WA_TSTCP             TYPE TSTCP,
           SM30_PARA            TYPE TSTCP-PARAM,
           IT_PARAM             TYPE STANDARD TABLE OF STRING,
           WA_PARAM             TYPE STRING,
           GV_REPORT            TYPE SY-REPID,
           GV_PARAMS            TYPE PRI_PARAMS,
           GV_VALID             TYPE STRING,
           GV_RQIDENT           TYPE TSP01-RQIDENT,
           GT_RSPARAMS          TYPE STANDARD TABLE OF RSPARAMS,
           WA_TSP01             TYPE TSP01,
           GV_SPOOL             TYPE TSP01-RQIDENT,
           GV_RQ2NAME           TYPE TSP01-RQ2NAME,
           PDF_BYTECOUNT         TYPE  I,
           PDF_SPOOLID           LIKE  TSP01-RQIDENT,
           LIST_PAGECOUNT       TYPE I,
           BTC_JOBNAME           TYPE  TBTCJOB-JOBNAME,
           BTC_JOBCOUNT         TYPE  TBTCJOB-JOBCOUNT,
           BIN_FILE             TYPE XSTRING,
           GT_PDF               TYPE STANDARD TABLE OF TLINE,
           GV_BIN_FILESIZE      TYPE I, " Binary File Size
           GV_FILE_NAME         TYPE STRING,
           GV_FILE_PATH         TYPE STRING,
           GV_FULL_PATH         TYPE STRING.
    " Selection Screen
    SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT000.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT (23) TEXT001 FOR FIELD P_TCODE.
    PARAMETERS P_TCODE TYPE TSTC-TCODE OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    "Text
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT (70) TEXT002.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN: END OF BLOCK B1.
    LOAD-OF-PROGRAM.
       TEXT000 =  'Selection Criteria'.
       TEXT001 =  '@8T@ Transaction Code'.
       TEXT002 =  '*Enter Tcode->Select Print Option->Execute report->Save PDF File'.
    START-OF-SELECTION.
       "Fetch Tcode and Report info
       PERFORM FETCH_TCODE_REPORT.
       "Call Transaction
       PERFORM CALL_TRANSACTION.
       "Get Spool and Generate PDF
       PERFORM GET_SPOOL_TO_PDF.
    *&      Form  FETCH_TCODE_REPORT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM FETCH_TCODE_REPORT .
       DATA :
              FLG_TCODE TYPE CHAR1,
              CHR1      TYPE CHAR40,
              CHR2      TYPE CHAR40.
       SELECT SINGLE * FROM TSTC
         INTO WA_TSTC WHERE TCODE = P_TCODE
                       AND PGMNA NE SPACE
                       AND DYPNO  = 1000. "only Standard Report
       IF SY-SUBRC =  0.
         FLG_TCODE = 'X'.
         GV_REPORT = WA_TSTC-PGMNA.
       ELSE.
         SELECT SINGLE * FROM
            TSTCP INTO WA_TSTCP
            WHERE TCODE = P_TCODE
              AND PARAM NE SPACE.
         SPLIT WA_TSTCP-PARAM AT ';' INTO TABLE IT_PARAM.
         LOOP AT IT_PARAM INTO WA_PARAM.
           IF WA_PARAM CS '-REPORT='.
             FLG_TCODE = 'X'.
             SPLIT WA_PARAM AT '-REPORT=' INTO CHR1 CHR2.
             GV_REPORT = CHR2.
             EXIT.
           ENDIF.
         ENDLOOP.
       ENDIF.
       IF FLG_TCODE IS INITIAL.
         MESSAGE 'In Valid Tcode' TYPE 'I' DISPLAY LIKE 'E'.
         LEAVE TO TRANSACTION SY-TCODE.
       ENDIF.
       CALL FUNCTION 'AUTH_CHECK_TCODE'
         EXPORTING
           TCODE                          = P_TCODE
         EXCEPTIONS
           PARAMETER_ERROR                = 1
           TRANSACTION_NOT_FOUND          = 2
           TRANSACTION_LOCKED             = 3
           TRANSACTION_IS_MENU            = 4
           MENU_VIA_PARAMETER_TRANSACTION = 5
           NOT_AUTHORIZED                 = 6
           OTHERS                         = 7.
       IF SY-SUBRC <> 0.
         MESSAGE 'No Authorization for Tcode' TYPE 'I' DISPLAY LIKE 'E'.
         LEAVE TO TRANSACTION SY-TCODE.
       ENDIF.
    ENDFORM.                    " FETCH_TCODE_REPORT
    *&      Form  CALL_TRANSACTION
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM CALL_TRANSACTION .
       CALL FUNCTION 'GET_PRINT_PARAMETERS'
         IMPORTING
           OUT_PARAMETERS = GV_PARAMS
           VALID          = GV_VALID.
       IF SY-SUBRC <> 0.
       ENDIF.
       "Spool Mode, Default will be Spool Only
       CLEAR GV_PARAMS-PRIMM.
       "Spool Request Name, Pass Report name , Only 1st 12 Chars
       GV_RQ2NAME      = GV_REPORT.
       GV_PARAMS-PLIST = GV_RQ2NAME.
       SUBMIT (GV_REPORT) VIA SELECTION-SCREEN
                         TO SAP-SPOOL
                         SPOOL PARAMETERS GV_PARAMS
                         WITHOUT SPOOL DYNPRO
                         AND RETURN.
       IF SY-SUBRC NE 0.
         MESSAGE 'Unable to Execute Report' TYPE 'I' DISPLAY LIKE 'E'.
         LEAVE TO TRANSACTION SY-TCODE.
       ENDIF.
       WAIT UP TO 2 SECONDS.
    ENDFORM.                    " CALL_TRANSACTION
    *&      Form  GET_SPOOL_TO_PDF
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM GET_SPOOL_TO_PDF .
       DATA :
           LV_RQCRETIME  TYPE TSP01-RQCRETIME,
           LV_RETURNCODE TYPE I.
       CONCATENATE SY-DATUM '%' INTO LV_RQCRETIME.
       SELECT MAX( RQIDENT ) INTO GV_SPOOL FROM TSP01  WHERE RQCLIENT = SY-MANDT
                                                       AND   RQ2NAME  = GV_RQ2NAME
                                                       AND   RQOWNER  = SY-UNAME
                                                       AND   RQCRETIME LIKE LV_RQCRETIME.
       CHECK SY-SUBRC = 0.
       SELECT SINGLE * FROM TSP01
         INTO WA_TSP01 WHERE RQIDENT = GV_SPOOL.
       IF WA_TSP01 IS INITIAL.
         MESSAGE 'No Valid Spool Request Found' TYPE 'I' DISPLAY LIKE 'E'.
         LEAVE TO TRANSACTION SY-TCODE.
       ENDIF.
       CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
         EXPORTING
           SRC_SPOOLID              = GV_SPOOL
           NO_DIALOG                = ABAP_FALSE
         IMPORTING
           PDF_BYTECOUNT            = PDF_BYTECOUNT
           PDF_SPOOLID              = PDF_SPOOLID
           BTC_JOBNAME              = BTC_JOBNAME
           BTC_JOBCOUNT             = BTC_JOBCOUNT
         TABLES
           PDF                      = GT_PDF
         EXCEPTIONS
           ERR_NO_ABAP_SPOOLJOB     = 1
           ERR_NO_SPOOLJOB          = 2
           ERR_NO_PERMISSION        = 3
           ERR_CONV_NOT_POSSIBLE    = 4
           ERR_BAD_DESTDEVICE       = 5
           USER_CANCELLED           = 6
           ERR_SPOOLERROR           = 7
           ERR_TEMSEERROR           = 8
           ERR_BTCJOB_OPEN_FAILED   = 9
           ERR_BTCJOB_SUBMIT_FAILED = 10
           ERR_BTCJOB_CLOSE_FAILED  = 11.
       CHECK GT_PDF IS NOT INITIAL.
       GV_FILE_NAME = P_TCODE.
    * To display File SAVE dialog window
       CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
         EXPORTING
           WINDOW_TITLE         = 'Save Output as PDF' "LV_TITLE
           DEFAULT_EXTENSION    = 'PDF'
           FILE_FILTER          = '(*.pdf)|*.pdf|'
           DEFAULT_FILE_NAME    = GV_FILE_NAME
         CHANGING
           FILENAME             = GV_FILE_NAME
           PATH                 = GV_FILE_PATH
           FULLPATH             = GV_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
       CHECK GV_FULL_PATH IS NOT INITIAL.
       CALL FUNCTION 'GUI_DOWNLOAD'
         EXPORTING
           BIN_FILESIZE            = GV_BIN_FILESIZE
           FILENAME                = GV_FULL_PATH
           FILETYPE                = 'BIN'
         TABLES
           DATA_TAB                = GT_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 'File Generated Successfully' TYPE 'S'.
       ELSE.
         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
       ENDIF.
    ENDFORM.                    " GET_SPOOL_TO_PDF

    Hi ,
    Try this procedure...
    DATA:SSFCTRLOP    TYPE SSFCTRLOP.
    DATA:SSFCOMPOP    TYPE SSFCOMPOP.
    DATA:IT_OTF_DATA  TYPE SSFCRESCL.
    DATA:IT_OTF_FINAL TYPE ITCOO OCCURS 0 WITH HEADER LINE.
    DATA:BIN_FILESIZE TYPE I.
    DATA:IT_PDFDATA   TYPE TABLE OF TLINE.
    DATA:IT_PDF       TYPE TABLE OF SOLISTI1.
    DATA: ST_JOB_OUTPUT_INFO TYPE SSFCRESCL,
          ST_DOCUMENT_OUTPUT_INFO TYPE SSFCRESPD,
          ST_JOB_OUTPUT_OPTIONS TYPE SSFCRESOP,
          IT_DOCS TYPE STANDARD TABLE OF DOCS,
          IT_LINES TYPE STANDARD TABLE OF TLINE,
          V_NAME TYPE STRING,
          V_PATH TYPE STRING,
          V_FULLPATH TYPE STRING,
          V_FILTER TYPE STRING,
          V_UACT TYPE I,
          V_GUIOBJ TYPE REF TO CL_GUI_FRONTEND_SERVICES,
          V_FILENAME TYPE STRING,
          V_BIN_FILESIZE TYPE I.
    ****** PDF
    TYPES: T_DOCUMENT_DATA  TYPE  SODOCCHGI1,
           T_PACKING_LIST   TYPE  SOPCKLSTI1,
           T_ATTACHMENT     TYPE  SOLISTI1,
           T_BODY_MSG       TYPE  SOLISTI1,
           T_RECEIVERS      TYPE  SOMLRECI1,
           T_PDF            TYPE  TLINE.
    DATA : W_DOCUMENT_DATA  TYPE  T_DOCUMENT_DATA,
           W_PACKING_LIST   TYPE  T_PACKING_LIST,
           W_ATTACHMENT     TYPE  T_ATTACHMENT,
           W_BODY_MSG       TYPE  T_BODY_MSG,
           W_RECEIVERS      TYPE  T_RECEIVERS,
           W_PDF            TYPE  T_PDF.
    DATA : I_DOCUMENT_DATA  TYPE STANDARD TABLE OF T_DOCUMENT_DATA,
           I_PACKING_LIST   TYPE STANDARD TABLE OF T_PACKING_LIST,
           I_ATTACHMENT     TYPE STANDARD TABLE OF T_ATTACHMENT,
           I_BODY_MSG       TYPE STANDARD TABLE OF T_BODY_MSG,
           I_RECEIVERS      TYPE STANDARD TABLE OF T_RECEIVERS,
           I_PDF            TYPE STANDARD TABLE OF T_PDF.
    DATA : G_SENT_TO_ALL   TYPE SONV-FLAG,
           G_TAB_LINES     TYPE I.
        CALL FUNCTION 'CONVERT_OTF_2_PDF'
          IMPORTING
            BIN_FILESIZE           = V_BIN_FILESIZE
          TABLES
            OTF                    = ST_JOB_OUTPUT_INFO-OTFDATA
            DOCTAB_ARCHIVE         = IT_DOCS
            LINES                  = IT_LINES
          EXCEPTIONS
            ERR_CONV_NOT_POSSIBLE  = 1
            ERR_OTF_MC_NOENDMARKER = 2
            OTHERS                 = 3.
    **** ........................GET THE FILE NAME TO STORE....................
        CONCATENATE 'Order Vs Billing' '.pdf' INTO V_NAME.
        CREATE OBJECT V_GUIOBJ.
        CALL METHOD V_GUIOBJ->FILE_SAVE_DIALOG
          EXPORTING
            DEFAULT_EXTENSION = 'pdf'
            DEFAULT_FILE_NAME = V_NAME
            FILE_FILTER       = V_FILTER
          CHANGING
            FILENAME          = V_NAME
            PATH              = V_PATH
            FULLPATH          = V_FULLPATH
            USER_ACTION       = V_UACT.
        IF V_UACT = V_GUIOBJ->ACTION_CANCEL.
          EXIT.
        ENDIF.
    **** ..................................DOWNLOAD AS FILE....................
        MOVE V_FULLPATH TO V_FILENAME.
        CALL FUNCTION 'GUI_DOWNLOAD'
          EXPORTING
            BIN_FILESIZE            = V_BIN_FILESIZE
            FILENAME                = V_FILENAME
            FILETYPE                = 'BIN'
          TABLES
            DATA_TAB                = IT_LINES
          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.
      ENDIF.
    if it's helpfur for you.. pls give reward points.

  • SMART FORMS

    i have copied a driver programe of outbound delivery and modified in such a way the layout will convert to pdf and then download to pc, but the driver program is not executing online, so do i need to attache the driver program name and form name in nace t.code or how would i execute the program, when i am placing a break point in driver program and execute form its not stopping at break point, i am new to forms, help me out in this.
    i have placed the code below plz verify it and say if any thing is wrong in the code, u will be shurely rewareded.
         Print of a delivery note by SAPscript SMART FORMS               *
    REPORT Z_RLE_DELNOTE1.
    declaration of data
    INCLUDE Z_RLE_DELNOTE_DATA_DECLARE1.
    *INCLUDE RLE_DELNOTE_DATA_DECLARE.
    definition of forms
    INCLUDE Z_RLE_DELNOTE_FORMS1.
    *INCLUDE RLE_DELNOTE_FORMS.
    INCLUDE Z_RLE_PRINT_FORMS1.
    *INCLUDE RLE_PRINT_FORMS.
          FORM ENTRY
    FORM ENTRY USING RETURN_CODE US_SCREEN.
      DATA: LF_RETCODE TYPE SY-SUBRC.
      XSCREEN = US_SCREEN.
      PERFORM PROCESSING USING    US_SCREEN
                         CHANGING LF_RETCODE.
      IF LF_RETCODE NE 0.
        RETURN_CODE = 1.
      ELSE.
        RETURN_CODE = 0.
      ENDIF.
    ENDFORM.
          FORM PROCESSING                                               *
    FORM PROCESSING USING    PROC_SCREEN
                    CHANGING CF_RETCODE.
      DATA: LS_PRINT_DATA_TO_READ TYPE LEDLV_PRINT_DATA_TO_READ.
      DATA: LS_DLV_DELNOTE        TYPE LEDLV_DELNOTE.
      DATA: LF_FM_NAME            TYPE RS38L_FNAM.
      DATA: LS_CONTROL_PARAM      TYPE SSFCTRLOP.
      DATA: LS_COMPOSER_PARAM     TYPE SSFCOMPOP.
      DATA: LS_RECIPIENT          TYPE SWOTOBJID.
      DATA: LS_SENDER             TYPE SWOTOBJID.
      DATA: LF_FORMNAME           TYPE TDSFNAME.
      DATA: LS_ADDR_KEY           LIKE ADDR_KEY.
    *Begin of changes by 67.
      DATA:   ls_document_output_info TYPE ssfcrespd,
              ls_job_output_options TYPE ssfcresop.
    *End of changes by 67.
    SmartForm from customizing table TNAPR
      LF_FORMNAME = TNAPR-SFORM.
    determine print data
      PERFORM SET_PRINT_DATA_TO_READ USING    LF_FORMNAME
                                     CHANGING LS_PRINT_DATA_TO_READ
                                     CF_RETCODE.
      IF CF_RETCODE = 0.
    select print data
        PERFORM GET_DATA USING    LS_PRINT_DATA_TO_READ
                         CHANGING LS_ADDR_KEY
                                  LS_DLV_DELNOTE
                                  CF_RETCODE.
      ENDIF.
      IF CF_RETCODE = 0.
        PERFORM SET_PRINT_PARAM USING    LS_ADDR_KEY
                                CHANGING LS_CONTROL_PARAM
                                         LS_COMPOSER_PARAM
                                         LS_RECIPIENT
                                         LS_SENDER
                                         CF_RETCODE.
      ENDIF.
    *Begin of changes by 67.
    CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
      EXPORTING
        i_language                  = v_language
       I_APPLICATION                = 'SAPDEFAULT'
    IMPORTING
       E_DEVTYPE                    = v_e_devtype
    st_output_options-tdprinter = v_e_devtype.
    *st_output_options-tdprinter = 'locl'.
    LS_CONTROL_PARAM-no_dialog = 'X'.
    LS_CONTROL_PARAM-getotf = 'X'.
    *End of changes by 67.
      IF CF_RETCODE = 0.
    determine smartform function module for delivery note
        CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
             EXPORTING
                      FORMNAME           = LF_FORMNAME
                    variant            = ' '
                    direct_call        = ' '
             IMPORTING
                      FM_NAME            = LF_FM_NAME
             EXCEPTIONS
                        NO_FORM            = 1
                        NO_FUNCTION_MODULE = 2
                        OTHERS             = 3.
        IF SY-SUBRC <> 0.
      error handling
          CF_RETCODE = SY-SUBRC.
          PERFORM PROTOCOL_UPDATE.
        ENDIF.
      ENDIF.
      IF CF_RETCODE = 0.
      call smartform delivery note
        CALL FUNCTION LF_FM_NAME
             EXPORTING
                      ARCHIVE_INDEX        = TOA_DARA
                      ARCHIVE_PARAMETERS   = ARC_PARAMS
                      CONTROL_PARAMETERS   = LS_CONTROL_PARAM
                    mail_appl_obj        =
                      MAIL_RECIPIENT       = LS_RECIPIENT
                      MAIL_SENDER          = LS_SENDER
                      OUTPUT_OPTIONS       = LS_COMPOSER_PARAM
                      USER_SETTINGS        = ' '
                      IS_DLV_DELNOTE       = LS_DLV_DELNOTE
                      IS_NAST              = NAST
    *Begin of changes by 67.
          importing
                     document_output_info = ls_document_output_info      "67
                     job_output_info      = tab_otf_data
                     job_output_options   = ls_job_output_options        "67
           EXCEPTIONS
                      FORMATTING_ERROR     = 1
                      INTERNAL_ERROR       = 2
                      SEND_ERROR           = 3
                      USER_CANCELED        = 4
                      OTHERS               = 5.
    *End of changes by 67.
        IF SY-SUBRC <> 0.
      error handling
          CF_RETCODE = SY-SUBRC.
          PERFORM PROTOCOL_UPDATE.
        get SmartForm protocoll and store it in the NAST protocoll
          PERFORM ADD_SMFRM_PROT.                  "INS_HP_335958
        ENDIF.
      ENDIF.
    get SmartForm protocoll and store it in the NAST protocoll
    PERFORM ADD_SMFRM_PROT.                       DEL_HP_335958
    --Function  modules conversts from otf to pdf format.--
    *Begin of chanes by 67.
    CALL FUNCTION 'CONVERT_OTF_2_PDF'
    EXPORTING
      USE_OTF_MC_CMD               = 'X'
      ARCHIVE_INDEX                =
    IMPORTING
       BIN_FILESIZE                 = v_bin_filesize
      TABLES
        otf                          = v_tab_otf_final
        doctab_archive               = v_it_docs
        lines                        = v_it_lines
    EXCEPTIONS
      ERR_CONV_NOT_POSSIBLE        = 1
      ERR_OTF_MC_NOENDMARKER       = 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.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
       BIN_FILESIZE                    = v_bin_filesize
       filename                        = 'D:\67.PDF'
       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                      = v_file_size
      tables
        data_tab                       = v_pdf_tab
      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 i001(z00) WITH 'File not downloaded succesfully'.
      else.
      MESSAGE i002(z00) WITH 'File 67.PDF downloaded succesfully under D: drive'.
    ENDIF.
    *End of changes by 67.
    ENDFORM.

    Hi,
    Make sure that the output type you are using is configured for your custom-copied program name, form routine, and the form you are using. The output types can be found in transaction NACE.
    Award points if found helpful.
    Thanks,
    Leo

  • STO mail : pdf attachment has an error 'file damage' when try to open it

    Dear expert,
    I need to send an e-mail to the vendor with the sto list as attachment at the email.
    I managed to send email to external addresee and made the pdf attachment, BUT somehow when I open the attachment it has an error says "Adobe Reader could not open xx.pdf because it is either not a supported file type or because the file has been damaged(for axample, it was sent as an email attachment and wasn't corectly decoded)."
    Really need your experties to help me. Here is my abap coding to send email and do the pdf attachment at the new ouptput type to send email.
      TYPES: BEGIN OF lty_drad,
              doknr TYPE drad-doknr,
             END OF lty_drad,
             BEGIN OF lty_recpt,
               smtp_addr  TYPE ad_smtpadr,
             END   OF lty_recpt.
      DATA: lt_doc      TYPE STANDARD TABLE OF docs,
            lt_recpt    TYPE STANDARD TABLE OF lty_recpt,
            lt_tline    LIKE tline OCCURS 0 WITH HEADER LINE,
            lt_data     TYPE solix_tab,
            lt_docu     TYPE STANDARD TABLE OF lty_drad,
            lt_docfiles TYPE STANDARD TABLE OF bapi_doc_files2,
            lw_tline    LIKE LINE OF lt_tline,
            lw_docu     LIKE LINE OF lt_docu,
            lw_docfiles LIKE LINE OF lt_docfiles,
            lw_objdes   TYPE tnati-objdes,
            lt_text     TYPE bcsy_text,
            lw_recpt    TYPE adr6-smtp_addr,
            lw_adrnr    TYPE lfa1-adrnr,
            lw_object   TYPE drad-objky,
            lw_doknr    TYPE drad-doknr,
            lw_return   TYPE  bapiret2,
            lw_xcontent TYPE xstring,
            client    TYPE REF TO if_http_client,
             url       TYPE string,
             lw_subrc  TYPE sysubrc,
             response  TYPE REF TO if_http_response,
             lw_message1 TYPE string,
           sent_to_all TYPE os_boolean,
           bin_filesize type i.
      CONSTANTS: lc_dokar_srm TYPE drad-dokar VALUE 'SRM',
                 lc_type      TYPE so_obj_tp  VALUE 'RAW'.
    CLASS-DEFINITIONS
      DATA: send_request       TYPE REF TO cl_bcs.
      DATA: document           TYPE REF TO cl_document_bcs.
      DATA: sender             TYPE REF TO cl_sapuser_bcs.
      DATA: recipient          TYPE REF TO if_recipient_bcs.
      DATA: exception_info     TYPE REF TO if_os_exception_info,
            bcs_exception      TYPE REF TO cx_bcs.
      RANGES: lr_po_pr   FOR  drad-objky.
      DATA:   lw_banfn   TYPE ekpo-banfn,
              lw_bnfpo   TYPE ekpo-bnfpo.
      IF nast-nacha = '5'. "8
    Create recipient and check if exist
       Get email ID
      start commented by sapnislina 21.12.06
       SELECT SINGLE adrnr FROM lfa1 INTO lw_adrnr
                    WHERE lifnr = p_ekko-lifnr.
       IF sy-subrc NE 0.
         PERFORM protocol_update
           USING '303' 'Address of Vendor:' ekko-lifnr 'not found' space
         p_retco = sy-subrc.
         EXIT.
       ENDIF.
      end commented by sapnislina 21.12.06
       SELECT smtp_addr INTO CORRESPONDING FIELDS OF TABLE lt_recpt
            FROM adr6
           WHERE addrnumber = p_ekko-adrnr. "lw_adrnr.
        IF lt_recpt[] IS INITIAL.
          PERFORM protocol_update
            USING '303' 'Email address(es) does not exist for vendor'
            p_ekko-lifnr space space.
          p_retco = sy-subrc.
          EXIT.
        ENDIF.
        CALL FUNCTION 'CONVERT_OTF_2_PDF'
          EXPORTING
            use_otf_mc_cmd         = 'X'
          IMPORTING
            bin_filesize           = bin_filesize
          TABLES
            otf                    = otfdata[]
            doctab_archive         = lt_doc
            lines                  = lt_tline
          EXCEPTIONS
            err_conv_not_possible  = 1
            err_otf_mc_noendmarker = 2
            OTHERS                 = 3.
        IF sy-subrc <> 0.
        PERFORM protocol_update
            USING '303' 'PO Convertion from OTF to PDF failed'
                  space space space.
          p_retco = sy-subrc.
          EXIT.
        ENDIF.
    Get object description from mail title of output types
       SELECT SINGLE objdes INTO lw_objdes
              FROM tnati
              WHERE spras = sy-langu
              AND   kappl = nast-kappl
              AND   kschl = nast-kschl.
       CONCATENATE lw_objdes ekko-ebeln INTO lw_objdes SEPARATED BY
    space
        DATA L_TXT(255) TYPE C.
        DATA L_TXT2(255) TYPE C.
        CONCATENATE 'STO' EKPO-EBELN 'Created for' EKPO-WERKS '/'
    EKPO-LGORT
        'Supply Plant' EKKO-RESWK into l_txt separated by space.
        lw_objdes = l_txt.
        CONCATENATE 'STO' EKKO-EBELN INTO L_TXT2 SEPARATED BY SPACE.
        APPEND L_TXT2 TO LT_TEXT.
       APPEND lw_objdes TO lt_text.
    Instantiate
        CLASS cl_cam_address_bcs DEFINITION LOAD.
        CLASS cl_abap_char_utilities DEFINITION LOAD.
    insert by sapnislina 22.12.06
      DATA : CONTENT_OUT TYPE SOLIX,
             LINE_WIDTH_SRC TYPE I,
             POS_OUT TYPE I,
             POS_IN TYPE I,
             LEN_OUT TYPE I.
      DATA OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.
      DATA : BEGIN OF CONTENT_IN,
                LINE TYPE TLINE,
                DUMMY TYPE TLINE,
             END OF CONTENT_IN.
      TYPES PDF_RAW TYPE X LENGTH 268.
      FIELD-SYMBOLS <PDF_BIN> TYPE PDF_RAW.
      DESCRIBE FIELD CONTENT_IN-LINE LENGTH LINE_WIDTH_SRC IN BYTE MODE.
      REFRESH lt_data.
      CLEAR CONTENT_OUT.
      POS_OUT = 0.
      LOOP AT OTFDATA INTO CONTENT_IN-LINE.
        ASSIGN CONTENT_IN TO <PDF_BIN> CASTING.
        MOVE <PDF_BIN> TO CONTENT_OUT-LINE+POS_OUT.
        ADD LINE_WIDTH_SRC TO POS_OUT.
        WHILE POS_OUT >= 255.
          APPEND CONTENT_OUT TO lt_data.
          CLEAR CONTENT_OUT.
          SUBTRACT 255 FROM POS_OUT.
          IF POS_OUT > 0.
            POS_IN = LINE_WIDTH_SRC - POS_OUT.
            MOVE <PDF_BIN>+POS_IN TO CONTENT_OUT-LINE.
          ENDIF.
        ENDWHILE.
      ENDLOOP.
      IF POS_OUT > 0.
      APPEND CONTENT_OUT TO lt_data.
      ENDIF.
    end inserted by sapnislina 22.12.06
    starting to create attachment to mail
        TRY.
           CLEAR send_request .
    Create persistent send request
            send_request = cl_bcs=>create_persistent( ).
    Build the document
            document = cl_document_bcs=>create_document(
                                i_type    = lc_type  "RAW
                                i_text    = lt_text  "def of output type
                                i_length  = '12'
                                i_subject = lw_objdes ).
    Attached the document object
            CALL METHOD document->add_attachment
              EXPORTING
                i_attachment_type    = 'PDF'
                i_attachment_subject = lw_objdes "definition of output
    type
                i_attachment_size    = '12'
                i_att_content_hex    = lt_data.
    completed first part to attached PO (pdf format) as attachment
    Now attach the PO related attachments to the mail..
    .... need to read from table DRAD and get all the attachment per PO
         at run time
         REFRESH: lr_po_pr."lt_return.
            CLEAR:   lr_po_pr,lw_return.
            MOVE  'ICP'  TO  lr_po_pr.
         CLEAR: lw_object.
    completed second part for PO related attachments
    Now prepare to send mail
    Add document to send request
         CALL METHOD send_request->set_document( document ).
    Get sender object
         sender = cl_sapuser_bcs=>create( sy-uname ).
    Add sender
         CALL METHOD send_request->set_sender
           EXPORTING
             i_sender = sender.
         LOOP AT lt_recpt INTO lw_recpt
                          WHERE NOT smtp_addr IS INITIAL.
          recipient = cl_cam_address_bcs=>create_internet_address(
    lw_recpt ).
    Add recipient with its respective attributes to send request
            CALL METHOD send_request->add_recipient
              EXPORTING
                i_recipient = recipient
                i_express   = 'X'.
            CLEAR recipient.
         ENDLOOP.
    Send the document
        CALL METHOD send_request->send
          RECEIVING
            result              = sent_to_all.
    Catch any exception
          CATCH cx_bcs INTO bcs_exception.
              CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
                EXPORTING
                  msg_arbgb = bcs_exception->msgid
                  msg_nr    = bcs_exception->msgno
                  msg_ty    = bcs_exception->msgty
                  msg_v1    = bcs_exception->msgv1
                  msg_v2    = bcs_exception->msgv2
                  msg_v3    = bcs_exception->msgv3
                  msg_v4    = bcs_exception->msgv4
                EXCEPTIONS
                  OTHERS    = 1.
              p_retco = sy-subrc.
        ENDTRY.
      ENDIF.
      IF NOT result-tdfaxid  IS INITIAL OR                      " 422131
         NOT result-tdmailid IS INITIAL.                        " 422131
        CLEAR syst-msgv1.                                       " 422131
        IF NOT result-tdfaxid IS INITIAL.                       " 422131
          syst-msgv1 = result-tdfaxid.                          " 422131
        ELSEIF result-tdmailid IS INITIAL.                      " 422131
          syst-msgv1 = result-tdmailid.                         " 422131
        ENDIF.                                                  " 422131
        CALL FUNCTION 'NAST_PROTOCOL_UPDATE'                    " 422131
             EXPORTING                                          " 422131
                  msg_arbgb = 'VN'                              " 422131
                  msg_nr    = '095'                             " 422131
                  msg_ty    = 'I'                               " 422131
                  msg_v1    = syst-msgv1                        " 422131
             EXCEPTIONS                                         " 422131
                  OTHERS    = 1.                                " 422131
      ENDIF.                                                    " 422131
      IF result-userexit EQ 'C' OR
          result-userexit EQ 'E'.
        p_retco = '9'.
      ENDIF.
    ENDFORM.                               " ENDE
    end inserted
    Regards
    Nislina

    Hi Nislina,
    Could you please let me know how do you solve this issue.
    Code:
    if lt_binary[] is not initial.
    *     add attachment to document
             call method document->add_attachment
               exporting
                 i_attachment_type      = 'PDF'            
                 i_attachment_subject = 'My Attachment'
                 i_att_content_hex      = lt_binary.
      endif.
    Thanks & Regard's
    Sateesh

  • HR: Need to Send the Paysilp as a PDF file through Mail to Employees

    Dear All ,
           Need to Send the Paysilp as a PDF file through Mail to Employees.
           can anyone please suggest any Standard Function Modules which takes the Payslip Form as input and convert it into PDF and can send it through mail to the concern employees.
          Can anyone please explain the procedure in detail.
    Thanks in Advance,
    Regards.

    venu,
    below is code which helps to generate pdf ,,,,hope u know how to use the mail sending function
    data:
    fm_name TYPE RS38L_FNAM, "Smart Forms: FM Name
    sf_name TYPE TDSFNAME
    value 'YOUR_FORM_NAME', "Smart Forms: Form Name
    P_OUTPUT_OPTIONS TYPE SSFCOMPOP,
    P_JOB_OUTPUT_INFO TYPE SSFCRESCL,
    P_CONTROL_PARAMETERS TYPE SSFCTRLOP,
    P_LANGUAGE TYPE SFLANGU value 'E',
    P_E_DEVTYPE TYPE RSPOPTYPE.
    data:
    P_BIN_FILESIZE TYPE I,
    P_BIN_FILE TYPE XSTRING,
    P_OTF type table of ITCOO,
    P_DOCS type table of DOCS,
    P_LINES type table of TLINE,
    name type string,
    path type string,
    fullpath type string,
    filter type string,
    guiobj type ref to cl_gui_frontend_services,
    uact type i,
    filename(128).
    GET SMARTFORM FUNCTION MODULE NAME ---
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
    FORMNAME = sf_name
    IMPORTING
    FM_NAME = 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.
    CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
    EXPORTING
    I_LANGUAGE = P_LANGUAGE
    I_APPLICATION = 'SAPDEFAULT'
    IMPORTING
    E_DEVTYPE = P_E_DEVTYPE.
    P_OUTPUT_OPTIONS-XSFCMODE = 'X'.
    P_OUTPUT_OPTIONS-XSF = SPACE.
    P_OUTPUT_OPTIONS-XDFCMODE = 'X'.
    P_OUTPUT_OPTIONS-XDF = SPACE.
    P_OUTPUT_OPTIONS-TDPRINTER = P_E_DEVTYPE.
    P_CONTROL_PARAMETERS-NO_DIALOG = 'X'.
    P_CONTROL_PARAMETERS-GETOTF = 'X'.
    ****...................................PRINTING.........................
    CALL FUNCTION fm_name
    EXPORTING
    CONTROL_PARAMETERS = P_CONTROL_PARAMETERS
    OUTPUT_OPTIONS = P_OUTPUT_OPTIONS
    (....) <--- your form import parameters
    IMPORTING
    JOB_OUTPUT_INFO = P_JOB_OUTPUT_INFO.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    P_OTF[] = P_JOB_OUTPUT_INFO-OTFDATA.
    ****...................................CONVERT TO PDF...............
    CALL FUNCTION 'CONVERT_OTF_2_PDF'
    IMPORTING
    BIN_FILESIZE = P_BIN_FILESIZE
    TABLES
    OTF = P_OTF
    DOCTAB_ARCHIVE = P_DOCS
    LINES = P_LINES
    EXCEPTIONS
    ERR_CONV_NOT_POSSIBLE = 1
    ERR_OTF_MC_NOENDMARKER = 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.
    now you can mail the pdf.
    Reward points if helpful
    Regards,
    jinesh

  • Not able to open pdf file ( smart form from webdynpro )

    Dear friends,
    while trying to download pdf file from webdynpro i am getting the following error ( pls check the screen shot and also my  code )
    could any one please let me know what's the issue
    Thanks
    Vijaya
    data    v_bin_filesize           TYPE i,
               st_job_output_info       TYPE ssfcrescl,
                bin_pdfx TYPE xstring,
    data  : it_docs     TYPE STANDARD TABLE OF docs,
              it_lines    TYPE STANDARD TABLE OF tline.
    data : lv_file_name type string.
              lv_file_name = 'PDFSMARTFORM.PDF'.
    CALL FUNCTION 'CONVERT_OTF_2_PDF'
    * EXPORTING
    *   USE_OTF_MC_CMD               = 'X'
    *   ARCHIVE_INDEX                =
         IMPORTING
           bin_filesize           = v_bin_filesize
         TABLES
           otf                    = st_job_output_info-otfdata
           doctab_archive         = it_docs
           lines                  = it_lines
         EXCEPTIONS
           err_conv_not_possible  = 1
           err_otf_mc_noendmarker = 2
           OTHERS                 = 3.
       cl_wd_runtime_services=>attach_file_to_response(
       i_filename = lv_file_name
       i_content = bin_pdfx
       i_mime_type = 'application/pdf'
       i_in_new_window = abap_false
       i_inplace       = abap_false ).

    Hi,
    I think the binary file conversion was not done properly( you haven't filled bin_pdfx, its the otf_data ). OR, Use CONVERT_OTF FM and pass format as PDF. Check this document for reference: Opening a Smartform in Web Dynpro ABAP
    Hope this helps u,
    Regards,
    Kiran

  • Smartforms :Multiple forms 2 be printed in single print prog,PDF too

    Hello Smartforms Gurus
    I need to print 4 forms (Export Invoice, packing List, Enclosure to Packing list, Case marking) within a single print prog .
    User will execute this prog and it should print all the 4 forms and then by clicking on a button(Archive) there
    it should download a single pdf file containing all 4 forms .
    At present my following program directly download this form(only Export Invoice) to a pdf file but doesnt leave options to go to Print or Print Preview .
    Plz look into my code , and  suggest.
    Thnx
    Moni
    *Printing of Export Invoice, Packing List,Enclosure to Packing List &  *
    *Case Marking in one SMART FORMS Layout                                *
    REPORT ZSD_REP_MULTI_PRINT.
    TABLES :
        vbak,
        vbap,
        vbpa,
        vbfa,
        VBRK,
        VBRP,
        LIKP,
        LIPS,
        KONV,
        objk,
        tvko,
        ser01,
        sadr,
        equi,
        makt,
        mast,
        t005t,
        kna1,
        t001w,
        T001,
        ADRC,
        sscrfields,
        zpp_plcmi,      "Packing list history For Conf: Item data
        zplh,           "PACKING LIST HISTORY : HEADER DATA
        zpli.           "PACKING LIST HISTORY : ITEM DATA
    DATA: FM_NAME  TYPE RS38L_FNAM,
          P_E_DEVTYPE TYPE RSPOPTYPE,
          P_JOB_OUTPUT_INFO TYPE SSFCRESCL OCCURS 2000 WITH HEADER LINE,
          P_OUTPUT_OPTIONS TYPE SSFCOMPOP OCCURS 0 WITH HEADER LINE,
          P_CONTROL_PARAMETERS TYPE SSFCTRLOP OCCURS 0 WITH HEADER LINE ,
          P_DOC  LIKE DOCS OCCURS 2000 WITH HEADER LINE,
          P_LINES LIKE TLINE OCCURS 200,
          P_BIN_FILESIZE TYPE I,
          P_LANGUAGE TYPE SFLANGU,
          P_BIN_FILE TYPE XSTRING,
          <i>OK_CODE LIKE SY-UCOMM.</i>
    DATA: T_ITEM   TYPE  ZSD_TABL_LITEM,
          WA_ITEM  TYPE  ZSD_STRUCT_LITEM,
          T_ADRS   LIKE  ZSD_STRUCT_ADRS  OCCURS 0 WITH HEADER LINE,
          MSLINES  LIKE  TLINE OCCURS 1 WITH HEADER LINE,
          TIDNO    LIKE STXL-TDID,
          TNAME    LIKE STXL-TDNAME,
          TOBJT    LIKE STXL-TDOBJECT,
          SSORD    LIKE VBAK-VBELN,
          TOT      LIKE VBAK-NETWR,
          WORD     LIKE SPELL.
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    PARAMETERS: P_DELNO LIKE  LIKP-VBELN OBLIGATORY,
                P_INVNO LIKE  VBRK-VBELN OBLIGATORY,
                P_DATE  LIKE  SY-DATUM.
    SELECTION-SCREEN END   OF BLOCK blk1.
    AT SELECTION-SCREEN.
      CLEAR T_ADRS.
      REFRESH T_ITEM.
      T_ADRS-INVNO = P_INVNO.
      T_ADRS-INVDAT = P_DATE.
      SELECT SINGLE VBELV INTO  VBFA-VBELV
                             FROM  VBFA
                             WHERE VBELN = P_DELNO
                               AND VBTYP_N = 'J'  .
      SSORD = VBFA-VBELV.
    *Exporter's  Address
      SELECT SINGLE BUKRS_VF INTO  VBAK-BUKRS_VF
                             FROM  VBAK
                             WHERE VBELN = VBFA-VBELV.
      SELECT SINGLE   ADRNR
                      INTO T001-ADRNR
                      FROM T001
                      WHERE BUKRS = VBAK-BUKRS_VF.
      SELECT SINGLE NAME1 STREET CITY1 POST_CODE1 COUNTRY
             INTO (T_ADRS-NAME1,T_ADRS-STREET,T_ADRS-CITY1,
                   T_ADRS-POST_CODE1, ADRC-COUNTRY)
             FROM  ADRC
             WHERE ADDRNUMBER EQ T001-ADRNR.
      SELECT SINGLE LANDX
                    INTO T_ADRS-COUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
    **BUYERS NO & DATE
    SELECT SINGLE BSTNK BSTDK INTO  (T_ADRS-BSTNK,T_ADRS-BSTDK)
                         FROM  VBAK
                         WHERE VBELN = VBFA-VBELV.
    *Consignee Address & Buyer Other Than Consignee
      SELECT SINGLE KUNNR KUNAG INTO (LIKP-KUNNR, LIKP-KUNAG)
                                FROM LIKP WHERE VBELN = P_DELNO.
      IF LIKP-KUNNR = LIKP-KUNAG.
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                  INTO (T_ADRS-CNAME1, T_ADRS-CNAME2, T_ADRS-CSTREET,
                        T_ADRS-CCITY,  T_ADRS-CPCODE, T_ADRS-CREGIO,
                        T_ADRS-CTELF1, KNA1-ADRNR)
                  FROM  KNA1
                  WHERE KUNNR = LIKP-KUNNR.
        SELECT SINGLE COUNTRY INTO  ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-CCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
        T_ADRS-ONAME1   =  T_ADRS-CNAME1 .
        T_ADRS-ONAME2   =  T_ADRS-CNAME2 .
        T_ADRS-OSTREET  =  T_ADRS-CSTREET .
        T_ADRS-OCITY    =  T_ADRS-CCITY.
        T_ADRS-OPCODE   =  T_ADRS-CPCODE .
        T_ADRS-OREGIO   =  T_ADRS-CREGIO.
        T_ADRS-OTELF1   =  T_ADRS-CTELF1 .
        T_ADRS-OCOUNTRY =  T_ADRS-CCOUNTRY.
      ELSE.
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                  INTO (T_ADRS-CNAME1, T_ADRS-CNAME2, T_ADRS-CSTREET,
                        T_ADRS-CCITY,  T_ADRS-CPCODE, T_ADRS-CREGIO,
                        T_ADRS-CTELF1, KNA1-ADRNR)
                  FROM  KNA1
                  WHERE KUNNR = LIKP-KUNNR.
        SELECT SINGLE COUNTRY INTO ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-CCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
    *Buyer Other than Consignee
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                   INTO (T_ADRS-ONAME1, T_ADRS-ONAME2, T_ADRS-OSTREET,
                         T_ADRS-OCITY,  T_ADRS-OPCODE, T_ADRS-OREGIO,
                         T_ADRS-OTELF1, KNA1-ADRNR)
                   FROM  KNA1
                   WHERE KUNNR = LIKP-KUNAG.
        SELECT SINGLE COUNTRY INTO  ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-OCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
      ENDIF.
    *Other's Ref
      TIDNO = 'Z071'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-OREF = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Buyer's Order No  Ref
      TIDNO = 'Z023'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-BUYER = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Exporter Ref
      TIDNO = 'Z072'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-XPREF = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Pre-Carraige By
      TIDNO = 'Z074'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PCRG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Place Of reciept by Pre-Carraige
      TIDNO = 'Z073'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PLPCRG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Vessel/Flight No
      TIDNO = 'Z075'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-VFNO = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Port Of Loading
      TIDNO = 'Z077'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PLOAD = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Port Of Discharge
      TIDNO = 'Z076'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PDISG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Final Destination
      TIDNO = 'Z070'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-FDEST = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Terms Of Delivery & Payment
      TIDNO = 'Z080'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-TERMS = mslines-tdline(50).
        EXIT.
      ENDLOOP.
    APPEND T_ADRS.
    *BODY SECTION FOR LINE ITEMS
      SELECT POSNR KWMENG VRKME WAERK
             INTO  (VBAP-POSNR, VBAP-KWMENG, VBAP-VRKME, VBAP-WAERK)
             FROM  VBAP
             WHERE VBELN = SSORD.
    *Mark/Case No
        TIDNO = '0002'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-MARKNO = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Packing Type
        TIDNO = '0003'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-PACKTYP = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Goods Description
        TIDNO = '0001'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-PACKTYP = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Goods Quantity
        WA_ITEM-QTY = VBAP-KWMENG.
        WA_ITEM-VRKME = VBAP-VRKME.
    *Goods Rate
        SELECT SINGLE KNUMV INTO VBAK-KNUMV FROM VBAK WHERE VBELN = SSORD.
        SELECT SINGLE KBETR WAERS
                      INTO  (WA_ITEM-RATE, WA_ITEM-WAERS)
                      FROM  KONV
                      WHERE KNUMV = VBAK-KNUMV
                        AND KPOSN = VBAP-POSNR
                        AND KSCHL = 'PR00'.
    *Goods Amount
        WA_ITEM-AMOUNT = WA_ITEM-QTY * WA_ITEM-RATE.
        WA_ITEM-WAERK = VBAP-WAERK.
        TOT = TOT + WA_ITEM-AMOUNT.
        APPEND WA_ITEM TO T_ITEM.
      ENDSELECT.
      T_ADRS-TOT = TOT.
      CALL FUNCTION 'SPELL_AMOUNT'
       EXPORTING
         AMOUNT          = TOT
         CURRENCY        = VBAP-WAERK
      FILLER          = ' '
         LANGUAGE        = SY-LANGU
       IMPORTING
         IN_WORDS        = WORD
       EXCEPTIONS
         NOT_FOUND       = 1
         TOO_LARGE       = 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.
      T_ADRS-TOT_WORDS = WORD-WORD.
      APPEND T_ADRS.
    START-OF-SELECTION.
    <b>  SET PF-STATUS '1000'.</b>
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          FORMNAME                 = 'Z_SD_REP_MULTI_PRINT'
      VARIANT                  = ' '
      DIRECT_CALL              = ' '
       IMPORTING
          FM_NAME                  = 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.
      P_LANGUAGE = 'EN'.
      CALL   FUNCTION 'SSF_GET_DEVICE_TYPE'
        EXPORTING
          I_LANGUAGE    = P_LANGUAGE
          I_APPLICATION = 'SAPDEFAULT'
        IMPORTING
          E_DEVTYPE     = P_E_DEVTYPE.
      P_OUTPUT_OPTIONS-XSFCMODE = 'X'.
      P_OUTPUT_OPTIONS-XSF = SPACE.
      P_OUTPUT_OPTIONS-XDFCMODE = 'X'.
      P_OUTPUT_OPTIONS-XDF = SPACE.
      P_OUTPUT_OPTIONS-TDPRINTER = P_E_DEVTYPE.
      P_OUTPUT_OPTIONS-TDDEST = 'LOCL'.
      APPEND P_OUTPUT_OPTIONS.
      P_CONTROL_PARAMETERS-NO_DIALOG = 'X'.
      P_CONTROL_PARAMETERS-GETOTF = 'X'.
      P_CONTROL_PARAMETERS-NO_CLOSE = SPACE.
      APPEND  P_CONTROL_PARAMETERS.
      CALL FUNCTION FM_NAME
       EXPORTING
      ARCHIVE_INDEX              =
      ARCHIVE_INDEX_TAB          =
      ARCHIVE_PARAMETERS         =
        CONTROL_PARAMETERS         = P_CONTROL_PARAMETERS
      MAIL_APPL_OBJ              =
      MAIL_RECIPIENT             =
      MAIL_SENDER                =
        OUTPUT_OPTIONS             = P_OUTPUT_OPTIONS
        USER_SETTINGS              = 'X'
      IMPORTING
      DOCUMENT_OUTPUT_INFO       =
        JOB_OUTPUT_INFO            = P_JOB_OUTPUT_INFO
      JOB_OUTPUT_OPTIONS         =
      TABLES
        T_ADRS                     = T_ADRS
        T_ITEM                     = T_ITEM
    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.
    <b>AT USER-COMMAND.
    OK_CODE = SY-UCOMM.
    CASE OK_CODE.
    WHEN 'ARCHIVE'.</b>
    CALL FUNCTION 'CONVERT_OTF_2_PDF'
      EXPORTING
        USE_OTF_MC_CMD               = 'X'
      ARCHIVE_INDEX                =
    IMPORTING
        BIN_FILESIZE                 = P_BIN_FILESIZE
    TABLES
        OTF                          = P_JOB_OUTPUT_INFO-OTFDATA
        DOCTAB_ARCHIVE               = P_DOC
        LINES                        = P_LINES
    EXCEPTIONS
       ERR_CONV_NOT_POSSIBLE        = 1
       ERR_OTF_MC_NOENDMARKER       = 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.
    CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
       BIN_FILESIZE                  = P_BIN_FILESIZE
      CODEPAGE                      = ' '
       FILENAME                      = 'C:\sd.pdf'
       FILETYPE                      = 'BIN'
       MODE                          = ''
      WK1_N_FORMAT                  = ' '
      WK1_N_SIZE                    = ' '
      WK1_T_FORMAT                  = ' '
      WK1_T_SIZE                    = ' '
      COL_SELECT                    = ' '
      COL_SELECTMASK                = ' '
      NO_AUTH_CHECK                 = ' '
    IMPORTING
        FILELENGTH                    = P_BIN_FILESIZE
      TABLES
        DATA_TAB                      = P_LINES
      FIELDNAMES                    =
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_WRITE_ERROR              = 2
      INVALID_FILESIZE              = 3
      INVALID_TYPE                  = 4
      NO_BATCH                      = 5
      UNKNOWN_ERROR                 = 6
      INVALID_TABLE_WIDTH           = 7
      GUI_REFUSE_FILETRANSFER       = 8
      CUSTOMER_ERROR                = 9
      NO_AUTHORITY                  = 10
      OTHERS                        = 11
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    <b>ENDCASE.</b>
    *&      Form  FINDTEXT
          text
    FORM FINDTEXT.
      REFRESH mslines.
      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          client                  = sy-mandt
          id                      = tidno
          language                = sy-langu
          name                    = tname
          object                  = tobjt
        TABLES
          lines                   = mslines
        EXCEPTIONS
          id                      = 1
          language                = 2
          name                    = 3
          not_found               = 4
          object                  = 5
          reference_check         = 6
          wrong_access_to_archive = 7
          OTHERS                  = 8.
      DELETE mslines WHERE tdline IS INITIAL.
    ENDFORM.                    "FINDTEXT
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman

    Hello,
    You cannot get continuous page numbers, But you will be able to merge all the 4 form outputs into one PDF file.
    In yesterdays example you called one form, then converted OTF data into PDF data and downloaded on Presentation server.
    In this case, after you call first form, you get the OTF data. Push this OTF data into a MAIN Internal table ( Same type as of OTF dada Int TAB ). Then Call second form. Then you get second set of OTF data. This second set of OTF data may be appended to the MAIN Internal table and the follw same procedure for the rest of the forms. In the end you will have one Internal table which holds OTF data of all the 4 forms.
    Now convert the OTD data to PDF Data by the FM and Download one file which has output of all the 4 forms.
    I hope my explanation is quite clear.
    Regarding your second question, the Archive and Print and archive buttons on the PRINT PREVIEW screen works for Spool archiving which is to be enabled by customizing. If you wish to archive the output as PDF, you may have to do it in program.
    I am NOT accessible on YAHOO.
    Plz let me know if you are stuck.
    Regards, Murugesh AS

  • Smartforms o/p 2 PDF conversion problem , plz see my code

    Hi Smartform Guys
    1)I m getting error <b>"CONVT_NO_NUMBER "</b>  in converting my Smartform output to PDF.
    *Printing of Export Invoice, Packing List,Enclosure to Packing List &  *
    *Case Marking in one SMART FORMS Layout                                *
    REPORT ZSD_REP_MULTI_PRINT.
    TABLES :
        vbak,
        vbap,
        vbpa,
        vbfa,
        VBRK,
        VBRP,
        LIKP,
        LIPS,
        KONV,
        objk,
        tvko,
        ser01,
        sadr,
        equi,
        makt,
        mast,
        t005t,
        kna1,
        t001w,
        T001,
        ADRC,
        sscrfields,
        zpp_plcmi,      "Packing list history For Conf: Item data
        zplh,           "PACKING LIST HISTORY : HEADER DATA
        zpli.           "PACKING LIST HISTORY : ITEM DATA
    DATA: FM_NAME  TYPE RS38L_FNAM,
          P_E_DEVTYPE TYPE RSPOPTYPE,
          P_JOB_OUTPUT_INFO TYPE SSFCRESCL OCCURS 2000 WITH HEADER LINE,
          P_OUTPUT_OPTIONS TYPE SSFCOMPOP OCCURS 0 WITH HEADER LINE,
          P_CONTROL_PARAMETERS TYPE SSFCTRLOP OCCURS 0 WITH HEADER LINE ,
          P_DOC  LIKE DOCS OCCURS 2000 WITH HEADER LINE,
          P_LINES LIKE TLINE OCCURS 200,
          P_BIN_FILESIZE TYPE I,
          P_LANGUAGE TYPE SFLANGU,
          P_BIN_FILE TYPE XSTRING.
    DATA: T_ITEM   TYPE  ZSD_TABL_LITEM,
          WA_ITEM  TYPE  ZSD_STRUCT_LITEM,
          T_ADRS   LIKE  ZSD_STRUCT_ADRS  OCCURS 0 WITH HEADER LINE,
          MSLINES  LIKE  TLINE OCCURS 1 WITH HEADER LINE,
          TIDNO    LIKE STXL-TDID,
          TNAME    LIKE STXL-TDNAME,
          TOBJT    LIKE STXL-TDOBJECT,
          SSORD    LIKE VBAK-VBELN,
          TOT      LIKE VBAK-NETWR,
          WORD     LIKE SPELL.
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    PARAMETERS: P_DELNO LIKE  LIKP-VBELN OBLIGATORY,
                P_INVNO LIKE  VBRK-VBELN OBLIGATORY,
                P_DATE  LIKE  SY-DATUM.
    SELECTION-SCREEN END   OF BLOCK blk1.
    AT SELECTION-SCREEN.
      CLEAR T_ADRS.
      REFRESH T_ITEM.
      T_ADRS-INVNO = P_INVNO.
      T_ADRS-INVDAT = P_DATE.
      SELECT SINGLE VBELV INTO  VBFA-VBELV
                             FROM  VBFA
                             WHERE VBELN = P_DELNO
                               AND VBTYP_N = 'J'  .
      SSORD = VBFA-VBELV.
    *Exporter's  Address
      SELECT SINGLE BUKRS_VF INTO  VBAK-BUKRS_VF
                             FROM  VBAK
                             WHERE VBELN = VBFA-VBELV.
      SELECT SINGLE   ADRNR
                      INTO T001-ADRNR
                      FROM T001
                      WHERE BUKRS = VBAK-BUKRS_VF.
      SELECT SINGLE NAME1 STREET CITY1 POST_CODE1 COUNTRY
             INTO (T_ADRS-NAME1,T_ADRS-STREET,T_ADRS-CITY1,
                   T_ADRS-POST_CODE1, ADRC-COUNTRY)
             FROM  ADRC
             WHERE ADDRNUMBER EQ T001-ADRNR.
      SELECT SINGLE LANDX
                    INTO T_ADRS-COUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
    **BUYERS NO & DATE
    SELECT SINGLE BSTNK BSTDK INTO  (T_ADRS-BSTNK,T_ADRS-BSTDK)
                         FROM  VBAK
                         WHERE VBELN = VBFA-VBELV.
    *Consignee Address & Buyer Other Than Consignee
      SELECT SINGLE KUNNR KUNAG INTO (LIKP-KUNNR, LIKP-KUNAG)
                                FROM LIKP WHERE VBELN = P_DELNO.
      IF LIKP-KUNNR = LIKP-KUNAG.
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                  INTO (T_ADRS-CNAME1, T_ADRS-CNAME2, T_ADRS-CSTREET,
                        T_ADRS-CCITY,  T_ADRS-CPCODE, T_ADRS-CREGIO,
                        T_ADRS-CTELF1, KNA1-ADRNR)
                  FROM  KNA1
                  WHERE KUNNR = LIKP-KUNNR.
        SELECT SINGLE COUNTRY INTO  ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-CCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
        T_ADRS-ONAME1   =  T_ADRS-CNAME1 .
        T_ADRS-ONAME2   =  T_ADRS-CNAME2 .
        T_ADRS-OSTREET  =  T_ADRS-CSTREET .
        T_ADRS-OCITY    =  T_ADRS-CCITY.
        T_ADRS-OPCODE   =  T_ADRS-CPCODE .
        T_ADRS-OREGIO   =  T_ADRS-CREGIO.
        T_ADRS-OTELF1   =  T_ADRS-CTELF1 .
        T_ADRS-OCOUNTRY =  T_ADRS-CCOUNTRY.
      ELSE.
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                  INTO (T_ADRS-CNAME1, T_ADRS-CNAME2, T_ADRS-CSTREET,
                        T_ADRS-CCITY,  T_ADRS-CPCODE, T_ADRS-CREGIO,
                        T_ADRS-CTELF1, KNA1-ADRNR)
                  FROM  KNA1
                  WHERE KUNNR = LIKP-KUNNR.
        SELECT SINGLE COUNTRY INTO ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-CCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
    *Buyer Other than Consignee
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                   INTO (T_ADRS-ONAME1, T_ADRS-ONAME2, T_ADRS-OSTREET,
                         T_ADRS-OCITY,  T_ADRS-OPCODE, T_ADRS-OREGIO,
                         T_ADRS-OTELF1, KNA1-ADRNR)
                   FROM  KNA1
                   WHERE KUNNR = LIKP-KUNAG.
        SELECT SINGLE COUNTRY INTO  ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-OCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
      ENDIF.
    *Other's Ref
      TIDNO = 'Z071'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-OREF = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Buyer's Order No  Ref
      TIDNO = 'Z023'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-BUYER = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Exporter Ref
      TIDNO = 'Z072'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-XPREF = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Pre-Carraige By
      TIDNO = 'Z074'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PCRG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Place Of reciept by Pre-Carraige
      TIDNO = 'Z073'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PLPCRG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Vessel/Flight No
      TIDNO = 'Z075'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-VFNO = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Port Of Loading
      TIDNO = 'Z077'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PLOAD = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Port Of Discharge
      TIDNO = 'Z076'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PDISG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Final Destination
      TIDNO = 'Z070'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-FDEST = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Terms Of Delivery & Payment
      TIDNO = 'Z080'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-TERMS = mslines-tdline(50).
        EXIT.
      ENDLOOP.
    APPEND T_ADRS.
    *BODY SECTION FOR LINE ITEMS
      SELECT POSNR KWMENG VRKME WAERK
             INTO  (VBAP-POSNR, VBAP-KWMENG, VBAP-VRKME, VBAP-WAERK)
             FROM  VBAP
             WHERE VBELN = SSORD.
    *Mark/Case No
        TIDNO = '0002'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-MARKNO = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Packing Type
        TIDNO = '0003'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-PACKTYP = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Goods Description
        TIDNO = '0001'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-PACKTYP = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Goods Quantity
        WA_ITEM-QTY = VBAP-KWMENG.
        WA_ITEM-VRKME = VBAP-VRKME.
    *Goods Rate
        SELECT SINGLE KNUMV INTO VBAK-KNUMV FROM VBAK WHERE VBELN = SSORD.
        SELECT SINGLE KBETR WAERS
                      INTO  (WA_ITEM-RATE, WA_ITEM-WAERS)
                      FROM  KONV
                      WHERE KNUMV = VBAK-KNUMV
                        AND KPOSN = VBAP-POSNR
                        AND KSCHL = 'PR00'.
    *Goods Amount
        WA_ITEM-AMOUNT = WA_ITEM-QTY * WA_ITEM-RATE.
        WA_ITEM-WAERK = VBAP-WAERK.
        TOT = TOT + WA_ITEM-AMOUNT.
        APPEND WA_ITEM TO T_ITEM.
      ENDSELECT.
      T_ADRS-TOT = TOT.
      CALL FUNCTION 'SPELL_AMOUNT'
       EXPORTING
         AMOUNT          = TOT
         CURRENCY        = VBAP-WAERK
      FILLER          = ' '
         LANGUAGE        = SY-LANGU
       IMPORTING
         IN_WORDS        = WORD
       EXCEPTIONS
         NOT_FOUND       = 1
         TOO_LARGE       = 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.
    TEXT = WORD-WORD.
    CONCATENATE TEXT
                 'DECIMAL'
                  WORD-WORD
         INTO     TEXT
         SEPARATED BY ' '.
      T_ADRS-TOT_WORDS = WORD-WORD.
      APPEND T_ADRS.
    START-OF-SELECTION.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          FORMNAME                 = 'Z_SD_REP_MULTI_PRINT'
      VARIANT                  = ' '
      DIRECT_CALL              = ' '
       IMPORTING
          FM_NAME                  = 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.
      P_LANGUAGE = 'EN'.
      CALL   FUNCTION 'SSF_GET_DEVICE_TYPE'
        EXPORTING
          I_LANGUAGE    = P_LANGUAGE
          I_APPLICATION = 'SAPDEFAULT'
        IMPORTING
          E_DEVTYPE     = P_E_DEVTYPE.
      P_OUTPUT_OPTIONS-XSFCMODE = 'X'.
      P_OUTPUT_OPTIONS-XSF = SPACE.
      P_OUTPUT_OPTIONS-XDFCMODE = 'X'.
      P_OUTPUT_OPTIONS-XDF = SPACE.
      P_OUTPUT_OPTIONS-TDPRINTER = P_E_DEVTYPE.
      P_OUTPUT_OPTIONS-TDDEST = 'LOCL'.
      APPEND P_OUTPUT_OPTIONS.
      P_CONTROL_PARAMETERS-NO_DIALOG = 'X'.
      P_CONTROL_PARAMETERS-GETOTF = 'X'.
      P_CONTROL_PARAMETERS-NO_CLOSE = SPACE.
      APPEND  P_CONTROL_PARAMETERS.
      CALL FUNCTION FM_NAME
       EXPORTING
      ARCHIVE_INDEX              =
      ARCHIVE_INDEX_TAB          =
      ARCHIVE_PARAMETERS         =
        CONTROL_PARAMETERS         = P_CONTROL_PARAMETERS
      MAIL_APPL_OBJ              =
      MAIL_RECIPIENT             =
      MAIL_SENDER                =
        OUTPUT_OPTIONS             = P_OUTPUT_OPTIONS
        USER_SETTINGS              = 'X'
      IMPORTING
      DOCUMENT_OUTPUT_INFO       =
        JOB_OUTPUT_INFO            = P_JOB_OUTPUT_INFO
      JOB_OUTPUT_OPTIONS         =
      TABLES
        T_ADRS                     = T_ADRS
        T_ITEM                     = T_ITEM
    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.
    P_OTF[] = P_JOB_OUTPUT_INFO-OTFDATA.
    CALL FUNCTION 'CONVERT_OTF_2_PDF'
      EXPORTING
        USE_OTF_MC_CMD               = 'X'
      ARCHIVE_INDEX                =
    IMPORTING
       BIN_FILESIZE                 = P_BIN_FILESIZE
      TABLES
        OTF                          = P_JOB_OUTPUT_INFO-OTFDATA
        DOCTAB_ARCHIVE               = P_DOC
        LINES                        = P_LINES
    EXCEPTIONS
       ERR_CONV_NOT_POSSIBLE        = 1
       ERR_OTF_MC_NOENDMARKER       = 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.
    BREAK-POINT.
    CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
       BIN_FILESIZE                  = P_BIN_FILESIZE
      CODEPAGE                      = ' '
       FILENAME                      = 'C:\TEMP.PDF'
       FILETYPE                      = 'BIN'
       MODE                          = ''
      WK1_N_FORMAT                  = ' '
      WK1_N_SIZE                    = ' '
      WK1_T_FORMAT                  = ' '
      WK1_T_SIZE                    = ' '
      COL_SELECT                    = ' '
      COL_SELECTMASK                = ' '
      NO_AUTH_CHECK                 = ' '
    IMPORTING
        FILELENGTH                    = P_BIN_FILESIZE
      TABLES
        DATA_TAB                      = P_LINES
      FIELDNAMES                    =
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_WRITE_ERROR              = 2
      INVALID_FILESIZE              = 3
      INVALID_TYPE                  = 4
      NO_BATCH                      = 5
      UNKNOWN_ERROR                 = 6
      INVALID_TABLE_WIDTH           = 7
      GUI_REFUSE_FILETRANSFER       = 8
      CUSTOMER_ERROR                = 9
      NO_AUTHORITY                  = 10
      OTHERS                        = 11
    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 'GUI_DOWNLOAD'
       EXPORTING
        BIN_FILESIZE = P_BIN_FILESIZE
        FILENAME = 'C:\Documents and Settings\pvipin\Desktop\sd.pdf'
        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 = P_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.
    *&      Form  FINDTEXT
          text
    FORM FINDTEXT.
      REFRESH mslines.
      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          client                  = sy-mandt
          id                      = tidno
          language                = sy-langu
          name                    = tname
          object                  = tobjt
        TABLES
          lines                   = mslines
        EXCEPTIONS
          id                      = 1
          language                = 2
          name                    = 3
          not_found               = 4
          object                  = 5
          reference_check         = 6
          wrong_access_to_archive = 7
          OTHERS                  = 8.
      DELETE mslines WHERE tdline IS INITIAL.
    ENDFORM.                    "FINDTEXTThnx in Advnce
    Moni
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman

    Hello,
    I think the following statement is causing problem.
    P_OTF[] = P_JOB_OUTPUT_INFO-OTFDATA.
    either give:
    P_OTF[] = P_JOB_OUTPUT_INFO-OTFDATA[].
    or
    directly pass P_JOB_OUTPUT_INFO-OTFDATA into FM parameter.
    This is because you are filling only header into P_OTF and NOT the Contents of internal table by the statement
    P_OTF[] = P_JOB_OUTPUT_INFO-OTFDATA.
    let me know whether it works.
    Regards, Murugesh AS
    have alook at this thread:
    Re: SX_OBJECT_CONVERT_OTF_PDF
    this may help you
    Message was edited by: Murugesh Arcot
    Message was edited by: Murugesh Arcot

Maybe you are looking for

  • IDOC Scenario: Filling ED40 in XI to SAP automatically or not

    Hello, I was trying to let XI fill the ED40 data of my IDOC and set the flag in receiver channel, that he should not take these information from payload. It seems he took wrong data. So from where he take these information? I disabled the ED40 segmen

  • Discrete production process after creating sales order with raw materials

    Dear all, I need your support on a specific solution related to discrete production process.                             After creating a sales order where the materials are marked as raw materials (ROH), with reference to the sales order the product

  • Updating xy graph with the last point different

    I want to display a simulation of the path of a rolling ball as updating xy graph. The actual last point of the plot should be different from the older points, I imagine e.g.a thick circle. The coordinates of the points I hold in two arrays, so I nee

  • Error msge when undocking shuffle

    When I attempt to disconnect one of my shuffles from iTunes I get an error msge ... "SHUFFLE CANNOT EJECTED BECAUSE IT CONTAINS FILES THAT ARE IN USE BY ANOTHER APPLICATION". Can someone tell me what other program could be using the shuffle? We have

  • Default account setting for this user is incomplete

    Hi, I have created a user and gave rights(connect and resource) to that user. i have logged in and when i trying to open form module im getting a message. default account setting for this user is incomplete. Contact system administrator How to resolv