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: 

Hirarchcal ALV"s

Former Member
0 Kudos

hi how to develop hirarchical alv'c can anyone pls give one example program pls

4 REPLIES 4

Former Member
0 Kudos

HI

Check with this program::

check this program

REPORT ZBHALV_GRID.

TABLES:LFA1,EKKO.

SELECT-OPTIONS:LIFNR FOR LFA1-LIFNR.

DATA:BEGIN OF ITAB OCCURS 0,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

LAND1 LIKE LFA1-LAND1,

ORT01 LIKE LFA1-ORT01,

REGIO LIKE LFA1-REGIO,

SORTL LIKE LFA1-SORTL,

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,

  • BSART LIKE EKKO-BSART,

*END OF JTAB.

DATA:JTAB LIKE EKKO OCCURS 0 WITH HEADER LINE.

SELECT * FROM LFA1 INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE LIFNR

IN LIFNR.

SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE JTAB WHERE LIFNR

IN LIFNR.

TYPE-POOLS:SLIS.

DATA:FCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA:KINFO TYPE SLIS_KEYINFO_ALV.

DATA:LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA:EVE TYPE SLIS_T_EVENT WITH HEADER LINE.

DATA:HEAD TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

LAYOUT-ZEBRA = 'X'.

LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

LAYOUT-WINDOW_TITLEBAR = 'VENDORS AND PURCHASE DOCCUMENTS DETAILS'.

KINFO-HEADER01 = 'LIFNR'.

KINFO-ITEM01 = 'LIFNR'.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = EVE[]

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 EVE WITH KEY NAME = 'TOP_OF_PAGE'.

EVE-FORM = 'TOPOFPAGE'.

MODIFY EVE TRANSPORTING FORM WHERE NAME = 'TOP_OF_PAGE'.

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 = FCAT

  • 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_HIERSEQ_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

I_CALLBACK_PROGRAM = SY-REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_SCREEN_START_COLUMN = 5

  • I_SCREEN_START_LINE = 5

  • I_SCREEN_END_COLUMN = 120

  • I_SCREEN_END_LINE = 25

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

IT_EVENTS = EVE[]

  • IT_EVENT_EXIT =

I_TABNAME_HEADER = 'ITAB'

I_TABNAME_ITEM = 'JTAB'

I_STRUCTURE_NAME_HEADER = 'LFA1'

I_STRUCTURE_NAME_ITEM = 'EKKO'

IS_KEYINFO = KINFO

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB_HEADER = ITAB[]

T_OUTTAB_ITEM = JTAB[]

  • 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 TOPOFPAGE.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'VENDORS & PURCHASE DOCC. DETAILS'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[]

  • I_LOGO = ' '

  • I_END_OF_LIST_GRID =

.

ENDFORM.

Reward if useful

Manish

Former Member
0 Kudos

check this


TABLES : STKO,STPO,MAKT,MAST.
TYPE-POOLS : SLIS.

DATA : BEGIN OF ISTKO OCCURS 0,
       STLNR LIKE STKO-STLNR,
       DATUV LIKE STKO-DATUV,
       MATNR LIKE MAST-MATNR,
       BMENG LIKE STKO-BMENG,
       BMEIN LIKE STKO-BMEIN,

       END OF ISTKO.

DATA : BEGIN OF ISTPO OCCURS 0,
       STLNR LIKE STPO-STLNR,
       IDNRK LIKE STPO-IDNRK,
       MENGE LIKE STPO-MENGE,
       MEINS LIKE STPO-MEINS,
       MAKTX LIKE MAKT-MAKTX,
       END OF ISTPO.
DATA : BEGIN OF IMAKT OCCURS 0,
       MATNR LIKE MAKT-MATNR,
       MAKTX LIKE MAKT-MAKTX,
       END OF IMAKT.
DATA : BEGIN OF IMAST OCCURS 0,
       MATNR LIKE MAST-MATNR,
       STLNR LIKE MAST-STLNR,
       END OF IMAST.


