Simple alv display

i have a simple alv report...how to add new alv list at the bottom of the same screen???

There is something called block ALV use this one, to add multiple ALV in a single screen. Use the below FMs:
REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_APPEND
Kuntal
Edited by: Kuntal Nandi on Mar 23, 2009 11:23 AM

Similar Messages

  • Simple alv  report displaying double click on that goto application

    HI Experts,
    i will working for that simple alv display the report . when ever user double click on that go to next scren . i will work for ECC 6.0 and function module is REUSE_ALV_LIST_DISPLAY   i will write the logic is
    at user-command
    SET PARAMETER ID 'LIF' VALUE FVAL.
    CALL TRANSACTION 'LF03' AND SKIP FIRST SCREEN.
    so any body plz help me.
    advance thanking u.

    Hi
    try this code...
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = W_PROG
    I_CALLBACK_USER_COMMAND = 'PICK'
    I_STRUCTURE_NAME = 'EKKO'
    TABLES
    T_OUTTAB = T_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.
    *& Form pick
    * -->UCOMM text
    * -->SELFIELD text
    FORM PICK USING COMMAND LIKE SY-UCOMM
    SELFIELD TYPE SLIS_SELFIELD.
    READ TABLE T_EKKO INTO FS_EKKO INDEX SELFIELD-TABINDEX.
    CASE COMMAND.
    WHEN '&IC1'.
    SET PARAMETER ID 'LIF' VALUE FS_EKKO-EBELN. "here write your field name
    CALL TRANSACTION 'LF03' AND SKIP FIRST SCREEN.

  • Is it possible to display LOGO in simple ALV list?

    Hi Guys,
    Is it possible to display LOGO in simple ALV list. If yes plz explain in details.
    Thanks
    Sharat

    Yes it is possible to display logo at the top of the page.
    TYPE-POOLS: slis.
    *     Data Decalaration
    DATA: it_vbak TYPE TABLE OF vbak.
    DATA: g_repid TYPE sy-repid.
    DATA: it_listheader TYPE slis_t_listheader,
           wa_listheader TYPE slis_listheader.
    *     START-OF-SELECTION
    START-OF-SELECTION.
       g_repid = sy-repid.
       SELECT * FROM vbak INTO TABLE it_vbak.
       PERFORM build_alv_header.
       CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
           i_callback_program     = g_repid
           i_callback_top_of_page = 'TOP_OF_PAGE'
           i_structure_name       = 'vbak'
         TABLES
           t_outtab               = it_vbak.
    *&      Form  BUILD_ALV_HEADER
    FORM build_alv_header .
    *  Type H is used to display headers i.e. big font
       wa_listheader-typ  = 'H'.
       wa_listheader-info ='Flight Details'.
       APPEND wa_listheader TO it_listheader.
       CLEAR wa_listheader.
    *  Type S is used to display key and value pairs
       wa_listheader-typ = 'S'.
       APPEND wa_listheader TO it_listheader.
       CLEAR wa_listheader.
    *  Type A is used to display italic font
       wa_listheader-typ = 'A'.
       wa_listheader-key = 'Date    :' .
       wa_listheader-info ='SAP ALV Report'.
       APPEND wa_listheader TO it_listheader.
       CLEAR wa_listheader.
    ENDFORM.                    " BUILD_ALV_HEADER
    *&      Form  top_of_page
    FORM top_of_page.
       CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
         EXPORTING
           it_list_commentary = it_listheader
           i_logo         = 'PARI'.
    ENDFORM.                    "top_of_page

  • Simple code to send ALV display as XLS attachment  to SAP inbox

    Hi All,
    Simple code to send ALV display as XLS attachment  to SAP inbox.
    Also i need to send only 200 records per attachement. So in this case i need send multiple attachment per mail
    Thanks,
    Lokesh

    The following code is used to send the internal table which u pass fo  the ALV display to be send as excel sheet attachment
    Internal table is it_attach[]
    ld_email               = po_email.
      ld_mtitle              = 'Email From Z377_EMAIL_XLS'.
      ld_format              = 'XLS'.
      ld_attdescription      = 'filename'.
      ld_attfilename         = 'Allot'.
      ld_sender_address      = ' '.
      ld_sender_address_type = ' '.
    * Fill the document data.
      w_doc_data-doc_size = 1.
    * Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    * Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
      ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = it_attach[].
    * Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE li_content 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               = li_content
      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.

  • To display complete Column as Pushbottons in Simple ALV Tree

    Hi Everybody,
    Are pushbuttons possible in Simple ALV Tree?
    If yes, Can anybody help me in displaying one of the Columns in ALV Tree as Pushbuttons.
    Sample Code for this would also be appreciated.
    Thanks in Advance.
    Regards,
    Arshad

    Hi,
    Check this out.
    http://help.sap.com/saphelp_erp2004/helpdata/en/88/387f380c2f2e3ce10000009b38f8cf/content.htm
    Reward if helpful.
    Regards,
    Ramya

  • Code for hr-abap report in alv display

    Hi Gurus,
    I am new to hr-abap and I want some sample code to display a hr report in an alv.
    Thanks,
    Raj.

    This is one such...
    REPORT yh_rep_hr_certified_instructor MESSAGE-ID yh_messages NO STANDARD
    PAGE
    HEADING .
    Program      : YH_REP_HR_CERTIFIED_INSTRUCTOR                        *
    Description  : Certified Instructor Eligibility Criteria             *
                       TABLES                                       *
    TABLES :hrp1000 ,hrp1001, pa0000.
                          TYPE-POOLS                                 *
    *Type Pool for ALV display
    TYPE-POOLS :slis.  " Global types for generic cunning components
                    INTERNAL TABLES                                 *
    *Internal Table to keep Selection Screen field values
    DATA : BEGIN OF t_validation OCCURS 0.
            INCLUDE STRUCTURE dynpread.
    DATA END OF t_validation.
    *Internal Table for Business Event Groups
    DATA : BEGIN OF t_bgrp OCCURS 0,
            objid TYPE hrobjid,
            blank(1),
            stext TYPE stext,
           END OF t_bgrp.
    *Internal Table for Business Event Type IDs with text for selected Event
    *GROUPS
    DATA : BEGIN OF t_btyp OCCURS 0,
            objid TYPE hrobjid,
            blank(1),
            stext TYPE stext,
           END OF t_btyp.
    *Internal Table for Business Event Type IDs for selected Event Groups
    DATA : BEGIN OF t_eventtypelist OCCURS 0,
            objid TYPE hrobjid,
           END OF t_eventtypelist.
    *Internal table to store the business Groups
    DATA : BEGIN OF t_group OCCURS 0,
            objid LIKE hrp1001-objid,
            sobid LIKE hrp1001-sobid,
            sclas LIKE hrp1001-sclas,
           END OF t_group.
    *Internal table to hold the business event group and/or bus. event types
    DATA : BEGIN OF t_eventgroup OCCURS 0,
            objid LIKE hrp1001-objid,
           END OF t_eventgroup.
    *Internal Table for FieldCatalog used for ALV Display
    DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
    *Work Area for Checking Business Event Group Validity
    DATA: BEGIN OF wa_bgrp,
           objid TYPE hrobjid,
           stext TYPE stext,
          END OF wa_bgrp.
    *Internal table to fetch object id for Qualification
    DATA: BEGIN OF t_objid OCCURS 0,
           objid TYPE hrp1000-objid,
           sobid TYPE hrp1001-sobid,
           sobid_copy TYPE hrp1001-objid,
          END OF t_objid.
    *Internal table to fetch Id of related object
    *Fetches Pernr of Certified Instructors
    DATA: BEGIN OF t_sobid OCCURS 0,
           objid TYPE hrp1000-objid,
           sobid TYPE hrp1001-sobid,
           adatanr TYPE hrpad31-adatanr,
           sobid_copy TYPE hrp1001-objid,
         END OF t_sobid.
    *Internal table to fetch skill rating
    *of the Instructor
    DATA: BEGIN OF t_prof OCCURS 0,
            adatanr TYPE hrpad31-adatanr,
            chara TYPE hrpad31-chara,
          END OF t_prof.
    *Internal table to fetch grade
    *of the Insturctor
    DATA: BEGIN OF t_grade OCCURS 0,
           pernr TYPE pa0008-pernr,
           yysalgr TYPE pa0008-yysalgr,
          END OF t_grade.
    *Internal table which contains all information about the Person like
    *Name Project Project Manager Name Account and Vertical Name
    DATA: t_projdetails TYPE zbapi_projdetails OCCURS 0 WITH HEADER LINE.
    *Final Internal table which contains all information
    *about the Instructors
    DATA: BEGIN OF t_final OCCURS 0,
             empid TYPE pa0000-pernr,
             empname(84) TYPE c,
             grade TYPE pa0008-yysalgr,
             atndttt(3) TYPE c,
             sklrate TYPE hrpad31-chara,
             pgmng TYPE pa0001-ename,
             accname TYPE hrp1000-stext,
             vertname TYPE hrp1000-stext,
           END OF t_final.
                         VARIABLES                                  *
    *ALV layout
    DATA: gs_layout TYPE slis_layout_alv, "alvtot test
          gt_events TYPE slis_t_event,
          gt_list_top_of_page TYPE slis_t_listheader,
          gs_variant LIKE disvariant,     "For Layout
          g_save.                         "For Layout Save
    DATA: w_pos TYPE i VALUE 1,            " Position of Fields in ALV
          w_sort TYPE slis_t_sortinfo_alv, "ITab for Sorting Options
          w_flag TYPE i,
          w_repid TYPE sy-repid,
          w_lineno TYPE sy-tabix.
    DATA: l_short TYPE hrp1000-short. "variable to check the heirarchy
                     SELECTION-SCREEN DESIGN                            *
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. "NO INTERVALS .
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(20) text-009 MODIF ID xyz.
    PARAMETERS : p_bgrp TYPE hrobjid OBLIGATORY,
                 p_bgrp1 TYPE stext .
    SELECTION-SCREEN END OF LINE.
    SELECT-OPTIONS :s_btyp FOR hrp1000-objid OBLIGATORY NO INTERVALS.
    SELECTION-SCREEN END OF BLOCK b1.
                            INITIALIZATION                               *
    INITIALIZATION.
    *Assign Program Name into a variable
      w_repid = sy-repid.
    *Build layout for list display
      gs_layout-detail_popup      = 'X'.
    *To get All Events in TOP-OF-PAGE
    perform eventtab_build using gt_events[].
      gs_variant-report = w_repid.
      g_save           = 'A'.
                         AT SELECTION SELECTION                          *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_bgrp.
      PERFORM get_bgrp.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_btyp-low.
      IF NOT p_bgrp IS INITIAL .
        PERFORM get_btyp USING 'l'.
      ELSE .
        MESSAGE s999 WITH text-e09.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_btyp-high.
      IF NOT p_bgrp IS INITIAL .
        PERFORM get_btyp USING 'h'.
      ELSE .
        MESSAGE s999 WITH text-e09.
      ENDIF.
    AT SELECTION-SCREEN ON p_bgrp.
      SELECT SINGLE objid stext
             FROM hrp1000
             INTO wa_bgrp
             WHERE objid = p_bgrp AND
             otype = 'L' AND
             plvar = '01' AND
             ( short = 'ROLE' OR
             short = 'TECH_PROGRAM' ).
      IF sy-subrc EQ 0.
        p_bgrp1 = wa_bgrp-stext.
      ELSE.
        MESSAGE e999 WITH text-e09.
      ENDIF.
    AT SELECTION-SCREEN ON s_btyp.
      CLEAR : t_eventtypelist, t_group, t_eventgroup.
      REFRESH : t_eventtypelist, t_group, t_eventgroup.
      CLEAR : w_flag.
    *Fetch all the subordinates under given Event Group - L/D
      SELECT objid
             sobid
             sclas
                 FROM hrp1001
                 INTO TABLE t_group
                 WHERE objid = p_bgrp
                 AND plvar = '01'
                 AND rsign = 'B'
                 AND relat = '003'
                 AND ( sclas = 'L' OR sclas = 'D' ).
      WHILE w_flag <> 1.
        PERFORM get_objids.
      ENDWHILE.
      IF NOT t_eventtypelist[] IS INITIAL.
    *Get only valid Event Types from input Event Types, for given Event
    *Group - by deleting others..
        LOOP AT t_eventtypelist.
          IF t_eventtypelist-objid IN s_btyp.
            EXIT.
          ELSE.
            DELETE t_eventtypelist.
          ENDIF.
          AT LAST.
    *since we r checking Event Types, All other fields will be locked
    *but we need Event Group field to be unlocked to edit again,
    *if theres no theres no valid Event Types in given input
            LOOP AT SCREEN.
              CHECK screen-name = 'P_bgrp'.
              screen-input = '1'.
              MODIFY SCREEN.
            ENDLOOP.
            MESSAGE e999 WITH text-e04.
            EXIT.
          ENDAT.
        ENDLOOP.
      ELSE.
        LOOP AT SCREEN.
          CHECK screen-name = 'P_bgrp'.
          screen-input = '1'.
          MODIFY SCREEN.
        ENDLOOP.
        MESSAGE e999 WITH text-e03.
      ENDIF.
          FORM get_bgrp                                                 *
    FORM get_bgrp .
      SELECT objid stext
             FROM hrp1000
             INTO CORRESPONDING FIELDS OF TABLE t_bgrp
             WHERE plvar = '01' AND
                   otype = 'L' AND
                   short = 'ROLE' OR
                   short = 'TECH_PROGRAM' .
      CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
        EXPORTING
          endpos_col   = 75
          endpos_row   = 20
          startpos_col = 30
          startpos_row = 05
          titletext    = 'Select Business Event Group'
        IMPORTING
          choise       = w_lineno
        TABLES
          valuetab     = t_bgrp
        EXCEPTIONS
          break_off    = 1
          OTHERS       = 2.
      IF sy-subrc EQ 0 .
        READ TABLE t_bgrp INDEX w_lineno.
        IF sy-subrc EQ 0.
          p_bgrp = t_bgrp-objid.
          p_bgrp1 = t_bgrp-stext.
        ENDIF .
        CLEAR t_bgrp .
        REFRESH  t_bgrp .
      ENDIF .
    ENDFORM .                    "get_bgrp
    ****subroutine for business eventtype input criteria
    FORM get_btyp USING f_range.
      CLEAR :   t_validation,
                t_btyp,
                t_eventtypelist,
                t_group,
                t_eventgroup,
                w_flag.
      REFRESH : t_validation,
                t_btyp,
                t_eventtypelist,
                t_group,
                t_eventgroup.
      t_validation-fieldname = 'P_BGRP'.
      APPEND t_validation.
      CLEAR t_validation.
    *Getting Screen Values
      CALL FUNCTION 'DYNP_VALUES_READ'
        EXPORTING
          dyname               = w_repid
          dynumb               = '1000'
        TABLES
          dynpfields           = t_validation
        EXCEPTIONS
          invalid_abapworkarea = 1
          invalid_dynprofield  = 2
          invalid_dynproname   = 3
          invalid_dynpronummer = 4
          invalid_request      = 5
          no_fielddescription  = 6
          invalid_parameter    = 7
          undefind_error       = 8
          double_conversion    = 9
          stepl_not_found      = 10
          OTHERS               = 11.
      IF sy-subrc NE 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      READ TABLE t_validation WITH KEY fieldname = 'P_BGRP'.
      IF NOT t_validation-fieldname IS INITIAL.
    *Getting Event Group ID that entered
        LOOP AT t_validation.
          IF t_validation-fieldname = 'P_BGRP'.
            p_bgrp = t_validation-fieldvalue.
          ENDIF.
        ENDLOOP.
        CLEAR t_validation.
        REFRESH t_validation.
    *To fetch the business event groups and business event types that belong
    to the input business event group.Since a business group can have a
    *business groups as well as business event types we have pick all of
    *them
    *Getting all subordinates - Event Group/Type under given Event Group
        SELECT objid
               sobid
               sclas
                   FROM hrp1001
                   INTO TABLE t_group
                   WHERE objid = p_bgrp
                   AND plvar = '01'
                   AND rsign = 'B'
                   AND relat = '003'
                   AND endda = '99991231'
                   AND ( sclas = 'L' OR sclas = 'D' ).
    *Getting all Event Types
        WHILE w_flag <> 1.
          PERFORM get_objids.
        ENDWHILE.
        IF NOT t_eventtypelist[] IS INITIAL.
          SORT t_eventtypelist BY objid.
    *Getting Names of Event Types
          SELECT objid
                 stext
                      FROM hrp1000
                      INTO CORRESPONDING FIELDS OF TABLE t_btyp
                      FOR ALL ENTRIES IN t_eventtypelist
                      WHERE objid = t_eventtypelist-objid
                      AND otype = 'D' AND plvar = '01'
                      AND endda = '99991231'.
          IF sy-subrc = 0.
    *PopUp Display for Event Types
            CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'
              EXPORTING
                endpos_col   = 75
                endpos_row   = 20
                startpos_col = 30
                startpos_row = 05
                titletext    = 'Select Business Event Type ID'
              IMPORTING
                choise       = w_lineno
              TABLES
                valuetab     = t_btyp
              EXCEPTIONS
                break_off    = 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.
            ELSE.
    *Since the Table returned by function module will have data in Header,
    *clear the Header
    *Retreive Selected Event Type into Select Option
              READ TABLE t_btyp INDEX w_lineno.
              IF sy-subrc EQ 0.
                IF f_range = 'l'.
                  s_btyp-low = t_btyp-objid.
                ELSE.
                  s_btyp-high = t_btyp-objid.
                ENDIF.
              ENDIF.
            ENDIF.
          ELSE.
            MESSAGE s999 WITH text-e03.
          ENDIF.
        ELSE.
          MESSAGE s999 WITH text-e01.
        ENDIF.
      ENDIF.
    ENDFORM.                    " EVNTTY
          FORM get_objids                                               *
    FORM get_objids.
    *To delete the business event types that are found and push it in
    *another table
      IF NOT t_group[] IS INITIAL.
        LOOP AT t_group.
    *If event type
          IF t_group-sclas = 'D'.
            t_eventtypelist-objid = t_group-sobid.
            APPEND t_eventtypelist.
            CLEAR t_eventtypelist.
            DELETE t_group.
    *If event group
          ELSEIF t_group-sclas = 'L'.
            t_eventgroup-objid = t_group-sobid.
            APPEND t_eventgroup.
            CLEAR t_eventgroup.
            DELETE t_group.
            CLEAR t_group.
          ENDIF.
        ENDLOOP.
      ELSE.
        w_flag = 1.
      ENDIF.
      IF NOT t_eventgroup[] IS INITIAL.
    *To get the second level of business groups and business event type
        SELECT objid sobid sclas
               FROM hrp1001
               INTO TABLE t_group
               FOR ALL ENTRIES IN t_eventgroup
               WHERE objid = t_eventgroup-objid
               AND plvar = '01'
               AND rsign = 'B'
               AND relat = '003'
               AND endda = '99991231'
               AND ( sclas = 'L' OR sclas = 'D' ).
        CLEAR t_eventgroup.
        REFRESH t_eventgroup.
      ENDIF.
    ENDFORM.                    " GET_OBJIDS
                           Start of Selection                            *
    START-OF-SELECTION.
    *Pass the Event Type and fetch the Related Id
    *for the Qualification imparted by the Event
      SELECT objid sobid
             FROM hrp1001
             INTO TABLE t_objid
             WHERE objid IN s_btyp AND
                   otype = 'D' AND
                   plvar = '01' AND
                   relat = '028' AND
                   rsign = 'A' AND
                   sclas = 'Q'.
      IF sy-subrc EQ 0.
    *Pass the Qualification Id and fetch Object Id of the
    *person who fulfills this Qualification
        SELECT objid sobid adatanr
           FROM hrp1001
           INTO TABLE t_sobid FOR ALL ENTRIES IN t_objid
           WHERE sobid = t_objid-sobid AND
                 otype = 'P' AND
                 plvar = '01' AND
                 relat = '032' AND
                 rsign = 'A' AND
                 sclas = 'Q' .
        IF sy-subrc = 0.
    *Fetch only the Person along with the skillrating
    *who has skill rating as '0001' or '0003'
          SELECT adatanr chara
                 FROM hrpad31
                 INTO TABLE t_prof
                 FOR ALL ENTRIES IN t_sobid
                 WHERE adatanr = t_sobid-adatanr AND
                ( chara = '0001' OR chara = '0003' ).
          IF sy-subrc NE 0.
            MESSAGE s999 WITH text-s01.
            EXIT .
          ELSE .
    *Fetch only Employee Id's who meets the required skill rating
    *which inturn has the EMPID who are all are Certified Instructors
            LOOP AT t_sobid.
              READ TABLE t_prof WITH KEY adatanr = t_sobid-adatanr.
              IF sy-subrc NE 0.
                DELETE t_sobid .
              ENDIF.
            ENDLOOP.
            SORT t_sobid BY objid.
            DELETE ADJACENT DUPLICATES FROM t_sobid.
          ENDIF.
        ENDIF.
      ENDIF.
      IF NOT t_sobid[] IS INITIAL.
    data: begin of it_trgpernr occurs 0,
             objid type hrp1000-objid,
             sobid type hrp1001-sobid,
           end of it_trgpernr.
    select objid sobid
            from hrp1001
            into table it_trgpernr for all entries in t_sobid
            where  otype ='P' and
                  objid = t_sobid-objid and
                  sclas = 'D' and
                  sobid = '50008220'.
    *Fetch Grade of the Certified Instructors by passing their EmpId's
        SELECT pernr yysalgr
                     FROM pa0008
                     INTO TABLE t_grade
                     FOR ALL ENTRIES IN t_sobid
                     WHERE pernr = t_sobid-objid AND endda = '99991231'.
      ENDIF.
    For Heading in the Output Display Layout
      PERFORM heading USING gt_list_top_of_page[].
                           End of Selection                              *
    END-OF-SELECTION.
    Populating data into Final Table which contains all information aboutthe Certified Instructors
    *Retrieve Employee Id for the Certified Instructors  only if he is active
      LOOP AT t_sobid.
        SELECT SINGLE *
               FROM pa0000
               WHERE pernr = t_sobid-objid  AND
                     begda <= sy-datum AND
                     endda >= sy-datum AND
                     stat2 ='3'.
        IF sy-subrc = 0.
          t_final-empid = t_sobid-objid.
          SELECT  SINGLE *
                FROM hrp1001
                WHERE otype = 'P' AND
                      objid = t_sobid-objid AND
                      rsign = 'B' AND
                      relat = '25' AND
                      sclas = 'D' AND
                      sobid = '50008220'.
    *DATA:W_SOBID TYPE HRP1001-SOBID.
    *W_SOBID = t_sobid-objid.                 .
         SELECT  SINGLE *
               FROM hrp1001
               WHERE otype = 'D' AND
                     objid = '50008220' AND
                     rsign = 'B' AND
                     relat = '25' AND
                     sclas = 'P' AND
                     sobid = W_SOBID.
          IF sy-subrc EQ 0.
            t_final-atndttt = 'YES'.
          ELSE.
            t_final-atndttt = 'NO'.
          ENDIF.
    *Retrieve Employee SkillRating for the Certified Instructors
    *by passing the adatanr value which inturn is fetched based on the empid
          READ TABLE t_prof WITH KEY adatanr = t_sobid-adatanr.
          IF sy-subrc EQ 0.
            t_final-sklrate = t_prof-chara.
          ENDIF.
    *Retrieve Employee Grade for the given id
          READ TABLE t_grade WITH KEY pernr = t_sobid-objid.
          IF sy-subrc EQ 0.
            t_final-grade = t_grade-yysalgr.
          ENDIF.
          REFRESH t_projdetails.
          CLEAR t_projdetails.
    *function which fetches the name project name account and
    *vertical name of the person for the given empid
          CALL FUNCTION 'ZBAPI_PROJDETAILS'
            EXPORTING
              pernr       = t_sobid-objid
            TABLES
              it_finaltab = t_projdetails.
          IF NOT t_projdetails[] IS INITIAL.
            SHIFT t_sobid-objid LEFT DELETING LEADING '0'.
            READ TABLE t_projdetails WITH KEY pernr = t_sobid-objid.
            IF sy-subrc EQ 0.
              t_final-empname = t_projdetails-ename.
              IF NOT t_projdetails-proj IS INITIAL.
                t_final-pgmng = t_projdetails-pmname.
              ELSE.
                t_final-pgmng = t_projdetails-gmname.
              ENDIF.
              t_final-accname = t_projdetails-accname.
              t_final-vertname = t_projdetails-vertname.
            ENDIF.
          ENDIF.
          APPEND t_final.
        ENDIF.
        CLEAR t_final.
      ENDLOOP.
      SORT t_final BY empid.
      DELETE ADJACENT DUPLICATES FROM t_final.
    *Enabling Sort by PERNR & Global ID in ALV display
      PERFORM sub_sort_info.
    *Form to Populate Field Catalog
      PERFORM populate_fieldcatalog.
    For the ALV ROW Optimize Width
      gs_layout-colwidth_optimize = 'X' .
    *perform alv_display tables final fieldcatalog.
      IF NOT t_final[] IS INITIAL.
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program = w_repid
            is_layout          = gs_layout
            it_fieldcat        = t_fieldcatalog[]
            it_sort            = w_sort
            i_save             = 'A'
            it_events          = gt_events[]
          TABLES
            t_outtab           = t_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.
      ELSE.
        MESSAGE s000(vz) WITH 'No Records found for Given Input Criteria'.
      ENDIF.
                             TOP OF PAGE                                 *
    *Outputs formatted simple header information at TOP-OF-PAGE.
    TOP-OF-PAGE.
      PERFORM top_of_page.
                             Subroutines                                 *
    *&      Form  eventtab_build
          text`
         -->P_GT_EVENTS[]  text
    FORM eventtab_build USING  rt_events  TYPE slis_t_event.
      DATA: ls_event TYPE slis_alv_event.
      DATA: g_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type = 0
        IMPORTING
          et_events   = rt_events.
      READ TABLE rt_events WITH KEY name = slis_ev_top_of_page
                               INTO ls_event.
      IF sy-subrc = 0.
        MOVE g_top_of_page TO ls_event-form.
        APPEND ls_event TO rt_events.
      ENDIF.
    ENDFORM.                    " eventtab_build
    *&      Form  HEADING
          text
    FORM heading USING lt_top_of_page TYPE slis_t_listheader.
      DATA: ls_line TYPE slis_listheader.
    *Layout Display Text - "Caritor ( India ) Pvt.Ltd "
      CLEAR ls_line.
      ls_line-typ  = 'H'.
      ls_line-info = text-h01.
      APPEND ls_line TO lt_top_of_page.
    *Layout Display Text - "Certified Instructor Eligibility List     "
      CLEAR ls_line.
      ls_line-typ  = 'H'.
      ls_line-info = text-h02.
      APPEND ls_line TO lt_top_of_page.
    ENDFORM.                    " HEADING
    *&      Form  top_of_page
          text
    -->  p1        text
    <--  p2        text
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = gt_list_top_of_page.
    ENDFORM.                    " top_of_page
    *&      Form  sub_sort_info
          text
    -->  p1        text
    <--  p2        text
    FORM sub_sort_info.
      DATA : l_sort TYPE slis_sortinfo_alv .
      CLEAR l_sort.
    Employee ID
      l_sort-fieldname = 'EMPID'.
      l_sort-up        = 'X'.
      APPEND l_sort TO w_sort.
    ENDFORM.                    " sub_sort_info
    *&      Form  populate_fieldcatalog
          text
    -->  p1        text
    <--  p2        text
    FORM populate_fieldcatalog.
      PERFORM fill_fields_of_fieldcatalog
               TABLES t_fieldcatalog
               USING 'T_FINAL' 'EMPID' ' ' text-011 20 w_pos.
      PERFORM fill_fields_of_fieldcatalog
               TABLES t_fieldcatalog
               USING 'T_FINAL' 'EMPNAME' ' ' text-002 20 w_pos.
      PERFORM fill_fields_of_fieldcatalog
              TABLES t_fieldcatalog
              USING 'T_FINAL' 'GRADE' ' ' text-003 20 w_pos.
      PERFORM fill_fields_of_fieldcatalog
              TABLES t_fieldcatalog
              USING 'T_FINAL' 'ATNDTTT' ' ' text-004 20 w_pos.
      PERFORM fill_fields_of_fieldcatalog
              TABLES t_fieldcatalog
              USING 'T_FINAL' 'PGMNG' ' ' text-006 20 w_pos.
      PERFORM fill_fields_of_fieldcatalog
              TABLES t_fieldcatalog
              USING 'T_FINAL' 'ACCNAME' ' ' text-007 20 w_pos.
      PERFORM fill_fields_of_fieldcatalog
              TABLES t_fieldcatalog
              USING 'T_FINAL' 'VERTNAME' ' ' text-008 20 w_pos.
      PERFORM fill_fields_of_fieldcatalog
              TABLES t_fieldcatalog
              USING 'T_FINAL' 'SKLRATE' ' ' text-005 20 w_pos.
    ENDFORM.                    " populate_fieldcatalog
    *&      Form  FILL_FIELDS_OF_FIELDCATALOG
          text
         -->P_T_FIELDCATALOG  text
         -->P_0870   text
         -->P_0871   text
         -->P_0872   text
         -->P_TEXT_001  text
         -->P_20     text
         -->P_W_POS  text
    FORM fill_fields_of_fieldcatalog TABLES fp_t_fieldcatalog STRUCTURE
                                                         t_fieldcatalog
                                     USING    fp_table
                                              fp_field
                                              fp_key
                                              fp_text
                                              fp_out_len
                                              fp_pos.
      fp_t_fieldcatalog-tabname    = fp_table.
      fp_t_fieldcatalog-fieldname  = fp_field.
      fp_t_fieldcatalog-seltext_l  = fp_text.
      fp_t_fieldcatalog-key        = fp_key.
      fp_t_fieldcatalog-outputlen  = fp_out_len.
      fp_t_fieldcatalog-col_pos    = fp_pos.
      APPEND fp_t_fieldcatalog.
      CLEAR:  fp_t_fieldcatalog.
      fp_pos = fp_pos + 1.
    ENDFORM.                    " FILL_FIELDS_OF_FIELDCATALOG
    10.249.11.136\SAP-StudyMaterial

  • Example of  a Simple ALV Report using Function Modules (not OO)

    Hi,
    I am new to ABAP. Where can I get a proper Example of  a Simple ALV Report using Function Modules?  I searched the forum but did not find a proper solution. Kindly help.
    Smruthi.
    Edited by: Smruthi Acharya on Jan 29, 2009 7:13 PM

    Hi,
    Use this demo code:-
    REPORT  z_alv01 MESSAGE-ID zmsg.
    *          TABLES
    TABLES : ekpo.
    *          TYPE POOLS
    TYPE-POOLS : slis.
    *          TYPE DECLARATION
    TYPES : BEGIN OF t_ekpo,
              ebeln TYPE ekpo-ebeln,
              ebelp TYPE ekpo-ebelp,
              matnr TYPE ekpo-matnr,
              werks TYPE ekpo-werks,
              menge TYPE ekpo-menge,
            END OF t_ekpo.
    *          PARAMETERS
    PARAMETERS : s_var TYPE disvariant-variant.
    *          DATA DECLARATION
    *VARIABLES
    DATA : check(1),
           rep_id TYPE sy-repid.
    *INTERNAL TABLE TYPE OF ZEKPO
    DATA : it_ekpo TYPE STANDARD TABLE OF t_ekpo WITH HEADER LINE.
    *FIELD CATALOG
    DATA : it_field TYPE slis_t_fieldcat_alv,
           wa_field TYPE slis_fieldcat_alv.
    *SORTING
    DATA : it_sort TYPE slis_t_sortinfo_alv,
           wa_sort TYPE slis_sortinfo_alv.
    *FOR TOP OF THE PAGE
    DATA : it_top TYPE slis_t_listheader,
           wa_top TYPE slis_listheader.
    *FOR END OF THE PAGE
    DATA : it_end TYPE slis_t_listheader,
           wa_end TYPE slis_listheader.
    *TO CAPTURE EVENTS AND HANDLE
    DATA : it_event TYPE slis_t_event,
           wa_event TYPE slis_alv_event.
    *FOR GRID TITLE
    DATA : wa_title TYPE lvc_title.
    *FOR LAYOUT
    DATA : wa_layout TYPE slis_layout_alv.
    *FOR EXCLUDING STANDARD BUTTON FROM ALV TOOLBAR
    DATA : it_exclude TYPE slis_t_extab,
           wa_exclude TYPE slis_extab.
    *FOR VARIANT
    DATA : wa_variant TYPE disvariant.
    *          INITIALIZATION
    INITIALIZATION.
      check = 'X'.
      rep_id = sy-repid.
      wa_variant-report = sy-repid.
    *GET DEFUALT ON THE SELECTION SCREEN FOR DEFAULT DISPLAY
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
        EXPORTING
          i_save        = 'A'
        CHANGING
          cs_variant    = wa_variant
        EXCEPTIONS
          wrong_input   = 1
          not_found     = 2
          program_error = 3
          OTHERS        = 4.
      IF sy-subrc = 0.               " IF DEFAULT VARIANT FOUND
        s_var = wa_variant-variant.  " PASS THE DEFAULT VARIANT TO THE SELECTION SCREEN FIELD
      ENDIF.
    *          AT-SELECTION SCREEN ON VALUE REQUEST
    *          TO GET THE F4 HELP FOR VARIANT
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_var.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
        EXPORTING
          is_variant                = wa_variant
    *   I_TABNAME_HEADER          =
    *   I_TABNAME_ITEM            =
    *   IT_DEFAULT_FIELDCAT       =
         i_save                    = 'A'
    *   I_DISPLAY_VIA_GRID        = ' '
       IMPORTING
    *   E_EXIT                    =
         es_variant                = wa_variant
       EXCEPTIONS
         not_found                 = 1
         program_error             = 2
         OTHERS                    = 3.
      IF sy-subrc = 0.
        s_var = wa_variant-variant. " PASS THE SELECTED VARIANT TO THE SELECTION SCREEN FIELD
      ENDIF.
    *          AT-SELECTION SCREEN
    *          TO CHECK THE EXISTENCE FOR VARIANT
    AT SELECTION-SCREEN.
      wa_variant-variant = s_var.
      CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
        EXPORTING
          i_save        = 'A'
        CHANGING
          cs_variant    = wa_variant
        EXCEPTIONS
          wrong_input   = 1
          not_found     = 2
          program_error = 3
          OTHERS        = 4.
      IF sy-subrc <> 0.
        MESSAGE w001.
      ENDIF.
    *          START OF SELECTION
    START-OF-SELECTION.
      SELECT ebeln
             ebelp
             matnr
             werks
             menge
             FROM ekpo
             INTO TABLE it_ekpo.
    *          FIELD CATALOG
      wa_field-fieldname = 'EBELN'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 10.
      wa_field-seltext_l = 'PO #'.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'EBELP'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 10.
      wa_field-seltext_l = 'Line Item'.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'MATNR'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 15.
      wa_field-seltext_l = 'Material'.
    *  wa_field-input = check.
    *  wa_field-edit = check.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'WERKS'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 6.
      wa_field-seltext_l = 'Plant'.
    *  wa_field-input = check.
    *  wa_field-edit = check.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'MENGE'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 10.
      wa_field-seltext_l = 'Qty.'.
    *  wa_field-input = check.
    *  wa_field-edit = check.
      wa_field-do_sum = check.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
    *          SORT W.R.T. PURCHASE ORDER NUMBER
      wa_sort-spos = 1.
      wa_sort-fieldname = 'EBELN'.
      wa_sort-tabname = 'IT_EKPO'.
      wa_sort-up = check.
      wa_sort-subtot = check.
      APPEND wa_sort TO it_sort.
      CLEAR wa_sort.
    *          FOR GRID TITLE
      wa_title = 'Hello'.
    *          FOR LAYOUT
      wa_layout-zebra = check.
    *          FOR EXCLUDING STANDARD BUTTONS FROM ALV TOOLBAR
      wa_exclude-fcode = '&OUP'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
      wa_exclude-fcode = '&ODN'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
      wa_exclude-fcode = '&OAD'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
    *  wa_exclude-fcode = '&AVE'.
    *  APPEND wa_exclude TO it_exclude.
    *  CLEAR wa_exclude.
      wa_exclude-fcode = '&INFO'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
    *          POPULATE ALL EVENTS INTO INTERNAL TABLE
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_event
        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.
      READ TABLE it_event INTO wa_event WITH KEY name = 'END_OF_LIST'.
      wa_event-form = 'END'.
      MODIFY it_event FROM wa_event INDEX sy-tabix.
      CLEAR wa_event.
    *          DISPLAY RECORDS IN ALV GRID
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                = ' '
    *   I_BUFFER_ACTIVE                   = ' '
       i_callback_program                = rep_id
    *   i_callback_pf_status_set          = 'PF'
       i_callback_user_command           = 'COMMAND'
       i_callback_top_of_page            = 'TOP'
    *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *   I_CALLBACK_HTML_END_OF_LIST       = ' '
    *   I_STRUCTURE_NAME                  =
    *   I_BACKGROUND_ID                   = ' '
       i_grid_title                      = wa_title
    *   I_GRID_SETTINGS                   =
       is_layout                         = wa_layout
       it_fieldcat                       = it_field
       it_excluding                      = it_exclude
    *   IT_SPECIAL_GROUPS                 =
       it_sort                           = it_sort
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
    *   I_DEFAULT                         = 'X'
       i_save                            = 'A'
       is_variant                        = wa_variant
       it_events                         = it_event
    *   IT_EVENT_EXIT                     =
    *   IS_PRINT                          =
    *   IS_REPREP_ID                      =
    *   I_SCREEN_START_COLUMN             = 0
    *   I_SCREEN_START_LINE               = 0
    *   I_SCREEN_END_COLUMN               = 0
    *   I_SCREEN_END_LINE                 = 0
    *   I_HTML_HEIGHT_TOP                 = 0
    *   I_HTML_HEIGHT_END                 = 0
    *   IT_ALV_GRAPHICS                   =
    *   IT_HYPERLINK                      =
    *   IT_ADD_FIELDCAT                   =
    *   IT_EXCEPT_QINFO                   =
    *   IR_SALV_FULLSCREEN_ADAPTER        =
    * IMPORTING
    *   E_EXIT_CAUSED_BY_CALLER           =
    *   ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = it_ekpo
    EXCEPTIONS
       program_error                     = 1
       OTHERS                            = 2.
      IF sy-subrc <> 0.
      ENDIF.
    *&      Form  top
    *       TO WRITE THE HEADER
    FORM top.
      REFRESH it_top.
      wa_top-typ = 'S'.
      wa_top-key = text-001.
      wa_top-info = rep_id.
      APPEND wa_top TO it_top.
      CLEAR wa_top.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_top
    *   I_LOGO                   =
    *   I_END_OF_LIST_GRID       =
    *   I_ALV_FORM               =
    ENDFORM.                    "top
    *&      Form  end
    *       TO WRITE THE FOOTER
    FORM end.
      REFRESH it_end.
      wa_end-typ = 'S'.
      wa_end-key = text-001.
      wa_end-info = rep_id.
      APPEND wa_end TO it_end.
      CLEAR wa_end.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_end
    *   I_LOGO                   =
    *   I_END_OF_LIST_GRID       =
    *   I_ALV_FORM               =
    ENDFORM.                    "end
    *&      Form  pf
    *       FOR PF-STATUS WITH USER DEFINED BUTTONS
    *      -->RT_EXTAB   text
    FORM pf USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZTG_PF_ALV'.
    ENDFORM.                    "pf
    *&      Form  command
    *       TO HANDLE USER ACTIONS AGAINST PF-STATUS
    *      -->UCOMM      text
    *      -->SELFIELD   text
    FORM command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield.
      DATA : ok_code TYPE sy-ucomm.
      ok_code = ucomm.
      CASE ok_code.
        WHEN 'T_DOWN'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'TOTAL DOWN'.
        WHEN 'DOWN'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'DOWN'.
        WHEN 'UP'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'UP'.
        WHEN 'T_UP'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'TOTAL UP'.
      ENDCASE.
    ENDFORM.                    "command
    Hope this helps you.
    Thanks & Regards,
    Tarun Gambhir

  • SQ01 ALV DISPLAY WHEN USING LOGOCAL DATABASE

    Dear All,
    I'm using a logical database (EMM) to build a query in SQ01, I need an ALV display.
    If I use only three tables of the logical database hierarchy it works fine, but as soon as I try to use a fourth one, then the ALV display does not work anymore.
    At the parameter selection screen, instead of the usual  "Sap List Viewer" field I've got a "Save with ID" tick box, and on the result screen, it is not possible to select "Alv display" (no such buton).
    Is this normal way of is there anything I could do ?
    Please note that if using a "simple" join between the 4th tables instead of the logical database , then it works fine.
    Regards
    Francois

    Hi,
    Its only because of Fieldcatalog problem.
    Only one thing you need to take care is that when you refer any dictionary field do not use TYPE Instead use LIKE statement, then It works.
    You can have a example..
    TYPE-POOLS: SLIS.
    DATA: PROGNAME  LIKE SY-REPID,
          GT_FCAT0  TYPE SLIS_T_FIELDCAT_ALV,
          GT_FCAT1  TYPE SLIS_T_FIELDCAT_ALV.
    DATA: IT_MARA0 TYPE TABLE OF MARA.
    DATA: BEGIN OF IT_MARA1 OCCURS 0,
             MATNR LIKE MARA-MATNR,
             MATKL LIKE MARA-MATKL,
           END   OF IT_MARA1.
    PROGNAME  = SY-REPID.
    * internal table definition with type of a structure
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
      EXPORTING
        I_PROGRAM_NAME         = PROGNAME
        I_INTERNAL_TABNAME     = 'IT_MARA0'
        I_STRUCTURE_NAME       = 'MARA'
        I_CLIENT_NEVER_DISPLAY = 'X'
      CHANGING
        CT_FIELDCAT            = GT_FCAT0[]
      EXCEPTIONS
        INCONSISTENT_INTERFACE = 1
        PROGRAM_ERROR          = 2
        OTHERS                 = 3.
    * own internal table definition
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
      EXPORTING
        I_PROGRAM_NAME         = PROGNAME
        I_INTERNAL_TABNAME     = 'IT_MARA1'
        I_INCLNAME             = PROGNAME
        I_CLIENT_NEVER_DISPLAY = 'X'
      CHANGING
        CT_FIELDCAT            = GT_FCAT1[]
      EXCEPTIONS
        INCONSISTENT_INTERFACE = 1
        PROGRAM_ERROR          = 2
        OTHERS                 = 3.
    Thanks
    Arbind

  • AlV display in container

    hi abaprs,
    i have displayed my alv in container using cl_gui_alv_grid->set_table_for_first_display, now i have 'edit' button on my screen, i want to make certaion fields of a raw selected by user to editable mode when user
    push that button, i have got few refrences but i cant get the solution, i m looking for some subroutine where i can catch the index of the row selected and switch it to editable mode.
    sample code will be a bonus, and useful answer will be rewarded.
    thanks
    devender.

    Hi,
    Here are a few classes used in ALV, just read through their documentation or look at how they've been implemented in your system and you'll get a good idea on how to use them:
    CL_ALV_EVENT_DATA (Changing Data Container for Events)
    CL_ALV_EVENT_TOOLBAR_SET (ALV Context menu)
    CL_ALV_TABLE_CREATE (Dynamic Creation of ALV Data Table)
    CL_ALV_TREE_BASE (Basis Class ALV Tree Control)
    CL_CK_ALVTREE_NKEY_2_OBJECT (Converter Node Key Object)
    CL_COST_COSTINGVERSION_ALV (Display Costing Versions)
    CL_GUI_ALV_GRID (List Viewer)
    CL_GUI_ALV_GRID_BASE (Basis Class for ALV grid)
    CL_GUI_ALV_TREE (ALV Tree Control)
    CL_GUI_ALV_TREE_SIMPLE (Simple ALV Tree)
    check the below links lot of info and examples r there for OOPS
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.geocities.com/victorav15/sapr3/abap_ood.html
    http://www.brabandt.de/html/abap_oo.html
    Check this cool weblog:
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    /people/thomas.jung3/blog/2004/12/08/abap-persistent-classes-coding-without-sql
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b6254f411d194a60000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/c3/225b5654f411d194a60000e8353423/content.htm
    http://www.esnips.com/doc/375fff1b-5a62-444d-8ec1-55508c308b17/prefinalppt.ppt
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    http://www.allsaplinks.com/
    http://www.sap-img.com/
    http://www.sapgenie.com/
    http://help.sap.com
    http://www.sapgenie.com/abap/OO/
    http://www.sapgenie.com/abap/OO/index.htm
    http://www.sapgenie.com/abap/controls/index.htm
    http://www.esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    http://www.esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    http://www.sapgenie.com/abap/OO/index.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    http://www.sapgenie.com/abap/OO/
    these links
    http://help.sap.com/saphelp_47x200/helpdata/en/ce/b518b6513611d194a50000e8353423/content.htm
    For funtion module to class
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5954f411d194a60000e8353423/content.htm
    for classes
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b5c54f411d194a60000e8353423/content.htm
    for methods
    http://help.sap.com/saphelp_47x200/helpdata/en/08/d27c03b81011d194f60000e8353423/content.htm
    for inheritance
    http://help.sap.com/saphelp_47x200/helpdata/en/dd/4049c40f4611d3b9380000e8353423/content.htm
    for interfaces
    http://help.sap.com/saphelp_47x200/helpdata/en/c3/225b6254f411d194a60000e8353423/content.htm
    For Materials:
    1) http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCABA/BCABA.pdf -- Page no: 1291
    2) http://esnips.com/doc/5c65b0dd-eddf-4512-8e32-ecd26735f0f2/prefinalppt.ppt
    3) http://esnips.com/doc/2c76dc57-e74a-4539-a20e-29383317e804/OO-abap.pdf
    4) http://esnips.com/doc/0ef39d4b-586a-4637-abbb-e4f69d2d9307/SAP-CONTROLS-WORKSHOP.pdf
    5) http://esnips.com/doc/92be4457-1b6e-4061-92e5-8e4b3a6e3239/Object-Oriented-ABAP.ppt
    6) http://esnips.com/doc/448e8302-68b1-4046-9fef-8fa8808caee0/abap-objects-by-helen.pdf
    7) http://esnips.com/doc/39fdc647-1aed-4b40-a476-4d3042b6ec28/class_builder.ppt
    8) http://www.amazon.com/gp/explorer/0201750805/2/ref=pd_lpo_ase/102-9378020-8749710?ie=UTF8
    1) http://www.erpgenie.com/sap/abap/OO/index.htm
    2) http://help.sap.com/saphelp_nw04/helpdata/en/ce/b518b6513611d194a50000e8353423/frameset.htm
    Check these sample code
    data : begin of it_mara occurs 0,
    mark type flag,
    matnr type matnr,
    mtart type mtart,
    meins type meins,
    end of it_mara.
    data : begin of it_mara1 occurs 0,
    mark type flag,
    matnr type matnr,
    mtart type mtart,
    meins type meins,
    end of it_mara1.
    data : begin of it_mara2 occurs 0,
    mark type flag,
    matnr type matnr,
    mtart type mtart,
    meins type meins,
    end of it_mara2.
    data : t_fieldcat type lvc_t_fcat,
    t_fieldcat1 type lvc_t_fcat,
    s_fieldcat like line of t_fieldcat.
    data : s_layout type lvc_s_layo.
    data : control type ref to cl_gui_custom_container,
    grid type ref to cl_gui_alv_grid.
    data: begin of wa ,
    mark type flag,
    matnr type matnr,
    mtart type mtart,
    meins type meins,
    end of wa.
    class lcl_events_box definition.
    public section.
    methods :
    *Handler_Data_Changed for event Data_Changed of cl_gui_alv_grid
    *imporTing er_data_changed,
    Handler_User_Command for event User_Command of cl_gui_alv_grid
    imporTing e_ucomm,
    Handler_ToolBar for event ToolBar of cl_gui_alv_grid
    importing E_object E_interactive.
    endclass.
    class lcl_events_box implementation.
    method Handler_user_command.
    PERFORM FORM_USERCOMMAND CHANGING E_UCOMM.
    endmethod.
    method Handler_ToolBar.
    PERFORM FORM_TOOLBAR CHANGING E_OBJECT E_INTERACTIVE
    E_OBJECT->MT_TOOLBAR.
    endmethod.
    ENDCLASS.
    start-of-selection.
    data : w_events type ref to lcl_events_box.
    select matnr mtart meins from mara into corresponding fields of table
    it_mara.
    call screen 100.
    *& Module pbo_module OUTPUT
    text
    MODULE pbo_module OUTPUT.
    if GRID is initial.
    CREATE OBJECT CONTROL
    EXPORTING
    CONTAINER_NAME = 'CUST_CTRL'.
    CREATE OBJECT GRID
    EXPORTING
    I_PARENT = CONTROL.
    PERFORM BUILD_CATALOG.
    PERFORM BUILD_CATALOG1.
    PERFORM BUILD_LAYOUT.
    CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
    IS_LAYOUT = s_layout
    CHANGING
    IT_OUTTAB = it_mara[]
    IT_FIELDCATALOG = t_fieldcat.
    CREATE OBJECT W_EVENTS.
    SET HANDLER : W_EVENTS->HANDLER_TOOLBAR FOR GRID,
    W_EVENTS->HANDLER_USER_COMMAND FOR GRID.
    CALL METHOD GRID->SET_TOOLBAR_INTERACTIVE.
    ELSE.
    call method grid->refresh_table_display.
    ENDIF.
    ENDMODULE. " pbo_module OUTPUT
    *& Form BUILD_CATALOG
    FORM BUILD_CATALOG .
    S_FIELDCAT-COL_POS = '1'.
    S_FIELDCAT-FIELDNAME = 'MARK'.
    S_FIELDCAT-CHECKBOX = 'X'.
    S_FIELDCAT-eDIT = 'X'.
    APPEND S_FIELDCAT TO T_FIELDCAT.
    CLEAR S_FIELDCAT.
    S_FIELDCAT-COL_POS = '2'.
    S_FIELDCAT-FIELDNAME = 'MATNR'.
    S_FIELDCAT-SCRTEXT_M = 'MATERIAL'.
    APPEND S_FIELDCAT TO T_FIELDCAT.
    S_FIELDCAT-COL_POS = '3'.
    S_FIELDCAT-FIELDNAME = 'MTART'.
    S_FIELDCAT-SCRTEXT_M = 'MATERL TYPE'.
    APPEND S_FIELDCAT TO T_FIELDCAT.
    S_FIELDCAT-COL_POS = '4'.
    S_FIELDCAT-FIELDNAME = 'MEINS'.
    S_FIELDCAT-SCRTEXT_M = 'UOM'.
    APPEND S_FIELDCAT TO T_FIELDCAT.
    ENDFORM. " BUILD_CATALOG
    *& Form BUILD_LAYOUT
    text
    --> p1 text
    <-- p2 text
    FORM BUILD_LAYOUT .
    S_LAYOUT-ZEBRA = 'X'.
    S_LAYOUT-CWIDTH_OPT = 'X'.
    S_LAYOUT-GRID_TITLE = 'Material Details'.
    ENDFORM.
    " BUILD_LAYOUT////////////////////////////////////
    " USER_COMMAND_0100 INPUT
    *& Form FORM_USERCOMMAND
    text
    <--P_E_UCOMM text
    form FORM_USERCOMMAND changing p_e_ucomm.
    CASE P_E_UCOMM.
    WHEN 'INT1'.
    DO.
    READ TABLE IT_MARA INDEX SY-INDEX TRANSPORTING MARK MATNR.
    IF SY-SUBRC 0.
    EXIT.
    ENDIF.
    IF IT_MARA-MARK = 'X'.
    read table it_mara into wa TRANSPORTING MATNR MTART MEINS .
    MOVE-CORRESPONDING WA TO IT_MARA1.
    READ TABLE IT_MARA1 TRANSPORTING MATNR MTART MEINS .
    MOVE-CORRESPONDING IT_MARA1 TO IT_MARA2.
    APPEND IT_MARA2.
    CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
    IS_LAYOUT = s_layout
    CHANGING
    IT_OUTTAB = it_mara2[]
    IT_FIELDCATALOG = t_fieldcat1.
    SET PARAMETER ID 'MAT' FIELD IT_MARA-MATNR.
    CALL TRANSACTION 'MM02'.
    . ENDIF.
    ENDIF.
    ENDDO.
    ENDCASE.
    endform. " FORM_USERCOMMAND
    *& Form FORM_TOOLBAR
    text
    <--P_E_OBJECT text
    <--P_E_INTERACTIVE text
    <--P_E_OBJECT_>MT_TOOLBAR text
    FORM FORM_TOOLBAR CHANGING P_E_OBJECT TYPE REF TO
    CL_ALV_EVENT_TOOLBAR_SET
    P_E_INTERACTIVE
    MT_TOOLBAR TYPE TTB_BUTTON.
    DATA WAL_BUTTON TYPE STB_BUTTON.
    *WAL_BUTTON-ICON = ICON_status_reverse.
    WAL_BUTTON-TEXT = 'GO'.
    WAL_BUTTON-QUICKINFO = 'PROCEED'.
    waL_button-FUNCTION = 'INT1'.
    WAL_BUTTON-BUTN_TYPE = 0.
    WAL_BUTTON-DISABLED = SPACE.
    insert WAL_BUTTON INTO P_E_OBJECT->MT_TOOLBAR index 1.
    endform. " FORM_TOOLBAR
    *& Module PF-STATUS OUTPUT
    text
    module PF-STATUS output.
    set pf-status 'Z7PSTAT'.
    endmodule. " PF-STATUS OUTPUT
    *& Module USER_COMMAND_0100 INPUT
    text
    module USER_COMMAND_0100 input.
    CASE SY-UCOMM.
    WHEN 'BACK'.
    LEAVE PROGRAM.
    WHEN 'CANCEL'.
    LEAVE PROGRAM.
    ENDCASE.
    endmodule. " USER_COMMAND_0100 INPUT
    *& Form BUILD_CATALOG1
    text
    --> p1 text
    <-- p2 text
    form BUILD_CATALOG1 .
    S_FIELDCAT-COL_POS = '1'.
    S_FIELDCAT-FIELDNAME = 'MATNR'.
    S_FIELDCAT-SCRTEXT_M = 'MATERIAL'.
    APPEND S_FIELDCAT TO T_FIELDCAT1.
    S_FIELDCAT-COL_POS = '2'.
    S_FIELDCAT-FIELDNAME = 'MTART'.
    S_FIELDCAT-SCRTEXT_M = 'MATERL TYPE'.
    APPEND S_FIELDCAT TO T_FIELDCAT1.
    S_FIELDCAT-COL_POS = '3'.
    S_FIELDCAT-FIELDNAME = 'MEINS'.
    S_FIELDCAT-SCRTEXT_M = 'UOM'.
    APPEND S_FIELDCAT TO T_FIELDCAT1.
    endform. " BUILD_CATALOG1
    check the below link may be useful for you
    http://www.sapdevelopment.co.uk/reporting/alvhome.htm
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf
    Simple ALV report
    http://www.sapgenie.com/abap/controls/alvgrid.htm
    http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox
    ALV
    1. Please give me general info on ALV.
    http://www.sapfans.com/forums/viewtopic.php?t=58286
    http://www.sapfans.com/forums/viewtopic.php?t=76490
    http://www.sapfans.com/forums/viewtopic.php?t=20591
    http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.
    2. How do I program double click in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=11601
    http://www.sapfans.com/forums/viewtopic.php?t=23010
    3. How do I add subtotals (I have problem to add them)...
    http://www.sapfans.com/forums/viewtopic.php?t=20386
    http://www.sapfans.com/forums/viewtopic.php?t=85191
    http://www.sapfans.com/forums/viewtopic.php?t=88401
    http://www.sapfans.com/forums/viewtopic.php?t=17335
    4. How to add list heading like top-of-page in ABAP lists?
    http://www.sapfans.com/forums/viewtopic.php?t=58775
    http://www.sapfans.com/forums/viewtopic.php?t=60550
    http://www.sapfans.com/forums/viewtopic.php?t=16629
    5. How to print page number / total number of pages X/XX in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)
    6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.
    http://www.sapfans.com/forums/viewtopic.php?t=64320
    http://www.sapfans.com/forums/viewtopic.php?t=44477
    7. How can I set the cell color in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=52107
    8. How do I print a logo/graphics in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=81149
    http://www.sapfans.com/forums/viewtopic.php?t=35498
    http://www.sapfans.com/forums/viewtopic.php?t=5013
    9. How do I create and use input-enabled fields in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=84933
    http://www.sapfans.com/forums/viewtopic.php?t=69878
    10. How can I use ALV for reports that are going to be run in background?
    http://www.sapfans.com/forums/viewtopic.php?t=83243
    http://www.sapfans.com/forums/viewtopic.php?t=19224
    11. How can I display an icon in ALV? (Common requirement is traffic light icon).
    http://www.sapfans.com/forums/viewtopic.php?t=79424
    http://www.sapfans.com/forums/viewtopic.php?t=24512
    12. How can I display a checkbox in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=88376
    http://www.sapfans.com/forums/viewtopic.php?t=40968
    http://www.sapfans.com/forums/viewtopic.php?t=6919
    Go thru these programs they may help u to try on some hands on
    ALV Demo program
    BCALV_DEMO_HTML
    BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode
    BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode
    BCALV_GRID_DEMO Simple ALV Control Call Demo Program
    BCALV_TREE_DEMO Demo for ALV tree control
    BCALV_TREE_SIMPLE_DEMO
    BC_ALV_DEMO_HTML_D0100
    Regards,
    Shiva

  • Simple ALV interactive list...

    <b><b>hi i am a fresh Learner in ABAP and i am doing a small program in simple ALV interactive report in SD module that  gives me::
    1. SALES and then the invoice details of one particular value i click ,when delivery document number is given.
    2. Deivery and invoice details of one particular value i click ,when sales order number is given.
    3. Sales and delivery details of one particular value i click , when invoice order details are given.
    so i need a clear code for the above. i can input any one of the three inputs to get the correct solution.. please give me a valid solution and not useless ones..
    .. please help me with the same at the earliest !!!!!!!!!!!</b></b>
    Message was edited by: ashokkumar ramkumar, please urgent replies...........

    An Interactive ALV Report
    *& Report  ZZ_22038_22098_002                                          *
    *& This is an Interactive ALV report, where on line slection we can see
    *&  the secondry list
    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.

  • Need simple ALV Grid prgm with interactive

    Hi experts,
    pls anyone provide some sample code for simple alv grid for the study purpose.
    i want to knw how the Interactive alv works, how to display some header details like company name and address in the top of the grid.

    hi,
    check this programme..
    Display a Secondary List using ALV Grid
    To display a secondary list when you click on one of the row items in an alv grid. The secondary list should also be an alv.
    Try out this code. You will have to make a structure ZSTR same as the output internal table.
    REPORT ZTEST_REP1 .
    TABLES : MARA,
             BHDGD,
             zstr.
    TYPES:     BEGIN OF T_MARA,
                  MATNR LIKE MARA-MATNR,
                  ERNAM LIKE MARA-ERNAM,
               END OF T_MARA.
    CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
    *Constants for ALV Implementation
    CONSTANTS:  C_SET                        VALUE 'X',
                C_RESET                      VALUE '0',
                C_SAVE                       VALUE 'A',
                C_EXIT(4)                    VALUE 'EXIT',
                C_BACK(4)                    VALUE 'BACK',
                C_CANC(4)                    VALUE 'CANC',
                C_PGTOP(5)                   VALUE 'PGTOP',
                C_PGUP(4)                    VALUE 'PGUP',
                C_PGDN(4)                    VALUE 'PGDN',
                C_PGEND(5)                   VALUE 'PGEND'.
    DATA : I_MARA TYPE STANDARD TABLE OF T_MARA WITH HEADER LINE,
         Internal table for fields catalouge
           I_FIELDCAT TYPE LVC_T_FCAT WITH HEADER LINE,
          i_fieldcat2 type lvc_t_fcat with header line,
         Internal table for cursor position
           I_GT_SELROWS TYPE LVC_T_ROW .
    DATA : WA_MARA LIKE I_MARA,
           WA_GRIDROW LIKE LVC_S_ROW,
           WA_GRIDCOL LIKE LVC_S_COL.
    *Data for ALV Implementation.
    DATA:  OK_CODE       LIKE SY-UCOMM,
           W_OK_CODE     LIKE SY-UCOMM,
           W_CALL        TYPE I VALUE 1,
           W_TAB         LIKE SY-UCOMM VALUE 'TAB1',
           W_SAVE,                                 "For Parameter I_SAVE
           W_VARIANT     TYPE DISVARIANT,          "For parameter IS_VARIANT
           W_GRID        TYPE REF TO CL_GUI_ALV_GRID,
          w_grid1       type ref to cl_gui_alv_grid,
           W_CONTAINER  TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
          w_container1  type ref to cl_gui_custom_container,
           W_REPID       LIKE SY-REPID,
           W_GS_PRINT    TYPE LVC_S_PRNT,
           W_GS_LAYOUT   TYPE LVC_S_LAYO,
           W_EVENT_REC   TYPE REF TO LCL_EVENT_RECEIVER,
           W_CONT_MAIN   TYPE SCRFNAME VALUE 'CCCONTAINER',
           W_LN          TYPE I,                            "line number
           W_INDEX       LIKE SY-TABIX,
           W_FLAG,
           W_TEMP_VAL    TYPE I.
    Definition:
    CLASS LCL_EVENT_RECEIVER DEFINITION.
      PUBLIC SECTION.
        METHODS:
        HANDLE_TOP_OF_PAGE
            FOR EVENT PRINT_TOP_OF_PAGE OF CL_GUI_ALV_GRID,
        HANDLE_DOUBLE_CLICK
            FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
                    IMPORTING E_ROW E_COLUMN.
    ENDCLASS.
    CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
    CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
      METHOD HANDLE_TOP_OF_PAGE.
        PERFORM F_GET_HEADER.
      ENDMETHOD.                           "handle_top_of_page
      METHOD HANDLE_DOUBLE_CLICK.
      The event DOUBLE_CLICK provides parameters for row and column
      of the click. We use row parameter to select a line of the
      corresponding internal table.
      read selected row from internal table
          READ TABLE I_MARA INDEX E_ROW-INDEX INTO WA_MARA.
          IF SY-SUBRC <> 0.
           message i001. " Cursor position not correct.
          ELSE.
          call dialog screen and display the details
            call screen 200 starting at 10 5.
          ENDIF.
      ENDMETHOD.                           "handle_double_click
    ENDCLASS.
    start-of-selection.
    START-OF-SELECTION.
    SELECT MATNR ERNAM FROM MARA INTO TABLE I_MARA.
    End-of-Selection.
    END-OF-SELECTION.
    Start of ALV part.
      W_REPID = SY-REPID.
      W_VARIANT-REPORT = W_REPID.
      W_SAVE = C_SAVE.
      W_CONT_MAIN = W_CONT_MAIN.
      W_GS_LAYOUT = W_GS_LAYOUT.
      W_GS_PRINT  = W_GS_PRINT.
      I_FIELDCAT  = I_FIELDCAT.
      CALL SCREEN 100.
    *&      Form  f_get_header
          text
    -->  p1        text
    <--  p2        text
    FORM F_GET_HEADER.
      DATA: L_LINE1 LIKE BHDGD-LINE1,
            L_LINE2 LIKE BHDGD-LINE2.
      CONSTANTS LC_SPACE VALUE ' '.
      DATA: L_F1(7), L_F2(11), L_F3(9), L_F4(6), L_F5(11), L_F6(4), L_F7(8),
            L_F8(4),L_F9(10), L_F11(11), L_F12(24), L_F13(4),
            L_F14(3).
    take the values of line1 and line2 into two new variables, otherwise
    after coming back to the first screen from the print preview, the
    header shows the condensed lines
      L_LINE1 = BHDGD-LINE1.
      L_LINE2 = BHDGD-LINE2.
      CONDENSE L_LINE1.
      CONDENSE L_LINE2.
    *split the lines to display the whole lines within the
    *stipulated report-width
    SPLIT L_LINE1 AT LC_SPACE INTO L_F1 L_F2 L_F3 L_F4 L_F5 L_F6 L_F7 L_F8
                                        L_F9 .
      SPLIT L_LINE2 AT LC_SPACE INTO L_F11 L_F12 L_F13 L_F14.
      L_F14 = SY-PAGNO.
        WRITE:/1 L_F1, 9 L_F2, 40 L_F3, 50 L_F4, 57 L_F5, 88 L_F6, 93 L_F7 ,
               103 L_F8 , 108 L_F9 .
        WRITE:/1 L_F11, 40 TEXT-012, 78 L_F12, 103 L_F13, 108 L_F14.
    ENDFORM.                    " f_get_header
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'STAT'.
      SET TITLEBAR 'TITL'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM .
        WHEN C_EXIT OR C_BACK OR C_CANC.
          IF NOT W_CONTAINER  IS INITIAL.
            CALL METHOD W_CONTAINER->FREE.
          ENDIF.
          LEAVE TO SCREEN 0.
        WHEN C_PGTOP.
          WA_GRIDROW-INDEX = 1.
        WHEN C_PGUP.
          IF WA_GRIDROW-INDEX <= 15.
            WA_GRIDROW-INDEX = 1.
          ELSE.
            WA_GRIDROW-INDEX = WA_GRIDROW-INDEX - 15.
          ENDIF.
        WHEN C_PGDN.
          PERFORM F_GET_NO_ROWS.
          W_TEMP_VAL = W_LN - WA_GRIDROW-INDEX.
          IF W_TEMP_VAL < 15.
            WA_GRIDROW-INDEX = W_LN.
          ELSE.
            WA_GRIDROW-INDEX = WA_GRIDROW-INDEX + 15.
          ENDIF.
        WHEN C_PGEND.
          PERFORM F_GET_NO_ROWS.
          WA_GRIDROW-INDEX = W_LN.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  f_get_no_rows
          text
    -->  p1        text
    <--  p2        text
    FORM F_GET_NO_ROWS.
        DESCRIBE TABLE I_MARA  LINES W_LN.
    ENDFORM.                    " f_get_no_rows
    *&      Module  DISPLAY_0100  OUTPUT
          text
    MODULE DISPLAY_0100 OUTPUT.
      IF NOT WA_GRIDROW IS INITIAL
      AND NOT WA_GRIDCOL IS INITIAL.
        CALL METHOD W_GRID->SET_SCROLL_INFO_VIA_ID
          EXPORTING
            IS_ROW_INFO = WA_GRIDROW
            IS_COL_INFO = WA_GRIDCOL .
        CALL METHOD W_GRID->SET_CURRENT_CELL_VIA_ID
          EXPORTING
            IS_ROW_ID = WA_GRIDROW
            IS_COLUMN_ID = WA_GRIDCOL .
      ENDIF.
      CALL METHOD W_GRID->GET_SCROLL_INFO_VIA_ID
      IMPORTING
        ES_ROW_INFO = WA_GRIDROW
        ES_COL_INFO = WA_GRIDCOL .
      CALL METHOD W_GRID->GET_SELECTED_ROWS
        IMPORTING
          ET_INDEX_ROWS = I_GT_SELROWS[].
    Build the fieldcat according to structure
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
           EXPORTING
                I_STRUCTURE_NAME = 'ZSTR'
           CHANGING
                CT_FIELDCAT      = I_FIELDCAT[].
      LOOP AT I_FIELDCAT.
        W_INDEX = SY-TABIX.
        CASE I_FIELDCAT-FIELDNAME.
          WHEN 'MATNR'.
            I_FIELDCAT-SCRTEXT_S = 'MATNR'.
            I_FIELDCAT-KEY       = ' '.
            I_FIELDCAT-COL_POS   = '1'.
          WHEN 'ERNAM'.
            I_FIELDCAT-SCRTEXT_S = 'ERDAT'.
            I_FIELDCAT-OUTPUTLEN = '18'.
            I_FIELDCAT-COL_POS   = '2'.
        ENDCASE.
        MODIFY I_FIELDCAT INDEX W_INDEX.
      ENDLOOP.
      READ TABLE I_FIELDCAT INDEX 1 .
      IF W_CALL = 1.
        PERFORM F_STD_HEADER.
        CALL METHOD W_GRID->SET_TABLE_FOR_FIRST_DISPLAY
                          EXPORTING
                            IS_VARIANT                    = W_VARIANT
                            I_SAVE                        = W_SAVE
                          CHANGING
                            IT_OUTTAB                     = I_MARA[]
                            IT_FIELDCATALOG               = I_FIELDCAT[]
                         EXCEPTIONS
                           INVALID_PARAMETER_COMBINATION = 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.
          EXIT.
        ENDIF.
        CREATE OBJECT W_EVENT_REC.
        SET HANDLER W_EVENT_REC->HANDLE_TOP_OF_PAGE FOR W_GRID.
        CREATE OBJECT W_EVENT_REC.
        SET HANDLER W_EVENT_REC->HANDLE_DOUBLE_CLICK FOR W_GRID.
        W_FLAG = C_RESET.
        CALL METHOD CL_GUI_CONTROL=>SET_FOCUS EXPORTING CONTROL = W_GRID.
        W_CALL = 0.
      ENDIF.
    ENDMODULE.                 " DISPLAY_0100  OUTPUT
    *&      Form  f_std_header
          text
    -->  p1        text
    <--  p2        text
    FORM F_STD_HEADER.
    ENDFORM.                    " f_std_header
    *&      Module  DYNPRONR_CHECK_500  OUTPUT
          text
    MODULE DYNPRONR_CHECK_500 OUTPUT.
    if w_dynpronr is initial.
       w_dynpronr = '0100'.
    endif.
      ENDMODULE.                 " DYNPRONR_CHECK_500  OUTPUT
    *&      Module  create_objects_0100  OUTPUT
          text
    MODULE create_objects_0100 OUTPUT.
      check w_container is initial .
      create object w_container
        exporting
           container_name = 'CC'.
      create object w_grid
        exporting
           i_parent = w_container.
      w_flag = c_set.
      w_flag = w_flag.
    ENDMODULE.                 " create_objects_0100  OUTPUT
    *&      Module  STATUS_0200  OUTPUT
          text
    MODULE STATUS_0200 OUTPUT.
      SET PF-STATUS 'ST20'.
      SET TITLEBAR '200'.
      zstr-matnr    = wa_mara-matnr.
      zstr-ernam    = wa_mara-ernam.
    ENDMODULE.                 " STATUS_0200  OUTPUT
    *&      Module  USER_COMMAND_0200  INPUT
          text
    MODULE USER_COMMAND_0200 INPUT.
      move ok_code to w_ok_code.
      clear ok_code.
      case w_ok_code.
        when c_back or c_exit or c_canc.
          leave to screen 0.
      endcase.
      clear w_ok_code.
    ENDMODULE.                 " USER_COMMAND_0200  INPUT
    *-- End of Program
    Regards,
    Deepthi.

  • Restrict WERKS values in the output of simple ALV(using REUSE_GRID_DISPLAY

    Hi ,
    I have one  requirement as follows:-
    --> I want to restrict WERKS values in the output of simple ALV(using REUSE_GRID_DISPLAY).
    currently the values ae displayed from standard search-help.
    I want to fields WERKS(MRP Type) values from table T001W with field VKFLZ = 'B'.
    Now the fieltered values should be displaeyd in ALV output.
    I was thinking of using the event, but i cannot find appropriate event where i can code my changes...please suggest
    Thanks in Advance.

    Hi Sandeep,
        I have the events in IT_EVENTS table.
        None of them i find suitable event for restrcition of F4 vaues in field werks.
        CALLER_EXIT
    USER_COMMAND
    TOP_OF_PAGE
    TOP_OF_COVERPAGE
    END_OF_COVERPAGE
    FOREIGN_TOP_OF_PAG
    FOREIGN_END_OF_PAG
    PF_STATUS_SET
    LIST_MODIFY
    TOP_OF_LIST
    END_OF_PAGE
    END_OF_LIST
    AFTER_LINE_OUTPUT
    BEFORE_LINE_OUTPUT
    REPREP_SEL_MODIFY
    SUBTOTAL_TEXT
    GROUPLEVEL_CHANGE.
    Please suggest, what other options we can have on this.
    Thanks in Advance.

  • Disable some standard buttons from ALV display

    Hello All,
    I am creating an ALV display using object oriented approach. I know how to exclude some of the standard function buttons from the list.
    But suppose instead of deleting, the requirement is to disable (I mean grayed out)
    some standard buttons from ALV. Could anyone please comment on how to do this.
    Many thanks in advance.
    Regards
    Indrajit

    Hello Indrajit
    The following sample reports shows how to disable toolbar functions. Run the report and the push the ENTER button repeatedly.
    *& Report  ZUS_SDN_ALV_EVT_TOOLBAR
    *& This sample report explains the handling of event TOOLBAR in order
    *% to activate or inactive buttons of the ALV toolbar.
    *& Based on: BCALV_GRID_DEMO
    *& Procedure: Copy BCALV_GRID_DEMO and replace entire coding  OR
                copy screen '0100' and GUI status 'MAIN100' from
                BCALV_GRID_DEMO to this report.
    REPORT  zus_sdn_alv_evt_toolbar.
    TYPE-POOLS: abap, cntb, icon.
    DATA:
      ok_code                TYPE ui_func,
      gt_sflight             TYPE TABLE OF sflight,
      g_container        TYPE scrfname VALUE 'BCALV_GRID_DEMO_0100_CONT1',
      g_grid1               TYPE REF TO cl_gui_alv_grid,
      g_custom_container    TYPE REF TO cl_gui_custom_container.
    PARAMETERS:
      p_inact    RADIOBUTTON GROUP grp1  DEFAULT 'X',  " delete buttons
      p_dele     RADIOBUTTON GROUP grp1.               " inactivate buttons
    PARAMETERS:
      p_newbut   AS CHECKBOX  DEFAULT ' ',  " add new button
      p_newddm   AS CHECKBOX  DEFAULT 'X'.  " add dropdown menu
          CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
      PUBLIC SECTION.
        CLASS-DATA:
          md_cnt    TYPE i.
        CLASS-METHODS:
          handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
            IMPORTING
              e_object
              e_interactive
              sender.
    ENDCLASS.                    "lcl_eventhandler DEFINITION
          CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
      METHOD handle_toolbar.
    § 2.In event handler method for event TOOLBAR: Append own functions
      by using event parameter E_OBJECT.
        DATA:
          ls_toolbar  TYPE stb_button,
          ls_menu     type STB_BTNMNU.
    E_OBJECT of event TOOLBAR is of type REF TO CL_ALV_EVENT_TOOLBAR_SET.
    This class has got one attribute, namly MT_TOOLBAR, which
    is a table of type TTB_BUTTON. One line of this table is
    defined by the Structure STB_BUTTON (see data deklaration above).
    A remark to the flag E_INTERACTIVE:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            'e_interactive' is set, if this event is raised due to
            the call of 'set_toolbar_interactive' by the user.
            You can distinguish this way if the event was raised
            by yourself or by ALV
            (e.g. in method 'refresh_table_display').
            An application of this feature is still unknown...
        ADD 1 TO md_cnt. " a simple counter
      (1.a) Inactivate toolbar buttons
        IF ( p_inact = abap_true ).
          LOOP AT e_object->mt_toolbar INTO ls_toolbar FROM 1 TO md_cnt.
            ls_toolbar-disabled = 'X'.
            MODIFY e_object->mt_toolbar FROM ls_toolbar.
          ENDLOOP.
      (1.b) Delete toolbar buttons
        ELSE.
          DO md_cnt TIMES.
            DELETE e_object->mt_toolbar INDEX 1.
          ENDDO.
        ENDIF.
      (2) Add new button
        IF ( p_newbut = abap_true ).
        Add separator to separate default and new buttons
          CLEAR: ls_toolbar.
          ls_toolbar-butn_type = cntb_btype_sep.  " separator
          APPEND ls_toolbar TO e_object->mt_toolbar.
        Add new button "DETAIL"
          CLEAR: ls_toolbar.
          ls_toolbar-function  = 'DETAIL'.
          ls_toolbar-icon      = icon_detail.
          ls_toolbar-quickinfo = 'QuickInfo'.
          ls_toolbar-butn_type = cntb_btype_button.
          ls_toolbar-disabled  = abap_false.
          ls_toolbar-text      = 'Details'.
         ls_toolbar-checked = ' '.
          APPEND ls_toolbar TO e_object->mt_toolbar.
        ENDIF.
      (3) Add new dropdown menu
        IF ( p_newddm = abap_true ).
        Add separator to separate default and new buttons
          CLEAR: ls_toolbar.
          ls_toolbar-butn_type = cntb_btype_sep.  " separator
          APPEND ls_toolbar TO e_object->mt_toolbar.
        Add new dropdown menu "DETAIL"
          CLEAR: ls_toolbar.
          ls_toolbar-function  = 'DDMENU'.
          ls_toolbar-icon      = icon_detail.
          ls_toolbar-quickinfo = 'QuickInfo'.
          ls_toolbar-butn_type = cntb_btype_dropdown.
          ls_toolbar-disabled  = abap_false.
          ls_toolbar-text      = 'DD-Menu'.
         ls_toolbar-checked = ' '.
          APPEND ls_toolbar TO e_object->mt_toolbar.
        ENDIF.
      ENDMETHOD.                    "handle_toolbar
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    START-OF-SELECTION.
          MAIN                                                          *
      SELECT * FROM sflight INTO TABLE gt_sflight.
      CALL SCREEN 100.
    END-OF-SELECTION.
          MODULE PBO OUTPUT                                             *
    MODULE pbo OUTPUT.
      SET PF-STATUS 'MAIN100'.
      IF g_custom_container IS INITIAL.
        CREATE OBJECT g_custom_container
               EXPORTING container_name = g_container.
      Instantiate ALV grid control
        CREATE OBJECT g_grid1
               EXPORTING i_parent = g_custom_container.
        CALL METHOD g_grid1->set_table_for_first_display
          EXPORTING
            i_structure_name = 'SFLIGHT'
          CHANGING
            it_outtab        = gt_sflight.
      Set event handler for event TOOLBAR
        SET HANDLER:
          lcl_eventhandler=>handle_toolbar FOR g_grid1.
      ENDIF.
    $Comment: Toolbar can be modified on-the-fly
      g_grid1->set_toolbar_interactive( ).
    ENDMODULE.                    "PBO OUTPUT
          MODULE PAI INPUT                                              *
    MODULE pai INPUT.
      to react on oi_custom_events:
      CALL METHOD cl_gui_cfw=>dispatch.
      CASE ok_code.
        WHEN 'EXIT'.
          PERFORM exit_program.
        WHEN OTHERS.
        do nothing
      ENDCASE.
      CLEAR ok_code.
    ENDMODULE.                    "PAI INPUT
          FORM EXIT_PROGRAM                                             *
    FORM exit_program.
    CALL METHOD G_CUSTOM_CONTAINER->FREE.
    CALL METHOD CL_GUI_CFW=>FLUSH.
      LEAVE PROGRAM.
    ENDFORM.                    "EXIT_PROGRAM[/code]
    Regards
      Uwe

  • DIfference between Reusable FM for ALV display and ALV display using class

    Hi,
    Is there any difference between alv display using Resuable FM and ALV display using classes except the later one uses OO concept.??
    One mere thing i want to clarify is that is there any difference exist between REUSE_ALV_GRID_DISPLAY and REUSE_ALV_LIST_DISPLAY? If so, then let me know.
    It could be easier to understand me if yuo give scenario where these FM comes into picture
    Regards,
    Parag

    Hi,
    (1) REUSE_ALV_LIST_DISPLAY
    Display an ALV list as per parameters defined in the function call
    (2) REUSE_ALV_GRID_DISPLAY
    Display an ALV grid as per parameters defined in the function call
    (3) REUSE_ALV_COMMENTARY_WRITE
    List header information is output according to its type. The output information is put in an internal table. Output attributes are assigned to each line via the TYP field.This module outputs formatted simple header information at TOP-OF-PAGE.
    (4) REUSE_ALV_HIERSEQ_LIST_DISPLAY
    This module outputs two internal tables as a formated hierarchical-sequential list.
    (5) REUSE_ALV_VARIANT_F4
    Display variant selection dialog box.
    (6) REUSE_ALV_VARIANT_EXISTENCE
    Checks whether a display variant exists.
    Other Useful Link :
    Customize ALV grid layout at run time
    Download ALV grid Control Tutorial
    Understand ALV report ( Just Copy and paste )
    Dynamic selection on ALV at run time
    Dynamic selection on ALV at run time
    Regards
    Kiran

  • A simple ALV report using classes & methods ...

    i want a  simple ALV report using classes & methods ...
    my requirement : i have to use classes & methods instead  of calling a function module to display in grid or list format.
               plz send me with explanation ASAP...it's very urgent..
               Thanks in advance .

    Hi
    Please refer
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907
    U can use methods for vreating ALVs.
    There is a method named set_table_for_first_display in OOP Concepts.
    Use this Object Oriented Approach for ALV Creation
    Calling the method set_table_for_first_display
    CALL METHOD cust_alv->set_table_for_first_display
    EXPORTING
    is_layout = gst_layout
    CHANGING
    it_outtab = gt_list
    it_fieldcatalog = gt_fcat
    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.
    Object Creation and all
    Creation of Object for Container
    CREATE OBJECT cust_container
    EXPORTING
    container_name = 'ALV_CONTAINER'
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    lifetime_dynpro_dynpro_link = 5
    others = 6
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    Creation of Object for ALV Grid
    CREATE OBJECT cust_alv
    EXPORTING
    i_parent = cust_container
    EXCEPTIONS
    error_cntl_create = 1
    error_cntl_init = 2
    error_cntl_link = 3
    error_dp_create = 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.
    Layout settings
    gst_layout-zebra ='X'.
    gst_layout-cwidth_opt = 'X'.
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
    I_BUFFER_ACTIVE =
    I_STRUCTURE_NAME = 'ZCS_INACTV_CUST'
    I_CLIENT_NEVER_DISPLAY = 'X'
    I_BYPASSING_BUFFER =
    CHANGING
    ct_fieldcat = gt_fcat
    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.
    Calling the method set_table_for_first_display
    CALL METHOD cust_alv->set_table_for_first_display
    EXPORTING
    is_layout = gst_layout
    CHANGING
    it_outtab = gt_list
    it_fieldcatalog = gt_fcat
    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.
    For object oriented concepts refer this link https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b6cae890-0201-0010-ef8b-f970a9c41d47
    Reaward if helpful

Maybe you are looking for

  • Service Desk Message - Sold-to Party and Reported by

    Hi Team, The Sold-to Party, Reported by are automatically populated in CRMD_ORDER whenever I create Service Desk Message from Satellite Systems, But when I create Support Message in Solution Manager, these does not get populated. Thanks,

  • Apps don't work after itunes sync and or ipod update!

    Today when I clicked on my apps they'd open for a split second and then close down. I did some searching on this forum and as a result deleted all my apps and re-installed them again (time consuming and frustrating as all my game data is gone!) and n

  • Is it possible to just show new posts of selected forums?

    Hi there, is there a possibility to just show new posts of selected forums? At vbulletin forums you can do this via  search.php?include=1,2,3 so I tried search.php?action=show_new&fid=20,30,33,47,42,24,50 here. But it only searches for the new posts

  • How to view structure data?

    I wanted to view structure SOS_OBJLST data. Data tables data could be viewed eg. with transactions SE16, SE17. Is there available these kind of transactions to see similar way structure data?

  • Module pool subscreen issue

    Hi I my module pool application, I have a tab strip having 4 tabs designed in local scrolling (PAI). But after entering some values on tab 1 , when I navigate to tab 2, the gui components of tab1 also appear on tab2  and screen becomes messed up. How