Skip to Content
0
Former Member
Feb 24, 2009 at 11:25 AM

hierarchical ALV list in expended mode (Collapsed) in default

1110 Views

I am looking for help to display the hierarchical ALV list in expended mode (Collapsed

) . I had take expended in the structure for the same.

TYPES : BEGIN OF ty_icdhdr,

CHANGENR type CDCHANGENR,

PLANCHNGNR type PLANCHNGNR,

UDATE type UDATE,

UTIME type UTIME,

USERNAME type USERNAME,

aetxt TYPE aetxt,

aegru TYPE aegru, " Reason for change

expand.

TYPES END OF ty_icdhdr.

But while setting values for lay out it_layout-expand_fieldname = 'EXPAND' will not gives the collapsed view rather gives the hotspot to collapse the list.

*----


  • Complete program is as

*&----


*& Report ZTEST_MAT_CHG_HIERARCHYLIST *

*&----


*& RM : hierarchical sequential list display of material change *

*&----


REPORT ZTEST_MAT_CHG_HIERARCHYLIST .

  • type-pools declarations for alv and icon

TYPE-POOLS: slis,icon.

*structure declaration for table details

TYPES : BEGIN OF ty_icdhdr,

CHANGENR type CDCHANGENR,

PLANCHNGNR type PLANCHNGNR,

UDATE type UDATE,

UTIME type UTIME,

USERNAME type USERNAME,

aetxt TYPE aetxt,

aegru TYPE aegru, " Reason for change

expand.

TYPES END OF ty_icdhdr.

  • cdhdr

*internal table and wa decln for table details

DATA : it_cdhdr TYPE TABLE OF ty_icdhdr,

wa_cdhdr TYPE ty_icdhdr.

TYPES : BEGIN OF ty_ausg,

CHANGENR type CDCHANGENR,

PLANCHNGNR type PLANCHNGNR,

FTEXT type FTEXT,

  • FNAME type FNAME,

CDSHWIND type CDSHWIND,

F_OLD type CDFLDVALO,

F_NEW type CDFLDVALN.

  • INCLUDE STRUCTURE cdshw.

TYPES END OF ty_ausg.

*Internal table and wa decln for field details

DATA : it_ausg TYPE STANDARD TABLE OF ty_ausg,

wa_ausg TYPE ty_ausg.

DATA: BEGIN OF ausg OCCURS 50.

INCLUDE STRUCTURE cdshw.

DATA: END OF ausg.

DATA: BEGIN OF icdhdr OCCURS 50.

INCLUDE STRUCTURE CDHDR.

DATA: END OF icdhdr.

data : ls_cdhdr like CDHDR.

  • ls_cdshw like CDSHW.

DATA: BEGIN OF export OCCURS 0,

head LIKE cdhdr,

pos LIKE cdshw OCCURS 10,

END OF export.

*Mat Detata

DATA: objekt LIKE cdhdr-objectclas,

objektid LIKE cdhdr-objectid .

*data declarations for ALV

DATA : it_fieldcat TYPE slis_t_fieldcat_alv,

wa_fieldcat TYPE slis_fieldcat_alv,

it_layout TYPE slis_layout_alv,

key TYPE slis_keyinfo_alv.

*Input the tables.User cannot enter a range but can enter any number

*of tables one by one in this select-options

SELECT-OPTIONS : s_table FOR objektid NO INTERVALS.

*initializatin event

INITIALIZATION.

*start-of-selection event

START-OF-SELECTION.

*subroutine to fetch the data from the tables

  • PERFORM fetch_tabledata.

perform getdata.

*subroutine to build alv hierarchy output

PERFORM hierarchyalv_build.

&----


*& Form hierarchyalv_build

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form hierarchyalv_build .

*fieldcatalogue

perform build_fieldcat.

*layout

perform build_layout.

*key information for hierarchy

perform build_key.

*output

perform list_display.endform. " hierarchyalv_build

&----


*& Form build_fieldcat

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form build_fieldcat .

*Header DATA

CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 1.

wa_fieldcat-fieldname = 'PLANCHNGNR'.

wa_fieldcat-tabname = 'IT_CDHDR'.

wa_fieldcat-seltext_m = 'Change Number'.