DATA : IFIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
       WFIELDCAT TYPE SLIS_FIELDCAT_ALV,
       ILAYOUT   TYPE SLIS_LAYOUT_ALV,
       IKEYINFO  TYPE SLIS_KEYINFO_ALV,
       IEVENT    TYPE SLIS_T_EVENT,
       WEVENT    TYPE SLIS_ALV_EVENT,
       ISORT     TYPE SLIS_T_SORTINFO_ALV,
       WSORT     TYPE SLIS_SORTINFO_ALV.

PARAMETERS : P_NUM TYPE I DEFAULT 10.

START-OF-SELECTION.

  PERFORM GETDATA.
  PERFORM GETHEADERMAT.
  PERFORM GET_MAT_DESC.

  PERFORM BUILD_FCAT_HEAD.
  PERFORM BUILD_FCAT_ITEM.
  PERFORM BUILD_KEYINFO.
  PERFORM BUILD_EVENT_TAB.
  PERFORM BUILD_SORT_TAB.
  PERFORM BUILD_LAYOUT.

  PERFORM DISPLAY_DATA.
*&---------------------------------------------------------------------*
*&      Form  GETDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GETDATA .
  SELECT STLNR DATUV BMENG BMEIN INTO CORRESPONDING FIELDS OF TABLE ISTKO
                                 FROM STKO UP TO P_NUM ROWS.

  IF NOT ISTKO[]  IS INITIAL.
    SELECT STLNR IDNRK MENGE MEINS INTO TABLE ISTPO FROM STPO FOR ALL ENTRIES IN ISTKO
                  WHERE STLNR = ISTKO-STLNR AND POSTP = 'L'.
  ENDIF.


ENDFORM.                    " GETDATA
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT_HEAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FCAT_HEAD .
  WFIELDCAT-TABNAME   = 'ISTKO'.
  WFIELDCAT-FIELDNAME = 'STLNR'.
  WFIELDCAT-SELTEXT_L = 'BOM no'.
  WFIELDCAT-OUTPUTLEN = 15.
  APPEND WFIELDCAT TO IFIELDCAT.
  CLEAR WFIELDCAT.

  WFIELDCAT-TABNAME   = 'ISTKO'.
  WFIELDCAT-FIELDNAME = 'DATUV'.
  WFIELDCAT-SELTEXT_L = 'BOM date'.
  WFIELDCAT-OUTPUTLEN = 15.
  APPEND WFIELDCAT TO IFIELDCAT.
  CLEAR WFIELDCAT.

  WFIELDCAT-TABNAME   = 'ISTKO'.
  WFIELDCAT-FIELDNAME = 'MATNR'.
  WFIELDCAT-SELTEXT_L = 'Header mat no'.
  WFIELDCAT-OUTPUTLEN = 18.
  APPEND WFIELDCAT TO IFIELDCAT.
  CLEAR WFIELDCAT.

  WFIELDCAT-TABNAME   = 'ISTKO'.
  WFIELDCAT-FIELDNAME = 'BMENG'.
  WFIELDCAT-SELTEXT_L = 'Base qty'.
  WFIELDCAT-OUTPUTLEN = 15.
  APPEND WFIELDCAT TO IFIELDCAT.
  CLEAR WFIELDCAT.

  WFIELDCAT-TABNAME   = 'ISTKO'.
  WFIELDCAT-FIELDNAME = 'BMEIN'.
  WFIELDCAT-SELTEXT_L = 'UOM'.
  WFIELDCAT-OUTPUTLEN = 3.
  APPEND WFIELDCAT TO IFIELDCAT.
  CLEAR WFIELDCAT.

ENDFORM.                    " BUILD_FCAT_HEAD
*&---------------------------------------------------------------------*
*&      Form  BUILD_FCAT_ITEM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FCAT_ITEM .

  WFIELDCAT-TABNAME   = 'ISTPO'.
  WFIELDCAT-FIELDNAME = 'STLNR'.
  WFIELDCAT-SELTEXT_L = 'BOM no'.
  WFIELDCAT-NO_OUT     = 'X'.
