Select* in ALV

Hi experts
can anyone explain select* statement in ALV report. i wana declare a primary key to fetch the output frm a custom table.
thanks!

Even ALV or Normal Report - Select query is the same.
In alv ,no need to have write statement,in normal report - if you want to print ,then we use write statement.
See the simple example in ALV:
*& Report  Z_ALV_GRID2
REPORT  Z_ALV_GRID2.
TYPE-POOLS: SLIS.
DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
      FIELDCAT_LN LIKE LINE OF FIELDCAT,
      SORTCAT          TYPE SLIS_T_SORTINFO_ALV,
      SORTCAT_LN       LIKE LINE OF SORTCAT,
      EVENTCAT         TYPE SLIS_T_EVENT,
      EVENTCAT_LN      LIKE LINE OF EVENTCAT.
DATA: COL_POS TYPE I.
******Declare Data Areas for List Viewer (End)**************
******Declare Internal Table to Store Selected Data (Begin)*
DATA: BEGIN OF IVBAP OCCURS 0,
         VBELN LIKE VBAP-VBELN,
         POSNR LIKE VBAP-POSNR,
         MATNR LIKE VBAP-MATNR,
         MATKL LIKE VBAP-MATKL,
         CHARG LIKE VBAP-CHARG,
         KWMENG LIKE VBAP-KWMENG,
         VRKME LIKE VBAP-VRKME,
         ARKTX LIKE VBAP-ARKTX,
     END OF IVBAP.
******Declare Internal Table to Store Selected Data (End)***
*******Select Data into Internal Table (Begin) ***************
SELECT VBELN POSNR MATNR MATKL KWMENG VRKME
        INTO CORRESPONDING FIELDS OF TABLE IVBAP
       FROM VBAP WHERE VBELN NE 0.
Select Data into Internal Table (End) ****************
Build Field Catalogs (Begin)**************************
PERFORM BUILD_FIELDCAT.
PERFORM BUILD_FIELDCAT2.
PERFORM BUILD_FIELDCAT3.
PERFORM BUILD_SORTCAT.
PERFORM BUILD_SORTCAT2.
******Build Field Catalogs (End)*****************************
******Build Event Catalog (Begin)****************************
PERFORM BUILD_EVENTCAT.
******Build Event Catalog (End)******************************
******Start List Viewer (Begin)******************************
PERFORM START_LIST_VIEWER.
******Start List Viewer (End)********************************
********FORM ROUTINES (Begin)********************************
FORM BUILD_FIELDCAT.
ADD 1 TO COL_POS.
FIELDCAT_LN-REF_TABNAME = 'VBAP'.
FIELDCAT_LN-FIELDNAME = 'VBELN'.
FIELDCAT_LN-KEY = 'X'.
FIELDCAT_LN-DO_SUM = SPACE.
FIELDCAT_LN-COL_POS = COL_POS.
FIELDCAT_LN-NO_OUT = SPACE.
FIELDCAT_LN-QFIELDNAME = SPACE.
FIELDCAT_LN-HOTSPOT = 'X'.
APPEND FIELDCAT_LN TO FIELDCAT.
ENDFORM.
FORM BUILD_FIELDCAT2.
ADD 1 TO COL_POS.
FIELDCAT_LN-REF_TABNAME = 'VBAP'.
FIELDCAT_LN-FIELDNAME = 'MATNR'.
FIELDCAT_LN-KEY = SPACE.
FIELDCAT_LN-DO_SUM = SPACE.
FIELDCAT_LN-COL_POS = COL_POS.
FIELDCAT_LN-NO_OUT = SPACE.
FIELDCAT_LN-QFIELDNAME = SPACE.
FIELDCAT_LN-HOTSPOT = SPACE.
APPEND FIELDCAT_LN TO FIELDCAT.
ENDFORM.
FORM BUILD_FIELDCAT3.
ADD 1 TO COL_POS.
FIELDCAT_LN-REF_TABNAME = 'VBAP'.
FIELDCAT_LN-FIELDNAME = 'MATKL'.
FIELDCAT_LN-KEY = SPACE.
FIELDCAT_LN-DO_SUM = 'X'.
FIELDCAT_LN-COL_POS = COL_POS.
FIELDCAT_LN-NO_OUT = SPACE.
FIELDCAT_LN-QFIELDNAME = SPACE.
FIELDCAT_LN-HOTSPOT = SPACE.
APPEND FIELDCAT_LN TO FIELDCAT.
ENDFORM.
FORM BUILD_SORTCAT.
SORTCAT_LN-SPOS = '1'.
SORTCAT_LN-FIELDNAME = 'MATNR'.
SORTCAT_LN-UP = 'X'.
SORTCAT_LN-DOWN = SPACE.
SORTCAT_LN-SUBTOT = 'X'.
APPEND SORTCAT_LN TO SORTCAT.
ENDFORM.
FORM BUILD_SORTCAT2.
SORTCAT_LN-SPOS = '2'.
SORTCAT_LN-FIELDNAME = 'VRKME'.
SORTCAT_LN-UP = SPACE.
SORTCAT_LN-DOWN = 'X'.
SORTCAT_LN-SUBTOT = SPACE.
APPEND SORTCAT_LN TO SORTCAT.
ENDFORM.
FORM BUILD_EVENTCAT.
EVENTCAT_LN-NAME = 'TOP_OF_PAGE'.
EVENTCAT_LN-FORM = 'PAGE_HEADER'.
APPEND EVENTCAT_LN TO EVENTCAT.
ENDFORM.
FORM START_LIST_VIEWER.
DATA: PGM LIKE SY-REPID.
PGM = SY-REPID.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
          I_INTERFACE_CHECK        = ' '
         I_CALLBACK_PROGRAM       = PGM
          i_callback_pf_status_set = ' '
         I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
          I_STRUCTURE_NAME         =
          IS_LAYOUT                =
         IT_FIELDCAT              = FIELDCAT
          IT_EXCLUDING             =
          IT_SPECIAL_GROUPS        =
         IT_SORT                  = SORTCAT
          IT_FILTER                =
          IS_SEL_HIDE              =
          I_DEFAULT                = 'X'
         I_SAVE                   = 'A'
          IS_VARIANT               = ' '
          IT_EVENTS                =
          IT_EVENT_EXIT            =
          IS_PRINT                 =
          I_SCREEN_START_COLUMN    = 0
          I_SCREEN_START_LINE      = 0
          I_SCREEN_END_COLUMN      = 0
          I_SCREEN_END_LINE        = 0
     IMPORTING
          E_EXIT_CAUSED_BY_CALLER  =
          es_exit_caused_by_user   =
     TABLES
          T_OUTTAB                 = IVBAP
     EXCEPTIONS
          PROGRAM_ERROR            = 1
          OTHERS                   = 2.
