To increase dynamically columns in ALV report

hi everyone,
Could any one give me a sample code ,to increase columns in ALV report output dynamically as record increase, i need to increase columns so that i can keep all the years data of a particular project in one row

Please refer to the code piece
*& Report  ZTEST_DYNAMIC_ALV
REPORT  ztest_dynamic_alv.
DATA: gt_fcat TYPE lvc_t_fcat,
      gw_grid TYPE REF TO cl_gui_alv_grid.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-s01.
PARAMETERS: p_number TYPE i.
SELECTION-SCREEN : END OF BLOCK b1.
** Start of Selection
START-OF-SELECTION.
*1) Create Base Catalog
  PERFORM sub_create_base_catalog.
*2) Add additional fields
  PERFORM sub_fill_addtional.
*3) Display output data.
  PERFORM sub_display_output.
*&      Form  SUB_CREATE_BASE_CATALOG
*       Create Base catalog for display
FORM sub_create_base_catalog .
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       = 'ZSTRCT'
    CHANGING
      ct_fieldcat            = gt_fcat
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
ENDFORM.                    " SUB_CREATE_BASE_CATALOG
*&      Form  SUB_FILL_ADDTIONAL
*       text
FORM sub_fill_addtional .
  DATA: lw_fcat  TYPE lvc_s_fcat,
        lw_from  TYPE i,
        lw_data  TYPE REF TO data,
        lw_fname TYPE stfna,
        lw_index(2) TYPE n.
  FIELD-SYMBOLS: <l_output> TYPE table.
  DESCRIBE TABLE gt_fcat LINES lw_from.
  DO p_number TIMES.
    lw_from = lw_from + 1.
    lw_index = sy-index.
    CONCATENATE 'DYNA' lw_index INTO lw_fname SEPARATED BY '-'.
    lw_fcat-col_pos = lw_from.
    lw_fcat-fieldname = lw_fname.
    lw_fcat-tabname = '1'.
   lw_fcat-scrtext_l = lw_fcat-scrtext_m = lw_fcat-scrtext_s = lw_fname.
    APPEND lw_fcat TO gt_fcat.
    CLEAR lw_fcat.
  ENDDO.
** Convert gt_fcat to internal table.
  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog           = gt_fcat
    IMPORTING
      ep_table                  = lw_data
    EXCEPTIONS
      generate_subpool_dir_full = 1
      OTHERS                    = 2.
  IF sy-subrc = 0.
** Create the internal table form field catalog.
    ASSIGN lw_data->* TO <l_output>.
** display the ALV data.
    CREATE OBJECT gw_grid
      EXPORTING
        i_parent          = cl_gui_container=>screen0
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        OTHERS            = 5.
    IF sy-subrc = 0.
      CALL METHOD gw_grid->set_table_for_first_display
        CHANGING
          it_outtab                     = <l_output>
          it_fieldcatalog               = gt_fcat
        EXCEPTIONS
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          OTHERS                        = 4.
      IF sy-subrc = 0.
        MESSAGE s000(zrak) WITH p_number 'DISPLAYED DYNAMICALLY'.
      ENDIF.
    ENDIF.
  ENDIF.
ENDFORM.                    " SUB_FILL_ADDTIONAL
*&      Form  SUB_DISPLAY_OUTPUT
*       text
FORM sub_display_output .
  CALL SCREEN '9001'.
ENDFORM.                    " SUB_DISPLAY_OUTPUT
*&      Module  STATUS_9001  OUTPUT
*       text
MODULE status_9001 OUTPUT.
  SET PF-STATUS ' '.
  SET TITLEBAR 'MAIN00'.
ENDMODULE.                 " STATUS_9001  OUTPUT
*&      Module  USER_COMMAND_9001  INPUT
*       text
MODULE user_command_9001 INPUT.
  CASE sy-ucomm.
    WHEN 'BACK' OR
         'CANC' OR
         '%EX'.
      SET SCREEN 0.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_9001  INPUT