wa_fieldcat-key = 'X'.

wa_fieldcat-emphasize = 'C110'. APPEND wa_fieldcat TO it_fieldcat.

*PLANCHNGNR CHANGENR

CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 2.

wa_fieldcat-fieldname = 'UDATE'.

wa_fieldcat-tabname = 'IT_CDHDR'.

wa_fieldcat-seltext_m = 'Updating Date'.

wa_fieldcat-emphasize = 'C110'. APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 3.

wa_fieldcat-fieldname = 'UTIME'.

wa_fieldcat-tabname = 'IT_CDHDR'.

wa_fieldcat-seltext_m = 'Time'.

wa_fieldcat-emphasize = 'C110'. APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 4.

wa_fieldcat-fieldname = 'USERNAME'.

wa_fieldcat-tabname = 'IT_CDHDR'.

wa_fieldcat-seltext_m = 'User Name'.

wa_fieldcat-emphasize = 'C110'. APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 5.

wa_fieldcat-fieldname = 'AETXT'.

wa_fieldcat-tabname = 'IT_CDHDR'.

wa_fieldcat-seltext_m = 'Reason'.

  • wa_fieldcat-reptext_ddic = 'Reason'.

  • wa_fieldcat-outputlen = 50.

wa_fieldcat-emphasize = 'C110'. APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 6.

wa_fieldcat-fieldname = 'AEGRU'.

wa_fieldcat-tabname = 'IT_CDHDR'.

wa_fieldcat-seltext_m = 'Origin'.

