Application Development and Automation 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: 
Read only

ALV

Former Member
0 Likes
735

Give any simple pgm for ALV block list or tree view list.

1 ACCEPTED SOLUTION
Read only

0 Likes
708

for the block list go through the follwing program.


type-pools:slis.
tables:vbak,vbap.
data:begin of it_vbak occurs 0,
vbeln like vbak-vbeln,
audat like vbak-audat,
auart like vbak-auart,
erdat like vbak-erdat,
netwr like vbak-netwr,
end of it_vbak.
data:begin of it_vbap occurs 0,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
matnr like vbap-matnr,
matkl like vbap-matkl,
end of it_vbap.
data:it_fieldcat1 type slis_t_fieldcat_alv with header line,
wa_fieldact1 type slis_fieldcat_alv.
data:it_fieldcat2 type slis_t_fieldcat_alv with header line,
wa_fieldcat2 type slis_fieldcat_alv.
data:wa_layout type slis_layout_alv.
data:it_event type slis_t_event.
select-options:
s_vbeln for vbak-vbeln.
start-of-selection.
select  vbeln audat auart erdat netwr from vbak
into table it_vbak
where vbeln in s_vbeln.
select vbeLn posnr matnr matkl from vbap into table it_vbap
where vbeln in s_vbeln.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
   I_PROGRAM_NAME               = sy-cprog
   I_INTERNAL_TABNAME           = 'IT_VBAK'
*   I_STRUCTURE_NAME             =
*   I_CLIENT_NEVER_DISPLAY       = 'X'
   I_INCLNAME                   = sy-cprog
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    ct_fieldcat                  = it_fieldcat1[]
 EXCEPTIONS
   INCONSISTENT_INTERFACE       = 1
   PROGRAM_ERROR                = 2
   OTHERS                       = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
   I_PROGRAM_NAME               = sy-cprog
   I_INTERNAL_TABNAME           = 'IT_VBAP'
*   I_STRUCTURE_NAME             =
*   I_CLIENT_NEVER_DISPLAY       = 'X'
   I_INCLNAME                   = sy-cprog
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    ct_fieldcat                  = it_fieldcat2[]
 EXCEPTIONS
   INCONSISTENT_INTERFACE       = 1
   PROGRAM_ERROR                = 2
   OTHERS                       = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.



CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
  EXPORTING
    i_callback_program             = sy-cprog
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
*   IT_EXCLUDING                   =
          .

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    is_layout                        = wa_layout
    it_fieldcat                      = it_fieldcat1[]
    i_tabname                        = 'IT_VBAK'
    it_events                        = IT_EVENT
*   IT_SORT                          =
*   I_TEXT                           = ' '
  tables
    t_outtab                         = it_vbak
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 2
*   OTHERS                           = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    is_layout                        = wa_layout
    it_fieldcat                      = it_fieldcat2[]
    i_tabname                        = 'IT_VBAP'
    it_events                        = IT_EVENT
*   IT_SORT                          =
*   I_TEXT                           = ' '
  tables
    t_outtab                         = IT_VBAP
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 2
*   OTHERS                           = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
*   I_INTERFACE_CHECK             = ' '
*   IS_PRINT                      =
*   I_SCREEN_START_COLUMN         = 0
*   I_SCREEN_START_LINE           = 0
*   I_SCREEN_END_COLUMN           = 0
*   I_SCREEN_END_LINE             = 0
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER       =
*   ES_EXIT_CAUSED_BY_USER        =
 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.

<b>if helpful reward some points.</b>

6 REPLIES 6
Read only

andreas_mann3
Active Contributor
0 Likes
708

goto se38 - environment - reuse library

A.

Read only

0 Likes
709

for the block list go through the follwing program.


type-pools:slis.
tables:vbak,vbap.
data:begin of it_vbak occurs 0,
vbeln like vbak-vbeln,
audat like vbak-audat,
auart like vbak-auart,
erdat like vbak-erdat,
netwr like vbak-netwr,
end of it_vbak.
data:begin of it_vbap occurs 0,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
matnr like vbap-matnr,
matkl like vbap-matkl,
end of it_vbap.
data:it_fieldcat1 type slis_t_fieldcat_alv with header line,
wa_fieldact1 type slis_fieldcat_alv.
data:it_fieldcat2 type slis_t_fieldcat_alv with header line,
wa_fieldcat2 type slis_fieldcat_alv.
data:wa_layout type slis_layout_alv.
data:it_event type slis_t_event.
select-options:
s_vbeln for vbak-vbeln.
start-of-selection.
select  vbeln audat auart erdat netwr from vbak
into table it_vbak
where vbeln in s_vbeln.
select vbeLn posnr matnr matkl from vbap into table it_vbap
where vbeln in s_vbeln.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
   I_PROGRAM_NAME               = sy-cprog
   I_INTERNAL_TABNAME           = 'IT_VBAK'
