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

Hierarchical sequential reports

Former Member
0 Likes
525

Hi,

I need to develop hierarchical sequential report.I have gone through standard hierarchical sequential report BALVHD01,but I could n't grasp a lot.Can anybody explain with a simple example of creation of Hierarchical sequential report. Its urgent.

Please don't suggest me to study the standard alv report BALVHD01.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
487

Hi,

Just go through the functionality of this report.

&----


*& Report YVCHIERSEQ *

*& *

&----


*& *

*& *

&----


REPORT YVCHIERSEQ .

TYPE-POOLS:SLIS.

DATA:T_VBAK TYPE STANDARD TABLE OF VBAK INITIAL SIZE 0,

T_VBAP TYPE STANDARD TABLE OF VBAP INITIAL SIZE 0,

W_VBAK TYPE VBAK,

W_VBAP TYPE VBAP,

G_VBELN TYPE VBAK-VBELN,

W_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

W_KEYINFO TYPE SLIS_KEYINFO_ALV.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

SELECT-OPTIONS:S_VBELN FOR G_VBELN.

SELECTION-SCREEN END OF BLOCK B1.

INITIALIZATION.

CLEAR:W_VBAK,

W_VBAP.

REFRESH:T_VBAK,

T_VBAP.

START-OF-SELECTION.

PERFORM SUB_GET_VBAK.

PERFORM SUB_GET_VBAP.

PERFORM SUB_DISP_OUTPUT.

FORM SUB_GET_VBAK.

SELECT * FROM VBAK INTO TABLE T_VBAK WHERE VBELN IN S_VBELN.

ENDFORM.

FORM SUB_GET_VBAP.

SELECT * FROM VBAP INTO TABLE T_VBAP FOR ALL ENTRIES IN T_VBAK WHERE

VBELN = T_VBAK-VBELN.

ENDFORM.

FORM SUB_DISP_OUTPUT.

W_FIELDCAT-COL_POS = 1.

W_FIELDCAT-FIELDNAME = 'VBELN'.

W_FIELDCAT-SELTEXT_M = 'SALESORDER'.

W_FIELDCAT-TABNAME = 'VBAK'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 2.

W_FIELDCAT-FIELDNAME = 'ERNAM'.

W_FIELDCAT-SELTEXT_M = 'NAME'.

W_FIELDCAT-TABNAME = 'VBAK'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 3.

W_FIELDCAT-FIELDNAME = 'VBTYP'.

W_FIELDCAT-SELTEXT_M = 'SD CATEGORY'.

W_FIELDCAT-TABNAME = 'VBAK'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 4.

W_FIELDCAT-FIELDNAME = 'KUNNR'.

W_FIELDCAT-SELTEXT_M = 'SOLD TO PARTY'.

W_FIELDCAT-TABNAME = 'VBAK'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 5.

W_FIELDCAT-FIELDNAME = 'NETWR'.

W_FIELDCAT-SELTEXT_M = 'NET VALUE'.

W_FIELDCAT-TABNAME = 'VBAK'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

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

W_FIELDCAT-COL_POS = 1.

W_FIELDCAT-FIELDNAME = 'POSNR'.

W_FIELDCAT-SELTEXT_M = 'SALES ITEM'.

W_FIELDCAT-TABNAME = 'VBAP'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 2.

W_FIELDCAT-FIELDNAME = 'MATNR'.

W_FIELDCAT-SELTEXT_M = 'MATERIAL NO'.

W_FIELDCAT-TABNAME = 'VBAP'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 3.

W_FIELDCAT-FIELDNAME = 'MATKL'.

W_FIELDCAT-SELTEXT_M = 'MAT GROUP'.

W_FIELDCAT-TABNAME = 'VBAP'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 4.

W_FIELDCAT-FIELDNAME = 'NETWR'.

W_FIELDCAT-SELTEXT_M = 'NET VALUE'.

W_FIELDCAT-TABNAME = 'VBAP'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_KEYINFO-HEADER01 = 'VBELN'.

W_KEYINFO-ITEM01 = 'VBELN'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

I_CALLBACK_PROGRAM = SY-CPROG

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IS_LAYOUT =

IT_FIELDCAT = T_FIELDCAT

  • 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_EVENT_EXIT =

i_tabname_header = 'VBAK'

i_tabname_item = 'VBAP'

  • I_STRUCTURE_NAME_HEADER =

  • I_STRUCTURE_NAME_ITEM =

is_keyinfo = W_KEYINFO

  • 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 = T_VBAK

t_outtab_item = T_VBAP

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

Hope this might be helpful.

3 REPLIES 3
Read only

Former Member
0 Likes
487

Hi Khader Bashe

View the simple hierarchical report and dont forget to reward points..

&----


*& Report ZVENKATTEST0

*&

&----


*&

*&

&----


