ALV Variant chosen in grid

Hi.
I have to following issue.
I have a program that through the use of additional buttons I added to my ALV grid can jump between different ALV grids.
The problem I'm having is that when you change the variant for ALV grid1 while viewing it and than change to grid 2, when you go back to grid1 the selected variant isn't used anymore.
So what I need is a way see check which variant is active when I get to the USER_COMMAND function of the ALV grid.
If someone has the answer to this I'd be very happy.
Regards,
Arthur

A. Parisius,
Do the following step so that you cant loose variant u set when u come to primary alv from secondary ALV.
1.
When you export I_SAVE = 'X' or 'A'  through REUSE_ALV_GEID_DISPLAY, you can save variant on ALV output.you can save different variants for one output.
2.
Define one parameter to select variant on selection-screen itself instead of selecting on Output.
parameters :p_layout like disvariant-variant.
3.
F4 help to get variants set for the report.
at selection-screen on value-request for p_layout.
  perform get_variant.
subroutine code and define w_variant structure type disvariant.
*&      Form  get_variant
form get_variant.
  data: lw_variant type disvariant,
          l_exit     type char1.
  lw_variant-report = sy-repid.
  call function 'REUSE_ALV_VARIANT_F4'
       exporting
            is_variant = lw_variant
            i_save     = 'A'
       importing
            e_exit     = l_exit
            es_variant = lw_variant
       exceptions
            not_found  = 2.
  if sy-subrc = 2.
    message id sy-msgid type 'S' number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  else.
    if l_exit eq space.
      p_layout = lw_variant-variant.
      if not p_layout is initial.
        perform get_w_variant.
      endif.
    endif.
  endif.
endform.                    " get_variant
*&      Form  get_w_variant
form get_w_variant.
  w_variant-report      = sy-repid.
  w_variant-handle      = space.
  w_variant-log_group   = space.
  w_variant-username    = space.
  w_variant-variant     = p_layout.
  w_variant-text        = space.
  w_variant-dependvars  = space.
endform.                    " get_w_variant
4.
Pass w_variant structure through REUSE_ALV_GRID_DISPLAY FM .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
    I_CALLBACK_PROGRAM      = 'ZVENKAT_TEST1' "Program name
    I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
    IT_FIELDCAT             = i_field
    IT_SORT                 = i_sort
    I_SAVE                  = 'X'
    IS_VARIANT              = w_variant "If you pass variant selected on selection-screen
                                        "on F4 help,corresponding output is displayed
  TABLES
    T_OUTTAB                = <i_tab>
  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.
5.
If you select variant and pass through FM it will be remained when u come back from secondary ALV..
I hope that it helps u .
Regards,
Venkat.O