*   I_STRUCTURE_NAME             =
*   I_CLIENT_NEVER_DISPLAY       = 'X'
   I_INCLNAME                   = sy-cprog
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    ct_fieldcat                  = it_fieldcat1[]
 EXCEPTIONS
   INCONSISTENT_INTERFACE       = 1
   PROGRAM_ERROR                = 2
   OTHERS                       = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
   I_PROGRAM_NAME               = sy-cprog
   I_INTERNAL_TABNAME           = 'IT_VBAP'
*   I_STRUCTURE_NAME             =
*   I_CLIENT_NEVER_DISPLAY       = 'X'
   I_INCLNAME                   = sy-cprog
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    ct_fieldcat                  = it_fieldcat2[]
 EXCEPTIONS
   INCONSISTENT_INTERFACE       = 1
   PROGRAM_ERROR                = 2
   OTHERS                       = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.



CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
  EXPORTING
    i_callback_program             = sy-cprog
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
*   IT_EXCLUDING                   =
          .

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    is_layout                        = wa_layout
    it_fieldcat                      = it_fieldcat1[]
    i_tabname                        = 'IT_VBAK'
    it_events                        = IT_EVENT
*   IT_SORT                          =
*   I_TEXT                           = ' '
  tables
    t_outtab                         = it_vbak
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 2
*   OTHERS                           = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    is_layout                        = wa_layout
    it_fieldcat                      = it_fieldcat2[]
    i_tabname                        = 'IT_VBAP'
    it_events                        = IT_EVENT
*   IT_SORT                          =
*   I_TEXT                           = ' '
  tables
    t_outtab                         = IT_VBAP
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 2
*   OTHERS                           = 3
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
*   I_INTERFACE_CHECK             = ' '
*   IS_PRINT                      =
*   I_SCREEN_START_COLUMN         = 0
*   I_SCREEN_START_LINE           = 0
*   I_SCREEN_END_COLUMN           = 0
*   I_SCREEN_END_LINE             = 0
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER       =
*   ES_EXIT_CAUSED_BY_USER        =
 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.

<b>if helpful reward some points.</b>

Read only

Former Member
0 Likes
708

*Pool Diclarations

type-pools:slis.

tables:vbak,

vbap.

data:begin of gt_vbak occurs 0,

vbeln like vbak-vbeln,

erdat like vbak-erdat,

end of gt_vbak.

data: gt_fieldcat type slis_t_fieldcat_alv,

wa_fieldcat type slis_fieldcat_alv,

g_repid like sy-repid.

select-options:s_vbeln for vbak-vbeln.

start-of-selection.

perform select_vbak.

perform build_fld_ctlg.

perform disp.

&----


*& Form select_vbak

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form select_vbak .

select

vbeln

erdat

from vbak into table gt_vbak

where vbeln in s_vbeln.

endform. " select_vbak

&----


*& Form build_fld_ctlg

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form build_fld_ctlg .

call function 'REUSE_ALV_FIELDCATALOG_MERGE'

exporting

i_program_name = g_repid

i_internal_tabname = 'GT_VBAK'

  • I_STRUCTURE_NAME = I_STRUCTURE_NAME

  • I_CLIENT_NEVER_DISPLAY = 'X'

i_inclname = g_repid

  • I_BYPASSING_BUFFER = I_BYPASSING_BUFFER

  • I_BUFFER_ACTIVE = I_BUFFER_ACTIVE

changing

ct_fieldcat = gt_fieldcat

exceptions

inconsistent_interface = 1

program_error = 2

others = 3

.

if sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

endform. " build_fld_ctlg

&----


*& Form disp

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form disp .

call function 'REUSE_ALV_BLOCK_LIST_DISPLAY'

  • EXPORTING

  • I_INTERFACE_CHECK = ' '

  • IS_PRINT = IS_PRINT

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

  • 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. " disp

Read only

Former Member
0 Likes
708

Hi,

Please check these links which contain all examples with different scenarios -

Hope this helps.

ashish