REPORT zvenkattest0.

TABLES:pa0002,pa0008.

TYPE-POOLS:slis.

CONSTANTS:c VALUE 'X'.

DATA:BEGIN OF it_pa0008 OCCURS 0,

pernr LIKE pa0008-pernr,

begda LIKE pa0008-begda,

endda LIKE pa0008-endda,

preas LIKE pa0008-preas,

ansal LIKE pa0008-ansal,

lga01 LIKE pa0008-lga01,

expand TYPE xfeld,

END OF it_pa0008.

DATA:BEGIN OF it_pa0002 OCCURS 0,

pernr LIKE pa0002-pernr,

vorna LIKE pa0002-vorna,

nachn LIKE pa0002-nachn,

gbdat LIKE pa0002-gbdat,

gblnd LIKE pa0002-gblnd,

sprsl LIKE pa0002-sprsl,

perid LIKE pa0002-perid,

END OF it_pa0002.

DATA: wa_field_cat TYPE slis_fieldcat_alv,

it_field_cat TYPE slis_t_fieldcat_alv,

wa_keyinfo TYPE slis_keyinfo_alv,

it_layout TYPE slis_layout_alv.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS:s_pernr FOR pa0002-pernr NO INTERVALS.

SELECTION-SCREEN: SKIP.

PARAMETERS:p_expand AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

PERFORM select_data.

PERFORM build_field_cat.

PERFORM disply_data.

&----


*& Form SELECT_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM select_data .

SELECT pernr

begda

endda

preas

ansal

lga01

FROM pa0008

INTO CORRESPONDING FIELDS OF TABLE it_pa0008

UP TO 10 ROWS.

IF NOT it_pa0008[] IS INITIAL.

SELECT pernr

vorna

nachn

gbdat

gblnd

sprsl

perid

FROM pa0002

INTO CORRESPONDING FIELDS OF TABLE it_pa0002

FOR ALL ENTRIES IN it_pa0008

WHERE pernr = it_pa0008-pernr.

ENDIF.

SORT it_pa0008 BY pernr.

ENDFORM. " SELECT_DATA

&----


*& Form BUILD_FIELD_CAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_field_cat .

wa_field_cat-tabname = 'PA0008'.

wa_field_cat-fieldname = 'PERNR'.

wa_field_cat-seltext_l = 'personnelno'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0008'.

wa_field_cat-fieldname = 'BEGDA'.

wa_field_cat-seltext_l = 'begindate'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0008'.

wa_field_cat-fieldname = 'ENDDA'.

wa_field_cat-seltext_l = 'enddate'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0008'.

wa_field_cat-fieldname = 'PREAS'.

wa_field_cat-seltext_l = 'reason'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0008'.

wa_field_cat-fieldname = 'ANSAL'.

wa_field_cat-seltext_l = 'annualsalary'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0008'.

wa_field_cat-fieldname = 'LGA01'.

wa_field_cat-seltext_l = 'wagetype'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0002'.

wa_field_cat-fieldname = 'VORNA'.

wa_field_cat-seltext_l = 'firstname'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0002'.

wa_field_cat-fieldname = 'NACHN'.

wa_field_cat-seltext_l = 'lastname'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0002'.

wa_field_cat-fieldname = 'GBDAT'.

wa_field_cat-seltext_l = 'birhtdate'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0002'.

wa_field_cat-fieldname = 'GBLND'.

wa_field_cat-seltext_l = 'birthcountry'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0002'.

wa_field_cat-fieldname = 'SPRSL'.

wa_field_cat-seltext_l = 'languageused'.

APPEND wa_field_cat TO it_field_cat.

wa_field_cat-tabname = 'PA0002'.

wa_field_cat-fieldname = 'PERID'.

wa_field_cat-seltext_l = 'personnelid'.

APPEND wa_field_cat TO it_field_cat.

ENDFORM. " BUILD_FIELD_CAT

&----


*& Form DISPLY_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM disply_data .

it_layout-group_change_edit = c.

it_layout-colwidth_optimize = c.

it_layout-zebra = c.

it_layout-detail_popup = c.

it_layout-get_selinfos = c.

IF p_expand = c.

it_layout-expand_fieldname = 'EXPAND'.

ENDIF.

wa_keyinfo-header01 = 'PERNR'.

wa_keyinfo-item01 = 'PERNR'.

  • wa_keyinfo-item02 = 'SUBTY'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

is_layout = it_layout

it_fieldcat = it_field_cat

i_tabname_header = 'PA0008'

i_tabname_item = 'PA0002'

is_keyinfo = wa_keyinfo

TABLES

t_outtab_header = it_pa0008

t_outtab_item = it_pa0002.

ENDFORM. " DISPLY_DATA

Regards

Basheer

Read only

Former Member
0 Likes
488

Hi,

Just go through the functionality of this report.