*WFIELDCAT-HOTSPOT   = 'X'.
  WFIELDCAT-OUTPUTLEN = 10.
  APPEND WFIELDCAT TO IFIELDCAT.
  CLEAR WFIELDCAT.

  WFIELDCAT-TABNAME   = 'ISTPO'.
  WFIELDCAT-FIELDNAME = 'IDNRK'.
  WFIELDCAT-SELTEXT_L = 'Material no'.
*WFIELDCAT-HOTSPOT   = 'X'.
  WFIELDCAT-OUTPUTLEN = 18.
  APPEND WFIELDCAT TO IFIELDCAT.
  CLEAR WFIELDCAT.

  WFIELDCAT-TABNAME   = 'ISTPO'.
  WFIELDCAT-FIELDNAME = 'MAKTX'.
  WFIELDCAT-SELTEXT_L = 'Material desc'.
  WFIELDCAT-JUST      = 'C'.
  WFIELDCAT-OUTPUTLEN = 30.
  APPEND WFIELDCAT TO IFIELDCAT.
  CLEAR WFIELDCAT.


  WFIELDCAT-TABNAME   = 'ISTPO'.
  WFIELDCAT-FIELDNAME = 'MENGE'.
*  WFIELDCAT-INPUT     = 'X'.
*  WFIELDCAT-EDIT      = 'X'.
  WFIELDCAT-SELTEXT_L = 'Item qty'.
  WFIELDCAT-OUTPUTLEN = 15.
  WFIELDCAT-DO_SUM = 'X'.
  APPEND WFIELDCAT TO IFIELDCAT.
  CLEAR WFIELDCAT.

  WFIELDCAT-TABNAME   = 'ISTPO'.
  WFIELDCAT-FIELDNAME = 'MEINS'.
  WFIELDCAT-SELTEXT_L = 'UOM'.
  WFIELDCAT-OUTPUTLEN = 3.
  APPEND WFIELDCAT TO IFIELDCAT.
  CLEAR WFIELDCAT.

ENDFORM.                    " BUILD_FCAT_ITEM
*&---------------------------------------------------------------------*
*&      Form  BUILD_KEYINFO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_KEYINFO .

  IKEYINFO-HEADER01 = 'STLNR'.
  IKEYINFO-ITEM01   = 'STLNR'.

ENDFORM.                    " BUILD_KEYINFO
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .

  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
*   I_INTERFACE_CHECK              = ' '
     I_CALLBACK_PROGRAM             = SY-REPID
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = 'USER_COM'
     IS_LAYOUT                      = ILAYOUT
     IT_FIELDCAT                    = IFIELDCAT[]
*   IT_EXCLUDING                   =
*   IT_SPECIAL_GROUPS              =
   IT_SORT                        = ISORT
*   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                      = IEVENT[]
*   IT_EVENT_EXIT                  =
      I_TABNAME_HEADER               = 'ISTKO'
      I_TABNAME_ITEM                 = 'ISTPO'
*   I_STRUCTURE_NAME_HEADER        =
*   I_STRUCTURE_NAME_ITEM          =
      IS_KEYINFO                     = IKEYINFO
*   IS_PRINT                       =
*   IS_REPREP_ID                   =
*   I_BYPASSING_BUFFER             =
*   I_BUFFER_ACTIVE                =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER        =
*   ES_EXIT_CAUSED_BY_USER         =
    TABLES
      T_OUTTAB_HEADER                = ISTKO
      T_OUTTAB_ITEM                  = ISTPO
* 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_DATA
*&---------------------------------------------------------------------*
*&      Form  GET_MAT_DESC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_MAT_DESC .

  IF NOT ISTPO[] IS INITIAL.
    SELECT MATNR MAKTX INTO TABLE IMAKT FROM MAKT FOR ALL ENTRIES IN ISTPO
                            WHERE MATNR = ISTPO-IDNRK.
  ENDIF.

  LOOP AT ISTPO.
    READ TABLE IMAKT WITH KEY MATNR = ISTPO-IDNRK.
    IF SY-SUBRC = 0.
      ISTPO-MAKTX = IMAKT-MAKTX.
    ENDIF.
    MODIFY ISTPO.
  ENDLOOP.

