Serial No. in ALV

Hi Friends,
I want to add one Column as Serial No. in ALV Report as 1,2,3,4,....No. of Rows in ALV Report.
Can anybody Suggest me how to do.
Regards.
Kamal

Hi Kamal,
To add a column in a report first add 1 field in your existing internal table ,i.e
data : begin of itab  occurs 0,
            <include structure>,
            ws_row type i,  -
> Adding a Column as serial No. in ALV Report
         end of itab.
Build the fieldcatalog for that field also
clear line_fieldcat.
  line_fieldcat-fieldname = 'ws_row'.
  line_fieldcat-tabname = 'itab'.
  line_fieldcat-seltext_m = 'Serial No.'.
append line_fieldcat to i_fieldcat.
After retrieving the data from data base table , loop that itab and add no. of column like
   loop at itab.
    itab-ws_row = sy-tabix.
    modify itab.
   endloop.

Similar Messages

  • Serial no in alv grid

    hi all,
    Is there any  system field to get the srial no  to have in the aoutput.And i need to get this in this in the alv grid.
    pls help me anybody.
    regards,
    Sri.

    Serial Numbers in ALV
    Reward points..

  • Serial No in ALV list

    Hi everyone,
    i am gerarating a alv list which gisplays all the PO's that have been half delivered, but i need to add a serial no col for this list, so that if i sort the list on any of the fields the serial no should be intact,
    plz help,
    Shri Hari

    Hi Sri Hari,
    I think the earlier logic works fine . If the alv is implemented with Object Oriented concept then this example will be helpful.The user command can be handled before SAP handles it in the event before_user_command of cl_gui_alv_grid and after handling the event you can avoid further processing. I have done the same for the copy of standard program ERGP2020 and handled it .Here I did not go for any custom buttons but handled the standard SAP provided buttons.
    And here is the code.......
    REPORT ztest LINE-SIZE 90 NO STANDARD PAGE HEADING.
    DATA :
    t_column TYPE lvc_t_col,
    fs_column TYPE lvc_s_col.
    DATA: txt_report LIKE dokhl-object.   "Reportname für Erläuterungsaufruf
    DATA: BEGIN OF mylist OCCURS 20,       " Internal table for preparing
            sno(4)       TYPE n,
            zuordnung(8) TYPE c,                                " the list
            belegnr(10) TYPE c,
            ba(2) TYPE c,
            bldatum TYPE d,
            bs(2) TYPE c,
            s(4) TYPE c VALUE ' ',
            wrg(4) TYPE c,
            betrag TYPE p DECIMALS 2,
          END OF mylist.
    DATA: ok_code LIKE sy-ucomm,
          g_container TYPE scrfname VALUE 'LIBS_GRID_CONTROL_CONTAINER',
          grid TYPE REF TO cl_gui_alv_grid,
          g_custom_container TYPE REF TO cl_gui_custom_container.
    DATA: gt_fieldcatalog TYPE lvc_t_fcat,
          gs_layout   TYPE lvc_s_layo.
    DATA: seed1 TYPE i VALUE '123',                  " Rand number seed 1
          seed2 TYPE i VALUE '2345',                 " Rand number seed 2
          seed3 TYPE i VALUE '23'.                   " Rand number seed 3
          CLASS cls_event_handler DEFINITION
    CLASS cls_event_handler DEFINITION.
      PUBLIC SECTION .
        METHODS :
          handle_before_user_command FOR EVENT before_user_command OF
        cl_gui_alv_grid IMPORTING e_ucomm.
    ENDCLASS.                    "cls_event_handler DEFINITION
          CLASS cls_event_handler IMPLEMENTATION
    CLASS cls_event_handler IMPLEMENTATION.
      METHOD handle_before_user_command.
        IF e_ucomm EQ '&SORT_ASC' OR e_ucomm EQ '&SORT_DSC'.
          CALL METHOD grid->get_selected_columns
            IMPORTING
              et_index_columns = t_column.
          IF sy-subrc EQ 0.
            IF t_column[] IS INITIAL.
              MESSAGE 'Select one column' TYPE 'I'.
            ENDIF.
            READ TABLE t_column INDEX 1 INTO fs_column.
            IF sy-subrc EQ 0.
              IF e_ucomm EQ '&SORT_ASC'.
                SORT mylist BY (fs_column-fieldname).
              else.
                SORT mylist BY (fs_column-fieldname) descending.
              ENDIF.
              LOOP AT mylist INTO mylist.
                MOVE sy-tabix TO mylist-sno.
                MODIFY mylist FROM mylist.
              ENDLOOP.
              CALL METHOD grid->refresh_table_display
                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.
              CALL METHOD grid->set_table_for_first_display
                EXPORTING
                  is_layout                     = gs_layout
                CHANGING
                  it_outtab                     = mylist[]
                  it_fieldcatalog               = gt_fieldcatalog
                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.
            ENDIF.
          ENDIF.
          CALL METHOD grid->set_user_command
            EXPORTING
              i_ucomm = space.
        ENDIF.
      ENDMETHOD.                    "handle_before_user_command
    ENDCLASS.                    "cls_event_handler IMPLEMENTATION
    Main Program *******************************
    START-OF-SELECTION.
      PERFORM fill_itab.
      PERFORM fieldcatalog_init USING gt_fieldcatalog[].
      PERFORM layout_init USING gs_layout.
      PERFORM main.
    Form Routines ******************************
          FORM MAIN                                                     *
          Main output routine                                           *
    FORM main.
      CALL SCREEN 100.
    ENDFORM.                    "main
          MODULE PBO OUTPUT                                             *
    MODULE pbo OUTPUT.
      SET PF-STATUS 'MAIN1'.
      SET TITLEBAR 'MAIN100'.
      IF g_custom_container IS INITIAL.
        CREATE OBJECT g_custom_container
               EXPORTING container_name = g_container.
        CREATE OBJECT grid
               EXPORTING i_parent = g_custom_container.
        DATA :
          obj_event TYPE REF TO cls_event_handler.
        CREATE OBJECT obj_event.
        SET HANDLER obj_event->handle_before_user_command FOR grid.
        CALL METHOD grid->set_table_for_first_display
          EXPORTING
            is_layout                     = gs_layout
          CHANGING
            it_outtab                     = mylist[]
            it_fieldcatalog               = gt_fieldcatalog
          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.
      ENDIF.
    ENDMODULE.                    "pbo OUTPUT
          MODULE PAI INPUT                                              *
    MODULE pai INPUT.
      to react on oi_custom_events:
      CALL METHOD cl_gui_cfw=>dispatch.
      CASE ok_code.
        WHEN '&F03' OR '&F15' OR '&F12'.
          PERFORM exit_program.
        WHEN 'ERLE'.
          txt_report = 'ERGP2020'.
          CALL FUNCTION 'ERGO_TEXT_SHOW'
            EXPORTING
              textname = txt_report
              id       = 'RE'
              langu    = sy-langu.
        WHEN OTHERS.
        do nothing
      ENDCASE.
      CLEAR ok_code.
    ENDMODULE.                    "pai INPUT
          FORM EXIT_PROGRAM                                             *
    FORM exit_program.
      LEAVE PROGRAM.
    ENDFORM.                    "exit_program
          FORM FILL_ITAB                                                *
          Fills the internal table for the list output                  *
    FORM fill_itab.
      DATA: ran TYPE f,
            rani TYPE i,
            ranp TYPE p DECIMALS 2,
            belnr TYPE i VALUE 1600000040,
            date TYPE d.
      date = '19920417'.
      DO 18 TIMES.
        MOVE '19920316' TO mylist-zuordnung.
        ADD 1 TO belnr.
        MOVE belnr TO mylist-belegnr.
        MOVE 'DA' TO mylist-ba.
        PERFORM random(ergphelp) USING seed1 seed2 seed3 ran.
        rani = 10 * ran.
        IF rani > 7.
          ADD 1 TO date.
        ENDIF.
        MOVE date TO mylist-bldatum.
        MOVE '01' TO mylist-bs.
        PERFORM random(ergphelp) USING seed1 seed2 seed3 ran.
        rani = 10 * ran.
        IF rani > 7.
          MOVE text-w10 TO mylist-wrg.                          "USD
        ELSE.
          MOVE text-w20 TO mylist-wrg.                          "DM
        ENDIF.
        PERFORM random(ergphelp) USING seed1 seed2 seed3 ran.
        ranp = 1000000 * ran.
        IF mylist-wrg = text-w10.
          ranp = ranp / 2.
        ENDIF.
        MOVE ranp TO mylist-betrag.
        MOVE sy-index TO mylist-sno.
        APPEND mylist.
      ENDDO.
    ENDFORM.                    "fill_itab
          FORM FIELDCAT_INIT
    FORM fieldcatalog_init USING lt_fieldcatalog TYPE lvc_t_fcat.
      DATA: ls_fieldcatalog TYPE lvc_s_fcat.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname = 'SNO'.
      ls_fieldcatalog-datatype  = 'N'.
      ls_fieldcatalog-reptext   = text-u99.
      ls_fieldcatalog-coltext  = text-u99.
      ls_fieldcatalog-seltext  = text-u99.
      ls_fieldcatalog-tooltip  = text-u99.
      ls_fieldcatalog-key      = 'X'.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname = 'ZUORDNUNG'.
      ls_fieldcatalog-datatype  = 'C'.
      ls_fieldcatalog-reptext   = text-u10.
      ls_fieldcatalog-coltext  = text-u10.
      ls_fieldcatalog-seltext  = text-u10.
      ls_fieldcatalog-tooltip  = text-u10.
      ls_fieldcatalog-key      = 'X'.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname = 'BELEGNR'.
      ls_fieldcatalog-datatype  = 'C'.
      ls_fieldcatalog-reptext   = text-u20.
      ls_fieldcatalog-coltext   = text-u20.
      ls_fieldcatalog-seltext  = text-u20.
      ls_fieldcatalog-tooltip  = text-u20.
      ls_fieldcatalog-key      = 'X'.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname    = 'BA'.
      ls_fieldcatalog-datatype  = 'C'.
      ls_fieldcatalog-reptext   = text-u30.
      ls_fieldcatalog-coltext   = text-u30.
      ls_fieldcatalog-seltext  = text-u30.
      ls_fieldcatalog-tooltip = text-u30.
      APPEND  ls_fieldcatalog TO lt_fieldcatalog.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname    = 'BLDATUM'.
      ls_fieldcatalog-datatype  = 'DATS'.
      ls_fieldcatalog-reptext   = text-u40.
      ls_fieldcatalog-coltext   = text-u40.
      ls_fieldcatalog-seltext  = text-u40.
      ls_fieldcatalog-tooltip  = text-u40.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname    = 'BS'.
      ls_fieldcatalog-datatype  = 'C'.
      ls_fieldcatalog-reptext   = text-u50.
      ls_fieldcatalog-coltext   = text-u50.
      ls_fieldcatalog-seltext = text-u50.
      ls_fieldcatalog-tooltip  = text-u50.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname    = 'S'.
      ls_fieldcatalog-datatype  = 'C'.
      ls_fieldcatalog-reptext   = text-u60.
      ls_fieldcatalog-coltext  = text-u60.
      ls_fieldcatalog-seltext = text-u60.
      ls_fieldcatalog-tooltip  = text-u60.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname    = 'WRG'.
      ls_fieldcatalog-datatype  = 'C'.
      ls_fieldcatalog-reptext  = text-u70.
      ls_fieldcatalog-coltext  = text-u70.
      ls_fieldcatalog-seltext  = text-u70.
      ls_fieldcatalog-tooltip = text-u70.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname     = 'BETRAG'.
      ls_fieldcatalog-datatype      = 'CURR'.
      ls_fieldcatalog-outputlen      = '15'.
      ls_fieldcatalog-reptext     = text-u80.
      ls_fieldcatalog-coltext      = text-u80.
      ls_fieldcatalog-seltext      = text-u80.
      ls_fieldcatalog-tooltip  = text-u80.
      ls_fieldcatalog-cfieldname = 'WRG'.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
      CLEAR ls_fieldcatalog.
    ENDFORM.                    "fieldcatalog_init
          FORM layout_init                                              *
    -->  LS_LAYOUT                                                     *
    FORM layout_init USING ls_layout TYPE lvc_s_layo.
    ls_layout-no_toolbar = 'X'.
      ls_layout-zebra = 'X'.
    ENDFORM.                    "layout_init

  • Serial Number in ALV list

    Hi...
    How do we give Serial numbers to the records displayed in an ALV list? I can create a column(Sr. No) in the internal table, but this wont work if the user sorts the list.
    Regards,
    Anoop

    hi.
    you can try this out..
    the statment WA_A2-SELTEXT_L = 'S_NO' is necessary for display of the numbers in the column in alv..
    for example..
    WA_A2-COL_POS = 1.
    WA_A2-FIELDNAME = 'S_NO'.
    <b>WA_A2-SELTEXT_L = 'S_NO'.</b>WA_A2-TABNAME = 'IT_A1'.
    WA_A2-HOTSPOT = 'X'.
    APPEND WA_A2 TO IT_A2.
    CLEAR WA_A2.

  • SERIAL number in ALV

    Hi experts,
    iam doing alv report. iam having sl.no. filed in the internal table.
    for output depending on different options, it is not showing the sl.no. in proper order.
    for each input or requirement it is taking the same sl.no. series and the output is correct we r getting but sl.no order is not correct.
    ex:option 1.
    output:
    sl.no.
    1
    2
    3......
    ex:option 2. (according to option this values only we require but, the serial number should be 1,2,3, in this order)
    output:
    sl.no.
    12
    21
    32
    33....
    right answers can be rewarded......................
    Message was edited by:
            dasr r

    actually..........
    if i go for normal reporting......
    if i do not give procurement type e or f............it will fetch all the records belong to
    e and f. sl.no coming is 1,2,....................100...............correct iam getting.
    if i give procurement type e or f............it will fetch some records which belongs to e or f     that records only it will fetch but the sl.no. sequence is notlike 1,2,3,..........100. it is giving 1,3,5,6, ...........50.

  • Serial no in ALV Report

    HI,
      I Want to display Sno in output .
    like :  1       Name
             2
             3
             4
       Please give me solution

    hi,
        i followed same .it caluclating proparely.but it is giving dump in fieldcatlog .
    see here
    *ADD 1 TO COL_POS                                .
    FIELDCAT-COL_POS    = COL_POS                 .
    FIELDCAT-FIELDNAME  = 'SNo'                   .
    FIELDCAT-TABNAME    = 'FIELDCAT'              .
    FIELDCAT-SELTEXT_L  = 'SNo'                   .
    FIELDCAT-FIX_COLUMN = 'X'                     .
    FIELDCAT-OUTPUTLEN  = 'X'                     .
    APPEND FIELDCAT                               .
    CLEAR  FIELDCAT                               .

  • Alv numbering and grid for line selection

    friends,
        how to give serial numbering in alv...the scenario is if the data is coming for the same item, then the serial no. should not get incremented..the serial no. has to change only when a particular item changes..then, how to give a grid or a box so that any particular line can be selected? thanks all..

    HI,
    for numbering you have to control it in program using looping.
    some thing like that.
    LOOP.
    at new item.
    endat.
    ENDLOOP.
    for line selection check the following code, line in bold should be noted.
    REPORT ZWA_ALV_SELECT_LINE_ITEM .
    TYPE-POOLS : slis.
    *-------------- Data
    DATA : BEGIN OF itab OCCURS 0.
            INCLUDE STRUCTURE t001.
    DATA : flag tyPE c,
    END OF itab.
    *DATA: itab like t001 occurs 0 with header line.
    DATA : alvfc TYPE slis_t_fieldcat_alv.
    DATA : alvly TYPE slis_layout_alv.
    data v_repid like sy-repid.
    *--------- Select Data
    v_repid = sy-repid.
    SELECT * FROM t001 INTO TABLE itab.
    *------- Field Catalogue
    call function 'REUSE_ALV_FIELDCATALOG_MERGE'
    exporting
    i_program_name = v_repid
    i_internal_tabname = 'ITAB'
    * I_STRUCTURE_NAME =
    * I_CLIENT_NEVER_DISPLAY = 'X'
    i_inclname = v_repid
    * I_BYPASSING_BUFFER =
    * I_BUFFER_ACTIVE =
    changing
    ct_fieldcat = alvfc[] .
    *---------------Display
    <b>alvly-box_fieldname = 'FLAG'.</b>
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
              it_fieldcat             = alvfc[]
              i_callback_program      = v_repid  "<-------Important
              i_callback_user_command =
                 'ITAB_USER_COMMAND' "<------ Important
              is_layout               = alvly
         TABLES
              t_outtab                = itab
         EXCEPTIONS
              program_error           = 1
              OTHERS                  = 2.
    * CALL BACK FORM
    FORM itab_user_command USING whatcomm TYPE sy-ucomm whatrow TYPE
    slis_selfield.
    *--------- IMPORTANT.
      data : m(100) type c.
      m = whatrow-tabindex.
      condense m.
      concatenate 'Row Number is ' m into m separated by space.
    concatenate m ' : Field Clicked is ' whatrow-fieldname into m separated
      by space.
      message i000(su) with m.
    ENDFORM. "ITAB_user_command
    REgards,

  • How to add a column in alv grid report to show the serial no.

    i need to add column to show the row no. of the report say as :
    1
    2
    3
    this has to be the first column
    how to maintain a variable for this and how to use it??
    please help

    one simple way is in your final itab declare a slno type i field
    data : begin of itab occurs 0,
    slno type i,
    <other fields>
    end of itab.
    after filling the data in itab.
    loop at itab.
    itab-slno = sy-tabix.
    modify itab.
    endloop.
    in fieldcatalog also you have to define that slno field as the first column.
    but it will change its order if you are sorting the output or filtering the output.
    regards
    shiba dutta

  • Regarding upload from excel to alv.

    Hi
    here is my code:
    TABLES
    TABLES: ioheader,        " IOC Communication structure
            ioitem,          " IOC Communication structure
            klah,            " Class and Class type
            ksml,            " Characteristic Keys for Class and Type
            cabn,            " Characteristics
            cabnt,           " Characteristic Descriptions
            vbap,            " SAles details
            sscrfields.
    Includes
    INCLUDE rvreuse_global_data.  " ALV Types etc
    DATA - INTERNAL TABLES AND FIELD LISTS
    Types
    TYPE-POOLS: ibco2.           " Characteristic types
    DATA - CONSTANTS
    CONSTANTS: c_true(1)    TYPE c             VALUE 'X',
               c_false(1)   TYPE c             VALUE ' ',
               c_zioheader  TYPE dd02l-tabname VALUE 'ZIOHEADER',
               c_command    TYPE slis_formname VALUE 'USER_COMMAND',
               c_backhoe(7) TYPE c             VALUE 'BACKHOE',
               c_300(3)     TYPE c             VALUE '300',
               c_no_data(7) TYPE c             VALUE 'No Data',
               c_save(1)    TYPE c             VALUE 'A'.
    Internal Tables
    Main IO Table
    DATA: i_header LIKE zioheader OCCURS 0 WITH HEADER LINE.
    Characteristic Values
    DATA: i_config TYPE ibco2_instance_tab2.
    Characteristics Keys
    DATA: BEGIN OF i_imerk OCCURS 0,
            imerk LIKE ksml-imerk,
          END OF i_imerk.
    ALV Grid Control
    DATA: i_grid TYPE sd_alv.
    Catalogues
    DATA: wa_cat LIKE LINE OF i_grid-fieldcat.
    Structures
    Structure for layout variant
    DATA: s_variant LIKE disvariant.
    DATA : filename TYPE string.
    DATA - WORKING VARIABLES
    DATA - FIELD GROUPS
    *field-groups:
    SELECTION SCREEN
    Variant control
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t02.
    PARAMETERS: p_var LIKE disvariant-variant.
    SELECTION-SCREEN END OF BLOCK b1.
    Printer Control
    SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03.
    PARAMETERS: rad1 RADIOBUTTON GROUP rad USER-COMMAND radio,
                rad2 RADIOBUTTON GROUP rad,
                rad3 RADIOBUTTON GROUP rad.
    PARAMETER p_floc(128) DEFAULT '/usr/tmp/testfile.dat'
                             LOWER CASE.
    SELECTION-SCREEN END OF BLOCK b3.
    MAIN PROGRAM *************************
    INITIALIZATION.
      PERFORM initialise.             " Set up program defaults
    move 'Report Only' to rad1.
    move 'Export Sequence List' to s_but2.
    move 'Import Sequence List' to S_but3.
    Selection Screen Options
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_var.
      PERFORM get_variant CHANGING p_var.             " ALV Layout
    DATA :   l_no_of_lines TYPE i,
              la_matnr LIKE s_matnr.
    DESCRIBE TABLE s_matnr LINES l_no_of_lines.
    IF l_no_of_lines > 1.
       MESSAGE e000(z1) WITH 'Enter only one product'.
    ENDIF.
    READ TABLE s_matnr INTO la_matnr WITH KEY sign = 'I'
                               option = 'EQ'.
    IF sy-subrc NE 0.
       MESSAGE e000(z1) WITH 'Enter only one product'.
    ENDIF.
    AT SELECTION-SCREEN.
      DATA :   l_no_of_lines TYPE i,
                la_matnr LIKE s_matnr.
      DESCRIBE TABLE s_matnr LINES l_no_of_lines.
      IF l_no_of_lines > 1.
        MESSAGE e000(z1) WITH 'Enter only one product'.
      ENDIF.
    READ TABLE s_matnr INTO la_matnr WITH KEY sign = 'I'
                                option = 'EQ'.
      IF sy-subrc NE 0.
        MESSAGE e000(z1) WITH 'Enter only one product'.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR  p_floc.
    data : pname type syst-repid.
    CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
       PROGRAM_NAME        = pname
       DYNPRO_NUMBER       = SYST-DYNNR
       FIELD_NAME          = 'P_FLOC'
      STATIC              = ' '
      MASK                = ' '
      CHANGING
        FILE_NAME           = p_floc
    EXCEPTIONS
      MASK_TOO_LONG       = 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.
    START-OF-SELECTION.
      PERFORM set_catalogue.          " Set up basic headings from Itab
      PERFORM get_char_keys.          " Get the characteristic keys
      PERFORM modify_catalogue_key.   " Amend headings for char keys
    IOC Logical Database Event
      GET ioheader.
      PERFORM get_subsequent_data.    " Retrieve additional data
    END-OF-SELECTION.
    PERFORM modify_catalogue_title. " Place correct titles for AVL
    PERFORM alv_display.            " Display in ALV Grid
    if rad1 = 'X' .
      PERFORM modify_catalogue_title. " Place correct titles for AVL
      PERFORM alv_display.            " Display in ALV Grid
    elseif rad2 = 'X' .
    *if p_floc is initial .
    MESSAGE e000(z1) WITH
       ' Enter the file location'.
    *else.
       PERFORM download.               " Export sequence list to excel
    PERFORM modify_catalogue_title. " Place correct titles for AVL
      PERFORM alv_display.            " Display in ALV Grid
    *endif.
    elseif rad3 = 'X' .
    if p_floc is initial .
    MESSAGE e000(z1) WITH
        ' Enter the file location'.
    else .
         PERFORM upload.
    endif.
    endif.
    *AT SELECTION-SCREEN OUTPUT.
    *TOP-OF-PAGE.
    *END-OF-PAGE.
    *AT USER-COMMAND.
    perform PF_STATUS_SET.
    SUBROUTINES *******************************
          FORM get_variant                                              *
          Retrieve ALV display variant                                  *
    -->  X_VAR Variant                                                 *
    FORM get_variant CHANGING x_var.
      PERFORM f4_alv_layout(ppio_entry) USING i_grid-program
                                     CHANGING x_var.
    ENDFORM.
          FORM get_subsequent_data                                      *
          Retrieve additional data and place into I_HEADER Itab         *
    FORM get_subsequent_data.
    Prime extended table
      i_header = ioheader.
      PERFORM get_serial_number. " Get Sales Order Serial No
      PERFORM get_char_values.   " Get Characteristic Values
      PERFORM build_char_entries." Put Char Values into I_HEADER
    Add to extended table
      APPEND i_header.
    ENDFORM.
          FORM get_serial_number                                        *
          Retrieve the serial number                                    *
    FORM get_serial_number.
      SELECT SINGLE zuonr submi
        INTO (i_header-zuonr,i_header-submi)
        FROM vbak
       WHERE vbeln EQ i_header-kdauf_aufk.
    ENDFORM.
          FORM get_char_values                                          *
          Retrieve the characteristic values for the production order   *
    FORM get_char_values.
    Get Ready
      REFRESH i_config.
    Get Object key
      SELECT SINGLE cuobj
      FROM vbap
      INTO vbap-cuobj
      WHERE vbeln EQ i_header-kdauf_aufk
        AND matnr EQ i_header-plnbez.
    Get characteristic config values
      CALL FUNCTION 'CUCB_GET_CONFIGURATION'
           EXPORTING
                instance                     = vbap-cuobj
           IMPORTING
                configuration                = i_config
           EXCEPTIONS
                invalid_input                = 1
                invalid_instance             = 2
                instance_is_a_classification = 3
                OTHERS                       = 4.
    Not found, no config values will be pulled through
      IF sy-subrc <> 0.
      ENDIF.
    ENDFORM.
          FORM build_char_entries                                       *
          For each character value. Find the relevent "slot" in the     *
          table by checking the characteristic key against the catalogue*
          stored key
    FORM build_char_entries.
      DATA: la_config LIKE LINE OF i_config,       " i_config header line
            li_values TYPE ibvalue0 OCCURS 0,      " Charact'ic Values Itab
            la_values LIKE LINE OF li_values,      " li_values header line
            l_atwrt LIKE la_values-atwrt,          " Characteristic Value
            l_atinn LIKE la_values-atinn,          " Characteristic Key
            l_key(20),                             " Working built key
            l_entry(20),                           " FieldName to be updated
            l_len LIKE sy-tabix,                   " Length of string
            l_tabix LIKE sy-tabix.                 " Index position of Itab
      FIELD-SYMBOLS: <f_field>.       " This will be the field to update
    Loop on characteristics
      LOOP AT i_config INTO la_config.
    Extract the characteristic values imbedded table
        MOVE la_config-values TO li_values.
    Loop on the characteristics values
        LOOP AT li_values INTO la_values.
    We now have the charecteristic key la_values-atinn
    and the value in la_values-atwrt. However, there may be
    Multiple values for key la_values-atinn
    So if they are the same append to one long string.
    Is it a new value
          IF la_values-atinn EQ l_atinn.
            CONCATENATE l_atwrt '|' la_values-atwrt INTO l_atwrt.
            CONTINUE.
          ENDIF.
    New Value (and not first pass) so save built values
          IF NOT l_atinn IS INITIAL.
    Find the correct field to place the value in.
    This is done by finding the Itab field description in the AVL display
    field Catalogue called "No Data|nnnnnn" where nnnn is the
    characteristic Key
    Build the key
            CONCATENATE c_no_data '|' l_atinn INTO l_key.
    Loop till we find it. This gives us the field name
            LOOP AT i_grid-fieldcat INTO wa_cat WHERE seltext_l = l_key.
    Set up the field name to be amended
              CONCATENATE wa_cat-tabname '-' wa_cat-fieldname INTO l_entry.
              ASSIGN (l_entry) TO <f_field>.
    Update field with the Char value
              MOVE l_atwrt TO <f_field>.
    No need to continue this loop
              EXIT.
            ENDLOOP.
          ENDIF.
    Prime for next value
          l_atinn = la_values-atinn.
          l_atwrt = la_values-atwrt.
        ENDLOOP.
      ENDLOOP.
    ENDFORM.
          FORM alv_display                                              *
          Display data in ALV grid                                      *
    FORM alv_display.
    Set up Variant
      i_grid-variant-variant = p_var.     " Variant
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
        i_callback_program             = i_grid-program
       I_CALLBACK_PF_STATUS_SET       =  i_grid-pf_status_set
        i_callback_user_command        = i_grid-user_command
      i_structure_name               = i_grid-structure
      is_layout                      = i_grid-layout
        it_fieldcat                    = i_grid-fieldcat
      IT_EXCLUDING                   = i_grid-excluding
      IT_SPECIAL_GROUPS              = i_grid-special_groups
      IT_SORT                        = i_grid-sort
      IT_FILTER                      = i_grid-filter
      IS_SEL_HIDE                    = i_grid-sel_hide
      I_DEFAULT                      = i_grid-default
        i_save                         = I_grid-save
        is_variant                     = i_grid-variant
      IT_EVENTS                      = i_grid-events
      IT_EVENT_EXIT                  = i_grid-event_exit
      IS_PRINT                       = i_grid-print
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = i_grid-start_column
      I_SCREEN_START_LINE            = i_grid-start_line
      I_SCREEN_END_COLUMN            = i_grid-end_column
      I_SCREEN_END_LINE              = i_grid-end_line
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        = i_grid-exit
      ES_EXIT_CAUSED_BY_USER         = i_grid-user_exit
        TABLES
         t_outtab                      = i_header
       EXCEPTIONS
        program_error                  = 1
        OTHERS                         = 2.
    ALV Failed.
      IF sy-subrc <> 0.
        WRITE: / 'Failed with',sy-subrc.
      ENDIF.
    ENDFORM.
          FORM initialise                                               *
          Set up basic report details                                   *
    FORM initialise.
    ALV controls
      i_grid-program = sy-repid.          " Program Name
      i_grid-user_command = c_command.    " ALV user FORM
      i_grid-save = c_save.               " Save Options
    ALV Variant Details for saved report layouts
      i_grid-variant-report = i_grid-program.
      i_grid-variant-username = sy-uname.
    ENDFORM.
          FORM user_command                                             *
          Routine called by ALV                                         *
    -->  X_UCOMM    Function selected                                  *
    -->  X_SELFIELD Selection field Itab                               *
    FORM user_command USING x_ucomm    LIKE sy-ucomm
                            x_selfield TYPE slis_selfield.
      DATA: l_answer(1).        " Answer returned from popup box
    Only allow drill down on Order number
      CHECK x_selfield-fieldname = 'AUFNR'.
    Get option for display or modify
      CALL FUNCTION 'POPUP_TO_DECIDE'
           EXPORTING
                textline1    = 'Please Choose'
                text_option1 = 'Display'
                text_option2 = 'Modify'
                titel        = 'Production Order'
           IMPORTING
                answer       = l_answer.
    Did they cancel
      CHECK l_answer NE 'A'.
    Set up parameters.
      SET PARAMETER ID 'ANR' FIELD x_selfield-value.
    Display
      IF l_answer = '1'.
        CALL TRANSACTION 'CO03' AND SKIP FIRST SCREEN.
    Modify
      ELSEIF l_answer = '2'.
        CALL TRANSACTION 'CO02' AND SKIP FIRST SCREEN.
      ENDIF.
    *IF rad2 = 'X'.
    If sy-ucomm ='%PC'.
    IF sy-subrc <> 0.
        WRITE: / 'Failed with',sy-subrc.
      else.
      CALL FUNCTION 'POPUP_TO_INFORM'
        EXPORTING
          TITEL         = 'File Transfer Status'
          TXT1          = 'File transfered to location:'
          TXT2          = filename
        TXT3          = ' '
        TXT4          = ' '
        ENDIF.
    endif.
    ENDFORM.
          FORM set_catalogue                                            *
          Retrieve the title and field information from the             *
          Data Dictionary. This will then be amended to the correct     *
          Characteristic titles during the end-of-selection event       *
    FORM set_catalogue.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                i_program_name         = i_grid-program
                i_internal_tabname     = 'I_HEADER'
                i_structure_name       = c_zioheader
                i_client_never_display = 'X'
           CHANGING
                ct_fieldcat            = i_grid-fieldcat.
    ENDFORM.
          FORM get_char_keys                                            *
          Retrieve the list of characteristic keys                      *
          template of BACKHOE class 300                                 *
    FORM get_char_keys.
      DATA : la_inob TYPE inob.
      SELECT SINGLE * FROM inob INTO la_inob
                     WHERE objek = s_matnr-low.
      IF sy-subrc NE 0.
        MESSAGE e000(z1) WITH
        ' Could not get INOB table for ' s_matnr-low.
      ENDIF.
    Get Major Object key
      SELECT SINGLE clint
        FROM klah
        INTO klah-clint
       WHERE klart = la_inob-klart
         AND class = s_matnr-low.
      IF sy-subrc NE 0.
        MESSAGE e001(z296) WITH c_backhoe c_300.
      ENDIF.
    Use Major key to retrieve Characteristics keys
    This is the template for the headings
      SELECT imerk
        FROM ksml
        INTO TABLE i_imerk
       WHERE clint EQ klah-clint    " Objct Key
         AND lkenz EQ space         " Delete Indicator
         AND datuv LE sy-datum.     " Validity to
      IF sy-subrc NE 0.
        MESSAGE e002(z296) WITH klah-clint.
      ENDIF.
    ENDFORM.
          FORM modify_catalogue_key                                     *
          Change the default "No Data" titles with the characteristic   *
          key values in the form "No Data|nnnnnnn" where nnnnnn is      *
          the characteristic key. This is used as a method of allocating*
          characteristic values to the I_HEADER Itab positions          *
          CHAR_001 to CHAR_100                                          *
    FORM modify_catalogue_key.
      DATA: l_index LIKE sy-tabix,              " Table Index for Read
            l_tabix LIKE sy-tabix,              " Table Index Position
            l_seltext_l LIKE dd03p-scrtext_l.   " Heading Text
    Get into Key Sequence
      SORT i_imerk.
    Loop on catalogue for dummy titles
      LOOP AT i_grid-fieldcat INTO wa_cat WHERE seltext_l(7) = c_no_data.
        l_tabix = sy-tabix.
    Get the next characteristic
        l_index = l_index + 1.
        READ TABLE i_imerk INDEX l_index.
    No Characteristic, No display
        IF sy-subrc NE 0.
          wa_cat-no_out = c_true.
          wa_cat-tech = c_true.
          MODIFY i_grid-fieldcat FROM wa_cat INDEX l_tabix.
          CONTINUE.
        ENDIF.
    Place the char key against the "No Data" title
    so that later we know what values to place against the keys
    the title will become "No Data:nnnnnnnnnn" (nnn = Key)
        CONCATENATE c_no_data '|' i_imerk-imerk INTO wa_cat-seltext_l.
        MODIFY i_grid-fieldcat FROM wa_cat INDEX l_tabix.
      ENDLOOP.
    ENDFORM.
          FORM modify_catalogue_title                                   *
          At this stage the catalogue titles for the characteristics    *
          are in the form "No Data|nnnnn" Where nnnn is the             *
          characteristic key. Using the Key, replace this text with     *
          the real characteristic title
    FORM modify_catalogue_title.
      DATA: l_key(20),                 " Characteristic Key in Alpha form
            l_len LIKE sy-tabix.       " Length of string
    Loop on the characteristic keys
      LOOP AT i_imerk.
    Get the real title
        SELECT SINGLE atbez
          FROM cabnt
          INTO cabnt-atbez
         WHERE atinn EQ i_imerk-imerk.
    Not found, leave alone
        CHECK sy-subrc EQ 0.
    Place key into char form for comparison in loop
        l_key = i_imerk-imerk.
    Now loop on the catalogue to get the key
        LOOP AT i_grid-fieldcat INTO wa_cat WHERE seltext_l+8 = l_key.
    Place the title into the catalogue
          wa_cat-seltext_l = cabnt-atbez.
          wa_cat-seltext_m = cabnt-atbez.
          wa_cat-seltext_s = cabnt-atbez.
          wa_cat-reptext_ddic = cabnt-atbez.
    And update
          MODIFY i_grid-fieldcat FROM wa_cat.
        ENDLOOP.
      ENDLOOP.
    IF rad2 = 'X'.
    LOOP AT i_grid-fieldcat INTO wa_cat.
    *IF wa_cat-fieldname = 'AUFNR'.
    *wa_cat-col_pos = '10'.
    *endif.
    case wa_cat-fieldname.
    when 'AUFNR'.
    wa_cat-fix_column = 'X'.
    when 'CY_SEQNR'.
    wa_cat-fix_column = 'X'.
    when 'ZOUNR'.
    wa_cat-fix_column = 'X'.
    when 'GLTRP'.
    wa_cat-fix_column = 'X'.
    when 'SUBMI'.
    wa_cat-fix_column = 'X'.
    endcase.
    modify  i_grid-fieldcat FROM wa_cat.
    endloop.
    endif.
    ENDFORM.
    *SELECT z099seqno z099heading
          INTO table i_header
          FROM z099 join z100 ON
          z099seqno = z100seqno WHERE
    z100~product = s_matnr.
    *&      Form  download
          Download file to excel
    *FORM download.
    *filename = p_floc .
    *CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      BIN_FILESIZE                  =
       FILENAME                      = filename
       FILETYPE                      = 'ASC'
       APPEND                        = 'X'
      WRITE_FIELD_SEPARATOR         = ','
      HEADER                        = 'l_seltext_l'
      TRUNC_TRAILING_BLANKS         = ' '
      WRITE_LF                      = 'X'
      COL_SELECT                    = ' '
      COL_SELECT_MASK               = ' '
      DAT_MODE                      = ' '
    IMPORTING
      FILELENGTH                    =
    TABLES
       DATA_TAB                      = i_header
    EXCEPTIONS
      FILE_WRITE_ERROR              = 1
      NO_BATCH                      = 2
      GUI_REFUSE_FILETRANSFER       = 3
      INVALID_TYPE                  = 4
      NO_AUTHORITY                  = 5
      UNKNOWN_ERROR                 = 6
      HEADER_NOT_ALLOWED            = 7
      SEPARATOR_NOT_ALLOWED         = 8
      FILESIZE_NOT_ALLOWED          = 9
      HEADER_TOO_LONG               = 10
      DP_ERROR_CREATE               = 11
      DP_ERROR_SEND                 = 12
      DP_ERROR_WRITE                = 13
      UNKNOWN_DP_ERROR              = 14
      ACCESS_DENIED                 = 15
      DP_OUT_OF_MEMORY              = 16
      DISK_FULL                     = 17
      DP_TIMEOUT                    = 18
      FILE_NOT_FOUND                = 19
      DATAPROVIDER_EXCEPTION        = 20
      CONTROL_FLUSH_ERROR           = 21
      OTHERS                        = 22
    IF sy-subrc <> 0.
       WRITE: / 'Failed with',sy-subrc.
    else.
    CALL FUNCTION 'POPUP_TO_INFORM'
       EXPORTING
         TITEL         = 'File Transfer Status'
         TXT1          = 'File transfered to location:'
         TXT2          = filename
        TXT3          = ' '
        TXT4          = ' '
       ENDIF.
    *ENDFORM.                    " download
    *&      Form  upload
          text
    -->  p1        text
    <--  p2        text
    FORM upload.
    *DATA : i_upload TYPE STANDARD TABLE OF alsmex_tabline.
    **data : i_upload like zioheader occurs 0 with header line.
    data file like RLGRAP-FILENAME.
    file = p_floc .
    DATA: BEGIN OF i_upload OCCURS 0.
            INCLUDE STRUCTURE  alsmex_tabline.
    DATA: END OF i_upload.
    DATA: BEGIN OF i_upload1 OCCURS 0.
            INCLUDE STRUCTURE  alsmex_tabline.
    DATA: END OF i_upload1.
    DATA: BEGIN OF t_col OCCURS 0,
           col LIKE alsmex_tabline-col,
           size TYPE i.
    DATA: END OF t_col.
    DATA: zwlen TYPE i,
          zwlines TYPE i.
    DATA: BEGIN OF fieldnames OCCURS 3,
            title(60),
            table(6),
            field(10),
            kz(1),
          END OF fieldnames.
    DATA: tind(4) TYPE n.
    FIELD-SYMBOLS: <fs1>.
    DATA: zwfeld(19).
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        FILENAME                      = file
        I_BEGIN_COL                   = '1'
        I_BEGIN_ROW                   = '1'
        I_END_COL                     = '200'
        I_END_ROW                     = '6500'
      TABLES
        INTERN                        = i_upload.
    EXCEPTIONS
      INCONSISTENT_PARAMETERS       = 1
      UPLOAD_OLE                    = 2
      OTHERS                        = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.
    LOOP AT i_upload.
        i_upload1 = i_upload.
        CLEAR i_upload1-row.
        APPEND i_upload1.
      ENDLOOP.
      SORT i_upload1 BY col.
      LOOP AT i_upload1.
        AT NEW col.
          t_col-col = i_upload1-col.
          APPEND t_col.
        ENDAT.
        zwlen = strlen( i_upload1-value ).
        READ TABLE t_col WITH KEY col = i_upload1-col.
        IF sy-subrc EQ 0.
          IF zwlen > t_col-size.
            t_col-size = zwlen.
                             Internal Table, Current Row Index
            MODIFY t_col INDEX sy-tabix.
          ENDIF.
        ENDIF.
      ENDLOOP.
      DESCRIBE TABLE t_col LINES zwlines.
      SORT i_upload BY row col.
    IF kzheader = 'X'.
        LOOP AT i_upload.
          fieldnames-title = i_upload-value.
          APPEND fieldnames.
          AT END OF row.
            EXIT.
          ENDAT.
        ENDLOOP.
    ELSE.
        DO zwlines TIMES.
          WRITE sy-index TO fieldnames-title.
          APPEND fieldnames.
        ENDDO.
    ENDIF.
      SORT i_upload BY row col.
      LOOP AT i_upload.
       IF kzheader = 'X'
        i_upload-row = 1.
          CONTINUE.
       ENDIF.
        tind = i_upload-col.
        CONCATENATE 'DATA_TAB-VALUE_' tind INTO zwfeld.
        ASSIGN (zwfeld) TO <fs1>.
        <fs1> = i_upload-value.
        AT END OF row.
          APPEND i_upload.
          CLEAR i_upload.
        ENDAT.
      ENDLOOP.
    if sy-subrc = 0.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                =
      I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = i_grid-program
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
       IT_FIELDCAT                       = i_grid-fieldcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = i_save
       IS_VARIANT                        = i_grid-variant
      IT_EVENTS                         =
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      IT_ALV_GRAPHICS                   =
      IT_ADD_FIELDCAT                   =
      IT_HYPERLINK                      =
      I_HTML_HEIGHT_TOP                 =
      I_HTML_HEIGHT_END                 =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = i_upload.
    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.
    endif.
    when i execute the program i am getting a short dump
    GETWA_NOT_ASSIGNED
    what might be the problem.
    this is a very urgent question.
    pls suggest me the clear way to over come this problem.

    HI
    use this code for uploading the excel file to internal table....
    data: begin of itab_string occurs 0,
          record type char255,
          end of itab_string.
    data:  L_FILETABLE TYPE FILETABLE,
    L_FILETAB_H TYPE FILETABLE WITH HEADER LINE.
    data: p_file1 type string.
    selection screen .
    PARAMETERS: P_FILE TYPE LOCALFILE.
    initialization.
    at selection-screen on value-request for P_FILE.
    IF THE USER SELECT EXTENTION BUTTON IT WILL OPEN THE LOCAL DIRECTORY FOR SELECTING THE FILE LOCATION.
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
    EXPORTING
       WINDOW_TITLE            =
       DEFAULT_EXTENSION       = 'CSV'
       DEFAULT_FILENAME        = 'C:\Documents and Settings\196093\Desktop\STATUS.csv'
       FILE_FILTER             =
       INITIAL_DIRECTORY        = 'C:\Documents and Settings\196093\Desktop\'
       MULTISELECTION          =
       WITH_ENCODING           =
      CHANGING
        FILE_TABLE              = L_FILETABLE
        RC                      = RC
       USER_ACTION             =
       FILE_ENCODING           =
      EXCEPTIONS
        FILE_OPEN_DIALOG_FAILED = 1
        CNTL_ERROR              = 2
        ERROR_NO_GUI            = 3
        NOT_SUPPORTED_BY_GUI    = 4
        others                  = 5
    IF SY-SUBRC <> 0.
    ELSE.
    LOOP AT l_filetable INTO L_FILETAB_H.
    P_FILE = L_FILETAB_H-FILENAME.
    move p_file to p_file1.
    EXIT.
    ENDLOOP.
    ENDIF.
    passing the selected file name to gui_upload for loading the data
    into internal table
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        FILENAME                      = p_file1
      FILETYPE                      = 'ASC'
      HAS_FIELD_SEPARATOR           = ' '
      HEADER_LENGTH                 = 0
      READ_BY_LINE                  = 'X'
      DAT_MODE                      = ' '
      CODEPAGE                      = ' '
      IGNORE_CERR                   = ABAP_TRUE
      REPLACEMENT                   = '#'
      CHECK_BOM                     = ' '
      NO_AUTH_CHECK                 = ' '
    IMPORTING
      FILELENGTH                    =
      HEADER                        =
      TABLES
        DATA_TAB                      = itab_string
    EXCEPTIONS
       FILE_OPEN_ERROR               = 1
       FILE_READ_ERROR               = 2
       NO_BATCH                      = 3
       GUI_REFUSE_FILETRANSFER       = 4
       INVALID_TYPE                  = 5
       NO_AUTHORITY                  = 6
       UNKNOWN_ERROR                 = 7
       BAD_DATA_FORMAT               = 8
       HEADER_NOT_ALLOWED            = 9
       SEPARATOR_NOT_ALLOWED         = 10
       HEADER_TOO_LONG               = 11
       UNKNOWN_DP_ERROR              = 12
       ACCESS_DENIED                 = 13
       DP_OUT_OF_MEMORY              = 14
       DISK_FULL                     = 15
       DP_TIMEOUT                    = 16
       OTHERS                        = 17
    IF SY-SUBRC <> 0.
    MESSAGE I000(Z00) WITH 'PLEASE PROVIDE CORRECT FILE NAME'.
    ENDIF.
    reward points to all helpful answers
    kiran.M

  • Outputting sy-tabix value in serial number.

    Dear expert,
    I have all the data stored in the internal table. I need to output it in the same serial number as it is in internal table along with the serial number (sy-tabix value) against this internal table data in report output display.
    Thanks in advance.

    Hi,
    Loop at itab.
    Itab-serialnum = sy-tabix.
    Modify Itab.
    endlloop.
    Naxt call alv display by passing the serial num filed catalog.
    Prabhudas

  • Navigation from ALV

    Hi all,
    On executing my program i get ALV with names of reports displayed. My requirement is that on clicking on the report name, I should be directed to SE38, where the corresponding report is opened in 'Change' mode.
    Please suggest how I can achieve this.

    REPORT  zvishal_alv.
    TYPE-POOLS: slis.
    TYPES: BEGIN OF ty_data,
           sr_no    TYPE i,
           rep_name TYPE string,
           END OF ty_data.
    DATA: itab        TYPE TABLE OF ty_data,
          wa          TYPE ty_data,
          it_fcat     TYPE SLIS_T_FIELDCAT_ALV,
          wa_fcat     LIKE LINE OF it_fcat,
          bdcdata_tab TYPE TABLE OF bdcdata,
          opt         TYPE ctu_params,
          bdcdata_wa  TYPE bdcdata,
          it_evt      TYPE slis_t_event,
          wa_evt      LIKE LINE OF it_evt.
    wa_evt-form = 'USER_COMMAND'.
    wa_evt-name = 'USER_COMMAND'.
    APPEND wa_evt TO it_evt.
    *fill test data
    wa-sr_no = '1'.
    wa-rep_name = 'ZTEST1'.
    APPEND wa TO itab.
    wa-sr_no = '2'.
    wa-rep_name = 'ZTEST2'.
    APPEND wa TO itab.
    wa-sr_no = '3'.
    wa-rep_name = 'ZTEST3'.
    APPEND wa TO itab.
    wa_fcat-col_pos   = '1'.
    wa_fcat-fieldname =  'SR_NO'.
    wa_fcat-tabname   = 'ITAB'.
    wa_fcat-seltext_m   = 'Serial no'.
    append wa_fcat to it_fcat.
    wa_fcat-col_pos   = '2'.
    wa_fcat-fieldname =  'REP_NAME'.
    wa_fcat-tabname   = 'ITAB'.
    wa_fcat-seltext_m   = 'Report Name'.
    append wa_fcat to it_fcat.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
        i_callback_program                = sy-repid
        i_callback_user_command           = 'USER_COMMAND'
       IT_FIELDCAT                        = it_fcat
       it_events                          = it_evt
      TABLES
        t_outtab                          = itab
    EXCEPTIONS
       program_error                     = 1
       OTHERS                            = 2
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    FORM user_command USING v_ucomm LIKE sy-ucomm
                            wa_selrow TYPE slis_selfield.
    CASE v_ucomm.
      WHEN '&IC1'.
    READ TABLE itab INTO wa INDEX wa_selrow-tabindex.
    CLEAR bdcdata_wa.
    bdcdata_wa-program  = 'SAPLWBABAP'.
    bdcdata_wa-dynpro   = '0100'.
    bdcdata_wa-dynbegin = 'X'.
    bdcdata_wa-fnam = 'RS38M-PROGRAMM'.
    bdcdata_wa-fval = wa-rep_name.
    APPEND bdcdata_wa TO bdcdata_tab.
    *CLEAR bdcdata_wa.
    *bdcdata_wa-fnam = 'PROGRAMM'.
    *bdcdata_wa-fval = wa-rep_name.
    *APPEND bdcdata_wa TO bdcdata_tab.
    opt-dismode = 'E'.
    opt-defsize = 'X'.
    CALL TRANSACTION 'SE38' USING bdcdata_tab OPTIONS FROM opt.
    ENDCASE.
      ENDFORM.
    activate this code and test
    Thanks
    Vishal kapoor

  • Sub total in ALV report.

    hello everyone,
    i am developing one ALV report and one problem is there.
    i want Material Group wise total on 1.Quantity 2. Asssessable value 3. Basic duty 4. Edu cess.
    Problem is all total are correct but when material group is different it repeat same total again. how to do total different material group wise?
    i am using this code...............
    *& Report  ZHP_EXCISE_INVOICE
    REPORT  zhp_excise_invoice NO STANDARD PAGE HEADING LINE-SIZE 150 MESSAGE-ID 00.
    TYPE-POOLS: slis.
    TABLES: j_1iexchdr,vbrk,vbrp,t001w,t023t,konv.
    DATA: BEGIN OF ithp_j_1iexchdr OCCURS 0,
           docyr LIKE j_1iexchdr-docyr,               "Year
           bukrs LIKE j_1iexchdr-bukrs,               "Company Code
           werks LIKE j_1iexchdr-werks,               "PLANT
           exdat LIKE j_1iexchdr-exdat,               "Excise Document Date
           rdoc  LIKE j_1iexchdr-rdoc,                "Reference Document 1
           preprn LIKE j_1iexchdr-preprn,             "Preprinted Serial Number
           kunag LIKE j_1iexchdr-kunag,               "Sold-to party
           kunwe LIKE j_1iexchdr-kunwe,               "Ship-to party
           exbed LIKE j_1iexchdr-exbed,               "Basic Excise Duty
           ecs LIKE j_1iexchdr-ecs,                   "Edu Cess amount
           status LIKE j_1iexchdr-status,             "Excise Document Status
           censtat LIKE j_1iexchdr-censtat,           "CENVAT Utilization status
           exccd LIKE j_1iexchdr-exccd,               "ECC Number
           trntyp LIKE j_1iexchdr-trntyp,             "Excise Transaction Type
           vbeln LIKE vbrk-vbeln,                   "Billing Document
           kzwi2 LIKE vbrp-kzwi2,                   "Assessable value
           fkimg LIKE vbrp-fkimg,                   "Actual billed quantity
           matkl LIKE vbrp-matkl,                   "Material group
           netwr LIKE vbrp-netwr,                   "Net value
           name1 LIKE t001w-name1,                  "Plant Name
           wgbez LIKE t023t-wgbez,                  "Material Group Desc.
           serial_no TYPE i,
           subtot1 TYPE vbrp-fkimg,
            price_per TYPE konv-kbetr,
            cash_disc TYPE konv-kwert,
            vol_disc TYPE konv-kwert,
            ***_value TYPE konv-kbetr,
            ***_value1 TYPE konv-kbetr,
            BASIC_DUTY1 TYPE konv-kwert,
            EDU_CESS1 TYPE konv-kwert,
          END OF ithp_j_1iexchdr.
    DATA : x TYPE i VALUE 0,
           y TYPE i VALUE 0.
    DATA: t_fillcat TYPE slis_t_fieldcat_alv,
          w_fillcat TYPE slis_fieldcat_alv,
          layout  TYPE slis_layout_alv,
          repid LIKE sy-repid.
    TYPES: BEGIN OF ty_itab,
          price_per TYPE konv-kbetr,
          basic_prc TYPE konv-kbetr,
          cash_disc TYPE konv-kwert,
          vol_disc TYPE konv-kwert,
          ***_value TYPE konv-kbetr,
        END OF ty_itab.
    DATA:it_itab TYPE ty_itab OCCURS 0 WITH HEADER LINE,
         wa_itab TYPE ty_itab.
    TYPES: BEGIN OF ty_konv,
          kschl TYPE konv-kschl,
          kbetr TYPE konv-kbetr,
          kwert TYPE konv-kwert,
          mwsk1 TYPE konv-mwsk1,
          knumv TYPE konv-knumv,
          kposn TYPE konv-kposn,
          END OF ty_konv.
    DATA: it_konv TYPE ty_konv OCCURS 0 WITH HEADER LINE,
         wa_konv TYPE ty_konv .
    TYPES: BEGIN OF ty_vbrk,
          fkdat TYPE vbrk-fkdat,
          fkart TYPE vbrk-fkart,
          knumv TYPE vbrk-knumv,
          vbeln TYPE vbrk-vbeln,
          vbtyp TYPE vbrk-vbtyp,
          bukrs TYPE vbrk-bukrs,
          kunrg TYPE vbrk-kunrg,
          END OF ty_vbrk.
    DATA: it_vbrk TYPE ty_vbrk OCCURS 0 WITH HEADER LINE,
         wa_vbrk TYPE ty_vbrk .
    TYPES : BEGIN OF ty_vbrp,
            werks TYPE vbrp-werks,
            spart TYPE vbrp-spart,
            vkbur TYPE vbrp-vkbur,
            matkl TYPE vbrp-matkl,
            vbeln TYPE vbrp-vbeln,
            posnr TYPE vbrp-posnr,
            vgbel TYPE vbrp-vgbel,
            matnr TYPE vbrp-matnr,
            brgew TYPE vbrp-brgew,
            fkimg TYPE vbrp-fkimg,
            vrkme TYPE vbrp-vrkme,
            netwr TYPE vbrp-netwr,
            arktx TYPE vbrp-arktx,
            aubel TYPE vbrp-aubel,
            kzwi1 TYPE vbrp-kzwi1,
            kzwi2 TYPE vbrp-kzwi2,
            kzwi4 TYPE vbrp-kzwi4,
            kzwi5 TYPE vbrp-kzwi5,
            kzwi6 TYPE vbrp-kzwi6,
            END OF ty_vbrp.
    DATA: it_vbrp TYPE ty_vbrp OCCURS 0 WITH HEADER LINE,
          wa_vbrp TYPE ty_vbrp.
    DATA: events   TYPE slis_t_event,
          gt_list_top_of_page TYPE slis_t_listheader.
         top_of_page  type slis_formname value 'TOP_OF_PAGE'.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: p_bukrs FOR j_1iexchdr-bukrs.
    SELECT-OPTIONS: p_exgrp FOR j_1iexchdr-exgrp.
    SELECT-OPTIONS: p_werks FOR j_1iexchdr-werks.
    SELECT-OPTIONS: p_matkl FOR vbrp-matkl.
    SELECT-OPTIONS: p_trntyp FOR j_1iexchdr-trntyp DEFAULT 'DLFC' NO INTERVALS.
    SELECT-OPTIONS: p_status FOR j_1iexchdr-status DEFAULT 'C' NO INTERVALS.
    SELECT-OPTIONS: p_cnstat FOR j_1iexchdr-censtat DEFAULT 'P' NO INTERVALS.
    SELECT-OPTIONS: p_exdat FOR j_1iexchdr-exdat OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK b1.
    repid = sy-repid.
    AT SELECTION-SCREEN ON p_bukrs.
      SELECT SINGLE * FROM j_1iexchdr WHERE bukrs IN p_bukrs.
      IF sy-subrc <> 0.
        MESSAGE e001 WITH 'No Table Entries Found'.
        EXIT.
      ENDIF.
    AT SELECTION-SCREEN ON p_werks.
      SELECT SINGLE * FROM j_1iexchdr WHERE werks IN p_werks.
      IF sy-subrc <> 0.
        MESSAGE e001 WITH 'No Table Entries Found'.
        EXIT.
      ENDIF.
    AT SELECTION-SCREEN ON p_matkl.
      SELECT SINGLE * FROM vbrp WHERE matkl IN p_matkl.
      IF sy-subrc <> 0.
        MESSAGE e001 WITH 'No Table Entries Found'.
        EXIT.
      ENDIF.
    AT SELECTION-SCREEN ON p_exdat.
      SELECT SINGLE * FROM j_1iexchdr WHERE exdat IN p_exdat.
      IF sy-subrc <> 0.
        MESSAGE e001 WITH 'No Table Entries Found'.
        EXIT.
      ENDIF.
    START-OF-SELECTION.
      PERFORM select.
      PERFORM fillcat.
      PERFORM display.
    END-OF-SELECTION.
    *&      Form  SELECT
          text
    -->  p1        text
    <--  p2        text
    FORM select .
    SELECT  DOCYR
             BUKRS
             WERKS
             EXDAT
             RDOC
             PREPRN
             KUNAG
             KUNWE
             EXBED
             ECS
             STATUS
             CENSTAT
    INTO CORRESPONDING FIELDS OF TABLE ITHP_J_1IEXCHDR
    FROM J_1IEXCHDR
    WHERE BUKRS IN P_BUKRS AND
           EXGRP IN P_EXGRP AND
           WERKS IN P_WERKS AND
           EXDAT IN P_EXDAT.
    SELECT   VBELN
             NETWR
    INTO CORRESPONDING FIELDS OF TABLE ITHP_VBRK
    FROM VBRK
    FOR ALL ENTRIES IN ITHP_J_1IEXCHDR
    WHERE VBELN EQ ITHP_J_1IEXCHDR-RDOC AND
          BUKRS EQ ITHP_J_1IEXCHDR-BUKRS AND
          KUNAG EQ ITHP_J_1IEXCHDR-KUNAG.
    SORT ITHP_J_1IEXCHDR BY DOCYR BUKRS WERKS EXDAT RDOC.
    SORT ITHP_VBRK BY VBELN.
      SELECT   a~docyr
               a~bukrs
               a~werks
               a~exdat
               a~rdoc
               a~preprn
               a~kunag
               a~kunwe
               a~exbed
               a~ecs
               a~status
               a~censtat
               a~exccd
               a~trntyp
               c~netwr
               c~kzwi2
               c~fkimg
               c~matkl
               d~name1
               e~wgbez
      INTO CORRESPONDING FIELDS OF TABLE ithp_j_1iexchdr
      FROM j_1iexchdr AS a INNER JOIN vbrk AS b ON ardoc = bvbeln
                           INNER JOIN vbrp AS c ON bvbeln = cvbeln
                           INNER JOIN t001w AS d ON awerks = dwerks
                           INNER JOIN t023t AS e ON cmatkl = ematkl
      WHERE a~bukrs IN p_bukrs AND
            a~exgrp IN p_exgrp AND
            a~werks IN p_werks AND
            c~matkl IN p_matkl AND
            a~trntyp IN p_trntyp AND
            a~status IN p_status AND
            a~censtat IN p_cnstat AND
            a~exdat IN p_exdat.
      SORT ithp_j_1iexchdr BY docyr bukrs werks exdat rdoc matkl.
    ENDFORM.                    " SELECT
    *&      Form  FILLCAT
          text
    -->  p1        text
    <--  p2        text
    FORM fillcat .
      DATA: subtot TYPE vbrp-fkimg.
      DATA: BASIC_DUTY TYPE konv-kwert.
      DATA: EDU_CESS TYPE konv-kwert.
      REFRESH it_vbrk.
      REFRESH it_konv.
      REFRESH it_vbrp.
      LOOP AT ithp_j_1iexchdr.
        SELECT fkdat fkart knumv vbeln vbtyp bukrs kunrg
          FROM vbrk INTO TABLE it_vbrk
          WHERE vbeln EQ ithp_j_1iexchdr-rdoc.
        SELECT kschl kbetr kwert mwsk1 knumv kposn FROM konv
          INTO TABLE it_konv FOR ALL ENTRIES IN it_vbrk
          WHERE knumv EQ it_vbrk-knumv.
        SELECT werks spart vkbur matkl vbeln posnr
          vgbel matnr brgew fkimg vrkme netwr
          arktx aubel  kzwi1 kzwi2 kzwi4 kzwi5
          kzwi6 FROM vbrp INTO TABLE it_vbrp FOR ALL
           ENTRIES IN it_vbrk
          WHERE vbeln EQ it_vbrk-vbeln.
        SORT it_vbrk BY vbeln knumv.
        SORT it_konv BY KSCHL knumv.
        SORT it_vbrp BY vbeln.
          LOOP AT it_konv.
          IF it_konv-kschl =  'ZASS'.
             LOOP AT it_konv.
                IF it_konv-kschl =  'ZPR0'.
                it_itab-***_value = it_konv-kwert.
                ithp_j_1iexchdr-***_value = it_itab-***_value.
                ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
                ithp_j_1iexchdr-***_value1 = ithp_j_1iexchdr-***_value1 - ithp_j_1iexchdr-***_value.
                 MODIFY ithp_j_1iexchdr.
              ENDIF.
              IF it_konv-kschl =  'ZASS'.
                it_itab-***_value = it_konv-kwert.
                ithp_j_1iexchdr-***_value = it_itab-***_value.
                ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
                MODIFY ithp_j_1iexchdr.
              ENDIF.
            ENDLOOP.
            EXIT.
           ENDIF.
          IF it_konv-kschl = 'PR00'.
            it_itab-***_value = it_konv-kwert.
            ithp_j_1iexchdr-***_value = it_itab-***_value.
            ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
            MODIFY ithp_j_1iexchdr.
          ENDIF.
          IF it_konv-kschl =  'ZPR0'.
            LOOP AT it_konv.
              IF it_konv-kschl =  'ZASS'.
              EXIT.
             ENDIF.
                it_itab-***_value = it_konv-kwert.
                ithp_j_1iexchdr-***_value = it_itab-***_value.
                 ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
                ithp_j_1iexchdr-***_value1 = ithp_j_1iexchdr-***_value1 - ithp_j_1iexchdr-***_value.
                  MODIFY ithp_j_1iexchdr.
              ENDIF.
              IF it_konv-kschl =  'ZPR0'.
                it_itab-***_value = it_konv-kwert.
                ithp_j_1iexchdr-***_value = it_itab-***_value.
                ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
                MODIFY ithp_j_1iexchdr.
              ENDIF.
            ENDLOOP.
            EXIT.
          ENDIF.
               IF it_konv-kschl =  'JEXP'.
                   BASIC_DUTY = it_konv-kwert.
                   ADD BASIC_DUTY TO ithp_j_1iexchdr-BASIC_DUTY1.
                   MODIFY ithp_j_1iexchdr.
                ENDIF.
                IF it_konv-kschl =  'JECS'.
                   EDU_CESS = it_konv-kwert.
                   ADD EDU_CESS TO ithp_j_1iexchdr-EDU_CESS1.
                   MODIFY ithp_j_1iexchdr.
                ENDIF.
        ENDLOOP.
      ENDLOOP.
      LOOP AT ithp_j_1iexchdr.
        AT NEW rdoc.
          SUM.
          subtot = ithp_j_1iexchdr-fkimg.
        ENDAT.
        ithp_j_1iexchdr-subtot1 = subtot.
        MODIFY ithp_j_1iexchdr.
        AT NEW MATKL.
        ENDAT.
      ENDLOOP.
      DELETE ADJACENT DUPLICATES FROM ithp_j_1iexchdr.
      LOOP AT ithp_j_1iexchdr.
        x = x + 1.
        ithp_j_1iexchdr-serial_no = x.
        MODIFY ithp_j_1iexchdr.
      ENDLOOP.
      repid = sy-repid.
      DATA: col_pos TYPE i VALUE 0.
      col_pos = col_pos + 1.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'SERIAL_NO'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Serial No'.
      w_fillcat-seltext_m = 'Serial No'.
      w_fillcat-seltext_l = 'Serial No'.
      w_fillcat-outputlen = 8.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'DOCYR'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Year'.
      w_fillcat-seltext_m = 'Year'.
      w_fillcat-seltext_l = 'Year'.
      w_fillcat-outputlen = 5.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'WERKS'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Plant'.
      w_fillcat-seltext_m = 'Plant'.
      w_fillcat-seltext_l = 'Plant'.
      w_fillcat-outputlen = 5.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'EXDAT'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Doc. Date'.
      w_fillcat-seltext_m = 'Doc. Date'.
      w_fillcat-seltext_l = 'Doc. Date'.
      w_fillcat-outputlen = 10.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'RDOC'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Ref. Document'.
      w_fillcat-seltext_m = 'Ref. Document'.
      w_fillcat-seltext_l = 'Ref. Document'.
      w_fillcat-outputlen = 11.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'PREPRN'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Invoice No'.
      w_fillcat-seltext_m = 'Invoice No'.
      w_fillcat-seltext_l = 'Invoice No'.
      w_fillcat-outputlen = 11.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'SUBTOT1'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-do_sum = 'X'.
      w_fillcat-seltext_s = 'Quantity'.
      w_fillcat-seltext_m = 'Quantity'.
      w_fillcat-seltext_l = 'Quantity'.
      w_fillcat-outputlen = 13.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = '***_VALUE1'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-do_sum = 'X'.
      w_fillcat-seltext_s = 'Assessable value'.
      w_fillcat-seltext_m = 'Assessable value'.
      w_fillcat-seltext_l = 'Assessable value'.
      w_fillcat-outputlen = 15.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'BASIC_DUTY1'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-do_sum = 'X'.
      w_fillcat-seltext_s = 'Basic Duty'.
      w_fillcat-seltext_m = 'Basic Duty'.
      w_fillcat-seltext_l = 'Basic Duty'.
      w_fillcat-outputlen = 13.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'EDU_CESS1'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-do_sum = 'X'.
      w_fillcat-seltext_s = 'Edu Cess'.
      w_fillcat-seltext_m = 'Edu Cess'.
      w_fillcat-seltext_l = 'Edu Cess'.
      w_fillcat-outputlen = 13.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'KUNAG'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Sold-to pt'.
      w_fillcat-seltext_m = 'Sold-to pt'.
      w_fillcat-seltext_l = 'Sold-to pt'.
      w_fillcat-outputlen = 10.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'KUNWE'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Ship-to pt'.
      w_fillcat-seltext_m = 'Ship-to pt'.
      w_fillcat-seltext_l = 'Ship-to pt'.
      w_fillcat-outputlen = 10.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'STATUS'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Doc. Status'.
      w_fillcat-seltext_m = 'Doc. Status'.
      w_fillcat-seltext_l = 'Doc. Status'.
      w_fillcat-outputlen = 8.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'CENSTAT'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Cenvet status'.
      w_fillcat-seltext_m = 'Cenvet status'.
      w_fillcat-seltext_l = 'Cenvet status'.
      w_fillcat-outputlen = 8.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'MATKL'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Mat. Grp'.
      w_fillcat-seltext_m = 'Mat. Grp'.
      w_fillcat-seltext_l = 'Mat. Grp'.
      w_fillcat-outputlen = 9.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
      col_pos = col_pos + 1.
      w_fillcat-fieldname = 'WGBEZ'.
      w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
      w_fillcat-col_pos = col_pos.
      w_fillcat-seltext_s = 'Mat. Grp Desc.'.
      w_fillcat-seltext_m = 'Mat. Grp Desc.'.
      w_fillcat-seltext_l = 'Mat. Grp Desc.'.
      w_fillcat-outputlen = 20.
      APPEND w_fillcat TO t_fillcat.
      CLEAR w_fillcat.
    ENDFORM.                    " FILLCAT
    *&      Form  DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM display .
      DATA : lv_grid_title TYPE lvc_title.
      DATA: date1(10) TYPE c.
      DATA: tperiod(500) TYPE c,
            tperiod1(40) TYPE c,
            tperiod2(30) TYPE c,
            temp(25) TYPE c,
            temp1(35) TYPE c,
            temp2(25) TYPE c,
            temp3(25) TYPE c,
            temp4(60) TYPE c,
            temp5(100) TYPE c.
      CONCATENATE sy-datum6(2) sy-datum4(2) sy-datum+0(4)
                  INTO date1 SEPARATED BY '/'.
      CONCATENATE p_exdat-low6(2) p_exdat-low4(2) p_exdat-low+0(4)
                  INTO temp1 SEPARATED BY '/'.
      CONCATENATE p_exdat-high6(2) p_exdat-high4(2) p_exdat-high+0(4)
                  INTO temp2 SEPARATED BY '/'.
      CONCATENATE 'DUTY DEBIT STMT:'
                 temp1 'TO' temp2
                 INTO tperiod
                  SEPARATED BY space.
      IF ithp_j_1iexchdr-werks = '1000'.
        CONCATENATE tperiod  'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
                SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1101'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF  ithp_j_1iexchdr-werks = '1102'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1103'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1104'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1201'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1202'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1203'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1204'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1205'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1261'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1301'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '1901'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '2000'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '2101'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '3000'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSEIF ithp_j_1iexchdr-werks = '3101'.
        CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
              SEPARATED BY space.
      ELSE.
        CONCATENATE tperiod ' ' INTO lv_grid_title
             SEPARATED BY space.
      ENDIF.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          percentage = 100
          text       = 'Generating Report ... '.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = 'REPID'
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       i_grid_title                      = lv_grid_title
      I_GRID_SETTINGS                   =
         is_layout                         = layout
         it_fieldcat                       = t_fillcat
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
         i_default                         = 'X'
         i_save                            = 'X'
      IS_VARIANT                        =
      IT_EVENTS                         = events[]
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = ithp_j_1iexchdr
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " DISPLAY
    Thanks in Advance.....

    Hi himanshu,
    here i am sending some solution.
    just create a internal table and wa for IT_SORT in grid display(just like for field cat).
    Then u have to populate the internal table by fields for which u want subtotals.
    just follow this code.
    data:  i_sort type SLIS_T_SORTINFO_ALV,
            wa_sort type SLIS_SORTINFO_ALV.
    wa_sort-fieldname = 'quantity'.
    wa_sort-up = 'X'.
    wa_sort-subtotal = 'X'.
    append wa_sort to i_sort.
    Do the same thing for all fields.
    mention the internal table name in Grid display.
    I think this some what useful to u,
    Bye.

  • Filter in alv report

    hello!
    i have a weird problem in alv report with the filter function.
    for example the field serial like viqmel-serial, if it contains the value for example 1234 the filter want work. if it contains the value N16 the filter will work.
    i cant understand what might be the problem.
    another information that concerns this field is that the ls_fieldcat-inttype is 'C'  and that the intlen eq ' '.
    thanks
    yifat

    I think your problem is with internal/external format.  The reason that N16 works, is because in the database it is  stored as N16.  The reason why 1234 doesn't work, is because it is stored in the database as 000000000000001234.   I suggest that you make sure that you filter includes the internal format.   You could use a function module to convert it.
    <b>
    CONVERSION_EXIT_ALPHA_INPUT
    </b>
    Regards,
    Rich Heilman

  • Aubtotal in ALV Report

    Dear All,
    I have a report which is working fine.
    Now I want to add the subtotal feature.
    If I sort the material column, the quantity of that material should get added.
    I tries to use LS_FIELDCAT-DO_SUM = 'X'. but problem is not solved.
    Please help.
    Points be awarded for all replies.
    regards,

    I tried but not workig.
    Can I request you to have a look at my code?
    ====================
    *& Report  ZWM_STOCK_REPORT
    Program Name          : ZWM_STOCK_REPORT
    Type / Module          : Report/WM
    Created by          : Sachin Dabhade
    Created on            : 12.01.2008
    Requestor          : Harish S S
    CRF No.          : NA
    Comments: purpose, use, design, structure, testing hints, etc
                          Modification Log:     
    *CRF No.     
    *Date          ABAPer       Functional Consultant       Description
    REPORT  ZWM_STOCK_REPORT.
    TABLES : EQUI, ZWMSERIALNO.
    TYPE-POOLS: SLIS.
    data : lv_file type string.
    data : CT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV with header line.
    *DATA : CT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    data : begin of itab_final occurs 0,
            qty(10),
           end of itab_final.
    data : lt_sort TYPE slis_t_sortinfo_alv,
           ls_sort TYPE slis_sortinfo_alv.
    ALV data declarations
      data: it_sortcat   type slis_sortinfo_alv occurs 1,
            wa_sort like line of it_sortcat.
    DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
           GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
           LT_CAT TYPE SLIS_T_FIELDCAT_ALV,
           HEADING  TYPE SLIS_T_LISTHEADER,
           GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
           G_EXTAB TYPE  SLIS_T_EXTAB,
           GT_EVENTS      TYPE SLIS_T_EVENT,
           GT_SORT TYPE SLIS_T_SORTINFO_ALV,
           GT_LAYOUT TYPE SLIS_LAYOUT_ALV,
           G_REPID LIKE SY-REPID,
           G_SAVE,
           GS_VARIANT LIKE DISVARIANT.
    *data: it_fieldcat type slis_fieldcat_alv occurs 0,
         GS_REPID TYPE SY-REPID,
         GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
    *it_fieldcat-fieldname = 'Tex'.
    *it_fieldcat-tabname   = 'ABC'.
    DATA  : BEGIN OF I_FINAL OCCURS 0,
            MATNR LIKE  MARD-MATNR , "(Material Number),
            MAKTX LIKE  MAKT-MAKTX , "(Material Desciption),
            EQUNR LIKE  EQUI-EQUNR, "( Serial Nunmber),
            ERDAT LIKE  EQUI-ERDAT,  "( Created on)
            STORAGEBIN LIKE ZWMSERIALNO-STORAGEBIN, "(Storage Bin),
            CHASSIS(30),
            ENGINE(30),
            GEARBOX(30),
            QTY(2) type n,
            END OF I_FINAL.
    DATA: BEGIN OF I_MARA OCCURS 0,
    MATNR LIKE MARA-MATNR,
    MTART LIKE MARA-MTART,
    END OF I_MARA.
    DATA : BEGIN OF I_EQUI OCCURS 0,
            EQUNR LIKE EQUI-EQUNR,
             OBJNR LIKE EQUI-OBJNR ,
             MATNR LIKE EQUI-MATNR,
             SERNR LIKE EQUI-SERNR,
             ERDAT LIKE EQUI-ERDAT,
           END OF I_EQUI.
    DATA : BEGIN OF I_EQUI2 OCCURS 0,
            EQUNR LIKE AUSP-OBJEK,
             OBJNR LIKE EQUI-OBJNR ,
             MATNR LIKE EQUI-MATNR,
             SERNR LIKE EQUI-SERNR,
             ERDAT LIKE EQUI-ERDAT,
           END OF I_EQUI2.
    ***DATA: BEGIN OF i_ser03 OCCURS 0,
            lief_nr LIKE ser01-lief_nr,
            obknr  LIKE ser01-obknr,
         END OF i_ser03.
    ***DATA: BEGIN OF i_objk OCCURS 0,
           obknr LIKE objk-obknr,
           equnr  LIKE objk-equnr,
           atwrt LIKE ausp-atinn,
         END OF i_objk.
    DATA: BEGIN OF I_MAKT OCCURS 0,
            MATNR LIKE MAKT-MATNR,
            MAKTX LIKE MAKT-MAKTX,
          END OF I_MAKT.
    DATA : BEGIN OF I_MARD OCCURS 0,
              MATNR LIKE MARD-MATNR,
              WERKS LIKE MARD-WERKS,
              LGORT LIKE MARD-LGORT,
              LABST LIKE MARD-LABST,
           END OF I_MARD.
    DATA : BEGIN OF I_ZWMSERIAL OCCURS 0,
           SERIALNO LIKE ZWMSERIALNO-SERIALNO,
           STORAGEBIN LIKE ZWMSERIALNO-STORAGEBIN,
           END OF I_ZWMSERIAL.
      DEFINE M_SORT.
        ADD 1 TO LS_SORT-SPOS.
        LS_SORT-FIELDNAME = &1.
        LS_SORT-UP = 'X'.
        LS_SORT-SUBTOT = &2.
        APPEND LS_SORT TO LT_SORT.
      END-OF-DEFINITION.
    ***DATA: BEGIN OF i_ausp OCCURS 0,
           objek LIKE ausp-objek,
           atinn LIKE ausp-atinn,
           atwrt LIKE ausp-atwrt,
         END OF i_ausp.
    ***DATA: BEGIN OF i_cabn OCCURS 0,
           atinn LIKE cabn-atinn,
           atnam LIKE cabn-atnam,
         END OF i_cabn.
    ***Data : wa_equi like i_equi,
          wa_ser03 like i_ser03,
          wa_objk like i_objk,
          wa_makt like i_makt,
          wa_mard like i_mard,
          wa_zwmserial like i_zwmserial,
          wa_ausp like i_mard,
          wa_cabn like i_cabn,
          wa_final like i_final.
    **data : p_file type string.
    DATA: GV_LINES TYPE I.
    DATA : BEGIN OF  ITAB_AUSP OCCURS 0,
    OBJEK LIKE AUSP-OBJEK,
    ATINN LIKE AUSP-ATINN,
    ATWRT LIKE AUSP-ATWRT,
    END OF ITAB_AUSP.
    DATA  : internal_no like ausp-ATINN.
    Selection Screen **************
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-800.
    PARAMETERS : P_WERKS LIKE MARD-WERKS .
    PARAMETERS : P_LGORT LIKE MARD-LGORT.
    SELECTION-SCREEN END OF BLOCK B1.
    End Of Selection Screen*********
    **START OF SELECTION EVENT ..................
    START-OF-SELECTION.
      PERFORM GET_STOCK_DETAILS TABLES I_FINAL[].
      PERFORM ALV.
    **perform display_records.
    end of selection*****************
    END-OF-SELECTION.
      DESCRIBE TABLE I_FINAL LINES GV_LINES.
      IF GV_LINES GT 0.
        WRITE : / 'Number of records transferred to file :', 50 GV_LINES.
      ELSE.
        WRITE : / 'No records selected for the given input'.
      ENDIF.
    *&      Form  get_stock_details
          text
         -->P_I_FINAL[]  text
    FORM GET_STOCK_DETAILS  TABLES   PI_FINAL LIKE I_FINAL[].
      SELECT MATNR WERKS LGORT LABST INTO TABLE I_MARD FROM MARD WHERE
                                                           WERKS = P_WERKS  AND
                                                           LGORT = P_LGORT AND
                                                           LABST > 0.
      IF NOT I_MARD[] IS INITIAL.
        SELECT MATNR MTART FROM MARA INTO TABLE I_MARA FOR ALL ENTRIES IN I_MARD WHERE MATNR = I_MARD-MATNR  AND MTART = 'FERT'.
      ENDIF.
      IF NOT I_MARA[] IS INITIAL.
        SELECT  MATNR                                            " Fetching Description : Maktx
                MAKTX
                FROM MAKT
                INTO  TABLE I_MAKT
                FOR ALL ENTRIES IN I_MARA
                WHERE MATNR = I_MARA-MATNR.
        SELECT  EQUNR OBJNR MATNR SERNR ERDAT
                FROM EQUI
                INTO  TABLE I_EQUI2
                FOR ALL ENTRIES IN I_MARA
                WHERE MATNR = I_MARA-MATNR.
        IF NOT I_EQUI2[] IS INITIAL.
          SELECT OBJEK ATINN ATWRT FROM AUSP INTO TABLE ITAB_AUSP FOR ALL ENTRIES IN I_EQUI2 WHERE OBJEK = I_EQUI2-EQUNR.
          LOOP AT I_EQUI2.
            DATA : ULINE LIKE BSVX-STTXT.
            CALL FUNCTION 'STATUS_TEXT_EDIT'
              EXPORTING
                FLG_USER_STAT = 'X'
                OBJNR         = I_EQUI2-OBJNR
                ONLY_ACTIVE   = 'X'
                SPRAS         = 'E'
              IMPORTING
                USER_LINE     = ULINE.
            IF SY-SUBRC = 0.
              IF ULINE = 'SFLT'.
                I_EQUI-EQUNR = I_EQUI2-EQUNR.
                I_EQUI-OBJNR = I_EQUI2-OBJNR.
                I_EQUI-MATNR = I_EQUI2-MATNR.
                I_EQUI-SERNR = I_EQUI2-SERNR.
                I_EQUI-ERDAT = I_EQUI2-ERDAT.
                APPEND I_EQUI.
                CLEAR I_EQUI.
              ENDIF.
            ENDIF.
          ENDLOOP.
        Data : equnr(17) type c.
        equnr = i_equi-equnr.
          SELECT SERIALNO STORAGEBIN FROM ZWMSERIALNO
                                          INTO TABLE I_ZWMSERIAL
                                          FOR ALL ENTRIES IN I_EQUI
                                          WHERE SERIALNO = I_EQUI-EQUNR+0(17).
        ENDIF.
      ENDIF.
      LOOP AT I_EQUI.
        I_FINAL-MATNR = I_EQUI-MATNR.
        I_FINAL-EQUNR = I_EQUI-EQUNR.
        I_FINAL-ERDAT = I_EQUI-ERDAT.
        READ TABLE I_MAKT WITH KEY MATNR = I_EQUI-MATNR.
        IF SY-SUBRC = 0.
          I_FINAL-MAKTX = I_MAKT-MAKTX.
        ENDIF.
        READ TABLE I_ZWMSERIAL WITH KEY SERIALNO = I_EQUI-EQUNR.
        IF SY-SUBRC = 0.
          I_FINAL-STORAGEBIN = I_ZWMSERIAL-STORAGEBIN.
        ENDIF.
        CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
          EXPORTING
            INPUT         = 'CHASISNUMBER'
         IMPORTING
           OUTPUT        = internal_no.
        READ TABLE ITAB_AUSP WITH KEY OBJEK = I_EQUI-EQUNR ATINN = internal_no.
        IF SY-SUBRC = 0.
          I_FINAL-CHASSIS = ITAB_AUSP-ATWRT.
        ENDIF.
        CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
          EXPORTING
            INPUT         = 'ENGINE_NUMBER'
         IMPORTING
           OUTPUT        = internal_no.
        READ TABLE ITAB_AUSP WITH KEY OBJEK = I_EQUI-EQUNR ATINN = internal_no .
        IF SY-SUBRC = 0.
          I_FINAL-ENGINE = ITAB_AUSP-ATWRT.
        ENDIF.
        CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
          EXPORTING
            INPUT         = 'GEARBOXNUMBER'
         IMPORTING
           OUTPUT        = internal_no.
        READ TABLE ITAB_AUSP WITH KEY OBJEK = I_EQUI-EQUNR ATINN = internal_no. .
        IF SY-SUBRC = 0.
          I_FINAL-GEARBOX = ITAB_AUSP-ATWRT.
        ENDIF.
        i_final-qty = '1'.
        APPEND I_FINAL.
        CLEAR I_FINAL.
      ENDLOOP.
    ENDFORM.                    " get_stock_details
    *&      Form  FIELD_INITIALISATION
          text
    -->  p1        text
    <--  p2        text
    FORM FIELD_INITIALISATION USING    P_GT_FIELDCAT TYPE
    SLIS_T_FIELDCAT_ALV.
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
         I_STRUCTURE_NAME = 'i_final'
       CHANGING
         CT_FIELDCAT      = GT_FIELDCAT[].
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
      DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
      lt_sort TYPE slis_t_sortinfo_alv,
      ls_sort TYPE slis_sortinfo_alv.
    gs_layout-cell_merge = 'X'.
      LS_FIELDCAT-FIELDNAME = 'MATNR'.
      LS_FIELDCAT-COL_POS = 1.
      LS_FIELDCAT-TABNAME   =  'i_final'.
      LS_FIELDCAT-OUTPUTLEN = '18'.
      LS_FIELDCAT-SELTEXT_L = 'Material'.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR: LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME = 'MAKTX'.
      LS_FIELDCAT-COL_POS = 2.
      LS_FIELDCAT-TABNAME   =  'i_final'.
      LS_FIELDCAT-OUTPUTLEN = '40'.
      LS_FIELDCAT-SELTEXT_L = 'Material Description'.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR: LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME = 'EQUNR'.
      LS_FIELDCAT-COL_POS = 3.
      LS_FIELDCAT-TABNAME   =  'i_final'.
      LS_FIELDCAT-OUTPUTLEN = '18'.
      LS_FIELDCAT-SELTEXT_L = 'Serial Number'.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR: LS_FIELDCAT.
    DEFINE m_sort.
    add 1 to ls_sort-spos.
    ls_sort-fieldname = 'QTY'.
    ls_sort-up = 'X'.
    ls_sort-subtot = &2.
    append ls_sort to lt_sort.
    END-OF-DEFINITION.
      LS_FIELDCAT-FIELDNAME = 'QTY'.
      LS_FIELDCAT-COL_POS = 4.
      LS_FIELDCAT-TABNAME   =  'i_final'.
      LS_FIELDCAT-OUTPUTLEN = '18'.
      LS_FIELDCAT-SELTEXT_L = 'QTY'.
      LS_FIELDCAT-DO_SUM = 'X'.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME = 'CHASSIS'.
      LS_FIELDCAT-COL_POS = 5.
      LS_FIELDCAT-TABNAME   =  'i_final'.
      LS_FIELDCAT-OUTPUTLEN = '18'.
      LS_FIELDCAT-SELTEXT_L = 'Chasis Number'.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME = 'ENGINE'.
      LS_FIELDCAT-COL_POS = 6.
      LS_FIELDCAT-TABNAME   =  'i_final'.
      LS_FIELDCAT-OUTPUTLEN = '18'.
      LS_FIELDCAT-SELTEXT_L = 'Engine Number'.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME = 'GEARBOX'.
      LS_FIELDCAT-COL_POS = 7.
      LS_FIELDCAT-TABNAME   =  'i_final'.
      LS_FIELDCAT-OUTPUTLEN = '18'.
      LS_FIELDCAT-SELTEXT_L = 'Gear Box'.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME = 'STORAGEBIN'.
      LS_FIELDCAT-COL_POS = 8.
      LS_FIELDCAT-TABNAME   =  'i_final'.
      LS_FIELDCAT-OUTPUTLEN = '18'.
      LS_FIELDCAT-SELTEXT_L = 'Storage Bin'.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME = 'ERDAT'.
      LS_FIELDCAT-COL_POS = 9.
      LS_FIELDCAT-TABNAME   =  'i_final'.
      LS_FIELDCAT-OUTPUTLEN = '18'.
      LS_FIELDCAT-SELTEXT_L = 'Production Date'.
      APPEND LS_FIELDCAT TO GT_FIELDCAT.
      CLEAR LS_FIELDCAT.
    ENDFORM.                    " FIELD_INITIALISATION
    *&      Form  ALV
          text
    -->  p1        text
    <--  p2        text
    FORM ALV .
    *m_sort 'QTY' 'X'.
    gs_layout-cell_merge = 'X'.
      PERFORM FIELD_INITIALISATION USING GT_FIELDCAT[].
      G_REPID = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
        I_CALLBACK_PROGRAM                = G_REPID
        I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
         IS_LAYOUT                         = GS_LAYOUT
         IT_FIELDCAT                       = GT_FIELDCAT
         it_sort                           = it_sortcat
         I_SAVE                           = 'A'
       TABLES
          T_OUTTAB                          = I_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.
    write :/ 'Hello'.
    ENDFORM.                    " ALV
    *&      Form  build_sortcat
          Build Sort catalog
    FORM build_sortcat .
      wa_sort-spos      = 1.
      wa_sort-fieldname = 'QTY'.
      wa_sort-SUBTOT    = 'X'. "subtotals any totals column by this field
    gd_sortcat-tabname
      APPEND wa_sort TO it_sortcat.
    wa_sort-spos      = 2.
    wa_sort-fieldname = 'EBELP'.
    gd_sortcat-tabname
    APPEND wa_sort TO it_sortcat.
    ENDFORM.
    ====================

  • Problem in Back Button in ALV report

    Hi Team,
    I have created a report which has a selection screen. Based on the input I am showing an ALV OO grid in my custom screen 0100. Now In the system toolbar on my 0100 screen I have enabled back, up and exit button. On click of which I am wrting 'LEAVE TO SCREEN 0. '
    But it doesn't take me to the selection screen. Rather it throws me out of the transaction. Can anybody
    suggest me a command so that when I click on back button it will take to the selection screen.
    Thanks,
    Mainak

    Hi,
    Go through given program it is very usefull for you,
    ***Correct your program as follows...
    PROGRAM rsolett1 MESSAGE-ID sy.
    TYPE-POOLS: slis.
    data: repid like sy-repid.
    DATA: w_fieldcat TYPE slis_fieldcat_alv,
    t_fieldcat TYPE slis_t_fieldcat_alv.
    DATA: w_listheader TYPE slis_listheader,
    t_listheader TYPE slis_t_listheader.
    DATA: BEGIN OF t_output OCCURS 0,
    slno TYPE char10,
    name TYPE char10,
    lino TYPE char10,
    prof TYPE char10,
    addr TYPE char10,
    fanm TYPE char10,
    plbu TYPE char10,
    END OF t_output.
    w_fieldcat-col_pos = 1.
    w_fieldcat-fieldname = 'SLNO'.
    w_fieldcat-seltext_m = 'SERIAL NUMBER'.
    APPEND w_fieldcat TO t_fieldcat.
    CLEAR w_fieldcat.
    w_fieldcat-col_pos = 2.
    w_fieldcat-fieldname = 'NAME'.
    w_fieldcat-seltext_m = 'NAME'.
    APPEND w_fieldcat TO t_fieldcat.
    CLEAR w_fieldcat.
    w_fieldcat-col_pos = 3.
    w_fieldcat-fieldname = 'LINO'.
    w_fieldcat-seltext_m = 'LICENCE NUMBER'.
    APPEND w_fieldcat TO t_fieldcat.
    CLEAR w_fieldcat.
    w_fieldcat-col_pos = 4.
    w_fieldcat-fieldname = 'PROF'.
    w_fieldcat-seltext_m = 'PROFESSION'.
    APPEND w_fieldcat TO t_fieldcat.
    CLEAR w_fieldcat.
    w_fieldcat-col_pos = 5.
    w_fieldcat-fieldname = 'ADDR'.
    w_fieldcat-seltext_m = 'ADDRESS'.
    w_fieldcat-do_sum = 'X'.
    APPEND w_fieldcat TO t_fieldcat.
    CLEAR w_fieldcat.
    w_fieldcat-col_pos = 6.
    w_fieldcat-fieldname = 'FANM'.
    w_fieldcat-seltext_m = 'FATHER NAME'.
    APPEND w_fieldcat TO t_fieldcat.
    CLEAR w_fieldcat.
    w_fieldcat-col_pos = 7.
    w_fieldcat-fieldname = 'PLBU'.
    w_fieldcat-seltext_m = 'PLACE OF BUSSINESS'.
    APPEND w_fieldcat TO t_fieldcat.
    CLEAR w_fieldcat.
    *PUPULATING TOP-OF-PAGE.
    w_listheader-typ = 'H'.
    w_listheader-info = 'FORMA'.
    APPEND w_listheader TO t_listheader.
    CLEAR w_listheader.
    repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = repid
    i_callback_pf_status_set = 'SET_PF_STATUS'
    i_callback_user_command = ' '
    i_callback_top_of_page = 'SUB_TOP_OF_PAGE'
    it_fieldcat = t_fieldcat
    i_default = 'X'
    TABLES
    t_outtab = t_output.
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
    SET PF-STATUS 'ZPFSTATUS'.
    ENDFORM.
    Edited by: Ganesh Modhave on Aug 12, 2008 1:06 PM
    Thanks&Regards,
    Naresh kumar

Maybe you are looking for