Regarding cl_gui_alv_grid

Hi Experts,
Iam displaying ALV list using method set_table_for_first_display of class cl_gui_alv_grid.
Iam using container to display ALV list.Now my problem is that in contanier Iam getting whole toolbar,
to access this toolbar i have to use mouse key,Now user's requirement is that they want function key also.
For example:
If user clicks on 'Find' button by using mouse.He can able to do it.
But ctrl+F key is not available.
How to do this ???
Thanks & Regards,
Anagha Deshmukh

Hi Sandeep,
Thanks for your reply.But what I can i assign..Can you give me in brief.
When we used normal FM to display ALV list, it allows function key.. But same is not available with method set_table_for_first_display. So how to do that ???

Similar Messages

  • Issue regarding ALV report

    Hi all,
             I've created an ALV report which is having a editable checkbox box field and some more fields that are not editable.
    My requirement is that when i check any checkbox, some of the fields in that particular row should become editable.
    In table control it can be done easily but can it be done in ALV.
    Note: I have created the ALV through container as it was required.
    Thanks in Advance.
    Regards
    Dheeraj

    Hi,
    Basically you will have to first register the data change event after you display the grid as follows:-
        CALL METHOD y_lobj_grid->register_edit_event
          EXPORTING
            i_event_id = cl_gui_alv_grid=>MC_EVT_MODIFIED
          EXCEPTIONS
            error      = 1
            OTHERS     = 2.
    Here Y_LOBJ_GRID is my grid object of type CL_GUI_ALV_GRID.
    Then you will have to set a handler method for this.
       SET HANDLER y_obj_evt_handler->y_m_handle_cell_modified
        FOR Y_LOBJ_GRID.
    Here y_obj_evt_handler is a local class in your program and y_m_handle_cell_modified is the method of that class.
    In this method you can change the fields to make then editable or non editable.
    Regards,
    Ankur Parab

  • Check_changed_data method on editable ALV Grid ( class cl_gui_alv_grid)

    Hi guys,
    I use the following method (register_edit_event) in the PBO soon after first display of an editable ALV grid to register enter as an event to do validations on fields like qty. If user enters some character like 'abc' for qty and hits enter on keyboard, ALV grid pop's up a standard message ( I haven't coded for this.Since I use DDIC structure in field catalog, the Std. ALV program takes care of it. ). THis takes care of the validation before I click on save.
    call method alv_grid->register_edit_event
                            exporting
                               i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    This works fine. But I want this validation to run when I also click the SAVE button of the screen. Is it possible to run this standard validation in my PAI event eg. SAVE ? I thought I will be, by calling the method check_changed_data in my PAI event. But this is doing nothing. Does this method conflict with register_edit_event or something ? So , basically what I am looking for is to trigger the event or call the method which does the same work as the "check" button on ALV grid.
    Any advice or tips or sample code is greatly appreciated.
    Thanks,
    Shareen

    Hi Shareen,
    Handle the data_changed event in the grid.
    Whenever you make changes in the data in ALV Grid this event would be triggered. Here you can perform additional validations that you may need to perform.
        METHODS handle_data_changed
          FOR EVENT data_changed OF cl_gui_alv_grid
          IMPORTING er_data_changed.
    Implementation:
      METHOD handle_data_changed.
        PERFORM validations USING er_data_changed.
      ENDMETHOD.
    FORM validations USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol.
      DATA: ls_good TYPE lvc_s_modi.
      DATA  wa LIKE LINE OF lt_good_cells.
      CALL METHOD g_grid->register_edit_event
        EXPORTING
          i_event_id = cl_gui_alv_grid=>mc_evt_modified.
      LOOP AT er_data_changed->mt_good_cells INTO ls_good.
        CASE ls_good-fieldname.
        WHEN 'FIELDNAME'. "Your fieldname
            CALL METHOD er_data_changed->get_cell_value "Get the changed value
              EXPORTING
                i_row_id    = ls_good-row_id
                i_fieldname = ls_good-fieldname
              IMPORTING
                e_value     = temp. "Your temp variable
            "Make your validations here.
        ENDCASE.
    Ps: Reward points if helpful.
    Regards,
    Wenceslaus.

  • How to insert line with values in ALV (CL_GUI_ALV_GRID)?

    Hi,
    Does anyone know how to get control of new line inserted in ALV (I am using class CL_GUI_ALV_GRID) before the new line is shown to the user. What I want the user to see is not a completely blank line, but a new line with certain fields filled with data.
    I have tried with ALL events in CL_GUI_ALV_GRID but without any luck. If I create my own user command and insert it in the alv menu I get control, but not with the standards. Why?
    Please help
    Kind regards - Keld Gregersen

    Hi,
    I created a nice work around...
    CLASS lcl_event_handler DEFINITION.
    handle_toolbar
    FOR EVENT toolbar OF cl_gui_alv_grid
    IMPORTING e_object e_interactive,
    handle_user_command
    FOR EVENT user_command OF cl_gui_alv_grid
    IMPORTING e_ucomm.
    ENDCLASS. "lcl_event_handler DEFINITION
    CLASS lcl_event_handler IMPLEMENTATION.
    METHOD handle_toolbar.
    DATA:
    l_toolbar TYPE stb_button.
    Here I replace SAP standard functions with own functions
    READ TABLE e_object->mt_toolbar INTO l_toolbar
    WITH KEY function = '&LOCAL&APPEND'.
    IF sy-subrc = 0.
    l_toolbar-function = 'OWN_APPEND'.
    MODIFY e_object->mt_toolbar FROM l_toolbar INDEX sy-tabix.
    ENDIF.
    READ TABLE e_object->mt_toolbar INTO l_toolbar
    WITH KEY function = '&LOCAL&COPY_ROW'.
    IF sy-subrc = 0.
    l_toolbar-function = 'OWN_COPY_ROW'.
    MODIFY e_object->mt_toolbar FROM l_toolbar INDEX sy-tabix.
    ENDIF.
    ENDMETHOD. "handle_toolbar
    METHOD handle_user_command.
    CASE e_ucomm.
    WHEN 'OWN_APPEND'.
    CALL METHOD ref_alv->check_changed_data
    IMPORTING
    e_valid =
    CHANGING
    c_refresh = 'X'
    CREATE YOUR OWN CODE HERE
    CALL METHOD ref_alv->refresh_table_display
    EXPORTING
    is_stable = 'X'
    i_soft_refresh =
    EXCEPTIONS
    finished = 1
    others = 2
    ENDMETHOD. "handle_user_command
    ENDCLASS. "lcl_event_handler IMPLEMENTATION
    Kind regards
    Keld Gregersen

  • CL_GUI_ALV_GRID check date and POP-up appears (that is not required)

    Hi all,
    we use class CL_GUI_ALV_GRID in a report. The list contains a date field.
    If i put into this field a wrong format (example dddd instead of DD.MM.YYYY) i'll get a pop-up as an error message.
    But i would like that this error message will display in the message line (lowest line of dynpro).
    Another field is defined as an CHAR field and if i put a wrong value into this field the error message displayed in the lowest line of dynpro.
    How can i adjust this functionality if i use the date format?
    Thanks in advance.
    Regards
    Lutz

    Hi.,
    This is the Standard behavior or CL_GUI_ALV_GRID. To suppress the popup log you have  to deactivate the protocol display.
    pass space to the method ACTIVATE_DISPLAY_PROTOCOL( ) of class CL_GUI_ALV_GRID to suppress popup log.
    DATA: o_grid  TYPE REF TO cl_gui_alv_grid.
    o_grid->activate_display_protocol( space ). " To deactivate Protocol display
    do this in PBO.
    hope this helps u.,
    Thanks & Regards,
    Kiran

  • Problem with Custom container - cl_gui_custom_container/cl_gui_alv_grid

    Hi,
    I want to reuse the same custom container screen for a different data.
    First screen there will be button 1 and button 2
    if I click button 1 then calculate and display data  in custom container, if button 2 is clicked then calculate and display data with  in the same custom container.
    For this
    1. Created Custom container - CONTAINER
    2. In program defined and created custom container and custom alv grid
    g_custom_container TYPE REF TO cl_gui_custom_container,
            alv_grid                     TYPE REF TO cl_gui_alv_grid.
           IF g_custom_container IS INITIAL.
                CREATE OBJECT g_custom_container
                    EXPORTING
                  container_name = 'CONTAINER'.
                CREATE OBJECT alv_grid
                   EXPORTING
                    i_parent = g_custom_container.
          ENDIF.
    3. Display data using CALL METHOD alv_grid->set_table_for_first_display
       every thing works great for button 1
    4. when button 2 is clicked then calculate and display different set of data in same custom container which is used earlier.
    5. here I used
    call method alv_grid->free.
        call method g_custom_container->free.
    6. create above objects once again and tried to use
    call method alv_grid->set_table_for_first_display
    , to reuse the same custom container 'CONTAINER' again for a different set of data and getting ABAP dump.
    In debug mode, when I used the above method FREE for both ALV_GRID and G_CUSTOM_CONTAINER objects are not clearing.
    Please let me know how can I reuse the same container for a different set of data when button2 is pressed.
    Thanks in advance,
    Krishna
    Please use code tags to format your code and post in the correct forum
    Edited by: Rob Burbank on Oct 1, 2010 2:37 PM

    Hello Krishna
    I would recommend to use a different approach instead of trying to initialize your container instances:
    DATA:
      go_container_1 TYPE REF TO cl_gui_custom_container,
      go_container_2 TYPE REF TO cl_gui_custom_container,
      go_grid_1          TYPE REF TO cl_gui_alv_grid,
      go_grid_2          TYPE REF TO cl_gui_alv_grid.
    " NOTE: Do this coding BEFORE calling the screen
    * (1) Create 2 containers
    CREATE OBJECT g_container_1
                    EXPORTING
                  container_name = 'CONTAINER'.
    CREATE OBJECT g_container_2
                    EXPORTING
                  container_name = 'CONTAINER'.
    " NOTE: If it is not possible to use the same container name then either create an additional
    "            dummy screen having a second CUSTOM_CONTROL element or replace
    " the customer containers with docking containers -> here you do not need to give a container name
    * (2) Create 2 grid instances using a different container
    * (3) Link the first container to the screen using its LINK method:
      CALL METHOD go_container_1
        EXPORTING
           repid = <...>
          dynnr = <...>.
    * (4) Perhaps you need to define a second dummy screen to which you link the second container
    * (5) Display first grid instance (as default)
    Now when the user pushes button 2 (to display the second grid) link container_1 to the dummy screen
    and link container_2 to your main screen.
    Regards
      Uwe

  • Dialog  problem using tabstrip & cl_gui_alv_grid

    Hi All,
         I have created a dialog program which has 2 tab strips. On first I am displaying data n a table control & on other tabstrip display same data using grid. Here to display data in grid I have used set_table_for_first_display of class cl_gui_alv_grid.
    The data is displayed successfully. But when I select second tab and return to first tab it still shows the grid on first tab in front.
    Kindly tell me what I am missing.
    Regards,
    Dilip
    Following is my code:
    REPORT  ZTEMP02.
    controls: tab type tabstrip,
              tab_c type tableview using screen 101 .
    data  :    cont1 type ref to cl_gui_custom_container,
              grid type ref to cl_gui_alv_grid.
    data : imara like mara occurs 1 with header line.
    data zmara type LVC_T_FCAT.
    data wa_mara like line of zmara.
    data flag .
           select * from mara into table imara up to 100 rows.
    call screen 100.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
    case sy-ucomm.
      when 'T1'.
        tab-activetab = 'T1'.
          FLAG = SPACE.
      when 'T2'.
        tab-activetab = 'T2'.
      WHEN 'EXT'.
        LEAVE PROGRAM.
    endcase.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Module  STATUS_0102  OUTPUT
          text
    MODULE STATUS_0102 OUTPUT.
    if FLAG is initial.
      create object :
      cont1
        exporting
           container_name = 'CONT',
      grid
        exporting
           I_PARENT = cont1.
      FLAG = 'X'.
    endif.
    call method grid->SET_TABLE_FOR_FIRST_DISPLAY
         EXPORTING
           i_structure_name = 'MARA'
         changing
           it_outtab = imara[].
    ENDMODULE.                 " STATUS_0102  OUTPUT

    Have you attached a subscreen to tab T1 .
    You will also have to use Call subscreen .

  • Events in CL_GUI_ALV_GRID - PAI

    Hi All,
    I designed the screen like below
    I am using doc container with split one is for small ALV grid and next is for text editor. - Upper Portion of screen (Upper portion is splited vertically for alv grid and text editor)
    in the bottom of screen i have tabstrip in each tab it display the detailed ALV grid. - Bottom of screen
    When you click on upper portion of alv grid, the data is displayed in below tabs of ALV and long text in text editor.
    Tabstrip data is based on the upper portion of alv, it is like itemdata and header data.
    i used hotspot event in upper portion of alv to select the row and based on the row selected, bottom portion of data should display in the alv grids.
    But when i select the row it is not triggering the PAI event and it is triggering the PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no .
    how to trigger the PAI event when we click the double click or hot spot in alv grid.
    in alv tree we have set_registered_events but not alv grid.
    Please help me.
    Thanks,
    Srinivas Manai.

    Hi ,
    I guess the follwing code will be useful to you.
    Define a class. In that define a method for event hotspot_click of cl_gui_alv_grid like below.
    CLASS-METHODS:
          handle_hotspot_click
            FOR EVENT hotspot_click OF cl_gui_alv_grid
                IMPORTING e_row_id e_column_id es_row_no.
    In the method implementation write the desired code.
    Reward if useful
    Regards,
    Sravanthi.

  • Cl_gui_alv_grid - I get a blank screen

    I seem to be having a problem with my screen.  The issue is that I am using cl_gui_alv_grid to display an ALV.  However, I call set_table_for_first_display, I get a blank screen.  I have verified that I have data in the field cat, outtab, and sort tables.  Any ideas?
    SCREEN 2000
    PROCESS BEFORE OUTPUT.
    MODULE status_2000.
    MODULE create_fieldcat.
    MODULE create_obj.
    MODULE call_alv.
    PROCESS AFTER INPUT.
    module user_command_2000.
    module exit at exit-command.
    MODULE STATUS_2000 OUTPUT.
      SET pf-status '2000'.
      SET TITLEBAR '2000'.
    ENDMODULE.                 " STATUS_2000  OUTPUT
    *&      Module  CREATE_FIELDCAT  OUTPUT
    *       text
    MODULE CREATE_FIELDCAT OUTPUT.
        CLEAR wa_fieldcat.
        wa_fieldcat-fieldname = 'PSPID'.
        wa_fieldcat-tabname = 'IT_CONTRACT'.
        wa_fieldcat-ref_field = 'PSPID'.
        wa_fieldcat-ref_Table = 'PROJ'.
        wa_fieldcat-KEY       = 'X'.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR wa_fieldcat.
        wa_fieldcat-fieldname = 'POST1'.
        wa_fieldcat-tabname = 'IT_CONTRACT'.
        wa_fieldcat-ref_field = 'POST1'.
        wa_fieldcat-ref_Table = 'PROJ'.
        wa_fieldcat-KEY       = 'X'.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR wa_fieldcat.
        wa_fieldcat-fieldname = 'SO_VALUE'.
        wa_fieldcat-coltext   = 'Sales Order Value'.
        wa_fieldcat-do_sum    = 'X'.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR wa_fieldcat.
        wa_fieldcat-fieldname = 'BILLED'.
        wa_fieldcat-coltext   = 'Amount Billed'.
        wa_fieldcat-do_sum    = 'X'.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR wa_fieldcat.
        wa_fieldcat-fieldname = 'NEBTR'.
        wa_fieldcat-coltext   = 'Cash Received'.
        wa_fieldcat-do_sum    = 'X'.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR wa_fieldcat.
        wa_fieldcat-fieldname = 'DMBTR'.
        wa_fieldcat-coltext   = 'Retention'.
        wa_fieldcat-do_sum    = 'X'.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR wa_fieldcat.
        wa_fieldcat-fieldname = 'PERCENT_BILLED'.
        wa_fieldcat-coltext   = 'Percent Billed'.
        wa_fieldcat-no_sum    = 'X'.
        APPEND wa_fieldcat TO it_fieldcat.
        CLEAR wa_sort.
        wa_sort-spos = '1'.
        wa_sort-fieldname = 'PSPID'.
        wa_sort-SUBTOT = 'X'.
        APPEND wa_sort TO it_sort.
    ENDMODULE.                 " CREATE_FIELDCAT  OUTPUT
    MODULE CREATE_OBJ OUTPUT.
      IF g_custom_container IS INITIAL.
        CREATE object g_custom_container
        EXPORTING
          container_name = 'CCONTAINER'.
        CREATE object grid
        EXPORTING
          i_parent = g_custom_container.
        CREATE object g_handler.
        SET HANDLER g_handler->top_of_page FOR grid.
      ENDIF.
    ENDMODULE.                 " CREATE_OBJ  OUTPUT
    MODULE CALL_ALV OUTPUT.
        CALL METHOD grid->set_table_for_first_display
        EXPORTING
    *    i_buffer_active               =
    *    i_bypassing_buffer            =
    *    i_consistency_check           =
    *    i_structure_name              =
    *    is_variant                    =
    *    i_save                        =
    *    i_default                     = 'X'
    *    is_layout                     =
          is_print                      = wa_print
    *    it_special_groups             =
    *    it_toolbar_excluding          =
    *    it_hyperlink                  =
    *    it_alv_graphics               =
    *    it_except_qinfo               =
    *    ir_salv_adapter               =
        CHANGING
          it_outtab                     = it_contract
          it_fieldcatalog               = it_fieldcat
          it_sort                       = it_sort
    *    it_filter                     =
        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.
    Regards,
    Davis
    I believe the problem may be that I don't have the container in the attributes list of the screen.  I am not sure why it isn't there.

    I did, if this is what you mean: 
    MODULE CREATE_OBJ OUTPUT.
      IF g_custom_container IS INITIAL.
        CREATE object g_custom_container
        EXPORTING
          container_name = 'CCONTAINER'.
        CREATE object grid
        EXPORTING
          i_parent = g_custom_container.
        CREATE object g_handler.
        SET HANDLER g_handler->top_of_page FOR grid.
      ENDIF.
    ENDMODULE.                 " CREATE_OBJ  OUTPUT
    Regards,
    Davis

  • Help needed in using cl_gui_alv_grid  and cl_gui_custom_container.

    Hi experts,
       I have created a screen with custom control( cl_gui_custom_container ) and displayed a alv using cl_gui_alv_grid in the screen. I have to enter tha values into the alv displayed on screen.The problem here is i have to make 2 fields as mandatory on the alv displayed on  the screen.
    Is it possible to get screen name of these fields so that i can process it in the PBO or is their some way??
    Thanks in advance
    regards,
    Ashwin

    Anyway the fields that are getting displayed is from the structure u have created right?
    So in PBO,  u can use the field names like 'MATNR'.
    If u want to process after selecting u have to right in PAI like
    CASE sy-ucomm.
      WHEN 'MATNR'.
    In oops for selected row processing
       CASE e_ucomm.
          WHEN 'FCODE'.
            CALL METHOD o_alvgrid->get_selected_rows
              IMPORTING
                et_index_rows = i_selected_rows
    *            ET_ROW_NO     =
            IF i_selected_rows[] IS INITIAL.
              MESSAGE i153 WITH text-009.
              LEAVE LIST-PROCESSING.
            ENDIF.
            CLEAR: w_reviewed_mat.
    *        w_reviewed_mat-reviewed = c_x.
    *        w_reviewed_mat-reviewedby = sy-uname.
    *        w_reviewed_mat-reviewedon = sy-datum.
            LOOP AT i_selected_rows INTO w_selected_rows.
              READ TABLE i_output INTO w_output INDEX w_selected_rows-index.
              IF sy-subrc EQ 0.
                w_reviewed_mat-matnr = w_output-matnr.
              ENDIF.
              APPEND w_reviewed_mat TO i_reviewed_mat.
              CLEAR: w_reviewed_mat-matnr.
            ENDLOOP.
    *        MODIFY zzcs_mat FROM TABLE i_reviewed_mat.
          WHEN OTHERS.
        ENDCASE.

  • Can we use cl_gui_alv_grid to give input on the screen?

    Hi experts ,
        Can we use <b>cl_gui_alv_grid</b> to give input on the screen  and save the input in some internal table which is passed as a parameter with the calling method of
    cl_gui_alv_grid??
    Thanks in advance
    regards,
    Ashwin

    OR you want to can set any particular field by
          ls_fcat-edit = 'X'.
    in the field catalog for that field .
    Assign the points if it helps you ...
    Gaurang

  • Edittable ALV grid using CL_GUI_ALV_GRID supported in ERP 4.7

    Hi..
    I like to know whether EDItable ALV grid is Supported in  version 4.7 .....
    ..Thanks & Regards
    Ashish

    Hi..
    1. To make the whole grid editable: pass EDIT field for layout structure(lvc_s_layo) as 'X', in this way your whole grid would be editable.
    2. To make few fields editable: pass EDIT field for catalog(lvc_t_fcat) for the relevant fields as 'X', your grid with those relevant fields will be editable.
    3. To make columns editable: This is bit tricky...you have to include a field with type LVC_T_STYL(this is a table type) in your internal table which is used for final display, you have to append all those fields in this table type field and pass the field style the value as "cl_gui_alv_grid=>mc_style_enabled"(this means making the field ediable)
    Regards,
    Mark

  • Using cl_gui_alv_grid class in report , but when no data , entire session closed ?

    Hi ,
    I am using cl_gui_alv_grid for one of my report . It is working fine when there are reocords , but when there is no record
    entire session will be closed from selection screen itself.
    Having class with data /method declaration and an event class ..
    Appreciate your help..
    Kind regards
    Rama

    Hello Siva ,
    Code an EVENT for NO DATA in the main class. I guess you have already done the same
    Having class with data /method declaration and an event class ..
    Now while implementing the method for that event , don't forget to write LEAVE LIST-PROCESSING also.
    For eg :
    Now RAISE this event when SY-SUBRC is NE 0 for the SELECT statement i.e no data found.

  • Regarding ALV ( To be displayed in Tree Format)

    Hi all,
    I am working on a ALV report which is to be displayed in Tree Structure . I found some demo programs within SAP .. but do we have an Alternative .. all those Demos use  OOPS concept .. Can this Report be done without using OOPS in ALV.
    Please Suggest.
    Thanks & Regards
    Srinivas

    Hi,
    This is a ALV Report with tree structure.
    report  zwmr_pick_status_report no standard page heading
                                    message-id zw.
    Type Pools                                                           *
    type-pools: icon, slis.
    Tables                                                               *
    tables: tvst,
            likp,
            t30b,
            vekp,
            zpallettr,
            zvantr.
    Types                                                                *
    types:
      begin of ty_data,
         lgtor       like likp-lgtor,             " door
         vbeln       like likp-vbeln,             " delivery
         wbstk       like vbuk-wbstk,             " Goods movement status
         kostk       like vbuk-kostk,             " Picking status
         posnr       like lips-posnr,             " item
         route       like likp-route,             " route
         wadat       like likp-wadat,             " goods issue date
         lvsta       like vbup-lvsta,             " warehouse status
         packvorschr like vekp-packvorschr,       " pack mnemonic
         exidv       like vekp-exidv,             " handling unit
         zpallet_no(10),  "like zpallettr-zpallet_no,   " pallet no
         zcount_check like zpallettr-zcount_check," count check flag
         zvan_no(10),     "like zvantr-zvan_no,         " van no
         zvan_print  like zvantr-zvan_print,      " van manifest print
         zeod_print  like zvantr-zeod_print,      " eod manifest print
         zzpackclass like vekp-zzpackclass,       " package class
         zzti        like vekp-zzti,              " T.I. value
      end of ty_data.
    Data                                                                 *
    ranges: r_del   for likp-vbeln,
            r_lgtor for likp-lgtor.
    ranges: r_vanno for zvantr-zvan_no,
            r_palno for zpallettr-zpallet_no.
    data: begin of number_range occurs 0,
             mark(1),
             id(3),
             num(10) type n,
             desc like zpalletmd-zdesc,
          end of number_range.
    data: t_disp_tab  type standard table of zpickdisp,
          t_data_tab  type ty_data  occurs 0 with header line,
          t_disp_head type standard table of zpickhead.
    data: w_numrnge like number_range,
          w_number(10) type n.
    data: t_likp     like likp      occurs 0 with header line,
          t_lips     like lips      occurs 0 with header line,
          t_vbuk     like vbuk      occurs 0 with header line,
          t_vbup     like vbup      occurs 0 with header line,
          t_vepo     like vepo      occurs 0 with header line,
          t_vekp     like vekp      occurs 0 with header line,
          t_vantr    like zvantr    occurs 0 with header line,
          t_pallettr like zpallettr occurs 0 with header line,
          w_likp     like likp,
          w_lips     like lips,
          w_vbuk     like vbuk,
          w_vbup     like vbup,
          w_vepo     like vepo,
          w_vekp     like vekp.
    ALV DATA *****
    data:
         g_grid             type ref to cl_gui_alv_grid,
         g_sort             type slis_t_sortinfo_alv,
         g_custom_container type ref to cl_gui_custom_container,
         g_layout           type slis_layout_alv,
         gt_fieldcat        type slis_t_fieldcat_alv,
         t_fldcat           like line of gt_fieldcat,
         g_keyinfo          type slis_keyinfo_alv,
         gt_events          type slis_t_event,
         gs_event           type slis_alv_event,
         w_sy_repid         like sy-repid.
    data: begin of seltab occurs 0.
            include structure rsparams.
    data: end of seltab.
    SYSTEM GENERATED TABLE CONTROL DATA ********
    DECLARATION OF TABLECONTROL 'TC_TABCON' ITSELF
    controls: tc_tabcon type tableview using screen 0100.
    LINES OF TABLECONTROL 'TC_TABCON'
    data:     g_tc_tabcon_lines  like sy-loopc.
    data:     ok_code like sy-ucomm.
    Constants                                                            *
    constants: c_data_class like klah-class value 'DG_DATA',
               c_mat_class  like rmclf-klart value '001',
               c_pack       like lips-mtart value 'VERP',
               c_a(1)            value 'A',
               c_b(1)            value 'B',
               c_c(1)            value 'C',
               c_yes(1)          value 'X',
               c_no(1)           value ' '.
    Selection screen                                                     *
    standard report select options block
    selection-screen begin of block a with frame title text-002.
    select-options:
      s_wadat for likp-wadat no-extension obligatory.  " Goods Issue Date
    *parameters:                                           "TR01-
    p_vstel like tvst-vstel obligatory. " Shipping Point "TR01-
    select-options:                                             "TR01+
      p_vstel for tvst-vstel.            " Shipping Point  "TR01+
    select-options:
      s_lfart for likp-lfart,            " Delivery type
      s_lgtor for t30b-lgtor,            " Door selection
      s_exidv for vekp-exidv,            " Handling Unit
      s_vbeln for likp-vbeln.            " Delivery
    parameters:
      p_exdata as checkbox.              " Show extra columns flag
    selection-screen end of block a.
    van/pallet specific select options block
    selection-screen begin of block b with frame title text-001.
    select-options:
      s_palno for zpallettr-zpallet_no, " no-extension,
      s_vanno for zvantr-zvan_no.       " no-extension.
    selection-screen end of block b.
    Value Request Events                                                 *
    at selection-screen on value-request for s_palno-low.
      clear: number_range, w_number .
      refresh number_range.
    select numbers and display pop up screen for selection
      perform select_pal_nos.
      s_palno-low = w_number.
    at selection-screen on value-request for s_palno-high.
      clear: number_range, w_number .
      refresh number_range.
    select numbers and display pop up screen for selection
      perform select_pal_nos.
      s_palno-high = w_number.
    at selection-screen on value-request for s_vanno-low.
      clear: number_range, w_number .
      refresh number_range.
    select numbers and display pop up screen for selection
      perform select_van_nos.
      s_vanno-low = w_number.
    at selection-screen on value-request for s_vanno-high.
      clear: number_range, w_number .
      refresh number_range.
    select numbers and display pop up screen for selection
      perform select_van_nos.
      s_vanno-high = w_number.
    At Selection Screen                                                  *
    at selection-screen.
      perform validate_selections.
    Initialization                                                       *
    initialization.
    Start of selection                                                   *
    start-of-selection.
    clear all data tables
      clear: t_likp,
             t_lips,
             t_vbuk,
             t_vbup,
             t_vepo,
             t_vantr,
             t_pallettr,
             w_likp,
             w_lips,
             w_vbuk,
             w_vbup,
             w_vepo,
             w_vekp.
      refresh: t_likp,
               t_lips,
               t_vbuk,
               t_vbup,
               t_vepo,
               t_vantr,
               t_pallettr.
    select data for ALV
    due to different input parameters being used, to streamline the data
    selection process, different selection methods are required
      if not s_vanno is initial
      or not s_palno is initial.
      if selecting by van/pallet number, need to select the data from the
      handling unit upwards to delivery
        perform select_data_up.
      else.
      otherwise the data can be selected from the delivery downwards
        perform select_data_down.
      endif.
    End of selection                                                     *
    end-of-selection.
    call hierarchical ALV display function module
      call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
           exporting
                i_callback_program       = 'ZWMR_PICK_STATUS_REPORT'
                i_callback_pf_status_set = 'SET_STATUS'
                i_callback_user_command =
                   'USER_COMMAND' "custom gui status form
                is_layout                = g_layout  "user command form
                it_fieldcat              = gt_fieldcat
                it_sort                  = g_sort
                it_events                = gt_events
                i_tabname_header         = 't_disp_head'
                i_tabname_item           = 't_disp_tab'
                i_structure_name_header  = 'ZPICKHEAD'
                i_structure_name_item    = 'ZPICKDISP'
                is_keyinfo               = g_keyinfo
           tables
                t_outtab_header          = t_disp_head
                t_outtab_item            = t_disp_tab.
      if sy-subrc <> 0.
        message id sy-msgid type sy-msgty number sy-msgno
                with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      endif.
                                FORMS                                    *
    Includes inserted by Screen Painter Wizard. DO NOT CHANGE THIS LINE!
      include zwmr_pick_status_reporto01 .
      include zwmr_pick_status_reporti01 .
      include zwmr_pick_status_reportf01 .
    *&      Form  select_pal_nos
          select pallet numbers for search help
    form select_pal_nos.
      data: begin of t_palno occurs 0,
              zpallet_no like zpallettr-zpallet_no,
            end of t_palno.
    select all available pallet numbers
      select distinct zpallet_no from zpallettr
                      into corresponding fields of table t_palno.
      loop at t_palno.
      get pallet id
        select single zpallet_id from zpallettr
                      into number_range-id
                      where zpallet_no = t_palno-zpallet_no.
      get pallet description
        select single zdesc from zpalletmd
                      into number_range-desc
                      where zpallet_id = number_range-id.
        number_range-num = t_palno-zpallet_no.
      append to search help table
        append number_range.
      endloop.
    call pop up dialog box
      call screen 0100 starting at 5 5.
    endform.                    " select_pal_nos
    *&      Form  select_van_nos
          select van numbers for search help
    form select_van_nos.
      data: begin of t_vanno occurs 0,
              zvan_no like zvantr-zvan_no,
            end of t_vanno.
    select available van numbers
      select distinct zvan_no from zvantr
                      into corresponding fields of table t_vanno.
      loop at t_vanno.
      select van id
        select single zvan_id from zvantr
                      into number_range-id
                      where zvan_no = t_vanno-zvan_no.
      select van description (maintained in pallet tables)
        select single zdesc from zpalletmd
                      into number_range-desc
                      where zpallet_id = number_range-id.
        number_range-num = t_vanno-zvan_no.
      append to search help table
        append number_range.
      endloop.
    call pop up dialog box
      call screen 0100 starting at 5 5.
    endform.                    " select_van_nos
    *&      Form  select_data_down
          select data if selecting from delivery down
    form select_data_down.
    select all deliveries from LIKP that fulfill selection criteria
      select * from likp into table t_likp
                         where vbeln in s_vbeln
                       and   vstel eq p_vstel                 "TR01-
                         and   vstel in p_vstel
                         and   lgtor in s_lgtor
                         and   wadat in s_wadat
                         and   lfart in s_lfart.
      if sy-subrc ne 0.
      no data found
        message i007.
        exit.
      endif.
      if not t_likp[] is initial.
      select sales document headers from VBUK
        select * from vbuk into table t_vbuk
                      for all entries in t_likp
                      where vbeln eq t_likp-vbeln.
      select all relevant delivery items from LIPS
        select * from lips into table t_lips
                      for all entries in t_likp
                      where vbeln eq t_likp-vbeln
                      and   pstyv ne 'ZPAC'
                      and   pstyv ne 'ZGDP'                     "TR02+
                      and   lfimg gt 0.                         "TR01+
      endif.
      if not t_lips[] is initial.
      select all sales document line items from VBUP
        select * from vbup into table t_vbup
                      for all entries in t_lips
                      where vbeln eq t_lips-vbeln
                      and   posnr = t_lips-posnr.
      select corresponding handling unit ID's (venum)
    TR03 Replace start
       select * from vepo appending corresponding fields of table t_vepo
                     for all entries in t_lips
                     where vbeln = t_lips-vbeln
                     and   posnr = t_lips-posnr
                     and   matnr = t_lips-matnr
                     and   charg = t_lips-charg.
        select * from vepo
                      inner join vekp on vepovenum = vekpvenum
                      appending corresponding fields of table t_vepo
                      for all entries in t_lips
                      where vepo~vbeln = t_lips-vbeln
                      and   vepo~posnr = t_lips-posnr
                      and   vepo~matnr = t_lips-matnr
                      and   vepo~charg = t_lips-charg
                      and   vekp~exidv in s_exidv.
    TR03 Replace end
      endif.
    build process table
      perform move_to_table.
    endform.   "select_data_down
    *&      Form  select_data_up
          select data if selecting from van/pallet up
    form select_data_up.
      if not s_vanno is initial.
      if van then select van numbers and hence pallet numbers
        select * from zvantr into table t_vantr
                              where zvan_no in s_vanno.
                            and   vstel   eq p_vstel."TR01-
        if not t_vantr[] is initial.
          select * from zpallettr into table t_pallettr
                                  for all entries in t_vantr
                                  where zpallet_no eq t_vantr-zpallet_no.
                                and   vstel      eq p_vstel."TR01-
        endif.
      else.
      otherwise can get pallet numbers directly
        select * from zpallettr into table t_pallettr
                                where zpallet_no in s_palno.
                              and   vstel      eq p_vstel."TR01-
      endif.
      if not t_pallettr[] is initial.
      from the pallet nos. we can select the handling units
        select * from vekp into table t_vekp
                           for all entries in t_pallettr
                           where exidv eq t_pallettr-exidv
                           and   exidv ne space
                           and   exidv in s_exidv               "TR03+
                           and ( exida = 'E'                    "TR01+
                           or    exida = 'F' ).                 "TR01+
      endif.
      if not t_vekp[] is initial.
      build vbeln range from t_vekp.
        loop at t_vekp.
          r_del-sign = 'I'.
          r_del-option = 'EQ'.
          r_del-low = t_vekp-vpobjkey.
          append r_del.
        endloop.
      select all deliveries from LIKP that correspond to HU's
        select * from likp into table t_likp
                           where vbeln in r_del
                           and   wadat in s_wadat
                           and   lfart in s_lfart.
      endif.
      if not t_likp[] is initial.
      select sales document headers from VBUK
        select * from vbuk into table t_vbuk
                      for all entries in t_likp
                      where vbeln eq t_likp-vbeln.
      select all relevant delivery items from LIPS
        select * from lips into table t_lips
                      for all entries in t_likp
                      where vbeln eq t_likp-vbeln
                      and   pstyv ne 'ZPAC'
                      and   pstyv ne 'ZGDP'                     "TR02+
                      and   lfimg gt 0.                         "TR01+
      endif.
      if not t_lips[] is initial.
      select all sales document line items from VBUP
        select * from vbup into table t_vbup
                      for all entries in t_lips
                      where vbeln eq t_lips-vbeln
                      and   posnr = t_lips-posnr.
      select corresponding handling unit ID's (venum)
        select * from vepo appending corresponding fields of table t_vepo
                      for all entries in t_lips
                      where vbeln = t_lips-vbeln
                      and   posnr = t_lips-posnr
                      and   matnr = t_lips-matnr
                      and   charg = t_lips-charg.
      endif.
    build process table
      perform move_to_table.
    endform.   "select_data_up
    *&      Form  move_to_table
          move data to processing table
    form move_to_table.
      loop at t_vepo.
        clear t_data_tab.
      delivery lines.
        clear w_lips.
        read table t_lips with key vbeln = t_vepo-vbeln
                                   posnr = t_vepo-posnr
                                   into w_lips.
        move-corresponding w_lips to t_data_tab.
      sales document line items
        clear w_vbup.
        read table t_vbup with key vbeln = t_vepo-vbeln
                                   posnr = t_vepo-posnr
                                   into w_vbup.
      if w_vbup-kosta = space.                   "TR01-
        not relevant for picking
        delete t_vepo.                           "TR01-
        continue.                                "TR01-
      else.                                      "TR01-
        move-corresponding w_vbup to t_data_tab.
      endif.                                     "TR01-
      sales doc header
        clear w_vbuk.
        read table t_vbuk with key vbeln = t_vepo-vbeln
                               into w_vbuk.
        move-corresponding w_vbuk to t_data_tab.
      delivery header
        clear w_likp.
        read table t_likp with key vbeln = t_vepo-vbeln
                               into w_likp.
        move-corresponding w_likp to t_data_tab.
      select handling unit info using vepo entry
        clear w_vekp.
        if t_vekp[] is initial.
          select single * from vekp into w_vekp
                                    where venum = t_vepo-venum.
        else.
          read table t_vekp with key venum = t_vepo-venum
                                     into w_vekp.
          if sy-subrc ne 0.
            select single * from vekp into w_vekp
                            where venum = t_vepo-venum.
          endif.
        endif.
        move-corresponding w_vekp to t_data_tab.
      select pallet / van load information
        select single zpallet_no zcount_check from zpallettr
                                 into (t_data_tab-zpallet_no,
                                       t_data_tab-zcount_check)
                                 where exidv eq w_vekp-exidv.
        if not t_data_tab-zpallet_no in s_palno.                "TR01+
          continue.                                             "TR01+
        endif.                                                  "TR01+
        if sy-subrc = 0.
          select single zvan_no zvan_print zeod_print from zvantr
                        into (t_data_tab-zvan_no,
                              t_data_tab-zvan_print,
                              t_data_tab-zeod_print)
                        where zpallet_no eq t_data_tab-zpallet_no.
          if not t_data_tab-zvan_no in s_vanno.                 "TR01+
            continue.                                           "TR01+
          endif.                                                "TR01+
        endif.
        append t_data_tab.
      endloop.
    *-----> TR01+ start
    If the delivery has yet to be packed, then need to include in report
    Thus delete t_lips here and if any entries left after looping through
    t_vepo, these will also need to be added to t_data_tab
    if the selection is by handling unit though we do not want these"TR03+
      if s_exidv is initial.                                          "TR03+
        loop at t_vepo.
          read table t_lips with key vbeln = t_vepo-vbeln
                                     posnr = t_vepo-posnr.
          if sy-subrc = 0.
            delete t_lips index sy-tabix.
          endif.
        endloop.
        if not t_lips[] is initial.
      move any unpacked items to the data table
          perform move_lips_to_table.
        endif.
      endif.                                                          "TR03+
    *<---- TR01+ End
    get relevant status icons
      perform select_icons.
    prepare ALV data
      perform prepare_alv.
    endform.                    " select_data
    *&      Form  select_icons
          select icons for display and move data to display table
    form select_icons.
      data: w_disp_tab like zpickdisp,
            w_disp_head like zpickhead,
            w_color like zpickdisp-color,
            ov_icon like zpickdisp-ov_icon,
            gi_icon like zpickdisp-gi_icon,
            to_icon like zpickdisp-to_icon,
            lp_icon like zpickdisp-lp_icon,
            pc_icon like zpickdisp-pc_icon,
            lv_icon like zpickdisp-lv_icon,
            vm_icon like zpickdisp-vm_icon,
            em_icon like zpickdisp-em_icon,
            t_ovst_tab like t_disp_tab with header line.
      constants: c_col1(3) value 'C10',
                 c_col2(3) value 'C20'.
      sort t_data_tab by lgtor vbeln.
      w_color = c_col2.
      loop at t_data_tab.
        at new lgtor.
        fill ALV header table
          clear w_disp_head.
          w_disp_head-lgtor = t_data_tab-lgtor.
          append w_disp_head to t_disp_head.
        endat.
      goods issue status & overall amber/green only
        case t_data_tab-wbstk.
          when c_c.
            move icon_green_light to gi_icon.
            move icon_green_light to ov_icon.
          when others.
            move icon_red_light to gi_icon.
            move icon_yellow_light to ov_icon.
        endcase.
      transfer order status
        case t_data_tab-lvsta.
          when c_a.
            move icon_red_light to to_icon.
          when c_b.
            move icon_yellow_light to to_icon.
          when c_c.
            move icon_green_light to to_icon.
          when space.
          write N/A
            to_icon = 'N/A'.
        endcase.
      loaded to pallet status
        if not t_data_tab-zpallet_no is initial.
          move icon_green_light to lp_icon.
        else.
          move icon_red_light to lp_icon.
        endif.
      pallet count status
        if not t_data_tab-zcount_check is initial.
          move icon_green_light to pc_icon.
        else.
          move icon_red_light to pc_icon.
        endif.
      loaded to van status
        if not t_data_tab-zvan_no is initial.
          move icon_green_light to lv_icon.
        else.
          move icon_red_light to lv_icon.
        endif.
      van manifest status
        if not t_data_tab-zvan_print is initial.
          move icon_green_light to vm_icon.
        else.
          move icon_red_light to vm_icon.
        endif.
      end of day manifest status
        if not t_data_tab-zeod_print is initial.
          move icon_green_light to em_icon.
        else.
          move icon_red_light to em_icon.
        endif.
      move working data table to display table
        move-corresponding t_data_tab to w_disp_tab.
        w_disp_tab-ov_icon = ov_icon.
        w_disp_tab-gi_icon = gi_icon.
        w_disp_tab-to_icon = to_icon.
        w_disp_tab-lp_icon = lp_icon.
        w_disp_tab-pc_icon = pc_icon.
        w_disp_tab-lv_icon = lv_icon.
        w_disp_tab-vm_icon = vm_icon.
        w_disp_tab-em_icon = em_icon.
        w_disp_tab-color = w_color.
      fill N/A values for initial fields for display
        if w_disp_tab-packvorschr is initial.
          w_disp_tab-packvorschr = 'N/A'.
        endif.
        if w_disp_tab-exidv is initial.
          w_disp_tab-exidv = 'N/A'.
        endif.
        if w_disp_tab-zpallet_no is initial.
          write 'N/A' to w_disp_tab-zpallet_no.
        endif.
        if w_disp_tab-zvan_no is initial.
          write 'N/A' to w_disp_tab-zvan_no.
        endif.
      display different color for new doc number
        at end of vbeln.
          if w_color = c_col1.
            w_color = c_col2.
          elseif w_color = c_col2.
            w_color = c_col1.
          endif.
        endat.
        append w_disp_tab to t_disp_tab.
        clear w_disp_tab.
      endloop.
    we have all the icons in display but need to check the overall status
    as this refers to the line items
    green and amber statuses already set and use the same criteria as the
    goods issue status unless detected as red here
      data: ov_stat_red(1).
      clear w_disp_tab.
      sort t_disp_tab by vbeln.
      loop at t_disp_tab into w_disp_tab.
        at new vbeln.
        check all line items for delivery
          loop at t_data_tab where vbeln = w_disp_tab-vbeln.
            if t_data_tab-lvsta = c_a.
            set overall status to red
              ov_stat_red = c_yes.
              exit.
            else.
            leave green/amber status icon as previosly determined
            endif.
          endloop.
          if ov_stat_red = c_yes.
          set overall status to red for all items in that delivery
            clear ov_stat_red.
            move icon_red_light to w_disp_tab-ov_icon.
            modify t_disp_tab from w_disp_tab transporting ov_icon
                              where vbeln = w_disp_tab-vbeln.
          endif.
        endat.
      endloop.
    endform.                    " select_icons
    *&      Form  fill_layout
          fill ALV layout parameters
    form fill_layout.
      clear g_layout.
      g_layout-colwidth_optimize = c_yes.   " column width optimisation
      g_layout-zebra = space.               " alternate line colors
      g_layout-box_fieldname = 'MARK'.      " checkbox fieldname
      g_layout-info_fieldname = 'COLOR'.    " highlight row indicator
      g_layout-no_vline = space.            " vertical line
      g_layout-key_hotspot = space.         " hotspot field
      g_layout-f2code = 'PICK'.             " F2 ok_code
      g_layout-numc_sum = c_yes.            " sum numc fields
      g_layout-box_tabname = 't_disp_head'. " checkbox table name
      g_layout-expand_fieldname = 'EXPAND'. " expand field name
    endform.                    " fill_layout
    *&      Form  fill_sort
          fill ALV sort table
    form fill_sort.
      data: w_g_sort type slis_sortinfo_alv.
      w_g_sort-spos      = 1.
      w_g_sort-fieldname = 'LGTOR'.
      w_g_sort-tabname   = 't_disp_tab'.
      w_g_sort-up        = c_yes.
      append w_g_sort to g_sort.
      w_g_sort-spos      = 2.
      w_g_sort-fieldname = 'VBELN'.
      w_g_sort-tabname   = 't_disp_tab'.
      w_g_sort-up        = c_yes.
      append w_g_sort to g_sort.
      w_g_sort-spos      = 3.
      w_g_sort-fieldname = 'POSNR'.
      w_g_sort-tabname   = 't_disp_tab'.
      w_g_sort-up        = c_yes.
      append w_g_sort to g_sort.
      w_g_sort-spos      = 4.
      w_g_sort-fieldname = 'WADAT'.
      w_g_sort-tabname   = 't_disp_tab'.
      w_g_sort-up        = c_yes.
      append w_g_sort to g_sort.
    endform.                    " fill_sort
    *&      Form  fill_fieldcat
          Fill field category structure for ALV
    form fill_fieldcat.
      clear t_fldcat.
    create field catalogue for header table
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name         = 'ZWMR_PICK_STATUS_REPORT'
                i_internal_tabname     = 't_disp_head'
                i_structure_name       = 'ZPICKHEAD'
                i_client_never_display = c_yes
           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.
    ceate field catalogue for items table
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name         = 'ZWMR_PICK_STATUS_REPORT'
                i_internal_tabname     = 't_disp_tab'
                i_structure_name       = 'ZPICKDISP'
                i_client_never_display = c_yes
           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.
    modify field catalogue for this report
    set no display flag if not requested on selection screen
      if p_exdata ne c_yes.
        t_fldcat-no_out    =  c_yes.
        modify gt_fieldcat from t_fldcat transporting no_out
                           where fieldname eq 'PACKVORSCHR'
                           or    fieldname eq 'EXIDV'
                           or    fieldname eq 'ZPALLET_NO'
                           or    fieldname eq 'ZVAN_NO'
                           or    fieldname eq 'ZZPACKCLASS'
                           or    fieldname eq 'ZZTI'.
      endif.
    set no display flag for item level LGTOR field
      t_fldcat-no_out    =  c_yes.
      modify gt_fieldcat from t_fldcat transporting no_out
                         where fieldname eq 'LGTOR'
                         and   tabname   eq 't_disp_tab'.
    prevent display of technical fields
      t_fldcat-tech = c_yes.
      modify gt_fieldcat from t_fldcat transporting tech
                         where fieldname eq 'EXPAND'
                         or    fieldname eq 'SELKZ'.
    set vbeln as key
      t_fldcat-key = c_yes.
      modify gt_fieldcat from t_fldcat transporting key
                         where fieldname eq 'VBELN'.
    prevent scrolling for info fields
      t_fldcat-fix_column = c_yes.
      modify gt_fieldcat from t_fldcat transporting fix_column
                         where fieldname eq 'VBELN'.
    endform.                    " fill_fieldcat
    *&      Form  prepare_ALV
          Fill ALV parameters
    form prepare_alv.
    fill ALV key info
      g_keyinfo-header01 = 'LGTOR'.
      g_keyinfo-item01   = 'LGTOR'.
    fill ALV events
      gs_event-name = 'TOP_OF_PAGE'.
      gs_event-form = 'TOP_OF_PAGE'.
      append gs_event to gt_events.
    fill ALV sort table
      perform fill_sort.
    fill ALV layout structure
      perform fill_layout.
    fill ALV field category
      perform fill_fieldcat.
    endform.                    " prepare_ALV
    *&      Form  user_command
          form called on user command from ALV list
    form user_command using r_ucomm     like sy-ucomm
                            rs_selfield type slis_selfield.
      data: index type i,
            w_disp_head like line of t_disp_head,
            w_door like likp-lgtor.
      clear r_lgtor. refresh r_lgtor.
      case r_ucomm.
        when 'PICK'. " Double click line
        when 'VANM'. " Van Manifest button
        read the header table where has been selected
          loop at t_disp_head into w_disp_head where mark = c_yes.
            r_lgtor-sign   = 'I'.
            r_lgtor-option = 'EQ'.
            r_lgtor-low    = w_disp_head-lgtor.
            append r_lgtor.
          endloop.
        print the van manifest
          perform print_van_manifest tables r_lgtor.
        when 'EODM'. " EOD Manifest button
        read the header table where has been selected
          loop at t_disp_head into w_disp_head where mark = c_yes.
            r_lgtor-sign   = 'I'.
            r_lgtor-option = 'EQ'.
            r_lgtor-low    = w_disp_head-lgtor.
            append r_lgtor.
          endloop.
        print the end of day manifest
          perform print_eod_manifest tables r_lgtor.
        when 'REFR'. "Refresh
        refresh display
          w_sy_repid = sy-repid.
          call function 'RS_REFRESH_FROM_SELECTOPTIONS'
               exporting
                    curr_report     = w_sy_repid
               tables
                    selection_table = seltab.
              exceptions
                  not_found       = 1
                  no_report       = 2
                  others          = 3.
          if sy-

  • Very urgent regarding ALV

    Hi all,
    I have displayed data in alv.and the error condition is that if for a material if it has more than one S as ok_status records then it should throw an error. This logic is working fine.
    Now suppose at first time user had entered S through keyboard which fails the condition so it throws an error first time.
    Now user can change the ok  status back to I or O from S (through keyboard although f4 help is available) which satisfies the conditon so that record should be saved. but when user presses save button then in the ALV display the changed status I or O for that record again converted back to status S automatically. and again gives an error.
    if we try third time then it allows to save with record other than s ok status i.e. I or O.
    this problem is comming only when we change the value through keyboard. If we select value using f4 help then whole logic is working fine, no problem at all.
    Can you please help me out in this regard
    Its very urgent.
    Thanks & Regards
    Ashutosh.

    Hi,
    to exclude toolbar buttons..
      DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
    DATA LS_EXCLUDE TYPE UI_FUNC.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
      APPEND LS_EXCLUDE TO LT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
      APPEND LS_EXCLUDE TO LT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
      APPEND LS_EXCLUDE TO LT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
      APPEND LS_EXCLUDE TO LT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
      APPEND LS_EXCLUDE TO LT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
      APPEND LS_EXCLUDE TO LT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
      APPEND LS_EXCLUDE TO LT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
      APPEND LS_EXCLUDE TO LT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
      APPEND LS_EXCLUDE TO LT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
      APPEND LS_EXCLUDE TO LT_EXCLUDE.
    CALL METHOD G_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
    <b>      IT_TOOLBAR_EXCLUDING = LT_EXCLUDE</b>
          IS_LAYOUT            = GS_LAYOUT
        CHANGING
          IT_FIELDCATALOG      = IT_FIELDCAT
          IT_OUTTAB            = IT_FINAL[].
    and you told you are using REUSE_ALV_GRID_DISPLAY_LVC
    then in the user_command do this....
    then your problem will be solved.
    in the top you declare this..
      DATA: REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
    FORM USER_COMMAND  USING R_UCOMM LIKE SY-UCOMM
                             RS_SELFIELD TYPE SLIS_SELFIELD.
    *then insert the following code in your USER_COMMAND routine...
      IF REF_GRID IS INITIAL.
        CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
          IMPORTING
            E_GRID = REF_GRID.
      ENDIF.
      IF NOT REF_GRID IS INITIAL.
        CALL METHOD REF_GRID->CHECK_CHANGED_DATA
      ENDIF.
    ENDFORM.
    Regards
    vijay

Maybe you are looking for

  • Print Button in RepoerViewer tool bar doesn't work!

    Post Author: Tasha_k CA Forum: .NET Hello everyone! I have a problem with ReportViewer Print Button once web app is published on clients server - print button just isn't working. Little message is appearing in status bar in  Internet Explorer "Done,

  • FMJ2 - Carry forward with budget Line

    Hello, I have done a carry forward FMJ2 and everything works perfectly. However the client let me know that they also want the budget line associated to the commitments to be carry forwarded. When I try that, the system gives me error FMAVC005. In "D

  • File deleted from file manager

    By mistake I deleted a file from phone memory in the file manager. Is to important to have all the orgianal files in the file manager or do I reload the software. What do I do. i have a E 7.

  • Data Modelling Problem with many additional Fields

    Dear All I am extracting transactional data from a CRM system where a number of  Customer Fields have been added. There are some 150 additional fields which are all included in a User Append structure and are all related to the transaction ( not mast

  • Print Multi-page TIff images

    Hi, I have multipage tiff images. I am loading the image in the jScrollPane. I also have NEXT Button which show the next image of the tiff file in the JscrollPane. Right now i have a PRINT button which prints the image that's in the jscrollpane. I wa