How to send ALV Grid report to Email?

hai all,
How to send ALV Grid report to Email.
please its very urgent.....

Hi,
when u run the Alv, u will button 'Mail Recepiant' in tool bar.When u click it and enter to new screen, go to the Recipient Tab(down) enter ur maild id and click 'Send' button on tool bar.
or.
if u want to send the Alv content to mail id thru prg, go thru the following code.
                          TABLES
TABLES: BSID. " Accounting: Secondary Index for Customers.
                          TYPE-POOLS
TYPE-POOLS: SLIS.
                          INTERNAL TABLES
    Internal table to hold Customer data.
DATA: BEGIN OF TB_BSID OCCURS 0,
        BUKRS   LIKE BSID-BUKRS,    " Company code
        KUNNR   LIKE BSID-KUNNR,    " Customer number
        AUGDT   LIKE BSID-AUGDT,    " Clearing Date
        BLDAT   LIKE BSID-BLDAT,    " Doc date in document
        SHKZG   LIKE BSID-SHKZG,    " Debit/credit indicator
        DMBTR   LIKE BSID-DMBTR,    " Amount in local currency
        ZFBDT   LIKE BSID-ZFBDT,    " Baseline date for due date calc
        ZBD1T   LIKE BSID-ZBD1T,    " Cash discount days 1
        ZBD2T   LIKE BSID-ZBD2T,    " Cash discount days 2
        ZBD3T   LIKE BSID-ZBD3T,    " Net Payment Terms Period
        REBZG   LIKE BSID-REBZG,    " No Of the Inv the Tran Belongs to
        REBZT   LIKE BSID-REBZT,    " Follow-On Document Type
      END OF TB_BSID.
    Internal table to hold Open Items.
DATA: TB_BSID_OPEN LIKE TABLE OF TB_BSID WITH HEADER LINE.
    Internal table to hold Cleared Items.
DATA: TB_BSAD_CLEAR LIKE TABLE OF TB_BSID WITH HEADER LINE.
    Internal table to hold General Data in Customer Master
DATA: BEGIN OF TB_KNA1 OCCURS 0,
        KUNNR LIKE KNA1-KUNNR,      " Customer Number
        NAME1 LIKE KNA1-NAME1,      " Name Line 1
        TELF1 LIKE KNA1-TELF1,      " Telephone Number
        ADRNR LIKE KNA1-ADRNR,      " Address
      END OF TB_KNA1.
    Internal table to hold Customer Master (Company Code)
DATA: BEGIN OF TB_KNB1 OCCURS 0,
        KUNNR LIKE KNB1-KUNNR,     " Customer Number
        BUKRS LIKE KNB1-BUKRS,     " Company code
        ERDAT LIKE KNB1-ERDAT,     " Rec Created Date
        ZAMIB LIKE KNB1-ZAMIB,     " DMS Managed Indicator
      END OF TB_KNB1.
    Internal table to hold Final Output Data
DATA: BEGIN OF TB_FINAL OCCURS 0,
        KUNNR           LIKE KNA1-KUNNR, " Customer Number
        NAME1           LIKE KNA1-NAME1, " Name Line 1
        ADDRESS1(25)    TYPE C,          " Address line 1
        ADDRESS2(25)    TYPE C,          " Address line 2
        ADDRESS3(25)    TYPE C,          " Address line 3
        ADDRESS4(25)    TYPE C,          " Address line 4
        PHONE           LIKE KNA1-TELF1, " Telephone Number
        DAYS_SLOW(3)    TYPE C,          " Days Slow
        LAST_DATE(8)    TYPE C,          " Date of Last Invoice
        AVG(4)          TYPE C,          " Average Days to Pay
        CURRENT(10)     TYPE N,          " Current
        AVG_1_30(10)    TYPE N,          " 1-30 past due
        AVG_31_60(10)   TYPE N,          " 31-60 past due
        AVG_61_90(10)   TYPE N,          " 61-90 past due
        AVG_90G(10)     TYPE N,          " 90+ past due
      END OF TB_FINAL.
     ALV Internal tables
DATA : TB_FIELDCAT       TYPE SLIS_T_FIELDCAT_ALV,  " Field Catalog
       TB_EVENTS         TYPE SLIS_T_EVENT,         " ALV Events
       TB_COMMENTS       TYPE SLIS_T_LISTHEADER.    " Comment
    Internal tables for the sending mail data
DATA: TB_OBJPACK  TYPE SOPCKLSTI1 OCCURS 2  WITH HEADER LINE,
      TB_OBJHEAD  TYPE SOLISTI1   OCCURS 1  WITH HEADER LINE,
      TB_OBJTXT   TYPE SOLISTI1   OCCURS 10 WITH HEADER LINE,
      TB_RECLIST  TYPE SOMLRECI1  OCCURS 5  WITH HEADER LINE,
      TB_OBJBIN   LIKE SOLISTI1   OCCURS 0  WITH HEADER LINE,
      TB_DOC_CHNG TYPE SODOCCHGI1.
    Internal table to get mail Receivers Address
DATA: TB_ZRECEIVE LIKE YSMTP_ADDRESS OCCURS 0 WITH HEADER LINE.
                           STRUCTURES
DATA: X_SADR            TYPE SADR,                 " For Address
      X_FIELDCAT        TYPE SLIS_FIELDCAT_ALV,    " For Field Catalog
      X_LAYOUT          TYPE SLIS_LAYOUT_ALV,      " For Layout
      X_EVENTS          TYPE SLIS_ALV_EVENT,       " For Events
      X_COMMENTS        TYPE SLIS_LISTHEADER,      " For Comments
      X_ADDR1_SEL       LIKE ADDR1_SEL,            " For Address
      WA_FAEDE          TYPE FAEDE.                " For FAEDE struct
                           VARIABLES
DATA: G_REPID        LIKE SY-REPID,             " Prog ID
      G_DAYS_SLOW(3) TYPE N,                    " Days Slow
      G_OPEN         TYPE I,                    " Counter
      G_AVG(4)       TYPE C,                    " Avg Days
      G_COUNT        TYPE I,                    " Counter
      G_TITLE        TYPE SOLISTI1-LINE,        " Description
      G_TAB_LINES    TYPE SY-TABIX,             " Internal data count
      G_REC_COUNT    TYPE I,                    " Total records
      G_CURR_BAL     TYPE N,                    " Account balance
      G_FILE_NAME    LIKE EDI_PATH-PTHNAM.      " Output File Name
                           CONSTANTS
CONSTANTS: C_D            TYPE C VALUE 'D',     " Account type
           C_X            TYPE C VALUE 'X',     " Check Value
           C_0(4)         TYPE N VALUE '0.00',  " Constant for char
           C_1(2)         TYPE C VALUE '01',    " Posting key const
           C_H            TYPE C VALUE 'H',     " For Commenet-Type
           C_TXT(3)       TYPE N VALUE 'TXT',   " File type
           C_RAW(3)       TYPE C VALUE 'RAW',   " File type
           C_DELIMITER    TYPE X VALUE '09',    " ASCII CODE LINE
           C_TOP_OF_PAGE  TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
           C_INTERFACE    TYPE YWFSALOFFICNOTIF-INTERFACE_ID VALUE 'AP',
           C_FILENAME(20) TYPE N VALUE 'TEXT.TXT'," File name
           C_TITLE(30)    TYPE N VALUE 'Z21614_DB_CREDIT_AGENCY',
           C_Z001 TYPE RF035-RASID VALUE 'Z001'." Net 30/60/90/120/150
                           SELECTION SCREEN.
Selection Screen for Selection Criteria.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-T01.
SELECT-OPTIONS:  S_BUKRS FOR  BSID-BUKRS OBLIGATORY,    " Company Code
                 S_BLDAT FOR  BSID-BLDAT," OBLIGATORY,  " Doc Date
                 S_KUNNR FOR  BSID-KUNNR,               " Cust No
                 S_ZUONR FOR  BSID-ZUONR.               " Assignment
PARAMETERS:      P_GRACE(2)   TYPE N OBLIGATORY,        " Grace Days
                 P_ZAMIB LIKE KNB1-ZAMIB AS CHECKBOX.   " DMS Indicator
