Saving layout in ALV display

Hi,
I am using both is_variant, i_save parameters in this method, but still am not getting save layout button on my grid.
ls_variant-REPORT = sy-repid.
  CALL METHOD w_alv1->set_table_for_first_display
    EXPORTING
      is_variant                    = ls_variant
      i_save                        = 'A'
      i_default                     = 'X'
      is_layout                     = it_layout
    CHANGING
      it_outtab                     = <fs1>
      it_fieldcatalog               = it_fcat
      it_sort                       = it_sort
    EXCEPTIONS
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      OTHERS                        = 4.
Please sujjest me.
Thanks,
Prathap

sample code:
gs_variant-report = g_repid.        "Program name
CALL METHOD grid1->set_table_for_first_display         
     EXPORTING it_toolbar_excluding = gt_ui_functions  
               is_print             = gs_print         
               is_layout            = gs_layout        
               i_save               = x_save           
               is_variant           = gs_variant       
     CHANGING  it_outtab            = gt_deldef        
               it_fieldcatalog      = pt_fieldcat.     
Also c
heck if you have authorization to all basic ALV functiobnalities.

Similar Messages

  • Problem in saving layout in ALV's

    Hi all!
         I am getting a strange problem in ALV's .For an ALV report some users are able to save the layouts where as some are not able to save .Why is it happening so? I have mentioned IS_SAVE = 'X' in my func.module REUSE_ALV_GRID_DISPLAY.Please help.

    Hi,
    You Have to call the Fm Reuse_alv_variant_f4
    SELECTION-SCREEN : BEGIN OF BLOCK blk3 WITH FRAME TITLE text-003.
    PARAMETER:p_var TYPE disvariant-variant MODIF ID p2.                    "Variant Part
    SELECTION-SCREEN:END OF BLOCK blk3.
    Data: wa_variant   TYPE   disvariant,
             wa_variant1  TYPE   disvariant.
    CONSTANTS:c_x(1)             TYPE c VALUE'X',
                        lc_a(1)            TYPE c VALUE 'A',
    FORM alv_variant .
      wa_variant-username = sy-uname.
      wa_variant-report = sy-repid.
    *For variant Part
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
        EXPORTING
          is_variant    = wa_variant
          i_save        = lc_a
        IMPORTING
          es_variant    = wa_variant1
        EXCEPTIONS
          not_found     = 1
          program_error = 2
          OTHERS        = 3.
      IF sy-subrc <> 0.
        p_var = wa_variant-variant.
      ELSE.
        p_var = wa_variant1-variant.
      ENDIF.
    ENDFORM.                       " alv_variant
    After That
    *display variant
      wa_variant-report = sy-repid.
      IF NOT p_var IS INITIAL.
        wa_variant-variant = p_var.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = sy-repid
          i_callback_pf_status_set = 'PF_STATUS'
          i_callback_user_command  = 'USER_COMMAND'
          is_layout                = lwa_layout
          it_fieldcat              = gi_fieldcat
          is_variant               = wa_variant
          i_default                = c_x
          i_save                   = lc_a
        TABLES
          t_outtab                 = gi_final
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
    Regards
    Sandipan

  • Fields present in the saved layout of ALV

    Hi All,
    I have a report which has 20 fields in output.
    I have saved a layout with only 10 fields and I am using these default layout while executing the program.
    Is there any possibility to get the fields in the layout without actually going to the report output?
    When I run this report in background mode I am downloading the fields into an excel and sending it to an email.Though the layout has ten fields, all the 20 fields are downloaded into the excel.This is because I have taken all the possible fileds into the excel.
    Is there any possibilty to look at the fields present in the layout and pass only those fields data to the excel?
    Thanks
    Sandeep

    You should be able to do this as the data is obviously held inside SAP - but the approach may differ a little depending on how your table catalog is defined.  The best starting point would probably be function REUSE_ALV_VARIANT_SELECT - have a look at include RJITMON_DOWNLOAD for example (if it's in your system) that uses this to read the variant and assemble a download.  Otherwise you may need to delve down a layer or two into the function modules that REUSE_ALV_VARIANT_SELECT calls (e.g.   LT_VARIANT_LOAD, LT_DBDATA_READ_FROM_LTDX, &  LT_FC_LOAD) - if you do a where-used on these you will probably find an example you can copy the logic for determining the variant column attributes from.
    Jonathan

  • Column field to be added in Layouts of ALV Display.

    Dear Expert,
    I need to add one column field in IW37 transaction layout.IW37 transaction output is diplayed in ALV where i need to add one field in layout set of column.This layout of column can be found under the menu settings> layouts>curent in the ALV output of transaction IW37.Please suggest how to accomplish this?
    Thanks

    Seem you have to find the exit to add field in standard program then find enhancement spot to put your field to gt_fieldcat.
    Otherwise, should copy the standard program and edit by yourself.
    How about your result now? Can you please post your solution?
    Regards,
    Hung Tran

  • Changing layout of ALV to excel and displaying the data there

    Dear All,
    My requirement is that I have to develop an ALV report, and also plot the graphs for the same.
    I need different types of graphs, so I have searched on SDN, and I found out a blg:-
    "Report with a Graph.. An Approach!"
    Here is what the person has done:-
    I developed a simple ABAP report using ALV and just dumped all my data on it.
    After this I downloaded the Standard Excel template available in the ALV.
    Defined my own worksheets in this template, wrote some macros to pick up the data from the “RawHeader” sheet, which is available by default and will contain the ALV data.
    I inserted 1 chart in this Excel template. In this chart I used the same chart type as was being used by the user for his graph. Just right clicked on the Graph area and made the changes in the source data and made it point to the sheet containing the final data.
    That’s it my job is almost done.
    After this uploaded this template back into the report output through
    the layout settings->Change Layout Tab.
    Save it as a variant and made it a default. (Do not default it if you have more than 1 user and more than 1 template…. Select the appropriate variant for the appropriate user and then display)
    Well, this also was not that easy as I had thought. I landed up into 1 trouble.
    In my report the number of columns displayed was not constant and kept changing based on the input. This fact was taken care by designing a variable field catalogue. But now I had gone past the simple ALV display and was giving the output in an Excel sheet using a pre-defined template. Well, I immediately found a solution to this with the set_frontend_fieldcatalogue method of CL_GUI_ALV_GRID class and fixed the field catalogue every time after calling the set_table_for_first_display method. This solved most of my problems, which were not many though.
    Now here are my issues:-
    I have developed the ALV report, and I have also changed the layout to excel.
    But, I am unable to get the ALV Report data in the RawHeader Sheet, which is available by default.
    Could anyone please guide me through this method??
    It is urgent.
    Points are assured for helpful answers.
    Thanks and regards,
    Prerna

    Hi Satya Priya,
    Do I have to create my own template, or the Standard ones available will do?
    HEre is what I do:-
    Once I get my ALV output, I goto Change LAyout->View tab.->Prefered view->Microsoft Excel.
    Here I get a list of available excel templates There are 2:-
    sap_mm.xls, and sap_om.xls
    I select one of these, and the excel spreadsheet is displayed on the ALV screen.
    But the re is another button, "Upload Document to BDS".
    Do I have to upload one of the above templated to BDS?
    And please tell me in detail, what is BDS???
    Thanks for your help, and waiting for reply,
    Prerna

  • Incorrect date is being saved in excelsheet downloaded from ALV display

    Hi ,
    When I use export to spreadsheet option in ALV display (function REUSE_ALV_DISPLAY )  then Delivery date 10.02.2011 is being saved as 402213(some number not date format) .
    Can you please suggest , what 's wrong in the report.
    Thanks in Advance.

    Hi,
    Just check your fieldcatalog.If all the fields are in right order and all.
    Genearlly excel download issues occur because of errors in Field Catalog.

  • Default Layout for Multiple ALV displays

    Hello All,
    I have a requirement where I am displaying multiple ALV grid displays on different tabs of a screen.
    Now I have to set a default layout for each of the grids separately as they have different fields.
    Please let me know how to do it, I am using OO ALV display.
    Thanks a lot
    Ruchi

    Hi,
    According to your grid called pass the variant name
        gs_variant-report       = sy-repid.
        gs_variant-username     = sy-uname.
        gs_variant-variant      = v_vari.   " Your variant Name
        call method grid1->set_table_for_first_display 
          exporting
            is_layout                     = gs_layout
            is_variant                    = gs_variant  "<<<<<<<<<
            i_save                        = 'A'
            it_toolbar_excluding          = i_exclude[]
          changing
            it_outtab                     = i_output[]
            it_fieldcatalog               = i_fieldcat[]
          exceptions
            invalid_parameter_combination = 1
            program_error                 = 2
            too_many_lines                = 3
            others                        = 4.

  • ALV  - default to saved layout

    How can a default to a particular saved layout when using
    REUSE_ALV_GRID_DISPLAY?  I tried using the is_variant parameter but that doesn't seem to work.
    Thank you for any help.

    Make sure that you give all data for the variant.  Also, I think that the name is case-sensitive.  So make sure you check that.
    data: variant type  disvariant.
    * Set layout variant
      variant-report   = sy-repid.
      variant-username = sy-uname.
      variant-variant  = p_var.
    Regards,
    Rich Heilman

  • F4 for Editable field in ALV, display Name but capture ID

    Hi Friends,
    I have a ALV for which i have defined a Structure, which is passed to Fieldcatlog.
    I have defined a Search help - ZUSER_NAME which has following fields to display.
    USERID - USR02-BNAME
    FNAME
    LNAME
    FULLNAME
    So my structure for fieldcatalog has User-id which is linked to this search help with Domain XUBNAME.
    So in my report i made this User-Id as editable and F4 available, everything is working fine.
    when user does a F4, its displaying Userid,Fname,Lname and complete name.upon selection and save i am capturing the id and storing in the ztable.
    But now i have a requirement that when user selects a value from this search help on F4, i need to display Fullname but capture the User Id. How can i do that?
    This is something similar to the one we have in BSP- key-value pair.
    how to do this in ALV.
    Appreciate if someone can guide me thru.
    Thanks,
    Simha
    Edited by: Simha on Sep 6, 2008 2:24 PM

    hai ,  this is example code for editing the F4 display .. check out this
    REPORT zalv_editf4display.
    *Type pools for alv
    TYPE-POOLS : slis.
    *structure for t582a tbale
    TYPES : BEGIN OF ty_table,
            infty TYPE infty,
            pnnnn TYPE pnnnn_d,
            zrmkz TYPE dzrmkz,
            zeitb TYPE dzeitb,
            dname TYPE dianm,
             davo TYPE davo,
            davoe TYPE davoe,
            END OF ty_table.
    *Structure for infotype text
    TYPES : BEGIN OF ty_itext,
            infty TYPE infty,
            itext TYPE intxt,
            sprsl TYPE sprsl,
            END OF ty_itext.
    *Structure for output display
    TYPES : BEGIN OF ty_output,
            infty TYPE infty,
            itext TYPE intxt,
            pnnnn TYPE pnnnn_d,
            zrmkz TYPE dzrmkz,
            zeitb TYPE dzeitb,
            dname TYPE dianm,
            davo TYPE davo,
            davoe TYPE davoe,
           END OF ty_output.
    *internal table and work area declarations
    DATA : it_table TYPE STANDARD TABLE OF ty_table INITIAL SIZE 0,
           it_output TYPE STANDARD TABLE OF ty_output INITIAL SIZE 0,
           it_pbo TYPE STANDARD TABLE OF ty_output INITIAL SIZE 0,
           it_ittext TYPE STANDARD TABLE OF ty_itext INITIAL SIZE 0,
           wa_table TYPE ty_table,
           wa_output TYPE ty_output,
           wa_ittext TYPE ty_itext.
    *Data declarations for dropdown lists for f4
    DATA: it_dropdown TYPE lvc_t_drop,
          ty_dropdown TYPE lvc_s_drop,
    *data declaration for refreshing of alv
          stable TYPE lvc_s_stbl.
    *Global variable declaration
    DATA: gstring TYPE c.
    *Data declarations for ALV
    DATA: c_ccont TYPE REF TO cl_gui_custom_container,         "Custom container object
          c_alvgd         TYPE REF TO cl_gui_alv_grid,         "ALV grid object
          it_fcat            TYPE lvc_t_fcat,                  "Field catalogue
          it_layout          TYPE lvc_s_layo.                  "Layout
    *ok code declaration
    DATA:
      ok_code       TYPE ui_func.
    *initialization event
    INITIALIZATION.
    *start of selection event
    START-OF-SELECTION.
    *select the infotypes maintained
      SELECT infty
              pnnnn
              zrmkz
              zeitb
              dname
              davo
              davoe
              FROM t582a UP TO 10 ROWS
              INTO CORRESPONDING FIELDS OF TABLE it_table.
    *Select the infotype texts
      IF it_table[] IS NOT INITIAL.
        SELECT itext
                 infty
                 sprsl
                 FROM t582s
                 INTO CORRESPONDING FIELDS OF TABLE it_ittext
                 FOR ALL ENTRIES IN it_table
                 WHERE infty = it_table-infty
                 AND sprsl = 'E'.
      ENDIF.
    *Apppending the data to the internal table of ALV output
      LOOP AT it_table INTO wa_table.
        wa_output-infty = wa_table-infty.
        wa_output-pnnnn = wa_table-pnnnn.
        wa_output-zrmkz = wa_table-zrmkz.
        wa_output-zeitb = wa_table-zeitb.
        wa_output-dname = wa_table-dname.
        wa_output-davo = wa_table-davo.
        wa_output-davoe = wa_table-davoe.
    For texts
        READ TABLE it_ittext INTO wa_ittext WITH KEY infty = wa_table-infty.
        wa_output-itext = wa_ittext-itext.
        APPEND wa_output TO it_output.
        CLEAR wa_output.
      ENDLOOP.
    Calling the ALV screen with custom container
      CALL SCREEN 0600.
    *On this statement double click  it takes you to the screen painter SE51.
    *Enter the attributes
    *Create a Custom container and name it CCONT and OK code as OK_CODE.
    *Save check and Activate the screen painter.
    *Now a normal screen with number 600 is created which holds the ALV grid.
    PBO of the actual screen ,
    Here we can give a title and customized menus
    *create 2 buttons with function code 'SAVE' and 'EXIT'.
    GIVE A SUITABLE TITLE
    *&      Module  STATUS_0600  OUTPUT
          text
    MODULE status_0600 OUTPUT.
      SET PF-STATUS 'DISP'.
      SET TITLEBAR 'ALVF4'.
    ENDMODULE.                 " STATUS_0600  OUTPUT
    calling the PBO module ALV_GRID.
    *&      Module  PBO  OUTPUT
          text
    MODULE pbo OUTPUT.
    *Creating objects of the container
      CREATE OBJECT c_ccont
           EXPORTING
              container_name = 'CCONT'.
    create object for alv grid
      create object c_alvgd
      exporting
      i_parent = c_ccont.
    SET field for ALV
      PERFORM alv_build_fieldcat.
    Set ALV attributes FOR LAYOUT
      PERFORM alv_report_layout.
      CHECK NOT c_alvgd IS INITIAL.
    Call ALV GRID
      CALL METHOD c_alvgd->set_table_for_first_display
        EXPORTING
          is_layout                     = it_layout
          i_save                        = 'A'
        CHANGING
          it_outtab                     = it_output
          it_fieldcatalog               = it_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.
    ENDMODULE.                 " PBO  OUTPUT
    *&      Form  alv_build_fieldcat
          text
         <--P_IT_FCAT  text
    *subroutine to build fieldcat
    FORM alv_build_fieldcat.
      DATA lv_fldcat TYPE lvc_s_fcat.
      CLEAR lv_fldcat.
      lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '1'.
      lv_fldcat-fieldname = 'INFTY'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 8.
      lv_fldcat-scrtext_m = 'Infotype'.
      lv_fldcat-icon = 'X'.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
      lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '2'.
      lv_fldcat-fieldname = 'PNNNN'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 15.
      lv_fldcat-scrtext_m = 'Structure'.
      lv_fldcat-icon = ''.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
      lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '3'.
      lv_fldcat-fieldname = 'ITEXT'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 60.
      lv_fldcat-scrtext_m = 'Description'.
      lv_fldcat-icon = ''.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
      lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '5'.
      lv_fldcat-fieldname = 'ZRMKZ'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 1.
      lv_fldcat-scrtext_m = 'PERIOD'.
      lv_fldcat-icon = ''.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
      lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '6'.
      lv_fldcat-fieldname = 'ZEITB'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 5.
      lv_fldcat-scrtext_m = 'Time constraint'.
      lv_fldcat-edit = 'X'.
    *To avail the existing F4 help these are to
    *be given in the field catalogue
      lv_fldcat-f4availabl = 'X'.
      lv_fldcat-ref_table = 'T582A'.
      lv_fldcat-ref_field = 'ZEITB'.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
      lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '7'.
      lv_fldcat-fieldname = 'DNAME'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 15.
      lv_fldcat-scrtext_m = 'Dialogmodule'.
      lv_fldcat-icon = ''.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
      lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '8'.
      lv_fldcat-fieldname = 'DAVO'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 15.
      lv_fldcat-scrtext_m = 'Start'.
      lv_fldcat-edit = 'X'.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
      lv_fldcat-row_pos   = '1'.
      lv_fldcat-col_pos   = '9'.
      lv_fldcat-fieldname = 'DAVOE'.
      lv_fldcat-tabname   = 'IT_OUTPUT'.
      lv_fldcat-outputlen = 15.
      lv_fldcat-scrtext_m = 'End'.
      lv_fldcat-icon = ''.
      APPEND lv_fldcat TO it_fcat.
      CLEAR lv_fldcat.
    *To create drop down for the field 'DAVO'
    with our own f4 help
      ty_dropdown-handle = '1'.
      ty_dropdown-value = ' '.
      APPEND ty_dropdown TO it_dropdown.
      ty_dropdown-handle = '1'.
      ty_dropdown-value = '1'.
      APPEND ty_dropdown TO it_dropdown.
      ty_dropdown-handle = '1'.
      ty_dropdown-value = '2'.
      APPEND ty_dropdown TO it_dropdown.
      ty_dropdown-handle = '1'.
      ty_dropdown-value = '3'.
      APPEND ty_dropdown TO it_dropdown.
      CALL METHOD c_alvgd->set_drop_down_table
        EXPORTING
          it_drop_down = it_dropdown.
      LOOP AT it_fcat INTO lv_fldcat.
        CASE lv_fldcat-fieldname.
    To assign dropdown in the fieldcataogue
          WHEN 'DAVO'.
            lv_fldcat-drdn_hndl = '1'.
            lv_fldcat-outputlen = 15.
            MODIFY it_fcat FROM lv_fldcat.
        ENDCASE.
      ENDLOOP.
    ENDFORM.                    " alv_build_fieldcat
    *&      Form  alv_report_layout
          text
         <--P_IT_LAYOUT  text
    *Subroutine for setting alv layout
    FORM alv_report_layout.
      it_layout-cwidth_opt = 'X'.
      it_layout-col_opt = 'X'.
      it_layout-zebra = 'X'.
    ENDFORM.                    " alv_report_layout
    PAI module of the screen created. In case we use an interactive ALV or
    *for additional functionalities we can create OK codes
    *and based on the user command we can do the coding.
    *&      Module  PAI  INPUT
          text
    MODULE pai INPUT.
    *To change the existing values and refresh the grid
    *And only values in the dropdown or in the default
    *F4 can be given , else no action takes place for the dropdown
    *and error is thrown for the default F4 help and font changes to red
    *and on still saving, value is not changed
      c_alvgd->check_changed_data( ).
    *Based on the user input
    *When user clicks 'SAVE;
      CASE ok_code.
        WHEN 'SAVE'.
    *A pop up is called to confirm the saving of changed data
          CALL FUNCTION 'POPUP_TO_CONFIRM'
            EXPORTING
              titlebar       = 'SAVING DATA'
              text_question  = 'Continue?'
              icon_button_1  = 'icon_booking_ok'
            IMPORTING
              answer         = gstring
            EXCEPTIONS
              text_not_found = 1
              OTHERS         = 2.
          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.
    *When the User clicks 'YES'
          IF ( gstring = '1' ).
            MESSAGE 'Saved' TYPE 'S'.
    *Now the changed data is stored in the it_pbo internal table
            it_pbo = it_output.
    *Subroutine to display the ALV with changed data.
            PERFORM redisplay.
          ELSE.
    *When user clicks NO or Cancel
            MESSAGE 'Not Saved'  TYPE 'S'.
          ENDIF.
    **When the user clicks the 'EXIT; he is out
        WHEN 'EXIT'.
          LEAVE PROGRAM.
      ENDCASE.
      CLEAR: ok_code.
    ENDMODULE.                 " PAI  INPUT
    *&      Form  REDISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM redisplay .
    *Cells of the alv are made non editable after entering OK to save
      CALL METHOD c_alvgd->set_ready_for_input
        EXPORTING
          i_ready_for_input = 0.
    *Row and column of the alv are refreshed after changing values
      stable-row = 'X'.
      stable-col = 'X'.
    *REfreshed ALV display with the changed values
    *This ALV is non editable and contains new values
      CALL METHOD c_alvgd->refresh_table_display
        EXPORTING
          is_stable = stable
        EXCEPTIONS
          finished  = 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.                    " REDISPLAY

  • Regarding ALV display

    Hi ,
    I am making ALV Report. I am displaying 4  similar ALV grids in a screen.
    I would like to know how to give them some names so that they can be distinguished from each other by there name.
    Pls help .

    Hi Jaison,
    the easiest way to achive this, is to do the subtotaling with or without detailed lines by changing the ALV variant when in display.
    When you save the ALV layout(variant), in the popup you have a "Save with" tab. There is "Breakdwn to totals lvl:" entry. You ca select the level of sum displayed.
    After saving layout variant, you can pass it depending on  users input in structured parameter IS_VARIANT. Yo need to fill report field with report name and variant with layout name.
    Best is, to have a layout selection parameter. In Initialization, fill it using FM REUSE_ALV_VARIANT_DEFAULT_GET, AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_layout, use REUSE_ALV_VARIANT_F4.
    This makes your report far more flexible.
    Regards,
    Clemens

  • Layout in ALV Grid in OO ABAP

    Hello friends,
    I want the ALV Grid to be displayed with a default layout. I am able to get the saved layout on the selection screen but when I select that layout still the output layout is not taking it.
    Please refer the code which I have written.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout.
      PERFORM variant_search CHANGING p_layout.
    FORM variant_search  CHANGING p_layout TYPE slis_vari.
      DATA : lv_exit      TYPE c,
             ls_variant   TYPE disvariant.
      ls_variant-report = syst-repid.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
        EXPORTING
          is_variant    = ls_variant
          i_save        = 'A'
        IMPORTING
          e_exit        = lv_exit
          es_variant    = ls_variant
        EXCEPTIONS
          not_found     = 1
          program_error = 2
          OTHERS        = 3.
      IF sy-subrc EQ 0 AND lv_exit IS INITIAL.
        p_layout = ls_variant-variant.
      ENDIF.
    ENDFORM.                    " variant_search
    *-------The above piece of code helps me to save a layout.
    Now when I enter the saved layout in my parameter, I want the output to take this layout and display the grid, but I dont know why it is not taking this layout. Please refer the code which I have written.
            lr_layout = gr_alv->get_layout( ).
            key-report = sy-repid.
            lr_layout->set_key( key ).
            lr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
    Please let me know how can I achieve this.
    Regards,
    Salil

    Salil,
    Here is some code that uses a default variant.
    *& SELECTION-SCREEN
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: s_werks FOR  marc-werks,
                    s_matnr FOR  mara-matnr,
                    s_uname FOR  sy-uname,
                    s_datum FOR  sy-datum,
                    s_uzeit FOR  sy-uzeit,
                    s_mtart FOR  mara-mtart,
                    s_matkl FOR  mara-matkl.
    PARAMETERS:     p_toler(3) TYPE n.
    SELECTION-SCREEN: END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK v1 WITH FRAME.
    PARAMETERS: p_vari LIKE disvariant-variant.
    SELECTION-SCREEN END OF BLOCK v1.
    *& Event INITIALIZATION
    INITIALIZATION.
      PERFORM set_defaults.
      PERFORM default_variant CHANGING p_vari.
    Event AT SELECTION-SCREEN ON VALUE-REQUEST
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
      PERFORM f4_for_variant CHANGING p_vari.
    *&      Form  default_variant
          text
         <--PL_VARI  variant
    FORM default_variant  CHANGING pl_vari.
      g_repid = sy-repid.
    set options: save variants userspecific or general
      g_save = 'A'. " 'A' = standard and user-specific saving
    initialize variant
      CLEAR gs_variant.
      gs_variant-report = g_repid.
    get default variant
      gs_xvariant = gs_variant.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
        EXPORTING
          i_save     = g_save
        CHANGING
          cs_variant = gs_xvariant
        EXCEPTIONS
          not_found  = 2.
      IF sy-subrc = 0.
        pl_vari = gs_xvariant-variant.
      ENDIF.
    ENDFORM.                    " default_variant
    *&      Form  f4_for_variant
          text
         <--PL_VARI  variant
    FORM f4_for_variant  CHANGING pl_vari.
    display variant selection dialog box
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                is_variant          = gs_variant
                i_save              = g_save
              it_default_fieldcat =
           IMPORTING
                e_exit              = g_exit
                es_variant          = gs_xvariant
           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 g_exit = space.
          pl_vari = gs_xvariant-variant.
        ENDIF.
      ENDIF.
    ENDFORM.                    " f4_for_variant
    MODULE status_0100 OUTPUT
    MODULE status_0100 OUTPUT.
      SET PF-STATUS '100'.
      SET TITLEBAR '100'.
      IF o_container IS INITIAL.
        REFRESH: t_fieldcat,
                 t_sortcat,
                 t_groupcat,
                 gt_exclude.
        CREATE OBJECT o_container
          EXPORTING container_name = 'CONTAINER'.
    Create TOP-Document
        CREATE OBJECT o_dyndoc_id
        EXPORTING style = 'ALV_GRID'.
    Create Splitter for custom_container
        CREATE OBJECT o_splitter
        EXPORTING parent  = o_container
        rows    = 2
        columns = 1.
        CALL METHOD o_splitter->get_container
          EXPORTING
            row       = 1
            column    = 1
          RECEIVING
            container = o_parent_top.
        CALL METHOD o_splitter->get_container
          EXPORTING
            row       = 2
            column    = 1
          RECEIVING
            container = o_parent_grid.
    Set height for g_parent_html
        CALL METHOD o_splitter->set_row_height
          EXPORTING
            id     = 1
            height = 12.
        CREATE OBJECT o_grid
          EXPORTING i_parent = o_parent_grid.
        gs_layout-smalltitle = 'X'.
        gs_layout-no_rowmark = ' '.
        gs_layout-cwidth_opt = 'X'.
        gs_layout-zebra      = 'X'.
        gs_layout-sel_mode   = 'D'.
        gs_variant-report    = sy-cprog.
        gs_variant-variant   = p_vari.
        gs_exclude = cl_gui_alv_grid=>mc_fc_info.
        APPEND gs_exclude TO gt_exclude.
        gs_exclude = cl_gui_alv_grid=>mc_fc_graph.
        APPEND gs_exclude TO gt_exclude.
        CALL METHOD o_grid->set_3d_border
          EXPORTING
            border = 1.
        SET HANDLER lcl_event_handler=>hotspot_click FOR o_grid.
        SET HANDLER lcl_event_handler=>top_of_page FOR o_grid.
        SET HANDLER lcl_event_handler=>print_top_of_page FOR o_grid.
        CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
          EXPORTING
            i_structure_name = 'Z1271'
          CHANGING
            ct_fieldcat      = t_fieldcat.
        LOOP AT t_fieldcat INTO h_fieldcat.
          CASE h_fieldcat-fieldname.
            WHEN 'MATNR'.
              h_fieldcat-hotspot   = 'X'.
            WHEN 'VBELN'.
              h_fieldcat-hotspot   = 'X'.
            WHEN 'UNAME'.
              h_fieldcat-coltext   = 'Maint. By'.
              h_fieldcat-tooltip   = 'Material maintained by'.
            WHEN 'DATUM'.
              h_fieldcat-coltext   = 'Maint. Date'.
              h_fieldcat-tooltip   = 'Material maintenance date'.
            WHEN 'UZEIT'.
              h_fieldcat-coltext   = 'Maint. Time'.
              h_fieldcat-tooltip   = 'Material maintenance time'.
            WHEN 'EDAYS'.
              h_fieldcat-coltext   = 'EDays'.
              h_fieldcat-tooltip   = 'Elapsed days'.
            WHEN 'ETIME'.
              h_fieldcat-coltext   = 'ETime'.
              h_fieldcat-tooltip   = 'Elapsed time same day'.
            WHEN 'EDATU'.
              h_fieldcat-coltext   = 'Delivery Date'.
              h_fieldcat-tooltip   = 'Delivery date'.
          ENDCASE.
          MODIFY t_fieldcat FROM h_fieldcat.
          CLEAR h_fieldcat.
        ENDLOOP.
        CALL METHOD o_grid->set_table_for_first_display
          EXPORTING
            is_layout            = gs_layout
            i_save               = 'A'
            is_variant           = gs_variant
            it_toolbar_excluding = gt_exclude
          CHANGING
            it_fieldcatalog      = t_fieldcat
            it_sort              = t_sortcat
            it_outtab            = t_rpt.
        CALL METHOD o_grid->list_processing_events
          EXPORTING
            i_event_name = 'TOP_OF_PAGE'
            i_dyndoc_id  = o_dyndoc_id.
      ENDIF.
    ENDMODULE.                    "status_0100 OUTPUT

  • ALV display: Default setting field in grey mode

    Hi
    In SE16 or SE11 when we are checking the table (any table, say MARA, RESB etc) with ALV option, we are getting the "save layout" with default setting field in grey mode. So whatever layout is created it is not a default layout, the user has to select the layout. However when I check with another friend in another project there the ALV setting is coming with editable option.
    So how shall I get that the field in change mode. Pls suggest.
    Regds

    Hi BNR,
    for reasons that may be discussed elsewhere, the layout saved in SE16 is applied to all tables displayed using SE16. Thus a default layout does not make too much sense. In the layout the columns displayed are stored. If you have a default layout you will see only the columns that have all displayed columns in common.
    By the way, in my system I can store a default layout but only user-specific. I can not save standard (non-user-specific) layouts in SE16/SE11.
    In SE16N I can store both general (non-user-specific) and Default layouts. Here the layout is table-specific.
    If you users want a special layout (and they are allowed to use SE16!!!) , you should switch to SE16N.
    Regards,
    Clemens

  • PS report S_ALR_87013558 - add layout for alv output

    Hi Friends
    In Standard report of PS S_ALR_87013558 I hav to add a selection screen field for selecting layout and accordingly the ALV layout will be displayed. Can it be achieved by enhancing, or we need to copy the report and modify and configure or is there any other way to do it.
    Thanks
    Moumita

    Hi,
    I think that can be achived through the dynamic selections to add fields to the dynamic selector you check the transaction CATS_SELVIEW press f4 on name of view and select standard then display you can see all functional groups, tables, table fields. Assign the respective according to your critaria.

  • Saving Data from ALV.

    hi all.
    I have an issue regarding saving data from alv to data base table.
    The problem is like this. I have an internal table consist of 10 column from three diferent tables.one primary key is there.
    now i have displayed it in alv grid. there is a column of quantity. i made some changes in quantity of some rows. now i want to save it into the database table from which that quantity field fetched.
    i used first check_changed_data method. if the flag is set it means data is changed.
    wat shud i do to save that quantity column into data base.
    Thanks In advance.
    varu

    Hi,
    <b>To modify database or ztable from the ALV grid,you need to do the following:</b>
    ---You have to modify the field Catalog fields (fields that you want to make editable).Set the field <b>EDIT as 'X'</b>.For example if you want to make the field below editable:
    ls_fcat-fieldname = 'CARRID'.
    ls_fcat-edit = 'X'.
    APPEND ls_fcat TO pt_fieldcat.
    ---Call the method below before you call the set_table_for_first_display.
    CALL METHOD ALV_GRID_INSTANCE-><b>set_ready_for_input</b>
    EXPORTING
    i_ready_for_input = 0. ( For Display ) and ('1' for Edit )
    After this put the set_table_for_first_display.
    <b>Now if the ALV data has changed,and you want to change the database or ztable,then in your pf status give a function code for SAVE button in the GUI.
    In the PAI of the screen,in user command module write the following:</b>
    WHEN 'SAVE'.
    <b>call method gr_alvgrid->check_changed_data</b>
    importing e_valid = l_valid.
    if l_valid = 'X'.
    <b>MODIFY spfli FROM TABLE itab_spfli.</b>
    endif.
    <b>(l_valid is a flag.</b>
    DATA:l_valid type c.
    If you want to check if the user has entered any value on the grid, use the Method : CALL METHOD gr_alvgrid->check_changed_data.
    This method returns a flag l_valid which can be checked to see if the data on the ALV grid has been changed or not.)
    Regards,
    Beejal
    **Reward if this helps

  • 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

Maybe you are looking for

  • TS1398 I have an ipod and iphone on same computer-is that an issue?

    I have an ipod & an iphone. The iphone is mine though and my daughter has the ipod of course for just games and music. I am having issues when I hook up to Itunes, it wanted at first to add all my apps to her ipod & add all her games on mine. So I fi

  • Serious problem of jdbc-mysql connectivity using tomcat

    hi everybody i m in serious problem since last 15-20 days. i m trying hard to make the connection jdbc-mysql using tomcat with the help of a jsp test page but every time i am facing almost the similar probems listed below in detail: to make sure that

  • Problem in deleting Rows of JTable after sorting it

    Hi all, I'm getting problems in Removing Row(s) after sorting a JTable. Please find the code snippets at this URL. Thanks for your time... http://forum.java.sun.com/thread.jsp?forum=31&thread=459736&start=15&range=15&hilite=false&q=

  • Inserting field text into sql query and comparing values to another table

    I have an issue in Visual Web Developer 2010 that I need help with. The code below is a Gridview Sql query where I'm extracting PART_NUMBER from various tables.  I would like to add the table name in a separate field named Table.  The end result shou

  • IPhone n'apparaît pas dans iTunes

    Bonjour, Depuis ce matin j'essaye d'ajouter de la musique dans mon iPhone, seulement problème : mon iPhone n'apparaît plus dans iTunes ... J'ai téléchargé la dernière version de iTunes, désinstallé l'ancienne & ré-installé la dernière version. J'ai a