Registration

Dear SAP Community Member,
In order to fully benefit from what the SAP Community has to offer, please register at:
http://scn.sap.com
Thank you,
The SAP Community team.
Skip to end of metadata
Go to start of metadata

Author: Fareedas

Date: 25/04/2008

Introduction: This Simple Program Shows You How To Send Samrtform As .Xls  Spread Sheet

Error rendering macro 'code': Invalid value specified for parameter 'lang'
TABLES: EKKO.
PARAMETERS: P_EMAIL TYPE SOMLRECI1-RECEIVER
DEFAULT 'test@sapdev.co.uk'.
TYPES: BEGIN OF T_EKPO,
EBELN TYPE EKPO-EBELN,
EBELP TYPE EKPO-EBELP,
AEDAT TYPE EKPO-AEDAT,
MATNR TYPE EKPO-MATNR,
END OF T_EKPO.
DATA: IT_EKPO TYPE STANDARD TABLE OF T_EKPO INITIAL SIZE 0,
WA_EKPO TYPE T_EKPO.
TYPES: BEGIN OF T_CHAREKPO,
EBELN(10) TYPE C,
EBELP(5) TYPE C,
AEDAT(8) TYPE C,
MATNR(18) TYPE C,
END OF T_CHAREKPO.
DATA: WA_CHAREKPO TYPE T_CHAREKPO.
DATA: IT_MESSAGE TYPE STANDARD TABLE OF SOLISTI1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: IT_ATTACH TYPE STANDARD TABLE OF SOLISTI1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: T_PACKING_LIST LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
T_CONTENTS LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
T_RECEIVERS LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
T_ATTACHMENT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
T_OBJECT_HEADER LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
W_CNT TYPE I,
W_SENT_ALL(1) TYPE C,
W_DOC_DATA LIKE SODOCCHGI1,
GD_ERROR TYPE SY-SUBRC,
GD_RECIEVER TYPE SY-SUBRC.
************************************************************************
*START_OF_SELECTION
START-OF-SELECTION.
  RETRIEVE SAMPLE DATA FROM TABLE EKPO
  PERFORM DATA_RETRIEVAL.
  POPULATE TABLE WITH DETAISL TO BE ENTERED INTO .XLS FILE
  PERFORM BUILD_XLS_DATA_TABLE.
************************************************************************
*END-OF-SELECTION
END-OF-SELECTION.
  POPULATE MESSAGE BODY TEXT
  PERFORM POPULATE_EMAIL_MESSAGE_BODY.
*Send file by email as .xls speadsheet
  PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT
  TABLES IT_MESSAGE
  IT_ATTACH
  USING P_EMAIL
  'Example .xls documnet attachment'
  'XLS'
  'filename'
  ' '
  ' '
  ' '
  CHANGING GD_ERROR
  GD_RECIEVER.
  INSTRUCTS MAIL SEND PROGRAM FOR SAPCONNECT TO SEND EMAIL(RSCONN01)
  PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.
  &---------------------------------------------------------------------
*& Form DATA_RETRIEVAL
  &---------------------------------------------------------------------
  RETRIEVE DATA FORM EKPO TABLE AND POPULATE ITAB IT_EKKO
  ----------------------------------------------------------------------
  FORM DATA_RETRIEVAL.
  SELECT EBELN EBELP AEDAT MATNR
  UP TO 10 ROWS
  FROM EKPO
  INTO TABLE IT_EKPO.
ENDFORM. " DATA_RETRIEVAL
*&---------------------------------------------------------------------
**& Form BUILD_XLS_DATA_TABLE
*&---------------------------------------------------------------------
*BUILD DATA TABLE FOR .
*XLS DOCUMENT
*----------------------------------------------------------------------
FORM BUILD_XLS_DATA_TABLE.
  CONSTANTS: CON_CRET TYPE X VALUE '0D', "OK for non Unicode
  CON_TAB TYPE X VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
*constants:
  CON_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
  CON_CRET TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.
  CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
  INTO IT_ATTACH SEPARATED BY CON_TAB.
  CONCATENATE CON_CRET IT_ATTACH INTO IT_ATTACH.
  APPEND IT_ATTACH.
  LOOP AT IT_EKPO INTO WA_CHAREKPO.
    CONCATENATE WA_CHAREKPO-EBELN WA_CHAREKPO-EBELP
    WA_CHAREKPO-AEDAT WA_CHAREKPO-MATNR
    INTO IT_ATTACH SEPARATED BY CON_TAB.
    CONCATENATE CON_CRET IT_ATTACH INTO IT_ATTACH.
    APPEND IT_ATTACH.
  ENDLOOP.
ENDFORM. " BUILD_XLS_DATA_TABLE
*&---------------------------------------------------------------------
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
*&---------------------------------------------------------------------
*SEND EMAIL
*----------------------------------------------------------------------
FORM SEND_FILE_AS_EMAIL_ATTACHMENT TABLES PIT_MESSAGE
PIT_ATTACH
USING P_EMAIL
P_MTITLE
P_FORMAT
P_FILENAME
P_ATTDESCRIPTION
P_SENDER_ADDRESS
P_SENDER_ADDRES_TYPE
CHANGING P_ERROR
P_RECIEVER.
  DATA: LD_ERROR TYPE SY-SUBRC,
  LD_RECIEVER TYPE SY-SUBRC,
  LD_MTITLE LIKE SODOCCHGI1-OBJ_DESCR,
  LD_EMAIL LIKE SOMLRECI1-RECEIVER,
  LD_FORMAT TYPE SO_OBJ_TP ,
  LD_ATTDESCRIPTION TYPE SO_OBJ_NAM ,
  LD_ATTFILENAME TYPE SO_OBJ_DES ,
  LD_SENDER_ADDRESS LIKE SOEXTRECI1-RECEIVER,
  LD_SENDER_ADDRESS_TYPE LIKE SOEXTRECI1-ADR_TYP,
  LD_RECEIVER LIKE SY-SUBRC.
  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] = PIT_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.                    "
*&---------------------------------------------------------------------
**& Form INITIATE_MAIL_EXECUTE_PROGRAM
*&---------------------------------------------------------------------
*INSTRUCTS MAIL SEND PROGRAM FOR SAPCONNECT TO SEND EMAIL.
*----------------------------------------------------------------------
FORM INITIATE_MAIL_EXECUTE_PROGRAM.
  WAIT UP TO 2 SECONDS.
  SUBMIT RSCONN01 WITH MODE = 'INT'
  WITH OUTPUT = 'X'
  AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*&---------------------------------------------------------------------
**& Form POPULATE_EMAIL_MESSAGE_BODY
*&---------------------------------------------------------------------
*POPULATE MESSAGE BODY TEXT
*----------------------------------------------------------------------
FORM POPULATE_EMAIL_MESSAGE_BODY.
  REFRESH IT_MESSAGE.
  IT_MESSAGE = 'Please find attached a list test ekpo records'.
  APPEND IT_MESSAGE.
ENDFORM. " POPULATE_EMAIL_MESSAGE_BODY

 

 

Regards

Fareeads

  • No labels