SELECTION-SCREEN END OF BLOCK B1.
Selection Screen for Output Options.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-T02.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 01.
PARAMETERS: P_REPORT RADIOBUTTON GROUP R1.             " Report Only
SELECTION-SCREEN COMMENT 5(25) TEXT-016.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 01.
PARAMETERS: P_DOWN RADIOBUTTON GROUP R1.               " Dwnld to Unix
SELECTION-SCREEN COMMENT 5(25) TEXT-017.
SELECTION-SCREEN POSITION 30.
PARAMETERS: P_FILE LIKE FILENAME-FILEINTERN DEFAULT
                             'Z21614_DB_CREDIT_AGENCY'. " File Name
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
Selection Screen for E-mail.
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-T03.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 01.
PARAMETERS: P_EMAIL AS CHECKBOX.                        " E-mail
SELECTION-SCREEN COMMENT 5(25) TEXT-018.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B3.
                           INITIALIZATION
INITIALIZATION.
  G_REPID = SY-REPID.
               AT SELECTION SCREEN.                                  *
AT SELECTION-SCREEN.
Validation of selection screen entries
perform validate_data.
                           START-OF-SELECTION
START-OF-SELECTION.
Select Data from Customer Master (Company Code)
  PERFORM SELECT_KNB1.
Select Custmer Open Items.
  PERFORM SELECT_CUSTOMER_OPEN_ITEMS.
Select Custmer Cleared Items.
  PERFORM SELECT_CUSTOMER_CLEARED_ITEMS.
Select General Data in Customer Master
  PERFORM SELECT_KNA1.
Populate Final Output Data.
  PERFORM POPULATE_TB_FINAL.
                   End of selection                                  *
END-OF-SELECTION.
If both display report and send email is checked
  IF P_REPORT = C_X AND P_EMAIL  = C_X.
    MESSAGE E999 WITH
      'Select One Among Report Only & Send E-mail'(023).
When Radiobutton for Email or if the program is run background
  ELSEIF ( P_EMAIL = C_X OR SY-BATCH = C_X ).
  To send the mail
    PERFORM SEND_EMAIL.
  ELSEIF P_REPORT = C_X .
  To display the Final Output data using ALV's
    PERFORM DISPLAY_ALV_REPORT.
  ENDIF.
Transfering data to file when downloading to Unix
  IF P_DOWN = C_X.
    IF G_REC_COUNT IS INITIAL.
      MESSAGE I999 WITH
        'No Records Found For Selection Criteria'(024).
      EXIT.
    ELSE.
      IF NOT G_FILE_NAME IS INITIAL.
      Trasefering data to file
        PERFORM TRANSFER_DATA_FILE.
      Interface Audit report
        PERFORM WRITE_REPORT.
      ENDIF.
    ENDIF.
  ENDIF.
                          F O R M S
*&      Form  VALIDATE_DATA
      Validating selection-screen entries
FORM VALIDATE_DATA.
Local variables
  DATA : L_BUKRS LIKE BSEG-BUKRS,          " For Company Code
         L_KUNNR LIKE BSEG-KUNNR.          " For Customer Number
Validate the Company code.
  SELECT SINGLE BUKRS
    INTO L_BUKRS
    FROM T001
   WHERE BUKRS IN S_BUKRS.
  IF SY-SUBRC <> 0.
    MESSAGE E999 WITH 'Enter valid Company Code'(025).
  ENDIF.
Validate the Customer number
  IF NOT S_KUNNR[] IS INITIAL.
    SELECT SINGLE KUNNR
      INTO L_KUNNR
      FROM KNA1
     WHERE KUNNR IN S_KUNNR.
    IF SY-SUBRC <> 0.
      MESSAGE E999 WITH 'Enter valid Customer Number'(026).
    ENDIF.
  ENDIF.
ENDFORM.                    " VALIDATE_DATA
*&      Form  SELECT_KNB1
      Select Data from Customer Master (Company Code)
FORM SELECT_KNB1 .
  CLEAR: TB_KNB1,
         TB_KNB1[].
  SELECT KUNNR
         BUKRS
         ERDAT
         ZAMIB
         FROM KNB1
         INTO TABLE TB_KNB1
         WHERE BUKRS IN S_BUKRS
           AND KUNNR IN S_KUNNR.
  IF SY-SUBRC = 0.
  Sort TB_KNB1 by Customer no & Rec Created Date
    SORT TB_KNB1 BY KUNNR ERDAT DESCENDING.
  ENDIF.
ENDFORM.                    " SELECT_KNB1
*&      Form  SELECT_CUSTOMER_OPEN_ITEMS
      Select Custmer Open Items.
FORM SELECT_CUSTOMER_OPEN_ITEMS .
  CLEAR: TB_BSID,
         TB_BSID[].
  SELECT  A~BUKRS
          B~KUNNR
          B~AUGDT
          B~BLDAT
          B~SHKZG
          B~DMBTR
          B~ZFBDT
          B~ZBD1T
          B~ZBD2T
          B~ZBD3T
          B~REBZG
          B~REBZT
     INTO TABLE TB_BSID
     FROM BKPF AS A JOIN BSID AS B
       ON ABUKRS = BBUKRS
      AND ABELNR = BBELNR
      AND AGJAHR = BGJAHR
    WHERE A~BUKRS IN S_BUKRS
      AND A~BLDAT IN S_BLDAT
      AND B~KUNNR IN S_KUNNR
      AND B~ZUONR IN S_ZUONR
      AND B~BSCHL = C_1.
  IF SY-SUBRC = 0.
  DMS Managed Indicator  = ‘X’.
    IF P_ZAMIB = C_X.
      LOOP AT TB_KNB1 WHERE ZAMIB = SPACE.
        DELETE TB_BSID WHERE BUKRS = TB_KNB1-BUKRS
                         AND KUNNR = TB_KNB1-KUNNR.
      ENDLOOP.
    ENDIF.
  Transfering Open Items from TB_BSID to TB_BSID_OPEN
    TB_BSID_OPEN[] = TB_BSID[].
  ENDIF.
ENDFORM.                    " SELECT_CUSTOMER_OPEN_ITEMS
*&      Form  SELECT_CUSTOMER_CLEARED_ITEMS
      Select Custmer Cleared Items.
FORM SELECT_CUSTOMER_CLEARED_ITEMS .
  CLEAR: TB_BSAD_CLEAR,
         TB_BSAD_CLEAR[].
  SELECT   A~BUKRS
           B~KUNNR
           B~AUGDT
           B~BLDAT
           B~SHKZG
           B~DMBTR
           B~ZFBDT
           B~ZBD1T
           B~ZBD2T
           B~ZBD3T
           B~REBZG
           B~REBZT
      INTO TABLE TB_BSAD_CLEAR
      FROM BKPF AS A JOIN BSAD AS B
        ON ABUKRS = BBUKRS
      AND  ABELNR = BBELNR
      AND  AGJAHR = BGJAHR
     WHERE A~BUKRS IN S_BUKRS
       AND A~BLDAT IN S_BLDAT
       AND B~KUNNR IN S_KUNNR
       AND B~ZUONR IN S_ZUONR
       AND B~BSCHL = C_1.
  IF SY-SUBRC = 0.
  DMS Managed Indicator = ‘X’.
    IF P_ZAMIB = C_X.
      LOOP AT TB_KNB1 WHERE ZAMIB = SPACE.
        DELETE TB_BSID WHERE BUKRS = TB_KNB1-BUKRS
                         AND KUNNR = TB_KNB1-KUNNR.
      ENDLOOP.
    ENDIF.
  Sort TB_BSID_CLEAR by Customer number
    SORT TB_BSAD_CLEAR BY KUNNR.
  ENDIF.
Append lines of TB_BSID_CLEAR to table TB_BSID
  APPEND LINES OF TB_BSAD_CLEAR TO TB_BSID.
Sort TB_BSID by Cust num AND Doc date in document
  SORT TB_BSID BY KUNNR BLDAT.
ENDFORM.                    " SELECT_CUSTOMER_CLEARED_ITEMS
*&      Form  SELECT_KNA1
      Select General Data in Customer Master
FORM SELECT_KNA1.
  CLEAR: TB_KNA1,
         TB_KNA1[].
  SELECT  KUNNR
          NAME1
          TELF1
          ADRNR
     INTO TABLE TB_KNA1
     FROM KNA1
    WHERE KUNNR IN S_KUNNR.
  IF SY-SUBRC <> 0.
  ENDIF.
ENDFORM.                    " SELECT_KNA1
*&      Form  POPULATE_TB_FINAL
      Populate Final Output Data.
