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: 

Tree structure format in report.

Former Member
0 Kudos

Hi all,

I have got a report to develop where in i have to display the ouptut of the report

in a tree structure.Can anybody tell me how to proceed with this ?? This is

basically an interactive report where clicking on one of the node will take us to

another page.

Thanks and Regards.

syed.

6 REPLIES 6

Former Member
0 Kudos

Hi,

You can use tree custom controller to do that, or HTML controller in case of weblinks.

You can see all examples of it in SE38.

see BS* and press F4 , search for tree.

Reward if useful!

0 Kudos

hi,

Does it mean that you have to do an ALV intearctive report and you have to use the function reuse_alv_hier_seq to display the nodes.

thanks

aruna

Former Member
0 Kudos

check this code. this is a sample BOM explosion report...



TABLES : MAST,STPO,MARA,MARC.
INCLUDE <SYMBOL>.

DATA : BEGIN OF I_BOM OCCURS 0.
        INCLUDE STRUCTURE STPOX.

DATA : END OF I_BOM.

DATA : BEGIN OF ITAB OCCURS 0,
       STUFE LIKE STPOX-STUFE,
       IDNRK LIKE STPOX-IDNRK,
       WEGXX LIKE STPOX-WEGXX, "NODE NO
       TTIDX LIKE STPOX-TTIDX, "NODE NO WITH PARENTNODE + 1
       VWEGX LIKE STPOX-VWEGX, "NODE NO OF PARENT
       MENGE LIKE STPOX-MENGE,
       SYMBOL,
       END OF ITAB.
DATA : ITAB1 LIKE ITAB OCCURS 0 WITH HEADER LINE,
       ITAB2 LIKE ITAB OCCURS 0 WITH HEADER LINE.
DATA : V_PARENTID LIKE STPOX-VWEGX,
       V_WEGXX LIKE STPOX-WEGXX,
       V_STUFE LIKE STPOX-STUFE,
       PREV_STUFE LIKE STPOX-STUFE.
DATA : V_OFFSET TYPE I VALUE 1,
       V_CONTENT TYPE I,
       TABIX LIKE SY-TABIX,
       V_TABIX LIKE SY-TABIX,
       T_TABIX LIKE SY-TABIX,
       V_SYMBOL,
       V_LINE LIKE SY-TABIX,
       T_INDEX TYPE I.

DATA :  V_PAGE LIKE SY-PAGNO,
        T_PAGE LIKE SY-PAGNO,
        V_LIN LIKE SY-LILLI.


PARAMETERS : P_MATNR LIKE MAST-MATNR,
             P_WERKS LIKE MARC-WERKS.



PERFORM BOM_EXPLODE.
ITAB1[] = ITAB[].
READ TABLE ITAB1 INDEX 1.
APPEND ITAB1 TO ITAB2.
PERFORM PRINT TABLES ITAB2.
AT LINE-SELECTION.

  V_LIN = SY-LILLI.
  T_PAGE = V_PAGE.
  PREV_STUFE = ITAB2-STUFE.
  V_STUFE = ITAB2-STUFE + 1.
  V_WEGXX = ITAB2-WEGXX.
  V_SYMBOL = ITAB2-SYMBOL.
  IF ITAB2-SYMBOL = '+'.
    ITAB2-SYMBOL = '-'.
    MODIFY ITAB2 INDEX V_TABIX.
  ELSEIF ITAB2-SYMBOL = '-'.
    ITAB2-SYMBOL = '+'.
    MODIFY ITAB2 INDEX V_TABIX.

  ENDIF.


  LOOP AT ITAB WHERE STUFE = V_STUFE AND VWEGX = V_WEGXX.


    V_TABIX = V_TABIX + 1.
    IF V_SYMBOL = '+'.

      MOVE-CORRESPONDING ITAB TO ITAB2.
      ITAB2-SYMBOL = '+'.

      INSERT ITAB2 INDEX V_TABIX.
    ELSEIF V_SYMBOL = '-'.
     IF V_TABIX GT 2.
      LOOP AT ITAB2 FROM V_TABIX WHERE STUFE = PREV_STUFE.
        T_TABIX = SY-TABIX.

        T_TABIX = T_TABIX - 1.
        EXIT.
      ENDLOOP.
       IF V_TABIX LE T_TABIX.

        DELETE ITAB2 FROM V_TABIX TO T_TABIX.
       ELSE.
        LOOP AT ITAB2 FROM V_TABIX.
