Payslip to be sent as mail in PDF Format

Dear All,
           Please help me in solvong this
           I need to send Payslip to Users ( Employees) in mail as a PDF file in 4.7 version.
Thanks in Advance.
Regards,

REPORT  yacpr0013                               .
PARAMETERS: p_rec TYPE somlreci1 DEFAULT '[email protected]' LOWER CASE OBLIGATORY,
            p_spool LIKE tsp01-rqident OBLIGATORY.
CONSTANTS: c_true TYPE boolean_flg VALUE 'X'.
TYPES: ty_tab_pdf TYPE tline OCCURS 0.
Type for binary attachment table.
TYPES: ty_tab_objbin TYPE solisti1 OCCURS 0.
DATA: i_objbin TYPE ty_tab_objbin.
START-OF-SELECTION.
  PERFORM f_convert_to_pdf CHANGING i_objbin.
  PERFORM f_send_email USING p_rec i_objbin.
*&      @FORMS
*&      Form  send_email
Subroutine to be able to send a simple email.  Check transaction
SOST for output.  If it makes it to SOST, it's then just a matter
of ensuring BASIS has done the appropriate config.
FORM f_send_email USING pv_rec TYPE somlreci1
                      pi_objbin TYPE ty_tab_objbin.
  DATA: li_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE.
  DATA: li_objtxt    LIKE solisti1 OCCURS   0 WITH HEADER LINE.
  DATA: li_objpack   LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE.
  DATA: ls_doc_chng  LIKE sodocchgi1.
  DATA: li_objhead   LIKE solisti1 OCCURS   0 WITH HEADER LINE.
  DATA: lv_tab_lines LIKE sy-tabix.
Creation of the document to be sent
File Name
  ls_doc_chng-obj_name = 'SENDFILE'.
Mail Subject
  ls_doc_chng-obj_descr = 'Email header'(em1).
Completing the recipient list
  li_reclist-receiver = pv_rec.
  li_reclist-rec_type = 'U'.
  APPEND li_reclist.
Mail Contents
  li_objtxt = 'line 1 of the email body'(bd1).
  APPEND li_objtxt.
  CLEAR li_objtxt.     " put in a blank line
  APPEND li_objtxt.
  li_objtxt = 'line 2 of the email body'(bd2).
  APPEND li_objtxt.
  li_objtxt = 'line 3 of the email body'(bd3).
  APPEND li_objtxt.
Calculate email size in bytes
  DESCRIBE TABLE li_objtxt LINES lv_tab_lines.
  READ TABLE li_objtxt INDEX lv_tab_lines.
  ls_doc_chng-doc_size = ( lv_tab_lines - 1 ) * 255 + STRLEN( li_objtxt ).
Creation of the entry for the compressed document
for the email text
  CLEAR li_objpack-transf_bin.
  li_objpack-head_start = 1.
  li_objpack-head_num = 0.
  li_objpack-body_start = 1.
  li_objpack-body_num = lv_tab_lines.
  li_objpack-doc_type = 'RAW'.
  APPEND li_objpack.
Creation of the document attachment
(Assume that the data in OBJBIN is in BMP format)
  DESCRIBE TABLE pi_objbin LINES lv_tab_lines.
  li_objhead = 'Save as name.PDF'(em5).
  APPEND li_objhead.
  CLEAR li_objpack.
**/ Creation of the entry for the compressed/attached document
  li_objpack-transf_bin = c_true.
  li_objpack-head_start = 1.
  li_objpack-head_num = 1.
  li_objpack-body_start = 1.
  li_objpack-body_num = lv_tab_lines.
  li_objpack-doc_type = 'PDF'.
  li_objpack-obj_name = 'Possibly hover name'.
  li_objpack-obj_descr = 'Real Name'(em6).
  li_objpack-doc_size = lv_tab_lines * 255.
  APPEND li_objpack. "/ .
Sending the document
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' "/ .
    EXPORTING
      document_data              = ls_doc_chng
      put_in_outbox              = 'X'
    TABLES
      packing_list               = li_objpack
      object_header              = li_objhead
      contents_bin               = pi_objbin
      contents_txt               = li_objtxt
      receivers                  = li_reclist
    EXCEPTIONS
      too_many_receivers         = 1
      document_not_sent          = 2
      operation_no_authorization = 4
      OTHERS                     = 99.
  IF sy-subrc <> 0.
    WRITE: / 'unsuccessful', sy-subrc.
  ELSE.
    WRITE:  / 'successful'.
  ENDIF.
**/Take_note it is a requirement to do a commit work for the
email to go into transaction SOST.
  COMMIT WORK.   "/Take_note .
ENDFORM.                    "send_email
*&      Form  convert_to_pdf
Convert the spool number on the screen to a PDF
FORM f_convert_to_pdf CHANGING pi_objbin TYPE ty_tab_objbin.
  DATA: li_pdf TYPE ty_tab_pdf,
        lv_spool LIKE tsp01-rqident.
  lv_spool = p_spool.
**/ Call the standard function
  CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
      EXPORTING
        src_spoolid                    = lv_spool "/ .
        no_dialog                      = ' '
      DST_DEVICE                     =
      PDF_DESTINATION                =
     IMPORTING
       pdf_bytecount                  = numbytes
       pdf_spoolid                    = pdfspoolid
      LIST_PAGECOUNT                 =
       btc_jobname                    = jobname
       btc_jobcount                   = jobcount
      TABLES
        pdf                            = li_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.
  IF sy-subrc <> 0.
    WRITE: / 'error', sy-subrc.
  ENDIF.
**/ Convert the PDF format to the table type required for the attachment.
  CALL FUNCTION 'QCE1_CONVERT' "/ .
    TABLES
      t_source_tab         = li_pdf
      t_target_tab         = pi_objbin
    EXCEPTIONS
      convert_not_possible = 1
      OTHERS               = 2.
  IF sy-subrc <> 0.
    WRITE: / 'error', sy-subrc.
  ENDIF.
ENDFORM.                    "convert_to_pdf
Hope this helps.......