FORM POPULATE_TB_FINAL.
Local variable
  DATA: L_DAYS_SLOW(3) TYPE N.       " Days Slow
  CLEAR: TB_FINAL,
         TB_FINAL[].
  LOOP AT TB_KNA1.
  Move-corresponding TB_KNA1 to TB_FINAL.
    TB_FINAL-KUNNR = TB_KNA1-KUNNR.  " Customer Number
    TB_FINAL-NAME1 = TB_KNA1-NAME1.  " Name Line 1
    TB_FINAL-PHONE = TB_KNA1-TELF1.  " Telephone Number
  To get Customer Address.
    PERFORM GET_CUSTOMER_ADDRESS.
  To get Date of Last Invoice.
    READ TABLE TB_BSID WITH KEY KUNNR = TB_KNA1-KUNNR.
    IF SY-SUBRC = 0.
      TB_FINAL-LAST_DATE = TB_BSID-BLDAT.
    ENDIF.
  To get past due and current details.
    PERFORM GET_PAST_DUE_CURRENT.
  To get Days Slow.
    CLEAR WA_FAEDE .
    LOOP AT TB_BSID_OPEN WHERE KUNNR = TB_KNA1-KUNNR.
      WA_FAEDE-SHKZG = TB_BSID-SHKZG.
      WA_FAEDE-ZFBDT = TB_BSID-ZFBDT.
      WA_FAEDE-ZBD1T = TB_BSID-ZBD1T.
      WA_FAEDE-ZBD2T = TB_BSID-ZBD2T.
      WA_FAEDE-ZBD3T = TB_BSID-ZBD3T.
      WA_FAEDE-REBZG = TB_BSID-REBZG.
      WA_FAEDE-REBZT = TB_BSID-REBZT.
      WA_FAEDE-KOART = C_D.
    To Determine Due Date.
      CALL FUNCTION 'DETERMINE_DUE_DATE'
           EXPORTING
                I_FAEDE                    = WA_FAEDE
           IMPORTING
                E_FAEDE                    = WA_FAEDE
           EXCEPTIONS
                ACCOUNT_TYPE_NOT_SUPPORTED = 1
                OTHERS                     = 2.
      IF SY-SUBRC <> 0.
        CLEAR WA_FAEDE.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CLEAR: L_DAYS_SLOW.
      L_DAYS_SLOW = SY-DATUM - WA_FAEDE-NETDT - P_GRACE.
      G_DAYS_SLOW = G_DAYS_SLOW + ABS( L_DAYS_SLOW ).
      G_OPEN      = G_OPEN + 1.
    ENDLOOP.
    IF G_OPEN IS INITIAL.
      TB_FINAL-DAYS_SLOW = G_DAYS_SLOW / G_OPEN.  " Days Slow
    ENDIF.
  To get Average days to Pay.
    PERFORM GET_AVG_DAYS_PAY.
  Calculating total records .
    G_REC_COUNT = G_REC_COUNT + 1.
    APPEND TB_FINAL.
    CLEAR  TB_FINAL.
  ENDLOOP.
Current account balance.
  G_CURR_BAL   = TB_FINAL-CURRENT + TB_FINAL-AVG_1_30  +
                                    TB_FINAL-AVG_31_60 +
                                    TB_FINAL-AVG_61_90 +
                                    TB_FINAL-AVG_90G   .
ENDFORM.                    " POPULATE_TB_FINAL
*&      Form  GET_PAST_DUE_CURRENT
      To get past due and current details.
FORM GET_PAST_DUE_CURRENT.
    Local Varaibles.
  DATA: L_RF035_SFAE1 TYPE RF035-SFAE1,
        L_RF035_SFAE2 TYPE RF035-SFAE2,
        L_RF035_SFAE3 TYPE RF035-SFAE3,
        L_RF035_SFAE4 TYPE RF035-SFAE4,
        L_RF035_SFAE5 TYPE RF035-SFAE5,
        L_RF035_SFAE6 TYPE RF035-SFAE6,
        L_RF035_SFAEL TYPE RF035-SFAEL,
        L_RF035_SNFA1 TYPE RF035-SNFA1,
        L_RF035_SNFA2 TYPE RF035-SNFA2,
        L_RF035_SNFA3 TYPE RF035-SNFA3,
        L_RF035_SNFA4 TYPE RF035-SNFA4,
        L_RF035_SNFA5 TYPE RF035-SNFA5,
        L_RF035_SNFA6 TYPE RF035-SNFA6,
        L_RF035_SNFAE TYPE RF035-SNFAE.
  LOOP AT TB_KNB1 WHERE KUNNR = TB_KNA1-KUNNR.
    CALL FUNCTION 'CUSTOMER_DUE_DATE_ANALYSIS'
         EXPORTING
              BUKRS          = TB_KNB1-BUKRS
            KKBER          = ' '
              KUNNR          = TB_KNB1-KUNNR
              RASID          = C_Z001
         IMPORTING
              SFAE1          = L_RF035_SFAE1
              SFAE2          = L_RF035_SFAE2
              SFAE3          = L_RF035_SFAE3
              SFAE4          = L_RF035_SFAE4
              SFAE5          = L_RF035_SFAE5
              SFAE6          = L_RF035_SFAE6
              SFAEL          = L_RF035_SFAEL
              SNFA1          = L_RF035_SNFA1
              SNFA2          = L_RF035_SNFA2
              SNFA3          = L_RF035_SNFA3
              SNFA4          = L_RF035_SNFA4
              SNFA5          = L_RF035_SNFA5
              SNFA6          = L_RF035_SNFA6
              SNFAE          = L_RF035_SNFAE
         EXCEPTIONS
              INVALID_RASTER = 1
              NO_OPEN_ITEMS  = 2
              OTHERS         = 3
    IF SY-SUBRC = 0.
      TB_FINAL-AVG_1_30  = TB_FINAL-AVG_1_30  + L_RF035_SFAE1.
      TB_FINAL-AVG_31_60 = TB_FINAL-AVG_31_60 + L_RF035_SFAE2.
      TB_FINAL-AVG_61_90 = TB_FINAL-AVG_61_90 + L_RF035_SFAE3.
      TB_FINAL-AVG_90G   = TB_FINAL-AVG_90G   + L_RF035_SFAE4
                                              + L_RF035_SFAE5
                                              + L_RF035_SFAE6.
      TB_FINAL-CURRENT  = TB_FINAL-CURRENT    + L_RF035_SNFAE.
    ELSE.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " GET_PAST_DUE_CURRENT
*&      Form  GET_CUSTOMER_ADDRESS
      To get Customer Address.
FORM GET_CUSTOMER_ADDRESS.
  X_ADDR1_SEL-ADDRNUMBER = TB_KNA1-ADRNR.
  CALL FUNCTION 'ADDR_GET'
       EXPORTING
            ADDRESS_SELECTION = X_ADDR1_SEL
       IMPORTING
            SADR              = X_SADR
       EXCEPTIONS
            PARAMETER_ERROR   = 1
            ADDRESS_NOT_EXIST = 2
            VERSION_NOT_EXIST = 3
            INTERNAL_ERROR    = 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.
  ADDRESS LINE 1.
  TB_FINAL-ADDRESS1 = X_SADR-STRAS.
  ADDRESS LINE 2.
  CONCATENATE X_SADR-PFACH 'CODE' X_SADR-PSTL2 INTO TB_FINAL-ADDRESS2
                                                  SEPARATED BY SPACE.
  ADDRESS LINE 3.
  CONCATENATE  X_SADR-ORT01 X_SADR-ORT02 ',' X_SADR-REGIO X_SADR-PSTLZ
                            INTO TB_FINAL-ADDRESS3 SEPARATED BY SPACE.
  ADDRESS LINE 4.
  TB_FINAL-ADDRESS4 = X_SADR-LAND1.
ENDFORM.                    " GET_CUSTOMER_ADDRESS
*&      Form  GET_AVG_DAYS_PAY
      To get Average days to Pay.
FORM GET_AVG_DAYS_PAY.
*Local variable
  DATA: L_DAYS TYPE N .                            " Number of Days
  LOOP AT TB_BSAD_CLEAR WHERE KUNNR = TB_KNA1-KUNNR.
    L_DAYS  = TB_BSAD_CLEAR-AUGDT - TB_BSAD_CLEAR-BLDAT.
    G_AVG   = G_AVG + L_DAYS.
    G_COUNT = G_COUNT + 1.
  ENDLOOP.
  IF NOT G_COUNT IS INITIAL.
    TB_FINAL-AVG = G_AVG / G_COUNT. " Average days to Pay.
  ENDIF.