*          T_TABIX = T_TABIX + 1.
          IF ITAB2-STUFE GT PREV_STUFE.
           DELETE ITAB2 INDEX SY-TABIX.
          ELSE.
            EXIT.
          ENDIF.
        ENDLOOP.
*        DELETE ITAB2 FROM V_TABIX WHERE STUFE LT V_STUFE.

       ENDIF.
       EXIT.

      ELSE.
        DELETE ITAB2 FROM V_TABIX.
        EXIT.
      ENDIF.
    ENDIF.
  ENDLOOP.

  SY-LSIND = 0.
  T_INDEX = 1.
  PERFORM PRINT TABLES ITAB2.
  SCROLL LIST INDEX T_INDEX TO PAGE T_PAGE . " LINE V_LIN .




*&---------------------------------------------------------------------*
*&      Form  BOM_EXPLODE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BOM_EXPLODE .

  CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
    EXPORTING
      CAPID                 = 'PP01'
      DATUV                 = SY-DATUM
      MEHRS                 = 'X'
      MTNRV                 = P_MATNR
      WERKS                 = P_WERKS
    TABLES
      STB                   = I_BOM
    EXCEPTIONS
      ALT_NOT_FOUND         = 1
      CALL_INVALID          = 2
      MATERIAL_NOT_FOUND    = 3
      MISSING_AUTHORIZATION = 4
      NO_BOM_FOUND          = 5
      NO_PLANT_DATA         = 6
      NO_SUITABLE_BOM_FOUND = 7
      CONVERSION_ERROR      = 8
      OTHERS                = 9.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  ITAB-IDNRK = P_MATNR.
  ITAB-MENGE = '1'.
  ITAB-STUFE = '0'.
  ITAB-WEGXX = '0'.
  ITAB-TTIDX = '0'.
  ITAB-VWEGX = '-1'.
  ITAB-SYMBOL = '+'.
  APPEND ITAB.
  CLEAR ITAB.

  LOOP AT I_BOM.
    MOVE-CORRESPONDING I_BOM TO ITAB.
    APPEND ITAB.
    CLEAR ITAB.
  ENDLOOP.

ENDFORM.                    " BOM_EXPLODE
*&---------------------------------------------------------------------*
*&      Form  PRINT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_ITAB1  text
*----------------------------------------------------------------------*
FORM PRINT  TABLES   P_ITAB1 STRUCTURE ITAB.
  DATA : V_ID LIKE STPOX-VWEGX.
  DATA : T_LINE LIKE SY-TABIX,
         V_LINE TYPE I,
         V_HLINE TYPE I.


  DATA : PAGE TYPE I.
  DESCRIBE TABLE P_ITAB1 LINES V_LINE.

  T_LINE = V_LINE - 1.
  LOOP AT P_ITAB1.
    V_OFFSET = P_ITAB1-STUFE * 3.
    V_CONTENT = P_ITAB1-STUFE * 6.

    V_LINE = P_ITAB1-STUFE * 4.
    IF P_ITAB1-STUFE NE 0.
      V_HLINE = V_LINE + 2.
    ELSE.
      V_HLINE = 2.
    ENDIF.

*    T_INDEX = T_INDEX + 1.
    COMPUTE PAGE = SY-TABIX MOD 13.
    IF PAGE EQ 0.
      NEW-PAGE.
      V_PAGE = SY-PAGNO.