Read only

Former Member
0 Likes
708

Hi,hv a look on the following code


TABLES: LFA1,EKKO.

DATA:  BEGIN OF ITAB OCCURS 0,
       LIFNR LIKE LFA1-LIFNR,
       NAME1 LIKE LFA1-NAME1,
       ORT01 LIKE LFA1-ORT01,
       LAND1 LIKE LFA1-LAND1,
       REGIO LIKE LFA1-REGIO,
       END OF ITAB.

DATA:  BEGIN OF JTAB OCCURS 0,
       LIFNR LIKE EKKO-LIFNR,
       EBELN LIKE EKKO-EBELN,
       BUKRS LIKE EKKO-BUKRS,
       BSTYP LIKE EKKO-BSTYP,
       EKORG LIKE EKKO-EKORG,
       BSART LIKE EKKO-BSART,
       END OF JTAB.

SELECT * FROM LFA1 INTO CORRESPONDING FIELDS OF TABLE ITAB UP TO 5 ROWS.

SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE JTAB UP TO 5 ROWS.

TYPE-POOLS: SLIS.

DATA:  LAYOUT TYPE SLIS_LAYOUT_ALV,
       HEADER TYPE SLIS_T_LISTHEADER WITH HEADER LINE,
       FLDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
       FLDCAT2 TYPE SLIS_T_FIELDCAT_ALV,
       EVE1 TYPE SLIS_T_EVENT WITH HEADER LINE,
       EVE2 TYPE SLIS_T_EVENT WITH HEADER LINE.

LAYOUT-ZEBRA = 'X'.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
LAYOUT-WINDOW_TITLEBAR = 'BLOCKED ALV'.

EVE2-NAME = 'TOP_OF_PAGE'.
EVE2-FORM = 'TOP_OF_PAGE1'.
APPEND EVE2.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
 EXPORTING
   I_LIST_TYPE           = 0
 IMPORTING
   ET_EVENTS             = EVE1[]
* EXCEPTIONS
*   LIST_TYPE_WRONG       = 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.

READ TABLE EVE1 WITH KEY NAME = 'TOP_OF_PAGE'.
EVE1-FORM = 'TOP_OF_PAGE'.
MODIFY EVE1 TRANSPORTING FORM WHERE NAME = 'TOP_OF_PAGE'.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
  EXPORTING
    I_CALLBACK_PROGRAM             = SY-REPID
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
*   IT_EXCLUDING                   =
          .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
   I_PROGRAM_NAME               = SY-REPID
   I_INTERNAL_TABNAME           = 'ITAB'
*   I_STRUCTURE_NAME             =
*   I_CLIENT_NEVER_DISPLAY       = 'X'
   I_INCLNAME                   = SY-REPID
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    CT_FIELDCAT                  = FLDCAT1
* EXCEPTIONS
*   INCONSISTENT_INTERFACE       = 1
*   PROGRAM_ERROR                = 2
*   OTHERS                       = 3
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    IS_LAYOUT                        = LAYOUT
    IT_FIELDCAT                      = FLDCAT1
    I_TABNAME                        = 'ITAB'
    IT_EVENTS                        = EVE1[]
*   IT_SORT                          =
*   I_TEXT                           = ' '
  TABLES
    T_OUTTAB                         = ITAB
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 2
*   OTHERS                           = 3
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
   I_PROGRAM_NAME               = SY-REPID
   I_INTERNAL_TABNAME           = 'JTAB'
*   I_STRUCTURE_NAME             =
*   I_CLIENT_NEVER_DISPLAY       = 'X'
   I_INCLNAME                   = SY-REPID
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    CT_FIELDCAT                  = FLDCAT2
* EXCEPTIONS
*   INCONSISTENT_INTERFACE       = 1
*   PROGRAM_ERROR                = 2
*   OTHERS                       = 3
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    IS_LAYOUT                        = LAYOUT
    IT_FIELDCAT                      = FLDCAT2
    I_TABNAME                        = 'JTAB'
    IT_EVENTS                        = EVE2[]
*   IT_SORT                          =
*   I_TEXT                           = ' '
  TABLES
    T_OUTTAB                         = JTAB