ENDFORM.                    " GET_AVG_DAYS_PAY
*&      Form  DISPLAY_ALV_REPORT
      text
FORM DISPLAY_ALV_REPORT.
For Populating Field Catalog.
  PERFORM RPT_BUILD_FIELDCATLOG.
For Modifying Field Catalog.
  PERFORM RPT_MODIFY_FIELDCATLOG.
For TOP_OF_PAGE Event.
  PERFORM RPT_GET_EVENTS.
For Displaying Output in Grid Format.
  PERFORM RPT_GRID_DISPLAY.
ENDFORM.                    " DISPLAY_ALV_REPORT
*&      Form  RPT_BUILD_FIELDCATLOG
      text
FORM RPT_BUILD_FIELDCATLOG.
To build the Field Catlog.
  DATA : L_TABNAME TYPE SLIS_TABNAME.  " Table Name
  L_TABNAME = 'TB_FINAL'.
  REFRESH : TB_FIELDCAT.
  CLEAR   : TB_FIELDCAT.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            I_PROGRAM_NAME         = G_REPID
            I_INTERNAL_TABNAME     = L_TABNAME
            I_INCLNAME             = G_REPID
       CHANGING
            CT_FIELDCAT            = TB_FIELDCAT
       EXCEPTIONS
            INCONSISTENT_INTERFACE = 1
            PROGRAM_ERROR          = 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.
ENDFORM.                    " RPT_BUILD_FIELDCATLOG
*&      Form  RPT_MODIFY_FIELDCATLOG
      text
FORM RPT_MODIFY_FIELDCATLOG.
Getting the Header Text for the Coloumns
  DATA : L_TABIX LIKE SY-TABIX,            " Index
         L_DDICTXT TYPE C  VALUE 'L'.      " Flag
Getting the Header Text for the Coloumns
  LOOP AT TB_FIELDCAT INTO X_FIELDCAT.
    CLEAR L_TABIX.
    L_TABIX = SY-TABIX.
    CASE X_FIELDCAT-FIELDNAME.
      WHEN 'KUNNR'.                                   " Customer Number
        X_FIELDCAT-SELTEXT_L = 'Customer Number'(001).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'NAME1'.                                   " Name Line 1
        X_FIELDCAT-SELTEXT_L = 'Name'(002).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'ADDRESS1'.                                " Address line 1
        X_FIELDCAT-SELTEXT_L = 'Address 1'(003).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'ADDRESS2'.                                " Address line 2
        X_FIELDCAT-SELTEXT_L = 'Address 2'(004).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'ADDRESS3'.                                " Address line 3
        X_FIELDCAT-SELTEXT_L = 'Address 3'(005).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'ADDRESS4'.                                " Address line 4
        X_FIELDCAT-SELTEXT_L = 'Address 4'(006).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'PHONE'.                                   " Telephone Number
        X_FIELDCAT-SELTEXT_L = 'Telephone Number'(007).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'DAYS_SLOW'.                               " Days Slow
        X_FIELDCAT-SELTEXT_L = 'Days Slow'(008).
        X_FIELDCAT-DDICTXT      =  L_DDICTXT.
      WHEN 'LAST_DATE'.                         " Date of Last Invoice
        X_FIELDCAT-SELTEXT_L = 'Date of Last Invoice'(009).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'AVG'.                               " Average Days to Pay
        X_FIELDCAT-SELTEXT_L = 'Average Days to Pay'(010).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'CURRENT'.                  " Current
        X_FIELDCAT-SELTEXT_L = 'Aging Category 1'(011).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'AVG_1_30'.                  " 1-30 past due
        X_FIELDCAT-SELTEXT_L = 'Aging Category 2'(012).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'AVG_31_60'.                  " 31-60 past due
        X_FIELDCAT-SELTEXT_L = 'Aging Category 3'(013).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'AVG_61_90'.                  " 61-90 past due
        X_FIELDCAT-SELTEXT_L = 'Aging Category 4'(014).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
      WHEN 'AVG_90G'.                  " 90+ past due
        X_FIELDCAT-SELTEXT_L = 'Aging Category 5'(015).
        X_FIELDCAT-DDICTXT   =  L_DDICTXT.
    ENDCASE.
    MODIFY TB_FIELDCAT FROM X_FIELDCAT INDEX L_TABIX.
  ENDLOOP.
ENDFORM.                    " RPT_MODIFY_FIELDCATLOG
*&      Form  RPT_GET_EVENTS
      text
FORM RPT_GET_EVENTS.
  DATA : L_TABIX TYPE SY-TABIX.                " Index
  CLEAR   : TB_EVENTS,
            TB_EVENTS[].
To get the events from this function module
for ALV display
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
            I_LIST_TYPE     = 0
       IMPORTING
            ET_EVENTS       = TB_EVENTS
       EXCEPTIONS
            LIST_TYPE_WRONG = 1
            OTHERS          = 2.
  IF SY-SUBRC <> 0.
    MESSAGE I999 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Modifing Top of Page event
  READ TABLE TB_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                      INTO X_EVENTS.
  IF SY-SUBRC = 0.
    CLEAR L_TABIX.
    L_TABIX = SY-TABIX.
    X_EVENTS-FORM = C_TOP_OF_PAGE.
    MODIFY TB_EVENTS FROM X_EVENTS INDEX L_TABIX.
    CLEAR  X_EVENTS.
  ENDIF.
ENDFORM.                    " RPT_GET_EVENTS
*&      Form  TOP_OF_PAGE
      Top Of Page for the ALV format
FORM  TOP_OF_PAGE.
  REFRESH TB_COMMENTS.
For heading
  CLEAR   X_COMMENTS.
  X_COMMENTS-TYP  = C_H.
  X_COMMENTS-INFO = 'D&B Credit Agency Interface'(019).
  APPEND X_COMMENTS TO TB_COMMENTS.
This module outputs formatted simple header information at TOP-OF-PAGE
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
            IT_LIST_COMMENTARY = TB_COMMENTS.
ENDFORM.                          " TOP_OF_PAGE
*&      Form  RPT_GRID_DISPLAY
      text
FORM RPT_GRID_DISPLAY.
Layout Settings
  CLEAR X_LAYOUT.
  X_LAYOUT-ZEBRA = 'X'.
  X_LAYOUT-COLWIDTH_OPTIMIZE = C_X.
  X_LAYOUT-NO_COLHEAD        = SPACE.
To Display the Output in ALV Format
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM = G_REPID
            IS_LAYOUT          = X_LAYOUT
            IT_FIELDCAT        = TB_FIELDCAT
            IT_EVENTS          = TB_EVENTS
       TABLES
            T_OUTTAB           = TB_FINAL
       EXCEPTIONS
            PROGRAM_ERROR      = 1
            OTHERS             = 2.
  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.                    " RPT_GRID_DISPLAY
*&      Form  SEND_EMAIL
      text
-->  p1        text
<--  p2        text
FORM SEND_EMAIL.
Prepare the mail
  PERFORM SEND_MAIL USING C_INTERFACE.
Sending the mail to Receivers
  PERFORM SENDING_MAIL.
ENDFORM.                    " SEND_EMAIL
*&      Form  SEND_MAIL
     Sending the Mail
FORM SEND_MAIL USING  P_C_INTERFACE TYPE YWFSALOFFICNOTIF-INTERFACE_ID.
Populating Report name
  G_TITLE = C_TITLE.
  PERFORM POPULATE_EMAIL_REF_DATA USING G_TITLE.
  IF NOT G_REC_COUNT IS INITIAL.
  To populate the data to table tb_objbin
    PERFORM POPULATE_DATA_OBJBIN.
  To get the attached file for the mail
    CLEAR G_TAB_LINES.
    DESCRIBE TABLE TB_OBJBIN LINES G_TAB_LINES.
    TB_OBJHEAD = C_FILENAME.
    APPEND TB_OBJHEAD.
    CLEAR TB_OBJHEAD.
  Creation of the entry for the mail
    TB_OBJPACK-TRANSF_BIN = C_X.
    TB_OBJPACK-HEAD_START = C_1.
    TB_OBJPACK-HEAD_NUM   = C_1.
    TB_OBJPACK-BODY_START = C_1.
    TB_OBJPACK-BODY_NUM   = G_TAB_LINES.
    TB_OBJPACK-DOC_TYPE   = C_TXT.
    TB_OBJPACK-OBJ_NAME   = G_REPID.
    TB_OBJPACK-OBJ_DESCR  = 'Interface Audit Report'(020).
    TB_OBJPACK-DOC_SIZE   = G_TAB_LINES * 255.
    APPEND TB_OBJPACK.
  ENDIF.