*     T_INDEX = 0.
    ENDIF.


    V_TABIX = SY-TABIX.
    IF P_ITAB1-SYMBOL = '+'.

       WRITE : /.

        WRITE AT : V_OFFSET  SYM_PLUS_FOLDER AS SYMBOL
                COLOR 4 INTENSIFIED HOTSPOT.
        WRITE : AT V_CONTENT P_ITAB1-IDNRK,P_ITAB1-MENGE.

      HIDE : P_ITAB1,V_TABIX,V_PAGE.


    ELSEIF P_ITAB1-SYMBOL = '-'.
      WRITE : /.
      WRITE AT V_OFFSET SYM_MINUS_FOLDER AS SYMBOL
                COLOR 4 INTENSIFIED HOTSPOT.

      WRITE : AT V_CONTENT P_ITAB1-IDNRK,P_ITAB1-MENGE.
      HIDE : P_ITAB1,V_TABIX,V_PAGE.


    ENDIF.
  ENDLOOP.

ENDFORM.                    " PRINT

regards

shiba dutta

sharat_chandra
Active Participant
0 Kudos

Hi,

You can use the classes CL_SIMPLE_TREE_MODEL or CL_GUI_ALV_TREE to achieve this. Please look a the example prog's in SLIS package for CL_GUI_ALV_TREE based tree & package SEU_TREE_MODEL for CL_SIMPLE_TREE_MODEL based trees.

Regards,

Sharat.

Former Member
0 Kudos

Hi,

see this example.

REPORT ZRJNTRIAL_TREE LINE-COUNT 65

LINE-SIZE 80

NO STANDARD PAGE

HEADING.

*********************************************************************

DATA: BEGIN OF ITEMS OCCURS 100,

ID(10),

PARENT_ID(10),

TEXT(20),

SYMBOL,

END OF ITEMS,

TABIX_STACK LIKE SY-TABIX OCCURS 10 WITH HEADER LINE,

ITEMS_SHOW LIKE ITEMS OCCURS 100 WITH HEADER LINE.

INCLUDE <SYMBOL>.

  • append sample items (mixed order)

PERFORM APPEND_ITEM USING:

'1' '' 'Food',

'2' '' 'Drinks',

'12' '9' 'Jack Daniels',

'17' '11' 'Bosch',

'3' '' 'Tools',

'4' '1' 'Meat',

'16' '11' 'Metabo',

'5' '1' 'Chocolate',

'6' '2' 'Alcoholic',

'8' '4' 'Pork',

'10' '5' 'Milka',

'11' '3' 'Drills',

'13' '9' 'Jim Beam',

'7' '4' 'Beef',

'14' '2' 'Non-alcoholic',

'35' '31' 'Teran',

'9' '6' 'Whiskey',

'15' '14' 'Coca-cola',

'18' '6' 'Wine',

'28' '18' 'Croatia',

'33' '28' 'Slavonia',

'34' '28' 'Istria',

'29' '18' 'Hungary',

'30' '29' 'Tokaj',

'19' '33' 'Enjingi',

'20' '33' 'Zdjelarevic',

'22' '19' 'Riesling',

'23' '19' 'Chardonnay',

'24' '20' 'Riesling',

'32' '31' 'Malvazija',

'25' '20' 'Merlot',

'31' '34' 'Tomasevic'.

  • show initial list (items with level 0 - parentless items)

LOOP AT ITEMS WHERE PARENT_ID = ''.

MOVE-CORRESPONDING ITEMS TO ITEMS_SHOW.

ITEMS_SHOW-SYMBOL = '+'.

APPEND ITEMS_SHOW.

ENDLOOP.

PERFORM PRINT_TREE TABLES ITEMS_SHOW.

  • at line-selection - when the node is opened/closed or item double-clk

AT LINE-SELECTION.

READ TABLE ITEMS WITH KEY PARENT_ID = ITEMS_SHOW-ID. "see 'hide'

IF SY-SUBRC = 0. "item has children - expand or collapse

SY-LSIND = 0.

PERFORM EXPAND_COLLAPSE USING ITEMS_SHOW-ID.

