Check in REUSE_ALV_GRID_DISPLAY

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
   I_CALLBACK_PROGRAM       = SY-REPID
    IS_LAYOUT                = L_LAYOUT
   I_CALLBACK_PF_STATUS_SET = 'STATUS'
    I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
    IT_FIELDCAT              = IT_FIELDCAT
    it_events                = it_events
    I_SCREEN_START_COLUMN    = 10
    I_SCREEN_START_LINE      = 1
    I_SCREEN_END_COLUMN      = 80
    I_SCREEN_END_LINE        = 40
  TABLES
    T_OUTTAB                 = ITAB
  EXCEPTIONS
    PROGRAM_ERROR            = 1
    OTHERS                   = 2.
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
i use this fm
how i can see the rows that i select
where are they?

Sure I can give you an example.....  create screen 100 and add a custom contol to it named ALV_CONTAINER.
REPORT ZRICH_0006.
TABLES: MARA.
TYPE-POOLS: SLIS, ICON.
* Internal Tables
DATA: BEGIN OF IALV OCCURS 0,
      MATNR TYPE MARA-MATNR,
      MAKTX TYPE MAKT-MAKTX,
      END OF IALV .
* Miscellanous Variables
DATA: INDEX_ROWS TYPE LVC_T_ROW,
      INDEX LIKE LINE OF INDEX_ROWS.
DATA: ALV_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,
      ROW_TABLE TYPE LVC_T_ROW WITH HEADER LINE,
      OK_CODE LIKE SY-UCOMM,
      LAYOUT  TYPE LVC_S_LAYO,
      FIELDCAT TYPE LVC_T_FCAT.
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
START-OF-SELECTION.
  PERFORM GET_DATA.
  IF IALV[] IS INITIAL.
    MESSAGE S429(MO).
    EXIT.
  ENDIF.
  CALL SCREEN 100.
*      Module  status_0100  OUTPUT
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '0100'.
  SET TITLEBAR '0100'.
  DATA: VARIANT TYPE  DISVARIANT.
  DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
  VARIANT-REPORT = SY-REPID.
  VARIANT-USERNAME = SY-UNAME.
* Create Controls
  CREATE OBJECT ALV_CONTAINER
         EXPORTING CONTAINER_NAME = 'ALV_CONTAINER'.
  CREATE OBJECT ALV_GRID
         EXPORTING  I_PARENT =  ALV_CONTAINER.
*  Populate Field Catalog
  PERFORM GET_FIELDCATALOG.
* Optionally restrict generic functions to 'change only'.
* (The user shall not be able to add new lines).
  PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
* Set selection mode to "D"  --  Multiple Lines
  LAYOUT-SEL_MODE = 'D'.
  CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
           IS_LAYOUT              = LAYOUT
           IT_TOOLBAR_EXCLUDING   = LT_EXCLUDE
           IS_VARIANT             = VARIANT
           I_SAVE                 = 'A'
           I_STRUCTURE_NAME       = 'IALV'
      CHANGING
           IT_OUTTAB       = IALV[]
           IT_FIELDCATALOG = FIELDCAT[].
ENDMODULE.
*      Module  USER_COMMAND_0100  INPUT
MODULE USER_COMMAND_0100 INPUT.
  CASE SY-UCOMM.
    WHEN 'BACK' OR 'CANC'.
      PERFORM FREE_CONTAINERS.
      IF SY-SUBRC = 0.
        SET SCREEN 0.
        LEAVE SCREEN.
      ELSE.
        LEAVE PROGRAM.
      ENDIF.
    WHEN 'EXIT'.
      PERFORM FREE_CONTAINERS.
      LEAVE PROGRAM.
    WHEN 'CONTINUE'.
* Retrieve selected rows from ALV grid
      PERFORM GET_SELECTED_ROWS.
* Do something with those selected rows here
      LOOP AT INDEX_ROWS INTO INDEX.
        READ TABLE IALV INDEX INDEX-INDEX.
        IF SY-SUBRC = 0.
* Insert code here
        ENDIF.
      ENDLOOP.
      PERFORM FREE_CONTAINERS.
      LEAVE TO SCREEN 100.
  ENDCASE.
ENDMODULE.
*       FORM GET_DATA.
FORM GET_DATA.
  SELECT MARA~MATNR MAKT~MAKTX
             INTO CORRESPONDING FIELDS OF TABLE IALV
                 FROM MARA
                      INNER JOIN MAKT
                         ON MARA~MATNR = MAKT~MATNR
                                WHERE MARA~MATNR IN S_MATNR
                                  AND MAKT~SPRAS = SY-LANGU.
  SORT IALV ASCENDING BY MATNR.
ENDFORM.
*      Form  GET_SELECTED_ROWS
FORM GET_SELECTED_ROWS.
* Get Selected rows from alv grid
  CLEAR INDEX_ROWS.  REFRESH INDEX_ROWS.
  CALL METHOD ALV_GRID->GET_SELECTED_ROWS
           IMPORTING
                 ET_INDEX_ROWS = INDEX_ROWS.
ENDFORM.
*      Form  FREE_CONTAINERS
FORM FREE_CONTAINERS.
  IF NOT ALV_CONTAINER IS INITIAL.
    CALL METHOD ALV_CONTAINER->FREE.
    CLEAR: ALV_CONTAINER.
    FREE : ALV_CONTAINER.
  ENDIF.
ENDFORM.
*      Form  Get_Fieldcatalog - Set Up Columns/Headers
FORM GET_FIELDCATALOG.
  DATA: LS_FCAT TYPE LVC_S_FCAT.
  DATA: COLUMNNO(3) TYPE N VALUE '0'.
  REFRESH: FIELDCAT.
  CLEAR: LS_FCAT.
  LS_FCAT-REPTEXT    = 'Material Number'.
  LS_FCAT-COLTEXT    = 'Material Number'.
  LS_FCAT-FIELDNAME  = 'MATNR'.
  LS_FCAT-REF_TABLE  = 'IALV'.
  LS_FCAT-OUTPUTLEN  = '18'.
  LS_FCAT-COL_POS    = 1.
  APPEND LS_FCAT TO FIELDCAT.
  CLEAR: LS_FCAT.
  LS_FCAT-REPTEXT    = 'Material Description'.
  LS_FCAT-COLTEXT    = 'Material Description'.
  LS_FCAT-FIELDNAME  = 'MAKTX'.
  LS_FCAT-REF_TABLE  = 'IALV'.
  LS_FCAT-OUTPUTLEN  = '40'.
  LS_FCAT-COL_POS    = 2.
  APPEND LS_FCAT TO FIELDCAT.
ENDFORM.
*      Form  EXCLUDE_TB_FUNCTIONS
FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
* Only allow to change data not to create new entries (exclude
* generic functions).
  DATA LS_EXCLUDE TYPE UI_FUNC.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
  APPEND LS_EXCLUDE TO PT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
  APPEND LS_EXCLUDE TO PT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
  APPEND LS_EXCLUDE TO PT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
  APPEND LS_EXCLUDE TO PT_EXCLUDE.
  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
  APPEND LS_EXCLUDE TO PT_EXCLUDE.
ENDFORM.
Regards,
Rich Heilman

