PF Status in ALV list.

Hi,
please tell me how to create PF status in ALV. I know how to create PF status but not sure in ALV. can some one give simple report with code please. ex: spfli table. I want to use
'REUSE_ALV_LIST_DISPLAY' instead of grid.
Please help.
Thanks in advance.

Hi,
   First you need to assign one form name(like STATUS) to the one of the parameters (I_CALLBACK_PF_STATUS_SET) of the function module. After calling the FM, you can call the new form with the above said name(STATUS). In between the form and endform you can use the statement SET PF-STATUS.
Check the below code....
*& Report  ZZZ_TEST_500
REPORT  zzz_test_500.
TABLES:vbak.
TYPE-POOLS:slis.
TYPES:BEGIN OF ty_vbak,
       vbeln LIKE vbak-vbeln,
       auart LIKE vbak-auart,
       kunnr LIKE vbak-kunnr,
       vkorg LIKE vbak-vkorg,
       vtweg LIKE vbak-vtweg,
       spart LIKE vbak-spart,
      END OF ty_vbak,
      BEGIN OF ty_vbap,
       posnr LIKE vbap-posnr,
       matnr LIKE vbap-matnr,
       werks LIKE vbap-werks,
       lgort LIKE vbap-lgort,
       ntgew LIKE vbap-ntgew,
      END OF ty_vbap.
DATA:i_vbak TYPE STANDARD TABLE OF ty_vbak,
     i_vbap TYPE STANDARD TABLE OF ty_vbap,
     w_vbak TYPE ty_vbak,
     w_vbap TYPE ty_vbap.
SELECT-OPTIONS:s_vbeln FOR vbak-vbeln.
PARAMETERS:p_var LIKE disvariant-variant.
*Declarations for ALV
DATA:i_fieldcat TYPE slis_t_fieldcat_alv,
     w_fieldcat LIKE LINE OF i_fieldcat,
     w_layout   TYPE slis_layout_alv,
     disvar     TYPE disvariant,
     invariant  TYPE disvariant,
     i_event    TYPE slis_t_event,
     w_event    TYPE slis_alv_event,
     i_header   TYPE slis_t_listheader,
     w_header   TYPE slis_listheader.
CONSTANTS:status TYPE slis_formname VALUE 'PF_STATUS'.
AT SELECTION-SCREEN ON s_vbeln.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_var.
  invariant-report = sy-repid.
  CALL FUNCTION 'LVC_VARIANT_F4'
    EXPORTING
      is_variant                = invariant
  IT_DEFAULT_FIELDCAT       =
  I_SAVE                    = ' '
   IMPORTING
    e_exit                    =
     es_variant                = disvar
   EXCEPTIONS
     not_found                 = 1
     program_error             = 2
     OTHERS                    = 3
  IF sy-subrc = 0.
    p_var = disvar-variant.
  ENDIF.
START-OF-SELECTION.
  PERFORM read_data.
  PERFORM build_fieldcat.
  PERFORM prepare_events.
  PERFORM display_output.
*&      Form  read_data
      text
FORM read_data .
  SELECT vbeln
         auart
         kunnr
         vkorg
         vtweg
         spart FROM vbak
               INTO TABLE i_vbak
               WHERE vbeln IN s_vbeln.
  IF sy-subrc = 0.
  ENDIF.
ENDFORM.                    " read_data
*&      Form  build_fieldcat
      text
FORM build_fieldcat .
  w_fieldcat-col_pos = 1.
  w_fieldcat-fieldname = 'VBELN'.
  w_fieldcat-tabname = 'I_VBAK'.
  w_fieldcat-seltext_l = 'Sales Document #'.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.
  w_fieldcat-col_pos = 2.
  w_fieldcat-fieldname = 'AUART'.
  w_fieldcat-tabname = 'I_VBAK'.
  w_fieldcat-seltext_l = 'Order Type'.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.
  w_fieldcat-col_pos = 3.
  w_fieldcat-fieldname = 'KUNNR'.
  w_fieldcat-tabname = 'I_VBAK'.
  w_fieldcat-seltext_l = 'Customer #'.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.
  w_fieldcat-col_pos = 4.
  w_fieldcat-fieldname = 'VKORG'.
  w_fieldcat-tabname = 'I_VBAK'.
  w_fieldcat-seltext_l = 'Sales Org'.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.
  w_fieldcat-col_pos = 5.
  w_fieldcat-fieldname = 'VTWEG'.
  w_fieldcat-tabname = 'I_VBAK'.
  w_fieldcat-seltext_l = 'Distribution Channel'.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.
  w_fieldcat-col_pos = 6.
  w_fieldcat-fieldname = 'SPART'.
  w_fieldcat-tabname = 'I_VBAK'.
  w_fieldcat-seltext_l = 'Division'.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.
ENDFORM.                    " build_fieldcat
*&      Form  display_output
      text
FORM display_output .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
  I_INTERFACE_CHECK                 = ' '
  I_BYPASSING_BUFFER                = ' '
  I_BUFFER_ACTIVE                   = ' '
    i_callback_program                = sy-repid
    i_callback_pf_status_set          = status
  I_CALLBACK_USER_COMMAND           = ' '
  I_CALLBACK_TOP_OF_PAGE            = ' '
  I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
  I_CALLBACK_HTML_END_OF_LIST       = ' '
  I_STRUCTURE_NAME                  =
  I_BACKGROUND_ID                   = ' '
  I_GRID_TITLE                      =
  I_GRID_SETTINGS                   =
  IS_LAYOUT                         =
     it_fieldcat                       = i_fieldcat
  IT_EXCLUDING                      =
  IT_SPECIAL_GROUPS                 =
  IT_SORT                           =
  IT_FILTER                         =
  IS_SEL_HIDE                       =
  I_DEFAULT                         = 'X'
  I_SAVE                            = ' '
    is_variant                        = disvar
    it_events                         = i_event
  IT_EVENT_EXIT                     =
  IS_PRINT                          =
  IS_REPREP_ID                      =
  I_SCREEN_START_COLUMN             = 0
  I_SCREEN_START_LINE               = 0
  I_SCREEN_END_COLUMN               = 0
  I_SCREEN_END_LINE                 = 0
  I_HTML_HEIGHT_TOP                 = 0
  I_HTML_HEIGHT_END                 = 0
  IT_ALV_GRAPHICS                   =
  IT_HYPERLINK                      =
  IT_ADD_FIELDCAT                   =
  IT_EXCEPT_QINFO                   =
  IR_SALV_FULLSCREEN_ADAPTER        =
    TABLES
      t_outtab                          = i_vbak
EXCEPTIONS
   program_error                     = 1
   OTHERS                            = 2
  IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    " display_output
*&      Form  STATUS
      text
FORM pf_status USING extab TYPE slis_t_extab.
  SET PF-STATUS 'TEST1'.
ENDFORM.                    "STATUS
*&      Form  PREPARE_EVENTS
      text
FORM prepare_events .
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type     = 0
    IMPORTING
      et_events       = i_event
    EXCEPTIONS
      list_type_wrong = 1
      OTHERS          = 2.
  IF sy-subrc = 0.
  READ TABLE i_event INTO w_event WITH KEY name = slis_ev_pf_status_set.
    w_event-form = 'SET_PF_STATUS'.
    MODIFY i_event FROM w_event INDEX sy-tabix.
   READ TABLE i_event INTO w_event WITH KEY name = slis_ev_user_command.
    w_event-form = 'USER_COMMAND'.
    MODIFY i_event FROM w_event INDEX sy-tabix.
    READ TABLE i_event INTO w_event WITH KEY name = slis_ev_top_of_page.
    w_event-form = 'TOP_OF_PAGE'.
    MODIFY i_event FROM w_event INDEX sy-tabix.
  ENDIF.
ENDFORM.                    " PREPARE_EVENTS
*&      Form  SET_PF_STATUS
      text
FORM set_pf_status USING extab TYPE slis_t_extab.
  SET PF-STATUS 'TEST_NEW'.
ENDFORM.                    "SET_PF_STATUS
*&      Form  USER_COMMAND
      text
FORM user_command USING rs_ucomm LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  CASE rs_ucomm.
    WHEN 'VBAP'.
      PERFORM display_vbap_data USING rs_selfield.
  ENDCASE.
ENDFORM.                    "USER_COMMAND
*&      Form  DISPLAY_VBAP_DATA
      text
FORM display_vbap_data USING rs_selfield TYPE slis_selfield.
  SET PARAMETER ID 'AUN' FIELD rs_selfield-value.
  CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDFORM.                    " DISPLAY_VBAP_DATA
*&      Form  TOP_OF_PAGE
      text
FORM top_of_page.
  w_header-typ = 'H'.
  w_header-info = sy-repid.
  APPEND w_header TO i_header.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary       = i_header
  I_LOGO                   =
  I_END_OF_LIST_GRID       =
  I_ALV_FORM               =
ENDFORM.                    " TOP_OF_PAGE
Rgds,
Bujji