ENDFORM.                    " GET_MAT_DESC
*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT .

  ILAYOUT-ZEBRA             = 'X'.
  ILAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  ilayout-totals_text = 'Grand'.
  ilayout-subtotals_text = 'Sub total'.

ENDFORM.                    " BUILD_LAYOUT

FORM USER_COM USING PUCOM LIKE SY-UCOMM PSELFIELD TYPE SLIS_SELFIELD.

CASE PUCOM.
WHEN '&IC1'.
 if pselfield-fieldname = 'IDNRK'.
 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
   EXPORTING
     INPUT         = PSELFIELD-VALUE
  IMPORTING
    OUTPUT        = PSELFIELD-VALUE
           .

 SET PARAMETER ID 'MAT' FIELD PSELFIELD-VALUE.
 CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
 endif.
ENDCASE.
*
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  BUILD_EVENT_TAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_EVENT_TAB .

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
   EXPORTING
     I_LIST_TYPE           = 0
   IMPORTING
     ET_EVENTS             = IEVENT
*   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 IEVENT INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.

  IF SY-SUBRC = 0.

    WEVENT-FORM = 'TOPOFPAGE'.
    MODIFY IEVENT FROM WEVENT INDEX SY-TABIX.

  ENDIF.

READ TABLE IEVENT INTO WEVENT WITH KEY NAME = 'USER_COMMAND'.

  IF SY-SUBRC = 0.

    WEVENT-FORM = 'USER_COM'.
    MODIFY IEVENT FROM WEVENT INDEX SY-TABIX.

  ENDIF.

ENDFORM.                    " BUILD_EVENT_TAB

*&---------------------------------------------------------------------*
*&      Form  TOPOFPAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM TOPOFPAGE.
  DATA : ILISTHEAD TYPE SLIS_T_LISTHEADER,
         WLISTHEAD TYPE SLIS_LISTHEADER.

  WLISTHEAD-INFO = 'Its a test hierarchical sequential alv dispaly'.
  WLISTHEAD-TYP = 'H'.
  APPEND WLISTHEAD TO ILISTHEAD.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY       = ILISTHEAD
*     I_LOGO                   =  ''
*     I_END_OF_LIST_GRID       =
            .

  ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GETHEADERMAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GETHEADERMAT .
IF NOT ISTKO[] IS INITIAL.
  SELECT MATNR STLNR INTO TABLE IMAST FROM MAST FOR ALL ENTRIES IN ISTKO
                                WHERE STLNR = ISTKO-STLNR.
ENDIF.

LOOP AT ISTKO.
 READ TABLE IMAST WITH KEY STLNR = ISTKO-STLNR.
 IF SY-SUBRC = 0.
  ISTKO-MATNR = IMAST-MATNR.
 ENDIF.
 MODIFY ISTKO.
ENDLOOP.
ENDFORM.                    " GETHEADERMAT
*&---------------------------------------------------------------------*
*&      Form  BUILD_SORT_TAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_SORT_TAB .
WSORT-FIELDNAME = 'STLNR'.
WSORT-TABNAME   = 'ISTPO'.
WSORT-UP        = 'X'.
WSORT-SUBTOT    = 'X'.
*WSORT-GROUP     = 'UL'.
APPEND WSORT TO ISORT.
ENDFORM.                    " BUILD_SORT_TAB

regards

shiba dutta

Former Member
0 Kudos

Hi,

Check this code,

type-pools: slis.
*            icon.

tables: zemp10,zemp12.

data: BEGIN OF WA1,
      EMPID TYPE ZEMP10-EMPID,
      EXPAND2,
      BOX,
      LIGHT,
      END OF WA1.


DATA: BEGIN OF WA2,
      EMPID TYPE ZEMP12-EMPID,
      CITY TYPE  ZEMP12-CITY,
      STATE TYPE  ZEMP12-STATE,
      COUNTRY TYPE  ZEMP12-COUNTRY,
      INCENTIVE TYPE ZEMP12-INCENTIVE,
      LIGHT,

      END OF WA2.
DATA: ITAB1 LIKE STANDARD TABLE OF WA1 WITH HEADER LINE,
      ITAB2 LIKE STANDARD TABLE OF WA2 WITH HEADER LINE,
      it_events type slis_t_event,
      wa_events like line of it_events,

      CAT1   TYPE SLIS_T_FIELDCAT_ALV.