Similar Messages

  • How to find number of columns used in a ALV variant

    I need to know how many column is active ( will be shown in the ALV report ) related to a specific ALV Variant.
    Example :
    The structure of my internal table has 147 columns.
    The user in a specific ALV variant has chosen 25 columns of those 147 colums, so I need to know that this ALV variant will show 25 columns.
    Thanks!   Jo  

    Hi Max,
    Thanks for hints.
    Finnally I did the verification at the beginning of my process.
    Because I need the information before getting the data, so I called the METHOD with a "dummy" table,
    and I received the info of what I need, the number of column related to a specific ALV Variant.
    I used :
      ls_variant-report    = sy-repid.
      ls_variant-variant   = p_alvvar.   "<<<  Select-option field for AVL Variant
      ls_variant-log_group = 'L01'.
        CALL METHOD lo_grid1->set_table_for_first_display
          EXPORTING
            i_structure_name     = 'MY_STRUCTURE'
            is_variant          = ls_variant
            is_layout           = ls_layout
            i_save               = 'A'
            i_default            = 'X'
            I_BYPASSING_BUFFER   = 'X'
          CHANGING
            it_fieldcatalog     = LT_FIELDCATALOG
            it_outtab            = lt_dummy[].      
        CALL METHOD lo_grid1->GET_FRONTEND_FIELDCATALOG
          IMPORTING
            ET_FIELDCATALOG =  LT_FIELDCATALOG.
      loop at LT_FIELDCATALOG into ls_FIELDCATALOG where no_out = space.
              add 1 to LV_NB_COLUMNS.
      endloop.
    Jo  

  • Apply ALV variant before export file in background task

    Hi all,
    I'm working on an ALV report.
    As my report should deal with a great amount of data, it's sometimes running in background.
    Users want the result to be sent by mail (in .CSV format so that they can use it in excel).
    For now, the sending is OK but the file contains all fields of the internal table (no specific filter, no sort...).
    How can i apply ALV variant (i.e keeping some of the fields, filter the list an so on) to the internal table before i build the file ?
    Thanks

    Salut Jérôme,
    un vieux (très vieux) code que j'avais fait.
    le but était d'envoyer par email le résultat d'un ALV grid.
    il t'en manque une partie, mais le principal est dedans
    *   Procédure P_GEN_HTML.                                              *
    *   Génération d'un email en HTML.                                     *
    form p_gen_html.
    data : struct_zgre000_s2 type zgre000_s2 ,
            v_es_layout       type lvc_s_layo ,
            v_e_var_save(1) ,
            v_e_var_def(1) ,
            m_calculate_totals(1) value 'X' ,
            itab_mt_data      type lvc_t_data ,
            itab_mt_info      type lvc_t_info ,
            itab_mt_sort      type lvc_t_sort ,
            itab_mt_filter    type lvc_t_filt ,
            itab_mt_filter_i  type lvc_t_fidx ,
            itab_html         type swl_html_t ,
            m_cl_variant      type ref to cl_alv_variant ,
            mt_outtab         type ref to data ,
            object_hd_change  like sood1 occurs 0 with header line,
            objpara           like selc  occurs 0 with header line,
            receivers         like zbc_receivers occurs 0 with header line ,
            ms_total_options      type lvc_s_toto,
            mt_grouplevels_filter type lvc_t_grpl ,
            m_sumlevel            type i ,
            itab_lt_grouplevels type kkblo_t_grouplevels ,
            itab_lt_sort        type kkblo_t_sortinfo.
      field-symbols: <lt_ct00> type standard table,
                     <lt_ct01> type standard table,
                     <lt_ct02> type standard table,
                     <lt_ct03> type standard table,
                     <lt_ct04> type standard table,
                     <lt_ct05> type standard table,
                     <lt_ct06> type standard table,
                     <lt_ct07> type standard table,
                     <lt_ct08> type standard table,
                     <lt_ct09> type standard table.
    * Ref the field-symbols.
      data mt_ct00 type ref to data .
      data mt_ct01 type ref to data .
      data mt_ct02 type ref to data .
      data mt_ct03 type ref to data .
      data mt_ct04 type ref to data .
      data mt_ct05 type ref to data .
      data mt_ct06 type ref to data .
      data mt_ct07 type ref to data .
      data mt_ct08 type ref to data .
      data mt_ct09 type ref to data .
      v_gjahr1 = p_gjahr + 1.
      v_gjahr2 = p_gjahr + 2.
      v_gjahr3 = p_gjahr + 3.
    * Alimente la table ITAB_ZGRE000_S2.
      loop at itab_otp_grid.
        move : itab_otp_grid-astnr to struct_zgre000_s2-zdemandeur ,
               itab_otp_grid-astna to struct_zgre000_s2-zdemandeurt ,
               itab_otp_grid-pspn  to struct_zgre000_s2-zprojet ,
               itab_otp_grid-pspn2 to struct_zgre000_s2-zotp ,
               itab_otp_grid-post1 to struct_zgre000_s2-zdesotp ,
               itab_otp_grid-pspnr to struct_zgre000_s2-zotp2 ,
               itab_otp_grid-stat  to struct_zgre000_s2-zstatut ,
               itab_otp_grid-usr02 to struct_zgre000_s2-zoneutil ,
               itab_otp_grid-budgt to struct_zgre000_s2-zbudgettotal ,
               itab_otp_grid-engag to struct_zgre000_s2-zengagtotal ,
               itab_otp_grid-dispo to struct_zgre000_s2-zdispototal ,
               itab_otp_grid-depen to struct_zgre000_s2-zdepentotal ,
               itab_otp_grid-budgn to struct_zgre000_s2-zbudget ,
               itab_otp_grid-le    to struct_zgre000_s2-zlatest ,
               itab_otp_grid-depea to struct_zgre000_s2-zdepense ,
               itab_otp_grid-pourc to struct_zgre000_s2-zpourcen ,
               itab_otp_grid-budg1 to struct_zgre000_s2-zbudget1 ,
               itab_otp_grid-budg2 to struct_zgre000_s2-zbudget2 ,
               itab_otp_grid-budg3 to struct_zgre000_s2-zbudget3 ,
               itab_otp_grid-natur to struct_zgre000_s2-znature.
        append struct_zgre000_s2 to itab_zgre000_s2.
      endloop.
      refresh itab_fieldcatalog.
    * Alimentation de la table ITAB_FIELDCATALOG.
      call function 'LVC_FIELDCATALOG_MERGE'
           exporting
                i_structure_name   = 'ZGRE000_S2'
                i_bypassing_buffer = ' '
                i_buffer_active    = ' '
           changing
                ct_fieldcat      = itab_fieldcatalog.
    * Les modifications des colonnes.
      loop at itab_fieldcatalog into tmp_fieldcatalog.
        case tmp_fieldcatalog-fieldname.
          when 'ZDEMANDEUR'.
            move : ' '            to tmp_fieldcatalog-do_sum ,
                   'Demandeur'    to tmp_fieldcatalog-scrtext_s ,
                   'Demandeur'    to tmp_fieldcatalog-scrtext_m ,
                   'Demandeur'    to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '10'           to tmp_fieldcatalog-outputlen .
          when 'ZDEMANDEURT'.
            move : ' '            to tmp_fieldcatalog-do_sum ,
                   'Demandeur'    to tmp_fieldcatalog-scrtext_s ,
                   'Demandeur'    to tmp_fieldcatalog-scrtext_m ,
                   'Demandeur'    to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '30'           to tmp_fieldcatalog-outputlen .
          when 'ZPROJET'.
            move : ' '            to tmp_fieldcatalog-do_sum ,
                   'Projet'       to tmp_fieldcatalog-scrtext_s ,
                   'Projet'       to tmp_fieldcatalog-scrtext_m ,
                   'Projet'       to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '10'           to tmp_fieldcatalog-outputlen .
          when 'ZOTP'.
            move : ' '            to tmp_fieldcatalog-do_sum ,
                   'OTP'          to tmp_fieldcatalog-scrtext_s ,
                   'OTP'          to tmp_fieldcatalog-scrtext_m ,
                   'OTP'          to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
          when 'ZDESOTP'.
            move : ' '            to tmp_fieldcatalog-do_sum ,
                   'Libellé OTP'  to tmp_fieldcatalog-scrtext_s ,
                   'Libellé OTP'  to tmp_fieldcatalog-scrtext_m ,
                   'Libellé OTP'  to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
          when 'ZOTP2'.
            move : ' '            to tmp_fieldcatalog-do_sum ,
                   'OTP niveau 2' to tmp_fieldcatalog-scrtext_s ,
                   'OTP niveau 2' to tmp_fieldcatalog-scrtext_m ,
                   'OTP niveau 2' to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
          when 'ZSTATUT'.
            move : ' '            to tmp_fieldcatalog-do_sum ,
                   'Statut'       to tmp_fieldcatalog-scrtext_s ,
                   'Statut'       to tmp_fieldcatalog-scrtext_m ,
                   'Statut'       to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '10'           to tmp_fieldcatalog-outputlen .
          when 'ZONEUTIL'.
            move : ' '            to tmp_fieldcatalog-do_sum ,
                   'Zone util'    to tmp_fieldcatalog-scrtext_s ,
                   'Zone util'    to tmp_fieldcatalog-scrtext_m ,
                   'Zone util'    to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '10'           to tmp_fieldcatalog-outputlen .
          when 'ZNATURE'.
            move : ' '            to tmp_fieldcatalog-do_sum ,
                   'Nature'       to tmp_fieldcatalog-scrtext_s ,
                   'Nature'       to tmp_fieldcatalog-scrtext_m ,
                   'Nature'       to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '10'           to tmp_fieldcatalog-outputlen .
          when 'ZBUDGETTOTAL'.
            move : 'X'            to tmp_fieldcatalog-do_sum ,
                   'Bud. total'   to tmp_fieldcatalog-scrtext_s ,
                   'Budget total' to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
          when 'ZENGAGTOTAL'.
            move : 'X'            to tmp_fieldcatalog-do_sum ,
                   'Eng. total'   to tmp_fieldcatalog-scrtext_s ,
                   'Engagement total' to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
          when 'ZDISPOTOTAL'.
            move : 'X'            to tmp_fieldcatalog-do_sum ,
                   'Disp total'  to tmp_fieldcatalog-scrtext_s ,
                   'Disponible total' to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
          when 'ZDEPENTOTAL'.
            move : 'X'            to tmp_fieldcatalog-do_sum ,
                   'Dep. total'   to tmp_fieldcatalog-scrtext_s ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
            concatenate 'Depenses totales'
                        p_perio
                        p_gjahr
                        into tmp_fieldcatalog-scrtext_l.
          when 'ZBUDGET'.
            move : 'X'            to tmp_fieldcatalog-do_sum ,
                    v_zero        to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
            concatenate 'Bud '
                        p_gjahr
                        into tmp_fieldcatalog-scrtext_s
                        separated by ' '.
            concatenate 'Budget Exercice:'
                        p_gjahr
                        'Version:'
                        p_vers1
                        into tmp_fieldcatalog-scrtext_l
                        separated by ' '.
          when 'ZLATEST'.
            move : 'X'            to tmp_fieldcatalog-do_sum ,
                   'Latest'       to tmp_fieldcatalog-scrtext_s ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
            concatenate 'Latest Exercice:'
                        p_gjahr
                        'Version:'
                        p_vers2
                        into tmp_fieldcatalog-scrtext_l
                        separated by ' '.
          when 'ZDEPENSE'.
            move : 'X'            to tmp_fieldcatalog-do_sum ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
            concatenate 'Dep'
                        p_gjahr
                        into tmp_fieldcatalog-scrtext_s
                        separated by ' '.
            concatenate 'Depense Exercice:'
                        p_gjahr
                        into tmp_fieldcatalog-scrtext_l
                        separated by ' '.
          when 'ZPOURCEN'.
            move : ' '            to tmp_fieldcatalog-do_sum ,
                   '% Dep/LE'     to tmp_fieldcatalog-scrtext_s ,
                   'Pourcentage dépense VS LE'
                                  to tmp_fieldcatalog-scrtext_l ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
          when 'ZBUDGET1'.
            move : 'X'            to tmp_fieldcatalog-do_sum ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
            concatenate 'Bud'
                        v_gjahr1
                        into tmp_fieldcatalog-scrtext_s
                        separated by ' '.
            concatenate 'Budget Exercice:'
                        v_gjahr1
                        into tmp_fieldcatalog-scrtext_l
                        separated by ' '.
          when 'ZBUDGET2'.
            move : 'X'            to tmp_fieldcatalog-do_sum ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
            concatenate 'Bud'
                        v_gjahr2
                        into tmp_fieldcatalog-scrtext_s
                        separated by ' '.
            concatenate 'Budget Exercice:'
                        v_gjahr2
                        into tmp_fieldcatalog-scrtext_l
                        separated by ' '.
          when 'ZBUDGET3'.
            move : 'X'            to tmp_fieldcatalog-do_sum ,
                   v_zero         to tmp_fieldcatalog-no_zero ,
                   '20'           to tmp_fieldcatalog-outputlen .
            concatenate 'Bud'
                        v_gjahr3
                        into tmp_fieldcatalog-scrtext_s
                        separated by ' '.
            concatenate 'Budget Exercice:'
                        v_gjahr3
                        into tmp_fieldcatalog-scrtext_l
                        separated by ' '.
        endcase.
        move 'X' to tmp_fieldcatalog-tech_comp.
        modify itab_fieldcatalog from tmp_fieldcatalog.
      endloop.
      call function 'WS_DOWNLOAD'
        EXPORTING
          FILENAME                      =
    '\RNEMS0025BU_girodf1$Desktopit_field.txt'
          FILETYPE                      = 'DAT'
        tables
          data_tab                      = itab_fieldcatalog.
      data : begin of it_tmp_data occurs 1000 ,
               buff(136) ,
               zbudgetttotal(20) ,
               zengagtotal(20) ,
               zdispottotal(20) ,
               zdepentotal(20) ,
               zbudget(20) ,
               zlatest(20) ,
               zdepense(20) ,
               zpourcen(20) ,
               zbudget1(20) ,
               zbudget2(20) ,
               zbudget3(20) ,
               waers(5) ,
             end   of it_tmp_data.
    break girodf1.
      loop at itab_zgre000_s2 into struct_zgre000_s2.
        move struct_zgre000_s2+0(136) to it_tmp_data-buff .
        move-corresponding struct_zgre000_s2 to it_tmp_data.
        append it_tmp_data.
      endloop.
      call function 'DOWNLOAD'
        EXPORTING
    *     BIN_FILESIZE                  = ' '
    *     CODEPAGE                      = ' '
          FILENAME                      =
    '\RNEMS0025BU_girodf1$Desktopit_data.txt'
          FILETYPE                      = 'DAT'
    *     ITEM                          = ' '
    *     MODE                          = ' '
    *     WK1_N_FORMAT                  = ' '
    *     WK1_N_SIZE                    = ' '
    *     WK1_T_FORMAT                  = ' '
    *     WK1_T_SIZE                    = ' '
    *     FILEMASK_MASK                 = ' '
    *     FILEMASK_TEXT                 = ' '
    *     FILETYPE_NO_CHANGE            = ' '
    *     FILEMASK_ALL                  = ' '
    *     FILETYPE_NO_SHOW              = ' '
          SILENT                        = 'S'
    *     COL_SELECT                    = ' '
    *     COL_SELECTMASK                = ' '
    *     NO_AUTH_CHECK                 = ' '
    *   IMPORTING
    *     ACT_FILENAME                  =
    *     ACT_FILETYPE                  =
    *     FILESIZE                      =
    *     CANCEL                        =
        tables
          data_tab                      = it_tmp_data.
    *  call function 'DOWNLOAD'
    *    EXPORTING
    *      FILENAME                      =
    *'\RNEMS0025BU_girodf1$Desktopit_data.txt'
    *      FILETYPE                      = 'ASC'
    *    tables
    *      data_tab                      = itab_zgre000_s2.
    * Complete.
      call function 'LVC_FIELDCATALOG_MERGE'
           exporting
                i_structure_name   = 'ZGRE000_S2'
                i_bypassing_buffer = ' '
                i_buffer_active    = ' '
           changing
                ct_fieldcat      = itab_fieldcatalog.
      call function 'LVC_FIELDCAT_COMPLETE'
        EXPORTING
    *     I_COMPLETE             =
          IS_LAYOUT              = v_es_layout
          I_REFRESH_BUFFER       = ''
          I_BUFFER_ACTIVE        = ''
    *   IMPORTING
    *     E_EDIT                 =
        changing
          ct_fieldcat            = itab_fieldcatalog.
      call function 'LVC_SORT_COMPLETE'
        exporting
          it_fieldcat       = itab_fieldcatalog
        changing
          ct_sort           = itab_mt_sort.
      call function 'ALV_DATA_EXPORT'
        exporting
          i_report                = ''
          IT_FIELDCAT             = itab_fieldcatalog
        tables
          it_data                 = itab_zgre000_s2.
    * Recherche de la variante d'affichage.
      move : sy-repid to struct_variant-report ,
             sy-uname to struct_variant-username ,
             '2'      to struct_variant-handle.
      if p_vgrid ne space.
        move p_vgrid to struct_variant-variant.
      endif.
    * Ne pas demander d'explication, merci :)
      get reference of itab_zgre000_s2 into mt_outtab.
    * Créé l'objet variant.
      create object m_cl_variant
             exporting
               it_outtab             = mt_outtab
               it_fieldcatalog       = itab_fieldcatalog
               it_sort               = itab_mt_sort
               it_filter             = itab_mt_filter
               is_variant            = struct_variant
               is_layout             = v_es_layout
               i_variant_save        = v_e_var_save
               i_variant_default     = v_e_var_def.
      move : 'A' to v_e_var_save ,
             'X' to v_e_var_def .
      call method m_cl_variant->set_values
           exporting it_outtab             = mt_outtab
                     it_fieldcatalog       = itab_fieldcatalog
                     it_sort               = itab_mt_sort
                     it_filter             = itab_mt_filter
                     is_variant            = struct_variant
                     is_layout             = v_es_layout
                     i_variant_save        = v_e_var_save
                     i_variant_default     = v_e_var_def.
       loop at itab_fieldcatalog into tmp_fieldcatalog
            where tabname ne space.
         exit.
       endloop.
    * Recherche de la variante.
      call method m_cl_variant->load_variant
           exporting i_tabname          = tmp_fieldcatalog-tabname
                     i_bypassing_buffer = 'X'
                    i_dialog           = space.
      create data  mt_ct00 like itab_zgre000_s2.
      create data  mt_ct01 like itab_zgre000_s2.
      create data  mt_ct02 like itab_zgre000_s2.
      create data  mt_ct03 like itab_zgre000_s2.
      create data  mt_ct04 like itab_zgre000_s2.
      create data  mt_ct05 like itab_zgre000_s2.
      create data  mt_ct06 like itab_zgre000_s2.
      create data  mt_ct07 like itab_zgre000_s2.
      create data  mt_ct08 like itab_zgre000_s2.
      create data  mt_ct09 like itab_zgre000_s2.
      assign mt_ct00->* to <lt_ct00>.
      assign mt_ct01->* to <lt_ct01>.
      assign mt_ct02->* to <lt_ct02>.
      assign mt_ct03->* to <lt_ct03>.
      assign mt_ct04->* to <lt_ct04>.
      assign mt_ct05->* to <lt_ct05>.
      assign mt_ct06->* to <lt_ct06>.
      assign mt_ct07->* to <lt_ct07>.
      assign mt_ct08->* to <lt_ct08>.
      assign mt_ct09->* to <lt_ct09>.
    * Recherche des valeurs à partir de la variante sélectionnée.
      call method m_cl_variant->get_values
           importing es_variant     = struct_variant
             et_fieldcatalog        = itab_fieldcatalog
             et_sort                = itab_mt_sort
             et_filter              = itab_mt_filter
             es_layout              = v_es_layout
             et_grouplevels_filter  = mt_grouplevels_filter
             e_variant_save         = v_e_var_save
             e_variant_default      = v_e_var_def.
      call function 'LVC_SORT_APPLY'
        exporting
          it_sort         = itab_mt_sort
    *     I_AS_TEXT       = 'X'
    *     I_STABLE        = 'X'
        tables
          ct_data         = itab_zgre000_s2.
      call function 'LVC_TRANSFER_TO_KKBLO'
        exporting
          it_sort_lvc                     = itab_mt_sort
          it_grouplevels_lvc              = mt_grouplevels_filter
        importing
          et_sort_kkblo                   = itab_lt_sort
          et_grouplevels_kkblo            = itab_lt_grouplevels
        exceptions
          it_data_missing                 = 1
          it_fieldcat_lvc_missing         = 2
          others                          = 3.
      call function 'ALV_GROUPLEVELS_GET'
        exporting
          i_subtotals_only          = 'X'
          it_sort                   = itab_lt_sort
          i_subtract_counter        = 'X'
        importing
          et_groups                 = itab_lt_grouplevels
        tables
          t_outtab                  = itab_zgre000_s2.
      call function 'LVC_TRANSFER_FROM_KKBLO'
        exporting
          it_grouplevels_kkblo            = itab_lt_grouplevels
        importing
          et_grouplevels_lvc              = mt_grouplevels_filter
        exceptions
          it_data_missing                 = 1
          others                          = 2.
    * Recupération des totaux.
      call function 'LVC_TOTALS_GET'
        exporting
          it_sort                  = itab_mt_sort
          is_layout                = v_es_layout
          it_filter_index          = itab_mt_filter_i
        tables
          it_data                  = itab_zgre000_s2
          et_collect00             = <lt_ct00>
          et_collect01             = <lt_ct01>
          et_collect02             = <lt_ct02>
          et_collect03             = <lt_ct03>
          et_collect04             = <lt_ct04>
          et_collect05             = <lt_ct05>
          et_collect06             = <lt_ct06>
          et_collect07             = <lt_ct07>
          et_collect08             = <lt_ct08>
          et_collect09             = <lt_ct09>
        changing
          cs_total_options         = ms_total_options
    *      ct_fieldcat              = mt_fieldcatalog
          ct_fieldcat              = itab_fieldcatalog
          ct_grouplevels           = mt_grouplevels_filter
          c_calculate_totals       = m_calculate_totals
          c_sumlevel               = m_sumlevel .
    * Converti dans un language comprehensible par SAP.
      call function 'LVC_TABLE_FOR_DISPLAY'
        exporting
          it_fieldcat                    = itab_fieldcatalog
          it_sort                        = itab_mt_sort
          it_filter                      = itab_mt_filter
          is_total_options               = ms_total_options
          is_layout                      = v_es_layout
        importing
          et_lvc_data                    = itab_mt_data
          et_lvc_info                    = itab_mt_info
        tables
          it_data                        = itab_zgre000_s2
          it_collect00                   = <lt_ct00>
          it_collect01                   = <lt_ct01>
          it_collect02                   = <lt_ct02>
          it_collect03                   = <lt_ct03>
          it_collect04                   = <lt_ct04>
          it_collect05                   = <lt_ct05>
          it_collect06                   = <lt_ct06>
          it_collect07                   = <lt_ct07>
          it_collect08                   = <lt_ct08>
          it_collect09                   = <lt_ct09>
        changing
          ct_grouplevels                 = mt_grouplevels_filter
        exceptions
          fieldcat_not_complete          = 1
          others                         = 2.
      if sy-subrc ne space.
        write : /1 'Probleme de convertion.'.
        stop.
      endif.
    * Convertie en HTML.
      call function 'LVC_ALV_CONVERT_TO_HTML'
        exporting
          it_data                       = itab_mt_data
          it_info                       = itab_mt_info
          i_file_dialog                 = ' '
        importing
          et_html                       = itab_html.
    * Envois par email.
      move : 'HTM'  to object_hd_change-file_ext ,
             'Liste des commandes passées sur Immobilisation via PM'
                    to object_hd_change-objdes.
      append object_hd_change.
      call function 'WS_DOWNLOAD'
        EXPORTING
          FILENAME                      =
    '\RNEMS0025BU_girodf1$Desktopmt_data.txt'
          FILETYPE                      = 'DAT'
        tables
          data_tab                      = itab_mt_data.
      call function 'WS_DOWNLOAD'
        EXPORTING
          FILENAME                      =
    '\RNEMS0025BU_girodf1$Desktopmt_info.txt'
          FILETYPE                      = 'DAT'
        tables
          data_tab                      = itab_mt_info.
      data : it_var type table of disvariant with header line.
      move-corresponding struct_variant to it_var.
      append it_var.
      call function 'WS_DOWNLOAD'
        EXPORTING
          FILENAME                      =
    '\RNEMS0025BU_girodf1$Desktopit_var.txt'
          FILETYPE                      = 'DAT'
        tables
          data_tab                      = it_var.
    *stop.
    * Liste des personnes à qui on envoye le email.
      select bname
             into receivers-uname
             from usr02
             where bname in s_uname.
        append receivers.
      endselect.
    * Send mail.
      call function 'Z_BC_ENVOI_EMAIL'
           exporting
               object_hd_change           = object_hd_change
               object_type                = 'RAW'
               owner                      = sy-uname
           tables
               objcont                    = itab_html
               receivers                  = receivers
           exceptions
               others                     = 01.
    endform.                     " P_GEN_HTML.

  • Help needed on ALV variant with new GUI screen is created by set PF status

    Hi Gurus,
    I have created a new GUI screen for ALV grid display thru set pf-status, since i need two buttons on application toolbar.
    have been passing parameters to alv_grid_display FM for display-*
    i_save            = 'A'
    is_variant        = gwa_variant
    I have an ALV variant selection paramter on selection screen.
    Please guide me with some pointers on how to implement ALV variant selection thru selection screen.
    Many Thanks,
    Madan

    Hi,
    Search default variant for the report
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
           EXPORTING
                i_save     = 'A'
           CHANGING
                cs_variant = i_variant1
           EXCEPTIONS
                not_found  = 2.
    If default variant is found , use it as default.
    Else , use the variant LAYOUT1.
      IF sy-subrc = 0.
        p_var = i_variant1-variant.
      ELSE.
        p_var = 'LAYOUT1'.
      ENDIF.
    endform.                    " SUB_VARIANT_INIT
    *&      Form  SUB_CHECK_PVAR
    Once the user has entered variant, check about its existence
    FORM SUB_CHECK_PVAR.
    If the name of the variable is not blank, check about its existence
    if not p_var is initial.
      clear i_variant.
      i_variant-report = sy-repid.
      i_variant-variant = p_var.
      CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
             EXPORTING
                  I_SAVE     = 'A'
             CHANGING
                  CS_VARIANT = I_VARIANT.
    If no such variant found , flash error message
         if sy-subrc ne 0 .
          message e398(00) with 'No such variant exists'.
         else.
    If variant exists , use the variant name to populate structure
    I_VARIANT1 which will be used for export parameter : IS_VARIANT
    in the function module : REUSE_ALV_GRID_DISPLAY
           clear i_variant1.
           move p_var to i_variant1-variant.
           move sy-repid to i_variant1-report.
         endif.
    else.
       clear i_variant.
    endif.
    ENDFORM.                    " SUB_CHECK_PVAR
    *&      Form  SUB_VARIANT_F4
    Display a list of various variants of the report when the
    user presses F4 key in the variant field
    form SUB_VARIANT_F4.
    i_variant-report = sy-repid.
    Utilising the name of the report , this function module will
    search for a list of variants and will fetch the selected one into
    the parameter field for variants
    CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                IS_VARIANT         = I_VARIANT
                I_SAVE             = 'A'
                I_DISPLAY_VIA_GRID = 'X'
           IMPORTING
                ES_VARIANT         = I_VARIANT1
           EXCEPTIONS
                NOT_FOUND          = 1
                PROGRAM_ERROR      = 2
                OTHERS             = 3.
      IF SY-SUBRC = 0.
        P_VAR = I_VARIANT1-VARIANT.
    ENDIF.
    endform.                    " SUB_VARIANT_F4
    Thanks
    Ashu

  • ALV Variant Table and Hiding Variants

    Hi
    Where can I find the table where all ALV variants are stored?
    I tried to run a Trace and it brought back LTCX table but there doesn't seem to be any entries in this table?
    Also is there a way I can hide variants based on transaction code?

    check this LTDX,TVARV,VARIS and fm RS_VARIANT_CONTENTS
    table VARID shows information about variant creation and date
    VARIT shows the variant description and the language used

  • Transport ALV Variant

    Hi Guys.
         I've a question. I've created a ALV variant in DEV and now I need transport it to QA.
    Is it possible ?
    regards.
    Javier.

    Check this out.
    http://help.sap.com/saphelp_sm32/helpdata/en/bd/839d37664e4d45e10000009b38f8cf/content.htm
    All the way to the bottom on this link.
    Regards,
    RIch Heilman
    Message was edited by:
            Rich Heilman

  • Copying ALV Variant

    Hi All,
    I have an ALV variant for Prog1. Now I want to copy and use the same variant for Prog2. (Prog2 is a copy of Prog1 with some small changes)
    How can I do this?
    Thanks & Regards,
    Saurabh

    Hi
    Try to copy the hits of the table LTDX and change the name of the program
    Max

  • Switching between ALV variants

    Hi Experts
    Is there any way to switch between the variants of an ALV without using the std dropdown available in alv header.
    I have a requirement to navigate to various views depending on the current ALV variant selected by the user in my application.
    Thanks and Regards
    Karthick

    Hi Experts
    Is there any way to switch between the variants of an ALV without using the std dropdown available in alv header.
    I have a requirement to navigate to various views depending on the current ALV variant selected by the user in my application.
    Thanks and Regards
    Karthick

  • Deleting ALV Variant

    Hi,
    how can I let user to delete dislpay variant of alv grid.
    Thank you.
    Marian

    Hi,
    Path:
    Settings - layout - layout management
    You see the table of layouts
    -> Edit - delete layout  or button trash
    Regards Andreas

  • Need to know fields saved in a ALV variant

    I have an ALV grid display.the users have ALV layout variants saved.
    Is there someway in the program to identify what are all the columns that are part of the layout selected.. Probably there is a standard ALV standard FM or mathod that gives this

    Maybe you can try this...<b>LVC_VARIANT_SAVE_LOAD</b>
    Greetings,
    Blag.

  • ALV report for 5 Grids using Objects and Method

    I have few questions in ALV 5Grids ,could you please correct me in the following program logic...
    Using this program logic i am able to generate the five Grids and able to populate Header details from VBAK into Grid1,If you click in the Grid 1 and it is populating item details in Grid2 from VBAP,parallally populating the customer data in Grid5 from KNA1.
    Now the pending issue is ,
    if you click in the Grid2 then we should populate the shipping details in Grid3 and
    if you click in the Grid3 then we should populate the billing details in Grid4.
    Program Logic;
    REPORT  ZAREPAS20.
    Tables : vbak,vbap,likp,lips,vbrk,vbrp,kna1.
    DATA : OK_CODE              LIKE        SY-UCOMM,
           G_CONTAINER          TYPE SCRFNAME VALUE 'BCALV7_GRID_DEMO_0100_VASU',
           DOCKING              TYPE REF TO CL_GUI_DOCKING_CONTAINER,
           SPLITTER_1           TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
           SPLITTER_2           TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
           splitter_3           TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
           CELL_TOP1            TYPE REF TO CL_GUI_CONTAINER,
           CELL_BOTTOM1         TYPE REF TO CL_GUI_CONTAINER,
           CELL_TOP2            TYPE REF TO CL_GUI_CONTAINER,
           CELL_BOTTOM2         TYPE REF TO CL_GUI_CONTAINER,
           CELL_LEFT            TYPE REF TO CL_GUI_CONTAINER,
           CELL_middle          TYPE REF TO CL_GUI_CONTAINER,
           CELL_RIGHT           TYPE REF TO CL_GUI_CONTAINER,
           GRID1                TYPE REF TO CL_GUI_ALV_GRID,
           GRID2                TYPE REF TO CL_GUI_ALV_GRID,
           GRID3                TYPE REF TO CL_GUI_ALV_GRID,
           GRID4                TYPE REF TO CL_GUI_ALV_GRID,
           GRID5                TYPE REF TO CL_GUI_ALV_GRID.
    DATA : GT_VBAK              TYPE STANDARD TABLE OF VBAK,
           GT_VBAP              TYPE STANDARD TABLE OF VBAP,
           GT_LIKP              TYPE STANDARD TABLE OF likp,
           GT_LIPS              TYPE STANDARD TABLE OF lips,
           GT_VBRK              TYPE STANDARD TABLE OF vbrk,
           GT_VBRP              TYPE STANDARD TABLE OF vbrp,
           GT_KNA1              TYPE STANDARD TABLE OF kna1.
    DATA:begin of itab1 occurs 0,
         vbeln type likp-VBELN,                            
         erzet type likp-ERZET,                             
         lfart type likp-LFART,                             
         posnr type lips-POSNR,
         END OF ITAB1.
    DATA:begin of itab2 occurs 0,
         vbeln like vbrk-vbeln,                            
         posnr like vbrk-fktyp,                            
         fkart like vbrk-fkart,                             
         fklmg like vbrp-fklmg,                             
         end of itab2.
    *selection screen for selecting range of values
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE text-001.
    select-options: S_vbeln for VBAK-vbeln.     
    selection-screen end of block b1.
          CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS:
          handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
            IMPORTING
              e_row
              e_column
              es_row_no
              sender.  " sending control, i.e. ALV grid that raised event
    ENDCLASS.                    "lcl_eventhandler DEFINITION
          CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
    METHOD HANDLE_DOUBLE_CLICK.
    *DEFINE LOCAL DATA.
    DATA : itab_vbak type VBAK,
           itab_vbap type VBAP,
           itab_likp type likp,
           itab_lips type lips,
           itab_vbrk type vbrk,
           itab_vbrp type vbrp,
           itab_kna1 type kna1.
    *DISTINGUISH ACCORDING TO SENDING GRID INSTANCE
    CASE SENDER.
    WHEN GRID1.
       READ TABLE gt_VBAK INTO itab_vbak INDEX e_row-index.
           CHECK ( itab_vbak-vbeln IS NOT INITIAL ).
            CALL METHOD GRID1->set_current_cell_via_id
              EXPORTING
                 is_ROW_ID    =
                 is_COLUMN_ID =
                is_row_no    = es_row_no.
            Triggers PAI of the dynpro with the specified ok-code
            CALL METHOD cl_gui_cfw=>set_new_ok_code( 'ORDER_DETAILS' ).
    WHEN GRID2.
            READ TABLE gt_VBAP INTO itab_vbap INDEX e_row-index.
            CHECK ( itab_vbap-vbeln IS NOT INITIAL ).
            CALL METHOD GRID2->set_current_cell_via_id
              EXPORTING
                 is_ROW_ID    =
                 is_COLUMN_ID =
                is_row_no    = es_row_no.
            Triggers PAI of the dynpro with the specified ok-code
            CALL METHOD cl_gui_cfw=>set_new_ok_code( 'ORDER_DETAILS' ).
    WHEN GRID3.
            READ TABLE gt_LIPS INTO itab_LIPS INDEX e_row-index.
            CHECK ( itab_lips-vgbel IS NOT INITIAL ).
            CALL METHOD GRID3->set_current_cell_via_id
              EXPORTING
                 is_ROW_ID    =
                 is_COLUMN_ID =
                is_row_no    = es_row_no.
            Triggers PAI of the dynpro with the specified ok-code
            CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DELIVERY_DETAILS' ).
    WHEN GRID4.
            READ TABLE gt_VBRP INTO itab_VBRP INDEX e_row-index.
            CHECK ( itab_vbrp-vgbel IS NOT INITIAL ).
            CALL METHOD GRID4->set_current_cell_via_id
              EXPORTING
                 is_ROW_ID    =
                 is_COLUMN_ID =
                is_row_no    = es_row_no.
            Triggers PAI of the dynpro with the specified ok-code
            CALL METHOD cl_gui_cfw=>set_new_ok_code( 'BILLING_DETAILS' ).
    WHEN GRID5.
            READ TABLE gt_KNA1 INTO itab_KNA1 INDEX e_row-index.
            CHECK ( itab_kna1-kunnr IS NOT INITIAL ).
          SET PARAMETER ID 'KUN' FIELD itab_KNA1-KUNNR.
           CALL TRANSACTION 'MM02' AND SKIP FIRST SCREEN.
          WHEN OTHERS.
            RETURN.
        ENDCASE.
    endmethod.
    endclass.    "lcl_eventhandler IMPLEMENTATION
    start-of-selection.
    *write :/ 'FEDEX INT''''L' .
    SELECT        * FROM  vbak INTO TABLE gt_VBAK
    where vbeln IN  S_VBELN.
    creating docking container
    create object docking
       exporting
        parent     = cl_gui_container=>screen0
        ratio      = 90
      exceptions
       others      = 6.
      if sy-subrc eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Create splitter container
    CREATE OBJECT splitter_1
        EXPORTING
          parent            = docking
          rows              = 1
          columns           = 3
         NO_AUTODEF_PROGID_DYNNR =
         NAME              =
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Get cell container
      CALL METHOD splitter_1->get_container
        EXPORTING
          row       = 1
          column    = 1
        RECEIVING
          container = cell_left.
      CALL METHOD splitter_1->get_container
        EXPORTING
          row       = 1
          column    = 2
        RECEIVING
          container = cell_middle.
      CALL METHOD splitter_1->get_container
        EXPORTING
          row       = 1
          column    = 3
        RECEIVING
          container = cell_right.
    Create 2nd splitter container
      CREATE OBJECT splitter_2
      EXPORTING
          parent            = cell_left
          rows              = 2
          columns           = 1
         NO_AUTODEF_PROGID_DYNNR =
         NAME              =
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Get cell container
      CALL METHOD splitter_2->get_container
        EXPORTING
          row       = 1
          column    = 1
        RECEIVING
          container = cell_top1.
      CALL METHOD splitter_2->get_container
        EXPORTING
          row       = 2
          column    = 1
        RECEIVING
          container = cell_bottom1.
    Create 3rd splitter container
    CREATE OBJECT splitter_3
        EXPORTING
          parent            = cell_middle
          rows              = 2
          columns           = 1
         NO_AUTODEF_PROGID_DYNNR =
         NAME              =
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Get cell container
      CALL METHOD splitter_3->get_container
        EXPORTING
          row       = 1
          column    = 1
        RECEIVING
          container = cell_top2.
      CALL METHOD splitter_3->get_container
        EXPORTING
          row       = 2
          column    = 1
        RECEIVING
          container = cell_bottom2.
    Create ALV grids
      CREATE OBJECT grid1
        EXPORTING
          i_parent          = cell_top1
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT grid2
        EXPORTING
          i_parent          = cell_bottom1
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT grid3
        EXPORTING
          i_parent          = cell_top2
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT grid4
        EXPORTING
          i_parent          = cell_bottom2
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT grid5
        EXPORTING
          i_parent          = cell_right
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Set event handler
      SET HANDLER: lcl_eventhandler=>handle_double_click FOR grid1.
      SET HANDLER: lcl_eventhandler=>handle_double_click FOR grid2.
      SET HANDLER: lcl_eventhandler=>handle_double_click FOR grid3.
      SET HANDLER: lcl_eventhandler=>handle_double_click FOR grid4.
      SET HANDLER: lcl_eventhandler=>handle_double_click FOR grid5.
    Display data
      CALL METHOD grid1->set_table_for_first_display
        EXPORTING
          i_structure_name = 'VBAK'
        CHANGING
          it_outtab        = gt_VBAK
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    REFRESH: gt_vbap.
      CALL METHOD grid2->set_table_for_first_display
        EXPORTING
          i_structure_name = 'VBAP'
        CHANGING
          it_outtab        = gt_VBAP    " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    REFRESH: gt_LIPS.
      CALL METHOD grid3->set_table_for_first_display
        EXPORTING
          i_structure_name = 'LIPS'
        CHANGING
          it_outtab        = gt_LIPS    " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    REFRESH: gt_VBRP.
      CALL METHOD grid4->set_table_for_first_display
        EXPORTING
          i_structure_name = 'VBRP'
        CHANGING
          it_outtab        = gt_VBRP    " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    REFRESH: gt_KNA1.
      CALL METHOD grid5->set_table_for_first_display
        EXPORTING
          i_structure_name = 'KNA1'
        CHANGING
          it_outtab        = gt_KNA1    " empty !!!
        EXCEPTIONS
          OTHERS           = 4.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Link the docking container to the target dynpro
      CALL METHOD docking->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0100'
         CONTAINER                   =
        EXCEPTIONS
          OTHERS                      = 4.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    NOTE: dynpro does not contain any elements (ok_code -> GD_OKCODE)
      CALL SCREEN '0100'.
    Flow logic of dynpro:
    *PROCESS BEFORE OUTPUT.
    MODULE STATUS_0100.
    *PROCESS AFTER INPUT.
    MODULE USER_COMMAND_0100.
    end-of-selection.
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.
    SET TITLEBAR 'xxx'.
    Refresh display of detail ALV list
      CALL METHOD grid2->refresh_table_display
       EXPORTING
         IS_STABLE      =
         I_SOFT_REFRESH =
        EXCEPTIONS
          OTHERS         = 2.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Refresh display of detail ALV list
      CALL METHOD grid3->refresh_table_display
       EXPORTING
         IS_STABLE      =
         I_SOFT_REFRESH =
        EXCEPTIONS
          OTHERS         = 2.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Refresh display of detail ALV list
      CALL METHOD grid4->refresh_table_display
       EXPORTING
         IS_STABLE      =
         I_SOFT_REFRESH =
        EXCEPTIONS
          OTHERS         = 2.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Refresh display of detail ALV list
      CALL METHOD grid5->refresh_table_display
       EXPORTING
         IS_STABLE      =
         I_SOFT_REFRESH =
        EXCEPTIONS
          OTHERS         = 2.
      IF sy-subrc  eq 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
    CASE SY-UCOMM.
    WHEN 'BACK' OR
         'EXIT'  OR
         'CANCEL'.
         SET SCREEN 0.LEAVE SCREEN.
    USER HAS PUSHED BUTTON "DISPLAY OREDERS"
         WHEN 'ORDER_DETAILS'.
          PERFORM ORDER_SHOW_DETAILS.
          when 'DELIVERY_DETAILS'.
            PERFORM DELIVERY_SHOW_DETAILS.
          WHEN 'BILLING_DETAILS'.
             PERFORM BILLING_SHOW_DETAILS.
         WHEN OTHERS.
    ENDCASE.
    CLEAR : OK_CODE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  ORDER_SHOW_DETAILS
          text
    -->  p1        text
    <--  p2        text
    FORM order_show_details .
    define local data
      DATA:
        ld_row      TYPE i,
        itab_VBAK     TYPE VBAK.
      CALL METHOD grid1->get_current_cell
        IMPORTING
          e_row = ld_row.
      READ TABLE gt_VBAK INTO itab_VBAK INDEX ld_row.
      CHECK ( syst-subrc = 0 ).
      SELECT        * FROM  KNA1 INTO TABLE gt_KNA1
             WHERE  KUNNR  = itab_VBAK-KUNNR.
      SELECT        * FROM  VBAP INTO TABLE gt_VBAP
             WHERE  VBELN  = ITAB_VBAK-VBELN.
    *REFRESH: gt_LIPS.
    ENDFORM.                    " ORDER_SHOW_DETAILS
    *&      Form  DELIVERY_SHOW_DETAILS
          text
    -->  p1        text
    <--  p2        text
    FORM DELIVERY_SHOW_DETAILS .
    define local data
      DATA:
        ld_row      TYPE i,
        itab_VBAP     TYPE VBAP.
      CALL METHOD grid1->get_current_cell
        IMPORTING
          e_row = ld_row.
      READ TABLE gt_VBAP INTO itab_VBAP INDEX ld_row.
      CHECK ( syst-subrc = 0 ).
      SELECT LIKPVBELN LIKPERZET LIKPLFART LIPSVBELN
           INTO CORRESPONDING FIELDS OF TABLE ITAB1
           FROM ( LIKP INNER JOIN LIPS ON LIKPVBELN = LIPSVBELN )
           WHERE LIKP~VBELN IN S_VBELN.
    *REFRESH: gt_LIPS.
    ENDFORM.                    " DELIVERY_SHOW_DETAILS
    *&      Form  BILLING_SHOW_DETAILS
          text
    -->  p1        text
    <--  p2        text
    FORM BILLING_SHOW_DETAILS .
    define local data
      DATA:
        ld_row      TYPE i,
        itab_LIPS     TYPE LIPS.
      CALL METHOD grid1->get_current_cell
        IMPORTING
          e_row = ld_row.
      READ TABLE gt_LIPS INTO itab_LIPS INDEX ld_row.
      CHECK ( syst-subrc = 0 ).
      SELECT VBRKVBELN VBRKFKTYP VBRKFKART VBRPFKLMG
           INTO CORRESPONDING FIELDS OF TABLE ITAB2
           FROM ( VBRK INNER JOIN VBRP ON VBRKVBELN = VBRPVBELN )
           WHERE VBRK~VBELN IN S_VBELN.
    ENDFORM.                    " BILLING_SHOW_DETAILS

    Hi,
    ALV means ABAP List Viewer. Most convenient way to use it is through reuse library (cf.
    transaction se83) available from release 4.6 of SAP R/3.
    ALV is available in two modes: list and grid. List mode is good old list processing with
    standard functionnalities, and grid mode is using a new OCX object displaying grids.
    Classical reports needs more coding to set the horizontal and vertical lines.we need to adjust
    the lines manually.Even interactive also takes lot of code.
    ALV reports reduces the code when compared to classical reports.we use function modules to
    generate the output.
    that r REUSE_ALV_LIST_DISPLAY,REUSE_ALV_GRID_DISPLAY,REUSE_ALV_HIERSEQ_LIST_DISPLAY etc..
    the following threads will give some examples of the functions which you are expecting
    Header
    regarding function module
    hide ALV field
    Simply Display selection parameter values in the ALV OUTPUT
    Drag and drop in a report
    https://www.sdn.sap
    Reprots
    http://www.sapgenie.com/abap/reports.htm
    http://www.allsaplinks.com/material.html
    http://www.sapdevelopment.co.uk/reporting/reportinghome.htm
    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.

  • Alv variant

    Hi guru,
    as I know abt variat that, if I want to save the selection screen fied value..we can save as a variant and after saving we see a button on the app.toolbar and when ever required click on that button...it will fill the same value in the selection screen field.
    But there is some function modules I know..we use in the ALV for the variant. What is the use of those function modules. Saving selection screen field value as a variant is not working in the alv report. Is it so? Plz clarify my doubt………..

    In ALV, we use the variant for saving the o/p layout for different inputs.
    We can use the foll function modules..
    Reuse_alv_variant_f4
    Reuse_alv_variant_existence
    Reuse_alv_variant-save,
    Reuse_alv_variant_get
    W can save the  variant and we call the o/p with this variant nale instead of giving the input values...
    Reward Points if useful..

  • Directly creation of ALV Variant in Production - Whether possible

    Hi Friends,
    I have a requirement to display few more fields for the standard dunning report . The server version is 4.6C .
    All the required fields are available in field catalogue. I  have to create a new variant to access the new fields also.
    I am totally new to ALV Programs related activities.
    My question is  -
       Can I create the variant directly in Production , or I have to create the variant in Dev and move to TST and Production.
    Please advice.
    Thanks in advance,
    Vengal Rao.

    Hello Vengal,
    Check this thread: ALV layout name for details.
    BR,
    Suhas

  • Printing page numbers in an ALV report with multiple grids

    Hi,
    I have developed a report using OO ALV GRID. The output is having multiple grids navigated using a menu button appended to the standard tool bar
    (Ref report: BCALV_GRID_07). On navigation, we are able to display specific titles when each grid is displayed.
    When we print those individual pages (the grids), we are able to print the page numbers and the title for the first grid but when we display the next grid and print, we are unable to initialise the page number
    and print specific title. The page numbers continues from the last printing.
    I am looking at identifying the grid when the print event - PRINT_TOP_OF_PAGE is triggered so that a grid specific title can be printed and also page number initialised.
    Any suggestions is highly appreciated.
    Thanks.
    Mani.

    You cannot have one event for all the grids as you cannot identify for which grid the event has fired. You need to activate the event for each of the grid and handle the code independently.
    regards,
    Ravi
    Note - Please mark the helpful answers

  • Need to add checkbox in alv header Not  in grid

    Dear Guru's,
                       My question is i want to add checkbox on top of alv grid ie on top of page .
    my requriement is for SD module- status of order -Mass Update.
    suppose status checkbox on header is HFSC is checked ( check box),
    for all the sales order which are showed on the alv grid must be updated with this status for which i am calling trasaction VA02 in program and doing changes but i am not able to create checkbox on header .
    Again i have already used ALV without classesso please give me solution accordinglly . Thanks in advance.

    Hi,
    For working with top of page we generally use SLIS_LISTHEADER right.
    In this type the first field is
    type - which can accept values as follows
               H - Heading
               S - Selection
               A - Action
    May be the options Selection or Action may help u.

Maybe you are looking for