wa_fieldcat-emphasize = 'C110'. APPEND wa_fieldcat TO it_fieldcat.

  • ITEM DATA

  • CLEAR wa_fieldcat. wa_fieldcat-col_pos = 7.

  • wa_fieldcat-fieldname = 'CDSHWIND'.

  • wa_fieldcat-tabname = 'IT_AUSG'.

  • wa_fieldcat-key = 'X'.

  • wa_fieldcat-seltext_m = 'Change type'.

  • wa_fieldcat-EMPHASIZE = 'C600'. APPEND wa_fieldcat TO it_fieldcat.

  • CLEAR wa_fieldcat. wa_fieldcat-col_pos = 8.

    wa_fieldcat-fieldname = 'FTEXT'.

    wa_fieldcat-tabname = 'IT_AUSG'.

    wa_fieldcat-key = 'X'.

    wa_fieldcat-seltext_m = 'Field Changed'.

    wa_fieldcat-EMPHASIZE = 'C400'. APPEND wa_fieldcat TO it_fieldcat.

    CLEAR wa_fieldcat. wa_fieldcat-col_pos = 9.

    wa_fieldcat-fieldname = 'F_OLD'.

    wa_fieldcat-tabname = 'IT_AUSG'.

    wa_fieldcat-seltext_m = 'Old Value'.

    wa_fieldcat-just = 'R'.

    wa_fieldcat-EMPHASIZE = 'C400'. APPEND wa_fieldcat TO it_fieldcat.

    CLEAR wa_fieldcat. wa_fieldcat-col_pos = 10.

    wa_fieldcat-fieldname = 'F_NEW'.

    wa_fieldcat-tabname = 'IT_AUSG'.

    wa_fieldcat-seltext_m = 'New Value'.

    wa_fieldcat-just = 'R'.

    wa_fieldcat-EMPHASIZE = 'C400'.

    APPEND wa_fieldcat TO it_fieldcat.

    • APPEND wa_fieldcat TO it_fieldcat.

    endform. " build_fieldcat

    &----


    *& Form build_layout

    &----


    • text

    ----


    • --> p1 text

    • <-- p2 text

    ----


    form build_layout .

    *to expand the header table for item details

    *COLLAPSED

    it_layout-expand_fieldname = 'EXPAND'.

    CONCATENATE 'Material' s_table-low 'Change History' INTO it_layout-window_titlebar SEPARATED BY space.

    • it_layout-window_titlebar = 'Material Change History'.

    it_layout-lights_tabname = 'IT_AUSG'.

    it_layout-colwidth_optimize = 'X'.

    endform. " build_layout

    &----


    *& Form build_key

    &----


    • text

    ----


    • --> p1 text

    • <-- p2 text

    ----


    form build_key .

    *key infomation for the header and item table

    key-header01 = 'CHANGENR'.

    key-item01 = 'CHANGENR'.

    endform. " build_key

    &----


    *& Form list_display

    &----


    • text

    ----


    • --> p1 text

    • <-- p2 text

    ----


    form list_display .

    *ALV output

    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

    EXPORTING

    i_callback_program = sy-cprog

    is_layout = it_layout

    it_fieldcat = it_fieldcat

    i_tabname_header = 'IT_CDHDR'

    i_tabname_item = 'IT_AUSG'

    is_keyinfo = key

    TABLES

    t_outtab_header = it_cdhdr

    t_outtab_item = it_ausg.

    endform. " list_display

    &----


    *& Form fetch_tabledata

    &----


    • text

    ----


    • --> p1 text

    • <-- p2 text

    ----


    &----


    form getdata.

    DATA: ls_cdhdr type cdhdr.

    DATA archive.

    DATA: lv_return TYPE bapiret2 OCCURS 0,

    lv_address TYPE bapiaddr3.

    DATA: gv_first_name TYPE ad_namefir,

    gv_last_name TYPE ad_namelas.

    DATA: lt_aennr TYPE TABLE OF ccaennr with header line,

    lt_aenr TYPE TABLE OF aenr with header line.

    DATA: nummer LIKE cdhdr-changenr,

    tabname LIKE cdpos-tabname,

    tabkey LIKE cdpos-tabkey.

    objekt ='MATERIAL'.

    objektid = s_table-low .

    CALL FUNCTION 'CHANGEDOCUMENT_READ_HEADERS'

    EXPORTING

    objectclass = objekt

    objectid = objektid

    username = space

    TABLES

    i_cdhdr = icdhdr

    EXCEPTIONS

    no_position_found = 1

    OTHERS = 2.

    LOOP AT icdhdr.

    • move-corresponding icdhdr to wa_cdhdr.

    • get firstname and lastname for username

    CALL FUNCTION 'BAPI_USER_GET_DETAIL'

    EXPORTING

    username = icdhdr-username

    IMPORTING

    address = lv_address

    TABLES

    return = lv_return .

    gv_first_name = lv_address-firstname.

    gv_last_name = lv_address-lastname.

    CONCATENATE gv_first_name gv_last_name INTO icdhdr-username SEPARATED BY space.

    MODIFY icdhdr TRANSPORTING username WHERE username = icdhdr-username.

    CLEAR: gv_first_name , gv_last_name.

    lt_aennr-change_no = icdhdr-planchngnr.

    APPEND lt_aennr.

    CLEAR lt_aennr.

    *get reason n origin for change number

    CALL FUNCTION 'BU_CHANGE_NUMBER_TABLE_READ'

    TABLES

    t_i_aennr = lt_aennr

    t_o_aenr = lt_aenr.

    move-corresponding icdhdr to wa_cdhdr.

    wa_cdhdr-aegru = lt_aenr-aegru.

    wa_cdhdr-aetxt = lt_aenr-aetxt.

    append wa_cdhdr to it_cdhdr.

    CLEAR: wa_cdhdr,icdhdr.

    ENDLOOP.

    LOOP AT it_cdhdr into wa_cdhdr.

    refresh ausg.

    clear ls_cdhdr.

    nummer = wa_cdhdr-CHANGENR.

    • nummer = wa_cdhdr-PLANCHNGNR.

    move-corresponding wa_cdhdr to ls_cdhdr.

    CALL FUNCTION 'CHANGEDOCUMENT_READ_POSITIONS'

    EXPORTING

    changenumber = nummer

    tablename = tabname

    tablekey = tabkey

    IMPORTING

    header = ls_cdhdr

    TABLES

    editpos = ausg

    EXCEPTIONS

    no_position_found = 1

    OTHERS = 2.

    loop at ausg.

    clear wa_ausg.

    move-corresponding ausg to wa_ausg.

    wa_ausg-CHANGENR = wa_cdhdr-CHANGENR.

    append wa_ausg to it_ausg.

    endloop.

    ENDLOOP.

    endform.

    *----