PERFORM PRINT_TREE TABLES ITEMS_SHOW.

ELSE. "item has NO children - perform some action

READ TABLE ITEMS WITH KEY ID = ITEMS_SHOW-ID.

WRITE: 'Action performed on item "' NO-GAP, ITEMS-TEXT NO-GAP,

'", id.', ITEMS-ID.

ENDIF.

  • form print_tree

FORM PRINT_TREE TABLES ITEMS STRUCTURE ITEMS.

DATA: V_TABIX LIKE SY-TABIX,

START_TABIX LIKE SY-TABIX,

V_LEVEL LIKE SY-TFILL,

V_OFFSET TYPE I,

V_ID LIKE ITEMS-ID,

V_PARENT_ID LIKE ITEMS-PARENT_ID,

V_PARENT_ID_FOR_VLINE LIKE ITEMS-PARENT_ID,

V_PREV_LEVEL TYPE I,

V_ITEMS_COUNT LIKE SY-TFILL,

V_VLINES_STRING(200).

CHECK NOT ITEMS[] IS INITIAL.

SORT ITEMS BY PARENT_ID ID.

READ TABLE ITEMS INDEX 1.

V_PARENT_ID = ITEMS-PARENT_ID.

START_TABIX = 1.

REFRESH TABIX_STACK.

DO.

LOOP AT ITEMS FROM START_TABIX.

V_TABIX = START_TABIX = SY-TABIX."remember current index

V_ID = ITEMS-ID.

V_PARENT_ID_FOR_VLINE = ITEMS-PARENT_ID.

  • decrease level and exit loop if parent not the same as previous

IF ITEMS-PARENT_ID NE V_PARENT_ID.

PERFORM READ_FROM_STACK CHANGING START_TABIX. "level = NoOfRecs

READ TABLE ITEMS INDEX START_TABIX.

V_PARENT_ID = ITEMS-PARENT_ID.

ADD 1 TO START_TABIX. "next loop starts from parent index + 1

  • clear vline

IF V_LEVEL > 1.

V_OFFSET = 2 + ( V_LEVEL - 2 ) * 3.

IF V_LEVEL = 1. V_OFFSET = 1. ENDIF.

V_VLINES_STRING+V_OFFSET = ' '.

ENDIF.

EXIT.

ENDIF.

V_PARENT_ID = ITEMS-PARENT_ID.

  • write item

FORMAT COLOR OFF.

DESCRIBE TABLE TABIX_STACK LINES V_LEVEL."level is no of StackRecs

WRITE: / V_VLINES_STRING.

V_OFFSET = V_LEVEL * 3.

IF V_LEVEL NE 0.

IF V_PREV_LEVEL < V_LEVEL.

WRITE: AT V_OFFSET '|', / ''.

WRITE: / V_VLINES_STRING.

ENDIF.

V_OFFSET = V_LEVEL * 3.

WRITE AT V_OFFSET '|--'.

ENDIF.

V_OFFSET = V_OFFSET + 3.

CASE ITEMS-SYMBOL.

WHEN '+'.

WRITE AT V_OFFSET SYM_PLUS_FOLDER AS SYMBOL

COLOR 4 INTENSIFIED HOTSPOT.

WHEN '-'.

WRITE AT V_OFFSET SYM_MINUS_FOLDER AS SYMBOL

COLOR 4 INTENSIFIED HOTSPOT.

WHEN OTHERS. FORMAT COLOR 5.

ENDCASE.

WRITE: ITEMS-TEXT.

V_PREV_LEVEL = V_LEVEL.

HIDE: ITEMS-ID.

ADD 1 TO V_ITEMS_COUNT.

READ TABLE ITEMS WITH KEY PARENT_ID = ITEMS-ID.

  • increase level and exit loop if item has children

IF SY-SUBRC = 0.

START_TABIX = SY-TABIX.

APPEND V_TABIX TO TABIX_STACK. "level is no of recs in stack

V_PARENT_ID = ITEMS-PARENT_ID.

  • set vline