* EXCEPTIONS
*   PROGRAM_ERROR                    = 1
*   MAXIMUM_OF_APPENDS_REACHED       = 2
*   OTHERS                           = 3
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
*   I_INTERFACE_CHECK             = ' '
*   IS_PRINT                      =
*   I_SCREEN_START_COLUMN         = 0
*   I_SCREEN_START_LINE           = 0
*   I_SCREEN_END_COLUMN           = 0
*   I_SCREEN_END_LINE             = 0
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER       =
*   ES_EXIT_CAUSED_BY_USER        =
* 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 TOP_OF_PAGE.
REFRESH HEADER.
HEADER-TYP = 'H'.
HEADER-INFO = 'VENDOR DETAILS'.
APPEND HEADER.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = HEADER[]
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
*   I_ALV_FORM               =
          .
ENDFORM.

FORM TOP_OF_PAGE1.
REFRESH HEADER.
HEADER-TYP = 'H'.
HEADER-INFO = 'PURCHASE DOCUMENTS DETAILS'.
APPEND HEADER.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = HEADER[]
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
*   I_ALV_FORM               =
          .
ENDFORM.

reward,if it is helpful

Read only

Former Member
0 Likes
708

Hi Khanna,

Try this...

&----


*& Report ZDEMO_ALVTREE *

*& *

&----


*& *

*& Example of a simple ALV Grid Report *

*& ................................... *

*& *

*& The basic requirement for this demo is to display a number of *

*& fields from the EKPO and EKKO table in a tree structure. *

*& *

&----


  • Amendment History *

----


REPORT zdemo_alvgrid .

*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

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

*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.

  • Screen flow logic code

PROCESS BEFORE OUTPUT.

MODULE STATUS_0100.

*

PROCESS AFTER INPUT.

MODULE USER_COMMAND_0100.

----


***INCLUDE Z......O01 .

----


&----


*& Module STATUS_0100 OUTPUT

&----


  • PBO Module

----


module status_0100 output.

  • SET PF-STATUS 'xxxxxxxx'.

  • SET TITLEBAR 'xxx'.

endmodule. " STATUS_0100 OUTPUT

----


***INCLUDE Z......I01 .

----


&----


*& Module USER_COMMAND_0100 INPUT

&----


  • PAI Module

----


module user_command_0100 input.

endmodule. " USER_COMMAND_0100 INPUT

----


  • INCLUDE Z......I01 *

----


&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


module user_command_0100 input.

DATA return TYPE REF TO cl_gui_event.

save_ok = ok_code.

case ok_code.

when 'BACK' or '%EX' or 'RW'.

  • Exit program

leave to screen 0.

  • Process ALVtree user actions

when others.

call method cl_gui_cfw=>get_current_event_object

receiving

event_object = return.

call method cl_gui_cfw=>dispatch.

endcase.

endmodule. " USER_COMMAND_0100 INPUT

  • Add following code to 'STATUS_0100'(PBO module)

----


  • Create container for alv-tree

PERFORM create_alvtree_container.

  • Add following code to 'Z......F01' INCLUDE

----


&----


*& Form CREATE_ALVTREE_CONTAINER

&----


  • Create container for alv-tree

----


FORM create_alvtree_container.

gd_tree_container_name = 'SCREEN_CONTAINER'.

create object gd_custom_container

exporting

container_name = gd_tree_container_name

exceptions

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5.

if sy-subrc <> 0.

message x208(00) with 'ERROR'.

endif.

ENDFORM.

  • Add following code to 'STATUS_0100'(PBO module)

----


  • Create tree control

PERFORM create_object_in_container.

  • Add following code to 'Z......F01' INCLUDE

----


&----


*& Form CREATE_OBJECT_IN_CONTAINER

&----


  • Create ALVtree control

----


FORM create_object_in_container.

create object gd_tree

exporting

parent = gd_custom_container

node_selection_mode = cl_gui_column_tree=>node_sel_mode_single

item_selection = 'X'

no_html_header = ''

no_toolbar = ''

exceptions

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

illegal_node_selection_mode = 5

failed = 6

illegal_column_name = 7.

if sy-subrc <> 0.

message x208(00) with 'ERROR'.

endif.

ENDFORM.

  • Add following code to 'STATUS_0100'(PBO module)

----


  • Create empty ALVtree control ready for first display

PERFORM create_empty_alvtree_control.

  • Add following code to 'Z......F01' INCLUDE

----


&----


*& Form CREATE_EMPTY_ALVTREE_CONTROL

&----


  • Create empty tree control

----


FORM create_empty_alvtree_control.

  • Create emty tree-control

CLEAR: it_emptytab.

REFRESH: it_emptytab.

CALL METHOD gd_tree->set_table_for_first_display

