Output of ALV report as attachment in email

Dear all ,
I would like to send output of ALV report as attachment in email.
i already written code for this using FM SO_NEW_DOCUMENT_ATT_SEND_API1.
I can able to send list output as HTM format. But I want to send ALV report output
As a attachment. How can I do this….please explain…
Thanks in advance…
Regards
Manohar

Hello,
U can sent like this.
Check this report
REPORT ZV_SEND_MAIL .
TABLES: EKKO.
PARAMETERS: P_EMAIL   TYPE SOMLRECI1-RECEIVER
                                  DEFAULT '[email protected]'.
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
If useful reward.
Vasanth

Similar Messages

  • Logic For Subtracting A Given Output In ALV Report

    Hi,
    I am working on a report in which i am using ALV Concept and there a problem arise i.e. in ALV Report output which always subtotals having values in addition only and i want to know is there any way through which subtraction can also be performed within the output of a ALV Report.
    Please provide some guidelines for it.
    Regards,
    Rickky NV

    Hi,
    Thanks to both of you for your value able response. Actually, i am working on customer aging analysis report in which there are 2 columns i.e. debit and credit in which these both values are stored in 2 separate lines  and i have to display the difference of them in the 3rd column and facing the problem.
    Is it possible to display the required data of it in 3rd column  of it? 
    Regards,
    Ricky

  • How to make checkbox field inactive in the output of ALV report.

    Dear All,
    I am having one ALV report in whose output there are checkboxes against each record. Example: the output columns of my ALV report are:
    Checkbox, Sales Document No, Billing Document No.
    Now, my requirement is that if for the Sales Document No there exists any Billing Document No in the output then the Checkbox should be inactive but if the Billing document coloumn is empty for a particular Sales Document No then only the Checkbox field should become active.
    Kindly guide me on how to make this checkbox field inactive.
    Waiting for your reply.
    Warm Regards,
    N.Jain

    Hello,
    Follow the below steps:
    1.Define as--> GS_STATUS TYPE SLIS_STATUS,
    2.check layout check box fieldname is not initial.
          then set the status according to your logical conditions
          GS_STATUS-FLG_CHECKBOXES_ACTIVE = 'X'
    Hope this would help you.
    Let me know your feedback.
    Regards,
    Raju

  • Send ALV report as attachment in EXCEL format

    Hi SAP Guru,
    I had a report output as ALV format.
    Currently, when the background job ended, it would be send out to the recipent thru SAPconnect as PDF format using internet mailing address.
    I tried to search for a configuraiton for EXCEL output but there don;t seems to be any option availble.
    I can only choose from PDF/TEXT/HTM/PS in the output document type selection in SOST.
    How can I configure to allow the system to send out the ALV report to my recipent in EXCEL format instead of PDF or HTML?
    Thanks

    Hi,
    By Using OOPS Concept you can send ALV Output as Excel Format by using Class Interface: CL_BCS.
    Do some search on CL_BCS.
    There are some demo Program, sreach for BCS* on SE38.
    Thanks & Regards
    M Nair

  • How to send output of alv report as mail

    Hi Experts,
    I Have retrieved data from USER tables and i need to send the output of the list through mail.
    could you please help me in completing this task
    Moderator message: FAQ, please search for previous discussions of this topic.
    Edited by: Thomas Zloch on Mar 16, 2011 9:41 AM

    Hi,
    You can send the report data as an either excel sheet ot txt attachment in side the email. for this you can use  the function module . for this refer to program BCS_EXAMPLE_7 .

  • Send a Report as attachment by Email

    Hello,
    I'm a rookie in Apex. I read a lot of thread based on how to send a email from an Application.
    it seems easy to create the body of the email with a SELECT query. I'm using APEX_MAIL.SEND().
    I would like to now if it's possible to send a report from the page as an attachment to an Email?
    Maybe with something like create a csv file from the SELECT of the form and then attach it to the Email??
    If somebody have an idea?
    Thanks
    Fred

    Hello Tony,
    Yes, I would like first to created a simple file as 'column a';'column b';'column c'.
    I had a look on the link you put. Very interesting and hepfull. But I still have one problem and I tryed to find informations about on the web without good results.
    Now, I'm able to create a file into a BLOB using the function get_report() showned in your link.
    To attach the file to an Email. I will use APEX_MAIL.ADD_ATTACHMENT().
    Here is the code example:
    DECLARE
    l_id number;
    l_body CLOB;
    s varchar2(200) := 'this is some info';
    l_file BLOB;
    BEGIN
    l_file := get_report('SELECT * FROM MyTable');
    l_body := 'Test in the APEX_MAIL.'||utl_tcp.crlf||'This is my first test to test the mail functionnality.'||utl_tcp.crlf||utl_tcp.crlf;
    l_body := l_body ||' Fred'||utl_tcp.crlf;
    l_id := apex_mail.send(
    p_to => '[email protected]',
    p_from => '[email protected]',
    p_body => l_body,
    p_subj => 'APEX_MAIL Package - Plain Text message');
    apex_mail.add_attachment(
    p_mail_id => l_id,
    p_attachment => l_file,
    p_filename => 'test.csv');
    apex_mail.push_queue();
    END;
    But a line is missing in the attachment process ===> p_mime_type => xxxx.
    I don't know how to define the mime_type.
    Could you help me?
    Thanks and Regards,
    Fred
    Edited by: FerdoD on 11 sept. 2009 01:56

  • Editing fields on output of alv report format

    Dear friends,
    I created on report in alv format but user wants to edit the field on the output of that format also it's  effect is on the next field should br done.
    e.g. if in first field is 10  in next field user edit and enter the value 20 then automatically next field will appered as a 20 * 10 = 200 i.e what to do to collect that 200 in the next field automatically.
    how  to do it?
    Thanks ,
    Vishal Bhagwat,

    Hi,
      Refer these standard alv programs
    BCALV_EDIT_01                  Switch on and off the ready-for-input status of
    BCALV_EDIT_02                  Define ready-for-input status at cell level
    BCALV_EDIT_03                  Verification of modified cells
    BCALV_EDIT_04                  Delete and append rows
    BCALV_EDIT_05                  Checkboxes
    BCALV_EDIT_06                  Dropdown Listbox at Column Level
    BCALV_EDIT_07                  Dropdown Listbox at Cell Level
    BCALV_EDIT_08                  Integrate Non-Standard F4 Help
    BCALV_FIELDCAT_TEST            Edit field catalog online
    BCALV_FULLSCREEN_GRID_EDIT
    BCALV_GRID_EDIT
    BCALV_GRID_EDIT_DELTA          Example Report for F4 Help of the ALV Grid
    BCALV_GRID_EDIT_DELTA_APPL
    Regards,
    Prashant

  • Displaying output  in ALV Report..

    Dear Guru's
    I  have a Tipical Problem in Producaiton. when iam executing the report in Development Server it is working fine.
    but when I executing the same report in Producation server , first time it is given blank output(only layout) and once come back and execute for the same inputs , it is giving correct output.
    if we freshly start executing .. first time it is not giving any output. but once come back to selection-screen and executing it. giving output correctly..
    what may be the reason?...Please do the needfulll
    UR's
    GSANA

    Hi,
    It might be some problem pertaining to some time delay or lag, or a refresh problem.
    So save your code once again activate it and shut down your saplogon and after couple of minutes log in again.
    I faced a similar problem, it was some lag problem only.
    Edited by: Harini Gopinath on Nov 13, 2009 6:19 PM

  • Deletion of extra space in ALV report output

    Hi Experts,
    I have one issue where i have to delete the extra space in the output of  ALV report.
    Please let me know the possible way... Its very urgent.
    Thanks in advance
    Siri

    Hi Siri,
    Try these following steps in your report...... i think, it will lead you to solve your problem.
    1. Give output length of alv column as 10.
    2. OUTPUTLEN is there in Field catalogue
    3. "gt_layout TYPE lvc_s_layo" -  use this one field col_opt
    Reward if useful.
    Regards,
    Harish

  • Running a ALV Report in bakcground and sending it to Email/FAX

    Hi,
         I am designing a ALV report to send a email/fax/Printer which has to be run in background or foreground according to selection screen inputs.
    I am doing the following
    1. After generating ALV report, converting it to pdf
    2. Sending Email or Fax or Print from selection screen value.
    3. after that scheduling in background using JOB_OPEN and JOB_SUBMIT FM's.
    Can I use SO_DOCUMENT_SEND_API1 FM for both Email and Fax.
    When I schedule the report in the background using JOB_OPEN, at which point I have to code it inside the report. Is it after I generate the ALV Report and Email sending code or before it..
    Thanks

    Hi
    How did you end up doing the emailing? I have the same task.....

  • OOP's ALV Report

    Hi All,
    Could anyone send me simple OOPs ALV report.
    Mail ID : [email protected]
    Regards,
    Parvez.

    Hi,
    Here is an example.You need to create GUI status as required.
    data : itab type standard table of mara,"Output Internal table
           i_fieldcat type standard table of lvc_s_fcat,"Field catalog
           wa type mara,
           w_variant type disvariant,
           o_docking type ref to cl_gui_docking_container,"Docking Container
           o_grid type ref to cl_gui_alv_grid."Grid
    select * from mara into table itab up to 100 rows.
    call screen 9000.
    *&      Module  STATUS_9000  OUTPUT
          text
    module STATUS_9000 output.
      SET PF-STATUS 'ZSTATUS'. "GUI Status
      SET TITLEBAR 'ZTITLE'.   "Title
    Creating Docking Container
      CREATE OBJECT o_docking
             EXPORTING
               RATIO                       = '95'.
      IF sy-subrc eq 0.
    Creating Grid
         CREATE OBJECT o_grid
             EXPORTING
                i_parent          = o_docking.
      ENDIF.
    Filling the fieldcatalog table
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
           I_STRUCTURE_NAME             = 'MARA'
        CHANGING
           ct_fieldcat                  =  i_fieldcat
        EXCEPTIONS
              INCONSISTENT_INTERFACE       = 1
              PROGRAM_ERROR                = 2
              OTHERS                       = 3.
          w_variant-report = sy-repid.
    Displaying the output
       CALL METHOD o_grid->set_table_for_first_display
         EXPORTING
            IS_VARIANT                    = w_variant
            I_SAVE                        = 'A'
         CHANGING
            it_outtab                     = itab
            IT_FIELDCATALOG               = i_fieldcat
             EXCEPTIONS
               INVALID_PARAMETER_COMBINATION = 1
               PROGRAM_ERROR                 = 2
               TOO_MANY_LINES                = 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.
    endmodule.                 " STATUS_9000  OUTPUT
    *&      Module  USER_COMMAND_9000  INPUT
          PAI
    module USER_COMMAND_9000 input.
    data lv_ucomm type sy-ucomm.
    lv_ucomm = sy-ucomm.
      CASE lv_ucomm.
        WHEN 'CANCEl' OR 'EXIT'.
          perform free_objects.
          LEAVE PROGRAM.
        when 'BACK'.
          perform free_objects.
         set screen '0'.
         leave screen.
      ENDCASE.
    endmodule.                 " USER_COMMAND_9000  INPUT
    *&      Form  free_objects
          Free Objects
    form free_objects .
    CALL METHOD o_grid->free
      EXCEPTIONS
        CNTL_ERROR        = 1
        CNTL_SYSTEM_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.
    CALL METHOD o_docking->free
      EXCEPTIONS
        CNTL_ERROR        = 1
        CNTL_SYSTEM_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.                    " free_objects
    Check this link also for understanding the procedure
    <a href="https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/abap-7StepstocreateOOPSALV(forbeginners)&">https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/abap-7StepstocreateOOPSALV(forbeginners)&</a>
    Message was edited by:
            Jayanthi Jayaraman

  • Double click in alv report

    Hi all,
    I have below output in alv report.
    matnr 101_102 121_122 123_124
    10000   23          34              45
    10001   34          34              456
    if i m clicking on 23 in combination of 121_122 and 10000 then i want to see detail for 121_122 and if i m clicking on 34 combination of 101_102 then i want to see detail according to it.
    plz help me. its urgent.
    thanks in advance.

    Check the below report and do compare and modify the report as per your req.
    REPORT  ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650
    MESSAGE-ID ZZ_9838                      .
    TYPE-POOLS: SLIS.
    *type declaration for values from ekko
    TYPES: BEGIN OF I_EKKO,
           EBELN LIKE EKKO-EBELN,
           AEDAT LIKE EKKO-AEDAT,
           BUKRS LIKE EKKO-BUKRS,
           BSART LIKE EKKO-BSART,
           LIFNR LIKE EKKO-LIFNR,
           END OF I_EKKO.
    DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
          WA_EKKO TYPE I_EKKO.
    *type declaration for values from ekpo
    TYPES: BEGIN OF I_EKPO,
           EBELN LIKE EKPO-EBELN,
           EBELP LIKE EKPO-EBELP,
           MATNR LIKE EKPO-MATNR,
           MENGE LIKE EKPO-MENGE,
           MEINS LIKE EKPO-MEINS,
           NETPR LIKE EKPO-NETPR,
           END OF I_EKPO.
    DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
          WA_EKPO TYPE I_EKPO .
    *variable for Report ID
    DATA: V_REPID LIKE SY-REPID .
    *declaration for fieldcatalog
    DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
    declaration for events table where user comand or set PF status will
    be defined
    DATA: V_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENT TYPE SLIS_ALV_EVENT.
    declartion for layout
    DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
    declaration for variant(type of display we want)
    DATA: I_VARIANT TYPE DISVARIANT,
          I_VARIANT1 TYPE DISVARIANT,
          I_SAVE(1) TYPE C.
    *PARAMETERS : p_var TYPE disvariant-variant.
    *Title displayed when the alv list is displayed
    DATA:  I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
    DATA:  I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
    INITIALIZATION.
      V_REPID = SY-REPID.
      PERFORM BUILD_FIELDCATLOG.
      PERFORM EVENT_CALL.
      PERFORM POPULATE_EVENT.
    START-OF-SELECTION.
      PERFORM DATA_RETRIEVAL.
      PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
      PERFORM DISPLAY_ALV_REPORT.
    *&      Form  BUILD_FIELDCATLOG
          Fieldcatalog has all the field details from ekko
    FORM BUILD_FIELDCATLOG.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'EBELN'.
      WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'AEDAT'.
      WA_FIELDCAT-SELTEXT_M = 'DATE.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'BUKRS'.
      WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'BUKRS'.
      WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'LIFNR'.
      WA_FIELDCAT-NO_OUT    = 'X'.
      WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCATLOG
    *&      Form  EVENT_CALL
      we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = V_EVENTS
    EXCEPTIONS
       LIST_TYPE_WRONG       = 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.                    "EVENT_CALL
    *&      Form  POPULATE_EVENT
         Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'TOP_OF_PAGE'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
      ENDIF.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'USER_COMMAND'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-NAME.
      ENDIF.
    ENDFORM.                    "POPULATE_EVENT
    *&      Form  data_retrieval
      retreiving values from the database table ekko
    FORM DATA_RETRIEVAL.
      SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
    ENDFORM.                    "data_retrieval
    *&      Form  bUild_listheader
          text
         -->I_LISTHEADEtext
    FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
      DATA HLINE TYPE SLIS_LISTHEADER.
      HLINE-INFO = 'this is my first alv pgm'.
      HLINE-TYP = 'H'.
    ENDFORM.                    "build_listheader
    *&      Form  display_alv_report
          text
    FORM DISPLAY_ALV_REPORT.
      V_REPID = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM                = V_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
         I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
         I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
         I_GRID_TITLE                      = I_TITLE_EKKO
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         = ALV_LAYOUT
         IT_FIELDCAT                       = I_FIELDCAT[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
        i_default                         = 'ZLAY1'
         I_SAVE                            = 'A'
        is_variant                        = i_variant
         IT_EVENTS                         = V_EVENTS
        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  TOP_OF_PAGE
          text
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_LISTHEADER
       i_logo                   =
       I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
    RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN '&IC1'.
          READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
          PERFORM BUILD_FIELDCATLOG_EKPO.
          PERFORM EVENT_CALL_EKPO.
          PERFORM POPULATE_EVENT_EKPO.
          PERFORM DATA_RETRIEVAL_EKPO.
          PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
          PERFORM DISPLAY_ALV_EKPO.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  BUILD_FIELDCATLOG_EKPO
          text
    FORM BUILD_FIELDCATLOG_EKPO.
      WA_FIELDCAT-TABNAME = 'IT_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'EBELN'.
      WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'EBELP'.
      WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MENGE'.
      WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MEINS'.
      WA_FIELDCAT-SELTEXT_M = 'UOM'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'NETPR'.
      WA_FIELDCAT-SELTEXT_M = 'PRICE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCATLOG_EKPO
    *&      Form  event_call_ekpo
      we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL_EKPO.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = V_EVENTS
    EXCEPTIONS
      LIST_TYPE_WRONG       = 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.                    "event_call_ekpo
    *&      Form  POPULATE_EVENT
           Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT_EKPO.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'TOP_OF_PAGE'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
      ENDIF.
      ENDFORM.                    "POPULATE_EVENT
    *&      Form  TOP_OF_PAGE
          text
    FORM F_TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_LISTHEADER
       i_logo                   =
       I_END_OF_LIST_GRID       =
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    *retreiving values from the database table ekko
    FORM DATA_RETRIEVAL_EKPO.
    SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
    ENDFORM.
    FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
    DATA: HLINE1 TYPE SLIS_LISTHEADER.
    HLINE1-TYP = 'H'.
    HLINE1-INFO = 'CHECKING PGM'.
    ENDFORM.
    FORM DISPLAY_ALV_EKPO.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = V_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = 'F_USER_COMMAND'
       I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = I_TITLE_EKPO
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
       IT_FIELDCAT                       = I_FIELDCAT[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         =
       I_SAVE                            = 'A'
      IS_VARIANT                        =
       IT_EVENTS                         = V_EVENTS
      TABLES
        T_OUTTAB                          = IT_EKPO
    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.
    Thanks
    Seshu

  • Is it possible to display Suffix values in ALV Report

    Hi,
    Is it possible to display a suffix value in the output of ALV Report? If so how I can proceed? Please let me know an example.
    Thanks,
    Sekhar.J

    Hi Siddarth,
    I am sorry for the typo. It shold be Sub Script, Not a Suffix.
    Let  us take an example H2O, If we print it in this way it won't be meaning full, So i want to display this like
    H Subscript 2 O. I have a requirement for a column to always to display this kind of values, Is it Possible?
    Thanks,
    Sekhar.J

  • Display two heading in single column using ALV report

    Hi Experts,
    I got a requirement for displaying 2 rows heading in a single column report. Is it possible that I can perform this task using ALV. How to get this 2 rows in ALV.
    This is a criteria that need to be output in ALV REPORT.
    MATERIAL CODE--MATERIAL NUMBERSTORAGE LOC----SLOC1     SLOC2
    --DATE--DATE1      DATE2
    123445--TEST MATERIAL22--
    3
    As mentioned above storage loc and date will be changing with respect to data dynamically and under this double heading qty will be displayed.
    Just want to know how to get double heading. It is clear that how to display dynamically but unaware of double heading using fieldcatalog.
    Regards,
    Yahya

    Hi Yahya,
    Please pass row position in fieldcatalogue for the respective columns.
    E.g  MOVE '2' to w_fieldcat-row_pos.  " This will display the field in 2nd row.
    Thanks,
    Rupali

  • Documents on ALV Reporting

    Hi,
    Could you please send me the detailed document links  and PDFs if you have any on <b>ALV reporting</b> to my email - [email protected]
    Thanks,
    Bobby.

    Here you go ...
    http://www.geocities.com/mpioud/Abap_programs.html
    http://www.geocities.com/mpioud/Z_DEMO_ALV_REFRESH_BUTTON.html
    http://www.sap-img.com/fu037.htm
    /people/ravikumar.allampallam/blog/2005/06/01/alv-reporting-using-controls--part-i
    /people/ravikumar.allampallam/blog/2005/06/01/alv-reporting-using-controls-control-layouts--part-ii
    /people/thomas.jung3/blog/2005/10/26/alv-om-template-program
    /people/sap.user72/blog/2005/09/14/a-new-approach-to-alv-programming
    /people/thomas.jung3/blog/2005/09/08/oo-abap-dynpro-programming
    /people/ravikumar.allampallam/blog/2005/05/31/expand-the-list-of-columns-in-a-report-dynamically
    /people/subramanian.venkateswaran2/blog/2004/11/19/dynamic-internal-table
    /people/ravikumar.allampallam/blog/2005/12/05/need-a-way-to-change-appearance-of-a-standard-existing-alv-report
    Apart from these search for articles on ALV, you will get a quite a few.
    Regards,
    Ravi
    Note : Please mark the helpful answers

Maybe you are looking for

  • IPhoto cannot be opened because of a problem

    Tried opening iPhoto on Yosemite 10.10 and the following error has popped up: Process:               iPhoto [9870] Path:                  /Applications/iPhoto.app/Contents/MacOS/iPhoto Identifier:            com.apple.iPhoto Version:               ??

  • Ipod break down wireless lan

    Hello everybody, i have a problem with my new iPod touch 4. I have a wireless network with 2 laptops and want to integrate my iPod. When I activate the wireless lan of my iPod and my laptop is on the net, everything is ok. If my laptop isn't on the n

  • How can I tell what generation my 80 Gb I-Pod classic is.

    Model No is A1238. Does this help

  • Steps to create a Scenario for VC Demo purpose in a System

    Hello Guru's, Will anyone guide me the steps by step procedure  to create a scenario on VC  in a system to show the client.  will guide me to create a simple scenario.  It will be of great help. Full points to the scenario steps.

  • PRGN_CUST settings:  Info about params RUN_SU_TRACE, SET_IMP_LOCK_...

    In the PRGN_CUST config table, there are various parameters which I have no clue on what they impact: - RUN_SU22_TRACE - SET_IMP_LOCK_ROLES - SET_IMP_LOCK_USERS - SET_IMP_LOCK_VALUES - TRANSLAT_SYS Does anybody know what they're for? Thanks, Leo