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

Email simple list with formating

Former Member
0 Likes
607

I wanted to email formated o/p of simple list..

thanks

I wanted to email formated o/p of simple list..

thanks

3 REPLIES 3
Read only

Former Member
0 Likes
565

http://www.geocities.com/mpioud/Z_EMAIL_ABAP_REPORT.html

Check the above link and you would get the logic.

Read only

Former Member
0 Likes
565

You need to start by verifiying with your Basis Team that your system is set up for e-mail-ing currently.

Is it e-mail enabled?

Read only

Former Member
0 Likes
565
Hope the below code helps you.

*&---------------------------------------------------------------------*
*& Report  ZMUB_EMAIL_TEST                                             *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ZMUB_EMAIL_TEST                         .

INCLUDE zmubinc_email.

*----------------------------------------------------------------------
* DATA
*----------------------------------------------------------------------
DATA : itab LIKE tline OCCURS 0 WITH HEADER LINE.
DATA : file_name TYPE string.
data : path like PCFILE-PATH.
data : extension(5) type c.
data : name(100) type c.


*----------------------------------------------------------------------
* SELECTION SCREEN
*----------------------------------------------------------------------
PARAMETERS : receiver TYPE somlreci1-receiver lower case.
PARAMETERS : p_file LIKE rlgrap-filename OBLIGATORY.


*----------------------------------------------------------------------
* AT SELECTION SCREEN
*----------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CLEAR p_file.

  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = p_file.


*----------------------------------------------------------------------
* START-OF-SELECTION
*----------------------------------------------------------------------
START-OF-SELECTION.
  PERFORM ml_customize USING 'Tst' 'Testing'.
  PERFORM ml_addrecp USING receiver 'U'.
  PERFORM upl.
  PERFORM doconv TABLES itab objbin.
  PERFORM ml_prepare USING 'X' extension name.
  PERFORM ml_dosend.


  SUBMIT rsconn01 WITH mode EQ 'INT' AND RETURN.


*----------------------------------------------------------------------
* FORM
*----------------------------------------------------------------------

FORM upl.

  file_name = p_file.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                = file_name
      filetype                = 'BIN'
    TABLES
      data_tab                = itab
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      OTHERS                  = 17.



    path = file_name.

    CALL FUNCTION 'PC_SPLIT_COMPLETE_FILENAME'
      EXPORTING
        complete_filename = path
*   CHECK_DOS_FORMAT =
      IMPORTING
*   DRIVE =
        EXTENSION = extension
        NAME = name
*   NAME_WITH_EXT =
*   PATH =
      EXCEPTIONS
        INVALID_DRIVE = 1
        INVALID_EXTENSION = 2
        INVALID_NAME = 3
        INVALID_PATH = 4
        OTHERS = 5  .


ENDFORM. "upl





*&---------------------------------------------------------------------*
*&  Include           ZMUBINC_EMAIL                                    *
*&---------------------------------------------------------------------*

*----------------------------------------------------------
* Data
*----------------------------------------------------------
DATA: docdata LIKE sodocchgi1,
      objpack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
      objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
      objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
      objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
      objhex LIKE solix OCCURS 10 WITH HEADER LINE,
      reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE.

DATA: tab_lines TYPE i,
      doc_size TYPE i,
      att_type LIKE soodk-objtp.

DATA: listobject LIKE abaplist OCCURS 1 WITH HEADER LINE.


*----------------------------------------------------------
* FORM
*----------------------------------------------------------
FORM ml_customize USING objname objdesc.

*----------- Clear Variables
  CLEAR docdata.
  REFRESH objpack.
  CLEAR objpack.
  REFRESH objhead.
  REFRESH objtxt.
  CLEAR objtxt.
  REFRESH objbin.
  CLEAR objbin.
  REFRESH objhex.
  CLEAR objhex.
  REFRESH reclist.
  CLEAR reclist.
  REFRESH listobject.
  CLEAR listobject.
  CLEAR tab_lines.
  CLEAR doc_size.
  CLEAR att_type.

*  --------- Set Variables
  docdata-obj_name = objname.
  docdata-obj_descr = objdesc.

ENDFORM. "ml_customize


*----------------------------------------------------------
* FORM
*----------------------------------------------------------
FORM ml_addrecp USING preceiver prec_type.

  CLEAR reclist.
  reclist-receiver = preceiver.
  reclist-rec_type = prec_type.
  APPEND reclist.