EXPORTING

is_hierarchy_header = gd_hierarchy_header

it_list_commentary = gd_report_title

i_logo = gd_logo

  • i_background_id = 'ALV_BACKGROUND'

i_save = 'A'

is_variant = gd_variant

CHANGING

it_outtab = it_emptytab "Must be empty

it_fieldcatalog = gd_fieldcat.

ENDFORM. " CREATE_EMPTY_ALVTREE_CONTROL

  • Add following code to 'STATUS_0100'(PBO module)

----


  • Create ALVtree Hierarchy

PERFORM create_alvtree_hierarchy.

  • Add following code to 'Z......F01' INCLUDE

----


&----


*& Form CREATE_ALVTREE_HIERARCHY

&----


  • text

----


  • Builds ALV tree display, (inserts nodes, subnodes etc)

----


form create_alvtree_hierarchy.

data: ls_sflight type sflight,

lt_sflight type sflight occurs 0.

data: ld_ebeln_key type lvc_nkey,

ld_ebelp_key type lvc_nkey.

loop at it_ekko into wa_ekko.

perform add_ekko_node using wa_ekko

''

changing ld_ebeln_key.

loop at it_ekpo into wa_ekpo where ebeln eq wa_ekko-ebeln.

perform add_ekpo_line using wa_ekpo

ld_ebeln_key

changing ld_ebelp_key.

endloop.

endloop.

  • calculate totals

call method gd_tree->update_calculations.

  • this method must be called to send the data to the frontend

call method gd_tree->frontend_update.

endform. " CREATE_ALVTREE_HIERARCHY

&----


*& Form ADD_EKKO_NODE

&----


  • text

----


  • -->P_WA_EKPO text

  • -->P_0553 text

  • <--P_EBELN_KEY text

----


form add_ekko_node using ps_ekko like wa_ekko

value(p_relate_key)

changing p_node_key.

data: ld_node_text type lvc_value,

ls_sflight type sflight.

  • Set item-layout

data: lt_item_layout type lvc_t_layi,

ls_item_layout type lvc_s_layi.

ls_item_layout-t_image = '@3P@'.

ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.

ls_item_layout-style = cl_gui_column_tree=>style_default.

ld_node_text = ps_ekko-ebeln.

append ls_item_layout to lt_item_layout.

  • Add node

call method gd_tree->add_node

exporting

i_relat_node_key = p_relate_key

i_relationship = cl_gui_column_tree=>relat_last_child

i_node_text = ld_node_text

is_outtab_line = ps_ekko

it_item_layout = lt_item_layout

importing

e_new_node_key = p_node_key.

endform. " ADD_EKKO_NODE

&----


*& Form ADD_EKPO_LINE

&----


  • text

----


  • -->P_WA_EKPO text

  • -->P_LD_EBELN_KEY text

  • <--P_LD_EBELP_KEY text

----


form add_ekpo_line using ps_ekpo like wa_ekpo

value(p_relate_key)

changing p_node_key.

data: ld_node_text type lvc_value,

ls_sflight type sflight.

  • Set item-layout

data: lt_item_layout type lvc_t_layi,

ls_item_layout type lvc_s_layi.

ls_item_layout-t_image = '@3P@'.

ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.

ls_item_layout-style = cl_gui_column_tree=>style_default.

ld_node_text = ps_ekpo-ebelp.

append ls_item_layout to lt_item_layout.

  • Add node

call method gd_tree->add_node

exporting

i_relat_node_key = p_relate_key

i_relationship = cl_gui_column_tree=>relat_last_child

i_node_text = ld_node_text

is_outtab_line = ps_ekpo

it_item_layout = lt_item_layout

importing

e_new_node_key = p_node_key.

endform. " ADD_EKPO_LINE

----


***INCLUDE ZDEMO_ALVTREEO01 .

----


&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'STATUS1'.

  • SET TITLEBAR 'xxx'.

  • If ALVtree already exists then it mush not be re-created as this

  • will cause a runtime error.

IF gd_tree IS INITIAL.

  • Create ALVtree (must be performed within screen PBO module)

PERFORM create_alvtree_container.

PERFORM create_object_in_container.

PERFORM create_empty_alvtree_control.

PERFORM create_alvtree_hierarchy.

ENDIF.

CALL METHOD cl_gui_cfw=>flush.

ENDMODULE. " STATUS_0100 OUTPUT

Reward If Useful.

Regards,

Chitra