V_TABIX = V_TABIX + 1.

READ TABLE ITEMS INDEX V_TABIX.

V_OFFSET = 2 + ( V_LEVEL - 1 ) * 3.

IF V_LEVEL > 0.

IF ITEMS-PARENT_ID = V_PARENT_ID_FOR_VLINE AND SY-SUBRC = 0.

V_VLINES_STRING+V_OFFSET = '|'.

ELSE.

V_VLINES_STRING+V_OFFSET = ' '.

ENDIF.

ENDIF.

EXIT.

ENDIF.

  • at last - decrease level

AT LAST.

  • clear vline

IF V_LEVEL > 1.

V_OFFSET = 2 + ( V_LEVEL - 2 ) * 3.

IF V_LEVEL = 1. V_OFFSET = 1. ENDIF.

V_VLINES_STRING+V_OFFSET = ' '.

ENDIF.

" next loop starts from parent index, not parent index + 1

" because of different parents level will decrease anyway

PERFORM READ_FROM_STACK CHANGING START_TABIX.

APPEND START_TABIX TO TABIX_STACK. "must return index to stack

ENDAT.

ENDLOOP.

DESCRIBE TABLE ITEMS.

IF START_TABIX > SY-TFILL OR V_ITEMS_COUNT >= SY-TFILL.

EXIT.

ENDIF.

ENDDO.

ENDFORM.

  • form expand_collapse

FORM EXPAND_COLLAPSE USING VALUE(V_ID).

DATA: V_NO_MORE_ORPHANS,

ITEMS_TEMP LIKE ITEMS OCCURS 100 WITH HEADER LINE.

DELETE ITEMS_SHOW WHERE PARENT_ID = V_ID. "try to collapse

IF SY-SUBRC = 0. "succesfull first collapse

DO. "cascade collapse - delete 'orphans' that are left

REFRESH ITEMS_TEMP.

MOVE ITEMS_SHOW[] TO ITEMS_TEMP[].

SORT ITEMS_TEMP BY ID.

V_NO_MORE_ORPHANS = 'X'.

LOOP AT ITEMS_SHOW WHERE PARENT_ID NE ''.

READ TABLE ITEMS_TEMP WITH KEY ID = ITEMS_SHOW-PARENT_ID

BINARY SEARCH TRANSPORTING NO FIELDS.

IF SY-SUBRC NE 0. "no parent - it's an orphan

CLEAR V_NO_MORE_ORPHANS.

DELETE ITEMS_SHOW.

ENDIF.

ENDLOOP.

IF V_NO_MORE_ORPHANS = 'X'. EXIT. ENDIF.

ENDDO.

ITEMS_SHOW-SYMBOL = '+'.

MODIFY ITEMS_SHOW TRANSPORTING SYMBOL WHERE ID = V_ID.

ELSE. "unsuccessfull collapse - expand

ITEMS_SHOW-SYMBOL = '-'.

MODIFY ITEMS_SHOW TRANSPORTING SYMBOL WHERE ID = V_ID.

LOOP AT ITEMS WHERE PARENT_ID = V_ID. "show children

APPEND ITEMS TO ITEMS_SHOW.

ENDLOOP.

LOOP AT ITEMS_SHOW WHERE PARENT_ID = V_ID. "check grandchildren

READ TABLE ITEMS WITH KEY PARENT_ID = ITEMS_SHOW-ID.

IF SY-SUBRC = 0.

ITEMS_SHOW-SYMBOL = '+'.

ELSE.

ITEMS_SHOW-SYMBOL = ''.

ENDIF.

MODIFY ITEMS_SHOW.

ENDLOOP.

ENDIF.

ENDFORM.

  • form append_item

FORM APPEND_ITEM USING VALUE(ID) VALUE(PARENT_ID) VALUE(TEXT).

ITEMS-ID = ID.

ITEMS-PARENT_ID = PARENT_ID.

ITEMS-TEXT = TEXT.

APPEND ITEMS.

ENDFORM.

  • form read_from_stack

