Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Reg: REUSE_ALV_HIERSEQ_LIST_DISPLAY

Former Member
0 Kudos

Hi Friends,

Scenario:

I am using REUSE_ALV_HIERSEQ_LIST_DISPLAY for one of my report program and the the header internal table which i am passing to this FM has a Checkbox field.I am able to get the report output perfectly.

Problem:

In the report output event handling on checkbox is not working. when i select any of the checkboxes its not reflecting in the internal table as selected.

Please let me know how to do this if anyone of you have worked on such kind of scenario.

Thanks for your time.

Cheers!!

Shanker Pandey.

2 REPLIES 2

former_member212653
Active Contributor
0 Kudos

Check out this code:


REPORT  ztest_sourav16.
TYPE-POOLS: slis.
TYPES:
BEGIN OF x_mara,
  matnr TYPE matnr,
  ersda	TYPE ersda,
  ernam	TYPE ernam,
  laeda	TYPE laeda,
  aenam	TYPE aenam,
  vpsta	TYPE vpsta,
  pstat	TYPE pstat_d,
  lvorm	TYPE lvoma,
  check TYPE char1,
END OF x_mara,
BEGIN OF x_marc,
  matnr TYPE matnr,
  werks TYPE werks_d,
END OF x_marc.

DATA: i_mara TYPE STANDARD TABLE OF x_mara INITIAL SIZE 0,
      i_marc TYPE STANDARD TABLE OF x_marc INITIAL SIZE 0,
      wa_alv_keyinfo TYPE slis_keyinfo_alv,
      i_fieldcat TYPE slis_t_fieldcat_alv,
      wa_layout TYPE slis_layout_alv.

START-OF-SELECTION.

  SELECT matnr
          werks
     FROM marc
     INTO TABLE i_marc
     UP TO 100 ROWS.

  IF sy-subrc = 0.
    SELECT
      matnr
      ersda
      ernam
      laeda
      aenam
      vpsta
      pstat
      lvorm
    FROM mara INTO TABLE i_mara
      FOR ALL ENTRIES IN i_marc
      WHERE matnr = i_marc-matnr.
    IF sy-subrc = 0.

    ENDIF.
  ENDIF.


END-OF-SELECTION.
  DATA:
  i_callback_program TYPE syrepid VALUE sy-repid.
  PERFORM sub_populate_fcat.
  wa_alv_keyinfo-header01 = 'MATNR'.

  wa_alv_keyinfo-item01   = 'MATNR'.
  wa_alv_keyinfo-item02   = 'WERKS'.

  wa_layout-box_fieldname = 'CHECK'.
  wa_layout-box_tabname   = 'I_MARA'.

  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
*   I_INTERFACE_CHECK              = 'X'
    i_callback_program             = i_callback_program
    i_callback_pf_status_set       = 'SUB_SET_PF_STATUS'
    i_callback_user_command        = 'SUB_USER_COMMAND'
    is_layout                      = wa_layout
    it_fieldcat                    = i_fieldcat
*   IT_EXCLUDING                   =
*   IT_SPECIAL_GROUPS              =
*   IT_SORT                        =
*   IT_FILTER                      =
*   IS_SEL_HIDE                    =
*   I_SCREEN_START_COLUMN          = 0
*   I_SCREEN_START_LINE            = 0
*   I_SCREEN_END_COLUMN            = 0
*   I_SCREEN_END_LINE              = 0
*   I_DEFAULT                      = 'X'
*   I_SAVE                         = ' '
*   IS_VARIANT                     =
*   IT_EVENTS                      =
*   IT_EVENT_EXIT                  =
    i_tabname_header               = 'I_MARA'
    i_tabname_item                 = 'I_MARC'
*   I_STRUCTURE_NAME_HEADER        =
*   I_STRUCTURE_NAME_ITEM          =
    is_keyinfo                     = wa_alv_keyinfo
*   IS_PRINT                       =
*   IS_REPREP_ID                   =
*   I_BYPASSING_BUFFER             =
*   I_BUFFER_ACTIVE                =
*   IR_SALV_HIERSEQ_ADAPTER        =
*   IT_EXCEPT_QINFO                =
*   I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER        =
*   ES_EXIT_CAUSED_BY_USER         =
    TABLES
      t_outtab_header                = i_mara
      t_outtab_item                  = i_marc
 EXCEPTIONS
   program_error                  = 1
   OTHERS                         = 2
            .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