Similar Messages

  • HOW TO DISPLAY MY OWN PF STATUS  IN ALV LIST DISPLAY

    Hi All,
    i am developing one program in this program i am displaying output by using alv list display. after displaying the out SAP predefined pf status is coming. here i need my own pf status. any body can send me the sample code ir modify my code if possible.
    i am sending my code below.
    report zmahi6.
    type-pools : slis.
    tables : zuser_secobjects.
    data : it_secobjects like zuser_secobjects occurs 0 with header line.
    data : i_field type slis_t_fieldcat_alv with header line.
    data : w_field like line of i_field.
    data : i_sort type slis_t_sortinfo_alv.
    data : w_sort like line of i_sort.
    data : it_filt1 type slis_t_filter_alv with header line.
    data:
    i_tabname type tabname,
    i_repid like sy-repid,
    is_lout type slis_layout_alv.
    data : chk_box type slis_fieldname.
    selection-screen: begin of block b1 with frame title text-t01.
    parameters : p_appln type zuser_secobjects-appln.
    parameters : p_user type usr02-bname, "zuser_secobjects-appln_user,
    p_partnr type zuser_secobjects-appln_partner,
    p_ptype type zuser_secobjects-partner_type default '02',
    p_upostn type zuser_secobjects-user_position,
    p_sdate like likp-erdat default sy-datum,
    "type zuser_secobjects-start_date
    p_edate(10) default '12/31/9999',
    type zuser_secobjects-end_date,
    p_revnum type zuser_secobjects-revnum,
    p_cted type zuser_secobjects-created_by,
    p_cdate type zuser_secobjects-creation_date,
    p_ctime type zuser_secobjects-creation_time,
    p_chnby type zuser_secobjects-changed_by,
    p_cdate1 type zuser_secobjects-changed_date,
    p_ctime1 type zuser_secobjects-changed_time.
    selection-screen: end of block b1.
    start-of-selection.
      perform get_data.
      check sy-subrc eq 0.
      set pf-status 'ZMAHEE'.
      perform prepare_fieldcatalog.
      perform alv_list_display.
    *& Form PREPARE_FIELDCATALOG
    text
    --> p1 text
    <-- p2 text
    form prepare_fieldcatalog.
      clear: w_field,i_field.
      refresh:i_field.
      i_field-key = 'X'.
      i_field-col_pos = 1.
      i_field-ddictxt = 'S'.
      i_field-seltext_s = '@11@'.
      i_field-checkbox = 'X'.
      i_field-input = 'X'.
      i_field-fieldname = 'HEADER'.
      i_field-outputlen = 0.
      append i_field.
      clear i_field.
      w_field-fieldname = 'APPLN'.
      w_field-tabname = 'IT_SECOBJECTS'.
      w_field-seltext_l = text-m01.
      w_field-outputlen = '10'.
      w_field-col_pos = 1.
      append w_field to i_field.
      clear w_field.
      w_field-fieldname = 'APPLN_USER'.
      w_field-tabname = 'IT_SECOBJECTS'.
      w_field-just = 'C'.
      w_field-seltext_l = text-m02.
      w_field-outputlen = '7'.
      w_field-col_pos = 2.
      append w_field to i_field.
      clear w_field.
    endform. " PREPARE_FIELDCATALOG
    *form pf_status_set using rt_extab type slis_t_extab.
    set pf-status '0001'.
    *endform.
    *& Form ALV_LIST_DISPLAY
    text
    --> p1 text
    <-- p2 text
    form alv_list_display.
      call function 'REUSE_ALV_LIST_DISPLAY'
      exporting
      i_callback_program = i_repid
      i_callback_pf_status_set = 'PF_STATUS_SET'
      i_callback_user_comomand = 'USER_COMMAND'
      is_layout = is_lout
      it_fieldcat = i_field[]
    it_sort = i_sort
    it_events = it_evts[]
      tables
      t_outtab = it_secobjects.
    endform. " ALV_LIST_DISPLAY
    *& Form GET_DATA
    text
    --> p1 text
    <-- p2 text
    form get_data.
      select * from zuser_secobjects
      into table it_secobjects.
    endform. " GET_DATA
    thanks,
    maheedhar.t

    Follow this steps.
    I ahve done it once and hope wuld work for you as well.
    Go to SE80. Open a a standard ABAP program - SAPLKKBL. diasplay object.
    This program has many standard GUI status. Copy the one which suits you the best. May be any one standars status. Right click it and copy to your custom report. Now open your Z-Program in SE80. You will see the GUI status and when you open it you see the name of the status that you have copied from.
    Now you can go and do any modifications in the screen.
    Remember you have to use the same status in the program as well.
    Please check this piece of code.
    call the ABAP list viewer                                            *
    FORM list_display TABLES a_output.
      pgm = disvariant-report = sy-repid.
      disvariant-variant = variant.
    call list viewer
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program       = pgm
          i_callback_pf_status_set = 'SET_PF_STATUS'
          it_fieldcat              = fieldcat
          is_variant               = disvariant
          is_layout                = layout
          is_print                 = print
          i_save                   = 'A'
          it_events                = eventcat
          it_sort                  = sortcat
          i_callback_user_command  = 'USER_COMMAND'
        TABLES
          t_outtab                 = a_output
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
    ENDFORM.                    "LIST_DISPLAY
    FORM SET_PF_STATUS *
    FORM set_pf_status USING extab TYPE slis_t_extab.
      SET PF-STATUS 'STATUS1'.
    ENDFORM.                    "set_pf_status
    FORM USER_COMMAND *
    FORM user_command USING ucomm LIKE sy-ucomm
    selfield TYPE slis_selfield.
      DATA t_difference TYPE i.
      CASE ucomm.
        WHEN 'ENT1'.<----Function code
    D0 your processing.
      ENDCASE.
      selfield-refresh = 'X'.
    ENDFORM.                    "user_command
    HOpe this helps.
    Shreekant

  • Ask about PF-STATUS in ALV LIST DISPLAY

    Hi gurus,
    I have a code like below :
    REPORT  zmm_qi_un2.
    TABLES : zqi01.
    TYPE-POOLS: slis.
    data : itab like table of zqi01 with header line.
    CONSTANTS : sym_checkbox VALUE '9',
                sym_large_square VALUE 'W',
                sym_locked VALUE 'H'.
    DATA: xheader TYPE slis_t_listheader WITH HEADER LINE,
          variant LIKE disvariant,
          layout         TYPE slis_layout_alv,
          xfield         TYPE slis_t_fieldcat_alv,
          afield         TYPE slis_fieldcat_alv.
    PARAMETERS:
      nodoc LIKE mseg-mblnr OBLIGATORY DEFAULT '5000000292',
      dyear LIKE mseg-mjahr DEFAULT '2011'.
    START-OF-SELECTION.
      PERFORM get_data.
      perform build_fieldcat_qiun.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
      EXPORTING
        i_callback_program = sy-repid
        i_callback_pf_status_set = 'SET_PF_STATUS'
        i_callback_user_command = 'USER_COMMAND'
        is_layout = layout
        it_fieldcat = xfield
       it_sort = it_sort
      TABLES
        t_outtab = itab
      EXCEPTIONS
        program_error = 1.
    END-OF-SELECTION.
    form build_fieldcat_qiun .
      refresh xfield.
      clear afield.
      afield-fieldname = 'IKONE'.
      afield-ref_tabname = 'RL032'.
      afield-hotspot = 'X'.
      afield-symbol = 'X'.
      afield-seltext_s = text-005.
      afield-seltext_m = text-006.
      afield-seltext_l = text-006.
      append afield to xfield.
      clear afield.
      afield-fieldname = 'MBLNR'.
      afield-ref_tabname = 'MSEG'.
      afield-hotspot = 'X'.
      append afield to xfield.
      clear afield.
      afield-fieldname = 'MJAHR'.
      afield-ref_tabname = 'MSEG'.
      afield-hotspot = 'X'.
      append afield to xfield.
      clear afield.
      afield-fieldname = 'ZEILE'.
      afield-ref_tabname = 'MSEG'.
      afield-hotspot = 'X'.
      append afield to xfield.
      clear afield.
      afield-fieldname = 'MATNR'.
      afield-ref_tabname = 'MSEG'.
      afield-hotspot = 'X'.
      afield-sp_group = 'Q'.
      append afield to xfield.
      clear afield.
      afield-fieldname = 'MENGE'.
      afield-ref_tabname = 'MSEG'.
      afield-qfieldname = 'MEINS'.
      afield-sp_group = 'Q'.
      append afield to xfield.
      clear afield.
      afield-fieldname = 'MEINS'.
      afield-ref_tabname = 'MSEG'.
      afield-sp_group = 'Q'.
      append afield to xfield.
      clear afield.
      afield-fieldname = 'LGORT'.
      afield-ref_tabname = 'MSEG'.
      afield-sp_group = 'Q'.
      append afield to xfield.
      clear afield.
      afield-fieldname = 'BWART'.
      afield-ref_tabname = 'MSEG'.
      afield-sp_group = 'Q'.
      append afield to xfield.
      clear afield.
      afield-fieldname = 'BKTXT'.
      afield-ref_tabname = 'MKPF'.
      afield-sp_group = 'Q'.
      append afield to xfield.
    endform.                    " BUILD_FIELDCAT_QIUN
    *&      Form  get_data
          text
    FORM get_data.
      FREE itab.
      SELECT mkpfmblnr mkpfmjahr mkpf~bktxt
             msegzeile msegmatnr mseg~menge
             msegmeins msegbwart mseg~lgort
        FROM mkpf INNER JOIN mseg ON mkpfmblnr = msegmblnr
                                 AND msegmjahr = mkpfmjahr
        INTO (itab-mblnr,itab-mjahr,itab-bktxt,
              itab-zeile,itab-matnr,itab-menge,
              itab-meins,itab-bwart,itab-lgort)
        WHERE mkpf~mblnr = nodoc
          AND mkpf~mjahr = dyear
          AND mseg~bwart IN ('101','102')
          AND mseg~insmk = 'X'.
        itab-ikone = sym_large_square.
        APPEND itab.
      ENDSELECT.
    ENDFORM.                    "get_data
    *&      Form  user_command
          text
         -->R_UCOMM      text
         -->RS_SELFIELD  text
    FORM user_command USING r_ucomm     LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN '&IC1'. "'&DATA_SAVE'. "user presses SAVE
          itab-ikone = sym_checkbox.
          modify itab index rs_selfield-tabindex.
      ENDCASE.
      rs_selfield-refresh = 'X'.
      rs_selfield-col_stable = 'X'.
      rs_selfield-row_stable = 'X'.
    ENDFORM.                    "user_command
    form set_pf_status using extab type slis_t_extab.
      set pf-status 'ALVSTAND'.
    endform.
    I have created GUI STATUS as ALVSTAND. when i click the first column, why function "user_command" not called ?
    But when i mark as commend on   i_callback_pf_status_set = 'SET_PF_STATUS', then i click the first column, function user commend called by the program, then program update case when '&IC1'.
    Please help me... Thanks for any advice.
    Regards,
    Toktok

    Hi,
    Check the code for your requirement the code which contain case when '&IC1'.
    http://wiki.sdn.sap.com/wiki/display/Snippets/ABAPInteractiveALV+Program
    Regards,
    Goutam Kolluru.

  • Handling Multiple checkboxes iin ALV list??

    Hi,
    I have a requirement of generating a list with multiple checkboxes corresponding to each line/row of the list..Based on the selection of some/all the rows of the list I have to invoke some functionality on the click of some button..
    I am able to get the chk-boxes on the list also i have got the button on the std PF-status of ALV list, but I am not able to handle multiple selection of the chk-boxes??
    plz help..

    On the field catalog definition for the amount field pass CFIELDNAME as the <currency> fieldname. if this is maintained, i would assume it will solve your issue.
    Say for example, the amount field is AMOUNT and the corresponding currency fieldname is 'CURRENCY', the field catalog for this field should be filled in something like this.
    t_fieldcat-fieldname = 'AMOUNT'.         "amount field name
    t_fieldcat-tabname = 'IT_FINAL'.           "internal table name
    t_fieldcat-cfieldname = 'CURRENCY'.   "currency field name which will be referred
    append t_fieldcat.
    Hope this helps.
    Thanks,
    Balaji

  • ALV List Missing Status Menu (Sorting, choose layout etc)

    Hi,
    I developed a report with ALV List display. When I display the ALV List, why my status menu (normally contains sorting, export to local, choose layout and other buttons) that will appear on top of the ALV report is missing?
    I try to look for the ALV Function Module parameters, but seems non of it related.
    I developed my previous report, it do have the menu there. Just this new report is missing.
    Can someone tell me where to set or code?
    Thanks.

    Hi Irene,
    Please check your pf_status_set routine if you use FM REUSE_ALV_GRID_DISPLAY.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = sy-repid
          i_callback_pf_status_set = 'PF_STATUS_SET'
          i_callback_user_command  = user_command
          i_buffer_active          = space
          i_bypassing_buffer       = 'X'
          is_layout                = er_layout
          it_fieldcat              = er_fieldcat[]
          it_special_groups        = er_sp_group
          i_save                   = 'A'
          is_variant               = e_variant
          it_events                = er_events[]
        TABLES
          t_outtab                 = outtab.
    *  FORM pf_status_set
    FORM pf_status_set USING rt_extab TYPE slis_t_extab.
      DATA: rt_extabw TYPE slis_extab.
      SET PF-STATUS 'STANDARD' EXCLUDING rt_extab.
      SET TITLEBAR 'STANDARD'.
    ENDFORM.                    "pf_status_set

  • Hide delete option is not working in ALV List  Display- urgent

    Hi All,
    In my program i am displaying the output by using alv list display. after displaying the data i am displaying my own pf status here. in this i have few pushbuttons like
    selest all, deselect all, hide . first two options are working fine. when i click hide button selected records are going to be hide.but this is not happening in my program. any body cam send me the code plz.
    i am sending my code below. if possible please modify and resend the code asap.
    my code:
    type-pools : slis.
    tables : zuser_secobjects.
    data : t_header1 like zuser_secobjects.
    data : begin of it_secobjects occurs 0.
            include structure t_header1.
    *data :  box,
           input(1) type c,
    data :   checkbox type c,
            flag type c,
          end of it_secobjects.
    data : wa_ita like line of it_secobjects.
    *data : it_secobjects like zuser_secobjects occurs 0 with header line.
    data : i_field type slis_t_fieldcat_alv with header line.
    data : w_field like line of i_field.
    data : i_sort type slis_t_sortinfo_alv.
    data : w_sort like line of i_sort.
    data : it_filt1 type slis_t_filter_alv with header line.
    data:
    i_tabname type tabname,
    i_repid like sy-repid,
    is_lout type slis_layout_alv.
    data :   it_filt type slis_t_filter_alv   with header line,
             it_evts type slis_t_event        with header line.
    DATA : is_vari type disvariant.
    constants :   c_default_vari value 'X',
                  c_save_vari    value 'U',
                   c_checkfield type slis_fieldname     value 'ACTION',
                   c_f2code     type sy-ucomm           value '&ETA'.
    data : chk_box type slis_fieldname.
    selection-screen: begin of block b1 with frame title text-t01.
    parameters : p_appln type zuser_secobjects-appln.
    parameters : p_user type usr02-bname, "zuser_secobjects-appln_user,
    p_partnr type zuser_secobjects-appln_partner,
    p_ptype type zuser_secobjects-partner_type default '02',
    p_upostn type zuser_secobjects-user_position,
    p_sdate like likp-erdat default sy-datum,
    p_edate(10) default '12/31/9999',
    p_revnum type zuser_secobjects-revnum,
    p_cted type zuser_secobjects-created_by,
    p_cdate type zuser_secobjects-creation_date,
    p_ctime type zuser_secobjects-creation_time,
    p_chnby type zuser_secobjects-changed_by,
    p_cdate1 type zuser_secobjects-changed_date,
    p_ctime1 type zuser_secobjects-changed_time.
    selection-screen: end of block b1.
    form user_command using p_ucomm like sy-ucomm
    rs_selfield type slis_selfield.
    *DATA :   it_filt type slis_t_filter_alv   with header line.
      case p_ucomm.
        when 'SELECT_ALL'. " SELALL is the FCODE of ur push button
          loop at it_secobjects into wa_ita.
            wa_ita-checkbox = 'X'.
            modify it_secobjects from wa_ita.
          endloop.
      rs_selfield-refresh = 'X'.   "<-  ADD THIS
      when 'DESLCT_ALL'.
        loop at it_secobjects into wa_ita.
            wa_ita-checkbox = ' '.
            modify it_secobjects from wa_ita.
          endloop.
      rs_selfield-refresh = 'X'.   "<-  ADD THIS
        is_lout-f2code               = c_f2code.
        is_lout-box_fieldname        = c_checkfield.
        is_lout-get_selinfos         = 'X'.
        is_lout-detail_popup         = 'X'.
        is_lout-detail_initial_lines = 'X'.
    when 'HIDE_DEL'.
          rs_selfield-exit  = 'X'.
          it_filt-fieldname = 'CHECKBOX'.
          it_filt-tabname   = '1'.
          it_filt-valuf     = 'X'.
          it_filt-intlen    = '1'.
          it_filt-inttype   = 'C'.
          it_filt-datatype  = 'CHAR'.
          it_filt-valuf_int = 'X'.
          it_filt-sign0     = 'E'.
          it_filt-optio     = 'EQ'.
          if it_filt[] is initial.
            append it_filt.
          else.
            modify it_filt index 1.
          endif.
         perform display using i_object.
    PERForm  ALV_LIST_DISPLAY.
    WHEN 'SHOW_DEL'.
          rs_selfield-exit = 'X'.
          free it_filt.
    PERForm  ALV_LIST_DISPLAY.
    when 'SAVE1'.
           select * from zuser_secobjects where
                        appln = zuser_secobjects-appln
                  and   appln_partner = zuser_secobjects-appln_partner
                  and   partner_type = zuser_secobjects-partner_type
                  and   start_date = zuser_secobjects-start_date
                  and   end_date = zuser_secobjects-end_date.
          endselect.
          if sy-subrc eq 0.
            message e000(ZV) with 'Duplicate Entry'.
          endif.
      endcase.
    endform.
    *&      Form  delete
    form delete.
      data : begin of is_secobjects occurs 0.
              include structure zuser_secobjects.
      data : checkbox type c.
      data : end of is_secobjects.
      is_secobjects-checkbox = 'X'.
      modify is_secobjects
        from it_secobjects
        transporting checkbox
      where checkbox = 'X'.
    endform.
    *&      Form  get_data
    form get_data.
      select * from zuser_secobjects
      into table it_secobjects.
    endform.                    " get_data
    *&      Form  prepare_fieldcatalog
          text
    -->  p1        text
    <--  p2        text
    form prepare_fieldcatalog.
      clear: w_field,i_field.
      refresh:i_field.
      i_field-key = 'X'.
      i_field-col_pos = 1.
      i_field-ddictxt = 'S'.
      i_field-seltext_s = '@11@'.
      i_field-checkbox = 'X'.
      i_field-input = 'X'.
      i_field-fieldname = 'HEADER'.
      i_field-outputlen = 0.
      append i_field.
      clear i_field.
      w_field-fieldname = 'APPLN'.
      w_field-tabname = 'IT_SECOBJECTS'.
      w_field-seltext_l = text-m01.
      w_field-outputlen = '10'.
      w_field-col_pos = 1.
      append w_field to i_field.
      clear w_field.
      w_field-fieldname = 'APPLN_USER'.
      w_field-tabname = 'IT_SECOBJECTS'.
      w_field-just = 'C'.
      w_field-seltext_l = text-m02.
      w_field-outputlen = '7'.
      w_field-col_pos = 2.
      append w_field to i_field.
      clear w_field.
    endform.                    " prepare_fieldcatalog
    *&      Form  ALV_LIST_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    form alv_list_display.
      i_repid = sy-repid.
      is_lout-box_fieldname = 'CHECKBOX'.
      it_filt-fieldname = 'CHECKBOX'.
      call function 'REUSE_ALV_LIST_DISPLAY'
           exporting
                i_callback_program       = i_repid
                i_callback_pf_status_set = 'PF_STATUS_SET'
                i_callback_user_command  = 'USER_COMMAND'
                is_layout                = is_lout
                it_fieldcat              = i_field[]
                it_filter                = it_filt[]
                 it_events                = it_evts[]
                i_default                = c_default_vari
                i_save                   = c_save_vari
                is_variant               = is_vari
           tables
                t_outtab                 = it_secobjects.
    endform.                    " ALV_LIST_DISPLAY
    *&      Form  display
          text
         -->P_I_OBJECT  text
    form display using    object.
      case object.
    ENDCASE.
    endform.                    " display
    thanks,
    maheedhar.t

    Hi,
    What do you mean by Hiding the records.
    Deleting completely from the screen.
    You can just delete the records from the internal table and pass to field catalog before displaying again.
    or serach in the slis structrue for hiding the contents of the output.
    reward if useful
    regards,
    Anji

  • I wnat to add new fieldtext in the alv list output plz tell me

    hi,
    i whant add new fieldtext in the list output, plz tell me where can i modify it.
    CORRECTIONS
    DATE       CORRECTION NOTE    AUTHOR DESCRIPTION
    09.03.2001 L9CK045451 0388404 XSC    Wrong list output for multiple Os
    05.06.2001 AL0K023393 0410219 Lud    Wrong keydate for search with
                                         Pchbegda and pchendda.
    22.04.2004 S6BK024775 730486  PS     Too many selection parameters in
                                         header
    19.06.2006 S6BK035494 956731  JF     No sorting by qualification
    REPORT RHPK_FIND_PERS_WITH_EXPIRED_QU MESSAGE-ID PQ.
    DATA  AUFRUF(8).
    TABLES : OBJEC, GDSET.
    DATA  LIST.
    DATA  MARKFIELD(1) TYPE C.
    ALV_POOL
    TYPE-POOLS SLIS.
    INCLUDES
    INCLUDE .
    INCLUDE RHPEINI0.
    TABLES
    DATA: orgeh_BUFFER like hrobject OCCURS 1 WITH HEADER LINE.
    DATA: OBJECTS    LIKE HRSOBID    OCCURS 1 WITH HEADER LINE.
    DATA: h_OBJEC    LIKE objec    OCCURS 0 WITH HEADER LINE.
    DATA: pers_objects LIKE HRSOBID    OCCURS 1 WITH HEADER LINE.
    DATA: QUALI_TAB LIKE QUALI_PROF OCCURS 1 WITH HEADER LINE.
    DATA: PERSONS LIKE PERSQ_PROF OCCURS 1 WITH HEADER LINE.
    DATA: H_PERSONS LIKE HRPE_PROFL OCCURS 1 WITH HEADER LINE.
    DATA: LIST_OUTPUT LIKE PERSQ_PROF OCCURS 1 WITH HEADER LINE.
    DATA: BOOK_EVENT_TAB LIKE PERSQ_PROF OCCURS 1 WITH HEADER LINE.
    DATA: PLAN_EVENT_TAB LIKE PERSQ_PROF OCCURS 1 WITH HEADER LINE.
    DATA H_SUITED LIKE DYNP_PCRIT-SUITED.
    DATA: O_COLOR LIKE STREEATTR-COLOR.
    DATA: O_INTENSIV LIKE STREEATTR-INTENSIV.
    DATA  SHOW_KEY.
    DATA EVENT.
    DATA: HTEXT LIKE P1000-STEXT.
    DATA: EVENT_TAB LIKE PERSQ_PROF OCCURS 1 WITH HEADER LINE.
    DATA: COLLECTED_EVENTS LIKE PERSQ_PROF OCCURS 1 WITH HEADER LINE.
    DATA: SUBTY_TAB LIKE HRPE_OTYPE_SUBTY OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF  HIDE_STRU,
            PERSTYPE LIKE HROTYPE-OTYPE,
            PERSOBID LIKE HRSOBID-SOBID,
            PERSTXT LIKE PERSQ_PROF-STEXT,
            SCALE_ID LIKE HRPE_PROFQ-SCALE_ID,
            TRAININGTYPE LIKE HRP1000-OTYPE,
            TRAININGID   LIKE HRP1000-OBJID,
            TRAININGSTXT LIKE HRP1000-STEXT,
            QUALID LIKE QUALI_PROF-QUALID,
            QUALTEXT LIKE QUALI_PROF-QUALSTXT,
          END OF HIDE_STRU.
    DATA: BEGIN OF EXTAB OCCURS 10,
             FCODE LIKE RSMPE-FUNC,
          END OF EXTAB.
    DATA:  CURRENT_QUALID LIKE QUALI_PROF-QUALID.
    DATA:  CURRENT_TRAININGSID LIKE HRP1000-OBJID.
    DATA:  CURRENT_TRAININGTYPE LIKE HRP1000-OTYPE.
    DATA: SUBRC LIKE SY-SUBRC.
    VARIABLES
    DATA: OBJID LIKE P1000-OBJID.
    DATA: H_LINE_COUNT TYPE I.
    DATA: H_TABIX1 LIKE SY-TABIX.
    ALV-Variables
    DATA: alv_events_line    TYPE slis_alv_event.         "header line
    DATA ALV_EVENTS TYPE SLIS_T_EVENT.
    DATA GT_ALV_LIST_TOP_OF_LIST TYPE SLIS_T_LISTHEADER.
    DATA: gt_events TYPE SLIS_T_EVENT.
    DATA G_REPID LIKE SY-REPID.
    DATA G_VARIANT LIKE DISVARIANT.
    DATA ALV_USERCOMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
    DATA G_USERCOMMAND_FOR_RANKINGLIST TYPE SLIS_FORMNAME VALUE
    'USER_COMMAND_FOR_RANKINGLIST'.
    DATA ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA: ALV_OUTPUT  LIKE HRPDV_EXPIRED_Q OCCURS 0 WITH HEADER LINE.
    DATA: Help_OUTPUT LIKE HRPDV_EXPIRED_Q OCCURS 0 WITH HEADER LINE.
    begin of Dynpro 5020 - POPUP: WEITER
    DATA: OK_CODE_5020   LIKE SY-UCOMM.
    DATA: NO_ORG.                          "if no org selected
    DATA: H_TABIX LIKE SY-TABIX.
    begin of Dynpro 20nn - Header
    TABLES: DYNP_RHPP.
    SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-005.
    PARAMETERS:
       H_EVENTS LIKE DYNP_RHPP-GEN_TRAIN,  "with training sugg
       H_QUAL   LIKE DYNP_RHPP-EXPIRED_QUAL. "with Qual
    SELECTION-SCREEN END OF BLOCK B3.
    INITIALIZATION
    INITIALIZATION.
      PERFORM READ_T77S0_PARAMETERS_FOR_PE.
    get user parameters/Planvariante und Beginndatum setzen:
      PCHOTYPE = $ORGEH.
      CALL FUNCTION 'RHP0_USER_PARAMETERS_GET'
           EXPORTING
                FILL_IF_INITIAL = 'X'
           IMPORTING
                PLVAR           = PCHPLVAR
                BEGDA           = PCHBEGDA
                endda           = Pchendda    "Correction 0410219
                WITH_KEY        = SHOW_KEY
              SUBSTITUTE      =
              ESSENTIAL       = only_essential
                ORG_UNIT        = PCHOBJID-LOW
          EXCEPTIONS
                OTHERS     = 0.
    PCHBEGDA = LOW_DATE.   "Correction note: 0410219 / AL0K023393
    get menu text for key on/off
      PERFORM USER_MENU_TEXT_KEY(SAPLRHP0) USING G_MENU_TEXT_KEY.
    start-of-selection
    START-OF-SELECTION.
    terminate the selection if objid isn't given
      READ TABLE PCHOBJID INDEX 1 TRANSPORTING NO FIELDS.
      IF SY-SUBRC <> 0
      AND PCHOBJID IS INITIAL.
        PCHOBJID-SIGN   = 'I'.
        PCHOBJID-OPTION = 'EQ'.
        PCHOBJID-LOW    = '00000001'.
        APPEND PCHOBJID.
        NO_ORG = TRUE.
      ELSE.
        NO_ORG = FALSE.
      ENDIF.
    GET OBJEC.
    terminate the selection if objid isn't given
      IF NO_ORG = TRUE.
        EXIT.
      ENDIF.
      OBJECTS-PLVAR = PCHPLVAR.
      OBJECTS-OTYPE = PCHOTYPE.
      OBJECTS-SOBID = OBJEC-REALO.
      APPEND OBJECTS.
    Für das lesen der Organisationseinheit
      h_OBJEC-PLVAR = OBJEC-PLVAR.
      h_OBJEC-OTYPE = OBJEC-OTYPE.
      h_OBJEC-OBJID = OBJEC-objid.
      append h_objec.
      Read table h_objec index 1 transporting no fields.
      if sy-subrc = 0.
    Fill Buffer
        orgeh_BUFFER = h_OBJEC.
        orgeh_BUFFER[] = h_OBJEC[].
        CALL FUNCTION 'RH_TEXT_BUFFER_FILL'
          TABLES
            OBJECTS = orgeh_BUFFER.
        Loop at h_OBJEC.
          H_TABIX = SY-TABIX.
    Read text of organisation
          CALL FUNCTION 'RH_READ_OBJECT'
               EXPORTING
                    PLVAR     = h_OBJEC-plvar
                    OTYPE     = h_OBJEC-otype
                    OBJID     = h_OBJEC-OBJID
               IMPORTING
                  OBEG      = h_objec-begda
                  OEND      = h_objec-endda
                   SHORT     = short
                    STEXT     = h_OBJEC-stext
              EXCEPTIONS
                    NOT_FOUND = 1
                    OTHERS    = 2.
          IF SY-SUBRC = 0.
            modify h_OBJEC index H_TABIX.
          ENDIF.
        endloop.
      endif.
    end-of-selection
    END-OF-SELECTION.
    read objects of the organizational unit
      OBJID = OBJECTS-SOBID.
      CALL FUNCTION 'RHPH_PICK_UP_PERSONS'
          EXPORTING
               BEGDA      = PCHBEGDA    "Correction 0410219
               ENDDA      = PCHENDDA    "Correction 0410219
             STATUS     = '1'
               WITH_STEXT = 'X'
           TABLES
                OBJECTS    = OBJECTS
                PERSONS    = H_PERSONS
          EXCEPTIONS
               UNDEFINED  = 1
               OTHERS     = 2.
      IF SY-SUBRC = 0.
    prepare objects !
        objects-otype = h_persons-ttype.
        objects-sobid = h_persons-tobid.
        append objects.
      ELSE.
        EXIT.
      ENDIF.
    CLEAR OBJECTS. REFRESH OBJECTS.
    prepare sel_objects !
      pers_objects-PLVAR = PCHPLVAR.
      LOOP AT H_PERSONS.
        pers_objects-OTYPE = H_PERSONS-TTYPE.
        pers_objects-SOBID = H_PERSONS-TOBID.
        APPEND pers_objects.
      ENDLOOP.
    sort objects and delete adjacent duplicates
      SORT Pers_OBJECTS BY PLVAR OTYPE SOBID.
      DELETE ADJACENT DUPLICATES FROM Pers_OBJECTS COMPARING PLVAR OTYPE
    SOBID.
      CALL FUNCTION 'RHPK_FIND_PERS_WITH_EXPIRED_Q'
           EXPORTING
               PLVAR            = PCHPLVAR
               CHECK_BEGDA      = PCHBEGDA
               CHECK_ENDDA      = PCHENDDA
               SUBTY            = $ownsb                        "'B032'
             only_essential   =
             target_otype     =
             target_ap_iea    =
           TABLES
                IMP_PER_TAB     = pers_objects
                QUALI_TAB       = QUALI_TAB
                PERSONS         = LIST_OUTPUT
            altq_tab          =
          EXCEPTIONS
               NO_QUALIFICATION = 1
               NO_PERSON_FOUND  = 2
               OTHERS           = 3.
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    100% case
      READ TABLE pers_objects INDEX 1 TRANSPORTING NO FIELDS.
      IF SY-SUBRC = 0.
        sort pers_objects by otype sobid.
      check the selected persons: if org.unit was selected !
        Loop at pers_objects.
          H_TABIX = SY-TABIX.
          READ TABLE LIST_OUTPUT WITH KEY  OTYPE = pers_objects-OTYPE
                                           SOBID = pers_objects-SOBID
                                           BINARY SEARCH.
          IF SY-SUBRC <> 0.
          person doesn't belong to the selected org.unit
          DELETE LIST_OUTPUT INDEX H_TABIX.
          ENDIF.
        ENDLOOP.
      ENDIF.                               "org.unit check needed ?
    end-of-selection.
      sort h_objec by otype objid.
      sort list_output by otype sobid.
      sort h_persons by ttype tobid.
    ALV-Liste aufbauen
      loop at h_objec.
        loop at h_persons where otype = h_objec-otype     "XSC
                          and   sobid = h_objec-objid.    "XSC
          Read table list_output with key
                                 otype = h_persons-ttype
                                 sobid = h_persons-tobid
                                 binary search.
          if sy-subrc = 0.
            h_tabix1 = sy-tabix.
            while sy-subrc = 0.
              clear alv_output.                            "XSC
              ALV_OUTPUT-otype    = h_objec-otype.
              ALV_OUTPUT-sobid    = h_objec-objid.
              ALV_OUTPUT-stext    = h_objec-stext.
              ALV_OUTPUT-Ptype    = LIST_OUTPUT-otype.
              ALV_OUTPUT-pobid    = LIST_OUTPUT-sobid.
              ALV_OUTPUT-pshort   = LIST_OUTPUT-short.
              ALV_OUTPUT-ptext    = LIST_OUTPUT-stext.
              ALV_OUTPUT-qualid   = LIST_OUTPUT-qualid.
              ALV_OUTPUT-qualstxt = LIST_OUTPUT-qualstxt.
              ALV_OUTPUT-expbegda = LIST_OUTPUT-vbegda.
              ALV_OUTPUT-expendda = LIST_OUTPUT-vendda.
          PERFORM FIND_TRAINING TABLES QUALI_TAB EVENT_TAB COLLECTED_EVENTS
                    USING $PLVAR $GDATE H_EVENTS H_QUAL.
              IF NOT EVENT_TAB[] IS INITIAL.
                READ TABLE COLLECTED_EVENTS WITH KEY
                                     QUALID = LIST_OUTPUT-QUALID.
                IF SY-SUBRC = 0.
                  ALV_OUTPUT-ICON_S_EVENTS = ICON_BOOKEVENT.
                endif.
              ENDIF.
              Append ALV_OUTPUT.
              h_tabix1 = h_tabix1 + 1.
              READ TABLE list_output INDEX h_tabix1
                         COMPARING otype sobid.
            endwhile.
          endif.
        endloop.
      endloop.
    check if indicator for qualification view is set
      IF h_qual = 'X'.                                          "note 956731
        SORT alv_output by qualid OTYPE SOBID ptype pobid       "note 956731
        expbegda expendda.                                      "note 956731
      ELSE.                                                     "note 956731
        SORT alv_output by OTYPE SOBID ptype pobid qualid expbegda expendda.
      ENDIF.                                                    "note 956731
      DELETE ADJACENT DUPLICATES FROM ALV_OUTPUT COMPARING OTYPE SOBID ptype
        pobid qualid expbegda expendda.
    stext_AQ und icon-Feld noch nicht gefüllt
        perform PREPARE_TOP_OF_LIST.
        perform Build_FIELDCAT using GT_FIELDCAT[] H_EVENTS.
        perform ALV_LAYOUT USING alv_layout.
        G_REPID          = SY-REPID.
        G_VARIANT-REPORT = G_REPID.
        PERFORM EVENTTAB_BUILD USING GT_EVENTS.
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
            EXPORTING
        I_INTERFACE_CHECK        = 'X'
            I_CALLBACK_PROGRAM       = G_REPID
        I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
            I_CALLBACK_USER_COMMAND  = ALV_USERCOMMAND
            I_STRUCTURE_NAME         = 'HRPDV_EXPIRED_Q'
            IS_LAYOUT                = ALV_LAYOUT
            IT_FIELDCAT              = GT_FIELDCAT[]
        IT_EXCLUDING             =
        IT_SPECIAL_GROUPS        =
        IT_SORT                  =
        IT_FILTER                =
        IS_SEL_HIDE              =
            I_DEFAULT                = 'X'
            I_SAVE                   = 'A'
            IS_VARIANT               = G_VARIANT
            IT_EVENTS                = GT_EVENTS
        IT_EVENT_EXIT            =
        IS_PRINT                 =
        IS_REPREP_ID             =
        I_SCREEN_START_COLUMN    = 0
        I_SCREEN_START_LINE      = 0
        I_SCREEN_END_COLUMN      = 0
        I_SCREEN_END_LINE        = 0
        IMPORTING
          E_EXIT_CAUSED_BY_CALLER  =
          ES_EXIT_CAUSED_BY_USER   =
          TABLES
            T_OUTTAB                 = ALV_OUTPUT
          EXCEPTIONS
              PROGRAM_ERROR            = 1
              OTHERS                   = 2  .
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    *&      Form  FIND_TRAINING
          text
         -->P_QUALI_TAB  text
         -->P_EVENT_TAB  text
         -->P_$PLVAR  text
         -->P_GDATE  text
         -->P_H_EVENT  text
         -->P_H_QUAL  text
    FORM FIND_TRAINING TABLES  P_QUALI_TAB STRUCTURE QUALI_TAB
                               P_EVENT_TAB STRUCTURE EVENT_TAB
                               P_COLLECTED_EVENTS STRUCTURE COLLECTED_EVENTS
                       USING   VALUE(P_$PLVAR) LIKE P1000-PLVAR
                               VALUE(P_GDATE) LIKE P1000-GDATE
                               VALUE(P_H_EVENT) TYPE ANY
                               VALUE(P_H_QUAL) TYPE ANY.
      IF NOT P_H_EVENT IS INITIAL.
        READ TABLE EVENT_TAB INDEX 1 TRANSPORTING NO FIELDS.
        IF SY-SUBRC <> 0.
          CLEAR P_EVENT_TAB. REFRESH EVENT_TAB.
          CLEAR P_COLLECTED_EVENTS. REFRESH P_COLLECTED_EVENTS.
          IF EVENT = FALSE.
            EVENT = TRUE.
          ELSE.
            EVENT = FALSE.
          ENDIF.
          CALL FUNCTION 'RHPH_FIND_TRAINING_FOR_QUAL'
               EXPORTING
                    PLVAR            = PCHPLVAR
                    GDATE            = SY-DATUM
                  GET_NAME         = 'X'
               TABLES
                    QUALI_TAB        = QUALI_TAB
                    TO_Q_TAB         = EVENT_TAB
              EXCEPTIONS
                   NO_QUALIFICATION = 1
                   NO_OBJECT_FOUND  = 2
                   TECHNICAL_ERROR  = 3
                   OTHERS           = 4.
          IF SY-SUBRC = 0.
    the found qualifications are picked up into table event_tab
          ENDIF.
          IF SY-SUBRC = 1.
            MESSAGE S015.   "Zu den Eingaben wurden keine Daten gefunden
          ENDIF.
          IF SY-SUBRC > 2.
            EXIT.
          ENDIF.
    collect events when there are double.
    Veranstaltungen kollektieren, Können mehrfach auftauchen, da
    verschiedenen Qualifikationen von gleichen Veranstaltungen vermittelt
          LOOP AT P_EVENT_TAB INTO P_COLLECTED_EVENTS.
            APPEND P_COLLECTED_EVENTS.
          ENDLOOP.
          SORT P_COLLECTED_EVENTS BY QUALID STEXT.
        ENDIF.
      ENDIF.
    ENDFORM.                               " FIND_TRAINING
    *&      Form  PREPARE_TOP_OF_LIST
          text
    -->  p1        text
    <--  p2        text
    FORM PREPARE_TOP_OF_LIST.
      DATA ALV_TOP_OF_LIST TYPE SLIS_LISTHEADER.  "typ, key, info
      DATA STEXT LIKE HRPDV_SUCCESSOR_VIEW-TTEXT.
      DATA P_SUBRC LIKE SY-SUBRC.
      DATA P_STEXT LIKE T777O-OTEXT.
      DATA l_tabix like sy-tabix value 0.
      DATA: h_counter TYPE i.                             "note 730486
      ALV_TOP_OF_LIST-TYP = 'H'.
      ALV_TOP_OF_LIST-INFO = TEXT-REQ.
      APPEND ALV_TOP_OF_LIST TO GT_ALV_LIST_TOP_OF_LIST.
    Organisationseinheit
      ALV_TOP_OF_LIST-typ = 'S'.
    Read text for organisationunit
      PERFORM READ_TEXT_OTYPE_T777O(SAPLRHP0) USING SY-LANGU $ORGEH
                                                    P_STEXT P_SUBRC.
      ALV_TOP_OF_LIST-key = P_STEXT.
    fill buffer for read organisation-text
      CALL FUNCTION 'RH_TEXT_BUFFER_FILL'
         EXPORTING
              CHECK_STRU_AUTH = 'X'
              WITH_EXTINT     = ' '
           TABLES
                OBJECTS         = OBJECTS.
    loop at objects for multipleselection
      clear h_counter.                          "note 730486
      LOOP AT OBJECTS.
        $OBJID = OBJECTS-SOBID.
        CALL FUNCTION 'RH_READ_OBJECT'
             EXPORTING
                PLVAR           = OBJECTS-PLVAR
                OTYPE           = OBJECTS-OTYPE
                OBJID           = $OBJID
             IMPORTING
              SHORT           = short
                STEXT           = STEXT
             EXCEPTIONS
                NOT_FOUND       = 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.
        IF h_counter >= 15.                               "note 730486
          MOVE '( ... )' TO ALV_TOP_OF_LIST-INFO.         "note 730486
          APPEND ALV_TOP_OF_LIST TO gt_alv_list_top_of_list.
          "note 730486
          EXIT.                                           "note 730486
        ENDIF.                                            "note 730486
        CONCATENATE $ORGEH OBJECTS-SOBID STEXT INTO
        ALV_TOP_OF_LIST-INFO SEPARATED BY SPACE.
        APPEND ALV_TOP_OF_LIST TO GT_ALV_LIST_TOP_OF_LIST.
        CLEAR ALV_TOP_OF_LIST.
        ALV_TOP_OF_LIST-typ = 'S'.
        l_tabix = l_tabix + 1.
        ADD 1 TO h_counter.                         "note 730486
      ENDLOOP.
    CLEAR ALV_TOP_OF_LIST.
      ALV_TOP_OF_LIST-TYP  = 'S'.
      ALV_TOP_OF_LIST-key = TEXT-003.
      WRITE PCHBEGDA TO ALV_TOP_OF_LIST-INFO.
      APPEND ALV_TOP_OF_LIST TO GT_ALV_LIST_TOP_OF_LIST.
      clear ALV_TOP_OF_LIST-INFO.
      ALV_TOP_OF_LIST-key = TEXT-004.
      WRITE PCHENDDA TO ALV_TOP_OF_LIST-INFO.
      Append ALV_TOP_OF_LIST TO GT_ALV_LIST_TOP_OF_LIST.
    ENDFORM.                               " PREPARE_TOP_OF_LIST
    *&      Form  BUILD_FIELDCAT
          text
         -->P_GT_FIELDCAT[]  text
    FORM BUILD_FIELDCAT USING  P_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV
                               P_H_EVENTS.
      DATA: WA_FIELDCAT LIKE LINE OF P_GT_FIELDCAT.
      DATA: P_REPNAME LIKE SY-REPID,
            L_TABIX LIKE SY-TABIX.         "local variable for sy-tabix.
      P_REPNAME = SY-REPID.
    Erstellen des Feldkataloges
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
         EXPORTING
               I_PROGRAM_NAME         = P_REPNAME
               I_INTERNAL_TABNAME     =
               I_STRUCTURE_NAME       = 'HRPDV_EXPIRED_Q'
               I_CLIENT_NEVER_DISPLAY = 'X'
               I_INCLNAME             = PRONAME
         CHANGING
               CT_FIELDCAT            = P_GT_FIELDCAT
         EXCEPTIONS
               INCONSISTENT_INTERFACE = 0
               PROGRAM_ERROR          = 0
               OTHERS                 = 0.
      LOOP AT P_GT_FIELDCAT INTO WA_FIELDCAT.
        l_tabix = sy-tabix.
        CASE WA_FIELDCAT-FIELDNAME.
          when 'OTYPE'.
            WA_FIELDCAT-DDICTXT = 'L'.
          when 'SOBID'.
            WA_FIELDCAT-DDICTXT = 'L'.
          WHEN 'STEXT'.
            WA_FIELDCAT-DDICTXT = 'L'.
          when 'PTYPE'.
            WA_FIELDCAT-DDICTXT = 'L'.
          when 'POBID'.
            WA_FIELDCAT-DDICTXT = 'L'.
          when 'PSHORT'.
            WA_FIELDCAT-DDICTXT = 'L'.
          WHEN 'PTEXT'.
            WA_FIELDCAT-DDICTXT = 'L'.
          WHEN 'QUALID'.
            WA_FIELDCAT-DDICTXT = 'L'.
          WHEN 'QUALSTXT'.
            WA_FIELDCAT-DDICTXT = 'L'.
          WHEN 'EXPBEGDA'.
            WA_FIELDCAT-DDICTXT = 'L'.
          WHEN 'EXPENDDA'.
            WA_FIELDCAT-DDICTXT = 'L'.
          WHEN 'ICON_S_EVENTS'.
            IF P_H_EVENTS IS INITIAL.
              WA_FIELDCAT-NO_OUT = 'X'.
            else.
              WA_FIELDCAT-DDICTXT = 'X'.
            endif.
        ENDCASE.
        MODIFY P_GT_FIELDCAT FROM WA_FIELDCAT INDEX l_tabix.
      ENDLOOP.
    ENDFORM.                               " BUILD_FIELDCAT
    *&      Form  ALV_LAYOUT
          text
         -->P_L_ALV_LAYOUT  text
    FORM ALV_LAYOUT USING    P_ALV_LAYOUT  TYPE slis_layout_alv.
    build layout
    P_LAYOUT-BOX_FIELDNAME = 'MARK_X'.   "fieldname for checkbox
      P_ALV_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
      P_ALV_LAYOUT-BOX_TABNAME   =  ALV_OUTPUT.   "tabname for checkbox
      p_ALV_layout-info_fieldname = 'ALV_COLOR'.
    ENDFORM.                               " ALV_LAYOUT
    FORM eventtab_build USING
    FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.
      DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      MOVE 'TOP_OF_PAGE' TO LS_EVENT-NAME.
      MOVE 'TOP_OF_PAGE' TO LS_EVENT-FORM.
      APPEND LS_EVENT TO RT_EVENTS.
    ENDFORM.                    "EVENTTAB_BUILD
    *FORM TOP_OF_PAGE
    FORM TOP_OF_PAGE.                                           "#EC CALLED
      NEW-PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = GT_ALV_LIST_TOP_OF_LIST[].
    ENDFORM.                    "TOP_OF_PAGE
          FORM USER_COMMAND                                             *
    USER_COMMAND for the list of successor view                         *
    -->  r_ucomm                                                       *
    -->  rs_selfield                                                   *
    FORM USER_COMMAND USING ALV_UCOMM LIKE SY-UCOMM
          RS_SELFIELD TYPE SLIS_SELFIELD.                       "#EC CALLED
      DATA: SELECTED_LINE LIKE HRPDV_expired_q.
      DATA: SOBID_QUA LIKE P1000-OBJID.
      DATA: LT_PERS_TAB LIKE HRSOBID OCCURS 0 WITH HEADER LINE.
      CASE ALV_UCOMM.
        WHEN '&IC1'.                       "per Doppelklick auswählen
          READ TABLE ALV_OUTPUT INDEX
          RS_SELFIELD-TABINDEX INTO SELECTED_LINE.
          CASE RS_SELFIELD-FIELDNAME.
            WHEN 'POTYPE' or 'POBID' or 'PTEXT' or 'OTYPE' or 'SOBID' or
    'STEXT' or 'QUALID' or 'QUALSTXT' or 'EXPBEGDA' or 'EXPENDDA'.
              READ TABLE ALV_OUTPUT INDEX RS_SELFIELD-TABINDEX INTO
                    Help_output.
              IF SY-SUBRC <> 0.
                MESSAGE S027.               "Bitte gültige Zeile auswählen
                EXIT.
              Endif.
         IF ALV_OUTPUT-SOBID IS INITIAL.
           MESSAGE S015.  "Zu den Eingaben wurden keine Daten gefunden
         ELSE.
         converte the variable because of the different types
         SOBID_QUA = SELECTED_LINE-SOBID_QUA.
              CALL FUNCTION 'RHPP_SHOW_PROFILE'
                EXPORTING
                  PLVAR        = pchplvar
                  OTYPE        = SELECTED_LINE-PTYPE       "XSC
                  OBJID        = SELECTED_LINE-POBID       "XSC
                  BEGDA        = PCHBEGDA
                  ENDDA        = PCHENDDA
                  MAINTAIN     = ' '
                EXCEPTIONS
                  NO_AUTHORITY = 1
                  NOT_FOUND    = 2
                  OTHERS       = 3.
              CASE SY-SUBRC.
                WHEN 0.
                All right.
                WHEN 1.
                  MESSAGE S015.
                Zu Ihren Eingaben konnten keine Daten gefunden werden!
                WHEN 2.
                  MESSAGE E000.
                Dazu haben sie keine berechtigung!
                WHEN OTHERS.
                  MESSAGE E008.
                Es ist ein unvorhergesehener Fehler aufgetreten.
              ENDCASE.                     "sy-subrc.
              CLEAR ALV_OUTPUT.
       ENDIF.    "IF ALV_OUTPUT-SOBID IS INITIAL.
       CLEAR ALV_OUTPUT-SOBID.
            when 'ICON_S_EVENTS'.
              IF SELECTED_LINE-ICON_S_EVENTS IS INITIAL.
                MESSAGE S027.              "Bitte gültige Zeile auswählen
                EXIT.
              ENDIF.
              CLEAR LT_PERS_TAB.
              REFRESH LT_PERS_TAB.
              LT_PERS_TAB-PLVAR = pchPLVAR.
              LT_PERS_TAB-OTYPE = SELECTED_LINE-PTYPE.          "XSC
              LT_PERS_TAB-SOBID = SELECTED_LINE-POBID.          "XSC
              APPEND LT_PERS_TAB.
              SOBID_QUA = SELECTED_LINE-QUALID.
              CALL FUNCTION 'RHPP_SHOW_SUGGEST_EVENTS'
              EXPORTING
                P_PLVAR      = pchPLVAR
                P_SOBID_QUA  = SOBID_QUA
              P_PROFCY_REQ = SELECTED_LINE-RATING_REQ
                P_GDATE      = sy-datum
              TABLES
              EVENT_TAB    =
                PERS_TAB     = LT_PERS_TAB.
          endcase.
          CLEAR SELECTED_LINE.
      ENDCASE.                             "case sy-ucomm
    CLEAR SY-UCOMM.
    ENDFORM.                    "USER_COMMAND

    Pls be more specific in your question. If you want to include an extra field in your alv output, then read the field catalog table you created through "Reuse_alv_fieldcatalog_merge" and then add an extra entry in it giving the details of the field you want to add.. and then call the "resuse_alv_grid_display",
    Hope this helps. To be able to help you in a better way, kindly revert with any specific issue.
    Reward if helpful,
    Karan

  • Double click in alv list

    Hi all,
    Here is the code:
    my aim is to double click the alv list and display the correspoonding data .can any one tell me how to solve this.
    regards,
    Lisa
    Message was edited by: Lisa Roy

    Hi Lisa,
    **-ALV list Display
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM       = SY-REPID
       <b>   I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'</b>
        <b>  I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'</b>
          IS_LAYOUT                = X_LAYOUT
          IT_FIELDCAT              = IT_FIELDCAT
          IT_EVENTS                = IT_EVENTS
        TABLES
          T_OUTTAB                 = IT_FINAL
        EXCEPTIONS
          PROGRAM_ERROR            = 1
          OTHERS                   = 2.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    you need to pass these two forms
    FORM PF_STATUS_SET USING    P_EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'STANDARD' EXCLUDING P_EXTAB.
    ENDFORM.                    "PF_STATUS_SET
    FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM SELFIELD TYPE
                                                             SLIS_SELFIELD.
    case UCOMM.
    when '&IC1'.  "this is for double click.
    "do some thing..
      ENDCASE.
    ENDFORM.                    "USER_COMMAND

  • Pf status in alv

    Hi all,
    I have to add a button to alv list display output to proceed further ( along with other standard buttons like select all/ filer/ sorting etc).
    can anybody help me please.
    thanks,
    sudheer

    SE41 create
    copy standard status from program saplsalv to you're own program and status standard
    in you're programm refer to you're status created
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
    *     I_INTERFACE_CHECK                 = ' '
          i_bypassing_buffer                = 'X'
    *     I_BUFFER_ACTIVE                   = ' '
          i_callback_program                = h_repid
          i_callback_pf_status_set          = 'SET_PF_STATUS'
          i_callback_user_command           = 'USER_COMMAND'
    and the form
    *&      Form  set_pf_status
    *       text
    *      -->RT_EXTAB   text
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'STANDAARD'.
    ENDFORM.                    "set_pf_status
    kind regards
    arthur de smidt
    Edited by: A. de Smidt on Jul 18, 2008 8:52 AM

  • How to read modifed data in ALV List

    Hi,
    I have one input enabled field in my ALV list.  User can modify the values of that field.  How i can get what are all the records are modified by the user.
    Thanks
    stallin

    Hi,
    Try this code...
    REPORT ZTEST_EDIT_ALV                             .
    *Data Declaration
    DATA: BEGIN OF T_EKKO,
      EBELN TYPE EKPO-EBELN,
      EBELP TYPE EKPO-EBELP,
    *  FLAG TYPE C,
    *  HANDLE_STYLE TYPE LVC_T_STYL,
    END OF T_EKKO.
      DATA: GD_REPID LIKE SY-REPID, "Exists
      REF_GRID TYPE REF TO CL_GUI_ALV_GRID. "new
    DATA: BEGIN OF IT_EKKO OCCURS 0.
            INCLUDE STRUCTURE T_EKKO.
    DATA: END OF IT_EKKO.
    DATA: BEGIN OF IT_BACKUP OCCURS 0.
            INCLUDE STRUCTURE T_EKKO.
    DATA: END OF IT_BACKUP.
    *ALV data declarations
    TYPE-POOLS: SLIS.                                 "ALV Declarations
    DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
          GD_LAYOUT    TYPE SLIS_LAYOUT_ALV.
    *Start-of-selection.
    START-OF-SELECTION.
      PERFORM DATA_RETRIEVAL.
      PERFORM BUILD_FIELDCATALOG.
      PERFORM BUILD_LAYOUT.
      IT_BACKUP[] = IT_EKKO[].
      PERFORM DISPLAY_ALV_REPORT.
    *&      Form  build_fieldcatalog
    *       text
    FORM BUILD_FIELDCATALOG.
      REFRESH FIELDCATALOG.
      CLEAR FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'EBELN'.
      FIELDCATALOG-SELTEXT_M   = 'Purchase Order'.
      FIELDCATALOG-INPUT     = 'X'.
      FIELDCATALOG-EDIT     = 'X'.
      FIELDCATALOG-COL_POS     = 2.
      APPEND FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'EBELP'.
      FIELDCATALOG-SELTEXT_M   = 'PO Item'.
      FIELDCATALOG-COL_POS     = 3.
      APPEND FIELDCATALOG.
      CLEAR  FIELDCATALOG.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    FORM BUILD_LAYOUT.
      "Permet d'ajuster les colonnes au text
    *  gd_layout-colwidth_optimize = 'X'.
    *  GD_LAYOUT-TOTALS_TEXT       = 'Totals'(201).
    *  gd_layout-box_fieldname = 'SELECT'.
    *  gd_layout-box_tabname   = 'IT_EKKO'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
    *       Display report using ALV grid
    FORM DISPLAY_ALV_REPORT .
      GD_REPID = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                I_CALLBACK_PROGRAM        = GD_REPID
    *            i_callback_top_of_page   = 'TOP-OF-PAGE'
                I_CALLBACK_PF_STATUS_SET  = 'SET_PF_STATUS'
                I_CALLBACK_USER_COMMAND   = 'USER_COMMAND'
    *            i_grid_title             = 'My Title'
                IS_LAYOUT                 = GD_LAYOUT
                IT_FIELDCAT               = FIELDCATALOG[]
           TABLES
                T_OUTTAB                  = IT_EKKO
           EXCEPTIONS
                PROGRAM_ERROR             = 1
                OTHERS                    = 2.
      IF SY-SUBRC <> 0.
        WRITE:/ SY-SUBRC.
      ENDIF.
    ENDFORM.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
    *       Retrieve data form EKPO table and populate itab it_ekko
    FORM DATA_RETRIEVAL.
      SELECT EBELN EBELP
       UP TO 10 ROWS
        FROM EKPO
        INTO CORRESPONDING FIELDS OF TABLE  IT_EKKO.
    ENDFORM.                    " DATA_RETRIEVAL
    *                      FORM SET_PF_STATUS                              *
    FORM SET_PF_STATUS USING RT_EXTAB   TYPE  SLIS_T_EXTAB.
      SET PF-STATUS 'STANDARD_FULLSCREEN1' EXCLUDING RT_EXTAB.
    ENDFORM.                    "set_pf_status
    *&      Form  user_command
    *       text
    *      -->R_UCOMM    text
    *      -->RS_SELFIELDtext
    FORM USER_COMMAND  USING R_UCOMM LIKE SY-UCOMM
                             RS_SELFIELD TYPE SLIS_SELFIELD.
    *then insert the following code in your USER_COMMAND routine...
    <b> 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.</b>*modify
      CASE R_UCOMM.
        WHEN '&IC1'.
          CHECK RS_SELFIELD-TABINDEX > 0.
          IF RS_SELFIELD-VALUE EQ '6000000001'.
            CALL TRANSACTION 'ZTEST'.
          ENDIF.
        WHEN 'REFRESH'.
          READ TABLE IT_EKKO INDEX  RS_SELFIELD-TABINDEX.
          IF SY-SUBRC = 0.
            READ TABLE IT_BACKUP INDEX RS_SELFIELD-TABINDEX.
            IF SY-SUBRC = 0.
              IF IT_EKKO <> IT_BACKUP.
    *  then do your check
              ENDIF.
            ENDIF.
          ENDIF.
          PERFORM DATA_RETRIEVAL.
          RS_SELFIELD-REFRESH = 'X'.
      ENDCASE.
    ENDFORM.                    "user_command
    Regards
    vijay

  • Reg: ALV list Display

    Hi Experts,
                    My requirement is i need a button along with the tool bar of ALV list display . when i check the button it should display the Selection criteria values which user entered as a pop up .
    Is there any default tool which displays user selection values  for ALV list display  ?
    Regards,
    Vikram.S

    > Is there any default tool which displays user selection values  for ALV list display  ?
    No such program.
    But you have to write a code for it. Activate Button using the pf-status. then Handle that button in User command , and show a popup with the selection values.
    Function used to get the selection details is
    RS_REFRESH_FROM_SELECTOPTIONS
    get the data and show it using a Popup. May be a ALV popup select function will help you.

  • Display of 2 ALV List

    Hi,
      I am trying to display 2 ALV List at a time...Can anyone please tellme what is wrong in the following code..Its not displaying any output after the selection-screen.
    Should I pass anything else in addition..Or can anyone tell me what exactly I am missing out...
    Thanks..
    REPORT  ZNNR_ALVOOPS_SCREEN.
    TABLES: MARA,SPFLI.
    *types: begin of ty_tab,
           matnr type mara-matnr,
           ernam type mara-ernam,
           ersda type mara-ersda,
          end of ty_tab.
    TYPES: BEGIN OF TYPT.
           INCLUDE STRUCTURE MARA.
    TYPES: END OF TYPT.
    TYPES: BEGIN OF TYPT1.
           INCLUDE STRUCTURE SPFLI.
    TYPES: END OF TYPT1.
    DATA IO1 TYPE SPFLI-CARRID VALUE 'AA'.
    DATA ITAB TYPE TABLE OF TYPT.
    DATA WA LIKE LINE OF ITAB.
    DATA ITAB1 TYPE TABLE OF TYPT1.
    DATA WA1 LIKE LINE OF ITAB1.
    *DATA OK_CODE TYPE SY-UCOMM.
    DATA: GRID TYPE REF TO CL_GUI_ALV_GRID,
         CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
    DATA: GRID1 TYPE REF TO CL_GUI_ALV_GRID,
         CONTA TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
    CREATE OBJECT CONT EXPORTING CONTAINER_NAME = 'CONT1' .
    CREATE OBJECT GRID EXPORTING I_PARENT = CONT .
    CREATE OBJECT CONTA EXPORTING CONTAINER_NAME = 'CONT2' .
    CREATE OBJECT GRID1 EXPORTING I_PARENT = CONTA .
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-100.
    SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
    SELECTION-SCREEN END OF BLOCK B1.
    SELECT * FROM MARA INTO TABLE
    ITAB
    WHERE MATNR IN S_MATNR .
    SELECT * FROM SPFLI INTO
          TABLE ITAB1 WHERE CARRID = IO1.
    CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
       I_BUFFER_ACTIVE               =
       I_BYPASSING_BUFFER            =
       I_CONSISTENCY_CHECK           =
       I_STRUCTURE_NAME              = 'MARA'
       IS_VARIANT                    =
       I_SAVE                        =
       I_DEFAULT                     = 'X'
       IS_LAYOUT                     =
       IS_PRINT                      =
       IT_SPECIAL_GROUPS             =
       IT_TOOLBAR_EXCLUDING          =
       IT_HYPERLINK                  =
       IT_ALV_GRAPHICS               =
       IT_EXCEPT_QINFO               =
       IR_SALV_ADAPTER               =
    CHANGING
       IT_OUTTAB                     = ITAB
       IT_FIELDCATALOG               =
       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.
    CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
       I_STRUCTURE_NAME = 'SPFLI'
    CHANGING
       IT_OUTTAB        = ITAB1.

    HI
    see this program same requirement
    you can understand very easily
    *& Report  ZAMIT_ALVOOPS
    REPORT  ZNNR_ALVOOPS_SCREEN.
    tables: mara,spfli.
    types: begin of ty_tab,
            matnr type mara-matnr,
            ernam type mara-ernam,
            ersda type mara-ersda,
           end of ty_tab.
    DATA ITAB1 TYPE TABLE OF SPFLI.
    DATA WA1 LIKE LINE OF ITAB1.
    DATA IO1 TYPE SPFLI-CARRID VALUE 'AA'.
    data itab type table of ty_tab.
    data wa like line of itab.
    DATA OK_CODE TYPE SY-UCOMM.
    DATA: GRID TYPE REF TO CL_GUI_ALV_GRID,
          CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
    DATA: GRID1 TYPE REF TO CL_GUI_ALV_GRID,
          CONTA TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
    CREATE OBJECT CONT EXPORTING CONTAINER_NAME = 'CONT1' .
    CREATE OBJECT GRID EXPORTING I_PARENT = CONT .
    CREATE OBJECT CONTA EXPORTING CONTAINER_NAME = 'CONT2' .
    CREATE OBJECT GRID1 EXPORTING I_PARENT = CONTA .
    selection-screen begin of block b1 with frame title text-100.
    select-options: s_matnr for mara-matnr.
    selection-screen end of block b1.
    select matnr ernam ersda from mara into corresponding fields of table itab up to 15 rows
    where matnr in s_matnr .
    call selection-screen 100.
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
    if ok_code = 'PB1'.
    leave to screen 0.
    else.
    leave to screen 100.
    endif.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
    SET PF-STATUS 'xxxxxxxx'.
    SET TITLEBAR 'xxx'.
    SELECT * FROM SPFLI INTO
      CORRESPONDING FIELDS OF TABLE ITAB1 WHERE CARRID = IO1.
    CALL METHOD grid->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
       I_BUFFER_ACTIVE               =
       I_BYPASSING_BUFFER            =
       I_CONSISTENCY_CHECK           =
        I_STRUCTURE_NAME              = 'MARA'
       IS_VARIANT                    =
       I_SAVE                        =
       I_DEFAULT                     = 'X'
       IS_LAYOUT                     =
       IS_PRINT                      =
       IT_SPECIAL_GROUPS             =
       IT_TOOLBAR_EXCLUDING          =
       IT_HYPERLINK                  =
       IT_ALV_GRAPHICS               =
       IT_EXCEPT_QINFO               =
       IR_SALV_ADAPTER               =
      CHANGING
        IT_OUTTAB                     = itab.
       IT_FIELDCATALOG               =
       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.
       CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME = 'SPFLI'
        CHANGING
          IT_OUTTAB        = ITAB1.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    <b>Reward if usefull</b>

  • Example of lights in ALV LIST

    Can you please provide me with an example to use Traffic lights in ALV list display?
    Thanks,
    Amit

    Hi,
    Description : Pick Status Report                                    
    This is an ALV report using the heirarchical ALV list display. The  
    report selects all deliveries that fulfil the selection criteria    
    and displays a summary of all items in that delivery with reference 
    to certain statuses: overall status, goods issue status, transfer   
    order status, load to pallet status, pallet count status, loaded to 
    van status, van manifest printed status and end of day manifest     
    printed status. These statuses have been defined by the business.   
    There is extra functionality required to trigger printing of the van
    and end of day manifests from this report, and to set the loading   
    end status of a shipment if the last handling unit of a particular  
    shipment has been loaded onto a van for which the van manifest has  
    been triggered.                                                     
    REPORT  zwmr_pick_status_report NO STANDARD PAGE HEADING
                                    MESSAGE-ID zw.
    Type Pools                                                          
    TYPE-POOLS: icon, slis.
    Tables                                                              
    TABLES: tvst,
            likp,
            t30b,
            vekp,
    *{   INSERT         UKMK900355                                        4
            zhu_to_link,                                        "AS03
    *}   INSERT
            zpallettr,
            vttk,                                               "MB01
            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
         zdep_point  LIKE zpallettr-zdep_point,   "Departur Point "Jvdm01
         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
         tknum       LIKE vttk-tknum,             " Shipment No  "ANV 11523
         zeod_print  LIKE zvantr-zeod_print,      " eod manifest print
         zzpackclass LIKE vekp-zzpackclass,       " package class
         zzti        LIKE vekp-zzti,              " T.I. value
         vstel       LIKE likp-vstel,             "Shipping point RM050906
         anzpk       TYPE znopack,            "No of packages in dlv MB01+
      END OF ty_data.
    TYPES:BEGIN OF x_likp ,
          vbeln LIKE likp-vbeln,
          vstel LIKE likp-vstel,                                "RM050906
          lgtor LIKE likp-lgtor,
          zzroute2lgtor LIKE likp-zzroute2lgtor,                "MB01
          route LIKE likp-route,
          wadat LIKE likp-wadat,
          zz2route LIKE likp-zz2route,                          "MB01+
          zzexproute LIKE likp-zzexproute,                      "MB01+
          zzroute2 LIKE likp-zzroute2,                          "MB01+
          anzpk    LIKE likp-anzpk,
          END OF x_likp.
    TYPES: BEGIN OF x_vbuk,
           vbeln TYPE vbuk-vbeln,
           wbstk TYPE vbuk-wbstk,             " Goods movement status
           kostk TYPE vbuk-kostk,             " Picking status
           END OF x_vbuk.
    TYPES: BEGIN OF x_lips,
          vbeln TYPE lips-vbeln,             " delivery
          posnr TYPE lips-posnr,             " item
          pstyv TYPE lips-pstyv,
          matnr TYPE lips-matnr,
          charg TYPE lips-charg,
          END OF x_lips.
    TYPES: BEGIN OF x_vbup,
           vbeln TYPE vbup-vbeln,             " delivery
           posnr TYPE vbup-posnr,             " item
           lvsta TYPE vbup-lvsta,             " warehouse status
           END OF x_vbup.
    TYPES: BEGIN OF x_vepo,
           venum TYPE vepo-venum,             "Internal Handling Unit
    Number
           vepos TYPE vepo-vepos,             "Handling Unit Item
           vbeln TYPE vepo-vbeln,             " delivery
           posnr TYPE vepo-posnr,             " item
           exidv TYPE vekp-exidv,
           END OF x_vepo.
    TYPES: BEGIN OF x_vepo1,
           venum TYPE vekp-venum,             "Internal Handling Unit
    Number
           exidv TYPE vekp-exidv,
           END OF x_vepo1.
    Start of changes by ANV SR#11523
    TYPES: BEGIN OF x_vttp,
             tknum TYPE tknum,                  " Shipment No
             tpnum TYPE tpnum,                  " Item No
             vbeln TYPE vbup-vbeln,             " delivery
             laufk LIKE vttk-laufk,             " leg indicator MB01+
           END OF x_vttp.
    End of changes by ANV SR#11523
    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,
          it_likp TYPE x_likp OCCURS 0 WITH HEADER LINE,         "SUM
          it_vbuk TYPE x_vbuk OCCURS 0 WITH HEADER LINE,         "SUM
          it_lips TYPE x_lips OCCURS 0 WITH HEADER LINE,         "SUM
          it_vbup TYPE x_vbup OCCURS 0 WITH HEADER LINE,         "SUM
          it_vepo TYPE x_vepo OCCURS 0 WITH HEADER LINE,         "SUM
          it_vepo2 TYPE x_vepo OCCURS 0 WITH HEADER LINE,        "SUM
    *{   INSERT         UKMK900355                                        3
          t_vepo_low TYPE x_vepo OCCURS 0 WITH HEADER LINE,     " AS01
    *}   INSERT
          it_vepo1 TYPE x_vepo1 OCCURS 0 WITH HEADER LINE,       "SUM
          it_vttp TYPE x_vttp OCCURS 0 WITH HEADER LINE, "ANV SR#11523
    t_disp_head TYPE STANDARD TABLE OF zpickhead.
    DATA wa_item_tab TYPE zpickdisp OCCURS 0 WITH HEADER LINE.
    "ANV SR#11113
    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,
          w_vepo     TYPE x_vepo1,
          w_vbup     TYPE x_vbup,
          w_vttp     TYPE x_vttp,    " ANV SR#11523
          w_lips     TYPE x_lips,
          w_vbuk     TYPE x_vbuk,
          w_likp     TYPE x_likp,                               "MB01-+
          w_tplst    LIKE vttk-tplst.                           "MB01+
    DATA: s_variant  LIKE disvariant,                           "MB01+
          def_variant LIKE disvariant.
    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            "MB01-+
      s_lfdat FOR likp-lfdat.            " Delivery date
    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.
    SELECT-OPTIONS:
      s_deppnt FOR zpallettr-zdep_point,                        "Jvdm01
      s_tplst  FOR vttk-tplst.                                  "MB01
    SELECTION-SCREEN END OF BLOCK b.
    MB01 - START - Display variant
    SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-019.
    PARAMETERS: p_vari LIKE disvariant-variant.
    SELECTION-SCREEN END OF BLOCK c.
    MB01 - END
    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.
    MB01 - START - display variant
    F4-Help for variant
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
      PERFORM f4_for_variant.
    MB01 - END
    At Selection Screen                                                 
    AT SELECTION-SCREEN.
      PERFORM validate_selections.
    Initialization                                                      
    INITIALIZATION.
    MB01 - START INSERT
    1.  Transportation planning point
    Import transportation planning point from user parameters and
    populate
    select option.
      GET PARAMETER ID 'TDP' FIELD w_tplst.
      MOVE: 'I'      TO s_tplst-sign,
             'EQ'     TO s_tplst-option,
             w_tplst TO s_tplst-low.
      APPEND s_tplst.
    2.  Display variant
      CLEAR s_variant.
      s_variant-report = sy-repid.
    Get default variant
    s_def_variante = s_variant.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
           EXPORTING
                i_save     = 'A'
           CHANGING
                cs_variant = s_variant
           EXCEPTIONS
                not_found  = 2.
      IF sy-subrc = 0.
        p_vari = s_variant-variant.
      ENDIF.
    MB01 - END INSERT
    Start of selection                                                  
    START-OF-SELECTION.
    clear all data tables
      CLEAR: t_likp,
            it_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,
              it_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
      OR NOT s_deppnt IS INITIAL.                               "Jvdm01
      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
                i_save                   = 'X'                  "MB01+
                is_variant               = s_variant
                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_o01.
      INCLUDE zwmr_pick_status_reporto01 .
    INCLUDE zwmr_pick_i01.
      INCLUDE zwmr_pick_status_reporti01 .
    INCLUDE zwmr_pick_f01.
      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
    Start SU01 optmization changes
    SELECT vbeln vstel lgtor route wadat                      "RM050906
      SELECT vbeln vstel lgtor route wadat
             zzroute2lgtor zz2route zzexproute zzroute2 anzpk      "MB01-+
               FROM likp INTO CORRESPONDING FIELDS OF TABLE it_likp"MB01-+
                         WHERE vbeln IN s_vbeln
                         AND   vstel IN p_vstel
                         AND   lfart IN s_lfart
                         AND   wadat IN s_wadat
                         AND   lfdat IN s_lfdat                    "MB01+
                         AND
                 ( lgtor IN s_lgtor OR zzroute2lgtor IN s_lgtor ) ."MB01+
      IF sy-subrc NE 0.
      no data found
        MESSAGE i007.
        EXIT.
      ENDIF.
    IF NOT t_likp[] IS INITIAL.                             "SUM
      IF NOT it_likp[] IS INITIAL.
        SORT it_likp BY vbeln.                                  "SUM
      select sales document headers from VBUK
        SELECT vbeln wbstk kostk
                    FROM vbuk INTO TABLE it_vbuk
                     FOR ALL ENTRIES IN it_likp                "SUM
                     WHERE vbeln EQ it_likp-vbeln.             "SUM
        SORT it_vbuk BY vbeln.
      select all relevant delivery items from LIPS
        SELECT vbeln posnr pstyv matnr charg
                    FROM lips INTO TABLE it_lips
                      FOR ALL ENTRIES IN it_likp
                      WHERE vbeln EQ it_likp-vbeln
                      AND   pckpf NE 'B'           "cannot be packed  "AS05
                    AND   pstyv NE 'ZPAC'                           "AS05
                    AND   pstyv NE 'ZGDP'                    "TR02+ "AS05
                      AND   lfimg GT 0.                         "TR01+
      ENDIF.
      IF NOT it_lips[] IS INITIAL.
      select all sales document line items from VBUP
        SORT it_lips BY vbeln posnr.                      "SUM
        SELECT vbeln posnr lvsta
                    FROM vbup INTO TABLE it_vbup
                      FOR ALL ENTRIES IN it_lips
                      WHERE vbeln EQ it_lips-vbeln
                      AND   posnr = it_lips-posnr.
        SORT it_vbup BY vbeln 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 vepoVENUM vepoVEPOS vepovbeln vepoposnr
                     FROM vepo as vepo
                     INNER JOIN vekp as vekp ON vepovenum = vekpvenum
                     APPENDING corresponding fields of table it_vepo
                     FOR ALL ENTRIES IN it_lips
                     WHERE vepo~vbeln = it_lips-vbeln
                     AND   vepo~posnr = it_lips-posnr
                     AND   vepo~matnr = it_lips-matnr
                     AND   vepo~charg = it_lips-charg
                     AND   vekp~exidv IN s_exidv.
        SELECT venum vepos vbeln posnr
                      FROM vepo INTO TABLE it_vepo2
                      FOR ALL ENTRIES IN it_lips
                      WHERE vbeln = it_lips-vbeln
                      AND   posnr = it_lips-posnr
                      AND   matnr = it_lips-matnr
                      AND   charg = it_lips-charg.
        SORT it_vepo2 BY venum vepos.
    *{   INSERT         UKMK900355                                        1
      Ice-multis: replace lower-level HUs with highest level       " AS01
        PERFORM replace_highest_hu.                             " AS01
    *}   INSERT
    Start of changes by ANV SR#11523
    MB01 - extract shipment header as well to populate leg indicator
    Therefore, join vttp with vttk
    Limit as well by transportation planning point
        SELECT vttptknum vttptpnum vttpvbeln vttklaufk
                      FROM vttp INNER JOIN vttk
                      ON vttptknum = vttktknum
                      INTO  TABLE it_vttp
                      FOR ALL ENTRIES IN it_lips
                      WHERE vttp~vbeln = it_lips-vbeln
                      AND   vttk~tplst IN s_tplst.
    MB01 - END
    End of changes by ANV SR#11523
        IF NOT it_vepo2[] IS INITIAL.
          SELECT venum exidv
                        FROM vekp INTO TABLE it_vepo1
                        FOR ALL ENTRIES IN it_vepo2
                        WHERE venum = it_vepo2-venum
                        AND   exidv IN s_exidv.
        ENDIF.
        SORT it_vepo1 BY venum.
        CLEAR: w_vepo, it_vepo.
        LOOP AT it_vepo1.
          READ TABLE it_vepo2 WITH KEY venum = it_vepo1-venum.
          IF sy-subrc = 0.
            it_vepo2-exidv = it_vepo1-exidv.
            MODIFY it_vepo2 TRANSPORTING exidv
               WHERE venum = it_vepo1-venum .
          ENDIF.
        ENDLOOP.
        DELETE it_vepo2 WHERE exidv IS initial.
        it_vepo[] = it_vepo2[].
    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.
          SORT t_vantr BY zvan_id zvan_no vstel zpallet_no.  "SUM
          SELECT * FROM zpallettr INTO TABLE t_pallettr
                                  FOR ALL ENTRIES IN t_vantr
                                  WHERE zpallet_no EQ t_vantr-zpallet_no
                                    AND zdep_point IN s_deppnt. "Jvdm01
                                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 zdep_point IN s_deppnt.   "Jvdm01
                              and   vstel      eq p_vstel."TR01-
      ENDIF.
      IF NOT t_pallettr[] IS INITIAL.
      from the pallet nos. we can select the handling units
        SORT t_pallettr BY zpallet_id zpallet_no vstel exidv.   "SUM
        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.
      SORT t_vekp BY venum.                                    "SUM
      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.
    MB01- START
       SELECT vbeln lgtor route wadat
                    FROM likp INTO TABLE it_likp
                        WHERE vbeln IN r_del
                        AND   wadat IN s_wadat
                        AND   lfart IN s_lfart.
        SELECT vbeln vstel lgtor route wadat
               zzroute2lgtor zz2route zzexproute zzroute2 anzpk "MB01-+
                 FROM likp INTO CORRESPONDING FIELDS OF TABLE it_likp
                           WHERE vbeln IN r_del
                           AND   lfart IN s_lfart
                           AND   wadat IN s_wadat               "MB01-+
                           AND   lfdat IN s_lfdat.              "MB01+
    MB01- END
      ENDIF.
      IF NOT it_likp[] IS INITIAL.
        SORT it_likp BY vbeln .                                   "SUM
      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 vbeln wbstk kostk
                  FROM vbuk INTO TABLE it_vbuk
                     FOR ALL ENTRIES IN it_likp
                     WHERE vbeln EQ it_likp-vbeln.
        SORT it_vbuk BY vbeln.                                   "SUM
      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+
        SELECT vbeln posnr pstyv matnr charg
                          FROM lips INTO TABLE it_lips
                          FOR ALL ENTRIES IN it_likp
                          WHERE vbeln EQ it_likp-vbeln
                          AND   pckpf NE 'B'       "cannot be packed  "AS05
                        AND   pstyv NE 'ZPAC'                       "AS05
                        AND   pstyv NE 'ZGDP'                "TR02+ "AS05
                          AND   lfimg GT 0.                     "TR01+
      ENDIF.
      IF NOT it_lips[] IS INITIAL.
        SORT it_lips BY vbeln posnr.                              "SUM
      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.
    Start of changes by ANV SR#11523
    MB01 - START
    join vttp with vttk to obtain leg indicator
       SELECT tknum tpnum vbeln
                     FROM vttp INTO TABLE it_vttp
                     FOR ALL ENTRIES IN it_lips
                     WHERE vbeln = it_lips-vbeln.
        SELECT vttptknum vttptpnum vttpvbeln vttklaufk
                      FROM vttp INNER JOIN vttk
                      ON vttptknum = vttktknum
                      INTO  TABLE it_vttp
                      FOR ALL ENTRIES IN it_lips
                      WHERE vttp~vbeln = it_lips-vbeln
                      AND   vttk~tplst IN s_tplst.
    MB01 - END
    End of changes by ANV SR#11523
        SELECT vbeln posnr lvsta
                    FROM vbup INTO TABLE it_vbup
                    FOR ALL ENTRIES IN it_lips
                      WHERE vbeln EQ it_lips-vbeln
                      AND   posnr = it_lips-posnr.
        SORT t_vbup BY vbeln posnr.                                "SUM
      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.
        SELECT venum vepos vbeln posnr
        FROM vepo APPENDING CORRESPONDING FIELDS OF TABLE it_vepo
                         FOR ALL ENTRIES IN it_lips
                         WHERE vbeln = it_lips-vbeln
                         AND   posnr = it_lips-posnr
                         AND   matnr = it_lips-matnr
                         AND   charg = it_lips-charg.
    *{   INSERT         UKMK900355                                        1
        it_vepo2[] = it_vepo[].                                 " DS01
        PERFORM replace_highest_hu.                             " DS01
        it_vepo[] = it_vepo2[].                                 " DS01
    *}   INSERT
      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 it_vepo.
        CLEAR t_data_tab.
      delivery lines.
        CLEAR w_lips.
        READ TABLE it_lips WITH KEY vbeln = it_vepo-vbeln
                                   posnr = it_vepo-posnr
                                   INTO w_lips BINARY SEARCH.     "SUM
        MOVE-CORRESPONDING w_lips TO t_data_tab.
      sales document line items
        CLEAR w_vbup.
        READ TABLE it_vbup WITH KEY vbeln = it_vepo-vbeln
                                   posnr = it_vepo-posnr
                                   INTO w_vbup BINARY SEARCH.     "SUM
      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 it_vbuk WITH KEY vbeln = it_vepo-vbeln
                               INTO w_vbuk   BINARY SEARCH.       "SUM
        MOVE-CORRESPONDING w_vbuk TO t_data_tab.
      delivery header
        CLEAR w_likp.
        READ TABLE it_likp WITH KEY vbeln = it_vepo-vbeln
                               INTO w_likp BINARY SEARCH.         "SUM
        MOVE-CORRESPONDING w_likp TO t_data_tab.
    MB01 - START
      DATA: w_routetype TYPE i. "0=non-global,1=1st route,2=2nd
    route,3=both
    At this point move DOOR2 if it falls within the global route scenario
    and the door2 is satisfies the selection criteria for door
    1.   Does delivery fall within global route scenario
        CLEAR w_routetype.
        IF  w_likp-zz2route = 'Y' .
    1.a. First route - does door1 satisfy the selection criteria
          IF w_likp-lgtor IN s_lgtor.
            w_routetype = 1.
            MOVE w_likp-zzexproute TO t_data_tab-route.
    1.b. Second route - does door2 satisfy the selection criteria
          ELSEIF w_likp-zzroute2lgtor IN s_lgtor.
      here we need to move door2 to lgtor
            w_routetype = 2.
            MOVE w_likp-zzroute2lgtor TO t_data_tab-lgtor.
            MOVE w_likp-zzroute2 TO t_data_tab-route.
          ENDIF.
    If both routes satsify the criteria, append for 2nd leg  ***REVISIT!
          IF w_likp-lgtor IN s_lgtor AND w_likp-zzroute2lgtor IN s_lgtor.
            w_routetype = 3.
          ENDIF.
        ENDIF.
    MB01 - END
    Start of changes by ANV SR#11523
    MB01 - If the delivery falls within the global route scenario... need
    to select either preliminary shipment leg OR subsequent leg
    when laufk= 1 (prelim) and linked to route1, if laufk = 2 (subseq) &
    linked to route2
      Shipment Number
        SORT it_vttp BY vbeln laufk.
        CLEAR w_vttp.
        CASE w_routetype.
          WHEN 0.
            READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
                                   INTO w_vttp BINARY SEARCH.
          WHEN 1.
            READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
                                        laufk  = '1'
                                   INTO w_vttp BINARY SEARCH.
          WHEN 2.
            READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
                                        laufk  = '3'
                                   INTO w_vttp BINARY SEARCH.
          WHEN 3.  "REVISIT
        ENDCASE.
        MOVE w_vttp-tknum TO t_data_tab-tknum.
    MB01 - END
    End of changes by ANV SR#11523
      select handling unit info using vepo entry
        CLEAR w_vekp.
        IF t_vekp[] IS INITIAL.
          SELECT SINGLE * FROM vekp INTO w_vekp
                                    WHERE venum = it_vepo-venum.
        ELSE.
          READ TABLE t_vekp WITH KEY venum = it_vepo-venum
                                     INTO w_vekp  BINARY SEARCH.     "SUM
          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.
    *{   INSERT         UKMK900355                                        2
      WM status for HU                                              "AS03
        SELECT SINGLE * FROM zhu_to_link WHERE lgnum EQ w_vekp-lgnum"AS03
                                         AND   exidv EQ w_vekp-exidv."AS03
        IF  sy-subrc EQ 0.                                      "AS03
          IF zhu_to_link-zpick_comp EQ space.                   "AS03
            t_data_tab-lvsta = 'B'.                             "AS03

  • How to create space between Header text of Hierarchical ALV List.

    hi,
    I am display data using Hierarchical ALV List.
    In Perform of field catalog, I am writing this code:
    PERFORM fill_catalogue USING :
         'CHKBX'      'T_HEADER' 20  'Sess Decision Box'(t19) 'X',
          'SESS_NO'    'T_HEADER' 11  'Session'(t20)           ' ' ,
          'SESS_STAT'  'T_HEADER'  4  'Status'(t39)            ' ',
          'HOLD_STAT'  'T_HEADER'  4  'HOLD'(t52)              ' ',
          'ICON'       'T_HEADER'  9  'Tracking'(t21)          ' ' ,
          'CREATE_DT'  'T_HEADER' 10  'Archiving Date'(t22)    ' '  ,
          'AGING'      'T_HEADER' 50  'Aging'(t23)             ' ',
          'OBJECT'     'T_HEADER' 12  'Archive Obj'(t24)       ' ',
          'HOLD_INFO'  'T_HEADER' 100 'Hold Reason'            ' ' ,
          'YFY_DATA'   'T_HEADER' 4  'Data Fiscal Year'(t48)  ' ' ,
          'COMMENTS'   'T_HEADER' 50  'Session Notes'(t26)     ' ' ,
          'DATATYPE'   'T_HEADER' 50  'Archive Object Description'(t25) ' ',
          'APPR_STAT'    'T_ITEM' 16  'Approval Status'(t29)   ' ',
          'DESTR_DT_REV' 'T_ITEM' 10  'New Date'(t30)          ' ',
          'REJCT_REASON' 'T_ITEM' 60  'Rejection Reason'(t31)  ' '  .
    At output of this program , there are two rows in HEADER details.
    I want text 'Session notes' of 2nd row  under 'Archiving Date' of 1st row.
    For this i have to create space between 'Data Fiscal Year' & 'Session notes' text.
    How i can do this.
    Regards,
    Mamta

    Hi,
    You can use TOP-OF-PAGE event and pass this event to Hierarchical ALV FM.
    Thanks,
    Kartavya Kaushik.

  • Query on retrieving data back to the program from ALV List

    Hi Group,
    I have a requirement to send the details of the selected data as an ALV list to the user.
    Then, the user selects either 1 or 2 or all or none back to the program from the ALV.
    Thing is that,
    1) when the user selects ( Icon ) to choose all the fields, they were not getting checked and in turn, I was not been able to read the records as checked in the program ( this is for All selection records ).
    2) And also, I am not able to get the records checked ( incase of the user selects all fields ).
    In short, I should be able to read the records which were checked and process only that records.
    please let me know if you have any queries on the same.
    Thank you very much in advance for the help.
    Regards,
    Vishnu.

    hi,
    try like this
    TABLES:     ekko.
    TYPE-POOLS: slis.                           
    TYPES: BEGIN OF t_ekko,
      sel,                         "stores which row user has selected
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          fieldcatalog1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          gd_tab_group TYPE slis_t_sp_group_alv,
          gd_layout    TYPE slis_layout_alv,
          gd_repid     LIKE sy-repid.
    DATA : BEGIN OF det_tab OCCURS 0,
            ebeln LIKE ekpo-ebeln,
           END OF det_tab.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
    fieldcatalog-col_pos     = 1.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-do_sum      = 'X'.        "Display column total
      fieldcatalog-datatype     = 'CURR'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR  fieldcatalog.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    FORM build_layout.
      gd_layout-box_fieldname     = 'SEL'.
      "set field name to store row selection
      gd_layout-edit              = 'X'. "makes whole ALV table editable
      gd_layout-zebra             = 'X'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    FORM display_alv_report.
      gd_repid = sy-repid.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = gd_repid
          i_callback_user_command  = 'USER_COMMAND'
          i_callback_pf_status_set = 'SET_STAT'
          is_layout                = gd_layout
          it_fieldcat              = fieldcatalog[]
          i_save                   = 'X'
        TABLES
          t_outtab                 = it_ekko
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
      SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
       UP TO 10 ROWS
        FROM ekpo
        INTO CORRESPONDING FIELDS OF TABLE it_ekko.
    ENDFORM.                    " DATA_RETRIEVAL
          FORM USER_COMMAND                                          *
          --> R_UCOMM                                                *
          --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN '&IC1'.
          IF rs_selfield-fieldname = 'EBELN'.
            READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
            SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
            CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
          ENDIF.
        WHEN 'DET'.  "user presses SAVE
          CLEAR det_tab.
          REFRESH det_tab.
          LOOP AT it_ekko INTO wa_ekko WHERE sel = 'X'.
            MOVE-CORRESPONDING wa_ekko TO det_tab.
            APPEND det_tab.
          ENDLOOP.
          PERFORM build_cat.
          PERFORM dis_data.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  set_stat
          text
         -->RT_EXTAB   text
    FORM set_stat USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZSTAT' EXCLUDING rt_extab.
    ENDFORM.                    "set_stat
    *&      Form  build_cat
          text
    FORM build_cat.
      CLEAR fieldcatalog1.
      REFRESH fieldcatalog1.
      fieldcatalog1-fieldname = 'EBELN'.
      fieldcatalog1-tabname = 'DET_TAB'.
      fieldcatalog1-seltext_m = 'Order No.'.
      fieldcatalog1-outputlen = 10.
      APPEND fieldcatalog1 TO fieldcatalog1.
      CLEAR fieldcatalog1.
    ENDFORM.                    "build_cat
    *&      Form  dis_data
          text
    FORM dis_data.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = 'ZTEST_DS'
          it_fieldcat        = fieldcatalog1[]
          i_save             = 'X'
        TABLES
          t_outtab           = det_tab.
    ENDFORM.                    "dis_data
    here i have created one button(DET) in toolbar along with all the buttons of ALV..
    when i click on this i am getting detail list....
    reward if usefull....