ENDFORM.                    " SEND_MAIL
*&      Form  SENDING_MAIL
FORM SENDING_MAIL.
Function Module to send mail along with attached file
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
       EXPORTING
            DOCUMENT_DATA              = TB_DOC_CHNG
       TABLES
            PACKING_LIST               = TB_OBJPACK
            OBJECT_HEADER              = TB_OBJHEAD
            CONTENTS_BIN               = TB_OBJBIN
            CONTENTS_TXT               = TB_OBJTXT
            RECEIVERS                  = TB_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.
  CASE SY-SUBRC.
    WHEN 0.
      MESSAGE S999 WITH 'Mail has been sucessfully sent'(029).
    WHEN 1.
      MESSAGE S999 WITH 'Too Many Parameters'(030).
    WHEN 2.
      MESSAGE S999 WITH 'Doc Could Not Be Sent'(031).
    WHEN 4.
      MESSAGE S999 WITH 'No Authority To Send'(032).
    WHEN 99.
      MESSAGE S999 WITH 'Error While Sending'(033).
  ENDCASE.
ENDFORM.                    " SENDING_MAIL
*&      Form  POPULATE_EMAIL_REF_DATA
   Poplulating the body of the mail
FORM POPULATE_EMAIL_REF_DATA USING TEXT TYPE SOLISTI1-LINE.
Setting up Mail Subject
  TB_DOC_CHNG-OBJ_DESCR = 'Interface Audit Report'(020).
Populating body of the mail
  TB_OBJTXT-LINE = 'Interface Audit Report'(020).
  APPEND TB_OBJTXT.
  CLEAR: TB_OBJTXT.
  DESCRIBE TABLE TB_OBJTXT LINES G_TAB_LINES.
  READ TABLE TB_OBJTXT INDEX G_TAB_LINES.
*To determine the document size
TB_DOC_CHNG-DOC_SIZE = ( G_TAB_LINES - 1 ) * 255 + STRLEN( TB_OBJTXT ).
Creation of the entry for the Mail Contents
  CLEAR TB_OBJPACK-TRANSF_BIN.
  TB_OBJPACK-HEAD_START = C_1.
  TB_OBJPACK-HEAD_NUM = C_0.
  TB_OBJPACK-BODY_START = C_1.
  TB_OBJPACK-BODY_NUM = G_TAB_LINES.
  TB_OBJPACK-DOC_TYPE = C_RAW.
  APPEND TB_OBJPACK.
ENDFORM.                    " POPULATE_EMAIL_REF_DATA
*&      Form  POPULATE_DATA_OBJBIN
      Populating table for file attachment