&----


*& Report YVCHIERSEQ *

*& *

&----


*& *

*& *

&----


REPORT YVCHIERSEQ .

TYPE-POOLS:SLIS.

DATA:T_VBAK TYPE STANDARD TABLE OF VBAK INITIAL SIZE 0,

T_VBAP TYPE STANDARD TABLE OF VBAP INITIAL SIZE 0,

W_VBAK TYPE VBAK,

W_VBAP TYPE VBAP,

G_VBELN TYPE VBAK-VBELN,

W_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

W_KEYINFO TYPE SLIS_KEYINFO_ALV.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

SELECT-OPTIONS:S_VBELN FOR G_VBELN.

SELECTION-SCREEN END OF BLOCK B1.

INITIALIZATION.

CLEAR:W_VBAK,

W_VBAP.

REFRESH:T_VBAK,

T_VBAP.

START-OF-SELECTION.

PERFORM SUB_GET_VBAK.

PERFORM SUB_GET_VBAP.

PERFORM SUB_DISP_OUTPUT.

FORM SUB_GET_VBAK.

SELECT * FROM VBAK INTO TABLE T_VBAK WHERE VBELN IN S_VBELN.

ENDFORM.

FORM SUB_GET_VBAP.

SELECT * FROM VBAP INTO TABLE T_VBAP FOR ALL ENTRIES IN T_VBAK WHERE

VBELN = T_VBAK-VBELN.

ENDFORM.

FORM SUB_DISP_OUTPUT.

W_FIELDCAT-COL_POS = 1.

W_FIELDCAT-FIELDNAME = 'VBELN'.

W_FIELDCAT-SELTEXT_M = 'SALESORDER'.

W_FIELDCAT-TABNAME = 'VBAK'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 2.

W_FIELDCAT-FIELDNAME = 'ERNAM'.

W_FIELDCAT-SELTEXT_M = 'NAME'.

W_FIELDCAT-TABNAME = 'VBAK'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 3.

W_FIELDCAT-FIELDNAME = 'VBTYP'.

W_FIELDCAT-SELTEXT_M = 'SD CATEGORY'.

W_FIELDCAT-TABNAME = 'VBAK'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 4.

W_FIELDCAT-FIELDNAME = 'KUNNR'.

W_FIELDCAT-SELTEXT_M = 'SOLD TO PARTY'.

W_FIELDCAT-TABNAME = 'VBAK'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 5.

W_FIELDCAT-FIELDNAME = 'NETWR'.

W_FIELDCAT-SELTEXT_M = 'NET VALUE'.

W_FIELDCAT-TABNAME = 'VBAK'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

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

W_FIELDCAT-COL_POS = 1.

W_FIELDCAT-FIELDNAME = 'POSNR'.

W_FIELDCAT-SELTEXT_M = 'SALES ITEM'.

W_FIELDCAT-TABNAME = 'VBAP'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 2.

W_FIELDCAT-FIELDNAME = 'MATNR'.

W_FIELDCAT-SELTEXT_M = 'MATERIAL NO'.

W_FIELDCAT-TABNAME = 'VBAP'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 3.

W_FIELDCAT-FIELDNAME = 'MATKL'.

W_FIELDCAT-SELTEXT_M = 'MAT GROUP'.

W_FIELDCAT-TABNAME = 'VBAP'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_FIELDCAT-COL_POS = 4.

W_FIELDCAT-FIELDNAME = 'NETWR'.

W_FIELDCAT-SELTEXT_M = 'NET VALUE'.

W_FIELDCAT-TABNAME = 'VBAP'.

APPEND W_FIELDCAT TO T_FIELDCAT.

CLEAR W_FIELDCAT.

W_KEYINFO-HEADER01 = 'VBELN'.

W_KEYINFO-ITEM01 = 'VBELN'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

I_CALLBACK_PROGRAM = SY-CPROG

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • IS_LAYOUT =

IT_FIELDCAT = T_FIELDCAT

  • 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_EVENT_EXIT =

i_tabname_header = 'VBAK'

i_tabname_item = 'VBAP'

  • I_STRUCTURE_NAME_HEADER =

  • I_STRUCTURE_NAME_ITEM =

is_keyinfo = W_KEYINFO

  • 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 = T_VBAK

t_outtab_item = T_VBAP

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

Hope this might be helpful.

Read only

Former Member
0 Likes
487

Hi,

Go through this code,u can very easely understand .

TYPE-POOLS: slis.

TABLES : ekko, ekpo.

DATA : BEGIN OF i_ekko OCCURS 0,

ebeln LIKE ekko-ebeln,

ernam LIKE ekko-ernam,

bsart LIKE ekko-bsart,

var1,

END OF i_ekko.

DATA : BEGIN OF i_ekpo OCCURS 0,

ebeln LIKE ekpo-ebeln,