Maybe you are looking for

  • Moving RAW files from one drive to another without loosing all your work in Lightroom

    I am posting this for two reasons, the first is I have been trying to figure out how to get my raw files off my hard drive & onto my external hardrive for ages, as my laptop is filling up & slowing down with the huge files my new camera captures. I h

  • Website blocking - is this possible?

    I have some experience programming in Ruby, but almost no knowledge about OS X technologies. I came up with this simple app idea, and was wondering if it's possible and how complicated it would be. Check out this PDF, where I explain the idea (its 1

  • In Oracle E Business Suite, Advanced Collections - Collections Form..

    Hi All, Can anyone please let me know how we can get mapping for the columns that are referenced on advanced collections - collection form. We cannot get the same from help as many of the columns are mapping columns. Mainly I struck in the notes and

  • Routine in Infopackage Data selection Tab

    HI, I am having one InfoObject (marital staus) in InfoPackage Data selection Tab. Now I want to write a ABAP routine for that infoObject in Infopackage to select only those records of  marital status = ‘SINGLE’.     I am new to ABAP . please let me k

  • Apple TV 2-Registration?

    Just got an Apple TV 2 over the weekend-setup was painless, and it works great so far (except Movie Trailers take forever to load-not sure what is up with that; the Apple Trailers site is much, much faster). One question-was there a registration page