ENDFORM. "ml_customize


*----------------------------------------------------------
* FORM
*----------------------------------------------------------
FORM ml_addtxt USING ptxt.

  CLEAR objtxt.
  objtxt = ptxt.
  APPEND objtxt.

ENDFORM. "ml_customize


*----------------------------------------------------------
* FORM
*----------------------------------------------------------
FORM ml_prepare USING bypassmemory whatatt_type whatname.

  IF bypassmemory = ''.
*--------- Fetch List From Memory
    CALL FUNCTION 'LIST_FROM_MEMORY'
    TABLES
    listobject = listobject
    EXCEPTIONS
    OTHERS = 1.

    IF sy-subrc <> 0.
    MESSAGE ID '61' TYPE 'E' NUMBER '731'
    WITH 'LIST_FROM_MEMORY'.
    ENDIF.


    CALL FUNCTION 'TABLE_COMPRESS'
*     IMPORTING
*     COMPRESSED_SIZE =
    TABLES
    in = listobject
    out = objbin
    EXCEPTIONS
    OTHERS = 1
    .
    IF sy-subrc <> 0.
    MESSAGE ID '61' TYPE 'E' NUMBER '731'
    WITH 'TABLE_COMPRESS'.
    ENDIF.

  ENDIF.

* -----------
* Header Data
* Already Done Thru FM
* -----------


* -----------
* Main Text
* Already Done Thru FM
* -----------

* -----------
* Packing Info For Text Data
* -----------
  DESCRIBE TABLE objtxt LINES tab_lines.
  READ TABLE objtxt INDEX tab_lines.
  docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
  CLEAR objpack-transf_bin.
  objpack-head_start = 1.
  objpack-head_num = 0.
  objpack-body_start = 1.
  objpack-body_num = tab_lines.
  objpack-doc_type = 'TXT'.
  APPEND objpack.

* -----------
* Packing Info Attachment
* -----------
  att_type = whatatt_type..
  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 = whatname.
  APPEND objpack.

* -----------
* Receiver List
* Already done thru fm
* -----------

ENDFORM. "ml_prepare

*----------------------------------------------------------
* FORM
*----------------------------------------------------------
FORM ml_dosend.

  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data = docdata
      put_in_outbox = 'X'
      commit_work = 'X' "used from rel. 6.10
*   IMPORTING
*   SENT_TO_ALL =
*   NEW_OBJECT_ID =
    TABLES
      packing_list = objpack
      object_header = objhead
      contents_bin = objbin
      contents_txt = objtxt
*   CONTENTS_HEX = objhex
*   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.
    MESSAGE ID 'SO' TYPE 'S' NUMBER '023'
    WITH docdata-obj_name.
  ENDIF.

ENDFORM. "ml_customize

*----------------------------------------------------------
* FORM
*----------------------------------------------------------
FORM ml_spooltopdf USING whatspoolid.

  DATA : pdf LIKE tline OCCURS 0 WITH HEADER LINE.

*  -------------- Call Function
  CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
    EXPORTING
      src_spoolid = whatspoolid
    TABLES
      pdf = pdf
    EXCEPTIONS
      err_no_otf_spooljob = 1
      OTHERS = 12.

*  ------------- Convert
  PERFORM doconv TABLES pdf objbin.

ENDFORM. "ml_spooltopdf

*----------------------------------------------------------
* FORM
*----------------------------------------------------------

FORM doconv TABLES
  mypdf STRUCTURE tline
  outbin STRUCTURE solisti1.

*  -------- Data
  DATA : pos TYPE i.
  DATA : len TYPE i.

*  ------------ Loop And Put Data

  LOOP AT mypdf.
    pos = 255 - len.
    IF pos > 134. "length of pdf_table
    pos = 134.
    ENDIF.
    outbin+len = mypdf(pos).
    len = len + pos.
    IF len = 255. "length of out (contents_bin)
    APPEND outbin.
    CLEAR: outbin, len.
    IF pos < 134.
    outbin = mypdf+pos.
    len = 134 - pos.
    ENDIF.
    ENDIF.
  ENDLOOP.
  IF len > 0.
    APPEND outbin.
  ENDIF.

ENDFORM. "doconv




Above program fetches data from a file into internal 
table, format and send it in a mail.

Instead you can directly use from the step after upload.

Kind Regards
Eswar