*&---------------------------------------------------------------------*
*&      Form  sub_populate_fcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub_populate_fcat.
  DATA: l_wa_fieldcat TYPE slis_fieldcat_alv.

  l_wa_fieldcat-ref_tabname   = 'MARA'.
  l_wa_fieldcat-tabname       = 'I_MARA'.
  l_wa_fieldcat-fieldname     = 'MATNR'.
  APPEND l_wa_fieldcat TO i_fieldcat.

  CLEAR l_wa_fieldcat-fieldname.
  l_wa_fieldcat-fieldname     = 'ERSDA'.
  APPEND l_wa_fieldcat TO i_fieldcat.

  CLEAR l_wa_fieldcat-fieldname.
  l_wa_fieldcat-fieldname     = 'ERNAM'.
  APPEND l_wa_fieldcat TO i_fieldcat.

  CLEAR l_wa_fieldcat-fieldname.
  l_wa_fieldcat-fieldname     = 'LAEDA'.
  APPEND l_wa_fieldcat TO i_fieldcat.

  CLEAR l_wa_fieldcat-fieldname.
  l_wa_fieldcat-fieldname     = 'AENAM'.
  APPEND l_wa_fieldcat TO i_fieldcat.

  CLEAR l_wa_fieldcat-fieldname.
  l_wa_fieldcat-fieldname     = 'VPSTA'.
  APPEND l_wa_fieldcat TO i_fieldcat.

  CLEAR l_wa_fieldcat-fieldname.
  l_wa_fieldcat-fieldname     = 'PSTAT'.
  APPEND l_wa_fieldcat TO i_fieldcat.

  CLEAR l_wa_fieldcat-fieldname.
  l_wa_fieldcat-fieldname     = 'LVORM'.
  APPEND l_wa_fieldcat TO i_fieldcat.

  CLEAR l_wa_fieldcat.

  l_wa_fieldcat-fieldname     = 'MATNR'.
  l_wa_fieldcat-ref_tabname   = 'MARC'.
  l_wa_fieldcat-tabname       = 'I_MARC'.
  APPEND l_wa_fieldcat TO i_fieldcat.
  CLEAR l_wa_fieldcat.
  l_wa_fieldcat-fieldname     = 'WERKS'.
  l_wa_fieldcat-ref_tabname   = 'MARC'.
  l_wa_fieldcat-tabname       = 'I_MARC'.
  APPEND l_wa_fieldcat TO i_fieldcat.
  CLEAR l_wa_fieldcat.

ENDFORM.                    "sub_populate_fcat'
*&---------------------------------------------------------------------*
*&      Form  SUB_USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM sub_user_command USING rf_ucomm TYPE syucomm
                        rs TYPE slis_selfield.
  DATA: l_i_mara TYPE STANDARD TABLE OF x_mara INITIAL SIZE 0,
        l_lines TYPE i,
        l_wa_mara TYPE x_mara.

  CASE rf_ucomm.
    WHEN 'DETA'.
      l_i_mara[] = i_mara.
      DELETE l_i_mara WHERE check = space.
      l_lines = LINES( l_i_mara ).
      IF l_lines EQ 0.
        MESSAGE i001(00) WITH 'No lines selected.'.
      ELSEIF l_lines GT 1.
        MESSAGE i001(00) WITH 'More than one lines selected.'.
      ELSEIF l_lines EQ 1.
        READ TABLE l_i_mara INTO l_wa_mara
        INDEX 1.
        IF sy-subrc = 0.
          MESSAGE i001(00) WITH 'You have selected material:'
          l_wa_mara-matnr.
        ENDIF.
      ENDIF.
*	WHEN .
*	WHEN OTHERS.
  ENDCASE.

ENDFORM.                    "sub_user_command
*&---------------------------------------------------------------------*
*&      Form  sub_set_pf_status
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RT_EXTAB   text
*----------------------------------------------------------------------*
FORM sub_set_pf_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'ZSTANDARD'.
ENDFORM.                    "sub_set_pf_status

Hope this helps

Former Member
0 Kudos

got the answer. closing the thread.