Similar Messages

  • Dynamic columns in ALV report

    halo fellow SAPiens,
    i need to show dynamic columns for a particular material........the scenario is as follows....
    1) there r 7 fixed columns describing the material...
    2)when the material returns back to the plant for some reason , i need to insert a column which shows the date and reason(char) of return.
    3)again after dispatching the material for some reason it comes back again a new column shld be displayed showin the date and reason(char).
    4)if the material doesnt come back...the report shows only 7 columns.
    any solution?

    try <a href="http://www.alvrobot.com.ar/home.php">here</a>  ......its a useful tool for dealing with ALV
    <b>reward points if useful</b>

  • Dynamic column in ALV Report

    Hi,
    We need to display amount fields in the ALV and that fields should be able to display both 3 decimals or 2 decimals at the same time.When we refer this as a character field it is not allowed for totals/subtotals .
    if we refer it as 3 decimals ,it is adding zero for 2 decimal  values.
    if we refer it as 2 decimals ,it is adding rounding off  for 2 decimal  values.
    How can we dynamically refer this field in order to handle both these cases at the same time?
    We tried with reference of CURR ,but no use.
    Any pointers in this regard are highly appreciated.
    Regards,

    Hi Kranti,
    if you want to display amount then you should use amount fields. Then you need another column for the currency displayed. In the field catalog, you reference the amount field to the currensy field using fieldcat component CFIELDNAME.
    Then all values are displayed with the number of decimals defined for the respective currency.
    Additionally, you will get separate subtotal lines for each currency.
    --  asked several times, answered several times --
    What serach term did you use?
    Kind regards,
    Clemens

  • Generating dynamic columns for a report

    Hi all,
          Can anybody pls. tell me how to output dynamic columns in a report. my req. is that i've to generate so many columns as there are no. of unique(a particular field value) rows in my internal table. for e.g say suppose i've 5 rows in my internal table which has 2 fields, one short text & it's corresponding value. so now my report output shud have 5 columns with the short text as the column heading & the their corresponding values below each column heading. i heard it can be done thru field-symbols. can anyone pls. guide me.

    Hi Sushma,
    This piece of code might be useful.
    The following sections will help you to understand the steps required to define a Dynamic ALV.
    Following symbol signifies:
    Þ                    Important
    Main Steps Required
    The following are the main steps that are to be performed for defining a dynamic Alv
    1.       Defining a field catalog
    2.       Defining the dynamic table
    3.       Filling data into the table
    4.       Displaying ALV list
    Defining a field catalog
    The purpose of defining a field catalog first in case of Dynamic ALV is somewhat different than in case of normal ALV. In case of Dynamic ALV the field catalog is used to define the final internal table that will hold the data, and would be used to display the final output.
    Þ It is very important to remember that the field catalog table be refreshed first, else it might give an error.
    For example:
    DATA: T_FIELDCAT TYPE LVC_T_FCAT,
    L_FIELDCAT TYPE LVC_S_FCAT.
       Refresh T_FIELDCAT.
      CLEAR L_FIELDCAT.
      L_FIELDCAT-FIELDNAME = 'LIFNR'.
      L_FIELDCAT-INTTYPE = ''.
      L_FIELDCAT-OUTPUTLEN  = 10.
      L_FIELDCAT-COLTEXT  = TEXT-002.
      APPEND L_FIELDCAT TO T_FIELDCAT.
    Defining the dynamic table.
    This table will hold the final data that needs to be displayed. To declare the table the following things need to be done.
    Declare a field symbol
    Displaying Alv List
    This is done in the same way as we do for normal Alv. Call function “REUSE_ALV_GRID_DISPLAY” and pass the field catalog table in the export parameters and the dynamic table in Tables.
    Reward Points if it is helpful.
    Reagrds,
    Kiran I

  • How to Change the position of Column in ALV report

    Hi Follks,
        Is is possible to change the position of column in ALV report?.If yes then how?
        Basically my requirement is, that user want afacility where , he should be able to change the position
        of column aftre he runs the report.
        Eg: After running the report , user felt that column 5 should be at position 2 , in that case he should   
               be able to drag column 5 at position 2 and vice versa.
        Please help me, how to solve this issue.
        Note : I am using NW 7.0 SP 9
        Regards
        PG
    Edited by: PG on Apr 13, 2009 11:10 AM

    HI PG,
    do below whie filling the filed catlog
    wa_fieldcat-fieldname        = 'Field1".
    wa_fieldcat-COL_POS = '1',
    append wa_fieldcat to it_fieldcat.
    wa_fieldcat-fieldname         = 'Field2".
    wa_fieldcat-COL_POS = '2',
    wa_fieldcat-fieldname         = 'Field3".
    wa_fieldcat-COL_POS = '3',
    Thanks!

  • How to display subtotals in separate column in alv report?

    hi,
    I am displayed the subtotals  for QUantity field BDMNG in Reuse_alv_grid_display  in the same column.
    but I want to display subtotal in separate column.
    How to display subtotals in separate column in alv report?
    thanks&regards.
    samba.k

    Hi
    As far as i know you can't do this,the option you have is to create one more column (subtotal) and populate it by manual calculation at every subtotal (not alv subtotal but yours) .
    Best Regards
    Yossi

  • Add New Column in ALV Report of Standard SAP ME28.

    Hi anybody,
    I want add new column in alv report of standard SAP Program ME28 Screen.
    Add Last PO Price column inside ALV Report ME28 Screen.
    Can u please anybody tell me how to add new column in ME28 Screen.
    Thanks
    S.Muthu.

    Try to find any BADI for the same
    Follow the below steps to find out what all BADI's are called when you press any button in any transaction.
    1) Goto se24 (Display class cl_exithandler)
    2) Double click on the method GET_INSTANCE.
    3) Put a break point at Line no.25 (CASE sy-subrc).
    Now
    4) Execute SAP standard transaction
    5) Press the required button for which you need to write an exit logic, the execution will stop at the break point.
    6) Check the values of variable 'exit_name', it will give you the BADI name called at that time.
    7) This way you will find all the BADIs called on click of any button in any transaction.
    OR
    Also one more option is to copy ME28 and, make modifications to the copied program.

  • Summing up a Column in ALV report

    Hi All,
    I have developed an ALV Report which will display Invoices and other details.
    Now i need to display the sum of NETWR column, if user wish to select that column and click the "SUM" icon.
    As of now, if i select the NETWR column and click 'SUM" column, i am getting Runtime error.
    How to resolve this issue?
    Regards
    Pavan

    Hi Pavan,
    ALV GRID CONTROL:
    This task is performed by the SAP Control Framework.
    The R/3 System allows you to create custom controls using ABAP Objects. The application server is the Automation Client, which drives the custom controls (automation server) at the front end.
    If custom controls are to be included on the frontend, then the SAPGUI acts as a container for them.
    Custom controls can be ActiveX Controls or JavaBeans.
    The system has to use a Remote Function Call (RFC) to transfer methods for creating and using a control to the front end.
    ABAP objects are used to implement the controls in programs.
    An SAP Container can contain other controls (for example, SAP ALV Grid Control, Tree Control, SAP Picture Control, SAP Splitter Control, and so on). It administers these controls logically in one collection and provides a physical area for the display.
    Every control exists in a container. Since containers are themselves controls, they can be nested within one another. The container becomes the parent of its control. SAP containers are divided into five groups:
    SAP custom container: Displays within an area defined in Screen Painter on screens or sub screens.
    Class: CL_GUI_CUSTOM_CONTAINER
    SAP dialog box container: Displays in a modeless dialog box or as a full screen. Class:
    CL_GUI_DIALOGBOX_CONTAINER
    SAP docking container: Displays as docked, resizable sub-window with the option of displaying it as a modeless dialog box. Class: CL_GUI_DOCKING_CONTAINER
    SAP splitter container: Displays and groups several controls in one area - that is, splits the area into cells Class: CL_GUI_SPLITTER_CONTAINER
    SAP easy splitter container: Displays controls in two cells, which the user can resize using a split bar. Class: CL_GUI_EASY_SPLITTER_CONTAINER.
    In the control, you can adjust the column width by dragging, or use the 'Optimum width' function to adjust the column width to the data currently displayed. You can also change the column sequence by selecting a column and dragging it to a new position.
    Standard functions are available in the control toolbar. The details display displays the fields in the line on which the cursor is positioned in a modal dialog box.
    The sort function in the ALV Control is available for as many columns as required. You can set complex sort criteria and sort columns in either ascending or descending order.
    You can use the 'Search' function to search for a string (generic search without *) within a selected area by line or column.
    You can use the 'Sum' function to create totals for one or more numeric columns. You can then use the "Subtotals" function to set up control level lists: You can use the 'Subtotal' function to structure control level lists: select the columns (non-numeric columns only) that you want to use and the corresponding control level totals are displayed.
    For 'Print' and 'Download' the whole list is always processed, not just the sections displayed on the screen.
    You can define display variants to meet your own specific requirements. For information on saving variants, see 'Advanced Techniques'.
    The ALV grid control is a generic tool for displaying lists in screens. The control offers standard functions such as sorting by any column, adding numeric columns, and fixed lead columns .
    Data collection is performed in the program (with SELECT statements, for example) or by using a logical database. The data records are saved in an internal table and passed on to the ALV control along with a field description.
    The field description contains information about the characteristics of each column, such as the column header and output length. This information can defined either globally in the Dictionary (structure in the Dictionary) or in the field catalog in the program itself. You can also merge both techniques.
    The ALV link is a standard function of Query and QuickViewer. If multiline queries or Quick View lists have been defined, they will automatically be compressed to a single line and output in the ALV control as a long, single line list.
    Use Screen Painter to create a sub screen container for the ALV grid control. The control requires an area where it can be displayed in the screen. You have to create a container control that determines this area.
    Use the corresponding icon in the Screen Painter layout to create the container control. The size of area "MY_CONTROL_AREA" determines the subsequent size of the ALV control.
    The valid GUI status must be set at the PBO event in the flow logic of the ALV subscreen container.
    The OK_CODE processing for the cancel functions must be programmed at the PAI event.
    The reference variables for the custom container and the ALV grid control must be declared.
    To create reference variables, use ABAP statement TYPE REF TO .
    The global classes you need to do this are called cl_gui_custom_container (for the custom container control) and cl_gui_alv_grid (for the ALV grid control).
    The global classes are defined in the Class Builder. You can use the Class Builder to display information for the methods, their parameters, exceptions, and so on.
    Use ABAP statement CREATE OBJECT to create the objects for the container and the ALV control. Objects Are instances of a class.
    When an object is created (CREATE), method CONSTRUCTOR of the corresponding class is executed. The parameters of method CONSTRUCTOR determine which parameters have to be supplied with data when the object is created. In the above example, object alv_grid is given the name of the container control (g_custom_container) in exporting parameter i_parent, which links the two controls. For information on which parameters method CONSTRUCTOR possesses and which of these parameters are required, see the Class Builder.
    Objects should only be created once during the program. To ensure that this is the case, enclose the CREATE OBJECT statement(s) in an IF IS INITIAL. ... ENDIF clause. The objects must be generated before the control is displayed for the first time - that is, during the PBO event of the ALV subscreen container.
    To display the requested dataset in the ALV control, the data must be passed on to the control as an internal table, and a field description must exist indicating the order in which the columns will be output.
    In the simplest case, the field description can use a structure from the Dictionary. The Dictionary also determines the technical field attributes like type and length, as well as the semantic attributes like short and long texts. The ALV control uses this information to determine the column widths and headers. The column sequence is determined by the field sequence in the structure.
    If no suitable structure is active in the Dictionary, or you want to output internal program fields in the control, then you will have to define information like the output length and column header in the field catalog.
    In a typical program run, the dataset is read first (SELECT ....), the internal table is filled with the data to display (... INTO TABLE ...), and ABAP statement CALL SCREEN is then used to call the ALV sub screen container.
    The data transfer to the ALV control takes place during the call of method
    set_table_for_first_display from class cl_gui_alv_grid. The method call must be programmed at the PBO event of the ALV subscreen container.
    The name of the Dictionary structure that supplies the field description is specified in exporting parameter i_structure_name. The name of the internal table that contains the data records to display is specified in changing parameter it_outtab.
    The field description for the ALV control can be ta ken from an active Dictionary structure (fully automatic), by passing a field catalog (manual), or through a mixture of the two options (merge).
    The field catalog is in internal table with type lvc_t_fcat. This type is defined globally in the Dictionary.
    Each line in the field catalog table corresponds to a column in the ALV control.
    The field characteristics (= column characteristics) are defined in the field catalog. The field catalog is in internal table with type lvc_t_fcat. Each line that is explicitly described in the ALV control corresponds to a column in the field catalog table.
    The link to the data records to output that are saved in internal table is established through field name . This name must be specified in column "fieldname" in the field catalog.
    This field can be classified through a Dictionary reference (ref_table and ref_field) or by specifying an ABAP data type (inttype).
    Column headers and field names in the detail view of an ALV control line can be determined in the field catalog in coltext and seltext, respectively.
    The position of a field during output can be determined with col_pos in the field catalog.
    If you want to hide a column, fill field no_out with an "X" in the field catalog. Hidden fields can be displayed again in a user display variant.
    Icons can be displayed in the ALV control. If you want a column to be interpreted as an icon, then the icon name must be known to the program (include .) and icon = "X" must be specified for this column in the field catalog.
    The above example shows a semi-automatic field description: Part of the field description comes from the Dictionary structure (sflight), while another part is explicitly defined in the field catalog (gt_fieldcat).
    The field catalog (internal table) is filled in the program and is passed on together with the name of the Dictionary structure during the method call. The information is merged accordingly in method set_table_for_first_display.
    For a user to save display variants, parameters is_variant and i_save must be passed on during method call set_table_for_first_screen. To assign display variants uniquely to a program, at least the program name must be supplied in the transferred structure (gs_variant).
    Program names can be up to 30 characters long.
    If you only pass on the current parameters for is_variant, then existing variants can be loaded, but no new ones can be saved. If you use parameter i_save, you must pass on a variant structure with is_variant.
    I_SAVE = SPACE No variants can be saved.
    I_SAVE = 'U' The user can only save user-specific variants.
    I_SAVE = 'X' The user can only save general (shared) variants.
    I_SAVE = 'A' The user can save both user-specific and general (shared) variants.
    You can use parameter is_layout of method set_table_for_first_display, for example, to define the header in the ALV control and the detail display.
    To do this, define a query area in the program in accordance with Dictionary structure lvc_s_layo, and pass on the text to display in field -grid_title or -detailtitl.
    If you want to create print lists with zebra stripes, set field -zebra to "X". You can display a print preview for print lists by requesting standard function "Print".
    All parameters of method SET_TABLE_FOR_FIRST_DISPLAY from global class
    CL_GUI_ALV_GRID are defined in the Class Builder.
    Events are defined in global class cl_gui_alv_grid; you can use these events to implement user interaction within the program. To respond to a double -click on a table line, you must respond to event DOUBLE_CLICK.
    You receive control in the program, allowing you to implement interactive reporting - such as a full screen details list. The events for cl_gui_alv_grid are located in the Class Builder.
    To define an implement a local class in the program, you use a handler method. In this handler method, you program the functionality to trigger by a double -click in the output table.
    To activate a handler method at runtime, a class or an object from that class registers itself with an event using command SET HANDLER. The names of the IMPORTING parameters in the handler method correspond to the names of the EXPORTING parameters of the related event.
    In the above example, the local class is LCL_ILS and the handler method is ON_DBLCLICK. An object - ALV_DBLCLICK - is created and registers itself for event DOUBLE_CLICK.
    You can query parameter e_row-index to determine which output line was requested by the double -click. This parameter corresponds to the line number of the output table (internal table with the data records to output). If you need information for the selected line, you have to read it with READ TABLE itab INDEX e_row-index.
    This subsequent read in the output table generally corresponds to the HIDE area in conventional reporting. You first have to make sure that the user has double -clicked a line in the output table (similar to the valid line selection with the HIDE technique).
    A field group can contain global data objects, but not data objects that have been defined locally in a subroutine or function module.
    You can use INSERT to specify both fields and field symbols. This makes it possible to dynamically insert a data object referred to by a field symbol into a field group at runtime. Any field symbols that have not been assigned are ignored, which means no new field is inserted into the field group.
    The EXTRACT statement writes all the fields of a field group as one record to a sequential dataset (transport takes place with similarly named fields). If a HEADER field group is defined, then its fields are placed ahead of each record as sort keys. You can then sort the dataset with SORT and process it with LOOP ...ENDLOOP. In this case, no further EXTRACT is possible.
    The INSERT statement is not a declarative statement: This means field groups can also be expanded in the program flow section.
    As soon as the first dataset of a field group has been extracted with EXTRACT, that field group can no longer be expanded with INSERT. In particular, the HEADER field group cannot be expanded after the first EXTRACT (regardless of the field group).
    When the GET events are processed, the logical database automatically writes hexadecimal zeros in all the fields of a node when it returns to an upper-level node in the hierarchy. Since the HEADER normally contains sort fields for all field groups, these hexadecimal zeros in the HEADER serve as a type of hierarchy key: The more zeros there are, the further up in the control level hierarchy you go.
    &#61550;&#61472;The SORT statement sorts the extract dataset in accordance with the defined field sequence in field group HEADER. The addition BY ... sets a new sort key.
    Each must be either a field of field group HEADER or a field group that consists only of fields of the field group HEADER. You can use the additions ASCENDING and DESCENDING to determine whether the fields are sorted in ascending (default) or descending order.
    Fields containing X'00' in the logical databases are always displayed before all other values during a SORT.
    Processing of an extract dataset always takes places within a LOOP. The contents of the extract dataset field are placed in program fields with the same names.
    The group change always involves the fields of the HEADER. Single record processing for extract datasets is performed using language element AT ( = field group).
    CNT() is not a statement, but instead a field that is automatically create d and filled when is a non-numeric field from field group HEADER and is part of the sort key. At the end of the group, CNT() contains the number of different values that the field recorded in this group level.
    SUM() is not a statement, but instead a field that is automatically created and filled when is a numeric field of an extract dataset. At the end of the group, SUM() contains the control total of field .
    *** and CNT are only available at the end of the group level or at AT LAST.
    Single record processing for extract datasets AT WITH is only performed when field group is immediately followed by field group in the temporary dataset.
    Loops over an extract dataset cannot be nested. However, several contiguous loops are permitted.
    The sequence of the control level changes within the LOOP must correspond to the sort sequence.
    Totals can only be calculated within control footer processing.
    Extracts allow only appends (EXTRACT), sorting (SORT) and sequential processing (LOOP).
    Once a SORT or LOOP has occurred, the intermediate dataset is frozen and cannot be expanded with EXTRACT. Operations that insert into or delete from EXTRACT datasets are not supported.
    Extracts allow for several record types (FIELD-GROUPS) with fields that can be set dynamically (INSERT is not a declarative statement!). Internal tables have a single, statically-defined line type.
    Internal tables use the sequence of table fields according to the declaration for the hierarchy of the control leve l. The control level structure for internal tables is therefore static, and is independent of which criteria were used to sort the internal table.
    Extracts do not depend on the field sequence for control level processing: a re-sort or a completely different control level process can take place. The control level structure for extract datasets is therefore dynamic. It corresponds exactly to the sort key of the extract dataset. The sort key is the sequence of fields from the field group HEADER, and is used to sort the extract dataset.
    Extracts rely on the compiler to determine which combinations of group levels and a cumulating field the control level totals desire. The desired control level totals are determined by the processing of LOOP ... ENDLOOP blocks. Internal tables build the control level total with the SUM statement.
    This procedure leads to high resource depletion for totaling control levels in internal tables.
    Regards,
    Chandru

  • Display two heading in single column using ALV report

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

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

  • Building dynamic columns in BO Report (BO 4.0)

    Hi All
    To start with I am new to BO and using reporting tool
    I have a requirement to create a WEBI report which contain a table with a feature to hide / remove columns based on input selection. ( dynamic columns)
    I tried to do this by following concept
    In my test scenario table has 3 columns. user will select which columns to show when refreshing the report.
    I created 4 tables .
    table 1: column 1, column 2 and colum 3
    table 2: column 1, column 2
    table 3: column 1, column 3
    table 4: column 2, column 3
    all tables were overlapped in display.
    I am trying to hide the table using the property which is available in table properties "Hide when following formula is true"
    to display table 1: formula is as follows
    =UserResponse("Enter Column") = "column1;column2;column3"
    The problem doing this way is
    1. selection should happen in a given order
    2. If there are mulitple columns , it doesn't make sense to create multiple tables as combination of columns increases.
    Is there a better formula to set using user response to achieve the above.
    Is there any better way to achieve the above generally.
    any suggestion and guidance will be appreciated.
    Thanks.

    Hello Guruprasad,
    PFB link to a good explanation how to display columns dynamically.
    http://blog.davidg.com.au/2011/09/dynamic-measures-in-webi-on-any-data.html
    hide formula for different tables will not be easy when you have more number of columns.
    another option is conditional formatting of columns based on a variable value. ie, indirectly hiding it by making background and value color white and keeping dynamic width for column.
    Regards,
    Nikhil Joy

  • ABAP webdynpro :Creating column in alv report

    I have generated a dynamic alv report when ever unwanted columns appear i deleted column using IF_SALV_WD_COLUMN_SETTINGS~DELETE_COLUMN.
    some times I want to create columns in alv .
    how to do that ?code sample will be much usefull.

    Hi,
    the same interface you used to delete has the create_column method.
    IF_SALV_WD_COLUMN_SETTINGS~CREATE_COLUMN( id = 'id of the column' ).
    " create the cell_editor.
    data:
    lr_text type ref to cl_salv_wd_uie_text_view.
    create object lr_text.
    lr_text->set_text_fieldname( ls_fields-fieldname ).
    lr_column->set_cell_editor( lr_text ).

  • How to develop variable column in alv report

    Hi all,
    I want to develop a alv report where the column will be variable and created in runtime as per data.Is it possible in SAP ALV grid display?If possible tell me how I develop such type of report.
    For example
    MATERIAL                BATCH                   QTY
    M1                              B1                         Q1
    M1                              B2                         Q2
    M1                              B3                         Q3
    M2                              B4                         Q1
    This is normal display. I want the following
    MATERIAL                 BATCH1               BATCH2             BATCH3        BATCH4
    M1                             Q1                        Q2                      Q3                  --                     
    M2                             ---                         --                        --                   Q4
    Please advise and provide your valuable suggestion.
    Thanks & Regards
             Nirmal

    Hi Frn
       The Below code will Create the dyanmic internal table ....what you need to do is only pass this internal table and field catalog to Function module "Reuse_alv_display" .
    REPORT  zhrrt_retention.
    TYPE-POOLS : abap.
    TABLES: pa0001 , pa0003 .
    FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,<dyn_wa>,<dyn_field>.
    DATA: dy_table TYPE REF TO data,
          dy_line TYPE REF TO data .
    DATA : xfc TYPE lvc_s_fcat,
           ifc TYPE lvc_t_fcat.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-s11 .
    SELECT-OPTIONS:s_pernr FOR pa0003-pernr .
    SELECT-OPTIONS:s_orgeh FOR pa0001-orgeh .
    SELECT-OPTIONS:s_date  FOR sy-datum .
    SELECTION-SCREEN END OF BLOCK b1.
    DATA: BEGIN OF it_itab OCCURS 0 ,
           depid LIKE pa0001-orgeh ,
           pernr LIKE pa0003-pernr,
           subty LIKE pa9260-subty,
           date  LIKE sy-datum,
          END OF it_itab .
    DATA: BEGIN OF it_date OCCURS 0,
          date TYPE sy-datum ,
          len TYPE i,
          ty TYPE c,
          END OF it_date .
    SELECT a~orgeh
           b~pernr
           b~subty
           b~begda
    FROM pa0001 AS a INNER JOIN pa9260 AS b
    ON apernr = bpernr
    INTO TABLE it_itab
    WHERE a~orgeh IN s_orgeh AND
          a~pernr IN s_pernr AND
          b~begda IN s_date.
    WHILE s_date-low <= s_date-high.
      it_date-date = s_date-low .
      it_date-len = 8 .
      it_date-ty = 'c'.
      APPEND  it_date.
      s_date-low = s_date-low + 1.
    ENDWHILE.
    PERFORM get_structure.
    PERFORM create_dynamic_itab.
    PERFORM proc_data .
    FORM get_structure.
      DATA : idetails TYPE abap_compdescr_tab,
              xdetails TYPE abap_compdescr.
      xfc-fieldname = 'pernr' .  "  XDETAILS-NAME .
      xfc-datatype = 'c'.    "XDETAILS-TYPE_KIND.
      xfc-inttype = 'c'.    "XDETAILS-TYPE_KIND.
      xfc-intlen =  8 .     "XDETAILS-LENGTH.
      APPEND xfc TO ifc.
      xfc-fieldname = 'empname' .  "  XDETAILS-NAME .
      xfc-datatype = 'c'.    "XDETAILS-TYPE_KIND.
      xfc-inttype = 'c'.    "XDETAILS-TYPE_KIND.
      xfc-intlen =  30 .     "XDETAILS-LENGTH.
      APPEND xfc TO ifc.
      LOOP AT it_date .
        CLEAR xfc.
        xfc-fieldname = it_date-date .  "  XDETAILS-NAME .
        xfc-datatype = it_date-ty.    "XDETAILS-TYPE_KIND.
        xfc-inttype = it_date-ty.    "XDETAILS-TYPE_KIND.
        xfc-intlen =  it_date-len .     "XDETAILS-LENGTH.
        APPEND xfc TO ifc.
      ENDLOOP.
    ENDFORM.                    "get_structure
    FORM create_dynamic_itab.
    Create dynamic internal table and assign to FS
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = ifc
        IMPORTING
          ep_table        = dy_table.
      ASSIGN dy_table->* TO <dyn_table>.
    Create dynamic work area and assign to FS
      CREATE DATA dy_line LIKE LINE OF <dyn_table>.
      ASSIGN dy_line->* TO <dyn_wa>.
    ENDFORM.                    "create_dynamic_itab
    FORM proc_data .
      DATA: l_tabix TYPE sy-tabix .
      SORT it_itab BY depid .
      LOOP AT it_itab .
        READ TABLE it_date WITH KEY date =  it_itab-date .
        l_tabix = sy-tabix.
        IF sy-subrc = 0 .
          ASSIGN COMPONENT l_tabix OF STRUCTURE dy_table TO <dyn_field>.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " PROC_DATA
    Thanks and regards
    Priyank

  • Average of the column in ALV report

    Hi,
      I am working on an ALV report and for one of the column, i am calculating the average with fieldcatalog property do_sum = 'C'.
    I am sorting the output table for 2 fields and whenever I am expanding/compressing the sorted fields the average of the column is changing. Please let me know how do I get this average calculated constant. It should not change when the user collapses/expands on the sorted field.
    Regards
    Rashmi

    The same question has been asked in this thread:
    Compute average of a report column
    I have offered a solution but as I've said it's not great but it may meet your needs.
    Or another forum user may review and be able to suggest a better solution.
    Does the average need to be part of the report?
    Could you calculate it and display it within a page item below the report instead?

  • Extra columns in ALV report

    Hi there,
    I added a column to an existing alv report which uses method 'set_table_for_first_display' to display the output.
    The method is called via:
    grid1              TYPE REF TO cl_gui_alv_grid,
        CALL METHOD grid1->set_table_for_first_display
              EXPORTING
                        i_structure_name     = 'MAT_DATA'
                        is_layout            = lt_layout
                        is_variant           = lt_variant
                        i_default            = lt_default
                        i_save               = 'A'
                        it_toolbar_excluding = lt_exclude[]
               CHANGING it_outtab            = mat_data[]
                        it_fieldcatalog      = w_fieldcat[]
             EXCEPTIONS
                        program_error        = 1.
    The extra columns are in the field catalog and mat_data.
    The lt_variant-report field has the report name in it.
    When I run the report the new column does NOT appear.
    I cleared out the lt_variant-report value and now the new column DOES appear.
    Any idea why this is happening?
    Is there some way I can leave the report name in there and see the new columns?
    Thanks.

    thanks.
    no_out is initial.
    But, in this case, I am not passing any variant.
    It works if I don't pass the report name in the
    is_variant-report
    field.The columns will not display if I pass the report name.

  • Dynamic Columns in BI Report

    Hi,
    In my report i have dynamic columns and i am achieving this using <?split-column-header:header?> , <?split-column-data:variable?>
    I need to define width for the dynamically created columns.
    How do i achieve this.
    i have seen <?split-column-width:name?>,<?split-column-width:@width?>
    I tried <?split-column-header:header?><?split-column-width:@200pt?><?heading?><?end split-column-data?> but didn't succeed.
    Please advice.
    Regards
    Jeethi George

    Hi User
    Try this link
    Dynamic columns in OBIEE