ENDFORM.
*******Process Call Back Events (Begin)**************************
FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM
                       SELFIELD TYPE SLIS_SELFIELD.
READ TABLE IVBAP INDEX SELFIELD-TABINDEX.
CHECK SY-SUBRC = 0.
CASE UCOMM.
WHEN '&IC1'.
CASE SELFIELD-SEL_TAB_FIELD.
WHEN 'IVBAP-VBELN'.
    SET PARAMETER ID 'AUN' FIELD IVBAP-VBELN.
    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
WHEN 'IVBAP-MATNR'.
    SET PARAMETER ID 'MAT' FIELD IVBAP-MATNR.
    CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM.
*******Process Call Back Events (End)*****************************
**********FORM ROUTINES (END)*************************************

Similar Messages

  • Get Selections From ALV on Multiple Selection Mode

    Hi,
    How can i get values of selected rows from ALV that has selection '0..n' (multiple selection) ?
    Can somebody help me pls?
    Thanks.

    Hi Nurullah,
    Steps to make multiple rows selectable in ALV:
    1) Create the selection property of the node that you are binding to the DATA node as o..n
    2) Un-check the, "Initialization Lead Selection" checkbox for the node which you are using to bind to the DATA node
    3) In the WDDOINIT method specify the ALV's selection mode as MULTI_NO_LEAD. It is important that you set the selection mode to MULTI_NO_LEAD or else in the end you would be capturing 1 row lesser than the total number of rows the user has selected. This is because 1 of the rows would have the LeadSelection property & our logic wouldnt be reading the data for that row. Check the example code fragment as shown below:
    DATA lo_value TYPE REF TO cl_salv_wd_config_table.
      lo_value = lo_interfacecontroller->get_model( ).
      CALL METHOD lo_value->if_salv_wd_table_settings~set_selection_mode
        EXPORTING
          value = cl_wd_table=>e_selection_mode-MULTI_NO_LEAD.
    Steps to get the multiple rows selected by the user
    In order to get the multiple rows which were selected by the user you will just have to call the get_selected_elements method of if_wd_context_node. So as you can see its no different from how you would get the multiple rows selected by the user in a table ui element. First get the reference of the node which you have used to bind to the ALV & then call this method on it. Check the example code fragment below:
    METHOD get_selected_rows .
      DATA: temp TYPE string.
      DATA: lr_node TYPE REF TO if_wd_context_node,
                wa_temp  TYPE REF TO if_wd_context_element,
                ls_node1 TYPE wd_this->element_node_flighttab,
                lt_node1 TYPE wd_this->elements_node_flighttab.
      lr_node = wd_context->get_child_node( name = 'NODE_FLIGHTTAB' ).
    " This would now contain the references of all the selected rows
      lt_temp = lr_node->get_selected_elements( ).
        LOOP AT lt_temp INTO wa_temp.
    " Use the references to get the exact row data
          CALL METHOD wa_temp->get_static_attributes
            IMPORTING
              static_attributes = ls_node1.
          APPEND ls_node1 TO lt_node1.
          CLEAR ls_node1.
        ENDLOOP.
    ENDMETHOD.
    Hope this helps resolve your problem.
    Regards,
    Uday

  • How to process Line Selection on ALV Table in ABAP WebDynpro

    Hi there,
    I have a view with an ALV table whose context node retrieves its data from a Service Call for a method.
    The method provides certain data of a database table which the ALV displays.
    Now I would like to be able to select one row of that ALV table and after pressing a button or doubleclicking on the row or whatever a different view (as for me it is also ok on the same view) should appear to display the details of that selection.
    I only need to know how to retrieve the selected data.
    Or its index within the internal table.
    I am already looking for hours for a useful thread and actually there is one which obviously is about a similar issue apart from the multiple selection part: 
    How to process multiple row selection in ALV table in Wendynpro ABAP? Help!
    but i am afraid that i don't understand it. Or at least I misunderstand it since it does not work with me.
    The system example mentioned in the thread does not help me either because it somehow does not correspond to my needs, does it?
    It would be GREAT if somebody could help me with that. Please keep it simple for I am not an expert in webdynpro yet (obviously ^^) and also please explain in detail what I have to do with the context nodes since I am not sure whether the selection is stored in my already existing node or whether I need a special one for that.
    Thanks!!
    christina

    Hi Christina,
    If you just want to get one column data of the line that user clicked, use the Web Dynpro Code Wizard to Read Context of attibute you needed, then you will get code as follow:
    * Define data for read attribute
        node_alv TYPE REF TO if_wd_context_node,
        elem_alv TYPE REF TO if_wd_context_element,
        stru_alv TYPE if_view_display=>element_alv ,
        item_column_name  LIKE stru_alv-column_name.
    * navigate from <CONTEXT> to <ALV> via lead selection
      node_alv = wd_context->get_child_node( name = if_view_display=>wdctx_alv ).
    * get element via lead selection
      elem_alv = node_alv->get_element(  ).
    * get single attribute
      elem_alv->get_attribute(
        EXPORTING
          name =  `COLUMN_NAME'
        IMPORTING
          value = item_column_name ).
    The value of column_name is stored in item_column_name.
    If you need the index that the user clicked, try this:
    * Definition of field symbol for index
      FIELD-SYMBOLS : <fs_index> TYPE data.
    * Get the selected index
      ASSIGN r_param->index->* TO <fs_index>.
    The index of clicked line is stored in field symbol <fs_index>.
    Hope it will help.
    Best Regards,
    Stephanie

  • Dynamic selection in ALV report

    Hi Guru's
    I have cpoied a standatrd program(RFBILA00) into Z-program.
    I need to display the profit centre from dynamic selection in ALV header  output when profit centre is selected.If not no need to display it.
    Please do the needful.
    Thanks,
    Sunil.

    hi,
    Refer to the link,
    http://www.abapcode.info/2007/06/dynamic-selection-on-alv-at-run-time.html
    This may help you.
    Regards
    Sumit Aagrwal

  • Multiple selections in alv

    how to do multiple rows selection in alv's....

    do you use the function or the alv grid control (i.e. the classes)?
    bye
    enzo

  • AT line selection in ALV

    Hi Experts,
    How to apply the below logic in ALV. ( how to apply at line selection in ALV )
    AT LINE-SELECTION.
      DATA NO TYPE I.
      DATA F(16).
      DATA G(16).
      CASE SY-LSIND.
        WHEN 1.
          GET CURSOR FIELD F.
          IF F EQ 'IT_FIRST-MATNR'.
            PERFORM DRILL_DOWN.
          ENDIF.
      ENDCASE.
    FORM DRILL_DOWN.
    LOOP AT IT_EBAN WHERE MATNR = IT_FIRST-MATNR
                        AND WERKS = IT_FIRST-WERKS.
    WRITE: /2 IT_EBAN-BANFN,
               15 IT_EBAN-FKZTX,
               35 IT_EBAN-MENGE,
               55 IT_EBAN-MEINS.
      ENDLOOP.
    ENDFORM.

    Hi,
    When an Interactive Report is needed in Classical Display, we go for AT LINE-SELECTION. But when the same is needed in ALV Display, this method won't work. Instead, we need to use other way which is explained below:
    We use REUSE_ALV_GRID_DISPLAY for ALV Display. Now, normally we call that FM in the following way:
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = 'PROGRAM_NAME'
    it_fieldcat = tb_fieldcat
    TABLES
    t_outtab = tb_output.
    When it is needed to get an Interactive ALV, call the same FM in the following manner:
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = 'ZTEST75599_1'
    it_fieldcat = tb_fieldcat
    i_callback_user_command = 'USER_COMMAND'
    TABLES
    t_outtab = tb_output.
    Now, in the report, create a subroutine with the name USER_COMMAND as follows:
    FORM user_command USING p_ucomm LIKE sy-ucomm
    p_selfield TYPE slis_selfield.
    CASE p_ucomm.
    WHEN '&IC1'. " &IC1 - SAP standard code for double-clicking
    Based on the requirement, write the logic *
    ENDCASE.
    ENDFORM.
    No need to call the subroutine as PERFORM user_command. This will be takane care by REUSE_ALV_GRID_DISPLAY. We need to just write the subroutine in the report. That suffices.
    Some more useful points for Interactive ALV:
    1. If Hotspot is needed, then that should be done by declaring hotspot (one field in slis_t_fieldcat_alv) as 'X' in tb_fieldcat which is of type slis_t_fieldcat_alv. When hotspot is active, single click will be enough or else you should double click on the output data.
    2. In Classical Display, when it is needed to read the record on which we double clicked, we do that in following way:
    AT LINE-SELECTION.
    GET CURSOR LINE wf_line. " wf_line gives the line number on which it has been clicked
    READ LINE wf_line OF CURRENT PAGE.
    But this won't work for ALV. Instead, the following logic can be used:
    FORM user_command USING p_ucomm LIKE sy-ucomm
    p_selfield TYPE slis_selfield.
    CASE p_ucomm.
    WHEN '&IC1'. " &IC1 - SAP standard code for double-clicking
    READ TABLE tb_output INTO wa_output INDEX p_selfield-tabindex.
    IF sy-subrc EQ 0.
    Based on the requirement, write the logic *
    ENDIF.
    ENDCASE.
    ENDFORM.
    Hope this helps you...

  • At Line-selection in ALV for more than one field.

    How to use At Line-selection in ALV Basic Report where there are more than one field for displaying Secondary Lists.
    Ex: In Basic List there are 3 fields Volume_m Volume_y and Volume_i.When i click on any of the field i need to display the secondary list for that particular field.

    Hi Pavan,
                  Use User-command event of ALV.
    Refer this code :
    form BUILD_EVENTCAT  using    p_i_eventcat TYPE SLIS_T_EVENT.
    DATA: I_EVENT TYPE SLIS_ALV_EVENT.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
       I_LIST_TYPE           = 0
    IMPORTING
       ET_EVENTS             = P_I_EVENTCAT
    EXCEPTIONS
      LIST_TYPE_WRONG       = 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.
      clear I_event.
      read table p_i_eventcat with key name = slis_ev_user_command into I_event.
      if sy-subrc = 0.
        move 'USER_COMMAND' to I_event-form.
        append I_event to p_i_eventcat.
      endif.
    form USER_COMMAND' using p_ucomm type sy-ucomm
                               p_selfield type slis_selfield.
      case p_ucomm.
      WHEN '&IC1'.                       "&IC1 is the Fcode for double click
    Use  P_ELFIELD-VALUE  for further processing . this  will contain the value on which u will double click
    endcase.
    Reward points if helpful.
    Regards,
    Hemant

  • Select-option + ALV on the same screen

    hi,
    how can we can get Select-option + ALV on the same screen.
    Thanks,
    Gaurav

    hi gaurav,
    Use the following code...It works...
    TABLES: vbrk.
    *CONSTANTS
    CONSTANTS :
    c_x(1)        TYPE c VALUE 'X',
    c_zxto        TYPE vbak-auart VALUE 'ZXTO',
    c_e           TYPE spras VALUE 'E',
    c_000000      TYPE posnr VALUE '000000',
    c_ship_to     TYPE parvw VALUE 'WE'.      "Ship To Party
    Table Types
    TYPES: BEGIN OF ty_vbrk_vbrp,
    vbeln TYPE vbrk-vbeln,    "Billing doc
    posnr TYPE vbrp-posnr,    "Billing item
    aubel TYPE vbrp-aubel,    "Sales order
    waerk TYPE vbrk-waerk,    "Doc currency
    mvgr1 TYPE vbrp-mvgr1,    "Material group 1
    mvgr3 TYPE vbrp-mvgr3,    "Material group 3
    mvgr4 TYPE vbrp-mvgr4,    "Material group 4
    matnr TYPE vbrp-matnr,    "Material no
    ntgew TYPE vbrp-ntgew,    "Net wt
    gewei TYPE vbrp-gewei,    "Wt unit
    kzwi1 TYPE vbrp-kzwi1,                             "Subtotal 1
    kursk TYPE vbrp-kursk,    "Exchange rate
    END   OF ty_vbrk_vbrp.
    TYPES: BEGIN OF ty_data,
    land1 TYPE vbpa-land1,
    landx TYPE t005t-landx,
    mvgr3 TYPE vbrp-mvgr3,
    mvgr4 TYPE vbrp-mvgr4,
    bezei3 TYPE tvm3t-bezei,
    bezei4 TYPE tvm4t-bezei,
    ntgew_tea_bag TYPE vbrp-ntgew,
    ntgew_pkt_tea TYPE vbrp-ntgew,
    ntgew_bulk_tea TYPE vbrp-ntgew,
    kzwi1_tea_bag TYPE vbrp-kzwi1,    "Subtotal 1 Tea Bag
    kzwi1_pkt_tea TYPE vbrp-kzwi1,    "Subtotal 1 Pkt Tea
    kzwi1_bulk_tea TYPE vbrp-kzwi1,   "Subtotal 1 Bulk Tea
    ntgew_tot TYPE vbrp-ntgew,
    kzwi1_tot TYPE vbrp-kzwi1,
    line_color(4) TYPE c,  "For line color
    END OF ty_data.
    TYPES: BEGIN OF ty_vbpa,
    vbeln TYPE vbpa-vbeln,
    land1 TYPE vbpa-land1,
    END OF ty_vbpa.
    TYPES: BEGIN OF ty_t005t,
    land1 TYPE t005t-land1,
    landx TYPE t005t-landx,
    END OF ty_t005t.
    TYPES: BEGIN OF ty_tvm3t,
    mvgr3 TYPE tvm3-mvgr3,
    bezei TYPE tvm3t-bezei,
    END OF ty_tvm3t.
    TYPES: BEGIN OF ty_tvm4t,
    mvgr4 TYPE tvm4-mvgr4,
    bezei TYPE tvm4t-bezei,
    END OF ty_tvm4t.
    DATA: it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp,
    wa_vbrk_vbrp TYPE ty_vbrk_vbrp,
    it_vbpa TYPE STANDARD TABLE OF ty_vbpa,
    wa_vbpa TYPE ty_vbpa,
    it_data TYPE STANDARD TABLE OF ty_data,
    wa_data TYPE ty_data,
    it_t005t TYPE STANDARD TABLE OF ty_t005t,
    wa_t005t TYPE ty_t005t,
    it_tvm3t TYPE STANDARD TABLE OF ty_tvm3t,
    wa_tvm3t TYPE ty_tvm3t,
    it_tvm4t TYPE STANDARD TABLE OF ty_tvm4t,
    wa_tvm4t TYPE ty_tvm4t.
    Global data for grand total
    DATA:
    w_tot_ntgew_tea_bag TYPE vbrp-ntgew,
    w_tot_ntgew_pkt_tea TYPE vbrp-ntgew,
    w_tot_ntgew_bulk_tea TYPE vbrp-ntgew,
    w_tot_ntgew_tot TYPE vbrp-ntgew,
    w_tot_kzwi1_tea_bag TYPE vbrp-kzwi1,
    w_tot_kzwi1_pkt_tea TYPE vbrp-kzwi1,
    w_tot_kzwi1_bulk_tea TYPE vbrp-kzwi1,
    w_tot_kzwi1_tot TYPE vbrp-kzwi1.
    Global data definitions for ALV
    DATA :
    ALV Grid container
    w_alv_container TYPE REF TO cl_gui_custom_container,
    ALV Grid
    w_alv_grid      TYPE REF TO cl_gui_alv_grid,
    w_layo          TYPE        lvc_s_layo,     "For layout
    wt_fieldcat     TYPE        lvc_t_fcat,     "For field catalog
    okcode          TYPE         okcode,        "OK Code
    w_to(2)         TYPE         c,
    w_title         TYPE        string.
    ---- START OF SELECTION SCREEN -
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    Billing Date
    SELECT-OPTIONS: s_fkdat FOR vbrk-fkdat MEMORY ID vf OBLIGATORY no intervals.
    SELECTION-SCREEN:SKIP 1.
    SELECTION-SCREEN: END OF BLOCK b1.
    ---- END OF SELECTION SCREEN -
    ----   EVENT START-OF-SELECTION  -
    START-OF-SELECTION.
    Get billing data from Delivery header(VBRK) and item (VBRP)
    PERFORM get_billing_data.
    Get ship-to country
    PERFORM get_ship_to_data.
    Get material group description 3
    PERFORM get_material_group_3.
    Get material group description 4
    PERFORM get_material_group_4.
    Form the ALV Grid title
    PERFORM form_title.
    Process data
    PERFORM process_data.
    Populate text descriptions
    PERFORM populate_description.
    ----   EVENT END-OF-SELECTION  -
    END-OF-SELECTION.
    Set the text to when date high is there
    IF NOT s_fkdat-high IS INITIAL.
    w_to = 'to'(c16).
    ENDIF.
    Call the scren 9000 for ALV Display
    CALL SCREEN 9000.
    *&      Form  get_billing_data
    Get billing data from Delivery header(VBRK) and item (VBRP)
    & store in internal table it_vbrk_vbrp
    FORM get_billing_data .
    REFRESH: it_vbrk_vbrp.
    Select Billing data by joining VBRK & VBRP and store in it_vbrk_vbrp
    SELECT a~vbeln
    b~posnr
    b~aubel
    a~waerk
    b~mvgr1
    b~mvgr3
    b~mvgr4
    b~matnr
    b~ntgew
    b~gewei
    b~kzwi1
    b~kursk
    FROM vbrk AS a INNER JOIN vbrp AS b
    ON avbeln = bvbeln
    INTO TABLE it_vbrk_vbrp
    WHERE a~fkdat IN s_fkdat
    Consider only non-deleted document
    AND fksto = space
    Billing doc type should be ZXTB
    AND fkart = 'ZXTB'
    AND pstyv = c_zxto.
    *IF sy-subrc <> 0.
    *MESSAGE i999(zttl) WITH 'No data is there'(m06).
    *LEAVE LIST-PROCESSING.
    *ENDIF.
    ENDFORM.                    " get_billing_data
    *&      Form  get_ship_to_data
    Get Ship-To party data
    FORM get_ship_to_data .
    DATA: l_it_vbpa TYPE STANDARD TABLE OF ty_vbpa.
    REFRESH: it_vbpa, it_t005t.
    IF NOT it_vbrk_vbrp[] IS INITIAL.
    SELECT vbeln
    land1
    FROM vbpa
    INTO TABLE it_vbpa
    FOR ALL ENTRIES IN it_vbrk_vbrp
    WHERE vbeln = it_vbrk_vbrp-aubel
    AND posnr = c_000000
    AND parvw = c_ship_to.
    IF sy-subrc <> 0.
    MESSAGE i999(zttl) WITH 'Exporter country not maintained'(m02).
    LEAVE LIST-PROCESSING.
    ELSE.
    SORT it_vbpa BY vbeln.
    Create an unique and sorted driver table
    l_it_vbpa[] = it_vbpa[].
    SORT l_it_vbpa BY land1.
    DELETE ADJACENT DUPLICATES FROM l_it_vbpa COMPARING land1.
    IF NOT l_it_vbpa[] IS INITIAL.
    Get the country description from T005t table
    SELECT land1
    landx
    FROM t005t
    INTO TABLE it_t005t
    FOR ALL ENTRIES IN l_it_vbpa
    WHERE spras = c_e
    AND  land1 = l_it_vbpa-land1.
    IF sy-subrc = 0.
    SORT it_t005t BY land1.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDFORM.                    " get_ship_to_data
    *&      Form  get_material_group_3
    Get material group 3
    FORM get_material_group_3 .
    DATA: l_it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.
    REFRESH: it_tvm3t.
    Create an unique and sorted driver table
    l_it_vbrk_vbrp[] = it_vbrk_vbrp[].
    SORT l_it_vbrk_vbrp BY mvgr3.
    DELETE ADJACENT DUPLICATES FROM l_it_vbrk_vbrp COMPARING mvgr3.
    IF NOT l_it_vbrk_vbrp[] IS INITIAL.
    SELECT mvgr3
    bezei
    FROM tvm3t
    INTO TABLE it_tvm3t
    FOR ALL ENTRIES IN l_it_vbrk_vbrp
    WHERE mvgr3 = l_it_vbrk_vbrp-mvgr3.
    IF sy-subrc = 0.
    SORT it_tvm3t BY mvgr3.
    ENDIF.
    ENDIF.
    ENDFORM.                    " get_material_group_3
    *&      Form  get_material_group_4
    Get material group 4
    FORM get_material_group_4 .
    DATA: l_it_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.
    REFRESH: it_tvm4t.
    Create an unique and sorted driver table
    l_it_vbrk_vbrp[] = it_vbrk_vbrp[].
    SORT l_it_vbrk_vbrp BY mvgr4.
    DELETE ADJACENT DUPLICATES FROM l_it_vbrk_vbrp COMPARING mvgr4.
    IF NOT l_it_vbrk_vbrp[] IS INITIAL.
    SELECT mvgr4
    bezei
    FROM tvm4t
    INTO TABLE it_tvm4t
         FOR ALL ENTRIES IN l_it_vbrk_vbrp
         WHERE mvgr4 = l_it_vbrk_vbrp-mvgr4.
         IF sy-subrc = 0.
           SORT it_tvm4t BY mvgr4.
         ENDIF.
       ENDIF.
    ENDFORM.                    " get_material_group_4
    *&      Form  process_data
    Process the data and do summation and populate final display table
    FORM process_data .
       LOOP AT it_vbrk_vbrp INTO wa_vbrk_vbrp.
         CLEAR: wa_data, wa_vbpa.
         READ TABLE it_vbpa INTO wa_vbpa WITH KEY
                                      vbeln = wa_vbrk_vbrp-aubel
                                      BINARY SEARCH.
         IF sy-subrc = 0.
           wa_data-land1 = wa_vbpa-land1.
         ENDIF.
         wa_data-mvgr3 = wa_vbrk_vbrp-mvgr3.
         wa_data-mvgr4 = wa_vbrk_vbrp-mvgr4.
    Do an unit conversion of the quamtity
         CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
           EXPORTING
             input                      = wa_vbrk_vbrp-ntgew
         NO_TYPE_CHECK              = 'X'
         ROUND_SIGN                 = ' '
            unit_in                    = wa_vbrk_vbrp-gewei
            unit_out                   = 'TO' "Metric tonn
          IMPORTING
            output                     = wa_vbrk_vbrp-ntgew
          EXCEPTIONS
            conversion_not_found       = 1
            division_by_zero           = 2
            input_invalid              = 3
            output_invalid             = 4
            overflow                   = 5
            type_invalid               = 6
            units_missing              = 7
            unit_in_not_found          = 8
            unit_out_not_found         = 9
            OTHERS                     = 10.
         IF sy-subrc <> 0.
           wa_vbrk_vbrp-ntgew = wa_vbrk_vbrp-ntgew.
         ENDIF.
    Convert the currency from Customer currency to local
    currency by multiplying with kursk
         wa_vbrk_vbrp-kzwi1 =  wa_vbrk_vbrp-kzwi1 * wa_vbrk_vbrp-kursk.
    Convert the amount to Lacks by dividing with 100000
        wa_vbrk_vbrp-kzwi1 = wa_vbrk_vbrp-kzwi1 / 100000.       "DV1K905028
    When MVGR1 is between A to F use the amount as TEA_BAG
         IF wa_vbrk_vbrp-mvgr1 BETWEEN 'A' AND 'F'.
           wa_data-ntgew_tea_bag = wa_vbrk_vbrp-ntgew.
           wa_data-kzwi1_tea_bag = wa_vbrk_vbrp-kzwi1.
         ENDIF.
    When MVGR1 is between G to L use the amount as TEA_BAG
         IF wa_vbrk_vbrp-mvgr1 BETWEEN 'G' AND 'L'.
           wa_data-ntgew_pkt_tea = wa_vbrk_vbrp-ntgew.
           wa_data-kzwi1_pkt_tea = wa_vbrk_vbrp-kzwi1.
         ENDIF.
    When MVGR1 is between G to L use the amount as TEA_BAG
         IF wa_vbrk_vbrp-mvgr1 = 'M'.
           wa_data-ntgew_bulk_tea = wa_vbrk_vbrp-ntgew.
           wa_data-kzwi1_bulk_tea = wa_vbrk_vbrp-kzwi1.
         ENDIF.
         COLLECT wa_data INTO it_data.
       ENDLOOP.
    ENDFORM.                    " process_data
    *&      Form  populate_description
    Populate the description fields
    FORM populate_description .
       LOOP AT it_data INTO wa_data.
         CLEAR: wa_t005t.
         READ TABLE it_t005t INTO wa_t005t WITH KEY land1 = wa_data-land1
                                                BINARY SEARCH.
         IF sy-subrc = 0.
           wa_data-landx = wa_t005t-landx.
         ENDIF.
    Read description of Material group 3
         CLEAR wa_tvm3t.
         READ TABLE it_tvm3t INTO wa_tvm3t WITH KEY
                                  mvgr3 = wa_data-mvgr3
                                  BINARY SEARCH.
         IF sy-subrc = 0.
           wa_data-bezei3 = wa_tvm3t-bezei.
         ENDIF.
    Read description of Material group 4
         CLEAR wa_tvm4t.
         READ TABLE it_tvm4t INTO wa_tvm4t WITH KEY
                                  mvgr4 = wa_data-mvgr4
                                  BINARY SEARCH.
         IF sy-subrc = 0.
           wa_data-bezei4 = wa_tvm4t-bezei.
         ENDIF.
    Get the grand totals
         wa_data-ntgew_tot = wa_data-ntgew_tea_bag
                  + wa_data-ntgew_pkt_tea
                  + wa_data-ntgew_bulk_tea.
         wa_data-kzwi1_tot = wa_data-kzwi1_tea_bag
                  + wa_data-kzwi1_pkt_tea
                  + wa_data-kzwi1_bulk_tea.
         MODIFY it_data FROM wa_data TRANSPORTING landx
                                                  bezei3
                                                  bezei4
                                                  ntgew_tot
                                                  kzwi1_tot.
    Summattion of grand totals
         w_tot_ntgew_tea_bag  = w_tot_ntgew_tea_bag  + wa_data-ntgew_tea_bag.
         w_tot_ntgew_pkt_tea  = w_tot_ntgew_pkt_tea  + wa_data-ntgew_pkt_tea.
         w_tot_ntgew_bulk_tea  = w_tot_ntgew_bulk_tea  + wa_data-ntgew_bulk_tea.
         w_tot_ntgew_tot  = w_tot_ntgew_tot  + wa_data-ntgew_tot.
         w_tot_kzwi1_tea_bag  = w_tot_kzwi1_tea_bag  + wa_data-kzwi1_tea_bag.
         w_tot_kzwi1_pkt_tea  = w_tot_kzwi1_pkt_tea  + wa_data-kzwi1_pkt_tea.
         w_tot_kzwi1_bulk_tea  = w_tot_kzwi1_bulk_tea  + wa_data-kzwi1_bulk_tea.
         w_tot_kzwi1_tot  = w_tot_kzwi1_tot  + wa_data-kzwi1_tot.
       ENDLOOP.
    Append a grand Total row at the end
       CLEAR wa_data.
       wa_data-landx = 'Grand Total:'.
       wa_data-ntgew_tea_bag = w_tot_ntgew_tea_bag.
       wa_data-ntgew_pkt_tea = w_tot_ntgew_pkt_tea.
       wa_data-ntgew_bulk_tea = w_tot_ntgew_bulk_tea.
       wa_data-ntgew_tot = w_tot_ntgew_tot.
       wa_data-kzwi1_tea_bag = w_tot_kzwi1_tea_bag.
       wa_data-kzwi1_pkt_tea = w_tot_kzwi1_pkt_tea.
       wa_data-kzwi1_bulk_tea = w_tot_kzwi1_bulk_tea.
       wa_data-kzwi1_tot = w_tot_kzwi1_tot.
       wa_data-line_color    = 'C310'.
       APPEND wa_data TO it_data.
    ENDFORM.                    " populate_description
    *&      Module  STATUS_9000  OUTPUT
    Initialise PF-STATUS and title
    MODULE status_9000 OUTPUT.
       SET PF-STATUS 'MAIN9000'.
       SET TITLEBAR 'TITLE_9000'.
    ENDMODULE.                 " STATUS_9000  OUTPUT
    *&      Module  initialize_9000  OUTPUT
          text
    MODULE initialize_9000 OUTPUT.
    Call the ALV grid to display data
    SELECTION-SCREEN: BEGIN OF BLOCK B2 WITH FRAME TITLE text-001.
      Billing Date
    SELECT-OPTIONS: s_fkdat1 FOR vbrk-fkdat MEMORY ID vf OBLIGATORY NO-EXTENSION.
    SELECTION-SCREEN:SKIP 1.
    SELECTION-SCREEN: END OF BLOCK B2.
       PERFORM display_alv_grid.
    ENDMODULE.                 " initialize_9000  OUTPUT
    *&      Module  USER_COMMAND_9000  INPUT
    Module to handle User Command
    MODULE user_command_9000 INPUT.
       CASE okcode.
         WHEN 'BACK'.
           SET SCREEN 0.
           CLEAR okcode.
           LEAVE SCREEN.
         WHEN 'CANCEL'.
           SET SCREEN 0.
           CLEAR okcode.
           LEAVE SCREEN.
         WHEN 'EXIT'.
           CLEAR okcode.
           LEAVE PROGRAM.
         WHEN OTHERS.
       ENDCASE.
    ENDMODULE.                 " USER_COMMAND_9000  INPUT
    *&      Form  display_alv_grid
    Display the data in ALV Grid
    FORM display_alv_grid .
       IF w_alv_container IS INITIAL.
    Create the alv container object
         CREATE OBJECT w_alv_container
           EXPORTING
             container_name = 'ALV_GRID'
           EXCEPTIONS
               cntl_error                  = 1
               cntl_system_error           = 2
               create_error                = 3
               lifetime_error              = 4
               lifetime_dynpro_dynpro_link = 5
               OTHERS                      = 6.
         IF sy-subrc <> 0.
           MESSAGE e999(zttl) WITH 'Problem in ALV display'(t04).
         ENDIF.
    Create the ALV grid object. The parent is the ALV container
         CREATE OBJECT w_alv_grid
           EXPORTING
             i_parent = w_alv_container
           EXCEPTIONS
             error_cntl_create = 1
             error_cntl_init   = 2
             error_cntl_link   = 3
             error_dp_create   = 4
             OTHERS            = 5.
         IF sy-subrc <> 0.
           MESSAGE e999(zttl) WITH 'Problem in ALV display'(t04).
         ENDIF.
    This subrotine creates the field catalog and
    store in internal table lt_fieldcat
         PERFORM prepare_fieldcat CHANGING wt_fieldcat.
    Layout design
         w_layo-no_toolbar = ''.
    Not to allow totaling feature
         w_layo-no_totline = c_x.
    Report title
       w_layo-grid_title = text-004.
         w_layo-grid_title = w_title.
         w_layo-zebra      = c_x.    "Alternating line color (striped)
         w_layo-cwidth_opt = c_x.    "Optimize column width
         w_layo-sel_mode   = 'A'.    "Selection Mode
    Name of the color field
         w_layo-info_fname = 'LINE_COLOR'."For row color
    Call the method to display the data in ALV grid
         CALL METHOD w_alv_grid->set_table_for_first_display
           EXPORTING
             i_save                        = 'A'
             is_layout                     = w_layo
           CHANGING
             it_outtab                     = it_data[]
             it_fieldcatalog               = wt_fieldcat
           EXCEPTIONS
             invalid_parameter_combination = 1
             program_error                 = 2
             too_many_lines                = 3
             OTHERS                        = 4.
         IF sy-subrc <> 0.
           MESSAGE e999(zttl) WITH text-t04.
         ENDIF.
       ELSE.
    If the container & grid object is alreadt there reuse them
         CALL METHOD w_alv_grid->refresh_table_display
           EXCEPTIONS
             finished = 1
             OTHERS   = 2.
         IF sy-subrc <> 0.
           MESSAGE e999(zttl) WITH text-t04.
         ENDIF.
       ENDIF.
       IF okcode = 'CANCEL'.
         EXIT.
       ENDIF.
    ENDFORM.                    " display_alv_grid
    *&      Form  prepare_fieldcat
    Prepare the list of fields to be displayed                          *
         <--P_WT_FIELDCAT  text
    FORM prepare_fieldcat  CHANGING pt_fieldcat TYPE lvc_t_fcat.
       DATA : lx_fcat TYPE lvc_s_fcat.
       REFRESH: pt_fieldcat.
    **List of fields to be displayed should be added in pt_fieldcat
    Customer PO no
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'LANDX'.
       lx_fcat-ref_field = 'T005T'.
       lx_fcat-ref_table = 'T005T'.
       lx_fcat-coltext = 'Market Name'(c01).
       lx_fcat-seltext = text-c01.
       APPEND lx_fcat TO pt_fieldcat.
    Flavour type
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'BEZEI3'.
       lx_fcat-ref_field = 'BEZEI'.
       lx_fcat-ref_table = 'TVM3'.
       lx_fcat-coltext = 'Flavour Type'(c02).
       lx_fcat-seltext = text-c02.
       APPEND lx_fcat TO pt_fieldcat.
    Tea type
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'BEZEI4'.
       lx_fcat-ref_field = 'BEZEI4'.
       lx_fcat-ref_table = 'TVM4'.
       lx_fcat-coltext = 'Tea Type.'(c03).
       lx_fcat-seltext = text-c03.
       APPEND lx_fcat TO pt_fieldcat.
    Tea Bag Quantity in KG
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'NTGEW_TEA_BAG'.
       lx_fcat-ref_field = 'NTGEW'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Tea Bag(MT)'(c04).
       lx_fcat-seltext = text-c04.
       APPEND lx_fcat TO pt_fieldcat.
    PKT Tea  Quantity in KG
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'NTGEW_PKT_TEA'.
       lx_fcat-ref_field = 'NTGEW'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'PKT Tea(MT)'(c05).
       lx_fcat-seltext = text-c05.
       APPEND lx_fcat TO pt_fieldcat.
    Bulk Tea  Quantity in MT
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'NTGEW_BULK_TEA'.
       lx_fcat-ref_field = 'NTGEW'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Bulk Tea(MT)'(c06).
       lx_fcat-seltext = text-c06.
       APPEND lx_fcat TO pt_fieldcat.
    Total Quantity in MT
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'NTGEW_TOT'.
       lx_fcat-ref_field = 'NTGEW'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Total(MT)'(c07).
       lx_fcat-seltext = text-c07.
       APPEND lx_fcat TO pt_fieldcat.
    Tea Bag Quantity in KG
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'KZWI1_TEA_BAG'.
       lx_fcat-ref_field = 'KZWI1'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Tea Bag(FOB-Lacs)'(c08).
       lx_fcat-seltext = text-c08.
       APPEND lx_fcat TO pt_fieldcat.
    PKT Tea  Price in Lakh
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'KZWI1_PKT_TEA'.
       lx_fcat-ref_field = 'KZWI1'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'PKT Tea(FOB-Lacs)'(c09).
       lx_fcat-seltext = text-c09.
       APPEND lx_fcat TO pt_fieldcat.
    PKT Tea  Quantity in KG
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'KZWI1_BULK_TEA'.
       lx_fcat-ref_field = 'KZWI1'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Bulk Tea(FOB-Lacs)'(c10).
       lx_fcat-seltext = text-c10.
       APPEND lx_fcat TO pt_fieldcat.
    Total amount
       CLEAR lx_fcat.
       lx_fcat-fieldname = 'KZWI1_TOT'.
       lx_fcat-ref_field = 'KZWI1'.
       lx_fcat-ref_table = 'VBRP'.
       lx_fcat-coltext = 'Total(FOB-Lacs)'(c11).
       lx_fcat-seltext = text-c11.
       APPEND lx_fcat TO pt_fieldcat.
    ENDFORM.                    " prepare_fieldcat
    *&      Form  form_title
    Form the ALV Title
    FORM form_title .
       DATA: l_date(10) TYPE c.
       CONCATENATE s_fkdat-low6(2)  s_fkdat-low4(2)  s_fkdat-low(4)
       INTO l_date SEPARATED BY '/'.
       CONCATENATE 'TTD - Statement of Export' '-From' l_date INTO
    w_title SEPARATED BY space.
       CLEAR l_date.
       IF NOT s_fkdat-high IS INITIAL.
         CONCATENATE s_fkdat-high6(2)  s_fkdat-high4(2)  s_fkdat-high(4)
         INTO l_date SEPARATED BY '/'.
         CONCATENATE w_title 'to' l_date INTO w_title SEPARATED BY space.
       ENDIF.
    ENDFORM.                    " form_title

  • How to avoid multiple selection in ALV tree control?

    Hi,
    Experts,
    I want to avoid multiple selections on Alv tree control after pressing control keyboard button(Ctrl). Even by pressing Ctrl keyword button i want to select only one row of a Alv tree control.i have used cl_salv_tree class for it is there any method to achieve this please pass some code/idea on it.
    Thanks in advance,
    Shabeer ahmed.

    I haven't tried it before but it should help.
    [https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/cda3992d-0e01-0010-90b2-c4e1f899ac01|https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/cda3992d-0e01-0010-90b2-c4e1f899ac01]

  • Print parameters as per the user selection in ALV

    Hi All,
    We have a requriment for getting the print parametrs to print dialog as per the user selection in ALV list display.
    When the user click on 'Print' button In ALV list output screen, we need to capture the print parameters from a Z table and put those on the print parameters dialog box.
    I tried this , by calling the function GET_PRINT_PARAMETERS and SET_PRINT_PARAMETERS before the alv function is called. Unforutnately this is not working. Same code works for the simple list display.
    Have anyone worked with this kind of requriment ?
    Regards,
    Mithun

    What kind of ALV are you using, FM or OO?
    Regards,
    Rich Heilman

  • Multiple checkbox selection in ALV and updating internal table

    Dear Expert,
    Can anyone tell me how to handle the multiple checkbox selection in ALV Grid report and then updating the internal table.
    I tried the option but it works only when i select only 1 row in ALV.
                    DO L_LINES TIMES.
                      read table icoas index rs_selfield-tabindex.
                      if sy-subrc = 0.
                        ICOAS-NOCHK = 'X'.
                        modify ICOAS INDEX rs_selfield-tabindex TRANSPORTING NOCHK.
                      ENDIF.
                    ENDDO.
    Requires help....
    Regards & Thanx,
    Bhupathi.

    Hi,
    Use this method to capture the check box event. Write this once you create your grid using CREATE OBJECT grid1.
    DATA:      GRID1 TYPE REF TO CL_GUI_ALV_GRID,
    CALL METHOD grid1->register_edit_event
      EXPORTING
        i_event_id = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED
      EXCEPTIONS
        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.
      LOOP AT T_GRIDDETAILS INTO WA_GRIDDETAILS.
        IF WA_GRIDDETAILS-CHECKBOX = 'X'.
                  "Do your operation
        ENDIF.
        CLEAR WA_GRIDDETAILS.
      ENDLOOP.

  • Multiple Line selection in ALV

    Hi All,
    I have an alv report. In which, i have to get the selected row index values in return. Those selected row index will be used for further processing. I do not need check box selection, as ALV provide that inbuilt facility. Please tell me the parameter name.
    It is urgent.
    Regards
    Gajendra

    Hi,
    Your Call to ALV
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = sy-cprog
    I_CALLBACK_USER_COMMAND = 'USER_COMMAND1'
    I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
    IS_LAYOUT = wa_layout
    IT_FIELDCAT = it_fieldcat
    T_OUTTAB = it_rfq
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2
    Implement a Form Routine with the name you gave for the I_CALLBACK_USER_COMMAND
    eg.,
    FORM user_command1 using ucomm type sy-ucomm
    selfield type slis_selfield.
    case ucomm.
    when '&IC1'.
    read table it_rfq into wa_rfq index selfield-tabindex.
    if sy-subrc eq 0.
    if selfield-fieldname = 'EBELN' " EBELN is the fieldname in Fieldcat
    Do the necessary coding to call the screen here
    endif.
    endif.
    ENDFORM.
    regards,
    Omkar.

  • How to fix Selection in ALV OO?

    Hello,
    I have generated an ALV with OO.
    Is it possible to fix the Selection of rows, so that the marks remain, even if I have clicked on a cell?
    Thanks.
    Sergej

    Hi Sergej Becker 
    U cannot fix selection in ALV,  if at all u want to do so... programatically u need to handle that.   Lets say  user selected 10 records.  U can check these row in the internal table marked field.  If your restriction is upto 5rows only.  then give an error or warning saying 'Selection is restricted upto 5 rows'.
    And remove the other selections and leave 5 records selected from the top.
    This can be done I think.
    Venkat

  • Capture multiple rows on lead select in ALV Web dynpro

    Hi all,
    I am trying to capture the selected rows on lead select in ALV.
    I have tried with supply function and ON_LEAD_SELECT event of ALV.
    When I am trying this I am able to capture only one row but not multiple.
    I don't want use any extra actions or buttons to get the selected rows, it must be possible only through any ALV events or using supply function.
    BR,
    Eshwar

    Hi,
    You use this to set to on_select?
    DATA:
         lo_config_table        TYPE REF TO cl_salv_wd_config_table.
       lo_config_table->if_salv_wd_table_settings~set_on_select_enabled( ).
    And in the component controller create a new method for event_handler
    This method will executed
    Hope this works
    Maarten

  • Select From ALV Grid

    I'm hoping that someone can help.
    I have a program that displays an ALV grid. I want the user to be able to select one or more lines from this grid and then to pop up a box to allow them to input a new date and then update this date via BAPI.
    Could any one please point me in the right direction of how to get the info of the lines selected by the user into another internal table so that I can merge this with my new date info to run the BAPI.
    Thanks

    Which version of ALV technology do you use (REUSE_ALV, OO ALV, SALV ? ) <br />
    <br />
    e.g. for CL_GUI_ALV_GRID<br />
    - Use the <a class="jive-link-external" href="http://help.sap.com/saphelp_erp2004/helpdata/en/ef/a2e9eff88311d2b48d006094192fe3/frameset.htm" target="_newWindow">SEL_MODE</a> field of the layout to enable multiple row selection (also add a check box in internal table)<br />
    - you have method <a class="jive-link-external" href="http://help.sap.com/saphelp_erp2004/helpdata/EN/0a/b55312d30911d2b467006094192fe3/frameset.htm" target="_newWindow">GET_SELECTED_ROWS</a> and CHECK_CHANGED_DATA <br />
    <br />
    <i>Also, don't hesitate to use the search tool.there are sample in wiki like [Capture single and multiple row selction in ALV |http://wiki.sdn.sap.com/wiki/display/Snippets/Capturesingleandmultiplerowselctionin+ALV]</i><br />
    <br />
    Regards,<br />
    Raymond

  • At line selection in alv report

    hi,
    i had developed a code in which at 1st execution the normal output is displayed and if i click on a purticular Itemid it displays the whole of items  and i want to display only that item's data which i had clicked on.
    following is the code which i am using for the at line-selection.
    **BEGIN - TEST CODE FOR LINE SELECTION**
    data: fld LIKE ITAB-ITEMID,
          val LIKE ITAB-ITEMID.
    at line-selection.
      get cursor field fld value val.
      IF fld = 'ITAB-ITEMID'.
            SET PARAMETER ID 'ANR' FIELD val.
            CLEAR ITAB-ITEMID.
      ENDIF.
        PERFORM PRN_SMSTOCK_ALV USING VAL.
        IF SY-SUBRC <> 0.
          MESSAGE 'NO RECORD FOUND' TYPE 'W'.
        ENDIF.
      FORM PRN_SMSTOCK_ALV USING VAL.
    *****END OF TEST CODE FOR LINE SELECTION******
    plzz help me out by providing the solution for this problem.

    Hi,
    You need to add extra piece of code as below:
    call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'
                I_callback_user_command = 'USER_COMMAND'   "see FORM
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
                i_save                  = 'X'
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
    *       FORM USER_COMMAND                                          *
    *       --> R_UCOMM                                                *
    *       --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    * Check function code
      CASE r_ucomm.
        WHEN '&IC1'.
    *   Check field clicked on within ALVgrid report
        IF rs_selfield-fieldname = 'EBELN'.
    *     Read data table, using index of row user clicked on
          READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
    *     Set parameter ID for transaction screen field
          SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
    *     Sxecute transaction ME23N, and skip initial data entry screen
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDCASE.
    ENDFORM.
    "For further information please refer the link below :
    http://www.sapdev.co.uk/reporting/alv/alvgrid_ucomm.htm
    Thanks,
    Sriram Ponna.

Maybe you are looking for

  • Mass Update of Product hierarchy in all CRM Open Sales Orders

    Hi Folks, I have a requirement in my project wherein I have to update product hierarchy details with new values in all Items of CRM Open sales orders. If suppose I have a text file which has the details of Open Orders & new product hierarchy which i

  • 0FIAP_C03 Cash Mgmt Amounts into Due Date Buckets

    Using Cube 0FIAP_C03 A/P Payables in BW3.5 and Query Designer. I have a need to take the open items and ‘group’ them by days past due. First step I created a new key figure to take today’s date (key date) and subtract the net due date. This provides

  • Cannot view the concurrent program.

    After the user schedule for the concurrent program, there is nothing appear in the concurrent program window. Actually, the concurrent program is running, but just the users cannot see it. How to solve this problem?

  • Create Invoice for multiple deliveries

    Hi , I want to create Invoice for multiple deliveries thru my prog. I tried using RV_INVOICE_CREATE but it creates multiple invoices if I enter multiple deliveries. I tried searching the forum but cud not get any solution for this.

  • Mac mini 10.4.10

    I just downloaded OS 10.4.10 and my system preferences will no work. I can not connect to the internet or open system preferences. Anybody have any suggestions? Mike