*       WA_CAT LIKE LINE OF CAT1.
*
*DATA IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV.

 data wa_layout type slis_layout_alv.

data wa_keyinfo type slis_keyinfo_alv.
DATA CAT2 TYPE SLIS_T_FIELDCAT_ALV.


data wa_repid type sy-repid.
*********************************************
 wa_keyinfo-header01 = 'EMPID'.
 wa_keyinfo-item01   = 'EMPID'.

******************************************
perform fill_tables.
perform layout.
PERFORM FIELD.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
* EXPORTING
*   I_LIST_TYPE           = 0
 IMPORTING
   ET_EVENTS             = it_events
* 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 it_events into wa_events with key name = 'USER_COMMAND'.
 if sy-subrc = 0.
   wa_events-form = 'FORM1'.
   modify it_events from wa_events index sy-tabix.
 endif.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
  EXPORTING
*   I_INTERFACE_CHECK              = ' '
   I_CALLBACK_PROGRAM             = 'ZVIJIALV7'
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
   IS_LAYOUT                      =  WA_LAYOUT
   IT_FIELDCAT                    =  CAT1
*   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_events
*   IT_EVENT_EXIT                  =
    i_tabname_header               = 'ITAB1'
    i_tabname_item                 = 'ITAB2'
*   I_STRUCTURE_NAME_HEADER        =
*   I_STRUCTURE_NAME_ITEM          =
    is_keyinfo                     = WA_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                = ITAB1
    t_outtab_item                  = ITAB2
* 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 fill_tables .
                   SELECT
                       empid
                         FROM  zemp10 INTO TABLE ITAB1.


                        SELECT
                              empid  city  state country  INCENTIVE

                                            FROM ZEMP12 INTO TABLE ITAB2.
         LOOP AT ITAB2.
         IF ITAB2-INCENTIVE < 100.
          ITAB2-LIGHT = '2'.
          ELSEIF ITAB2-INCENTIVE > 100 AND ITAB2-INCENTIVE < 200.
          ITAB2-LIGHT = '1'.
          ELSE.
           ITAB2-LIGHT = '3'.
         ENDIF.
         MODIFY ITAB2 INDEX SY-TABIX.
        ENDLOOP.

   LOOP AT ITAB1.
     IF ITAB1-EMPID = '101'.
        ITAB1-BOX = 'X'.
        ITAB1-LIGHT = '2'.
       ELSE.
        ITAB1-LIGHT = '1'.
     ENDIF.
      MODIFY ITAB1 INDEX SY-TABIX.
   ENDLOOP.



endform.                    " fill_tables



form LAYOUT .

  WA_LAYOUT-ZEBRA             = 'X'.

  WA_LAYOUT-EXPAND_FIELDNAME = 'EXPAND2'. "FOR EXPANDING
*  WA_LAYOUT-EXPAND_ALL = 'X'.

WA_LAYOUT-LIGHTS_FIELDNAME = 'LIGHT'. " FOR LIGHT
  WA_LAYOUT-LIGHTS_TABNAME = 'ITAB1'.

  WA_LAYOUT-LIGHTS_FIELDNAME = 'LIGHT'. " FOR LIGHT
  WA_LAYOUT-LIGHTS_TABNAME = 'ITAB2'.

  WA_LAYOUT-BOX_FIELDNAME  = 'BOX'.   " FOR CHECKBOX
  WA_LAYOUT-BOX_TABNAME = 'ITAB1'.

endform.                    " LAYOUT



FORM FIELD.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
*   I_PROGRAM_NAME               = WA_REPID
   I_INTERNAL_TABNAME           = 'ITAB1'
   I_STRUCTURE_NAME             = 'ZEMP10'
*   I_CLIENT_NEVER_DISPLAY       = 'X'
*   I_INCLNAME                   =
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    ct_fieldcat                  = CAT1
* 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.

DELETE CAT1 WHERE FIELDNAME <> 'EMPID'.


CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
*   I_PROGRAM_NAME               = WA_REPID
   I_INTERNAL_TABNAME           = 'ITAB2'
   I_STRUCTURE_NAME             = 'ZEMP12'
*   I_CLIENT_NEVER_DISPLAY       = 'X'
*   I_INCLNAME                   =
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    ct_fieldcat                  = CAT2
* 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.

DELETE CAT2 WHERE FIELDNAME <> 'EMPID' AND
                  FIELDNAME <> 'CITY' AND
                  FIELDNAME <> 'STATE' AND
                  FIELDNAME <> 'INCENTIVE'.


APPEND LINES OF CAT2 TO CAT1.

ENDFORM.

form FORM1 using ucomm like sy-ucomm
sel_field type slis_selfield.

  write : sel_field-fieldname.
  write : sel_field-value.
endform.

Thanks,

Reward If Helpful.

gopi_narendra
Active Contributor
0 Kudos

Check this sample program

  TYPE-POOLS: slis.

  DATA: BEGIN OF itab OCCURS 0,
          vbeln TYPE vbeln,
          expand,
        END OF itab.

  DATA: BEGIN OF itab1 OCCURS 0,
          vbeln TYPE vbeln,
          posnr TYPE posnr,
          matnr TYPE matnr,
          netpr TYPE netpr,
        END OF itab1.

  DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv.
  DATA: s_fieldcatalog TYPE slis_fieldcat_alv.

  s_fieldcatalog-col_pos = '1'.
  s_fieldcatalog-fieldname = 'VBELN'.
  s_fieldcatalog-tabname   = 'ITAB'.
  s_fieldcatalog-rollname  = 'VBELN'.
  s_fieldcatalog-outputlen = '12'.
  APPEND s_fieldcatalog TO t_fieldcatalog.
  CLEAR: s_fieldcatalog.

  s_fieldcatalog-col_pos = '1'.
  s_fieldcatalog-fieldname = 'VBELN'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'VBELN'.
  s_fieldcatalog-outputlen = '12'.
  APPEND s_fieldcatalog TO t_fieldcatalog.
  CLEAR: s_fieldcatalog.

  s_fieldcatalog-col_pos = '2'.
  s_fieldcatalog-fieldname = 'POSNR'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'POSNR'.
  APPEND s_fieldcatalog TO t_fieldcatalog.
  CLEAR: s_fieldcatalog.

  s_fieldcatalog-col_pos = '3'.
  s_fieldcatalog-fieldname = 'MATNR'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'MATNR'.
  APPEND s_fieldcatalog TO t_fieldcatalog.
  CLEAR: s_fieldcatalog.

  s_fieldcatalog-col_pos = '4'.
  s_fieldcatalog-fieldname = 'NETPR'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'NETPR'.
  s_fieldcatalog-do_sum    = 'X'.
  APPEND s_fieldcatalog TO t_fieldcatalog.
  CLEAR: s_fieldcatalog.

  DATA: s_layout TYPE slis_layout_alv.

  s_layout-subtotals_text            = 'SUBTOTAL TEXT'.
  s_layout-key_hotspot = 'X'.
  s_layout-expand_fieldname = 'EXPAND'.

  SELECT vbeln UP TO 100 ROWS
         FROM vbak
         INTO TABLE itab.

  IF NOT itab[] IS INITIAL.

    SELECT vbeln posnr matnr netpr
           FROM vbap
           INTO TABLE itab1
           FOR ALL ENTRIES IN itab
           WHERE vbeln = itab-vbeln.
  ENDIF.

  DATA: v_repid TYPE syrepid.

  v_repid = sy-repid.
  DATA: s_keyinfo TYPE slis_keyinfo_alv.
  s_keyinfo-header01 = 'VBELN'.
  s_keyinfo-item01   = 'VBELN'.

  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
       EXPORTING
            i_callback_program = v_repid
            is_layout          = s_layout
            it_fieldcat        = t_fieldcatalog
            i_tabname_header   = 'ITAB'
            i_tabname_item     = 'ITAB1'
            is_keyinfo         = s_keyinfo
       TABLES
            t_outtab_header    = itab
            t_outtab_item      = itab1
       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.

Regards

Gopi