ebelp LIKE ekpo-ebelp,

matnr LIKE ekpo-matnr,

aedat LIKE ekpo-aedat,

var2,

END OF i_ekpo.

DATA : BEGIN OF i_final OCCURS 0,

ebeln LIKE ekko-ebeln,

ernam LIKE ekko-ernam,

bsart LIKE ekko-bsart,

ebelp LIKE ekpo-ebelp,

matnr LIKE ekpo-matnr,

aedat LIKE ekpo-aedat,

END OF i_final.

SELECT-OPTIONS : S_EBELN FOR EKKO-EBELN.

DATA : fcat TYPE slis_t_fieldcat_alv,

cat TYPE slis_fieldcat_alv.

DATA : LAYOUT1 TYPE SLIS_LAYOUT_ALV, "LAYOUT 1

KEY TYPE SLIS_KEYINFO_ALV , "KEY INFORMATION

GT_EVENT1 TYPE SLIS_T_EVENT.

START-OF-SELECTION.

PERFORM GETTING_DATA.

PERFORM append_field.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-CPROG

IS_LAYOUT = LAYOUT1

IT_FIELDCAT = FCAT

  • IT_EVENTS = GT_EVENT1

i_tabname_header = 'I_EKKO'

i_tabname_item = 'I_EKPO'

is_keyinfo = KEY

tables

t_outtab_header = I_EKKO

t_outtab_item = I_EKPO.

*&----


*

*& Form GETTING_DATA

&----


FORM GETTING_DATA .

SELECT EBELN BSART ERNAM UP TO 100 ROWS

INTO CORRESPONDING FIELDS OF TABLE I_EKKO FROM EKKO

WHERE EBELN IN S_EBELN.

SELECT EBELN EBELP MATNR AEDAT

INTO CORRESPONDING FIELDS OF TABLE I_EKPO FROM EKPO

FOR ALL ENTRIES IN I_EKKO WHERE EBELN = I_EKKO-EBELN .

SORT I_EKKO BY EBELN.

LOOP AT I_EKKO.

READ TABLE I_EKPO WITH KEY EBELN = I_EKKO-EBELN.

IF SY-SUBRC EQ 0.

MOVE: I_EKKO-EBELN TO I_FINAL-EBELN,

I_EKKO-BSART TO I_FINAL-BSART,

I_EKKO-ERNAM TO I_FINAL-ERNAM,

I_EKPO-EBELP TO I_FINAL-EBELP,

I_EKPO-MATNR TO I_FINAL-MATNR,

I_EKPO-AEDAT TO I_FINAL-AEDAT.

APPEND I_FINAL.

ENDIF.

ENDLOOP.

ENDFORM. " GETTING_DATA

&----


*& Form append_field

&----


  • text

----


FORM append_field .

CLEAR cat.

cat-col_pos = 1.

cat-fieldname = 'EBELN'.

cat-tabname = 'I_EKKO'.

cat-ref_fieldname = 'EBELN'.

cat-ref_tabname = 'EKKO'.

cat-key = 'X'. "define field as key

APPEND cat TO fcat.

CLEAR cat.

cat-col_pos = 2.

cat-fieldname = 'BSART'.

cat-tabname = 'I_EKKO'.

cat-ref_fieldname = 'BSART'.

cat-ref_tabname = 'EKKO'.

APPEND cat TO fcat.

CLEAR cat.

cat-col_pos = 3.

cat-fieldname = 'ERNAM'.

cat-tabname = 'I_EKKO'.

cat-ref_fieldname = 'ERNAM'.

cat-ref_tabname = 'EKKO'.

APPEND cat TO fcat.

CLEAR cat.

cat-col_pos = 4.

cat-fieldname = 'EBELP'.

cat-tabname = 'I_EKPO'.

cat-ref_fieldname = 'EBELP'.

cat-ref_tabname = 'EKPO'.

cat-key = 'X'. "define field as key

APPEND cat TO fcat.

CLEAR cat.

cat-col_pos = 5.

cat-fieldname = 'MATNR'.

cat-tabname = 'I_EKPO'.

cat-ref_fieldname = 'MATNR'.

cat-ref_tabname = 'EKPO'.

APPEND cat TO fcat.

CLEAR cat.

cat-col_pos = 6.

cat-fieldname = 'AEDAT'.

cat-tabname = 'I_EKPO'.

cat-ref_fieldname = 'AEDAT'.

cat-ref_tabname = 'EKPO'.

APPEND cat TO fcat.

CLEAR cat.

layout1-expand_fieldname = 'VAR1'.

layout1-lights_fieldname = '3'.

layout1-lights_tabname = 'I_EKPO'.

key-header01 = 'EBELN'.

key-item01 = 'EBELN'.

ENDFORM. " APPEND_FIELD

Reward if useful.

Regards,

Narasimha