Maybe you are looking for

  • How to create repository using a view in OBIEE

    Hi, Can any one explain the procedure how to create a repository using a view. For example test_v select a.col1,a.col2,b.col1,b.col4,c.col5,c.col6 from table a,table b, table c where a.col1= b.col1 and b.col1 = c.col1 1. Assuming that i have imported

  • How do I send invite to same person on different mails

    Hi, I need to send out invitations for an event. I add people in calendar through "Invitees". Problem is that I need to invite some people twice or three times using different addresses i.e. [email protected] + [email protected] + [email protected] A

  • Customizing FLVPlayback version 2.5 in Flex

    I am using the new FLVPlayback version 2.5 in a Flex Builder 3 Actionscript project. The application streams flv and mpv from a cdn. The FLVPlayback version 2.5 ships with an all inclusive compiled swf skins but this is not usable for custom players.

  • Multiple Monitor, change number!

    My windows recognize my displays wrong. My monitor is the "projector" (2) and my tv is my "monitor" (1). Anyone knows a way to change it? I have tried swap the cables, swap the hdmi entrance, nothing works. Currently using a ATI graphic card, so the

  • Sql Query Plan with ROWNUM

    Oracle 10g: I have a table with index, when I run that query on that index it's fine. I get into problem if I add ROWNUM in that query, query slows down from 1 sec to 30 sec. I don't know why. for eg: select * from (select * from A where b = 1) where