2008 Feb 26 4:18 PM
hi everyone,
i need to develop a hierarchial interactive alv program,
how do i start,
if anyone has a simplest program,
please forward it to me.
rgds.
hi everyone,
i need to develop a hierarchial interactive alv program,
how do i start,
if anyone has a simplest program,
please forward it to me.
rgds.
2008 Feb 26 4:29 PM
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.
Greetings,
Blag.
2008 Feb 26 5:11 PM
hi alvaro,
this is not interactive,
can any one please tell me how to make it interactive.
2008 Feb 26 5:20 PM
What you mean by Interactive? Do you want to modify records???
Greetings,
Blag.
2008 Feb 26 5:22 PM
HI,
Please refer to the link below:
http://www.sap-img.com/abap/how-to-use-alv-for-hierarchical-lists.htm
Thanks,
Sriram Ponna.
2008 Feb 26 7:29 PM
hi thanks to both of you,
but these two are not interactive,
by interactive i mean, drill down alv,
ie, if i click on one vbeln value, it should take me to va03 screen with this vbeln value, and skip the first screen.
rgds.
2008 Feb 26 7:42 PM
Like this -:)
REPORT ydummy_atg.
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.
DATA: g_user_command TYPE slis_formname VALUE 'USER_COMMAND'.
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_callback_user_command = g_user_command
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 NE 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CHECK NOT rs_selfield-tabname IS INITIAL.
CASE r_ucomm.
WHEN '&IC1'.
READ TABLE itab1 INDEX rs_selfield-tabindex.
SET PARAMETER ID 'AUN' FIELD itab1-vbeln.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.
Greetings,
Blag.
2008 Feb 26 8:47 PM
2008 Feb 26 8:48 PM
yes alvaro, somthing like this,
but with out that expansion, just display.
thanks for your help.
2008 Feb 26 9:38 PM
You mean that you want the list already expanded when you executed? Or you don't want it to expaned at all...Because the main purpouse of a hierarchial alv, is to be expandible...Otherwise, you should use a simple ALV Grid...
Greetings,
Blag.
2008 Feb 26 11:18 PM
yes alvarado,
i need a hierarchical itself,
thanks , let me try and come back again.
2008 Feb 27 4:53 AM
Hi
example program:
TYPE-POOLS : slis.
&----
*& structure declaration
&----
TYPES : BEGIN OF st_ekko,
ebeln TYPE ekko-ebeln, "Purchasing Document Number
bstyp TYPE ekko-bstyp, "Purchasing Document Category
bsart TYPE ekko-bsart, "Purchasing Document Type
aedat TYPE ekko-aedat, "record created on
ernam TYPE ekko-ernam, "Person who Created the Object
END OF st_ekko.
TYPES : BEGIN OF st_ekpo,
ebeln TYPE ekko-ebeln,
ebelp TYPE ekpo-ebelp, "Item Number of Purchasingdoc
ematn TYPE ekpo-ematn, "Material number
matkl TYPE ekpo-matkl, "Material group
netpr TYPE ekpo-netpr, "Net price in purchasing document
END OF st_ekpo.
&----
*& internal table and work area declaration
&----
DATA : it_ekpo TYPE STANDARD TABLE OF st_ekpo,
it_ekko TYPE STANDARD TABLE OF st_ekko,
it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
st_keyinfo TYPE slis_keyinfo_alv.
&----
*& data declaration
&----
DATA : v_ebeln TYPE ekko-ebeln.
&----
*& selection-screen
&----
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-000.
SELECT-OPTIONS : so_ebeln FOR v_ebeln.
SELECTION-SCREEN END OF BLOCK a.
&----
*& At-selection-screen
&----
AT SELECTION-SCREEN ON so_ebeln.
PERFORM validate_ebeln.
&----
*& start-of-selection
&----
START-OF-SELECTION.
PERFORM data_retrieval.
&----
*& end-of-selection
&----
END-OF-SELECTION.
PERFORM build_fieldcatalog.
PERFORM fill_keyinfo.
PERFORM display_alv .
&----
*& FORM validate_ebeln
&----
FORM validate_ebeln.
SELECT ebeln
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE it_ekko
WHERE ebeln IN so_ebeln.
IF sy-subrc NE 0.
MESSAGE text-003 TYPE 'W'.
ENDIF.
REFRESH it_ekko.
ENDFORM. "validate_ebeln
&----
*& FORM data_retrieval
&----
FORM data_retrieval.
SELECT ebeln bstyp bsart aedat ernam
FROM ekko
INTO TABLE it_ekko
WHERE ebeln IN so_ebeln.
IF sy-subrc NE 0.
MESSAGE text-001 TYPE 'I'.
ENDIF.
SELECT ebeln ebelp ematn matkl netpr
FROM ekpo
INTO TABLE it_ekpo
WHERE ebeln IN so_ebeln.
IF sy-subrc NE 0.
MESSAGE text-002 TYPE 'I'.
ENDIF.
ENDFORM. "data_retrieval
&----
*& Form build_fieldcatalog
&----
FORM build_fieldcatalog.
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-seltext_l = 'PURCHASE ORDER'.
wa_fieldcat-tabname = 'IT_EKKO'.
wa_fieldcat-col_pos = 0.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'BSTYP'.
wa_fieldcat-seltext_l = 'DOCUMENT CATEGORY'.
wa_fieldcat-tabname = 'IT_EKKO'.
wa_fieldcat-col_pos = 1.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'BSART'.
wa_fieldcat-seltext_l = 'DOCUMENT TYPE'.
wa_fieldcat-tabname = 'IT_EKKO'.
wa_fieldcat-col_pos = 2.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'AEDAT'.
wa_fieldcat-seltext_l = 'DATE'.
wa_fieldcat-tabname = 'IT_EKKO'.
wa_fieldcat-col_pos = 3.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'ERNAM'.
wa_fieldcat-seltext_l = 'NAME'.
wa_fieldcat-tabname = 'IT_EKKO'.
wa_fieldcat-col_pos = 4.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-seltext_l = 'PURCHASE ORDER'.
wa_fieldcat-tabname = 'IT_EKPO'.
wa_fieldcat-col_pos = 0.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'EBELP'.
wa_fieldcat-seltext_l = 'ITEM NUMBER'.
wa_fieldcat-tabname = 'IT_EKPO'.
wa_fieldcat-col_pos = 1.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'EMATN'.
wa_fieldcat-seltext_l = 'MATERIAL TYPE'.
wa_fieldcat-tabname = 'IT_EKPO'.
wa_fieldcat-col_pos = 2.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'MATKL'.
wa_fieldcat-seltext_l = 'MATERIAL GROUP'.
wa_fieldcat-tabname = 'IT_EKPO'.
wa_fieldcat-col_pos = 3.
APPEND wa_fieldcat TO it_fieldcat.
wa_fieldcat-fieldname = 'NETPR'.
wa_fieldcat-seltext_l = 'NET PRICE'.
wa_fieldcat-tabname = 'IT_EKPO'.
wa_fieldcat-col_pos = 4.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
ENDFORM. "build_fieldcatalog
&----
*& Form fill_keyinfo
&----
FORM fill_keyinfo.
CLEAR st_keyinfo.
st_keyinfo-header01 = 'EBELN'.
st_keyinfo-item01 = 'EBELN'.
ENDFORM. " fill_keyinfo
&----
*& Form DISPLAY_ALV
&----
FORM display_alv .
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
i_callback_program = sy-repid
i_callback_pf_status_set = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT = IS_LAYOUT
it_fieldcat = it_fieldcat
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = 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 = IS_VARIANT
IT_EVENTS = IT_EVENTS[]
IT_EVENT_EXIT = IT_EVENT_EXIT
i_tabname_header = 'IT_EKKO'
i_tabname_item = 'IT_EKPO'
I_STRUCTURE_NAME_HEADER = I_STRUCTURE_NAME_HEADER
I_STRUCTURE_NAME_ITEM = I_STRUCTURE_NAME_ITEM
is_keyinfo = st_keyinfo
IS_PRINT = IS_PRINT
IS_REPREP_ID = IS_REPREP_ID
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
IR_SALV_HIERSEQ_ADAPTER = IR_SALV_HIERSEQ_ADAPTER
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
TABLES
t_outtab_header = it_ekko
t_outtab_item = it_ekpo
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_ALV
&----
*& Form SET_PF_STATUS
&----
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'MENU'. "Copy from SALV .
ENDFORM. "set_pf_status
2008 Feb 27 4:55 AM
HI
----
STRUCTURE DECLARATIONS
INTERNAL TABLE DECLARATIONS
WORKAREA DECLARATIONS
TYPE-POOLS DECLARATION
----
TYPE-POOLS : slis.
*TYPES : BEGIN OF st_ekko,
ebeln TYPE ekko-ebeln, "Purchasing Document Number
bstyp TYPE ekko-bstyp, "Purchasing Document Category
bsart TYPE ekko-bsart, "Purchasing Document Type
aedat TYPE ekko-aedat, "record created on
ernam TYPE ekko-ernam, "Person who Created the Object
END OF st_ekko.
*
*TYPES : BEGIN OF st_ekpo,
ebeln TYPE ekko-ebeln, "Purchasing Document Number
ebelp TYPE ekpo-ebelp, "Item Number of Purchasing Document
ematn TYPE ekpo-ematn, "Material number
matkl TYPE ekpo-matkl, "Material group
netpr TYPE ekpo-netpr, "Net price in purchasing document
END OF st_ekpo.
TYPES : BEGIN OF st_ebeln,
ebeln TYPE ekpo-ebeln,
END OF st_ebeln.
DATA : IT_EKPO TYPE STANDARD TABLE OF EKPO WITH HEADER LINE,
IT_EKKO TYPE STANDARD TABLE OF EKKO WITH HEADER LINE,
it_ekpo TYPE STANDARD TABLE OF st_ekpo with header line,
wa_ekpo TYPE st_ekpo,
it_ekko TYPE STANDARD TABLE OF st_ekko with header line,
wa_ekko LIKE LINE OF it_ekko,
it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat,
wa_layout TYPE slis_layout_alv,
it_events TYPE slis_t_event,
st_event LIKE LINE OF it_events,
st_keyinfo TYPE slis_keyinfo_alv,
it_ebeln TYPE STANDARD TABLE OF st_ebeln.
DATA : v_ebeln TYPE ekko-ebeln.
----
SELECTION-SCREEN
----
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE tit.
SELECT-OPTIONS: so_ebeln FOR v_ebeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b.
----
INITIALIZATION
----
INITIALIZATION.
tit = text-000.
----
AT SELECTION-SCREEN ON
----
AT SELECTION-SCREEN ON so_ebeln.
PERFORM validate_ebeln.
----
START-OF-SELECTION
----
START-OF-SELECTION.
PERFORM get_data.
----
END-OF-SELECTION
----
END-OF-SELECTION.
PERFORM populate_fcat using 'IT_EKKO' 'EKKO'.
PERFORM populate_fcat using 'IT_EKPO' 'EKPO'.
PERFORM fill_keyinfo.
PERFORM display_alv.
&----
*& Form validate_ebeln
&----
FORM validate_ebeln.
SELECT ebeln
FROM ekpo
INTO TABLE it_ebeln
WHERE ebeln IN so_ebeln.
IF sy-subrc NE 0.
MESSAGE e020(z50871) WITH 'Purchase Document Number Is Invalid'.
ENDIF.
ENDFORM. "validate_ebeln
&----
*& Form get_data
&----
FORM get_data .
SELECT ebeln bstyp bsart aedat ernam
FROM ekko
INTO TABLE it_ekko
WHERE ebeln IN so_ebeln.
IF NOT it_ekko[] IS INITIAL.
SELECT ebeln ebelp ematn matkl netpr
FROM ekpo
INTO TABLE it_ekpo
FOR ALL ENTRIES IN it_ekko
WHERE ebeln EQ it_ekko-ebeln.
ENDIF.
SELECT *
FROM ekko
INTO TABLE it_ekko
WHERE ebeln IN so_ebeln.
IF NOT it_ekko[] IS INITIAL.
SELECT *
FROM ekpo
INTO TABLE it_ekpo
FOR ALL ENTRIES IN it_ekko
WHERE ebeln EQ it_ekko-ebeln.
ENDIF.
ENDFORM. " get_data
&----
*& Form POPULATE_FCAT
&----
FORM POPULATE_FCAT USING P_TABNAME TYPE SLIS_TABNAME
P_STRUCTURE LIKE DD02L-TABNAME.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-tabname = 'it_ekko'.
wa_fieldcat-seltext_l = 'Purchase document number'.
APPEND wa_fieldcat TO it_fieldcat.
*
wa_fieldcat-fieldname = 'BSTYP'.
wa_fieldcat-tabname = 'it_ekko'.
wa_fieldcat-seltext_l = 'Purchasing Document Category'.
APPEND wa_fieldcat TO it_fieldcat.
*
wa_fieldcat-fieldname = 'BSART'.
wa_fieldcat-tabname = 'it_ekko'.
wa_fieldcat-seltext_l = 'Purchasing Document Type'.
APPEND wa_fieldcat TO it_fieldcat.
*
wa_fieldcat-fieldname = 'AEDAT'.
wa_fieldcat-tabname = 'it_ekko'.
wa_fieldcat-seltext_l = 'Created On'.
APPEND wa_fieldcat TO it_fieldcat.
*
wa_fieldcat-fieldname = 'ERNAM'.
wa_fieldcat-tabname = 'it_ekko'.
wa_fieldcat-seltext_l = 'Created By'.
APPEND wa_fieldcat TO it_fieldcat.
*
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-tabname = 'it_ekpo'.
wa_fieldcat-seltext_l = 'Purchase document number'.
APPEND wa_fieldcat TO it_fieldcat.
*
wa_fieldcat-fieldname = 'EBELP'.
wa_fieldcat-tabname = 'it_ekpo'.
wa_fieldcat-seltext_l = 'Item Number'.
APPEND wa_fieldcat TO it_fieldcat.
*
wa_fieldcat-fieldname = 'EMATN'.
wa_fieldcat-tabname = 'it_ekpo'.
wa_fieldcat-seltext_l = 'Material Number'.
APPEND wa_fieldcat TO it_fieldcat.
*
wa_fieldcat-fieldname = 'MATKL'.
wa_fieldcat-tabname = 'it_ekpo'.
wa_fieldcat-seltext_l = 'Material group'.
APPEND wa_fieldcat TO it_fieldcat.
*
wa_fieldcat-fieldname = 'NETPR'.
wa_fieldcat-tabname = 'it_ekpo'.
wa_fieldcat-seltext_l = 'Net price in purchasing document'.
APPEND wa_fieldcat TO it_fieldcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = P_TABNAME
I_STRUCTURE_NAME = P_STRUCTURE
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = I_INCLNAME
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
CHANGING
ct_fieldcat = It_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. " POPULATE_FCAT
&----
*& Form fill_keyinfo
&----
FORM fill_keyinfo.
CLEAR st_keyinfo.
st_keyinfo-header01 = 'EBELN'.
st_keyinfo-item01 = 'EBELN'.
ENDFORM. " fill_keyinfo
&----
*& Form DISPLAY_ALV
&----
FORM display_alv .
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
i_callback_program = sy-repid
i_callback_pf_status_set = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT = IS_LAYOUT
it_fieldcat = it_fieldcat
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = 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 = IS_VARIANT
IT_EVENTS = IT_EVENTS[]
IT_EVENT_EXIT = IT_EVENT_EXIT
i_tabname_header = 'IT_EKKO'
i_tabname_item = 'IT_EKPO'
I_STRUCTURE_NAME_HEADER = I_STRUCTURE_NAME_HEADER
I_STRUCTURE_NAME_ITEM = I_STRUCTURE_NAME_ITEM
is_keyinfo = st_keyinfo
IS_PRINT = IS_PRINT
IS_REPREP_ID = IS_REPREP_ID
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
IR_SALV_HIERSEQ_ADAPTER = IR_SALV_HIERSEQ_ADAPTER
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
TABLES
t_outtab_header = it_ekko
t_outtab_item = it_ekpo
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_ALV
&----
*& Form SET_PF_STATUS
&----
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD'. "Copy from SALV .
ENDFORM. "SET_PF_STATUS