FORM READ_FROM_STACK CHANGING TABIX LIKE SY-TABIX.

DESCRIBE TABLE TABIX_STACK.

CHECK SY-TFILL NE 0.

READ TABLE TABIX_STACK INDEX SY-TFILL.

TABIX = TABIX_STACK.

DELETE TABIX_STACK INDEX SY-TFILL.

ENDFORM.

<b>reward if helpful</b>

rgds,

bharat.

Former Member
0 Kudos

HI

Refer this code.

REPORT YMS_ALVTREEDEMO .

*Data Declaration

*----


TABLES: ekko.

TYPE-POOLS: slis. "ALV Declarations

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,

it_ekpo TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

it_emptytab TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko,

wa_ekpo TYPE t_ekko.

DATA: ok_code like sy-ucomm, "OK-Code

save_ok like sy-ucomm.

*ALV data declarations

DATA: fieldcatalog TYPE lvc_t_fcat WITH HEADER LINE.

DATA: gd_fieldcat TYPE lvc_t_fcat,

gd_tab_group TYPE slis_t_sp_group_alv,

gd_layout TYPE slis_layout_alv.

*ALVtree data declarations

CLASS cl_gui_column_tree DEFINITION LOAD.

CLASS cl_gui_cfw DEFINITION LOAD.

DATA: gd_tree TYPE REF TO cl_gui_alv_tree,

gd_hierarchy_header TYPE treev_hhdr,

gd_report_title TYPE slis_t_listheader,

gd_logo TYPE sdydo_value,

gd_variant TYPE disvariant.

*Create container for alv-tree

DATA: l_tree_container_name(30) TYPE c,

l_custom_container TYPE REF TO cl_gui_custom_container.

************************************************************************

*Includes

*INCLUDE ZDEMO_ALVTREEO01. "Screen PBO Modules

*INCLUDE ZDEMO_ALVTREEI01. "Screen PAI Modules

*INCLUDE ZDEMO_ALVTREEF01. "ABAP Subroutines(FORMS)

************************************************************************

*Start-of-selection.

START-OF-SELECTION.

  • ALVtree setup data

PERFORM data_retrieval.

PERFORM build_fieldcatalog.

PERFORM build_layout.

PERFORM build_hierarchy_header CHANGING gd_hierarchy_header.

PERFORM build_report_title USING gd_report_title gd_logo.

PERFORM build_variant.

  • Display ALVtree report

  • call screen 100.

&----


*& Form DATA_RETRIEVAL

&----


  • Retrieve data into Internal tables

----


FORM data_retrieval.

SELECT ebeln

UP TO 10 ROWS

FROM ekko

INTO corresponding fields of TABLE it_ekko.

loop at it_ekko into wa_ekko.

SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh

FROM ekpo

appending TABLE it_ekpo

where ebeln eq wa_ekko-ebeln.

endloop.

ENDFORM. " DATA_RETRIEVAL

&----


*& Form BUILD_FIELDCATALOG

&----


  • Build Fieldcatalog for ALV Report

----


FORM build_fieldcatalog.

  • Please not there are a number of differences between the structure of

  • ALVtree fieldcatalogs and ALVgrid fieldcatalogs.

  • For example the field seltext_m is replace by scrtext_m in ALVtree.

fieldcatalog-fieldname = 'EBELN'. "Field name in itab

fieldcatalog-scrtext_m = 'Purchase Order'. "Column text

fieldcatalog-col_pos = 0. "Column position

fieldcatalog-outputlen = 15. "Column width

fieldcatalog-emphasize = 'X'. "Emphasize (X or SPACE)

fieldcatalog-key = 'X'. "Key Field? (X or SPACE)

  • fieldcatalog-do_sum = 'X'. "Sum Column?

  • fieldcatalog-no_zero = 'X'. "Don't display if zero

APPEND fieldcatalog TO gd_fieldcat.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-scrtext_m = 'PO Iten'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 1.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'STATU'.