Similar Messages

  • How to send ALV list report as html attachment in a mail??

    Hi all,
    I have an ALV report which I want to send as an HTML attachment in a mail to an external id. I know that spool can be converted to HTML attachment in a mail. But I don't want to have 2 programs - one for generating ALV and the other to send mail with the spool-converted of the first report as attachment. I want to send the mail in the same program itself. Is it possible? Helpful answers will be suitably rewarded.

    Hi Sandip,
    In your ALV program after the alv output is build in the program do the following steps.
    1). Export the list to memory
    2). Import the list from mempry
    3). Do a COmpress of the data
    4). Send an email as an attachment using the normal FM.
    Take a look at the following links which will explain how to do the above steps.
    http://www.geocities.com/mpioud/Z_EMAIL_ABAP_REPORT.html
    http://www.thespot4sap.com/Articles/SAP_Mail_SO_Object_Send.asp
    http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm
    remember to change the doc type as 'HTM' in the FM to send email.
    Cheers
    VJ

  • How to send BI Publisher reports as email attachments from Apex

    Hi there,
    Before I start working on this new endeavor, I would like to check if it is even possible...
    Here we have Apex 4.0.2 and Oracle BI Publisher Enterprise 10.1.3. We use the Apex integration with BI Publisher to generate PDF reports.
    Now there is a requirement that those reports should be optionally sent by email as attachments (ideally from Apex itself or from a database procedure in the Apex application schema.)
    I am not sure how to do it, as such reports are generated by calls to URLs like this:
    http://server/apex/f?p=123:0:3370070991917144:PRINT_REPORT=reportname:NO::PARAM1:123 => opens a PDF in the browser window
    Is it possible to be done? If so, how?
    Thanks
    Luis

    hello,
    there is no native support for directly faxing a report. you could e.g. use a fax-software that has a printer-driver that supports this.
    regards,
    the oracle reports team

  • How To Send ALV Output By Email.

    Hi !
    I wanted to ask how to send ALV output of report by email.
    I know that i have to use the fms :
    1. 'WWW_HTML_FROM_LISTOBJECT' - in order to convert the table to HTML.
    2. 'SO_NEW_DOCUMENT_ATT_SEND_API1' - in order to  send the HTML file.
    My problem is how to convert the ALV screen output to the apropriate table parameter of the function 'WWW_HTML_FROM_LISTOBJECT' to listobject type ?
    thanks
    moshe

    Hi look at the following program.
    *& Report  ZSM17_EMAIL1
    REPORT  zsm17_email.
    tables : mara.
    data: begin of it_mara occurs 0,
          matnr like  mara-matnr,
          ernam like mara-ernam,
          mtart like mara-mtart,
          matkl like mara-matkl,
          end of it_mara.
    data: begin of it_final occurs 0,
          v_string(255),
          end of it_final.
    *DATA: objpack LIKE sopcklsti1 OCCURS  2 WITH HEADER LINE,
         objhead LIKE solisti1   OCCURS  1 WITH HEADER LINE,
         objbin  LIKE solisti1   OCCURS 10 WITH HEADER LINE,
         objtxt  LIKE solisti1   OCCURS 10 WITH HEADER LINE,
         reclist LIKE somlreci1  OCCURS  5 WITH HEADER LINE.
    DATA: objpack LIKE sopcklsti1 OCCURS  0 with header line,
          objhead LIKE solisti1   OCCURS  0 WITH HEADER LINE,
          objbin  LIKE solisti1   OCCURS 0 WITH HEADER LINE,
          objtxt  LIKE solisti1   OCCURS 0 WITH HEADER LINE,
          reclist LIKE somlreci1  OCCURS  0 WITH HEADER LINE.
    data: wa_objbin like line of objbin.
    DATA: doc_chng LIKE sodocchgi1.
    DATA: tab_lines LIKE sy-tabix.
    select-options s_matnr for mara-matnr.
    *--- Selecting data from mara
    select matnr
           ernam
           mtart
           matkl
           into table it_mara
           from mara
           where matnr in s_matnr.
    if sy-subrc ne 0.
    write:/ 'no data found'.
      exit.
    else.
    loop at it_mara.
       concatenate it_mara-matnr
                   it_mara-ernam
                   it_mara-mtart
                   it_mara-matkl
         into it_final-v_string separated by '~'.
        append it_final.
        clear it_final.
    endloop.
    endif.
    Creating the document to be sent
    doc_chng-obj_name = 'TEST'.   "name of the document
    title of document or subject
    doc_chng-obj_descr = 'Test Email program'.
    body of the mail
    objtxt = 'A test report'.
    APPEND objtxt.
    objtxt = 'is enclosed as an attachment.'.
    APPEND objtxt.
    *clear objtxt.
    DESCRIBE TABLE objtxt LINES tab_lines.
    Size of SAPoffice Document (for API1)
    doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
    Creating the entry for the compressed attachment
    objpack-transf_bin = 'X'.
    objpack-head_start = 1.
    objpack-head_num   = 0.
    objpack-body_start = 1.
    objpack-body_num   = tab_lines.
    objpack-doc_type   = 'RAW'.
    *objpack-obj_name   = 'ATTACHMENT'.
    *objpack-obj_descr = 'Test Email Program'.
    *objpack-doc_size   = tab_lines * 255.
    APPEND objpack..
    *--- Populating the records in the attachment
    data: w_str(255) TYPE c.
    loop at it_final into wa_objbin.
    append wa_objbin to objbin.
    append objbin.
    clear wa_objbin.
    endloop.
    DESCRIBE TABLE objbin LINES tab_lines.
    tab_lines = tab_lines + 1.
    objhead = 'test_report.txt'.
    append objhead.
    Creating the entry for the compressed attachment
    objpack-transf_bin = 'X'.
    objpack-head_start = 1.
    objpack-head_num   = 1.
    objpack-body_start = 1.
    objpack-body_num   = tab_lines.
    objpack-doc_type   = 'txt'.
    objpack-obj_name   = 'txt'.
    objpack-obj_descr = 'Test Email Program'.
    objpack-doc_size   = tab_lines * 255.
    APPEND objpack..
    *write:/ 'object text', objtxt.
    Entering names in the distribution list
    reclist-receiver = '[email protected]'.
    reclist-rec_type = 'U'.
    APPEND reclist.
    Sending the document
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
      EXPORTING
        document_data              = doc_chng
        put_in_outbox              = 'X'
        commit_work                = 'X'
      TABLES
        packing_list               = objpack
        object_header              = objhead
        contents_bin               = objbin
        contents_txt               = objtxt
        receivers                  = reclist
      EXCEPTIONS
        too_many_receivers         = 1
        document_not_sent          = 2
        operation_no_authorization = 4
        OTHERS                     = 99.
    CASE sy-subrc.
      WHEN 0.
        WRITE: / 'Result of the send process:'.
        LOOP AT reclist.
          WRITE:  reclist-receiver(48), ':'.
          IF reclist-retrn_code = 0.
            WRITE 'sent successfully'.
          ELSE.
            WRITE 'not sent'.
          ENDIF.
        ENDLOOP.
       loop at objbin.
         write: objbin-line.
       endloop.
      WHEN 1.
        WRITE: / 'no authorization to send to the specified number of' .
        "'recipients!'.
      WHEN 2.
        WRITE: / 'document could not be sent to any of the recipients!'.
      WHEN 4.
        WRITE: / 'no authorization to send !'.
      WHEN OTHERS.
        WRITE: / 'error occurred during sending !'.
    ENDCASE.

  • How to enable excel downloading in ALV grid report.

    Hi all,
    How to enable excal downing in ALV grid report?
    Thanks in Advance.
    Siva Sankar.

    hi
    check the following code
    Example of a Simple ALV Grid Report
    REPORT  ZTUFI091                                .
    *& Report  ZDEMO_ALVGRID                                               *
    *& Example of a simple ALV Grid Report                                 *
    *& The basic requirement for this demo is to display a number of       *
    *& fields from the EKKO table.                                         *
    *REPORT  zdemo_alvgrid                 .
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid,
          gt_events     type slis_t_event,
          gd_prntparams type slis_print_alv.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform build_events.
    perform build_print_params.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    There are a number of ways to create a fieldcat.
    For the purpose of this example i will build the fieldcatalog manualy
    by populating the internal table fields individually and then
    appending the rows. This method can be the most time consuming but can
    also allow you  more control of the final product.
    Beware though, you need to ensure that all fields required are
    populated. When using some of functionality available via ALV, such as
    total. You may need to provide more information than if you were
    simply displaying the result
                  I.e. Field type may be required in-order for
                       the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    fieldcatalog-do_sum      = 'X'.
    fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    gd_layout-totals_only        = 'X'.
    gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
                                            "click(press f2)
    gd_layout-zebra             = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text       = 'helllllo'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
                i_callback_user_command = 'USER_COMMAND'
               i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
               it_special_groups       = gd_tabgroup
                it_events               = gt_events
                is_print                = gd_prntparams
                i_save                  = 'X'
               is_variant              = z_template
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
      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.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into table it_ekko.
    endform.                    " DATA_RETRIEVAL
    Form  TOP-OF-PAGE                                                 *
    ALV Report Header                                                 *
    Form top-of-page.
    *ALV Header declarations
    data: t_header type slis_t_listheader,
          wa_header type slis_listheader,
          t_line like wa_header-info,
          ld_lines type i,
          ld_linesc(10) type c.
    Title
      wa_header-typ  = 'H'.
      wa_header-info = 'EKKO Table Report'.
      append wa_header to t_header.
      clear wa_header.
    Date
      wa_header-typ  = 'S'.
      wa_header-key = 'Date: '.
      CONCATENATE  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
                   sy-datum(4) INTO wa_header-info.   "todays date
      append wa_header to t_header.
      clear: wa_header.
    Total No. of Records Selected
      describe table it_ekko lines ld_lines.
      ld_linesc = ld_lines.
      concatenate 'Total No. of Records Selected: ' ld_linesc
                        into t_line separated by space.
      wa_header-typ  = 'A'.
      wa_header-info = t_line.
      append wa_header to t_header.
      clear: wa_header, t_line.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = t_header.
               i_logo             = 'Z_LOGO'.
    endform.
          FORM USER_COMMAND                                          *
          --> R_UCOMM                                                *
          --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    Check function code
      CASE r_ucomm.
        WHEN '&IC1'.
      Check field clicked on within ALVgrid report
        IF rs_selfield-fieldname = 'EBELN'.
        Read data table, using index of row user clicked on
          READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
        Set parameter ID for transaction screen field
          SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
        Sxecute transaction ME23N, and skip initial data entry screen
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDCASE.
    ENDFORM.
    *&      Form  BUILD_EVENTS
          Build events table
    form build_events.
      data: ls_event type slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = gt_events[].
      read table gt_events with key name =  slis_ev_end_of_page
                               into ls_event.
      if sy-subrc = 0.
        move 'END_OF_PAGE' to ls_event-form.
        append ls_event to gt_events.
      endif.
        read table gt_events with key name =  slis_ev_end_of_list
                               into ls_event.
      if sy-subrc = 0.
        move 'END_OF_LIST' to ls_event-form.
        append ls_event to gt_events.
      endif.
    endform.                    " BUILD_EVENTS
    *&      Form  BUILD_PRINT_PARAMS
          Setup print parameters
    form build_print_params.
      gd_prntparams-reserve_lines = '3'.   "Lines reserved for footer
      gd_prntparams-no_coverpage = 'X'.
    endform.                    " BUILD_PRINT_PARAMS
    *&      Form  END_OF_PAGE
    form END_OF_PAGE.
      data: listwidth type i,
            ld_pagepos(10) type c,
            ld_page(10)    type c.
      write: sy-uline(50).
      skip.
      write:/40 'Page:', sy-pagno .
    endform.
    *&      Form  END_OF_LIST
    form END_OF_LIST.
      data: listwidth type i,
            ld_pagepos(10) type c,
            ld_page(10)    type c.
      skip.
      write:/40 'Page:', sy-pagno .
    endform.
    hope it will help you
    regards
    sreelatha gullapalli

  • How to get the alv grid report in another screen when double click on basic

    Hi.
    I have created an alv report using class cl_gui_alv_grid.I got another report in the same screen,when double clicked on basic list(using double_click event).I want to get this report in another screen.What i have to do?(In classical reports i worked with sy-lsind = 1 ,but how to do here?)
    How to set color to the selected rows in the alv grid report?I worked with change_data_from_inside method of cl_gui_alv_grid.But it didn't work out..
    With Regards,
    Ramana.

    On double click event . you will have to call another screen say 9000.
    now within screen 900 PBO.. you will have to prepare the fieldcatalog/layout.. and the table to be displayed there.
    in PAI of screen 9000, you can return to the original ALV.
    method double_click.
    call screen 9000.
    endmethod.
    " now in PBO create a module display_alv2
    module display_alv2.
    'prepare the fieldcat/layout info for new alv
    'add the data to the new ALV table
    'instantiate the grid call.. etc
    'call the ALV
    endmodule
    "in PAI
    module exit.
    case sy-ucomm.
    when 'ENT1'.
      leave to screen 0.
    endcase.
    endmodule
    while preparing the field catalog you can mention the EMPHASIZE field, whish will give color to tht column
    E.g
    *--Service Order
        ls_fieldcat-tabname   = 'IT_FINAL_VALID'.
        ls_fieldcat-fieldname = 'AUFNR'.
        ls_fieldcat-scrtext_m = 'Service Order'.
        ls_fieldcat-ref_table = 'AUFK'.
        ls_fieldcat-ref_field = 'AUFNR'.
        ls_fieldcat-col_pos   = 1.
        ls_fieldcat-outputlen = 12.
        ls_fieldcat-emphasize = 'C400'.  "This will add color to the cell
        APPEND ls_fieldcat TO fcat_valid.
    Hope this helps.

  • How to keep track of the changes done in ALV GRID Report

    Hi Experts,
    how to keep track of the changed record in ALV GRID Report. how to set the field to be editable even for the entire row also. Can anybody guide along with code also?...
    Valuable answers will be rewarded.
    Thanks,
    Satish.

    Hi,
    Access the table through SM30. It comes blank as standard. Click "New Entries" and make entries for changes to be tracked. For example, whenever an org. unit changes 002 and 003 relationship, you will make entries like:
    01 O 1001 B002 Activate box checked
    01 O 1001 B003 Activate box checked
    Here, 01 is your active plan version, O is org. unit, 1001 is infotype and B002 and B003 are the subtypes. You can also use * for infotype and subtype which means every change will be logged.
    If you then run the report RHCDOC_DISPLAY through SA38, it will pick up all the changes pertaining to B002 and B003 relationship for org. units (in the above example).
    Similarly, you can set up this table for other object types.
    For more information, follow SPRO>Personnel Management>OM>Basic Settings>Activate change documents and go through the documentation for that node. Also, read up the documentation for the report.
    Hope this helps.
    Donnie

  • About how to send ALV through email

    Hi  everyone ,
          I have a problem about how to send ALV through email  in background . if someone knows , pls tell me .
    thanks in advance
    Best Regard
    Nick

    I write a test program , but it doesn't work , use any exists ALV program in the system , and use the "sendlist " program to send the email.  what I want is when I restrict some conditons in the selection-screen , then it send ALV to Email .
    Thanks
    Nick

  • How Alternate rows to be colored  in an ALV Grid report?

    How Alternate rows to be colored  in an ALV Grid report?

    hi,
    try this
    TABLES:     ekko.
    TYPE-POOLS: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
      line_color(4) TYPE c,     "Used to store row color attributes
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          gd_tab_group TYPE slis_t_sp_group_alv,
          gd_layout    TYPE slis_layout_alv,
          gd_repid     LIKE sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-datatype     = 'CURR'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    FORM build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-info_fieldname =      'LINE_COLOR'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    FORM display_alv_report.
      gd_repid = sy-repid.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = gd_repid
          is_layout          = gd_layout
          it_fieldcat        = fieldcatalog[]
          i_save             = 'X'
        TABLES
          t_outtab           = it_ekko
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      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.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
      DATA: ld_color(1) TYPE c.
      SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
       UP TO 10 ROWS
        FROM ekpo
        INTO TABLE it_ekko.
    *Populate field with color attributes
      LOOP AT it_ekko INTO wa_ekko.
    Populate color variable with colour properties
    Char 1 = C (This is a color property)
    Char 2 = 3 (Color codes: 1 - 7)
    Char 3 = Intensified on/off ( 1 or 0 )
    Char 4 = Inverse display on/off ( 1 or 0 )
              i.e. wa_ekko-line_color = 'C410'
        ld_color = ld_color + 1.
    Only 7 colours so need to reset color value
        IF ld_color = 8.
          ld_color = 1.
        ENDIF.
        CONCATENATE 'C' ld_color '10' INTO wa_ekko-line_color.
    wa_ekko-line_color = 'C410'.
        MODIFY it_ekko FROM wa_ekko.
      ENDLOOP.
    ENDFORM.                    " DATA_RETRIEVAL

  • How to display first SPACE charcter in Column of ALV Grid Report?

    Hello experts,
    In ALV Grid report, One of the column has a value like ' Test_Value'. In this value first character is SPACE but in display SPACE is not appearing.
    Field catalog type is:- slis_t_fieldcat_alv
    I have used the function module:- REUSE_ALV_GRID_DISPLAY
    Is there any settings required in Fieldcatalog Internal table for displaying leading SPACE chara.?
    Please suggest.
    Thanks & Regards
    Jagesh

    hi,
    After fetching the data into the intenal table.
    loop that internal table.
    declara a variable of type character  and length 1.
    see the example code below
    DATA : wa_space ,
             tbx TYPE sy-tabix.
      wa_space = ' '.  "---> press ALT+255 to get space
      LOOP AT it INTO wa.
        tbx = sy-tabix.
        CONCATENATE wa_space wa-<fname> INTO wa-<fname>.
        MODIFY it INDEX tbx  FROM wa  TRANSPORTING fname.
      ENDLOOP.
    Hope it helps you.
    Thanks & Regards

  • How to display first SPACE character in Column of ALV Grid Report?

    Hello All,
    In ALV Grid report, One of the column has a value like ' Test_Value'. In this value first character is SPACE but in display SPACE is not appearing.
    Field catalog type is:- slis_t_fieldcat_alv
    I have used the function module:- REUSE_ALV_GRID_DISPLAY
    Is there any settings required in Fieldcatalog Internal table for displaying leading SPACE chara.?
    its a field not the header.
    thanks in advance.
    Rahul

    Hi all,
    did any body have a solution for this problem?
    In ALV Grid report, One of the column has a value like ' Test_Value'. In this value first character is SPACE but in display SPACE is not appearing.
    Field catalog type is:- slis_t_fieldcat_alv
    I have used the function module:- REUSE_ALV_GRID_DISPLAY
    Is there any settings required in Fieldcatalog Internal table for displaying leading SPACE chara.?
    its a field not the header.
    thanks in advance.
    Rahul

  • How to append ALV grid output to LIST output

    Hi,
    I am working with Basis AUDIT MANUAL report for which i have to integrate around 50 standard transactions (SM37,SM35...etc) output and make it into one single report.
    On execution of my report i have to get all the 50 transaction outputs sequentially.
    Some standard transactions have ALV list display output and some have GRID display.I can able to append only list outputs by submit program and exporting list to memory.
    Please suggest me how to get Alv grid output in midst of list output.
    Regards
    Kalpana.

    You should post your question to the ABAP forum:
    ABAP Development

  • All the columns of an alv grid report are not downloading in excel in 1 lin

    Hi All,
    I have some 60 columns in my alv grid report and user can download the report using list->export->localfile->spreadsheet.
    What the issue is that all the columns are not downloading in one line, instead they split in two rows.
    Please help.
    Regards,
    Neha Patel

    hi,
    just use this procedure it will solve your problem:
    Firstly export  the data to memory using the FM LIST_FROM_MEMORY.
    CALL FUNCTION 'LIST_FROM_MEMORY'
    TABLES
    listobject = t_listobject
    EXCEPTIONS
    not_found = 1
    OTHERS = 2.
    IF sy-subrc 0.
    MESSAGE e000(su) WITH text-001.
    ENDIF.
    then i converted it into ASCII using LIST_TO_ASCI,
    CALL FUNCTION 'LIST_TO_ASCI'
    TABLES
    listasci = t_xlstab
    listobject = t_listobject
    EXCEPTIONS
    empty_list = 1
    list_index_invalid = 2
    OTHERS = 3.
    IF sy-subrc NE 0.
    MESSAGE e003(yuksdbfzs).
    ENDIF.
    This gives the data in ASCII format separated by '|' and the header has '-', dashes. If you use this internal table directly without any proccesing in SO_NEW_DOCUMENT_ATT_SEND_API1, then you will not get a good excel sheet attachment. To overcome this limitation, i used cl_abap_char_utilities=>newline and cl_abap_char_utilities=>horizontal_tab to add horizontal and vertical tabs to the internal table, replacing all occurences of '|' with
    cl_abap_char_utilities=>horizontal_tab.
    Set the doc_type as 'XLS', create the body and header using the packing_list and pass the data to be downloaded to SO_NEW_DOCUMENT_ATT_SEND_API1 as contents_bin.
    This will create an excel attachment.
    Sample code for formatting the data for the attachment in excel format.
    u2022     Format the data for excel file download
    LOOP AT t_xlstab INTO wa_xlstab .
    DESCRIBE TABLE t_xlstab LINES lw_cnt.
    CLEAR lw_sytabix.
    lw_sytabix = sy-tabix.
    u2022     If not new line then replace '|' by tabs
    IF NOT wa_xlstab EQ cl_abap_char_utilities=>newline.
    REPLACE ALL OCCURRENCES OF '|' IN wa_xlstab
    WITH cl_abap_char_utilities=>horizontal_tab.
    MODIFY t_xlstab FROM wa_xlstab .
    CLEAR wa_xlstab.
    wa_xlstab = cl_abap_char_utilities=>newline.
    IF lw_cnt NE 0 .
    lw_sytabix = lw_sytabix + 1.
    u2022     Insert new line for the excel data
    INSERT wa_xlstab INTO t_xlstab INDEX lw_sytabix.
    lw_cnt = lw_cnt - 1.
    ENDIF.
    CLEAR wa_xlstab.
    ENDIF.
    ENDLOOP.
    Sample code for creating attachment and sending mail:
    FORM send_mail .
    u2022     Define the attachment format
    lw_doc_type = 'XLS'.
    u2022     Create the document which is to be sent
    lwa_doc_chng-obj_name = 'List'.
    lwa_doc_chng-obj_descr = w_subject. "Subject
    lwa_doc_chng-obj_langu = sy-langu.
    u2022     Fill the document data and get size of message
    LOOP AT t_message.
    lt_objtxt = t_message-line.
    APPEND lt_objtxt.
    ENDLOOP.
    DESCRIBE TABLE lt_objtxt LINES lw_tab_lines.
    IF lw_tab_lines GT 0.
    READ TABLE lt_objtxt INDEX lw_tab_lines.
    lwa_doc_chng-doc_size = ( lw_tab_lines - 1 ) * 255 + STRLEN( lt_objtxt ).
    lwa_doc_chng-obj_langu = sy-langu.
    lwa_doc_chng-sensitivty = 'F'.
    ELSE.
    lwa_doc_chng-doc_size = 0.
    ENDIF.
    u2022     Fill Packing List For the body of e-mail
    lt_packing_list-head_start = 1.
    lt_packing_list-head_num = 0.
    lt_packing_list-body_start = 1.
    lt_packing_list-body_num = lw_tab_lines.
    lt_packing_list-doc_type = 'RAW'.
    APPEND lt_packing_list.
    u2022     Create the attachment (the list itself)
    DESCRIBE TABLE t_xlstab LINES lw_tab_lines.
    u2022     Fill the fields of the packing_list for creating the attachment:
    lt_packing_list-transf_bin = 'X'.
    lt_packing_list-head_start = 1.
    lt_packing_list-head_num = 0.
    lt_packing_list-body_start = 1.
    lt_packing_list-body_num = lw_tab_lines.
    lt_packing_list-doc_type = lw_doc_type.
    lt_packing_list-obj_name = 'Attach'.
    lt_packing_list-obj_descr = w_docdesc.
    lt_packing_list-doc_size = lw_tab_lines * 255.
    APPEND lt_packing_list.
    u2022     Fill the mail recipient list
    lt_reclist-rec_type = 'U'.
    LOOP AT t_recipient_list.
    lt_reclist-receiver = t_recipient_list-address.
    APPEND lt_reclist.
    ENDLOOP.
    u2022     Finally send E-Mail
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
    document_data = lwa_doc_chng
    put_in_outbox = 'X'
    commit_work = 'X'
    IMPORTING
    sent_to_all = lw_sent_to_all
    TABLES
    packing_list = lt_packing_list
    object_header = lt_objhead
    contents_bin = t_xlstab
    contents_txt = lt_objtxt
    receivers = lt_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.
    Hope it will help you
    Regards
    Rahul sharma

  • ALV Grid Report using OOPS

    Hi Friends,
    I have to develop the ALV Grid report using the Classes ie OOPS, as i am new to OOPS and know little bit of ALV,  so it will be little bit tough to develop the object so plz try to solve my query. I'm sending the Functional specs:
    The program should display the list of Purchase orders and Purchase requisitions created for specified materials. The output should be displayed in form of ALV grid. There should be separate ALV Grid for Purchase order and Purchase requisition list. The user should also have an option to save various ALV layouts and should be able to choose the ALV layout on the selection screen.The user should be able to navigate to the relevant document form the ALV grid. (Use hyperlink).
    The output must appear in the same screen.     
    Selection screen fields–
         Material Number
         Creation date (For both, PR and PO)
         Output fields –
              List one –
                  Po Number
                                        Po Item number
                                        Vendor
                                        Date
                                        Material Number
                                        Material Quantity
              List two –
                             PR Number
                                        Material Number
                                        Material Quantity
                                        Release status
                                        Date
                                        Reference
         Tables:  EKPO, EKKO, EBAN
         Transactions: ME23N
    HINT –      Use class - CL_GUI_ALV_GRID
    thnks in advance.....

    Hi,
    Check out these standard reports, they are enough to help you out .
    BCALV_GRID_01
    BCALV_GRID_02
    BCALV_GRID_03
    BCALV_GRID_04
    BCALV_GRID_05
    BCALV_GRID_06
    BCALV_GRID_07
    BCALV_GRID_08
    BCALV_GRID_09
    BCALV_GRID_10
    BCALV_GRID_11
    BCALV_GRID_AND_POPUP
    BCALV_GRID_DEMO
    Regards,
    Amit

  • Colwidth_optimize not working for alv grid report

    Hi friends,
             I have developed an ALV grid report using 'REUSE_ALV_GRID_DISPLAY'.  The field catalog field columns are having the heading size more than 30 characters. So, to optimize the size of the headings, I am using SLIS_LAYOUT_ALV  and passing the value 'X' to colwidth_optimize.
    but still the column heading is not getting fully display. Rather it is display first 20 characters only.
    For your reference please find the code snippet
    *bold* **************** declarations ************************ *bold*
    DATA : fieldcat       TYPE slis_fieldcat_alv,
                 t_fieldcat     TYPE slis_t_fieldcat_alv,
                ws_layout      TYPE slis_layout_alv.
    *bold* **************** field catalogue ********************** *bold*
      CLEAR fieldcat.
      fieldcat-fieldname     = 'RFWRT_PD_MTRL'.
      fieldcat-seltext_m = 'Pending Quotation Spares Value'.   {quote} this heading not getting fully displayed {quote}
      fieldcat-tabname       = 'IT_FNL'.
    ***    FIELDCAT-REF_TABNAME   = 'VBFA'.
      fieldcat-col_pos       = col_pos.
      APPEND fieldcat TO t_fieldcat.
      ADD 1 TO col_pos.
      CLEAR fieldcat.
      fieldcat-fieldname     = 'RFWRT_PD_SERV'.
      fieldcat-seltext_m = 'Pend Quot-JobWorkVal'.
      fieldcat-tabname       = 'IT_FNL'.
      fieldcat-col_pos       = col_pos.
      APPEND fieldcat TO t_fieldcat.
      ADD 1 TO col_pos.
      ws_layout-colwidth_optimize = 'X'.
    *bold* ****************************** alv grid function call ******************** *bold*
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
    *    i_buffer_active                         = space
          i_callback_program                  = sy-repid
         i_callback_user_command        = 'USER_COMMAND'
    ***   i_callback_pf_status_set           = 'PF_STATUS'
    *   I_STRUCTURE_NAME                  =
         it_fieldcat                        = t_fieldcat[]
         is_layout                          =  ws_layout
        TABLES
          t_outtab                          = it_fnl
       EXCEPTIONS
         program_error                      = 1
         OTHERS                             = 2.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CLEAR wa_fnl.
    Please look into it.
    Searched the forum for the similar issue. but didnt got any solution.
    Thanks and regards,
    Murali Krishna

    Hi DaveL,
    Thanks alot for your help. My problem solved.
    Can you please suggest me how we can optimize the column based on the total amount which is summed up (fieldcat-do_sum)
    Regards,
    Murali.

Maybe you are looking for

  • What is the keyboard Shortcut to go to the last frame or end of a clip?

    I used to have this shortcut set up, but I reformatted my mac and now I can't find it anywhere. I've searched the forums and can't find it, and yes, I looked at the help and looked at the manual. I've also went to Tools->Keyboard Layout and went thro

  • ITunes opening without being clicked on

    I did a quick search and couldn’t find any information about this problem, but if it’s already been addressed, just post the link. My problem: Ever since I updated to iTunes 5.0.1, iTunes will open unexpectedly without being clicked on. I can quit it

  • Can a HNA be used anywhere you'd use a regular array?

    I'm going to use some very large numeric arrays for lookup tables and such. Can I substitute such an array with an ASCII85 encoded homogeneous number array? The arrays will only be used with the get operator, and will contain either 16 bit or 32 bit

  • Pricing procedures SRM

    In ECC, one can have different pricing procedures in purchase order like local schema, imports schema etc. which can be selected by schema group vendor. How is this handled in SRM?

  • Human Resource Planning Demo

    Hi,       I want to create a demo on Human resource planning using IP. I have enough knowledge about IP and HRP. But actually I don't know much about HR planning using BI IP. I know about career planning, session planning and UDP also. But don't able