Similar Messages

  • How to configure a standard SmartForm to be sent by e-mail in PDF format

    How to configure a standard SmartForm to be sent by e-mail in PDF format
    We need to use standard SAP configuration to send e-mails (output type Medium = 5 External Send).
    Currently we were able to send the forms on OTF format, not PDF.
    Does anyone know how to automatically make the conversion from OTC to PDF without having to code anything on ABAP?

    Hello Luiz,
    actually there are only a few steps to do:
    Just call transaction SCOT and doubleclick your SMTP node. Click on the "set"-Button behind the supported address type "internet". Choose "PDF" as output format for SAPforms.
    By the way. You can also generate a PDF-File from a Spool with report RSTXPDFT4.
    I hope this will help you.
    Bye
    Frank

  • Error while sending PO output through mail in PDF format - Urgent

    Dear friends,
    Developed program to send sapscript output through mail in pdf format, the program running properly, even function module SO_NEW_DOCUMENT_ATT_SEND_API1 returning sy-subrc 0. But the external mail is not going to user lying in SAP outbox with message <b>"Wait for communications service"</b> . SCOT is properly configured, tested mails sending through SAP office.
    Find below the source code:
    REPORT  zmm_porder_gm
                NO STANDARD PAGE HEADING.
    TABLES: ekko, ekpa, t161t, t052, komv, j_1imocomp, t001, esll.
    Internal Tables
    DATA : txt LIKE tline-tdline,  "HEADER LINE
           your_ref LIKE ekko-ihrez, "your ref
           our_ref  LIKE ekko-unsez, "our ref
           mcompname  LIKE  t001-butxt,
           itemname   LIKE  ekpo-txz01,
           del_text LIKE tline-tdline, "delivery text
           mat_po_text LIKE tline-tdline. "material po text
    DATA: g_ind TYPE i.
    DATA: it_esll LIKE esll OCCURS 0 WITH HEADER LINE.
    DATA: sub_packno LIKE esll-sub_packno.
    DATA : po_flag(1) TYPE c.
    DATA : it_erev LIKE erev OCCURS 0 WITH HEADER LINE.
    DATA : nmebeln LIKE thead-tdname,
           obj LIKE thead-tdname.
    DATA : tline LIKE tline OCCURS 0 WITH HEADER LINE.  "HEADER TEXT
    DATA  : it_ekko LIKE ekko OCCURS 0 WITH HEADER LINE.
    DATA  : it_ekpo LIKE ekpo OCCURS 0 WITH HEADER LINE.
    DATA  : it_zmm_porder  LIKE zmm_porder OCCURS 0 WITH HEADER LINE.
    DATA  : it_konv        LIKE konv OCCURS 0 WITH HEADER LINE.
    DATA  : it_konv_ftr    LIKE konv OCCURS 0 WITH HEADER LINE.
    DATA  : it_konv_rate   LIKE konv OCCURS 0 WITH HEADER LINE.
    DATA  : it_komv_tax    LIKE komv OCCURS 0 WITH HEADER LINE.           " For Tax Calculation
    DATA  : it_zmm_house_bank LIKE zmm_house_bank OCCURS 0 WITH HEADER LINE.
    *DATA  : mrate TYPE konv-kbetr VALUE 0, mrate1(15).  rmoved by ganes and added following logic
    DATA  : mrate TYPE p VALUE 0 DECIMALS 2, mrate1(15).
    DATA  : mrate_gm TYPE p  DECIMALS 2.
    DATA  : BEGIN OF it_konv1 OCCURS 0,
                  knumv LIKE konv-knumv,
                  kschl LIKE konv-kschl,
    END OF it_konv1.
    DATA : BEGIN OF it_t052u OCCURS 0.
            INCLUDE STRUCTURE t052u.
    DATA : END OF it_t052u.
    DATA  : mpay_terms LIKE t052u-text1.
    DATA  : mwaers     LIKE konv-waers.
    DATA : BEGIN OF xt052 OCCURS 0.
            INCLUDE STRUCTURE t052.
    DATA : END OF xt052.
    DATA : it_t16ct LIKE t16ct OCCURS 0 WITH HEADER LINE.
    DATA : BEGIN OF ztext OCCURS 0.
            INCLUDE STRUCTURE ttext.
    DATA : END OF ztext.
    DATA  : it_t001      LIKE t001 OCCURS 0 WITH HEADER LINE.
    DATA  : mtext(15)    TYPE c.
    DATA  : it_adrc      LIKE adrc OCCURS 0 WITH HEADER LINE.
    DATA  : it_adrc_ven  LIKE adrc OCCURS 0 WITH HEADER LINE.
    DATA  : it_adrc_plt  LIKE adrc OCCURS 0 WITH HEADER LINE.
    DATA :  it_makt      LIKE makt OCCURS 0 WITH HEADER LINE.
    DATA :  it_eket      LIKE eket OCCURS 0 WITH HEADER LINE.               " Schedulling
    DATA :  it_eikp      LIKE eikp OCCURS 0 WITH HEADER LINE.               " Export
    DATA :  it_t001w     LIKE t001w OCCURS 0 WITH HEADER LINE.
    DATA  : it_t685t     LIKE t685t OCCURS 0 WITH HEADER LINE.
    DATA  : it_t618t     LIKE t618t OCCURS 0 WITH HEADER LINE.
    DATA  : it_t685t_ftr LIKE t685t OCCURS 0 WITH HEADER LINE.
    DATA  : it_lfa1  LIKE lfa1 OCCURS 0 WITH HEADER LINE.
    DATA : it_bapi_mltx_ga LIKE bapi_mltx_ga OCCURS 0 WITH HEADER LINE. "Material long text
    DATA : mfirst   TYPE i  VALUE 0,
           mpay_flag(1) TYPE c VALUE 'X',
           mwerks   LIKE    t001w-werks,
           msr      TYPE i  VALUE 0,
           l_rate   TYPE p  DECIMALS 2  VALUE 0,
           l_amt    TYPE p  DECIMALS 2  VALUE 0,
           mflag(1) TYPE c,
           mlctr    TYPE i  VALUE 0,
           mfamt    TYPE p DECIMALS 2 VALUE 0,
           mcfamt(15) TYPE c,
           mfword(100) TYPE c,
           mkschl   LIKE konv-kschl,
           mchgamt  TYPE p  DECIMALS 2 VALUE 0,
           mkbetr   TYPE p  DECIMALS 2 VALUE 0,
           mkwert   TYPE p  DECIMALS 2 VALUE 0.
    DATA : j_1iexcd     TYPE  j_1imocomp-j_1iexcd,
           j_1icstno    TYPE  j_1imocomp-j_1icstno,
           j_1ilstno    TYPE  j_1imocomp-j_1ilstno.
    DATA : mjmop_r    TYPE p DECIMALS 2 VALUE 0,
           mjmoq_r    TYPE p DECIMALS 2 VALUE 0,
           mjecs_r    TYPE p DECIMALS 2 VALUE 0,
           mjvcs_r    TYPE p DECIMALS 2 VALUE 0,
           mjvrd_r    TYPE p DECIMALS 2 VALUE 0,
           mjsep_r    TYPE p DECIMALS 2 VALUE 0.
    DATA : mjmop_a    TYPE p DECIMALS 2 VALUE 0,
           mjmoq_a    TYPE p DECIMALS 2 VALUE 0,
           mjecs_a    TYPE p DECIMALS 2 VALUE 0,
           mjvcs_a    TYPE p DECIMALS 2 VALUE 0,
           mjvrd_a    TYPE p DECIMALS 2 VALUE 0,
           mjsep_a    TYPE p DECIMALS 2 VALUE 0.
    DATA  : mtitle   LIKE  t161t-batxt.
    DATA :         no_ammend(10),request_by(50),ver_txt(100),ver_reason(100),stext(200).
    begin of Email data declarations**************
    DATA: BEGIN OF otf OCCURS 0.
            INCLUDE STRUCTURE itcoo .
    DATA: END OF otf.
    DATA: itcpo LIKE itcpo.
    DATA: itcpp LIKE itcpp.
    DATA: it_docs  TYPE STANDARD TABLE OF docs,
          v_bin_filesize          TYPE i,
          it_lines TYPE STANDARD TABLE OF tline,
          wa_lines TYPE tline.
    DATA : i_pdf LIKE tline OCCURS 1000 WITH HEADER LINE,
    v_pdf_bytecount TYPE i,
    v_pdf_spoolid TYPE tsp01-rqident,
    v_otf_pagecount TYPE i,
    v_btc_jobname TYPE tbtcjob-jobname,
    v_btc_jobcount TYPE tbtcjob-jobcount.
    DATA: objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE.
    DATA: objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE.
    DATA: objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE.
    DATA: objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE.
    DATA: reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE.
    DATA: doc_chng LIKE sodocchgi1.
    DATA: tab_lines LIKE sy-tabix.
    DATA: vafilename(100) VALUE 'po_output.pdf'.
    DATA: jobdata TYPE sxjobdata.
    DATA arc_params TYPE arc_params.
    DATA print_params TYPE pri_params.
    DATA g_send_prog TYPE syrepid VALUE 'ZVF03_TEST_PROG'.
    DATA immediate TYPE btcchar1.
    DATA: i_jobname TYPE tbtcp-jobname,
    i_jobcount TYPE tbtcp-jobcount,
    i_jobstepcount TYPE tbtcp-stepcount.
    DATA recipient_obj LIKE swotobjid.
    CONSTANTS: sx_true TYPE sx_boolean VALUE 'X'.
    TABLES: tbtcp.
    end of Email data declarations**************
    SELECTION-SCREEN : BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS   : mebeln FOR ekko-ebeln OBLIGATORY .               " 75
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 12.
    SELECTION-SCREEN COMMENT (20) text-b01.
    PARAMETERS: b1 AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN : END OF BLOCK block1.
    SELECTION-SCREEN: BEGIN OF SCREEN 200 TITLE text-001 AS WINDOW.
    PARAMETERS :  p_email TYPE ad_smtpadr.     "E-Mail Address
    SELECTION-SCREEN: END OF SCREEN 200.
    INITIALIZATION.
      SET PF-STATUS 'ZMMPORD_STAT'.
    AT SELECTION-SCREEN.
      CASE sy-ucomm.
        WHEN 'EMAIL'.
          PERFORM zemail.
        WHEN '&IC1'.
          PERFORM load_data.
          PERFORM process.
          IF NOT p_email IS INITIAL.
            PERFORM send_mail.
          ENDIF.
      ENDCASE.
    *START-OF-SELECTION.
    PERFORM load_data.
    PERFORM process.
    FORM load_data .
      DATA : gindex LIKE sy-tabix.
      SELECT * FROM t16ct INTO TABLE it_t16ct WHERE spras = 'EN'.
      SELECT * FROM ekko INTO TABLE it_ekko WHERE ebeln IN mebeln.
      IF sy-subrc EQ 0.
        SELECT * FROM erev INTO CORRESPONDING FIELDS OF TABLE it_erev FOR ALL ENTRIES IN it_ekko
        WHERE edokn = it_ekko-ebeln AND rscod <> '' .
        SORT it_erev BY edokn revno DESCENDING.
        LOOP AT it_ekko.
          IF NOT ( it_ekko-frgke EQ 'O'  OR it_ekko-frgke EQ '0' ) .
            MESSAGE e000(zsd) WITH 'Purchase Order is not Realeased'.
          ENDIF.
        ENDLOOP.
        SELECT * FROM ekpo INTO TABLE it_ekpo WHERE ebeln IN mebeln.
        IF sy-subrc EQ 0.
          SELECT * INTO TABLE it_makt
          FROM   makt
          FOR    ALL ENTRIES IN it_ekpo
          WHERE  matnr EQ it_ekpo-matnr.
          SELECT * INTO TABLE it_lfa1
          FROM   lfa1
          FOR    ALL ENTRIES IN it_ekko
          WHERE  lifnr EQ it_ekko-lifnr.
        ENDIF.
        SELECT *
          INTO TABLE it_t052u
          FROM t052u
           FOR ALL ENTRIES IN it_ekko
         WHERE zterm EQ it_ekko-zterm
          AND  spras EQ 'EN'.
        IF sy-subrc EQ 0.
          SORT it_t052u BY zterm.
        ENDIF.
        SELECT * FROM eket INTO TABLE it_eket WHERE ebeln IN mebeln.
        IF sy-subrc EQ 0.
          SORT it_eket BY ebeln ebelp.
        ENDIF.
        SELECT  *
          INTO TABLE it_eikp
          FROM eikp
           FOR ALL ENTRIES IN it_ekko
         WHERE exnum EQ it_ekko-exnum.
        IF sy-subrc EQ 0.
          SORT it_eikp BY exnum.
          SELECT  *
            INTO TABLE it_t618t
            FROM t618t
             FOR ALL ENTRIES IN it_eikp
           WHERE expvz EQ it_eikp-expvz
             AND spras EQ 'E'
             AND land1 EQ 'IN'.
          IF sy-subrc EQ 0.
            SORT it_t618t BY expvz.
          ENDIF.
        ENDIF.
        REFRESH : it_zmm_porder.
        CLEAR   : it_zmm_porder.
        SELECT * INTO TABLE it_zmm_porder
          FROM zmm_porder
         WHERE flag EQ 'L'.
        IF sy-subrc EQ 0.
          SORT it_zmm_porder BY kschl.
        ENDIF.
        SELECT * FROM konv INTO TABLE it_konv
        FOR ALL ENTRIES IN it_ekko
        WHERE knumv = it_ekko-knumv
          AND  kwert NE 0.
        LOOP AT it_konv.
          gindex = sy-tabix.
          READ TABLE it_zmm_porder WITH KEY kschl = it_konv-kschl BINARY SEARCH.
          IF sy-subrc NE 0.
            DELETE it_konv INDEX gindex.
          ENDIF.
        ENDLOOP.
        IF sy-subrc EQ 0.
          SORT it_konv BY knumv kherk kschl.
        ENDIF.
        REFRESH : it_zmm_porder.
        CLEAR   : it_zmm_porder.
        SELECT * INTO TABLE it_zmm_porder
          FROM zmm_porder
         WHERE flag EQ 'F'.
        IF sy-subrc EQ 0.
          SORT it_zmm_porder BY kschl.
        ENDIF.
       SELECT * INTO TABLE IT_KONV_FTR FROM KONV
          FOR ALL ENTRIES IN IT_EKKO
         WHERE KNUMV = IT_EKKO-KNUMV
           AND  ( KSCHL = 'ZIN1'
              OR  KSCHL = 'ZIN2'
              OR  KSCHL = 'ZINS'
              OR  KSCHL = 'ZPF1'
              OR  KSCHL = 'ZPF2'
              OR  KSCHL = 'ZPF3'
              OR  KSCHL = 'ZPKG'
              OR  KSCHL = 'ZPKF'
              OR  KSCHL = 'FRA1'
              OR  KSCHL = 'FRB1'
              OR  KSCHL = 'FRC1'
              OR  KSCHL = 'FRD1'
              OR  KSCHL = 'FRD2'
              OR  KSCHL = 'FRD3'
              OR  KSCHL = 'FRD4'
              OR  KSCHL = 'FRD5'
    *****Added one condition type below ZFBC as on 05.06.2007 :Rajiv as per mail of Sadiq via mathew sir(RTDK906646)
              OR  KSCHL = 'ZFBC' )
           AND  KWERT NE 0
           AND  KPOSN GT '000000'.
          AND ( KRECH = 'B'                       " RTDK906167
           OR  KRECH = 'A' ).
        SELECT * INTO TABLE it_konv_ftr FROM konv
           FOR ALL ENTRIES IN it_ekko
          WHERE knumv = it_ekko-knumv
            AND  kwert NE 0
            AND  kposn GT '000000'.
        LOOP AT it_konv_ftr.
          gindex = sy-tabix.
          READ TABLE it_zmm_porder WITH KEY kschl = it_konv_ftr-kschl BINARY SEARCH.
          IF sy-subrc NE 0.
            DELETE it_konv_ftr INDEX gindex.
          ENDIF.
        ENDLOOP.
        IF it_konv_ftr[] IS NOT INITIAL.
          SORT it_konv_ftr BY knumv kschl.
        ENDIF.
       SELECT  KNUMV KSCHL INTO CORRESPONDING FIELDS OF TABLE IT_KONV1 FROM KONV
       FOR ALL ENTRIES IN IT_EKKO
       WHERE KNUMV = IT_EKKO-KNUMV
           and kherk = 'D'
         AND  ( KSCHL = 'ZIN1'
            OR  KSCHL = 'ZIN2'
            OR  KSCHL = 'ZINS'
            OR  KSCHL = 'ZPF1'
            OR  KSCHL = 'ZPF2'
            OR  KSCHL = 'ZPF3'
            OR  KSCHL = 'ZPKG'
            OR  KSCHL = 'ZPKF'
            OR  KSCHL = 'FRA1'
            OR  KSCHL = 'FRB1'
            OR  KSCHL = 'FRC1'
            OR  KSCHL = 'FRD1'
            OR  KSCHL = 'FRD2'
            OR  KSCHL = 'FRD3'
            OR  KSCHL = 'FRD4'
            OR  KSCHL = 'FRD5'
    *****Added one condition type below ZFBC as on 05.06.2007 :Rajiv as per mail of Sadiq via mathew sir(RTDK906646)
            OR  KSCHL = 'ZFBC' )
         AND  KWERT NE 0.
           AND ( KRECH = 'B'                       RTDK906167
            OR  KRECH = 'A' ).
        SELECT  knumv kschl INTO CORRESPONDING FIELDS OF TABLE it_konv1 FROM konv
        FOR ALL ENTRIES IN it_ekko
        WHERE knumv = it_ekko-knumv
          AND  kwert NE 0.
        DELETE ADJACENT DUPLICATES FROM it_konv1 COMPARING knumv kschl.
        LOOP AT it_konv1.
          gindex = sy-tabix.
          READ TABLE it_zmm_porder WITH KEY kschl = it_konv1-kschl BINARY SEARCH.
          IF sy-subrc NE 0.
            DELETE it_konv1 INDEX gindex.
          ENDIF.
        ENDLOOP.
        IF sy-subrc EQ 0.
          SORT it_konv1 BY knumv kschl.
        ENDIF.
        SELECT * INTO TABLE it_t685t
        FROM   t685t
        FOR    ALL ENTRIES IN it_konv
        WHERE  kschl EQ it_konv-kschl
          AND  kappl EQ it_konv-kappl
          AND  spras EQ 'E'.
        SELECT * INTO TABLE it_t685t_ftr
        FROM   t685t
        FOR    ALL ENTRIES IN it_konv_ftr
        WHERE  kschl EQ it_konv_ftr-kschl
          AND  kappl EQ it_konv_ftr-kappl
          AND  spras EQ 'E'.
        it_t685t_ftr-kschl = 'JVCS'.
        it_t685t_ftr-vtext = 'IN CST in vat'.
        APPEND it_t685t_ftr.
        SELECT * INTO TABLE it_zmm_house_bank
          FROM zmm_house_bank
         WHERE ebeln IN mebeln.
      ELSE.
        MESSAGE e899(mm) WITH 'Data not found for selection criteria...'.
      ENDIF.
    ENDFORM.                    " Load_data
    FORM process .
      DATA : mctr   TYPE i VALUE 1.
      DATA : gindex LIKE sy-tabix.
      DATA : mline(75) TYPE c.
      DATA : mlifn2    LIKE ekpa-lifn2.
      DATA :  mv_name LIKE lfa1-name1,
             madrnr  LIKE lfa1-adrnr.
      CLEAR itcpo.
      itcpo-tdgetotf = 'X'.
      CALL FUNCTION 'OPEN_FORM'
        EXPORTING
          form     = 'ZMM_PORDER'
          language = sy-langu
          OPTIONS  = itcpo
          dialog   = ' '
        EXCEPTIONS
          OTHERS   = 1.
      LOOP AT it_ekko.
        CALL FUNCTION 'START_FORM'
          EXPORTING
            form = 'ZMM_PORDER'.
        SELECT SINGLE *
         FROM  t001
         INTO  it_t001
        WHERE  bukrs EQ it_ekko-bukrs.
        mcompname = it_t001-butxt.
        TRANSLATE mcompname TO UPPER CASE.
        Document Type
        SELECT SINGLE batxt
          INTO mtitle
          FROM t161t
         WHERE bstyp EQ 'F'
         AND   spras EQ 'E'
         AND   bsart EQ it_ekko-bsart.
        REFRESH it_adrc.
        SELECT SINGLE werks
          INTO mwerks
          FROM ekpo
         WHERE ebeln EQ it_ekko-ebeln.
        SELECT SINGLE *
          INTO it_t001w
          FROM t001w
         WHERE werks EQ mwerks.
        REFRESH it_adrc.
        SELECT SINGLE *
          INTO it_adrc_plt
          FROM adrc
         WHERE addrnumber EQ it_t001w-adrnr.
        REFRESH : xt052.
        mfamt  = 0.
        msr    = 0.
    in 500c this statement failed.
       SELECT SINGLE * FROM T052 INTO XT052 WHERE ZTERM = IT_EKKO-ZTERM.
       CALL FUNCTION 'FI_TEXT_ZTERM'
         EXPORTING
           I_T052  = XT052
         TABLES
           T_ZTEXT = ZTEXT.
        As per Preeti... Shipment address should be shown on top as purchase order company address. 27.04.
        PERFORM writeform USING 'PLANT' 'PLANT'.
        SELECT  SINGLE name1 adrnr
          INTO  (mv_name,madrnr)
          FROM  lfa1
         WHERE  lifnr EQ it_ekko-lifnr.
        REFRESH it_adrc[].
        CLEAR   it_adrc[].
        FREE it_adrc[].
        SELECT SINGLE *
          INTO it_adrc_ven
          FROM adrc
         WHERE addrnumber EQ madrnr.
        READ TABLE it_lfa1 WITH KEY lifnr = it_ekko-lifnr.
        PERFORM writeform USING 'VENDOR' 'VENDOR'.
         Shipment
        SELECT SINGLE werks
          INTO mwerks
          FROM ekpo
         WHERE ebeln EQ it_ekko-ebeln.
           up to 1 rows.
        SELECT SINGLE *
          INTO it_t001w
          FROM t001w
         WHERE werks EQ mwerks.
        SELECT SINGLE j_1iexcd j_1icstno j_1ilstno
                 INTO (j_1iexcd,j_1icstno,j_1ilstno)
               FROM    j_1imocomp
                WHERE  werks  = mwerks.
        REFRESH it_adrc.
        SELECT SINGLE *
          INTO it_adrc
          FROM adrc
         WHERE addrnumber EQ it_t001w-adrnr.
        PERFORM writeform USING 'SHIPMNT' 'SHIPMNT'.
        READ TABLE it_eikp WITH KEY exnum = it_ekko-exnum.
        IF sy-subrc EQ 0.
          READ TABLE it_t618t WITH KEY expvz = it_eikp-expvz.
        ENDIF.
        your_ref = it_ekko-ihrez.
        our_ref  = it_ekko-unsez.
        READ TABLE it_erev WITH KEY edokn = it_ekko-ebeln.
        IF sy-subrc = 0.
          no_ammend  = it_erev-revno.
          request_by = it_erev-crnam.
          ver_txt    = it_erev-txz01.
          READ TABLE it_t16ct WITH KEY rscod = it_erev-rscod.
          IF sy-subrc = 0.
            ver_reason = it_t16ct-rstxt.
          ELSE.
            ver_reason = ''.
          ENDIF.
        ELSE.
          no_ammend  = ''.
          request_by = ''.
          ver_txt    = ''.
          ver_reason = ''.
        ENDIF.
        PERFORM writeform USING 'PO_INFO' 'PO_INFO'.
        IF it_zmm_house_bank[] IS NOT INITIAL.
          READ TABLE it_zmm_house_bank INDEX 1.
          PERFORM writeform USING 'BANKDTL' 'BANKDTL'.
        ENDIF.
        PERFORM writeform USING 'HDR_INFO' 'HDR_INFO'.
        PERFORM writeform USING 'BRK_TTL' 'MAIN'.
        msr     = 1.
        mlctr   = 1.
    *added by ganesh to prevent deleted items to appear in print out
       LOOP AT IT_EKPO WHERE EBELN EQ IT_EKKO-EBELN.
        LOOP AT it_ekpo WHERE ebeln EQ it_ekko-ebeln AND loekz NE 'L'.
    *end of change
          CLEAR: mrate, mrate1.
          SELECT * FROM konv INTO TABLE it_konv_rate
                   WHERE knumv EQ it_ekko-knumv
                   AND   kposn EQ it_ekpo-ebelp
                   AND  ( kschl EQ 'PBXX' OR kschl EQ 'PB00'  OR kschl EQ 'P001' ).
          LOOP AT it_konv_rate.
           IF it_konv_rate-kpein > 0.             " added by ganesh as per sudhir 12.10.2007
             mrate_gm = it_konv_rate-kbetr / it_konv_rate-kpein.
             mrate  = mrate + mrate_gm. " added by ganesh as per sudhir 12.10.2007
           ELSE.
            mrate  = mrate + it_konv_rate-kbetr.
           ENDIF.
            IF it_konv_rate-waers IS NOT INITIAL.
              mwaers = it_konv_rate-waers.
            ENDIF.
          ENDLOOP.
        For Japanies Yen   "RTDK906759
          IF it_ekko-waers = 'JPY'.
            mrate = mrate * 100.
          ENDIF.
        End for japanies Yen
          mrate1 = mrate.
               End rate
          mfirst  = 0.
                MFAMT  = MFAMT + ( IT_EKPO-NETPR * IT_EKPO-MENGE ).
          mfamt  = mfamt + ( mrate * it_ekpo-menge ).
          PERFORM get_mat_long_text.
          DATA: lt_ctr TYPE i VALUE 0,lt_ctr1 TYPE i, lt_count TYPE i VALUE 0. " Long text counter
          DESCRIBE TABLE it_bapi_mltx_ga LINES lt_count.
          CLEAR it_bapi_mltx_ga.
    *Added by Rajiv 10.05.2007 Read and if condition RTDK906165
          READ TABLE it_konv WITH KEY knumv = it_ekko-knumv
                                      kposn = it_ekpo-ebelp.
          mkbetr  = 0.
          mkwert  = 0.
          IF sy-subrc EQ 0.
            LOOP AT it_konv  WHERE knumv EQ it_ekko-knumv
                               AND kposn EQ it_ekpo-ebelp.
              IF it_konv-krech EQ 'A'.
                mkbetr  = it_konv-kbetr / 10.
              ELSE.
                mkbetr  = it_konv-kbetr.
              ENDIF.
            For Japanies Yen "RTDK906759
              IF it_ekko-waers = 'JPY'.
                mkbetr = mkbetr * 100.
              ENDIF.
            End for japaies Yen
              IF mkbetr LT '0'.
                mkbetr = mkbetr * ( -1 ).
              ENDIF.
              mkwert   = it_konv-kwert.
            For Japanies Yen "RTDK906759
              IF it_ekko-waers = 'JPY'.
                mkwert = mkwert * 100.
              ENDIF.
            End for japaies Yen
              mfamt  = mfamt + mkwert.
              IF mkwert LT '0'.
                mkwert = mkwert * ( -1 ).
              ENDIF.
              IF it_ekpo-matnr IS INITIAL.
                itemname = it_ekpo-txz01.
              ELSE.
                READ TABLE it_makt  WITH KEY matnr = it_ekpo-matnr.
                itemname = it_makt-maktx.
              ENDIF.
              READ TABLE it_t685t WITH KEY kschl = it_konv-kschl BINARY SEARCH.
              READ TABLE it_eket  WITH KEY ebeln = it_ekpo-ebeln
                                           ebelp = it_ekpo-ebelp BINARY SEARCH.
              IF mfirst EQ 0.
                PERFORM writeform USING 'BRK_INFO' 'MAIN'.
                mfirst = 1.
              ELSE.
                ADD 1 TO lt_ctr.
                CLEAR it_bapi_mltx_ga.
                READ  TABLE it_bapi_mltx_ga INDEX lt_ctr. "For long text
                IF sy-subrc NE 0.
                  CLEAR it_bapi_mltx_ga.
                ENDIF.
                PERFORM writeform USING 'BRK_INFO1' 'MAIN'.
              ENDIF.
              mlctr = mlctr + 1.
            ENDLOOP.               "   it_konv.
          ELSE.
            IF it_ekpo-matnr IS INITIAL.
              itemname = it_ekpo-txz01.
            ELSE.
              READ TABLE it_makt  WITH KEY matnr = it_ekpo-matnr.
              itemname = it_makt-maktx.
            ENDIF.
                        READ TABLE IT_T685T WITH KEY KSCHL = IT_KONV-KSCHL BINARY SEARCH.
            READ TABLE it_eket  WITH KEY ebeln = it_ekpo-ebeln
                                         ebelp = it_ekpo-ebelp BINARY SEARCH.
            mfirst = 0.
            IF mfirst EQ 0.
              PERFORM writeform USING 'BRK_INFO' 'MAIN'.
              mfirst = 1.
            ELSE.
              ADD 1 TO lt_ctr.
              CLEAR it_bapi_mltx_ga.
              READ  TABLE it_bapi_mltx_ga INDEX lt_ctr. "For long text
              IF sy-subrc NE 0.CLEAR it_bapi_mltx_ga.ENDIF.
              PERFORM writeform USING 'BRK_INFO1' 'MAIN'.
            ENDIF.
          ENDIF.
    *Commented by rajiv 10.05.2007 used this code in above condition.
    added by ganesh on 260407 to print record
                if it_konv is initial.
                        READ TABLE IT_MAKT  WITH KEY MATNR = IT_EKPO-MATNR.
                        READ TABLE IT_T685T WITH KEY KSCHL = IT_KONV-KSCHL BINARY SEARCH.
                        READ TABLE IT_EKET  WITH KEY EBELN = IT_EKPO-EBELN
                                                     EBELP = IT_EKPO-EBELP BINARY SEARCH.
                        mFirst = 0.
                        if mFirst eq 0.
                             PERFORM WRITEFORM USING 'BRK_INFO' 'MAIN'.
                             mFirst = 1.
                        else.
                             add 1 to lt_ctr.
                             clear it_bapi_mltx_ga.
                             read  table IT_BAPI_MLTX_GA index lt_ctr. "For long text
                             if sy-subrc ne 0.clear it_bapi_mltx_ga.endif.
                             PERFORM WRITEFORM USING 'BRK_INFO1' 'MAIN'.
                        Endif.
                endif.
    end of change
          REFRESH it_komv_tax.
          PERFORM get_tax_cal USING it_ekpo-ebeln
                                    it_ekpo-ebelp.
                                 Changing it_komv_tax.
          REFRESH : it_zmm_porder.
          CLEAR   : it_zmm_porder.
          SELECT * INTO TABLE it_zmm_porder
            FROM zmm_porder
           WHERE flag EQ 'T'.
          IF sy-subrc EQ 0.
            SORT it_zmm_porder BY kschl.
          ENDIF.
          LOOP AT it_komv_tax.
            gindex = sy-tabix.
            READ TABLE it_zmm_porder WITH KEY kschl = it_komv_tax-kschl BINARY SEARCH.
            IF sy-subrc NE 0.
              DELETE it_komv_tax INDEX gindex.
            ENDIF.
          ENDLOOP.
          LOOP AT it_komv_tax WHERE kwert IS NOT INITIAL.
           IF ( IT_KOMV_TAX-KSCHL EQ 'JMOP' OR
                IT_KOMV_TAX-KSCHL EQ 'JECS' OR
                IT_KOMV_TAX-KSCHL EQ 'JSEP' OR
                IT_KOMV_TAX-KSCHL EQ 'JMOQ' OR
                IT_KOMV_TAX-KSCHL EQ 'JVCS' OR
                IT_KOMV_TAX-KSCHL EQ 'JVRD' OR
                IT_KOMV_TAX-KSCHL EQ 'JMIP' OR
    *             IT_KOMV_TAX-KSCHL EQ 'JEIP' OR
                IT_KOMV_TAX-KSCHL EQ 'JSEI' OR
                IT_KOMV_TAX-KSCHL EQ 'JSRT' OR
                IT_KOMV_TAX-KSCHL EQ 'JEC3' OR
                IT_KOMV_TAX-KSCHL EQ 'JVRN' )
                AND IT_KOMV_TAX-KWERT IS NOT INITIAL.
            SELECT SINGLE vtext
                   INTO   mtext
                   FROM   t685t
                  WHERE   kschl EQ it_komv_tax-kschl
                    AND   spras EQ 'E'.
            l_rate    = it_komv_tax-kbetr / 10.
            l_amt     = it_komv_tax-kwert.
            For Japanies Yen "RTDK906759
            IF it_ekko-waers = 'JPY'.
              l_amt = l_amt * 100.
            ENDIF.
            End for japaies Yen
            ADD l_amt TO mfamt.
            IF lt_ctr LT lt_count. "Long text
              ADD 1 TO lt_ctr.
              READ TABLE it_bapi_mltx_ga INDEX lt_ctr.
            ELSE.
              CLEAR it_bapi_mltx_ga.
            ENDIF.
            IF l_rate EQ 0 OR l_amt EQ 0.
              l_rate = ''.
              l_amt  = ''.
            ENDIF.
            PERFORM writeform USING 'TAX_LINE_ITEM' 'MAIN'.
           ENDIF.
          ENDLOOP.
          IF lt_ctr LT lt_count.
            DATA mbal_line TYPE i.
            mbal_line = ( lt_count - lt_ctr ).
            DO mbal_line TIMES.
              ADD 1 TO lt_ctr.
              READ TABLE it_bapi_mltx_ga INDEX lt_ctr.
              IF sy-subrc = 0.
                PERFORM writeform USING 'LTEXT' 'MAIN'.
              ENDIF.
            ENDDO.
          ENDIF.
          CONCATENATE it_ekko-ebeln it_ekpo-ebelp INTO nmebeln.
          REFRESH tline.
          CALL FUNCTION 'READ_TEXT'
            EXPORTING
              id                      = 'F04'
              language                = sy-langu
              name                    = nmebeln
              object                  = 'EKPO'
            TABLES
              lines                   = tline
            EXCEPTIONS
              id                      = 1
              language                = 2
              name                    = 3
              not_found               = 4
              object                  = 5
              reference_check         = 6
              wrong_access_to_archive = 7
              OTHERS                  = 8.
          IF sy-subrc <> 0.
          ENDIF.
          LOOP AT tline.
            IF tline-tdline IS NOT INITIAL.
              del_text = tline-tdline.
            ENDIF.
            CONDENSE del_text.
          ENDLOOP.
          CONCATENATE it_ekko-ebeln it_ekpo-ebelp INTO nmebeln.
          REFRESH tline.
          CALL FUNCTION 'READ_TEXT'
            EXPORTING
              id                      = 'F03'
              language                = sy-langu
              name                    = nmebeln
              object                  = 'EKPO'
            TABLES
              lines                   = tline
            EXCEPTIONS
              id                      = 1
              language                = 2
              name                    = 3
              not_found               = 4
              object                  = 5
              reference_check         = 6
              wrong_access_to_archive = 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.
               refresh.
          CLEAR : po_flag, mat_po_text.
          LOOP AT tline.
            IF tline-tdline IS NOT INITIAL.
              MOVE tline-tdline TO mat_po_text.
              CONDENSE mat_po_text.
              PERFORM writeform USING 'MTRL_PO_TEXT' 'MAIN'.
              po_flag = 'X'.
              CLEAR : mat_po_text.
            ENDIF.
          ENDLOOP.
    *Added lines below for Schedule delivery for line item on 09.05.2007:Rajiv
          CLEAR g_ind.
          READ TABLE it_eket  WITH KEY ebeln = it_ekpo-ebeln
                                       ebelp = it_ekpo-ebelp BINARY SEARCH.
          g_ind = sy-tabix.
          LOOP AT it_eket FROM g_ind.
            IF it_eket-ebeln EQ it_ekpo-ebeln AND it_eket-ebelp = it_ekpo-ebelp.
              PERFORM writeform USING 'SCHEDULE' 'MAIN'.
            ELSE.
              EXIT.
            ENDIF.
          ENDLOOP.
    *End Addition:Rajiv
          PERFORM writeform USING 'REQSLP' 'MAIN'.
          mlctr = mlctr + 1.
          msr = msr + 1.
          CLEAR: lt_ctr, lt_ctr1.
      following lines added by ganesh to add service po details as per Mr. sadiq 21.08.2007
          IF it_ekpo-packno IS NOT INITIAL.
            CLEAR sub_packno.
            SELECT SINGLE sub_packno INTO sub_packno FROM esll WHERE packno = it_ekpo-packno.
            IF sub_packno IS NOT INITIAL.
              CLEAR it_esll.
              REFRESH it_esll.
              SELECT * FROM esll INTO CORRESPONDING FIELDS OF TABLE it_esll
              WHERE packno = sub_packno.
              IF sy-subrc = 0.
                PERFORM writeform USING 'SERVICE_PO_TEXT' 'MAIN'.
              ENDIF.
              LOOP AT it_esll.
                CONCATENATE sub_packno it_esll-introw INTO obj.
                CALL FUNCTION 'READ_TEXT'   "4500002446  C300
                  EXPORTING
                    id       = 'LTXT'
                    language = sy-langu
                    name     = obj
                    object   = 'ESLL'
                  TABLES
                    lines    = tline
                  EXCEPTIONS
                    id                      = 1
                    language                = 2
                    name                    = 3
                    not_found               = 4
                    object                  = 5
                    reference_check         = 6
                    wrong_access_to_archive = 7
                    OTHERS                  = 8.
                IF sy-subrc <> 0.
                ENDIF.
                CLEAR stext.
                LOOP AT tline.
                  CONCATENATE stext tline-tdline  INTO stext SEPARATED BY space.
                ENDLOOP.
                FREE tline.
                CLEAR tline.
                REFRESH tline.
                PERFORM writeform USING 'SERVICE_PO' 'MAIN'.
                PERFORM writeform USING 'SERVICE_TEXT' 'MAIN'.
              ENDLOOP.
            ENDIF.
          ENDIF.
        end of change
        ENDLOOP.             " it_ekpo.
        IF mlctr < 15.
          DO 5 TIMES.
            PERFORM writeform USING 'LINEFEED' 'MAIN'.
          ENDDO.
        ENDIF.
        added by ganesh  for allding line before ECC No.
        IF it_ekko-bsart NE 'ZIM'.               " IF EXPORT NO NEED TO PRINT ECC.
          PERFORM writeform USING 'LIN' 'MAIN'.
          PERFORM writeform USING 'WERKS_TAX_DETAIL' 'MAIN'.
        ENDIF.
        end of change
         MFLAG = 'Y'.
        PERFORM writeform USING 'TERMS_VAL' 'MAIN'.
        LOOP AT it_konv1 WHERE knumv EQ it_ekko-knumv.
          mkschl = it_konv1-kschl.
          mchgamt = 0.
          LOOP AT it_konv_ftr  WHERE knumv EQ it_konv1-knumv
                               AND kschl EQ mkschl.
            mchgamt = mchgamt + it_konv_ftr-kwert.
          ENDLOOP.
            For Japanies Yen "RTDK906759
          IF it_ekko-waers = 'JPY'.
            mchgamt = mchgamt * 100.
          ENDIF.
            End for japaies Yen
          mfamt = mfamt + mchgamt.
          IF mchgamt LT '0'.
            mchgamt = mchgamt * ( -1 ).
          ENDIF.
          READ TABLE it_t685t_ftr WITH KEY kschl = mkschl.
          PERFORM writeform USING 'TERMS_FTR_VAL' 'MAIN'.
          mlctr = mlctr + 1.
        ENDLOOP.
        mflag = 'T'.
        CALL FUNCTION 'HR_IN_CHG_INR_WRDS'
          EXPORTING
            amt_in_num         = mfamt
          IMPORTING
            amt_in_words       = mfword
          EXCEPTIONS
            data_type_mismatch = 1
            OTHERS             = 2.
        CONDENSE mebeln.
        nmebeln = it_ekko-ebeln.
        REFRESH tline.
        CALL FUNCTION 'READ_TEXT'
          EXPORTING
            id                      = 'F01'
            language                = sy-langu
            name                    = nmebeln
            object                  = 'EKKO'
          TABLES
            lines                   = tline
          EXCEPTIONS
            id                      = 1
            language                = 2
            name                    = 3
            not_found               = 4
            object                  = 5
            reference_check         = 6
            wrong_access_to_archive = 7
            OTHERS                  = 8.
        IF sy-subrc <> 0.
        ENDIF.
    *---- CHANGED BY MATHEW BECAUSE THIS STATMENT WORKING FINE IN 300 BUT NOT IN 500C.
       LOOP AT ZTEXT.
         IF ZTEXT-TEXT1 IS NOT INITIAL.
           PERFORM WRITEFORM USING 'TERMS_COND_VAL_PAY' 'MAIN'.
         ENDIF.
         MPAY_FLAG = 'Y'.
       ENDLOOP.
        READ TABLE it_t052u WITH KEY zterm = it_ekko-zterm.
        LOOP AT it_t052u WHERE zterm EQ it_ekko-zterm.
          IF it_t052u-text1 IS NOT INITIAL.
            PERFORM writeform USING 'TERMS_COND_VAL_PAY' 'MAIN'.
          ENDIF.
          mpay_flag = 'Y'.
        ENDLOOP.
        PERFORM writeform USING 'TERMS_COND_VAL' 'MAIN'.
        LOOP AT tline.
          IF tline-tdline IS NOT INITIAL.
            PERFORM writeform USING 'TERMS_COND_VAL_HDR' 'MAIN'.
          ENDIF.
          CONDENSE txt.
        ENDLOOP.
        PERFORM writeform USING 'FTR' 'FTR_LIN3'.
        PERFORM writeform USING 'FTR_LIN1' 'FTR_LIN1'.
        CALL FUNCTION 'END_FORM'.
      ENDLOOP.                    "   It_ekko.
      CALL FUNCTION 'CLOSE_FORM'
       IMPORTING
       RESULT                         = itcpp
      RDI_RESULT                     =
       TABLES
         otfdata                        = otf
       EXCEPTIONS
         unopened                       = 1
         bad_pageformat_for_print       = 2
         send_error                     = 3
         spool_error                    = 4
         codepage                       = 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.
    ENDFORM.                    " Process
    *&      Form  WRITEFORM
          text
         -->P_0150   text
         -->P_0151   text
    FORM writeform  USING    value(p_0150)
                             value(p_0151).
      CALL FUNCTION 'WRITE_FORM'

    Hi
    I think some basis related configuartions to be done
    Try like this and inform me
    A cyclic job runs, which processes the messages seen in the SOST queue.
    Are you sure it's not the frequency of the cyclic job, rather than the
    number of messages in the queue, that you are observing? In messages
    that are queued and before the cyclic job runs, "wait for comm. service"
    is the normal status.
    If you mean that there are always 4 items queued in SOST regardless of
    the cyclic send job, then I have no ideas. I would have thought there
    was no way to do that.
    when the send job runs it just never
    picks them up & sends them, while it picks up many others. The send job
    is somehow blind to these; no error message occurs. In this case, I
    'delete' them from the queue (in SOST) and then 'undelete' (drop down
    menu -> /Go to /Deleted Items) them and then re-queue them. THEN they
    actually get picked up & sent when the next cyclic send job executes.
    Regards
    Pavan

  • Sending ALV output in a mail in PDF format

    Hi folks,
                I have a requiremtnt. If i execute my ALV report in background, the output should be sent to the reciepient's mail in pdf format. i have used the function moudles CONVERT_ABAPSPOOLJOB_2_PDF and SO_DOCUMENT_SEND_API1. Now i am able to see my report output in spool in some pdf formt. how can i send this to the reciever mail as an attachement...pls send me any sample report which suits my reqirement...thanks in advance,
               Ram.

    REPORT ZSAP_EMAIL MESSAGE-ID Z001.
    *TABLES: rlgrap, btcxpm." zlookup.
    DATA:
    V_ZCODE(3) TYPE C,
    *svrname LIKE zlookup-zdesc,
    WA_ERROR(80) TYPE C,
    GLOBAL_FILEMASK_ALL(80).
    DATA: T_SOUD LIKE SOUD.
    DATA: P_INFOLDER LIKE SOFDK.
    DATA: P_OUTFOLDER LIKE SOFDK.
    DATA: OBJECT_HD_DISPLAY LIKE SOOD2.
    DATA: OBJECT_ID LIKE SOODK.
    DATA: DOCUMENT LIKE SOOD4.
    DATA: HEADER_DATA LIKE SOOD2.
    DATA: LINK_FOLDER_ID LIKE SOODK.
    DATA: FOLDER_SELECTIONS LIKE SOFDS.
    DATA: FOLDER_LIST LIKE SOXLI OCCURS 0 WITH HEADER LINE.
    DATA: RECEIVERS LIKE SOOS1 OCCURS 0 WITH HEADER LINE.
    DATA: OBJCONT LIKE SOLI OCCURS 0 WITH HEADER LINE.
    DATA: OBJHEAD LIKE SOLI OCCURS 0 WITH HEADER LINE.
    DATA: OBJECT_CONTENT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.
    DATA: OBJECT_HD_CHANGE LIKE SOOD1.
    DATA: BEGIN OF FILES OCCURS 0,
    LINE(200) TYPE C,
    END OF FILES.
    DATA: LISTOBJECT LIKE ABAPLIST OCCURS 1 WITH HEADER LINE.
    *Email to addresses
    SELECTION-SCREEN: BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-BL1.
    PARAMETERS: P_MAILTO(240) TYPE C.
    *PARAMETERS:P_MAILTO TYPE SOLI-LINE.
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN COMMENT 10(2) TEXT-001.
    *Use zlookup-ztype as group to define multiple email to addresses
    *SELECT-OPTIONS: s_mailto FOR zlookup-ztype.
    SELECTION-SCREEN: END OF BLOCK BL1.
    *Subject
    SELECTION-SCREEN: BEGIN OF BLOCK BL2 WITH FRAME TITLE TEXT-BL2.
    PARAMETERS: P_SUBJ LIKE DOCUMENT-OBJDES.
    SELECTION-SCREEN: END OF BLOCK BL2.
    *Body
    SELECTION-SCREEN: BEGIN OF BLOCK BL3 WITH FRAME TITLE TEXT-BL3.
    PARAMETERS: P_BODY1 LIKE SOLISTI1-LINE LOWER CASE.
    PARAMETERS: P_BODY2 LIKE SOLISTI1-LINE LOWER CASE.
    PARAMETERS: P_BODY3 LIKE SOLISTI1-LINE LOWER CASE.
    PARAMETERS: P_BODY4 LIKE SOLISTI1-LINE LOWER CASE.
    PARAMETERS: P_BODY5 LIKE SOLISTI1-LINE LOWER CASE.
    PARAMETERS: P_BODY6 LIKE SOLISTI1-LINE LOWER CASE.
    SELECTION-SCREEN: END OF BLOCK BL3.
    *Attachments
    SELECTION-SCREEN: BEGIN OF BLOCK BL4 WITH FRAME TITLE TEXT-BL4.
    PARAMETERS: P_FNAME1 LIKE FILES-LINE.
    PARAMETERS: P_FNAME2 LIKE FILES-LINE.
    PARAMETERS: P_FNAME3 LIKE FILES-LINE.
    PARAMETERS: P_FNAME4 LIKE FILES-LINE.
    PARAMETERS: P_FNAME5 LIKE FILES-LINE.
    PARAMETERS: P_FNAME6 LIKE FILES-LINE.
    SELECTION-SCREEN: END OF BLOCK BL4.
    AT SELECTION-SCREEN.
      PERFORM CHK_SELECTION.
      IF NOT WA_ERROR IS INITIAL.
        MESSAGE E001 WITH WA_ERROR.
      ENDIF.
    START-OF-SELECTION.
    END-OF-SELECTION.
      PERFORM SEND_EMAIL.
    FORM chk_selection
    FORM CHK_SELECTION.
      CLEAR WA_ERROR.
    *Loop only once ???
    *If more checkings to be done.
    *Think about it and if not clear.
    *Let it sink in for a couple of minutes.
    *Still doesn't make sence? Go home and sleep on it.
      DO 1 TIMES.
    *Check Email to
        IF P_MAILTO IS INITIAL .
    *AND s_mailto IS INITIAL.
          WA_ERROR = 'Invalid or no EMAIL TO selection'.
          EXIT.
        ENDIF.
      ENDDO.
    ENDFORM.                    "chk_selection
    *& Form send_email
    *text
    *--> p1 text
    *<-- p2 text
    FORM SEND_EMAIL.
      PERFORM GET_FOLDER_INFO.
      PERFORM FILL_BODY.
      PERFORM INS_NEW_OBJECT.
      PERFORM CRT_ATTACHMENTS.
      PERFORM FILL_RECEIVERS_INFO.
      PERFORM SND_EMAIL.
    ENDFORM. " send_email
    *--+--
    *FORM Get_folder_info
    FORM GET_FOLDER_INFO.
      CLEAR T_SOUD.
    *Small so should be quick.
      SELECT * FROM SOUD
      INTO T_SOUD
      WHERE SAPNAM = SY-UNAME.
        P_INFOLDER-FOLTP = 'FOL'.
        P_INFOLDER-FOLYR = T_SOUD-INBYR. "inbox
        P_INFOLDER-FOLNO = T_SOUD-INBNO.
        P_OUTFOLDER-FOLTP = 'FOL'.
        P_OUTFOLDER-FOLYR = T_SOUD-OUTYR. "outbox
        P_OUTFOLDER-FOLNO = T_SOUD-OUTNO.
      ENDSELECT.
    ENDFORM.                    "get_folder_info
    *FORM fill_body *
    FORM FILL_BODY.
      OBJECT_CONTENT-LINE = P_BODY1.
      APPEND OBJECT_CONTENT.
      OBJECT_CONTENT-LINE = P_BODY2.
      APPEND OBJECT_CONTENT.
      OBJECT_CONTENT-LINE = P_BODY3.
      APPEND OBJECT_CONTENT.
      OBJECT_CONTENT-LINE = P_BODY4.
      APPEND OBJECT_CONTENT.
      OBJECT_CONTENT-LINE = P_BODY5.
      APPEND OBJECT_CONTENT.
      OBJECT_CONTENT-LINE = P_BODY6.
      APPEND OBJECT_CONTENT.
    ENDFORM.                    "fill_body
    *FORM ins_new_object *
    FORM INS_NEW_OBJECT.
      OBJECT_HD_CHANGE-OBJNAM = 'Notes'.
      OBJECT_HD_CHANGE-OBJDES = P_SUBJ.
      CALL FUNCTION 'SO_OBJECT_INSERT'
        EXPORTING
          FOLDER_ID                  = P_OUTFOLDER
          OBJECT_HD_CHANGE           = OBJECT_HD_CHANGE
          OBJECT_TYPE                = 'RAW'
          OWNER                      = SY-UNAME
        IMPORTING
          OBJECT_HD_DISPLAY          = OBJECT_HD_DISPLAY
          OBJECT_ID                  = OBJECT_ID
        TABLES
          OBJCONT                    = OBJECT_CONTENT
          OBJHEAD                    = OBJHEAD
        EXCEPTIONS
          ACTIVE_USER_NOT_EXIST      = 1
          COMMUNICATION_FAILURE      = 2
          COMPONENT_NOT_AVAILABLE    = 3
          DL_NAME_EXIST              = 4
          FOLDER_NOT_EXIST           = 5
          FOLDER_NO_AUTHORIZATION    = 6
          OBJECT_TYPE_NOT_EXIST      = 7
          OPERATION_NO_AUTHORIZATION = 8
          OWNER_NOT_EXIST            = 9
          PARAMETER_ERROR            = 10
          SUBSTITUTE_NOT_ACTIVE      = 11
          SUBSTITUTE_NOT_DEFINED     = 12
          SYSTEM_FAILURE             = 13
          X_ERROR                    = 14
          OTHERS                     = 15.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    "ins_new_object
    *FORM crt_attachments *
    *--> P_SUBJ *
    FORM CRT_ATTACHMENTS.
      DOCUMENT-FOLTP = P_OUTFOLDER-FOLTP.
      DOCUMENT-FOLYR = P_OUTFOLDER-FOLYR.
      DOCUMENT-FOLNO = P_OUTFOLDER-FOLNO.
      DOCUMENT-OBJTP = OBJECT_ID-OBJTP.
      DOCUMENT-OBJYR = OBJECT_ID-OBJYR.
      DOCUMENT-OBJNO = OBJECT_ID-OBJNO.
      DOCUMENT-OBJNAM = 'Notes'.
      DOCUMENT-OBJDES = P_SUBJ.
      DOCUMENT-OKCODE = 'CHNG'.
      DOCUMENT-FILE_EXT = 'TXT'.
      LINK_FOLDER_ID = OBJECT_ID.
      HEADER_DATA-OBJLA = 'EN'.
      HEADER_DATA-OBJNAM = DOCUMENT-OBJNAM.
      HEADER_DATA-OBJDES = DOCUMENT-OBJDES.
      HEADER_DATA-OBJPRI = '5'.
      HEADER_DATA-OBJSNS = 'O'.
      HEADER_DATA-FILE_EXT = 'TXT'.
      REFRESH FILES.
      CLEAR FILES.
      IF NOT P_FNAME1 IS INITIAL.
        FILES-LINE = P_FNAME1.
        APPEND FILES.
      ENDIF.
      IF NOT P_FNAME2 IS INITIAL.
        FILES-LINE = P_FNAME2.
        APPEND FILES.
      ENDIF.
      IF NOT P_FNAME3 IS INITIAL.
        FILES-LINE = P_FNAME3.
        APPEND FILES.
      ENDIF.
      IF NOT P_FNAME4 IS INITIAL.
        FILES-LINE = P_FNAME4.
        APPEND FILES.
      ENDIF.
      IF NOT P_FNAME5 IS INITIAL.
        FILES-LINE = P_FNAME5.
        APPEND FILES.
      ENDIF.
      IF NOT P_FNAME6 IS INITIAL.
        FILES-LINE = P_FNAME6.
        APPEND FILES.
      ENDIF.
      IF NOT FILES[] IS INITIAL.
        CALL FUNCTION 'SO_DOCUMENT_REPOSITORY_MANAGER'
          EXPORTING
            METHOD      = 'ATTCREATEFROMPC'
          TABLES
            FILES       = FILES
          CHANGING
            DOCUMENT    = DOCUMENT
            HEADER_DATA = HEADER_DATA.
        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.
    ENDFORM.                    "crt_attachments
    *FORM fill_receivers_info *
    FORM FILL_RECEIVERS_INFO.
      DATA: BEGIN OF RECLIST OCCURS 0,
      REC LIKE RECEIVERS-RECEXTNAM,
      END OF RECLIST.
    *Build reclist
      REFRESH RECLIST.
      IF NOT P_MAILTO IS INITIAL.
        RECLIST-REC = P_MAILTO.
        APPEND RECLIST.
      ENDIF.
    *IF NOT s_mailto IS INITIAL.
    *SELECT zdesc
    *INTO reclist-rec
    *FROM zlookup
    *WHERE ztype IN s_mailto.
    *APPEND reclist.
    *ENDSELECT.
    *ENDIF.
      REFRESH RECEIVERS.
      LOOP AT RECLIST.
        FOLDER_SELECTIONS-FOLNAM = 'INBOX'.
        CALL FUNCTION 'SO_FOLDER_LIST_READ'
          EXPORTING
            FOLDER_SELECTIONS          = FOLDER_SELECTIONS
            OWNER                      = SY-UNAME
            REGION                     = 'P'
          TABLES
            FOLDER_LIST                = FOLDER_LIST
          EXCEPTIONS
            COMPONENT_NOT_AVAILABLE    = 1
            OPERATION_NO_AUTHORIZATION = 2
            OWNER_NOT_EXIST            = 3
            PARAMETER_ERROR            = 4
            X_ERROR                    = 5
            OTHERS                     = 6.
        IF SY-SUBRC = 0.
          CLEAR RECEIVERS.
          MOVE: SY-DATUM TO RECEIVERS-RCDAT,
      SY-UZEIT TO RECEIVERS-RCTIM,
      ' ' TO RECEIVERS-RECESC,
      P_MAILTO TO RECEIVERS-RECNAM,
      'X' TO RECEIVERS-SNDEX.
          APPEND RECEIVERS.
         RECEIVERS-RCDAT = SY-DATUM.
         RECEIVERS-RCTIM = SY-UZEIT.
         RECEIVERS-RECNAM = RECLIST-REC.
         RECEIVERS-RECNO = FOLDER_LIST-PARNO.
         RECEIVERS-RECTP = FOLDER_LIST-PARTP.
         RECEIVERS-RECYR = FOLDER_LIST-PARYR.
         RECEIVERS-SNDTP = FOLDER_LIST-PARTP.
         RECEIVERS-SNDYR = FOLDER_LIST-PARYR.
         RECEIVERS-SNDNO = FOLDER_LIST-PARNO.
         RECEIVERS-SNDNAM = SY-UNAME.
         RECEIVERS-SNDPRI = '1'.
         RECEIVERS-MSGID = 'SO'.
         RECEIVERS-MSGNO = '619'.
         RECEIVERS-DELIVER = 'X'.
         RECEIVERS-NOT_DELI = 'X'.
         RECEIVERS-READ = 'X'.
         RECEIVERS-MAILSTATUS = 'E'.
    **receivers-ADR_NAME
         RECEIVERS-RESEND = ' '.
         RECEIVERS-SORTFIELD = ' '. "'USER WF_BATCH INDIGO BATCH'.
         RECEIVERS-SORTCLASS = '5'.
         APPEND RECEIVERS.
        ELSE.
          CLEAR RECEIVERS.
          RECEIVERS-SEL = 'X'.
          RECEIVERS-RECESC = 'U'.
          RECEIVERS-RECNAM = 'U-'.
          RECEIVERS-RECEXTNAM = RECLIST-REC.
          RECEIVERS-DELIVER = 'X'.
          RECEIVERS-NOT_DELI = 'X'.
          RECEIVERS-READ = 'X'.
          RECEIVERS-MAILSTATUS = 'E'.
          RECEIVERS-ADR_NAME = RECLIST-REC.
          RECEIVERS-SORTFIELD = RECLIST-REC.
          RECEIVERS-SORTCLASS = '5'.
          APPEND RECEIVERS.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "fill_receivers_info
    *FORM snd_email *
    FORM SND_EMAIL.
      CALL FUNCTION 'SO_OBJECT_SEND'
        EXPORTING
          FOLDER_ID                  = P_OUTFOLDER
          OBJECT_ID                  = OBJECT_ID
          OUTBOX_FLAG                = 'X'
          OWNER                      = SY-UNAME
          CHECK_SEND_AUTHORITY       = 'X'
          ORIGINATOR_TYPE            = 'J'
          LINK_FOLDER_ID             = LINK_FOLDER_ID
        TABLES
          OBJCONT                    = OBJECT_CONTENT
          RECEIVERS                  = RECEIVERS
        EXCEPTIONS
          ACTIVE_USER_NOT_EXIST      = 1
          COMMUNICATION_FAILURE      = 2
          COMPONENT_NOT_AVAILABLE    = 3
          FOLDER_NOT_EXIST           = 4
          FOLDER_NO_AUTHORIZATION    = 5
          FORWARDER_NOT_EXIST        = 6
          NOTE_NOT_EXIST             = 7
          OBJECT_NOT_EXIST           = 8
          OBJECT_NOT_SENT            = 9
          OBJECT_NO_AUTHORIZATION    = 10
          OBJECT_TYPE_NOT_EXIST      = 11
          OPERATION_NO_AUTHORIZATION = 12
          OWNER_NOT_EXIST            = 13
          PARAMETER_ERROR            = 14
          SUBSTITUTE_NOT_ACTIVE      = 15
          SUBSTITUTE_NOT_DEFINED     = 16
          SYSTEM_FAILURE             = 17
          TOO_MUCH_RECEIVERS         = 18
          USER_NOT_EXIST             = 19
          ORIGINATOR_NOT_EXIST       = 20
          X_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.
    ENDFORM.                    "snd_email
    go through this.
    Thanks

  • How to send a mail in pdf format file in sbwp??

    how to send a mail in pdf format file in sbwp?? and how to read the content of the mail?

    Refer the following link for Sample Program:
    http://www.sapdevelopment.co.uk/reporting/rep_spooltopdf.htm

  • My phone has been changed under warranty by the apple store in germany. ı need a change document to register the phone in my country again. ımeı numbers of old and new must be in the document.you can send an mail in pdf format as soon as possible please.

    my phone has been changed under warranty by the apple store in germany.
    ı need a change document to register the phone in my country again.
    ımeı numbers of old and new must be in the document.you can send an mail in pdf format
    as soon as possible please.
    your's respectfully.
    new phone serial no:DQ******TC0
    old phone serial no:DN*******T9Y
    Product:
    iPhone 4S
    Serial Number:
    DN*******T9Y
    Service Requested:
    December 3, 2012
    Status:
    Repair Complete
    <Edited by Host>

    No we cannot send it to you because we are users just like you and Apple does not monitor these forums.
    But you can find the IMEI numbers yourself. Read the ENTIRE article:
    http://support.apple.com/kb/HT4061

  • How to send the form data through mail with pdf format?

    forms 6i
    Hi to all,
    i am developed one master detail form.example is based on the dept number emp details will be displayed.here my requirment is whatever displayed on the form
    the data ,these data send to mail with any format.is it possible? if is possible any one give a proper solution.
    Regards,
    Stevie
    Edited by: 994418 on 6 May, 2013 11:15 PM

    Hello,
    you can create a Report that accepts the search parameters from the Forms mask and generates a PDF. You also have the option to send the report via mail.
    Personally I would generate the report with a tool like as_pdf
    http://technology.amis.nl/2012/04/11/generating-a-pdf-document-with-some-plsql-as_pdf_mini-as_pdf3/
    Then you can send the mail using utl_mail or utl_smtp.
    www.google.com/search?q=site:forums.oracle.com+utl_mail+utl_smtp
    Regards
    Marcus

  • Sending mail in PDF format in background

    Hi,
    I am running a program in backgorund.
    After the completion, I am convertin gthe spool into PDF format and sending it to mail.
    In SAP 4.6 B it was working.
    But now in SAP 4.7 the mail is not working.
    Regular mails are going from SAP.
    What could be the reason?.
    Regards
    Elini.P

    Dear Paul,
    Here is the code for sending mail through ABAP converting Spool in PDF in background.
      if sy-batch eq 'X'.
        perform get_job_details.
        perform obtain_spool_id.
        perform convert_spool_to_pdf.
        perform process_email.
        if p_delspl eq 'X'.
          perform delete_spool.
        endif.
        if sy-sysid = c_dev.
          wait up to 5 seconds.
          submit rsconn01 with mode = 'INT'
                          with output = 'X'
                                          and return.
        endif.
      else.
        skip.
        write:/ 'Program must be executed in background in-order for spool',
        'request to be created.'.
      endif.
    *&      Form  GET_JOB_DETAILS
          text
    -->  p1        text
    <--  p2        text
    form get_job_details.
    Get current job details
      call function 'GET_JOB_RUNTIME_INFO'
           importing
                eventid                 = gd_eventid
                eventparm               = gd_eventparm
                external_program_active = gd_external_program_active
                jobcount                = gd_jobcount
                jobname                 = gd_jobname
                stepcount               = gd_stepcount
           exceptions
                no_runtime_info         = 1
                others                  = 2.
    endform.                    " GET_JOB_DETAILS
    *&      Form  OBTAIN_SPOOL_ID
          text
    -->  p1        text
    <--  p2        text
    form obtain_spool_id.
      check not ( gd_jobname is initial ).
      check not ( gd_jobcount is initial ).
      select * from tbtcp into table it_tbtcp
      where jobname = gd_jobname
        and jobcount = gd_jobcount
        and stepcount = gd_stepcount
        and listident <> '0000000000'
        order by jobname
                 jobcount
                 stepcount.
      read table it_tbtcp into wa_tbtcp index 1.
      if sy-subrc = 0.
        message s004(zdd) with gd_spool_nr.
        gd_spool_nr = wa_tbtcp-listident.
        message s004(zdd) with gd_spool_nr.
      else.
        message s005(zdd).
      endif.
    endform.                    " OBTAIN_SPOOL_ID
    *&      Form  CONVERT_SPOOL_TO_PDF
          text
    -->  p1        text
    <--  p2        text
    form convert_spool_to_pdf.
      call function 'CONVERT_ABAPSPOOLJOB_2_PDF'
           exporting
                src_spoolid              = gd_spool_nr
                no_dialog                = c_no
                dst_device               = c_device
           importing
                pdf_bytecount            = gd_bytecount
           tables
                pdf                      = it_pdf_output
           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
                others                   = 12.
      check sy-subrc = 0.
    Transfer the 132-long strings to 255-long strings
      loop at it_pdf_output.
        translate it_pdf_output using ' ~'.
        concatenate gd_buffer it_pdf_output into gd_buffer.
      endloop.
      translate gd_buffer using '~ '.
      do.
        it_mess_att = gd_buffer.
        append it_mess_att.
        shift gd_buffer left by 255 places.
        if gd_buffer is initial.
          exit.
        endif.
      enddo.
    endform.                    " CONVERT_SPOOL_TO_PDF
    *&      Form  PROCESS_EMAIL
          text
    -->  p1        text
    <--  p2        text
    form process_email.
      describe table it_mess_att lines gd_recsize.
      check gd_recsize > 0.
      perform send_email using p_email1.
    endform.                    " PROCESS_EMAIL
    *&      Form  SEND_EMAIL
          text
         -->P_P_EMAIL1  text
    form send_email using    p_email.
      check not ( p_email is initial ).
      refresh it_mess_bod.
    Default subject matter
      gd_subject = 'Subject'.
      gd_attachment_desc = 'Attachname'.
    CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
      it_mess_bod = 'SCGL - Purchase Order in 050'.
      append it_mess_bod.
      it_mess_bod = 'Success or Error messages'.
      append it_mess_bod.
    If no sender specified - default blank
      if p_sender eq space.
        gd_sender_type = space.
      else.
        gd_sender_type = 'INT'.
      endif.
    Add the recipients email address
      open dataset file for input in text mode.
      if sy-subrc = 0.
        do.
          read dataset file into itab_receivers.
          if sy-subrc = 0.
            append itab_receivers.
          else.
            exit.
          endif.
        enddo.
      endif.
      close dataset file.
      loop at itab_receivers.
        clear: p_email.
        p_email = itab_receivers-receiver.
    Send file by email as .xls speadsheet
        perform send_file_as_email_attachment
                          tables it_mess_bod
                                 it_mess_att
                           using p_email
                                'SCGL Purchase Order IN 050'
                                'PDF'
                                 gd_attachment_name
                                 gd_attachment_desc
                                 p_sender
                                 gd_sender_type
                        changing gd_error
                                 gd_reciever.
      endloop.
    endform.                    " SEND_EMAIL
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          text
         -->P_IT_MESS_BOD  text
         -->P_IT_MESS_ATT  text
         -->P_P_EMAIL  text
         -->P_1572   text
         -->P_1573   text
         -->P_GD_ATTACHMENT_NAME  text
         -->P_GD_ATTACHMENT_DESC  text
         -->P_P_SENDER  text
         -->P_GD_SENDER_TYPE  text
         <--P_GD_ERROR  text
         <--P_GD_RECIEVER  text
    form send_file_as_email_attachment tables it_message
                                              it_attach
                                       using p_email
                                             p_mtitle
                                             p_format
                                             p_filename
                                             p_attdescription
                                             p_sender_address
                                             p_sender_addres_type
                                       changing p_error
                                                p_reciever.
      ld_email = p_email.
      ld_mtitle = p_mtitle.
      ld_format = p_format.
      ld_attdescription = p_attdescription.
      ld_attfilename = p_filename.
      ld_sender_address = p_sender_address.
      ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      clear w_doc_data.
      read table it_attach index w_cnt.
      w_doc_data-doc_size =
      ( w_cnt - 1 ) * 255 + strlen( it_attach ).
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      clear t_attachment.
      refresh t_attachment.
      t_attachment[] = it_attach[].
    Describe the body of the message
      clear t_packing_list.
      refresh t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      describe table it_message lines t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      append t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 1.
      t_packing_list-body_start = 1.
      describe table t_attachment lines t_packing_list-body_num.
      t_packing_list-doc_type = ld_format.
      t_packing_list-obj_descr = ld_attdescription.
      t_packing_list-obj_name = ld_attfilename.
      t_packing_list-doc_size = t_packing_list-body_num * 255.
      append t_packing_list.
    Add the recipients email address
      clear t_receivers.
      refresh t_receivers.
      t_receivers-receiver = ld_email.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      append t_receivers.
      call function 'SO_DOCUMENT_SEND_API1'
           exporting
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           importing
                sent_to_all                = w_sent_all
           tables
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
           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.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      loop at t_receivers.
        ld_receiver = t_receivers-retrn_code.
      endloop.
    endform.                    " SEND_FILE_AS_EMAIL_ATTACHMENT
    *&      Form  DELETE_SPOOL
          text
    -->  p1        text
    <--  p2        text
    form delete_spool.
      data: ld_spool_nr type tsp01_sp0r-rqid_char.
      ld_spool_nr = gd_spool_nr.
      check p_delspl <> c_no.
      call function 'RSPO_R_RDELETE_SPOOLREQ'
           exporting
                spoolid = ld_spool_nr.
    endform.                    " DELETE_SPOOL

  • When I save an e-mail in PDF format, the entire text doesn't save or print.

    All text displays on screen when e-mail is opened, but a page-long item only partially saves or prints out. Includes regular text as well as forms and receipts. How do I correct this?

    Hi
    It shows just 4 always as an option in the "open with" lsit. Also I haven't downloaded any apps for a while so why would it start now?
    Do you know how I can estabilsh how many apps are counting toward this 10 and what they are?

  • How to send smartform output through mail in PDF Format

    Can some one provide me the sample code
    Edited by: Revankar Satej on Feb 22, 2008 1:22 PM

    Hi,
         try this code,HOPE usefull to u, Reaward points
    *& Report  ZTEST_SMARTFORM
    REPORT  ztest_smartform.
    DATA: formname TYPE  tdsfname,
          fm_name TYPE  rs38l_fnam,
          control_parameters TYPE ssfctrlop,
          job_output_info TYPE     ssfcrescl,
          otf_data TYPE tsfotf,
          bin_filesize TYPE i,
          otf TYPE TABLE OF itcoo WITH HEADER LINE,
          doctab_archive TYPE TABLE OF docs WITH HEADER LINE,
          lines TYPE TABLE OF tline WITH HEADER LINE.
    INITIALIZATION.
      formname = 'UR SMART FORM'.
    START-OF-SELECTION.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname                 = formname
      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.
      control_parameters-no_dialog = 'X'.
    control_parameters-preview = ''.
      control_parameters-getotf = 'X'.
      CALL FUNCTION fm_name
       EXPORTING
      ARCHIVE_INDEX              = ARCHIVE_INDEX
      ARCHIVE_INDEX_TAB          = ARCHIVE_INDEX_TAB
      ARCHIVE_PARAMETERS         = ARCHIVE_PARAMETERS
         control_parameters         = control_parameters
      MAIL_APPL_OBJ              = MAIL_APPL_OBJ
      MAIL_RECIPIENT             = MAIL_RECIPIENT
      MAIL_SENDER                = MAIL_SENDER
      OUTPUT_OPTIONS             = OUTPUT_OPTIONS
      USER_SETTINGS              = 'X'
       IMPORTING
      DOCUMENT_OUTPUT_INFO       = DOCUMENT_OUTPUT_INFO
         job_output_info            = job_output_info
      JOB_OUTPUT_OPTIONS         = JOB_OUTPUT_OPTIONS
       EXCEPTIONS
         formatting_error           = 1
         internal_error             = 2
         send_error                 = 3
         user_canceled              = 4
         OTHERS                     = 5
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      otf_data[] =  job_output_info-otfdata[].
      CALL FUNCTION 'CONVERT_OTF_2_PDF'
      EXPORTING
        USE_OTF_MC_CMD               = 'X'
        ARCHIVE_INDEX                = ARCHIVE_INDEX
       IMPORTING
         bin_filesize                 = bin_filesize
        TABLES
          otf                          = otf_data[]
          doctab_archive               = doctab_archive[]
          lines                        = 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.
      DATA:  filename TYPE string.
      filename = 'c:\test\smart.pdf'.
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
         bin_filesize                    = bin_filesize
          filename                        = filename
         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'
        WK1_N_FORMAT                    = ' '
        WK1_N_SIZE                      = ' '
        WK1_T_FORMAT                    = ' '
        WK1_T_SIZE                      = ' '
      IMPORTING
        FILELENGTH                      = FILELENGTH
        TABLES
          data_tab                        = lines[]
        FIELDNAMES                      = 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.
      DATA: document_data LIKE  sodocchgi1 ,
            contents_txt TYPE TABLE OF  solisti1  WITH HEADER LINE,
            contents_bin     TYPE TABLE OF     solisti1 WITH HEADER LINE,
            tab_lines TYPE i,
            packing_list TYPE TABLE OF sopcklsti1 WITH HEADER LINE,
            OBJECT_HEADER type table of SOLISTI1 with header line,
            RECEIVERS     TYPE TABLE OF      SOMLRECI1 WITH HEADER LINE,     
            l_str(255) ,
            v1 TYPE i,
            v2 TYPE i,
            v3 type i.
      CONSTANTS: c_raw TYPE so_obj_tp VALUE 'RAW',
                 c_pdf TYPE so_obj_tp VALUE 'PDF',
                 c_255 TYPE i VALUE 255,
                 c_134 TYPE i VALUE 134,
                 C_X TYPE C VALUE 'X',
                 C_U TYPE C VALUE 'U'.
      document_data-obj_name = 'EMAIL'.
      document_data-obj_descr = 'subject'.
      contents_txt = 'THIS IS first line DATA'.
      APPEND contents_txt.
      CLEAR contents_txt.
      contents_txt = 'THIS IS second line DATA'.
      APPEND contents_txt.
      CLEAR contents_txt.
      APPEND contents_txt.
      APPEND contents_txt.
      DESCRIBE TABLE contents_txt LINES tab_lines.
      READ TABLE contents_txt INDEX tab_lines.
    document_data-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( contents_txt ).
      document_data-doc_size =  tab_lines .
      CLEAR packing_list-transf_bin.
      packing_list-head_start = 1.
      packing_list-head_num = 0.
      packing_list-body_start = 1.
      packing_list-body_num = tab_lines.
      packing_list-doc_type = c_raw.
      packing_list-doc_size = document_data-doc_size.
      APPEND packing_list.
      LOOP AT lines.
        CLEAR l_str.
        l_str+0(2) = lines-tdformat.
        l_str+2(132) = lines-tdline.
        v2 = v1 + c_134.
        IF v2 LE c_255.
          contents_bin-line+v1(c_134) = l_str. v1 = v2.
        ELSE.
          v3 = v2 - c_255.
          v2 = c_255 - v1.
          IF NOT v2 IS INITIAL.
            contents_bin-linev1(v2) = l_str0(v2).
          ENDIF.
          APPEND contents_bin.
          CLEAR contents_bin.
          v1 = v3.
          v3 = 134 - v1.
          IF NOT v1 IS INITIAL.
            contents_bin-line0(v1) = l_strv3(v1).
          ENDIF.
        ENDIF.
      ENDLOOP.
      APPEND contents_bin.
      CLEAR contents_bin.
      DESCRIBE TABLE contents_bin LINES tab_lines.
      READ TABLE contents_bin INDEX tab_lines.
    OBJECT_HEADER = 'objhead'.
    APPEND OBJECT_HEADER.
    packing_list-transf_bin = c_x.
    packing_list-head_start = 1.
    packing_list-head_num = 1.
    packing_list-body_start = 1.
    packing_list-body_num = tab_lines.
    packing_list-doc_type = c_pdf.
    packing_list-obj_name = 'text1'.
    packing_list-obj_descr = 'filename'.
    packing_list-doc_size = tab_lines * 255  + STRLEN( contents_bin ).
    APPEND packing_list.
    RECEIVERS-receiver = 'UR EMAIL ADDRESS IN CAPS'.
    RECEIVERS-rec_type = c_u.
    APPEND RECEIVERS.
    CLEAR RECEIVERS.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
        EXPORTING
          document_data                    = document_data
       PUT_IN_OUTBOX                    = 'X'
      SENDER_ADDRESS                   = SY-UNAME
      SENDER_ADDRESS_TYPE              = 'B'
       COMMIT_WORK                      = 'X'
    IMPORTING
      SENT_TO_ALL                      =
      NEW_OBJECT_ID                    = NEW_OBJECT_ID
      SENDER_ID                        = SENDER_ID
      TABLES
        packing_list                     = packing_list
       OBJECT_HEADER                    = OBJECT_HEADER
       CONTENTS_BIN                     = CONTENTS_BIN
       CONTENTS_TXT                     = CONTENTS_TXT
      CONTENTS_HEX                     = CONTENTS_HEX
      OBJECT_PARA                      = OBJECT_PARA
      OBJECT_PARB                      = OBJECT_PARB
        receivers                        = receivers
    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.
    Regards
    SFT

  • Blank PDF sent to mail

    Hi
    We have a transaction ZME9 through which users can print a Purchase Order Draft or send it to the mail in PDF format .
    In one case user is getting a blank PDF documnet for some particualt Purchase orders . We have observed that hte issue is happening for japanese users when they trying to use PDF option for Purchase orders with US vendors .
    After investigation we have found out that in this case the Buyer is related to a Pinter and the Device type of that Printer is JPHPLJ4 - HP Laser Jet PCL 5- japanese.  In this case the user is getting a blank PDF ,but the print option and the preview option are working fine
    But if i change hte Printer in Debugging mode the PDF is generated successfully ,device type of this printer is POST2.
    Can you please help me how can i solve this .
    Thanks and Regards
    Ramakanth Akunury

    hi ramakanth ,
                           then the problem should be in the coding , u need the check the program for the function module " GET_PRINT_PARAMETERS".
    CALL FUNCTION 'GET_PRINT_PARAMETERS'
          EXPORTING
           ARCHIVE_ID                     = C_CHAR_UNKNOWN
           ARCHIVE_INFO                   = C_CHAR_UNKNOWN
           ARCHIVE_MODE                   = C_CHAR_UNKNOWN
           ARCHIVE_TEXT                   = C_CHAR_UNKNOWN
           AR_OBJECT                      = C_CHAR_UNKNOWN
           ARCHIVE_REPORT                 = C_CHAR_UNKNOWN
           AUTHORITY                      = C_CHAR_UNKNOWN
           COPIES                         = C_NUM3_UNKNOWN
           COVER_PAGE                     = C_CHAR_UNKNOWN
           DATA_SET                       = C_CHAR_UNKNOWN
           DEPARTMENT                     = C_CHAR_UNKNOWN
           DESTINATION                    = C_CHAR_UNKNOWN
           EXPIRATION                     = C_NUM1_UNKNOWN
            IMMEDIATELY                    = space "C_CHAR_UNKNOWN
           IN_ARCHIVE_PARAMETERS          = ' '
           IN_PARAMETERS                  = ' '
           LAYOUT                         = C_CHAR_UNKNOWN
           LINE_COUNT                     = C_INT_UNKNOWN
           LINE_SIZE                      = C_INT_UNKNOWN
           LIST_NAME                      = C_CHAR_UNKNOWN
           LIST_TEXT                      = C_CHAR_UNKNOWN
           MODE                           = ' '
           NEW_LIST_ID                    = C_CHAR_UNKNOWN
           PROTECT_LIST                   = C_CHAR_UNKNOWN
            NO_DIALOG                      = 'X'"C_FALSE
           RECEIVER                       = C_CHAR_UNKNOWN
           RELEASE                        = C_CHAR_UNKNOWN
           REPORT                         = C_CHAR_UNKNOWN
           SAP_COVER_PAGE                 = C_CHAR_UNKNOWN
           HOST_COVER_PAGE                = C_CHAR_UNKNOWN
           PRIORITY                       = C_NUM1_UNKNOWN
           SAP_OBJECT                     = C_CHAR_UNKNOWN
           TYPE                           = C_CHAR_UNKNOWN
           USER                           = SY-UNAME
           USE_OLD_LAYOUT                 = ' '
           UC_DISPLAY_MODE                = C_CHAR_UNKNOWN
           DRAFT                          = C_CHAR_UNKNOWN
           ABAP_LIST                      = ' '
           USE_ARCHIVENAME_DEF            = ' '
           DEFAULT_SPOOL_SIZE             = C_CHAR_UNKNOWN
           WITH_STRUCTURE                 = C_CHAR_UNKNOWN
           SUPPRESS_SHADING               = C_CHAR_UNKNOWN
           PO_FAX_STORE                   = ' '
           NO_FRAMES                      = C_CHAR_UNKNOWN
          IMPORTING
           OUT_ARCHIVE_PARAMETERS         =
            OUT_PARAMETERS                 = mstr_print_parms
            VALID                          = t_valid
           VALID_FOR_SPOOL_CREATION       =
          EXCEPTIONS
            ARCHIVE_INFO_NOT_FOUND         = 1
            INVALID_PRINT_PARAMS           = 2
            INVALID_ARCHIVE_PARAMS         = 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.
    *-- Make sure that a printer destination has been set up
    *-- If this is not done the PDF function module ABENDS
      if mstr_print_parms-pdest = space.
        mstr_print_parms-pdest = 'LOCL'.
      endif.
    *-- Explicitly set line width, and output format so that
    *-- the PDF conversion comes out OK
      mstr_print_parms-linsz = linsz.
      mstr_print_parms-paart = paart.
    In this coding u have the printer destination , plz check up with ur printer port and give it correctly here . i think this should solve ur problem.
    regards,

  • How can scripts and  smart forms send to mail and pdf?

    HI i want to know how script and smartforms will send to mail and pdf formates>?

    Dear Anees ,
                       Pleas pass on the parameter in itcpo - (getotf  ) structure while calling OPEN_FORM as 'X' .
    I have answered it in detail in your earlier post .
    also giving below sample program for sending SAPSCRIPT as PDFattachment in email  :
    REPORT zsapscript_pdf_via_mail MESSAGE-ID zvele LINE-SIZE 68
    NO STANDARD PAGE HEADING.
    TABLES: itcpo.
    Open your usual sapscript specifying that the output will be OTF
    itcpo-tdgetotf = 'X'.
    CALL FUNCTION 'OPEN_FORM'
    EXPORTING
    device = 'PRINTER'
    dialog = ''
    form = '............'
    language = sy-langu
    options = itcpo
    EXCEPTIONS
    canceled = 1
    device = 2
    form = 3
    options = 4
    unclosed = 5
    OTHERS = 6.
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    window = '............'
    element = '............'
    EXCEPTIONS
    window = 1
    element = 2.
    DATA: BEGIN OF t_otfdata OCCURS 0.
    INCLUDE STRUCTURE itcoo.
    DATA: END OF t_otfdata.
    Closing the Sapscript, we save data (OTF) in a table
    CALL FUNCTION 'CLOSE_FORM'
    TABLES
    otfdata = t_otfdata
    EXCEPTIONS
    unopened = 1
    bad_pageformat_for_print = 2
    send_error = 3
    spool_error = 4
    OTHERS = 5.
    DATA: len_in LIKE sood-objlen,
    len_out LIKE sood-objlen.
    DATA: BEGIN OF t_pdfdata OCCURS 0.
    INCLUDE STRUCTURE solisti1.
    DATA: END OF t_pdfdata.
    DATA: BEGIN OF t_otfdata2 OCCURS 0.
    INCLUDE STRUCTURE solisti1.
    DATA: END OF t_otfdata2.
    Move OTF data to another table with lenght 255
    LOOP AT t_otfdata.
    CONCATENATE t_otfdata-tdprintcom t_otfdata-tdprintpar INTO t_otfdata2.
    APPEND t_otfdata2.
    ENDLOOP.
    Convert OTF format to PDF
    CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF'
    EXPORTING
    format_src = 'OTF'
    format_dst = 'PDF'
    devtype = 'PRINTER'
    FUNCPARA =
    len_in = len_in
    IMPORTING
    len_out = len_out
    TABLES
    content_in = t_otfdata2
    content_out = t_pdfdata
    EXCEPTIONS
    err_conv_failed = 1
    OTHERS = 2.
    Download on local directory
    *CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
    BIN_FILESIZE = len_out
    FILENAME = 'c:\test.pdf'
    FILETYPE = 'BIN'
    TABLES
    data_tab = t_pdfdata.
    Mail settings
    DATA: objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE.
    DATA: objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE.
    DATA: objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE.
    DATA: objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE.
    DATA: reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINe.
    DATA: doc_chng LIKE sodocchgi1.
    DATA righe_attachment TYPE i.
    DATA righe_testo TYPE i.
    DATA z_email(80) TYPE c.
    Receivers parameters
    SELECT-OPTIONS: s_email FOR z_email LOWER CASE NO INTERVALS.
    PARAMETERS rec_type LIKE reclist-rec_type
    DEFAULT 'U'. " type of sending address
    CLEAR: reclist, reclist[],
    objhead, objhead[],
    objtxt, objtxt[],
    objbin, objbin[],
    objpack, objpack[].
    Attachment filling
    LOOP AT t_pdfdata.
    objbin-line = t_pdfdata.
    APPEND objbin.
    ENDLOOP.
    DESCRIBE TABLE objbin LINES righe_attachment.
    Text filling
    objtxt = 'Testo della Mail - Riga 1'.APPEND objtxt.
    objtxt = 'Testo della Mail - Riga 2'.APPEND objtxt.
    objtxt = 'Testo della Mail - Riga n'.APPEND objtxt.
    DESCRIBE TABLE objtxt LINES righe_testo.
    Other filling
    doc_chng-obj_name = 'URGENT'.
    doc_chng-expiry_dat = sy-datum + 10.
    doc_chng-obj_descr = 'Prova invio Mail con PDF'.
    doc_chng-sensitivty = 'O'.
    doc_chng-doc_size = righe_testo * 255.
    CLEAR objpack-transf_bin.
    objpack-head_start = 1.
    objpack-head_num = 0.
    objpack-body_start = 1.
    objpack-body_num = righe_testo.
    objpack-doc_type = 'RAW'.
    APPEND objpack.
    objpack-transf_bin = 'X'.
    objpack-head_start = 1.
    objpack-head_num = 1.
    objpack-body_start = 1.
    objpack-body_num = righe_attachment.
    objpack-doc_type = 'PDF'.
    objpack-obj_name = 'TEST'.
    objpack-obj_descr = 'File.pdf'.
    objpack-doc_size = righe_attachment * 255.
    APPEND objpack.
    Receivers filling
    LOOP AT s_email WHERE sign = 'I'
    AND option = 'EQ'
    AND NOT ( low IS initial ).
    CLEAR reclist.
    IF sy-tabix > 1.
    reclist-copy = 'X'.
    ENDIF.
    reclist-receiver = s_email-low.
    IF rec_type IS INITIAL.
    reclist-rec_type = 'U'. " Internet e-mail
    ELSE.
    reclist-rec_type = rec_type.
    ENDIF.
    reclist-notif_del = 'X'. " request delivery notification
    reclist-notif_ndel = 'X'. " request not delivered notification
    APPEND reclist.
    ENDLOOP.
    Mail Send
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
    document_data = doc_chng
    put_in_outbox = 'X'
    IMPORTING
    SENT_TO_ALL =
    NEW_OBJECT_ID =
    TABLES
    packing_list = objpack
    object_header = objhead
    contents_bin = objbin
    contents_txt = objtxt
    OBJECT_PARA =
    OBJECT_PARB =
    receivers = reclist
    CONTENTS_HEX =
    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

  • Unix script error while mail the pdf file.

    Hi all,
    I want to do a mail in pdf format via a unix script. for that i used the following query:
    # Verplichte variabelen
    inputname="dago130r.rdf"
    outputname="$DATOUT/dago130rDC.pdf"
    mailto="$MAIL_INKOOP_DC"
    subject="Opgeloste PV's per Category Manager"
    params="p_datum_1='08-08-2006' p_ind_dc_of_rz='D'"
    # Opgeloste PV's per Category Manager
    # Start script.
    # Vanaf hier hoeft in principe niets gewijzigd te worden.
    mymail () {
         local tmp=$DATTMP/$$.txt
         cat "$mailbody" > $tmp 2>/dev/null
         do_unix "uuencode $outputname $(basename $outputname) >> $tmp"
         check_success
         do_unix "mailx -s '$subject' -c '$mailcc' -r '$replyto' '$mailto' < $tmp"
         check_success
    header
    perform "$inputname R DESFORMAT=PDF DESTYPE=FILE DESNAME=$outputname $params"
    check_success exit
    mymail
    footer
    exit_check "$total_success"
    When i execute this query it will make the pdf file in the output folder as well as in the tmp folder as a text file. but after that it will give me error in the log file as follows.:
    09/08/06-11:13:19 [  25178] -- perform: Successful completion of dago130r.rdf R DESFORMAT=PDF DESTYPE=FILE DESNAME=/appl/tst/ah01/dago/dat/out/dago130rDC.pdf p_datum_1='08-08-2006' p_ind_dc_of_rz='D'
    09/08/06-11:13:19 [  25178] -- do_unix: Successful completion of uuencode /appl/tst/ah01/dago/dat/out/dago130rDC.pdf dago130rDC.pdf >> /appl/tst/ah01/dago/dat/tmp/25178.txt
    [  25178] ,/appl/tst/ah01/dago/dat/tmp/25178.txt,: No such file or directory
    [  25178] "/appl/tst/ah01/dago/home/dead.letter" 1/1
    [  25178]
    09/08/06-11:13:19 [  25178] -- ERROR do_unix: mailx -s 'Opgeloste PV's per Category Manager' -c '' -r '' '[email protected]' < /appl/tst/ah01/dago/dat/tmp/25178.txt returned 1
    09/08/06-11:13:19 [  25178] --
    I am not getting why this script not taking the file from the tmp folder and why this error comes??
    please help me to go out of this problem.

    Hi Bhavik,
    Please can you tell how you are executing this script. ?
    ./scritpname or sh scriptname
    Can you try the script removing local while declaring the tmp variable ?
    naghu

  • Information Broadcast Error while sending as PDF format

    Dear Team
    I am getting the following error while sending a mail in PDF format using at Query Level.
    Error: com.sap.ip.bi.base.exception.BIBaseRuntimeException
    Notification Number RSBOLAP 014
    If anybody faced this problem pls reply.
    Best Regards,
    SG

    Hi,
    Please check out teh SDN string below. There are couple of notes mentioned which might be helpful. Let us know the result.
    Web Designer -> Java System Error RSBOLAP 018
    Regards
    Pankaj

  • Convert payslip to PDF format  , for e-mailing to employees

    HI with respect to my previous post 'Salary slip delivery thru email'
    I have been able to send the email out in the html format. I want the employee to recieve the mail in the PDF format. I would like your assistance on this.
    Here is the code.
    tables: PV000,
    T549Q,
    PA0001,
    V_T514D,
    HRPY_RGDIR,
    PA0002,
    PA0105.
    data: begin of ITAB occurs 0,
    MTEXT(25) type C,
    PERNR like PA0001-PERNR,
    ABKRS like PA0001-ABKRS,
    ENAME like PA0001-ENAME,
    USRID_LONG like PA0105-USRID_LONG,
    end of ITAB.
    data: W_BEGDA like HRPY_RGDIR-FPBEG,
          W_ENDDA like HRPY_RGDIR-FPEND.
    data: RETURN like BAPIRETURN1 occurs 0 with header line.
    data: P_INFO like PC407,
    P_FORM like PC408 occurs 0 with header line,
    P_P_FORM like PC408 occurs 0 with header line.
    data: P_IDX type I,
    MY_MONTH type T549Q-PABRP,
    STR_MY_MONTH(2) type C,
    MY_YEAR type T549Q-PABRJ,
    STR_MY_YEAR(4) type C.
    data: W_CMONTH(10) type C.
    data: TAB_LINES type I,
    ATT_TYPE like SOODK-OBJTP.
    data: begin of P_INDEX occurs 0,
    INDEX type I,
    end of P_INDEX.
    constants:
    begin of F__LTYPE, "type of line
    CMD like PC408-LTYPE value '/:', "command
    TXT like PC408-LTYPE value 's', "textline
    end of F__LTYPE.
    constants:
    begin of F__CMD, "commands
    NEWPAGE like PC408-LINDA value '<NEW-PAGE>',
    end of F__CMD.
    data: P_LIST like ABAPLIST occurs 1 with header line.
    data: OBJBIN like SOLISTI1 occurs 10 with header line,
    DOCDATA like SODOCCHGI1,
    OBJTXT like SOLISTI1 occurs 10 with header line,
    OBJPACK like SOPCKLSTI1 occurs 1 with header line,
    RECLIST like SOMLRECI1 occurs 1 with header line,
    OBJHEAD like SOLISTI1 occurs 1 with header line.
    INITIALIZATION *
    initialization.
    OBJBIN = ' | '.
    append OBJBIN.
    OBJPACK-HEAD_START = 1.
    SELECTION SCREEN *
    selection-screen begin of block BL1.
    parameters: S_ABKRS like PV000-ABKRS obligatory default 'ZA'.
    parameters: S_PERMO like T549Q-PABRP obligatory default '02'.
    parameters: S_PABRP like T549Q-PABRP obligatory.
    parameters: S_PABRJ like T549Q-PABRJ obligatory.
    select-options: S_PERNR for PA0001-PERNR.
    select-options: S_ORGEH for PA0001-ORGEH.
    parameters: PAY_VAR like BAPI7004-PAYSLIP_VARIANT default
    'ESS_PAYSLIPS' obligatory.
    selection-screen end of block BL1.
    AT SELECTION-SCREEN *
    at selection-screen.
    if SY-UCOMM ='ONLI'.
    if S_PABRP > 24 or S_PABRP < 1.
    message E999(YHR) with 'Improper Payroll Period'.
    endif.
    if S_PABRP > 9.
    MY_MONTH = S_PABRP - 10 + 1.
    STR_MY_MONTH = MY_MONTH.
    MY_YEAR = S_PABRJ + 1.
    STR_MY_YEAR = MY_YEAR.
    else.
    MY_MONTH = S_PABRP + 3.
    STR_MY_MONTH = MY_MONTH.
    MY_YEAR = S_PABRJ.
    STR_MY_YEAR = MY_YEAR.
    endif.
    modified by Coul
    if S_PERMO NE '2'.
    message E999(YHR) with 'Improper Payroll Period Parameters'.
    endif.
    MY_YEAR = S_PABRJ.
    STR_MY_YEAR = MY_YEAR.
    shift STR_MY_MONTH left deleting leading SPACE.
    shift STR_MY_MONTH right deleting trailing SPACE.
    translate STR_MY_MONTH using ' 0'.
    get payrol period first and last dates _ added by Coul
    SELECT SINGLE *
    FROM T549Q
    WHERE PERMO = S_PERMO "Period param.; 02 = semi-monthly
    AND PABRJ = S_PABRJ "Payroll period year
    AND PABRP = S_PABRP. "Payroll period no.
    W_BEGDA = T549Q-BEGDA.
    W_ENDDA = T549Q-ENDDA.
    concatenate STR_MY_YEAR STR_MY_MONTH '01' into W_BEGDA.
    call function 'HR_HCP_GET_LAST_DAY_OF_MONTH'
    exporting
    IM_DATE = W_BEGDA
    importing
    EX_DATE_IS_MONTHEND =
    EX_LAST_DAY_OF_MONTH = W_ENDDA.
    select PA0001PERNR PA0001ABKRS PA0001~ENAME
    into corresponding fields of table ITAB
    from PA0001
    join PA0000
    on PA0000PERNR eq PA0001PERNR
    join HRPY_RGDIR
    on PA0001PERNR eq HRPY_RGDIRPERNR
    where PA0001~PERNR in S_PERNR
    where PA0001~ORGEH in S_ORGEH
    and PA0001~ABKRS eq S_ABKRS
    and PA0000~STAT2 eq '3'
    and PA0001~ENDDA ge '99991231'
    and PA0001~PLANS ne '99999999'
    group by PA0001PERNR PA0001ABKRS PA0001~ENAME.
    if SY-SUBRC <> 0.
    message E999(YHR) with 'No record(s) found.'.
    endif.
    endif. "SY-UCOMM ='ONLI'
    START-OF-SELECTION *
    start-of-selection.
    write : / 'Payroll Area : ',S_ABKRS.
    write : / 'Payroll Period/Year : ',STR_MY_MONTH,'-',STR_MY_YEAR.
    write : / 'System Date : ', SY-DATUM.
    write : / 'System Time : ', SY-UZEIT.
    write : / 'User Name : ', SY-UNAME.
    write : / SY-ULINE.
    sort ITAB by PERNR.
    loop at ITAB.
    clear : P_INFO, P_P_FORM, P_FORM, P_INDEX, P_LIST, OBJBIN,
    DOCDATA, OBJTXT, OBJPACK, RECLIST, TAB_LINES.
    refresh : P_P_FORM, P_FORM, P_INDEX, P_LIST, OBJBIN,
    OBJTXT, OBJPACK, RECLIST.
    select single *
    from HRPY_RGDIR
    where PERNR eq ITAB-PERNR
    and FPBEG ge W_BEGDA
    and FPEND le W_ENDDA
    and SRTZA eq 'A'.
    if SY-SUBRC = 0.
    call function 'GET_PAYSLIP'
    exporting
    EMPLOYEE_NUMBER = ITAB-PERNR
    SEQUENCE_NUMBER = HRPY_RGDIR-SEQNR
    PAYSLIP_VARIANT = PAY_VAR
    importing
    RETURN = RETURN
    P_INFO = P_INFO
    tables
    P_FORM = P_FORM.
    check RETURN is initial.
    loop at P_FORM
    where LINDA eq F__CMD-NEWPAGE
    and LTYPE eq F__LTYPE-CMD.
    P_INDEX-INDEX = SY-TABIX.
    append P_INDEX.
    endloop.
    P_IDX = 1.
    refresh P_P_FORM.
    append lines of P_FORM from P_IDX to P_INDEX-INDEX
    to P_P_FORM.
    P_IDX = P_INDEX-INDEX.
    export P_P_FORM to memory id '%%_P_FORM_%%'.
    export P_INFO to memory id '%%_P_INFO_%%'.
    submit RPCEDT_LIST_TO_MEMORY exporting list
    to memory and return.
    call function 'LIST_FROM_MEMORY'
    tables
    LISTOBJECT = P_LIST.
    call function 'TABLE_COMPRESS'
    IMPORTING
    COMPRESSED_SIZE =
    tables
    IN = P_LIST
    OUT = OBJBIN
    exceptions
    others = 1.
    OBJHEAD = 'Objhead'.
    append OBJHEAD.
    preparing subject
    concatenate W_ENDDA(6)
    ' Payslip-' ITAB-ENAME0(28) '(' ITAB-PERNR4(4) ')'
    into DOCDATA-OBJ_DESCR.
    DOCDATA-OBJ_NAME = 'Pay Slip'.
    DOCDATA-OBJ_LANGU = SY-LANGU.
    OBJTXT = 'Pay Slip.'.
    append OBJTXT.
    OBJTXT = DOCDATA-OBJ_DESCR.
    append OBJTXT.
    OBJTXT = 'Have a nice day.'.
    append OBJTXT.
    Write Packing List (Main)
    3 has been fixed because OBJTXT has fix three lines
    read table OBJTXT index 3.
    DOCDATA-DOC_SIZE = ( 3 - 1 ) * 255 + strlen( OBJTXT ).
    clear OBJPACK-TRANSF_BIN.
    OBJPACK-HEAD_START = 1.
    OBJPACK-HEAD_NUM = 0.
    OBJPACK-BODY_START = 1.
    OBJPACK-BODY_NUM = 3.
    OBJPACK-DOC_TYPE = 'RAW'.
    append OBJPACK.
    Create Message Attachment
    Write Packing List (Attachment)
    ATT_TYPE = 'ALI'.
    describe table OBJBIN lines TAB_LINES.
    read table OBJBIN index TAB_LINES.
    OBJPACK-DOC_SIZE =
    ( TAB_LINES - 1 ) * 255 + strlen( OBJBIN ).
    OBJPACK-TRANSF_BIN = 'X'.
    OBJPACK-HEAD_START = 1.
    OBJPACK-HEAD_NUM = 0.
    OBJPACK-BODY_START = 1.
    OBJPACK-BODY_NUM = TAB_LINES.
    OBJPACK-DOC_TYPE = ATT_TYPE.
    OBJPACK-OBJ_NAME = 'ATTACHMENT'.
    OBJPACK-OBJ_DESCR = 'Payslip'.
    append OBJPACK.
    Create receiver list
    refresh RECLIST.
    clear RECLIST.
    select single *
    from PA0105
    where PERNR eq ITAB-PERNR
    and SUBTY eq 'MAIL'
    and SUBTY eq '0001'
    and USRID ne ''
    and PA0105~ENDDA ge '99991231'.
    if SY-SUBRC = 0.
    RECLIST-RECEIVER = PA0105-USRID.
    translate RECLIST-RECEIVER to lower case.
    ITAB-USRID_LONG = RECLIST-RECEIVER.
    RECLIST-REC_TYPE = 'U'.
    append RECLIST.
    Send the document
    call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    exporting
    DOCUMENT_DATA = DOCDATA
    PUT_IN_OUTBOX = 'X'
    PUT_IN_OUTBOX = ''
    COMMIT_WORK = 'X'
    IMPORTING
    SENT_TO_ALL =
    NEW_OBJECT_ID =
    tables
    PACKING_LIST = OBJPACK
    OBJECT_HEADER = OBJHEAD
    CONTENTS_BIN = OBJBIN
    CONTENTS_TXT = OBJTXT
    CONTENTS_HEX =
    OBJECT_PARA =
    OBJECT_PARB =
    RECEIVERS = 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.
    ITAB-MTEXT = 'Message Not Sent to : '.
    else.
    ITAB-MTEXT = 'Message Sent to : '.
    endif.
    else.
    ITAB-MTEXT = 'Message Not Sent to : '.
    endif.
    else. "SY-SUBRC Not = 0 HRPY_RGDIR
    ITAB-MTEXT = 'Payroll data not found : '.
    endif. " end of SY-SUBRC = 0. HRPY_RGDIR
    modify ITAB.
    endloop. "end loop at ITAB
    sort ITAB by MTEXT PERNR.
    loop at ITAB.
    at new MTEXT.
    uline.
    write : / ITAB-MTEXT color 4 intensified on.
    write : / 'Emp. Code' color 2 intensified on,
    12 'Emp. Name' color 2 intensified on,
    54 'Email ID' color 2 intensified on.
    endat.
    write : / ITAB-PERNR, 12 ITAB-ENAME, 54 ITAB-USRID_LONG.
    endloop.

    hi,
       You can send the list output to spool.
    print-on ...
    PERFORM REPORT_OUTPUT.
    print-off.
    From there, you can convert that to pdf.
    fm CONVERT_ABAPSPOOLJOB_2_PDF
    Getting that pdf conversion done, you can send thE same to mail..
    fm SO_NEW_DOCUMENT_ATT_SEND_API1
    Regards,
    Sailaja.

Maybe you are looking for