fieldcatalog-scrtext_m = 'Status'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 2.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-scrtext_m = 'Item change date'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 3.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-scrtext_m = 'Material Number'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 4.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-scrtext_m = 'PO quantity'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 5.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MEINS'.

fieldcatalog-scrtext_m = 'Order Unit'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 6.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'NETPR'.

fieldcatalog-scrtext_m = 'Net Price'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 7.

fieldcatalog-datatype = 'CURR'.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'PEINH'.

fieldcatalog-scrtext_m = 'Price Unit'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 8.

APPEND fieldcatalog TO gd_fieldcat..

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 build_hierarchy_header

&----


  • build hierarchy-header-information

----


  • -->P_L_HIERARCHY_HEADER structure for hierarchy-header

----


FORM build_hierarchy_header CHANGING

p_hierarchy_header TYPE treev_hhdr.

p_hierarchy_header-heading = 'Hierarchy Header'(013).

p_hierarchy_header-tooltip = 'This is the Hierarchy Header !'(014).

p_hierarchy_header-width = 30.

p_hierarchy_header-width_pix = ''.

ENDFORM. " build_hierarchy_header

&----


*& Form BUILD_REPORT_TITLE

&----


  • Build table for ALVtree header

----


  • <-> p1 Header details

  • <-> p2 Logo value

----


FORM build_report_title CHANGING

pt_report_title TYPE slis_t_listheader

pa_logo TYPE sdydo_value.

DATA: ls_line TYPE slis_listheader,

ld_date(10) TYPE c.

  • List Heading Line(TYPE H)

CLEAR ls_line.

ls_line-typ = 'H'.

  • ls_line-key "Not Used For This Type(H)

ls_line-info = 'PO ALVTree Display'.

APPEND ls_line TO pt_report_title.

  • Status Line(TYPE S)

ld_date(2) = sy-datum+6(2).

ld_date+2(1) = '/'.

ld_date3(2) = sy-datum4(2).

ld_date+5(1) = '/'.

ld_date+6(4) = sy-datum(4).

ls_line-typ = 'S'.

ls_line-key = 'Date'.

ls_line-info = ld_date.

APPEND ls_line TO pt_report_title.

  • Action Line(TYPE A)

CLEAR ls_line.

ls_line-typ = 'A'.

CONCATENATE 'Report: ' sy-repid INTO ls_line-info SEPARATED BY space.

APPEND ls_line TO pt_report_title.

ENDFORM.

&----


*& Form BUILD_VARIANT

&----


  • Build variant

----


form build_variant.

  • Set repid for storing variants

gd_variant-report = sy-repid.

endform. " BUILD_VARIANT

Check these programs.

e.g

BCALV_TREE_01 ALV tree control: build up the hierarchy tree

BCALV_TREE_02 ALV tree control: event handling

BCALV_TREE_03 ALV tree control: use an own context menu

BCALV_TREE_04 ALV tree control: add a button to the toolbar

BCALV_TREE_05 ALV tree control: add a menu to the toolbar

BCALV_TREE_06 ALV tree control: Icon column and icon for nodes/items

BCALV_TREE_DEMO Demo for ALV tree control

BCALV_TREE_DND ALV tree control: Drag & Drop within a hierarchy tree

BCALV_TREE_DND_MULTIPLE ALV tree control: Drag & Drop within a hierarchy tree

RSDEMO_DRAG_DROP_TREE_MULTI

BCALV_TREE_EVENT_RECEIVER Include BCALV_TREE_EVENT_RECEIVER

BCALV_TREE_EVENT_RECEIVER01

BCALV_TREE_ITEMLAYOUT ALV Tree: Change Item Layouts at Runtime

BCALV_TREE_MOVE_NODE_TEST Demo for ALV tree control

BCALV_TREE_SIMPLE_DEMO Program BCALV_TREE_SIMPLE_DEMO

BCALV_TREE_VERIFY Verifier for ALV Tree and Simple ALV Tree

Reward all helpfull answers.

Regards.

Jay