Similar Messages

  • Authorization Check for Reuse_ALV_Grid_display Variant Saving

    Hi,
    I am facing an issue with Reuse_ALV_Grid_Display where i provided the layout saving parameter as 'A' ie. for activation of the user-specific and global saving of the layout. But this is taken undue advantage of by the clients as they save their specific layout as the global layout.
    Hence can anybody help me in highlighting any authorization object which can prevent the users from saving their layouts as global layouts.
    URGENT...
    Thanks
    Edited by: Alvaro Tejada Galindo on Apr 8, 2008 6:14 PM

    For clarification, refer the code used:
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = sy-repid
          is_layout          = l_layout
          it_fieldcat        = t_fieldcat[]
          i_default          = 'X'
          i_save             = 'A'
        TABLES
          t_outtab           = t_vbrkvbfa1.
    Here bcoz. of       i_save             = 'A',
    the users can save their variants as user-specific or global. So, i need the auth. object for restricting the users from saving the variant as global.
    So, plz help...SOS

  • EXCEPTION in REUSE_ALV_GRID_DISPLAY

    Hi All,
    This is my first post, and I would greatly appreciate any help.
    My question is, exactly what kind of error does the exception in REUSE_ALV_GRID_DISPLAY pick up on? what is the purpose of checking the subrc in REUSE_ALV_GRID_DISPLAY.
    I am currently testing a program that uses the function module REUSE_ALV_GRID_DISPLAY.
    The program checks the subrc after calling REUSE_ALV_GRID_DISPLAY, and when subrc <> 0 an error message XXX should be displayed in the selection screen.
    However when i try to test the above in debugg mode, the ALV grid is displayed (since there are no errors in the FORMS in REUSE_ALV_GRID_DISPLAY) before the subrc is checked.
    After the ALV grid is displayed i go back and enter subrc = 1. Therefore, I dont know if the subrc is checked for REUSE_ALV_GRID_DISPLAY or not....
    Again, I would be greateful for any information.
    Thank you.

    Hi Gaurav
    Thank you very much for your quick response and the link.
    As stated the in the link,  there is an exception PROGRAM_ERROR in REUSE_ALV_GRID_DISPLAY but I could not find where PROGRAM_ERROR is raised in the function module.
    In the link provided it states that "If the exception is not handled by the calling program" - does this mean that if there is an exception in any of the FORMS or FMs within  REUSE_ALV_GRID_DISPLAY, it will be handled as PROGRAM_ERROR??
    Exceptions
    PROGRAM_ERROR
    Meaning
    Type of exception generation
    If the exception is not handled by the calling program, the following applies:
    (X)An error message is sent.
    ( )A termination message is sent.
    ( )A runtime error is triggered.

  • Downloading ALV to EXCEL - in some fields the last character is missing ...

    Hi,
    I am experiencing this kind of problem when downloading ALV report into Excel :-
    "You are downloading an ALV result to an EXCEL file. In some fields the last character is missing."
    For example, if MATNR is 0000234567 in display but after downloading to excel it becomes only 23456.
    I found another related forum thread : Pronlem while downloading ALV grid to excel
    I tried the suggested method to apply OSS note 1075315. However, the note cannot be implemented in the system. I am working in a ECC6 environment (SAP version 700, 701).
    Kindly please help me if you came across the similar kind of issue. Thanks much.

    Hi gkGoh8     ,
    The link thread that you just gave already provided the answer, in your field catalog you need to activate field lzero.
    1. Check FM : REUSE_ALV_GRID_DISPLAY
    2. Import Parameter tab :IT_FIELDCAT
    3. Double click SLIS_T_FIELDCAT_ALV
    4. On type group SLIS, check line 93
    Regards,
    JQC

  • ALV CHECK CHANGED DATA WITH REUSE_ALV_GRID_DISPLAY

    HELLO  EVERY-ONE.
        I have a question that how to check changed data in ALV. I know we can use CHECK_CHANGE_DATA Method in OO, and how to check it in REUSE_ALV_GRID_DISPLAY <b>without double click</b> ?

    Try this code , it will give the solution that has been solved with funtion module
    REPORT zalvprg1.
    TYPE-POOLS: slis.
    TABLES: ekko.
    DATA : it_list_top_of_page TYPE slis_t_listheader,
           it_list_end_of_page TYPE slis_t_listheader,
           it_events           TYPE slis_t_event,
           wa_line             TYPE slis_listheader,
           wa_event            TYPE slis_alv_event.
    DATA :  it_fieldcat  TYPE slis_t_fieldcat_alv ,
            wa_fieldcat  TYPE slis_fieldcat_alv.
    TYPES :BEGIN OF ty_ekko,
           ebeln TYPE ebeln,
           bukrs TYPE bukrs,
           ernam TYPE ernam,
           bsart TYPE esart,
           waers TYPE waers,
           END   OF ty_ekko.
    TYPES :BEGIN OF ty_ekpo,
           ebeln TYPE ebeln,
           ebelp TYPE ebelp,
           matnr TYPE matnr,
           werks TYPE werks,
           menge TYPE bstmg,
           END   OF ty_ekpo.
    TYPES :BEGIN OF ty_marc,
           matnr TYPE matnr,
           werks TYPE werks_d,
           tranz TYPE tranz,
           herbl TYPE herbl,
           END   OF ty_marc.
    TYPES : BEGIN OF ty_show,
            old  TYPE i,
            new(10) TYPE c,
            END OF ty_show.
    TYPES : BEGIN OF ty_final,
           ebeln TYPE ebeln,
           bukrs TYPE bukrs,
           ernam TYPE ernam,
           bsart TYPE esart,
           waers TYPE waers,
           matnr TYPE matnr,
           werks TYPE werks,
           menge TYPE bstmg,
           END   OF ty_final.
    DATA: it_ekko  TYPE TABLE OF ty_ekko,
          it_ekpo  TYPE TABLE OF ty_ekpo,
          it_marc TYPE TABLE OF ty_marc,
          it_final TYPE TABLE OF ty_final,
          it_show  TYPE TABLE OF ty_show WITH HEADER LINE,
          wa_marc  TYPE ty_marc,
          wa_ekko  TYPE ty_ekko,
          wa_ekpo  TYPE ty_ekpo,
          wa_show  TYPE ty_show,
          wa_final TYPE ty_final.
    SELECT-OPTIONS: so_ebeln FOR ekko-ebeln.
    START-OF-SELECTION.
      PERFORM data_fetch.
      PERFORM alv_display.
    END-OF-SELECTION.
    *&      Form  data_fetch
          text
    -->  p1        text
    <--  p2        text
    FORM data_fetch .
      SELECT ebeln
             bukrs
             ernam
             bsart
             waers
             FROM ekko
             INTO TABLE it_ekko
             WHERE ebeln IN so_ebeln.
      SELECT ebeln
             ebelp
             matnr
             werks
             menge
             FROM ekpo
             INTO TABLE it_ekpo
             FOR ALL ENTRIES IN it_ekko
             WHERE ebeln = it_ekko-ebeln.
      LOOP AT it_ekko INTO wa_ekko.
        wa_final-ebeln = wa_ekko-ebeln.
        wa_final-bukrs = wa_ekko-bukrs.
        wa_final-ernam = wa_ekko-ernam.
        wa_final-bsart = wa_ekko-bsart.
        wa_final-waers = wa_ekko-waers.
        READ TABLE it_ekpo INTO wa_ekpo WITH KEY ebeln = wa_ekko-ebeln.
        IF sy-subrc EQ 0.
          wa_final-matnr = wa_ekpo-matnr.
          wa_final-werks = wa_ekpo-werks.
          wa_final-menge = wa_ekpo-menge.
        ENDIF.
        APPEND wa_final TO it_final.
      ENDLOOP.
    ENDFORM.                    " data_fetch
    *&      Form  alv_display
          text
    -->  p1        text
    <--  p2        text
    FORM alv_display .
      REFRESH it_fieldcat.
      PERFORM field_cat USING 'EBELN' 'PURCHASE ORDER NO'.
      PERFORM field_cat USING 'BUKRS' 'COMPANY CODE'.
      PERFORM field_cat USING 'ERNAM' 'USERNAME CREATED'.
      PERFORM field_cat USING 'BSART' 'DOCUMENT TYPE'.
      PERFORM field_cat USING 'WAERS' 'CURRENCY'.
      PERFORM field_cat USING 'MATNR' 'MATERIAL NO'.
      PERFORM field_cat USING 'WERKS' 'PLANT '.
      PERFORM field_cat USING 'MENGE' 'QUANTITY'.
      CLEAR it_list_top_of_page.
      PERFORM f009_list_header .
      CLEAR it_list_end_of_page.
      PERFORM f009_list_footer.
      PERFORM f012_grid_function_module TABLES it_final USING it_fieldcat.
    ENDFORM.                    " alv_display
    **&      Form  f009_list_header
          text
    FORM f009_list_header.
    **..... Header detail for ALV
      wa_event-name = text-001. "TOP_OF_PAGE
      wa_event-form = text-002. "F010_TOP_OF_PAGE
      APPEND wa_event TO it_events.
      CLEAR wa_event.
      CLEAR wa_line.
      wa_line-typ  = text-003.   "S
      wa_line-key  = text-004.   "9 - BLOCKER REPORT
      wa_line-info = text-005.
      APPEND wa_line TO it_list_top_of_page.
      CLEAR wa_line.
    ENDFORM.                    "f009_list_header
    *&      Form  f010_top_of_page
          text
    FORM f010_top_of_page.
    **......The form 'F010_TOP_OF_PAGE' cannot be called directly
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = it_list_top_of_page.
    ENDFORM.                    "f010_top_of_page
    *&      Form  field_cat
          text
         -->W_FIELD    text
         -->W_COL      text
    FORM field_cat  USING    w_field
                             w_col.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = w_field.
      wa_fieldcat-seltext_l = w_col.
      wa_fieldcat-outputlen = 15.
      APPEND wa_fieldcat TO it_fieldcat.
    ENDFORM.                    " field_cat
    *&      Form  f012_grid_function_module
          text
    FORM f012_grid_function_module TABLES w_tab USING  w_fcat TYPE any.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = sy-repid
          it_fieldcat              = w_fcat
          i_callback_pf_status_set = 'F010_PF_STATUS'
          i_callback_user_command  = 'USER_COMMAND'
          it_events                = it_events[]
        TABLES
          t_outtab                 = w_tab
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      IF sy-subrc IS NOT INITIAL.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    "f011_grid_function_module
    *&      Form  f009_list_footer
          text
    FORM f009_list_footer.
    **..... Footer  detail for ALV
      CLEAR wa_event.
      CLEAR wa_line.
      wa_event-name = text-007. "BOTTOM_OF_PAGE
      wa_event-form = text-008. "F010_BOTTOM_OF_PAGE
      APPEND wa_event TO it_events.
      wa_line-typ  = text-009.   "S
      wa_line-key  = text-010.   "9 - BLOCKER REPORT
      wa_line-info = text-011.
      APPEND wa_line TO it_list_end_of_page.
      CLEAR wa_line.
    ENDFORM.                    "f009_list_footer
    *&      Form  f010_top_of_page
          text
    FORM f010_bottom_of_page.
    **......The form 'F010_TOP_OF_PAGE' cannot be called directly
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = it_list_end_of_page.
    ENDFORM.                    "f010_end_of_page
          FORM user_command                                             *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                               rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN '&IC1'.
          IF rs_selfield-fieldname = 'MATNR'.
            SET PARAMETER ID 'MAT' FIELD rs_selfield-value.
            SET PARAMETER ID 'WRK' FIELD '1000'.     "<- Your plant here
            CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
           call transaction 'MM02' and skip first screen.
          ENDIF.
          IF rs_selfield-fieldname = 'WERKS'.
            PERFORM disp_marc USING rs_selfield.
          ENDIF.
        WHEN '&CHANGE'.
          IF rs_selfield-fieldname = 'MENGE'.
            PERFORM disp_alter USING rs_selfield.
          ENDIF.
      ENDCASE.
    ENDFORM.                    "callback_ucomm
    *&      Form  f010_pf_status
          text
         -->RT_EXTAB   text
    FORM f010_pf_status USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZS_ALV'.
    ENDFORM.                    "F010_PF_STATUS
    *ENDFORM.                    "dialog
    *&      Form  f002_FIELDCAT
          text
         -->P_0512   text
         -->P_0513   text
         -->P_0514   text
    FORM f002_fieldcat  USING   w_field
                                w_col
                                w_change   .
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = w_field.
      wa_fieldcat-seltext_l = w_col.
      wa_fieldcat-outputlen = 15.
      wa_fieldcat-edit      = w_change.
      wa_fieldcat-input     = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
    ENDFORM.                    " f002_FIELDCAT
    *&      Form  disp_marc
          text
         -->P_W_SELFIELD  text
    FORM disp_marc  USING    rs_selfield TYPE slis_selfield.
      SELECT   matnr
               werks
               tranz
             FROM  marc INTO TABLE it_marc
             WHERE werks = rs_selfield-value.
      REFRESH it_fieldcat.
      PERFORM field_cat USING 'MATNR' 'MATERIAL NUMBER'.
      PERFORM field_cat USING 'WERKS' 'PLANT '.
      PERFORM field_cat USING 'TRANZ' 'INTER-OPERATION TIME'.
    PERFORM field_cat USING 'HERBL' 'STATE OF MANUFACTURE'.
      PERFORM f012_grid_function_module TABLES it_marc USING it_fieldcat .
      IF sy-subrc NE 0.
        MESSAGE 'MATERIAL DETAILS' TYPE 'S'.
      ENDIF.
    ENDFORM.                    " disp_marc
    *&      Form  disp_alter
          text
         -->P_RS_SELFIELD  text
    FORM disp_alter  USING    rs_selfield TYPE slis_selfield.
      DATA:l_var(10) TYPE c.
      REFRESH : it_fieldcat,
                it_show.
      it_show-old = rs_selfield-value.
      CLEAR it_show-new.
      APPEND it_show TO it_show.
      PERFORM field_cat  USING 'OLD'  'OLD QTY (MENGE)'.
      PERFORM f002_fieldcat USING 'NEW' 'NEW QTY (MENGE)' 'X'.
      CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
        EXPORTING
          i_title            = 'CHANGES IN MATERIAL'
          i_tabname          = 'IT_SHOW'
          it_fieldcat        = it_fieldcat
          i_callback_program = sy-repid
        TABLES
          t_outtab           = it_show
        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.
      l_var = it_show-new.
      READ TABLE it_final INDEX rs_selfield-tabindex INTO wa_final.
      wa_final-menge = l_var.
      MODIFY it_final INDEX rs_selfield-tabindex  FROM wa_final TRANSPORTING menge .
      PERFORM alv_display.
    ENDFORM.                    " disp_alter
    Reward points for the same
    Regards,
    Shanmuga perumal.L

  • REUSE_ALV_GRID_DISPLAY - replacing the standard selection column with check

    I am attempting to replace the standard selection column (what you press to highlight an entire line) with a column
    of checkboxes using the REUSE_ALV_GRID_DISPLAY.  Which would mean that when you press on '(de)select all' that the
    checkboxes would behave accordingly.
    There is a 'box' field in the internal table and the layout is referencing it.  I have verified in debug that the
    '(de)select all' functionality is updating that field in the internal table.  When I add the 'box' field to the field
    catalog it will display on the screen but it does not show as ticked when '(de)select all' is pressed.  Again in debug
    the itab is being updated.
    I have been googling for a solution and found others with similar problems, but no useful solutions were provided.
    It is not an option to go with an ALV OO solution per the environment.  Thank you in advance.

    Hi Glen,
    If you are checking condition like whether it is select all or deselect all you can modify the internal for that fields as below
    if select all.
    itab-check = 'X'.
    modify itab where check = 'X' transporting check.
    endif.
    This will update all your itab-check coloumn with check indicator.
    This may be useful for you.
    Thanks,
    Manjunath M

  • Authority-Checks in Function REUSE_ALV_GRID_DISPLAY

    Hi fellow developpers,
    I'm trying to figure out why a user with just basic
    display-authorizations has the option "Excel-Download"
    available in the ALV-Grid display variant of SE16
    (data browser) while on the other hand for such a user
    all the download-options seem to be automatically shut
    off in my programs on basis of the function module
    REUSE_ALV_GRID_DISPLAY. Does anybody know which authority
    object(s) need to be granted to make those functions
    available again?
    Thanks in advance for your appreciated help
    Andreas Flügel

    Hi,
    I found just one authority check.
      authority-check object 'S_GUI'
      id 'ACTVT' field '61'. "download
      if sy-subrc <> 0.
    Do you receive any message ?
    Svetlin

  • Check data changed in REUSE_ALV_GRID_DISPLAY

    I want to enable the edit mode to a column in ALV GRID, there isn't the problem, but the user wants to check the modified data when he leave the celd and show a popup window if is necessary. In ALV OO isn't a problem but in this case I don't know how to do it.
    Thanks in advance.
    Regards.
    Lisandro.

    Hi,
    You can try this..
    In the USER_COMMAND subroutine..
    data: REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
    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.
    Now your internal table will have the updated values.
    Thanks
    Naren

  • What is diff b/w reuse_alv_grid_display and reuse_alv_grid_display_lvc

    Hi everbody,
    what is diff b/w reuse_alv_grid_display and reuse_alv_grid_display_lvc.
    can u give a dteils on it .
    Regards,
    Priya

    ALV
    1. Please give me general info on ALV.
    http://www.sapfans.com/forums/viewtopic.php?t=58286
    http://www.sapfans.com/forums/viewtopic.php?t=76490
    http://www.sapfans.com/forums/viewtopic.php?t=20591
    http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.
    2. How do I program double click in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=11601
    http://www.sapfans.com/forums/viewtopic.php?t=23010
    3. How do I add subtotals (I have problem to add them)...
    http://www.sapfans.com/forums/viewtopic.php?t=20386
    http://www.sapfans.com/forums/viewtopic.php?t=85191
    http://www.sapfans.com/forums/viewtopic.php?t=88401
    http://www.sapfans.com/forums/viewtopic.php?t=17335
    4. How to add list heading like top-of-page in ABAP lists?
    http://www.sapfans.com/forums/viewtopic.php?t=58775
    http://www.sapfans.com/forums/viewtopic.php?t=60550
    http://www.sapfans.com/forums/viewtopic.php?t=16629
    5. How to print page number / total number of pages X/XX in ALV? http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)
    6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.
    http://www.sapfans.com/forums/viewtopic.php?t=64320
    http://www.sapfans.com/forums/viewtopic.php?t=44477
    7. How can I set the cell color in ALV? http://www.sapfans.com/forums/viewtopic.php?t=52107
    8. How do I print a logo/graphics in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=81149
    http://www.sapfans.com/forums/viewtopic.php?t=35498
    http://www.sapfans.com/forums/viewtopic.php?t=5013
    9. How do I create and use input-enabled fields in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=84933
    http://www.sapfans.com/forums/viewtopic.php?t=69878
    10. How can I use ALV for reports that are going to be run in background?
    http://www.sapfans.com/forums/viewtopic.php?t=83243
    http://www.sapfans.com/forums/viewtopic.php?t=19224
    11. How can I display an icon in ALV? (Common requirement is traffic light icon).
    http://www.sapfans.com/forums/viewtopic.php?t=79424
    http://www.sapfans.com/forums/viewtopic.php?t=24512
    12. How can I display a checkbox in ALV? http://www.sapfans.com/forums/viewtopic.php?t=88376
    http://www.sapfans.com/forums/viewtopic.php?t=40968
    http://www.sapfans.com/forums/viewtopic.php?t=6919
    Check this for basic concepts of OOPS
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/abap%20objects/abap%20code%20sample%20to%20learn%20basic%20concept%20of%20object-oriented%20programming.doc
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20to%20display%20data%20in%20alv%20grid%20using%20object%20oriented%20programming.doc
    Tabstrip
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20for%20tab%20strip%20in%20alv.pdf
    Editable ALV
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20to%20edit%20alv%20grid.doc
    Tree
    http://www.sapdevelopment.co.uk/reporting/alv/alvtree/alvtree_usrint.htm
    General Tutorial for OOPS
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/an%20easy%20reference%20for%20alv%20grid%20control.pdf
    http://www.sapdevelopment.co.uk/reporting/alvhome.htm
    http://www.sap-img.com/abap/what-is-alv-programming.htm
    http://www.sap-img.com/abap-function.htm
    http://www.geocities.com/mpioud/Abap_programs.html
    http://www.sapdevelopment.co.uk/reporting/alv/alvtree%5Calvtree_basic.htm
    http://esnips.com/doc/ad20dca9-6182-4903-8d8f-96a66dc8590c/ALV.pdf
    http://www.sap-img.com/abap-function.htm

  • Selection using check box in std ALV grid!

    Hi all,
    I have written a custom report to show the O/p in ALV grid.
    This is my code:
    TABLES :zpo_loi.
    TYPE-POOLS : slis.
    TYPE-POOLS: icon.
    TABLES : sscrfields.
    DATA : ls_composer TYPE ssfcompop,
               ls_control TYPE ssfctrlop.
    DATA : wa_return TYPE TABLE OF bapiret2  ,
            wa_address TYPE bapiaddr3.
    DATA : wa_crmd_orderadm_h TYPE zpo_loi,
           it_po TYPE TABLE OF crmd_orderadm_h,
           wa_po TYPE bbp_pds_header.
    DATA : it_tab TYPE TABLE OF zpo_loi.
    DATA :  it_data TYPE TABLE OF crmd_orderadm_h,
            wa_data TYPE bbp_pds_header,
            et_data TYPE bbps_sf_po_output.
    DATA : w_formname TYPE tdsfname ,
           w_sfname TYPE rs38l_fnam.
    DATA :it_po_no TYPE TABLE OF select_be_obj_id,
          wa_it_po_no  LIKE LINE OF it_po_no.
    DATA :r_itab TYPE ddshretval OCCURS 0.
    DATA : it_output LIKE TABLE OF zloi,
           wa_output TYPE zloi.
    DATA : w_answer TYPE c.
    DATA : g_repid LIKE sy-repid,
          g_title TYPE lvc_title,
          g_set_pf_stat TYPE slis_formname VALUE 'SET_PF_STATUS',
          g_user_command TYPE slis_formname VALUE 'USER_COMMAND',
          g_layout TYPE slis_layout_alv,
          g_print_alv TYPE slis_print_alv,
          g_variant LIKE disvariant,
          c_char_a(1) VALUE 'A',
          c_char_x(1) VALUE 'X',
          itab_alv_sort TYPE slis_t_sortinfo_alv,
          itab_alv_fcat TYPE slis_t_fieldcat_alv.
    *       Internal tables          Begin with IT_                       *
    DATA : it_fcat TYPE slis_t_fieldcat_alv,                           "---ALV
           it_disp TYPE TABLE OF zloi.
    *       Work Area for Internal tables      Begin with WA_             *
    DATA : wa_fcat TYPE slis_fieldcat_alv ,              "---ALV
           wa_layout           TYPE lvc_s_layo,               "---ALV
           wa_it_disp LIKE LINE OF it_disp.
    DATA : it_sf_po TYPE TABLE OF crmd_orderadm_h,
           wa_sf_po TYPE bbp_pds_header.
    *SELECTION-SCREEN:
    *  BEGIN OF SCREEN 500 AS WINDOW TITLE title,
    *  END OF SCREEN 500.
    *DATA : functxt TYPE smp_dyntxt.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS sel_po FOR zpo_loi-zobject_id.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
    PARAMETERS : pr_loi RADIOBUTTON GROUP grp1 USER-COMMAND ucom,
                 pr_fondo RADIOBUTTON GROUP grp1.
    SELECTION-SCREEN END OF BLOCK b2.
    *       At selection-screen output                                    *
    AT SELECTION-SCREEN OUTPUT.
      IF pr_fondo = 'X'.
        REFRESH sel_po.
        LOOP AT SCREEN.
          IF screen-name = text-003 OR screen-name = text-004.
            screen-input = '0'.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ELSEIF pr_loi = 'X'.
        LOOP AT SCREEN.
          IF screen-name = text-003 OR screen-name = text-004.
            screen-input = '1'.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ENDIF.
    *       At selection-screen on radiobutton                            *
    AT SELECTION-SCREEN ON RADIOBUTTON GROUP grp1.
      IF pr_fondo  = 'X'.
        REFRESH sel_po.
        LOOP AT SCREEN.
          IF screen-name = text-003 OR screen-name = text-004.
            screen-input = '0'.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ELSEIF pr_loi = 'X'.
        LOOP AT SCREEN.
          IF screen-name = text-003 OR screen-name = text-004.
            screen-input = '1'.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR sel_po-low.
      PERFORM populate_table.
      PERFORM f4_help.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR sel_po-high.
      PERFORM populate_table.
      PERFORM f4_help.
    *       At selection-screen                                           *
    AT SELECTION-SCREEN.
    *---CHECKING THE INPUT >>>
      IF sy-ucomm = 'ONLI'.
        PERFORM f002-check_input.
        PERFORM f001-check.
      ENDIF.
    *&      Form  POPULATE_TABLE
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM populate_table .
      SELECT zobject_id
               description
      FROM zpo_loi
      INTO CORRESPONDING FIELDS OF TABLE it_tab.
      SORT it_tab BY zobject_id ASCENDING.
    ENDFORM.                    " POPULATE_TABLE
    *&      Form  F4_HELP
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM f4_help .
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          ddic_structure = ' '
          retfield       = 'ZOBJECT_ID'
          dynpprog       = sy-repid
          dynpnr         = sy-dynnr
          dynprofield    = 'A'
          value_org      = 'S'
        TABLES
          value_tab      = it_tab
          return_tab     = r_itab.
    ENDFORM.                                                    " F4_HELP
    *&      Form  F001-CHECK
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM f001-check .
      IF pr_fondo = 'X'.
        PERFORM display_expiring_fondos.
      ELSEIF pr_loi = 'X'.
        PERFORM fetch_po_det.
        PERFORM build_fcat.
        PERFORM alv_display.
      ENDIF.
    ENDFORM.                    " F001-CHECK
    *&      Form  F002-CHECK_INPUT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM f002-check_input .
      IF pr_loi = 'X'.
        REFRESH it_po.
        IF sel_po-low IS NOT INITIAL.
          SELECT object_id
          FROM crmd_orderadm_h
          INTO CORRESPONDING FIELDS OF TABLE it_po
          WHERE object_type = 'BUS2201'
          AND object_id = sel_po-low.
          IF sy-subrc NE 0.
            IF sel_po-high IS NOT INITIAL.
              SELECT object_id
              FROM crmd_orderadm_h
              INTO CORRESPONDING FIELDS OF TABLE it_po
              WHERE object_type = 'BUS2201'
              AND  object_id = sel_po-high.
              IF sy-subrc NE 0.
                MESSAGE e009(zsrm).
              ENDIF.
            ENDIF.
            MESSAGE e007(zsrm).
          ENDIF.
        ELSE.
          MESSAGE e010(zsrm).
        ENDIF.
        IF sel_po-high IS NOT INITIAL.
          SELECT object_id
          FROM crmd_orderadm_h
          INTO CORRESPONDING FIELDS OF TABLE it_po
          WHERE object_type = 'BUS2201'
          AND  object_id = sel_po-high.
          IF sy-subrc NE 0.
            MESSAGE e008(zsrm).
          ENDIF.
        ENDIF.
      ENDIF.
    ENDFORM.                    " F002-CHECK_INPUT
    *&      Form  FETCH_PO_DET
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM fetch_po_det .
      REFRESH it_po.
      it_po_no[] = sel_po[].
      DATA : w_count TYPE i,
             w_lines TYPE c,
             wa_header TYPE bbp_pds_po_header_d.
      REFRESH : it_po,it_output.
      IF sel_po-high IS NOT INITIAL.
        SELECT object_id
               description
               posting_date
               created_by
        FROM crmd_orderadm_h
        INTO CORRESPONDING FIELDS OF TABLE it_po
        WHERE object_type = 'BUS2201'
        AND object_id BETWEEN sel_po-low AND sel_po-high.
      ELSE.
        SELECT object_id
               description
               posting_date
               created_by
        FROM crmd_orderadm_h
        INTO CORRESPONDING FIELDS OF TABLE it_po
        WHERE object_type = 'BUS2201'
        AND object_id = sel_po-low.
      ENDIF.
      w_lines = sy-dbcnt.
      w_count = 1.
      DO.
        IF w_count LE w_lines.
          READ TABLE it_po INTO wa_po INDEX w_count.
          MOVE wa_po-object_id TO wa_output-zzpono.
          MOVE wa_po-description TO wa_output-zzpodesc.
          MOVE wa_po-posting_date TO wa_output-zzpodate.
          MOVE wa_po-created_by TO wa_output-zzpocreator.
          CALL FUNCTION 'BBP_PD_PO_GETDETAIL'
            EXPORTING
              i_object_id = wa_output-zzpono
            IMPORTING
              e_header    = wa_header.
          CALL FUNCTION 'BAPI_USER_GET_DETAIL'
            EXPORTING
              username = wa_output-zzpocreator
            IMPORTING
              address  = wa_address
            TABLES
              return   = wa_return.
          CLEAR wa_output-zzpocreator.
          CONCATENATE wa_address-firstname '   '  wa_address-lastname INTO wa_output-zzpocreator .
          MOVE wa_header-total_value TO wa_output-zzpoval.
          MOVE wa_header-currency TO wa_output-zzpocur.
          APPEND wa_output TO it_output.
          w_count = w_count + 1.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
    ENDFORM.                    " FETCH_PO_DET
    *&      Form  BUILD_FCAT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM build_fcat .
      g_repid = sy-repid.
      g_title = 'Print LOI details'.
      g_print_alv-no_print_listinfos = 'X'.
      g_variant-report = sy-repid.
      g_variant-variant = sy-title.
      CLEAR g_layout.
      g_layout-f2code = ' '.
      wa_layout-zebra       = 'X'.
      g_layout-flexible_key = 'X'.
      g_layout-colwidth_optimize = 'X'.
      g_layout-detail_initial_lines = 'X'.
      g_layout-box_fieldname = 'ZZCHECK'.
      REFRESH it_fcat.
    *Po no
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPONO' .
      wa_fcat-tabname = 'IT_DISP'.
      wa_fcat-seltext_m  = 'Purchase Order'.
    *wa_fcat-seltext_s = 'Purchase Order.
      wa_fcat-icon = 'X'.
      wa_fcat-col_pos = '2'.
      wa_fcat-outputlen = 10.
      APPEND wa_fcat TO it_fcat.
    *Description
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPODESC' .
      wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'Description'.
      wa_fcat-seltext_m = 'Description'.
    *wa_fcat-seltext_s = 'Description'.
      wa_fcat-col_pos = '3'.
      wa_fcat-outputlen = 10.
      APPEND wa_fcat TO it_fcat.
    *Posting date
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPODATE' .
      wa_fcat-tabname = 'IT_DISP'.
      wa_fcat-seltext_l = 'Posting Date'.
      wa_fcat-seltext_m = 'Posting Date'.
    *wa_fcat-seltext_s = 'Posting Date'.
      wa_fcat-col_pos = '4'.
      wa_fcat-outputlen = 8.
      APPEND wa_fcat TO it_fcat.
    *value
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPOVAL' .
      wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'PO value'.
      wa_fcat-seltext_m = 'PO value'.
    *wa_fcat-seltext_s = 'PO value'.
      wa_fcat-col_pos = '5'.
      wa_fcat-outputlen = 15.
      wa_fcat-no_zero = 'X'.
      APPEND wa_fcat TO it_fcat.
    *Currency
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPOCUR' .
      wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'PO Currency'.
      wa_fcat-seltext_m = 'PO Currency'.
    *wa_fcat-seltext_s = 'PO Currency'.
      wa_fcat-col_pos = '6'.
      wa_fcat-outputlen = 5.
      APPEND wa_fcat TO it_fcat.
    *Creator
      CLEAR wa_fcat.
      wa_fcat-fieldname = 'ZZPOCREATOR' .
      wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'Buyer'.
      wa_fcat-seltext_m = 'Buyer'.
    *wa_fcat-seltext_s = 'Buyer'.
      wa_fcat-col_pos = '7'.
      wa_fcat-outputlen = 12.
      APPEND wa_fcat TO it_fcat.
    ENDFORM.                    " BUILD_FCAT
    *&      Form  ALV_DISPLAY
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM alv_display .
      SORT it_output BY zzpono.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = g_repid
          i_callback_pf_status_set = g_set_pf_stat
          i_callback_user_command  = g_user_command
          i_grid_title             = g_title
          is_layout                = g_layout
          it_fieldcat              = it_fcat[]
          is_variant               = g_variant
          is_print                 = g_print_alv
        TABLES
          t_outtab                 = it_output[]
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      IF sy-subrc <> 0.
      ENDIF.
    ENDFORM.                    " ALV_DISPLAY
    *&      Form  user_command
    *       text
    *      -->R_UCOMM      text
    *      -->RS_SELFIELD  text
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.                             "#EC CALLED
      DATA: gd_repid LIKE sy-repid, "Exists
      ref_grid TYPE REF TO cl_gui_alv_grid.
      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.
      rs_selfield-refresh = 'X'.
      CASE r_ucomm.
        WHEN 'PRINTLOI'.
          PERFORM call_sf.
        WHEN 'BACK'.
          CALL SELECTION-SCREEN 1000.
        WHEN 'CANCEL'.
          CALL SELECTION-SCREEN 1000.
        WHEN 'EXIT'.
          CALL SELECTION-SCREEN 1000.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  set_pf_status
    *       text
    *      -->RT_EXTAB   text
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZALV' EXCLUDING rt_extab.
      SET TITLEBAR 'ZALV'.
    ENDFORM.                    "set_pf_status
    *&      Form  CALL_SF
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM call_sf .
      REFRESH it_sf_po.
      LOOP AT it_output INTO wa_output WHERE zzcheck = 'X'.
        wa_sf_po-object_id = wa_output-zzpono.
        APPEND wa_sf_po TO it_sf_po.
      ENDLOOP.
      w_formname = 'ZSR_EBP_DOCU_LETTEROFINTENT1'.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname           = w_formname
        IMPORTING
          fm_name            = w_sfname
        EXCEPTIONS
          no_form            = 1
          no_function_module = 2
          OTHERS             = 3.
      IF sy-subrc <> 0.
      ENDIF.
      ls_composer-tdnewid = 'X'.
      ls_control-no_dialog = 'X'.
      LOOP AT it_sf_po INTO wa_sf_po.
        CALL FUNCTION w_sfname
          EXPORTING
            control_parameters = ls_control
            output_options     = ls_composer
            wa_object          = wa_sf_po
          EXCEPTIONS
            formatting_error   = 1
            internal_error     = 2
            send_error         = 3
            user_canceled      = 4
            OTHERS             = 5.
        IF sy-subrc <> 0.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " CALL_SF
    *&      Form  DISPLAY_EXPIRING_FONDOS
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM display_expiring_fondos .
      SET PF-STATUS 'ZLOI'.
      SET TITLEBAR 'ZLOI'.
      TYPES : BEGIN OF ty_output1,
                guid TYPE bbp_guid,
                object_id TYPE crmt_object_id_db,
                description TYPE crmt_process_description,
                posting_date TYPE crmt_posting_date,
                zzfondo_dat TYPE zfondo_dat,
                created_by TYPE crmt_created_by,
               END OF ty_output1.
      DATA : it_output1 TYPE TABLE OF ty_output1,
             wa_output1 TYPE ty_output1,
              w_lines,
              w_count,
              it_fondo TYPE TABLE OF zsr_fondo,
              it_temp_fondo TYPE TABLE OF zsr_fondo,
              wa_temp_fondo TYPE zsr_fondo,
              wa_fondo TYPE zsr_fondo,
              w_diff TYPE p,
              wa_header1  TYPE bbp_pds_po_header_d.
      CONSTANTS : c_otype(8) VALUE 'BUS2201'.
      REFRESH : it_output1,it_temp_fondo,it_fondo.
      SELECT b~zzfondo_dat
             a~guid
             a~object_id
             a~description
             a~posting_date
             a~created_by
      INTO CORRESPONDING FIELDS OF TABLE it_output1
      FROM bbp_pdhsc AS b
      LEFT OUTER JOIN crmd_orderadm_h AS a ON b~guid = a~guid
      AND a~object_type = c_otype.
      LOOP AT it_output1 INTO wa_output1.
        CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
          EXPORTING
            date1            = sy-datum
            date2            = wa_output1-zzfondo_dat
          IMPORTING
            datediff         = w_diff
          EXCEPTIONS
            invalid_datetime = 1
            OTHERS           = 2.
        IF sy-subrc <> 0.
        ENDIF.
        IF w_diff <= '7'.
          wa_temp_fondo-zzpono = wa_output1-object_id.
          APPEND wa_temp_fondo TO it_temp_fondo.
        ENDIF.
      ENDLOOP.
    *select the final entries for PO whose FONDO is expiring
      DESCRIBE TABLE it_temp_fondo LINES w_lines.
      w_count = 1.
      DO.
        IF w_count LE w_lines.
          READ TABLE it_temp_fondo INTO wa_temp_fondo INDEX w_count.
          IF sy-subrc = 0.
            CALL FUNCTION 'BBP_PD_PO_GETDETAIL'
              EXPORTING
                i_object_id = wa_temp_fondo-zzpono
              IMPORTING
                e_header    = wa_header1.
            wa_fondo-zzpono = wa_temp_fondo-zzpono.
            wa_fondo-zzpodesc = wa_header1-description.
            wa_fondo-zzpodate =  wa_header1-posting_date.
            wa_fondo-zzexpdate = wa_header1-zzfondo_dat.
            wa_fondo-zzpoval = wa_header1-total_value.
            wa_fondo-zzpocur = wa_header1-currency.
            wa_fondo-zzpocreator = wa_header1-created_by.
            CLEAR : wa_address.
            REFRESH wa_return.
            CALL FUNCTION 'BAPI_USER_GET_DETAIL'
              EXPORTING
                username = wa_header1-created_by
              IMPORTING
                address  = wa_address
              TABLES
                return   = wa_return.
            CLEAR wa_fondo-zzpocreator.
            CONCATENATE wa_address-firstname '   '  wa_address-lastname INTO wa_fondo-zzpocreator .
            w_count = w_count + 1.
            APPEND wa_fondo TO it_fondo.
          ENDIF.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_structure_name = 'ZSR_FONDO'
          i_grid_title     = 'EXPIRING FONDOS'
        TABLES
          t_outtab         = it_fondo[]
        EXCEPTIONS
          program_error    = 1
          OTHERS           = 2.
      IF sy-subrc <> 0.
      ENDIF.
    ENDFORM.                    " DISPLAY_EXPIRING_FONDOS
    Now in my ALV grid o/p i can see the check box but if i select one row and then try to select another the first one gets deselected.
    Can anybody tell me what is missing?

    Hi,
    Try like changing  this
    insted of
    g_layout-f2code = ' '.
    use this
    g_layout-f2code = 'DISP'. " Sets fcode for when double
    and
    g_layout-f2code = '&ETA'. " it will display POPUP screen
    Best Regards
    Ranga
    Edited by: Ranga Swamy on Nov 1, 2008 11:07 PM
    Edited by: Ranga Swamy on Nov 1, 2008 11:17 PM

  • Printing the header of a report  and checking the join statement...

    Hi All,
    This report of mne is working fine but there are things that i want to include: when i print this report i want it to display heading of which is in the html_top_of_page but it does not print it, i am not familiar with smart forms so i won't be able to use smart forms.If anyone can help me out i will really appreciated and will immediately reward points......please help me guys as the due date is very close...and please check the joins on the select statement, not sure whether i've joined the tables properly!
    REPORT  Z_ORDER_AUDIT_NEW.
    TYPE-POOLS: SLIS.
                   LIST OF TABLES
    Tables: vbak, likp, vbrk, kna1, vbrp, nast.
                         DEFINITION OF FIELDS                               *
    DATA: itb_fieldcat TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
          w_fieldcat TYPE slis_fieldcat_alv.
    DATA: w_cnt LIKE sy-tabix.
    DATA: lv_layout TYPE slis_layout_alv,
          lv_tab_group TYPE slis_t_sp_group_alv,
          lv_repid LIKE sy-repid,
          lv_events TYPE slis_t_event,
          lv_print  TYPE slis_print_alv,
          lv_user   TYPE slis_formname VALUE 'USER_COMMAND'.
             SELECTION SCREEN                                                 *
    SELECT-OPTIONS:
      s_lfdat FOR likp-lfdat,
      s_imwrk FOR likp-imwrk.
                 DEFINITION OF AN INTERNAL TABLE                              *
    DATA: Begin of i_ordertab occurs 0,
             audat  LIKE vbak-audat,
             vbeln  LIKE vbak-vbeln,
             lfdat  LIKE likp-lfdat,
             erdat  LIKE likp-erdat,
             vbeln1 LIKE likp-vbeln,
             vbeln2 LIKE vbrk-vbeln,
             erdat1 LIKE vbrk-erdat,
             kunrg  LIKE vbrk-kunrg,
             name1  LIKE kna1-name1,
             regio  LIKE vbrk-regio,
             inco1  LIKE vbrk-inco1,
             vrkme  LIKE vbrp-vrkme,
             ntgew  LIKE vbrp-ntgew,
             gewei  LIKE vbrp-gewei,
             volum  LIKE vbrp-volum,
             voleh  LIKE vbrp-voleh,
             netwr  LIKE vbrk-netwr,
           End of i_ordertab.
                   READ THE DATA                                               *
      SELECT vbakaudat vbakvbeln likplfdat likperdat likpvbeln vbrkvbeln
             vbrkerdat vbrkkunrg kna1name1 vbrkregio vbrkinco1 vbrpvrkme
             vbrpntgew vbrpgewei vbrpvolum vbrpvoleh vbrk~netwr
             FROM likp join kna1 on likpkunnr EQ kna1kunnr
                       join vbrk on kna1kunnr EQ vbrkkunrg
                       join vbrp on vbrkvbeln EQ vbrpvbeln
                       join vbak on kna1kunnr EQ vbakkunnr
             INTO i_ordertab
             WHERE likp~lfdat IN s_lfdat
             AND   likp~imwrk IN s_imwrk.
             APPEND i_ordertab.
      ENDSELECT.
                         PERFORM STATEMENTS                                   *
    PERFORM build_fieldcatalog.
    PERFORM build_layout.
    PERFORM build_event.
    PERFORM build_print.
    PERFORM display_alv_report.
    FORM build_fieldcatalog.
      w_cnt = 1.
      itb_fieldcat-fieldname = 'AUDAT'.
      itb_fieldcat-seltext_m = 'Document date'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      itb_fieldcat-key       = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VBELN'.
      itb_fieldcat-seltext_m = 'S/O number'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'LFDAT'.
      itb_fieldcat-seltext_m = 'Deliv. date'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'ERDAT'.
      itb_fieldcat-seltext_m = 'Del. Crt Date'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VBELN1'.
      itb_fieldcat-seltext_m = 'Delivery No.'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VBELN2'.
      itb_fieldcat-seltext_m = 'Invoice No.'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'ERDAT1'.
      itb_fieldcat-seltext_m = 'Invoice Date'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'KUNRG'.
      itb_fieldcat-seltext_m = 'Payer'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'NAME1'.
      itb_fieldcat-seltext_m = 'Payer-Description'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'REGIO'.
      itb_fieldcat-seltext_m = 'Region'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'INCO1'.
      itb_fieldcat-seltext_m = 'Incoterms'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VRKME'.
      itb_fieldcat-seltext_m = 'Billed Quantity'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'NTGEW'.
      itb_fieldcat-seltext_m = 'Net weight'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'GEWEI'.
      itb_fieldcat-seltext_m = 'Weight Unit'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VOLUM'.
      itb_fieldcat-seltext_m = 'Volume'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'VOLEH'.
      itb_fieldcat-seltext_m = 'VOLUME UNIT'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
      w_cnt = w_cnt + 1.
      itb_fieldcat-fieldname = 'NETWR'.
      itb_fieldcat-seltext_m = 'Net Value'.
      itb_fieldcat-col_pos   = w_cnt.
      itb_fieldcat-emphasize = 'X'.
      itb_fieldcat-ref_tabname  = 'VBRK' .
      itb_fieldcat-ref_fieldname = 'NETWR' .
      itb_fieldcat-do_sum = 'X' .
      APPEND itb_fieldcat TO itb_fieldcat.
      CLEAR itb_fieldcat.
    ENDFORM.
    FORM build_layout.
        lv_layout-no_input           = 'X'.
        lv_layout-colwidth_optimize  = 'X'.
        lv_layout-totals_text        = 'Totals'(201).
        lv_layout-detail_popup       = 'X'.
    ENDFORM.
    FORM build_event.
      DATA i_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
         EXPORTING
           i_list_type = 0
         IMPORTING
           et_events   = lv_events[].
       READ TABLE lv_events WITH KEY name = slis_ev_user_command
                            INTO i_event.
       if sy-subrc = 0.
         MOVE lv_user TO i_event-form.
         APPEND i_event TO lv_events.
       endif.
    ENDFORM.
    FORM build_print.
         lv_print-reserve_lines = '2'.
         lv_print-no_coverpage  = 'X'.
    ENDFORM.
    *&          FUNCTION ALV DISPLAY
    FORM display_alv_report.
    lv_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
       I_CALLBACK_PROGRAM             = lv_repid
       I_CALLBACK_USER_COMMAND        = slis_ev_user_command
       I_CALLBACK_HTML_TOP_OF_PAGE    = 'HTML_TOP_OF_PAGE' " see FORM
       I_CALLBACK_HTML_END_OF_LIST    = 'END_OF_LIST_HTML'   "see FORM
       IS_LAYOUT                      = lv_layout
       IT_FIELDCAT                    = itb_fieldcat[]
       IT_SPECIAL_GROUPS              = lv_tab_group
       I_SAVE                         = 'X'
       IT_EVENTS                      = lv_events
       IS_PRINT                       = lv_print
      TABLES
        t_outtab                      = i_ordertab
      EXCEPTIONS
        PROGRAM_ERROR                 = 1
        OTHERS                        = 2.
    IF sy-subrc <> 0.
    ENDIF.
    ENDFORM.
    *&      Form  html_top_of_page
    FORM html_top_of_page USING document TYPE REF TO cl_dd_document.
      DATA: text TYPE sdydo_text_element.
      CALL METHOD document->add_gap
        EXPORTING
          width = 100.
      text =  'Cadbury: Daily Audit of Orders'.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'HEADING'.
      CALL METHOD document->new_line.
      CALL METHOD document->new_line.
      CALL METHOD document->new_line.
      text = 'User Name : '.
      CALL METHOD document->add_text
        EXPORTING
          text         = text
          sap_emphasis = 'Strong'.
      CALL METHOD document->add_gap
        EXPORTING
          width = 6.
      text = sy-uname.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'Key'.
      CALL METHOD document->add_gap
        EXPORTING
          width = 50.
      text = 'Date : '.
      CALL METHOD document->add_text
        EXPORTING
          text         = text
          sap_emphasis = 'Strong'.
      CALL METHOD document->add_gap
        EXPORTING
          width = 6.
      text = sy-datum.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'Key'.
      CALL METHOD document->add_gap
        EXPORTING
          width = 50.
      text = 'Time : '.
      CALL METHOD document->add_text
        EXPORTING
          text         = text
          sap_emphasis = 'Strong'.
      CALL METHOD document->add_gap
        EXPORTING
          width = 6.
      text = sy-uzeit.
      CALL METHOD document->add_text
        EXPORTING
          text      = text
          sap_style = 'Key'.
    ENDFORM.
    FORM end_of_list_html USING end TYPE REF TO cl_dd_document.
    DATA: ls_text TYPE sdydo_text_element,
        l_grid TYPE REF TO cl_gui_alv_grid,
        f(14) TYPE c VALUE 'SET_ROW_HEIGHT',
        w_lines type i,
        w_lines1(9) type n.
    DESCRIBE TABLE i_ordertab LINES w_lines.
    w_lines1 = w_lines.
    concatenate: 'TOTAL NUMBER OF RECORDS SELECTED:  ' w_lines1 INTO ls_text
                                  SEPARATED BY space.
    adds test (via variable)
       CALL METHOD end->add_text
      EXPORTING
        text = ls_text
        sap_emphasis = 'strong'.
    adds new line (start new line)
       CALL METHOD end->new_line.
    *set height of this section
       CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
         e_grid = l_grid.
        CALL METHOD l_grid->parent->parent->(f)
        EXPORTING
          id = 3
          height = 14.
    ENDFORM. "end_of_list_html.
    --END OF THE REPORT--

    Hi
    1. first remove the ENDSELECT..use INTO table itab or INTO CORRESPONDING fields, Since you are joining the  more tables this will take lot of time.
    2. You are just using two fields from LIKP as selection screen  fields to fetch the so much data.
    see the table linkings apartfrom KUNNR between the tables
    LIKP-VBELN = LIPS-VBELN
    LIPS-VGBEL = VBAK-VBELN and  LIPS-VGPOS = VBAP-POSNR
    and
    VBRP-AUBEL = VBAK-VBELN and VBRP-AUPOS = VBAP-POSNR and
    VBRP-VGBEL = LIKP-VBELN  and VBRP-VGPOS = LIPS-POSNR
    use the above links and code again.
    <b>Reward points for useful Answers</b>
    Regards
    Anji

  • Check box in ALV grid gets unselected for new selection

    Hi all,
    This is my code :
    TYPE-POOLS : slis.
    Variable
    DATA: g_repid LIKE sy-repid,
          g_title TYPE lvc_title,
          g_set_pf_stat TYPE slis_formname VALUE 'SET_PF_STATUS',
          g_user_command TYPE slis_formname VALUE 'USER_COMMAND',
          g_layout TYPE slis_layout_alv,
          g_print_alv TYPE slis_print_alv,
          g_variant LIKE disvariant,
          c_char_a(1) VALUE 'A',
          c_char_x(1) VALUE 'X',
          itab_alv_sort TYPE slis_t_sortinfo_alv,
          itab_alv_fcat TYPE slis_t_fieldcat_alv,
          fm_name type rs38l_fnam," Function Module Name
    *      l_sfctrlparams LIKE ssfctrlop, " Form Print Parameter
    *      l_sfoutopt LIKE ssfcompop,
          pri_params LIKE pri_params,
          c_x type c .
    *       Internal tables          Begin with IT_                       *
    DATA : it_fcat TYPE SLIS_T_FIELDCAT_ALV,                           "---ALV
           it_disp type table of ZLOI.
    *       Work Area for Internal tables      Begin with WA_             *
    data : wa_fcat TYPE slis_fieldcat_alv ,              "---ALV
           wa_layout           TYPE lvc_s_layo,               "---ALV
           wa_it_disp like line of it_disp.
    *       Objects                                                       *
    DATA : cref TYPE REF TO cl_gui_custom_container,          "---ALV
           gref TYPE REF TO cl_gui_alv_grid.                  "---ALV
    *        Start-of-selection
    Start-of-selection.
      perform fetch_po_det.
      perform build_fcat.
      perform alv_display.
    *&      Form  FETCH_PO_DET
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM FETCH_PO_DET .
      data : it_po type table of crmd_orderadm_h,
               wa_po like line of it_po,
               wa_header type BBP_PDS_PO_HEADER_D.
      select  guid
              object_id
              DESCRIPTION
              POSTING_DATE
              CREATED_BY
      from crmd_orderadm_h
      into corresponding fields of table it_po
      where object_type = 'BUS2201'.
      loop at it_po into wa_po.
        move wa_po-object_id to wa_it_disp-ZZPONO.
        move wa_po-DESCRIPTION to wa_it_disp-ZZPODESC.
        move wa_po-posting_date to wa_it_disp-ZZPODATE.
        move wa_po-created_by to wa_it_disp-ZZPOCREATOR.
        CALL FUNCTION 'BBP_PD_PO_GETDETAIL'
          EXPORTING
            I_OBJECT_ID = wa_it_disp-zzpono
          IMPORTING
            E_HEADER    = wa_header.
        move wa_header-total_value to wa_it_disp-ZZPOVAL.
        move wa_header-currency to wa_it_disp-ZZPOCUR.
        append wa_it_disp to it_disp.
      endloop.
    *  write : wa_it_disp-zzpono.
    ENDFORM.                    " FETCH_PO_DET
    *&      Form  BUILD_FCAT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM BUILD_FCAT .
      g_repid = sy-repid.
      g_title = 'LOI details'.
      g_print_alv-no_print_listinfos = 'X'.
      g_variant-report = sy-repid.
      g_variant-variant = sy-title.
      CLEAR g_layout.
      g_layout-f2code = ' '.
      wa_layout-zebra       = 'X'.
      g_layout-flexible_key = 'X'.
      g_layout-colwidth_optimize = 'X'.
      g_layout-detail_initial_lines = 'X'.
      g_layout-box_fieldname = 'ZZCHECK'.
    *g_layout-box_tabname = 'ITAB_REPORT'.
    *Check box
      wa_fcat-fieldname = 'ZZCHECK'.
      wa_fcat-checkbox = 'X'.
      wa_fcat-outputlen = '1'.
      wa_fcat-col_pos = '1'.
      wa_fcat-edit = '1'.
      wa_fcat-seltext_m = 'No'.
      append wa_fcat to it_fcat.
    *Po no
      clear wa_fcat.
      wa_fcat-fieldname = 'ZZPONO' .
    wa_fcat-tabname = 'IT_DISP'.
    *  wa_fcat-seltext = 'Purchase Order'.
      wa_fcat-seltext_m  = 'Purchase Order'.
    *wa_fcat-seltext_s = 'Purchase Order.
    wa_fcat-icon = 'X'.
      wa_fcat-col_pos = '2'.
      wa_fcat-outputlen = 10.
      append wa_fcat to it_fcat.
    *Desc
      wa_fcat-fieldname = 'ZZPODESC' .
    wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'Description'.
      wa_fcat-seltext_m = 'Description'.
    *wa_fcat-seltext_s = 'Description'.
      wa_fcat-col_pos = '3'.
      wa_fcat-outputlen = 10.
      append wa_fcat to it_fcat.
    *Postign date
      wa_fcat-fieldname = 'ZZPODATE' .
    wa_fcat-tabname = 'IT_DISP'.
    wa_fcat-seltext_l = 'Posting Date'.
      wa_fcat-seltext_m = 'Posting Date'.
    *wa_fcat-seltext_s = 'Posting Date'.
      wa_fcat-col_pos = '4'.
      wa_fcat-outputlen = 8.
      append wa_fcat to it_fcat.
    *value
      wa_fcat-fieldname = 'ZZPOVAL' .
    wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'PO value'.
      wa_fcat-seltext_m = 'PO value'.
    *wa_fcat-seltext_s = 'PO value'.
      wa_fcat-col_pos = '5'.
      wa_fcat-outputlen = 15.
      append wa_fcat to it_fcat.
    *Currency
      wa_fcat-fieldname = 'ZZPOCUR' .
    wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'PO Currency'.
      wa_fcat-seltext_m = 'PO Currency'.
    *wa_fcat-seltext_s = 'PO Currency'.
      wa_fcat-col_pos = '6'.
      wa_fcat-outputlen = 5.
      append wa_fcat to it_fcat.
    *Creator
      wa_fcat-fieldname = 'ZZPOCREATOR' .
    wa_fcat-tabname = 'IT_DISP'.
    *wa_fcat-seltext_l = 'Buyer'.
      wa_fcat-seltext_m = 'Buyer'.
    *wa_fcat-seltext_s = 'Buyer'.
      wa_fcat-col_pos = '7'.
      wa_fcat-outputlen = 12.
      append wa_fcat to it_fcat.
    ENDFORM.                    " BUILD_FCAT
    *&      Form  ALV_DISPLAY
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM ALV_DISPLAY .
      sort it_disp by ZZPONO.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                = ' '
    *   I_BUFFER_ACTIVE                   = ' '
         I_CALLBACK_PROGRAM                = g_repid
         I_CALLBACK_PF_STATUS_SET          = g_set_pf_stat
         I_CALLBACK_USER_COMMAND           = g_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                      = g_title
    *   I_GRID_SETTINGS                   =
          IS_LAYOUT                         = g_layout
          IT_FIELDCAT                       = it_fcat[]
    *   IT_EXCLUDING                      =
    *   IT_SPECIAL_GROUPS                 =
    *   IT_SORT                           =
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
    *   I_DEFAULT                         = 'X'
    *   I_SAVE                            = ' '
          IS_VARIANT                        = g_variant
    *   IT_EVENTS                         =
    *   IT_EVENT_EXIT                     =
          IS_PRINT                          = g_print_alv
    *   IS_REPREP_ID                      =
    *   I_SCREEN_START_COLUMN             = 0
    *   I_SCREEN_START_LINE               = 0
    *   I_SCREEN_END_COLUMN               = 0
    *   I_SCREEN_END_LINE                 = 0
    *   I_HTML_HEIGHT_TOP                 = 0
    *   I_HTML_HEIGHT_END                 = 0
    *   IT_ALV_GRAPHICS                   =
    *   IT_HYPERLINK                      =
    *   IT_ADD_FIELDCAT                   =
    *   IT_EXCEPT_QINFO                   =
    *   IR_SALV_FULLSCREEN_ADAPTER        =
    * IMPORTING
    *   E_EXIT_CAUSED_BY_CALLER           =
    *   ES_EXIT_CAUSED_BY_USER            =
        TABLES
          T_OUTTAB                          = it_disp[]
       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.                    " ALV_DISPLAY
    *&      Form  user_command
    *       text
    *      -->R_UCOMM      text
    *      -->RS_SELFIELD  text
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.                             "#EC CALLED
      CASE R_UCOMM.
        WHEN 'PRINT'.
          READ TABLE IT_disp INTO WA_IT_DISP WITH KEY ZZCHECK = 'X'.
          IF SY-SUBRC EQ 0.
            loop at it_DISP INTO WA_IT_DISP.
              CALL FUNCTION 'POPUP_TO_CONFIRM'
                EXPORTING
                  TEXT_QUESTION = 'Print the LOI details?'
                  TEXT_BUTTON_1 = 'Yes'
                  TEXT_BUTTON_2 = 'No'.
    *      IMPORTING
    *        ANSWER        = w_answer.
              IF SY-SUBRC  0.
              ENDIF.
    *          PERFORM CALL_SF.
            endloop.
          ENDIF.
        WHEN 'BACK'.
          LEAVE PROGRAM.
        WHEN 'EXIT'.
          LEAVE PROGRAM.
        WHEN 'CANCEL'.
          LEAVE PROGRAM.
      ENDCASE.
      rs_selfield-refresh = 'X'.
    ENDFORM.                    "user_command
    *&      Form  set_pf_status
    *       text
    *      -->RT_EXTAB   text
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZSTANDARD' EXCLUDING rt_extab.
      SET TITLEBAR sy-tcode.
    ENDFORM.                    "set_pf_status
    Now in my ALV grid o/p i can  see the check box  but if i select one row and then try to slect another the first one gets deselected.
    Can anybody tell me what is missing?

    Hi,
    if you need just a check box for each line, try to get rid of this line from your layout.
    g_layout-box_fieldname = 'ZZCHECK'.
    SAP uses this field to store info about selected lines. Hence you click on the second check box, you select different line and the first line is erased. You can select more line by holding SHIFT + CTRL
    Cheers

  • Total in REUSE_ALV_GRID_DISPLAY

    Hi,
    If we CHECK total option in REUSE_ALV_GRID_DISPLAY we get a total of numeric value with yellow color at the bottom.
    Requirement:
    Let say I have 3 line item records in the display, with 20 fields and one amount field. So I get the total of the amount field. Apart from that I want the Total number of LINE ITEMS to get displayed on that line. Is that possible . How?
    Thanks in Advance.

    Just call Reuse_alv_list_display instead of gris. Rest of functionality is same.
    *& Report  ZDEMO_ALVGRID                                               *
    *& Example of a simple ALV Grid Report                                 *
    *& The basic requirement for this demo is to display a number of       *
    *& fields from the EKKO table.                                         *
    REPORT  zdemo_alvgrid                 .
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      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.
    *ALV data declarations
    data: fieldcatalog 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.
    *Start-of-selection.
    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.
    * There are a number of ways to create a fieldcat.
    * For the purpose of this example i will build the fieldcatalog manualy
    * by populating the internal table fields individually and then
    * appending the rows. This method can be the most time consuming but can
    * also allow you  more control of the final product.
    * Beware though, you need to ensure that all fields required are
    * populated. When using some of functionality available via ALV, such as
    * total. You may need to provide more information than if you were
    * simply displaying the result
    *               I.e. Field type may be required in-order for
    *                    the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    *  fieldcatalog-do_sum      = 'X'.
    *  fieldcatalog-no_zero     = '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'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      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'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    *  gd_layout-totals_only        = 'X'.
    *  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
    *                                         "click(press f2)
    *  gd_layout-zebra             = 'X'.
    *  gd_layout-group_change_edit = 'X'.
    *  gd_layout-header_text       = 'helllllo'.
    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'  "see FORM
    *            i_callback_user_command = 'USER_COMMAND'
    *            i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
    *            it_special_groups       = gd_tabgroup
    *            IT_EVENTS                = GT_XEVENTS
                i_save                  = 'X'
    *            is_variant              = z_template
           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 table it_ekko.
    endform.                    " DATA_RETRIEVAL

  • How to read the check box value in alv report

    hi experts,
    i m working on one alv report where i m using the check box for field selection in alv display.
    but i don't know how to read the only selected fields.
    wa_fieldcat-fieldname = 'BOX'.
      wa_fieldcat-tabname = 'IT_HEADER'.
      wa_fieldcat-seltext_m = 'Box'.
      wa_fieldcat-checkbox = 'X'.
      wa_fieldcat-input = 'X'.
      wa_fieldcat-edit = 'X'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname = 'AUFNR'.
      wa_fieldcat-tabname = 'IT_HEADER'.
      wa_fieldcat-seltext_m = 'Sales Doc'.
      wa_fieldcat-hotspot = 'X'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         i_callback_program                = v_repid
         I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS'
         i_callback_user_command           = 'USER_COMMAND'
         i_callback_top_of_page            = 'TOP_OF_PAGE'
         it_fieldcat                       = i_fieldcat[]
         i_save                            = 'A'
         it_events                         = v_events
        TABLES
          t_outtab                          = it_header
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
    when '&RELEAS'.
    endcase
    endform.
    i gone through some already posted que for same problem i tried options like
    loop at it_header.
    endloop.
    but i m getting box field empty.
    is there i missed something? plz sugeest.. if u have any other solution plz post...

    Have this code in your user command fm:
    * For capturing changed data
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          e_grid = w_grid.
      CALL METHOD w_grid->check_changed_data
        IMPORTING
          e_valid = w_valid.
      IF w_valid = 'X'.
    loop at itab where mark = 'X'.
    endloop.
    ENDIF.
    Regards,
    Ravi

  • Checkbox field in ALV for REUSE_ALV_GRID_DISPLAY

    how to handle Checkbox field in ALV for REUSE_ALV_GRID_DISPLAY????
    For example Alv has displayed 400 entries if user checks 4 entries and wants to donwload only those 4 entries from ALV using Copy to local file option then how should it be done. please provide some help...

    REPORT  YHRMR_LTC_TAXABLE NO STANDARD PAGE HEADING LINE-SIZE 120.
    TYPE-POOLS: SLIS.
    Start of Data Declaration                                            *
    DATA: G_PLVAR               TYPE PLVAR.
    DATA: P_MONTH               TYPE TFMATAGE.
    DATA: TOTAL_NO              TYPE I.
    DATA: TOTAL_NO_SUM          TYPE I.
    DATA: COUNT_15              TYPE I.
    DATA: COUNT_15_SUM          TYPE I.
    DATA: COUNT_LTC             TYPE I.
    DATA: COUNT_LTC_SUM         TYPE I.
    DATA: COUNT_ERROR_IT15      TYPE I.
    DATA: COUNT_ERROR_IT15_SUM  TYPE I.
    DATA: COUNT_ERROR_LTC       TYPE I.
    DATA: COUNT_ERROR_LTC_SUM   TYPE I.
    DATA: COUNT_ENTRY_IT15      TYPE I.
    DATA: COUNT_ENTRY_IT15_SUM  TYPE I.
    --LOCAL TABLE TYPE--
    DATA: T_DATA_LTC     LIKE YHRMT_LTC OCCURS 0 WITH HEADER LINE.
    DATA: T_DATA_LTC_NEW LIKE YHRMT_LTC OCCURS 0 WITH HEADER LINE.
    DATA: T_PA0015 LIKE PA0015 OCCURS 0 WITH HEADER LINE.
    DATA: T_P0015 LIKE PA0015 OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF T_FINAL OCCURS 0,
          CHECK_BOX(1),
          MANDT        TYPE MANDT,
          PERNR        TYPE PERSNO,
          ABKRS        TYPE ABKRS,
          PERSK        TYPE PERSK,
          WAGETYPE     TYPE LGART,
          LTCSTART     TYPE YAJAHR,
          LTCEND       TYPE YYAJAHR,
          FLAG         TYPE YCHAR1,
          SEQNR        TYPE SEQNR,
          LEVSTART     TYPE URBEG,
          LEVEND       TYPE BDATU_052R,
          PAYDATE      TYPE YBEGDA,
          AMOUNTPAY    TYPE AMUNT,
          TAXYR        TYPE PHK_TAXYR,
          DOCUNO       TYPE YCHAR20,
          DOCUDATE     TYPE YENDDA,
          VOUCHNO      TYPE YCHAR20,
          APDATE       TYPE BPS_APPDA,
          CANCEL_MOD   TYPE YCANCELMOD,
          LTC_IND      TYPE ATZH1,
          APPL_TAG     TYPE YAPPTAG,
          CANCEL_DATE  TYPE AEDTM,
          CANCEL_USER  TYPE AENAM,
          LASTCHANGE   TYPE AEDTM,
          USERNAME     TYPE AENAM,
          END OF T_FINAL.
    DATA: BEGIN OF T_PA0001 OCCURS 0,
          PERNR LIKE PA0001-PERNR,
          ABKRS LIKE PA0001-ABKRS,
          END OF T_PA0001.
    --Message Part Declaration--
    DATA: BEGIN OF T_SUCCESS OCCURS 0,
          PERNR       TYPE PERSNO,
          MESSAGE(50) TYPE C,
          END OF T_SUCCESS.
    DATA: BEGIN OF T_ERROR OCCURS 0,
          PERNR       TYPE PERSNO,
          MESSAGE(50)  TYPE C,
          END OF T_ERROR.
    --TABLE TYPE OF SLIS TYPE-GROUP--
    DATA: G_FLD TYPE SLIS_T_FIELDCAT_ALV,
          G_EV TYPE SLIS_T_EVENT,
          G_SORT TYPE SLIS_T_SORTINFO_ALV,
          G_LST TYPE SLIS_T_LISTHEADER.
    DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
          GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
          GD_LAYOUT    TYPE SLIS_LAYOUT_ALV,
          I_EVENTS TYPE SLIS_T_EVENT,
          GD_REPID     LIKE SY-REPID.
    --STRUCTURE TYPE OF SLIS TYPE-GROUP--
    DATA: L_EV TYPE SLIS_ALV_EVENT.
    CONSTANTS : C_PF TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',
                C_UCOM TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
    *---- Start Change by Bibek/Shankar Dated : 12-03-2008 via cmr no : J/08/03/062/1.
    DATA: L_ENDDATE   LIKE SY-DATUM.
    *---- End   Change by Bibek/Shankar Dated : 12-03-2008 via cmr no : J/08/03/062/1.
    End of Data Declaration                                              *
    Start of Selection screen Parameters                                 *
    SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-002.
    *START CHANGE BY SHAYARI ON 18.02.2008, CMR No.:- J/08/02/323
    PARAMETERS:P_ABKRS LIKE PA0001-ABKRS OBLIGATORY.
    *END CHANGE BY SHAYARI ON 18.02.2008,  CMR No.:- J/08/02/323
    *START CHANGE BY BIBEk Dt : 06.03.2008, CMR No.:- J/08/03/062/1
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 1.
    SELECTION-SCREEN COMMENT 1(78) TEXT-006 FOR FIELD P_LES.
    PARAMETER P_LES RADIOBUTTON GROUP RB1.
    SELECTION-SCREEN END OF LINE.
    *END CHANGE BY BIBEk Dt : 06.03.2008, CMR No.:- J/08/03/062/1
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 1.
    SELECTION-SCREEN COMMENT 1(78) TEXT-003 FOR FIELD P_ONE.
    PARAMETER P_ONE RADIOBUTTON GROUP RB1.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 1.
    SELECTION-SCREEN COMMENT 1(78) TEXT-004 FOR FIELD P_TWO.
    PARAMETER P_TWO  RADIOBUTTON GROUP RB1.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 1.
    SELECTION-SCREEN COMMENT 1(78) TEXT-005 FOR FIELD P_MORE.
    PARAMETER P_MORE RADIOBUTTON GROUP RB1.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK A.
    End of Selection screen Parameters                                   *
    *Get Plan Version
    CALL FUNCTION 'RH_GET_PLVAR'
      IMPORTING
        PLVAR = G_PLVAR.
    PERFORM CLEAR.
    CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
      EXPORTING
        IV_DATE                   = SY-DATUM
    IMPORTING
      EV_MONTH_BEGIN_DATE       =
        EV_MONTH_END_DATE         = L_ENDDATE.
    SELECT *
      FROM YHRMT_LTC
      INTO TABLE T_DATA_LTC
    WHERE FLAG   = '1'
       AND WAGETYPE = '1640'
       AND LEVEND LE L_ENDDATE
       AND PAYDATE GE '20080101'.
    If SY-SUBRC <> 0.
    MESSAGE I398(00) with 'No Records to display '.
    ENDIF.
    DELETE T_DATA_LTC WHERE LEVEND = '00000000'.
    *START CHANGE BY BIBEk Dt : 06.03.2008, CMR No.:- J/08/03/062/1
    *For Less Than One Month from Leave End Date
    IF P_LES = 'X'.
      LOOP AT T_DATA_LTC.
        CLEAR P_MONTH.
        CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
          EXPORTING
            BEG_DA   = T_DATA_LTC-LEVEND
            END_DA   = SY-DATUM
          IMPORTING
            NO_MONTH = P_MONTH.
        IF P_MONTH LT '1'.
          T_FINAL-MANDT       =  T_DATA_LTC-MANDT.
          T_FINAL-PERNR       =  T_DATA_LTC-PERSONNELNO.
          T_FINAL-PERSK       =  T_DATA_LTC-PERSK.
          T_FINAL-WAGETYPE    =  T_DATA_LTC-WAGETYPE.
          T_FINAL-LTCSTART    =  T_DATA_LTC-LTCSTART.
          T_FINAL-LTCEND      =  T_DATA_LTC-LTCEND.
          T_FINAL-FLAG        =  T_DATA_LTC-FLAG.
          T_FINAL-SEQNR       =  T_DATA_LTC-SEQNR.
          T_FINAL-LEVSTART    =  T_DATA_LTC-LEVSTART.
          T_FINAL-LEVEND      =  T_DATA_LTC-LEVEND.
          T_FINAL-PAYDATE     =  T_DATA_LTC-PAYDATE.
          T_FINAL-AMOUNTPAY   =  T_DATA_LTC-AMOUNTPAY.
          T_FINAL-TAXYR       =  T_DATA_LTC-TAXYR.
          T_FINAL-DOCUNO      =  T_DATA_LTC-DOCUNO.
          T_FINAL-DOCUDATE    =  T_DATA_LTC-DOCUDATE.
          T_FINAL-VOUCHNO     =  T_DATA_LTC-VOUCHNO.
          T_FINAL-APDATE      =  T_DATA_LTC-APDATE.
          T_FINAL-CANCEL_MOD  =  T_DATA_LTC-CANCEL_MOD.
          T_FINAL-LTC_IND     =  T_DATA_LTC-LTC_IND.
          T_FINAL-APPL_TAG    =  T_DATA_LTC-APPL_TAG.
          T_FINAL-CANCEL_DATE =  T_DATA_LTC-CANCEL_DATE.
          T_FINAL-CANCEL_USER =  T_DATA_LTC-CANCEL_USER.
          T_FINAL-LASTCHANGE  =  T_DATA_LTC-LASTCHANGE.
          T_FINAL-USERNAME    =  T_DATA_LTC-USERNAME.
          APPEND T_FINAL.
          CLEAR  T_FINAL.
        ENDIF.
      ENDLOOP.
    *For One Month from Leave End Date
    ELSEIF P_ONE = 'X'.
      LOOP AT T_DATA_LTC.
        CLEAR P_MONTH.
        CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
          EXPORTING
            BEG_DA   = T_DATA_LTC-LEVEND
            END_DA   = SY-DATUM
          IMPORTING
            NO_MONTH = P_MONTH.
        IF P_MONTH EQ '1' AND P_MONTH LT '2'.
          T_FINAL-MANDT       =  T_DATA_LTC-MANDT.
          T_FINAL-PERNR       =  T_DATA_LTC-PERSONNELNO.
          T_FINAL-PERSK       =  T_DATA_LTC-PERSK.
          T_FINAL-WAGETYPE    =  T_DATA_LTC-WAGETYPE.
          T_FINAL-LTCSTART    =  T_DATA_LTC-LTCSTART.
          T_FINAL-LTCEND      =  T_DATA_LTC-LTCEND.
          T_FINAL-FLAG        =  T_DATA_LTC-FLAG.
          T_FINAL-SEQNR       =  T_DATA_LTC-SEQNR.
          T_FINAL-LEVSTART    =  T_DATA_LTC-LEVSTART.
          T_FINAL-LEVEND      =  T_DATA_LTC-LEVEND.
          T_FINAL-PAYDATE     =  T_DATA_LTC-PAYDATE.
          T_FINAL-AMOUNTPAY   =  T_DATA_LTC-AMOUNTPAY.
          T_FINAL-TAXYR       =  T_DATA_LTC-TAXYR.
          T_FINAL-DOCUNO      =  T_DATA_LTC-DOCUNO.
          T_FINAL-DOCUDATE    =  T_DATA_LTC-DOCUDATE.
          T_FINAL-VOUCHNO     =  T_DATA_LTC-VOUCHNO.
          T_FINAL-APDATE      =  T_DATA_LTC-APDATE.
          T_FINAL-CANCEL_MOD  =  T_DATA_LTC-CANCEL_MOD.
          T_FINAL-LTC_IND     =  T_DATA_LTC-LTC_IND.
          T_FINAL-APPL_TAG    =  T_DATA_LTC-APPL_TAG.
          T_FINAL-CANCEL_DATE =  T_DATA_LTC-CANCEL_DATE.
          T_FINAL-CANCEL_USER =  T_DATA_LTC-CANCEL_USER.
          T_FINAL-LASTCHANGE  =  T_DATA_LTC-LASTCHANGE.
          T_FINAL-USERNAME    =  T_DATA_LTC-USERNAME.
          APPEND T_FINAL.
          CLEAR  T_FINAL.
        ENDIF.
      ENDLOOP.
    *For Two Month from Leave End Date
    ELSEIF P_TWO = 'X'.
      LOOP AT T_DATA_LTC.
        CLEAR P_MONTH.
        CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
          EXPORTING
            BEG_DA   = T_DATA_LTC-LEVEND
            END_DA   = SY-DATUM
          IMPORTING
            NO_MONTH = P_MONTH.
        IF P_MONTH EQ '2' AND P_MONTH LT '3'.
          T_FINAL-MANDT       =  T_DATA_LTC-MANDT.
          T_FINAL-PERNR       =  T_DATA_LTC-PERSONNELNO.
          T_FINAL-PERSK       =  T_DATA_LTC-PERSK.
          T_FINAL-WAGETYPE    =  T_DATA_LTC-WAGETYPE.
          T_FINAL-LTCSTART    =  T_DATA_LTC-LTCSTART.
          T_FINAL-LTCEND      =  T_DATA_LTC-LTCEND.
          T_FINAL-FLAG        =  T_DATA_LTC-FLAG.
          T_FINAL-SEQNR       =  T_DATA_LTC-SEQNR.
          T_FINAL-LEVSTART    =  T_DATA_LTC-LEVSTART.
          T_FINAL-LEVEND      =  T_DATA_LTC-LEVEND.
          T_FINAL-PAYDATE     =  T_DATA_LTC-PAYDATE.
          T_FINAL-AMOUNTPAY   =  T_DATA_LTC-AMOUNTPAY.
          T_FINAL-TAXYR       =  T_DATA_LTC-TAXYR.
          T_FINAL-DOCUNO      =  T_DATA_LTC-DOCUNO.
          T_FINAL-DOCUDATE    =  T_DATA_LTC-DOCUDATE.
          T_FINAL-VOUCHNO     =  T_DATA_LTC-VOUCHNO.
          T_FINAL-APDATE      =  T_DATA_LTC-APDATE.
          T_FINAL-CANCEL_MOD  =  T_DATA_LTC-CANCEL_MOD.
          T_FINAL-LTC_IND     =  T_DATA_LTC-LTC_IND.
          T_FINAL-APPL_TAG    =  T_DATA_LTC-APPL_TAG.
          T_FINAL-CANCEL_DATE =  T_DATA_LTC-CANCEL_DATE.
          T_FINAL-CANCEL_USER =  T_DATA_LTC-CANCEL_USER.
          T_FINAL-LASTCHANGE  =  T_DATA_LTC-LASTCHANGE.
          T_FINAL-USERNAME    =  T_DATA_LTC-USERNAME.
          APPEND T_FINAL.
          CLEAR  T_FINAL.
        ENDIF.
      ENDLOOP.
    *For More than Two Month from Leave End Date
    ELSEIF P_MORE = 'X'.
      LOOP AT T_DATA_LTC.
        CLEAR P_MONTH.
        CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
          EXPORTING
            BEG_DA   = T_DATA_LTC-LEVEND
            END_DA   = SY-DATUM
          IMPORTING
            NO_MONTH = P_MONTH.
        IF P_MONTH GT '2' .
          T_FINAL-MANDT       =  T_DATA_LTC-MANDT.
          T_FINAL-PERNR       =  T_DATA_LTC-PERSONNELNO.
          T_FINAL-PERSK       =  T_DATA_LTC-PERSK.
          T_FINAL-WAGETYPE    =  T_DATA_LTC-WAGETYPE.
          T_FINAL-LTCSTART    =  T_DATA_LTC-LTCSTART.
          T_FINAL-LTCEND      =  T_DATA_LTC-LTCEND.
          T_FINAL-FLAG        =  T_DATA_LTC-FLAG.
          T_FINAL-SEQNR       =  T_DATA_LTC-SEQNR.
          T_FINAL-LEVSTART    =  T_DATA_LTC-LEVSTART.
          T_FINAL-LEVEND      =  T_DATA_LTC-LEVEND.
          T_FINAL-PAYDATE     =  T_DATA_LTC-PAYDATE.
          T_FINAL-AMOUNTPAY   =  T_DATA_LTC-AMOUNTPAY.
          T_FINAL-TAXYR       =  T_DATA_LTC-TAXYR.
          T_FINAL-DOCUNO      =  T_DATA_LTC-DOCUNO.
          T_FINAL-DOCUDATE    =  T_DATA_LTC-DOCUDATE.
          T_FINAL-VOUCHNO     =  T_DATA_LTC-VOUCHNO.
          T_FINAL-APDATE      =  T_DATA_LTC-APDATE.
          T_FINAL-CANCEL_MOD  =  T_DATA_LTC-CANCEL_MOD.
          T_FINAL-LTC_IND     =  T_DATA_LTC-LTC_IND.
          T_FINAL-APPL_TAG    =  T_DATA_LTC-APPL_TAG.
          T_FINAL-CANCEL_DATE =  T_DATA_LTC-CANCEL_DATE.
          T_FINAL-CANCEL_USER =  T_DATA_LTC-CANCEL_USER.
          T_FINAL-LASTCHANGE  =  T_DATA_LTC-LASTCHANGE.
          T_FINAL-USERNAME    =  T_DATA_LTC-USERNAME.
          APPEND T_FINAL.
          CLEAR  T_FINAL.
        ENDIF.
      ENDLOOP.
    ENDIF.
    ****Payroll Area Put
    SELECT PERNR ABKRS FROM PA0001
    INTO CORRESPONDING FIELDS OF TABLE T_PA0001
    FOR ALL ENTRIES IN T_FINAL
    WHERE PERNR = T_FINAL-PERNR
    AND ABKRS = P_ABKRS
    AND BEGDA LE SY-DATUM
    AND ENDDA GE SY-DATUM.
    LOOP AT T_FINAL.
      READ TABLE T_PA0001 WITH KEY PERNR = T_FINAL-PERNR.
      IF SY-SUBRC = 0.
        T_FINAL-ABKRS = T_PA0001-ABKRS.
        MODIFY T_FINAL.
        CLEAR  T_FINAL.
      ENDIF.
    ENDLOOP.
    CLEAR T_FINAL.
    DELETE T_FINAL WHERE ABKRS = ''.
    *Output Form ALV List
    PERFORM ALV.
    *&      Form  ALV
    FORM ALV .
      PERFORM BUILD_FIELDCATALOG.
      PERFORM BUILD_EVENT.
      PERFORM DISPLAY_DATA.
    ENDFORM.                    " ALV
    *&      Form  BUILD_FIELDCATALOG
    FORM BUILD_FIELDCATALOG .
      FIELDCATALOG-TABNAME     = 'T_FINAL'.
      FIELDCATALOG-FIELDNAME   = 'PERNR'.
      FIELDCATALOG-SELTEXT_M   = 'Personnel number'.
      FIELDCATALOG-COL_POS     = 1.
      FIELDCATALOG-OUTPUTLEN   = 17.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-TABNAME     = 'T_FINAL'.
      FIELDCATALOG-FIELDNAME   = 'ABKRS'.
      FIELDCATALOG-SELTEXT_M   = 'Payroll Area'.
      FIELDCATALOG-COL_POS     = 2.
      FIELDCATALOG-OUTPUTLEN   = 17.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-TABNAME     = 'T_FINAL'.
      FIELDCATALOG-FIELDNAME   = 'LTCSTART'.
      FIELDCATALOG-SELTEXT_M   = 'LTC Start year'.
      FIELDCATALOG-COL_POS     = 3.
      FIELDCATALOG-OUTPUTLEN   = 15.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-TABNAME     = 'T_FINAL'.
      FIELDCATALOG-FIELDNAME   = 'LTCEND'.
      FIELDCATALOG-SELTEXT_M   = 'LTC End year'.
      FIELDCATALOG-COL_POS     = 4.
      FIELDCATALOG-OUTPUTLEN   = 15.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-TABNAME     = 'T_FINAL'.
      FIELDCATALOG-FIELDNAME   = 'LEVSTART'.
      FIELDCATALOG-SELTEXT_M   = 'Start of leave'.
      FIELDCATALOG-COL_POS     = 5.
      FIELDCATALOG-OUTPUTLEN   = 15.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-TABNAME     = 'T_FINAL'.
      FIELDCATALOG-FIELDNAME   = 'LEVEND'.
      FIELDCATALOG-SELTEXT_M   = 'End of leave'.
      FIELDCATALOG-COL_POS     = 6.
      FIELDCATALOG-OUTPUTLEN   = 15.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-TABNAME     = 'T_FINAL'.
      FIELDCATALOG-FIELDNAME   = 'AMOUNTPAY'.
      FIELDCATALOG-SELTEXT_M   = 'Amount'.
      FIELDCATALOG-DO_SUM      = 'X'.
      FIELDCATALOG-COL_POS     = 7.
      FIELDCATALOG-OUTPUTLEN   = 13.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-TABNAME     = 'T_FINAL'.
      FIELDCATALOG-FIELDNAME   = 'PAYDATE'.
      FIELDCATALOG-SELTEXT_M   = 'Payment Date'.
      FIELDCATALOG-COL_POS     = 8.
      FIELDCATALOG-OUTPUTLEN   = 15.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-TABNAME     = 'T_FINAL'.
      FIELDCATALOG-FIELDNAME   = 'APPL_TAG'.
      FIELDCATALOG-SELTEXT_M   = 'Application Tag '.
      FIELDCATALOG-COL_POS     = 9.
      FIELDCATALOG-OUTPUTLEN   = 15.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
    *Check Box Field Add
      CLEAR GD_LAYOUT.
      GD_LAYOUT-BOX_FIELDNAME = 'CHECK_BOX'.
      GD_LAYOUT-BOX_TABNAME = 'T_FINAL'.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_EVENT
    FORM BUILD_EVENT .
    *Event Handler
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          I_LIST_TYPE     = 0
        IMPORTING
          ET_EVENTS       = G_EV
        EXCEPTIONS
          LIST_TYPE_WRONG = 1
          OTHERS          = 2.
      IF SY-SUBRC <> 0.
      ELSE.
        READ TABLE G_EV INTO L_EV WITH KEY NAME = SLIS_EV_PF_STATUS_SET.
        IF SY-SUBRC = 0.
          MOVE C_PF TO L_EV-FORM.
          MODIFY G_EV FROM L_EV INDEX SY-TABIX TRANSPORTING FORM.
        ENDIF.
        READ TABLE G_EV INTO L_EV WITH KEY NAME = SLIS_EV_USER_COMMAND.
        IF SY-SUBRC = 0.
          MOVE C_UCOM TO L_EV-FORM.
          MODIFY G_EV FROM L_EV INDEX SY-TABIX TRANSPORTING FORM.
        ENDIF.
      ENDIF.
    ENDFORM.                    " BUILD_EVENT
    *&      Form  DISPLAY_DATA
    FORM DISPLAY_DATA .
      GD_REPID = SY-REPID.
      CLEAR I_EVENTS. REFRESH I_EVENTS.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM       = GD_REPID
          I_CALLBACK_PF_STATUS_SET = C_PF
          I_CALLBACK_USER_COMMAND  = C_UCOM
          IS_LAYOUT                = GD_LAYOUT
          IT_FIELDCAT              = FIELDCATALOG[]
          IT_EVENTS                = G_EV
        TABLES
          T_OUTTAB                 = T_FINAL.
    ENDFORM.                    " DISPLAY_DATA
          FORM PF_STATUS_SET                                            *
    FORM PF_STATUS_SET USING RX_TAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'LTC'.
    ENDFORM.                    "PF_STATUS_SET
          FORM USER_COMMAND                                             *
    FORM USER_COMMAND USING R_UCOM LIKE SY-UCOMM
                            RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOM.
        WHEN 'POST'.
          PERFORM POST_IT15_LTC_TABLE.
      ENDCASE.
    ENDFORM.                    "USER_COMMAND
    *&      Form  POST_IT15_LTC_TABLE
    FORM POST_IT15_LTC_TABLE .
    ENDFORM.                    " POST_IT15_LTC_TABLE
    *&      Form  clear
    FORM CLEAR .
      CLEAR   T_DATA_LTC.
      REFRESH T_DATA_LTC.
      CLEAR   T_DATA_LTC_NEW.
      REFRESH T_DATA_LTC_NEW.
      CLEAR   T_FINAL.
      REFRESH T_FINAL.
      CLEAR   T_PA0015.
      REFRESH T_PA0015.
      CLEAR   T_SUCCESS.
      REFRESH T_SUCCESS.
      CLEAR   T_ERROR.
      REFRESH T_ERROR.
      CLEAR G_PLVAR.
      CLEAR P_MONTH.
      CLEAR COUNT_15.
      CLEAR COUNT_15_SUM.
      CLEAR COUNT_LTC.
      CLEAR COUNT_LTC_SUM.
      CLEAR TOTAL_NO.
      CLEAR TOTAL_NO_SUM.
      CLEAR COUNT_ERROR_IT15.
      CLEAR COUNT_ERROR_IT15_SUM.
      CLEAR COUNT_ERROR_LTC.
      CLEAR COUNT_ERROR_LTC_SUM.
      CLEAR COUNT_ENTRY_IT15.
      CLEAR COUNT_ENTRY_IT15_SUM.
    ENDFORM.                    " clear

Maybe you are looking for

  • Mac running slow - considering reinstall

    Hullo My iMac is no longer snappy. It seems to have been like this for a while. At least since I upgraded to Snow Leopard*. I have tried running the usual utils to clear logs and caches and sort out disk permissions. I have even defragmented, first b

  • Devices are not showing up in Finder sidebar

    All of a sudden attached devices are not showing up in the sidebar in finder nor on the desktop, have already checked Finder prefs and are all set correctly. Cant access files on attached hard drive and cant dismount. Upon pulling the plug I get the

  • Java classes and MySql Files

    Hello, There is a way to distribute the Mysql db files with yout java application without need to install Mysql in the computer, like in access, you just copy the .mdb file with your java class and create a conection to it. Thank You

  • Memory/software issues with the Nokia 6120 classic...

    Hi. I have a Nokia 6120 classic phone which I bought recently (not covered by warranty) and I'm having problems with the phone on my memory or software part (i don't know which one is exactly). I'm having issues like this for example when I'm to run

  • Returning Return in PowerShell

    Hey all, I'm trying to write a function in PowerShell where before running the onClick handler it does some basic error checking and if it finds an error to exit the onClickHandler. But it's not returning my return command like I'm used to in LUA. So