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: 

definition of IMPORTING IS_KEYINFO in reuse_alv_hierseq_list_display

Former Member
0 Kudos

function reuse_alv_hierseq_list_display.
*"----------------------------------------------------------------------
*"  IMPORTING
*"     VALUE(IS_KEYINFO) TYPE  SLIS_KEYINFO_ALV

hi could anyone explain the purpose if this importing parameter in the FM and a definition of its usage. PLZZ

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Main purpose of IS_KEYINFO is to store the relationship between header and line item tables. i.e. key field name(s) that is common to both of these tables.

For reference see this sample code:

REPORT z_alv_hierseq_list.

TYPE-POOLS: slis. " ALV Global types

SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

PARAMETERS p_max(02) TYPE n DEFAULT '10' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

DATA :

  • 1st Table

BEGIN OF gt_vbak OCCURS 0,

vbeln LIKE vbak-vbeln, " Sales document

kunnr LIKE vbak-kunnr, " Sold-to party

netwr LIKE vbak-netwr, " Net Value of the Sales Order

----


START-OF-SELECTION.

  • Read data

SELECT * FROM vbak

UP TO p_max ROWS

INTO CORRESPONDING FIELDS OF TABLE gt_vbak.

IF NOT gt_vbak[] IS INITIAL.

SELECT * FROM vbap

INTO CORRESPONDING FIELDS OF TABLE gt_vbap

FOR ALL ENTRIES IN gt_vbak

WHERE vbeln = gt_vbak-vbeln.

ENDIF.

PERFORM f_display.

----


  • Form F_DISPLAY

----


FORM f_display.

  • Macro definition

DEFINE m_fieldcat.

ls_fieldcat-tabname = &1.

ls_fieldcat-fieldname = &2.

ls_fieldcat-ref_tabname = &3.

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

DEFINE m_sort.

ls_sort-tabname = &1.

ls_sort-fieldname = &2.

ls_sort-up = 'X'.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA:

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv," Field catalog

ls_sort TYPE slis_sortinfo_alv,

lt_sort TYPE slis_t_sortinfo_alv," Sort table

ls_keyinfo TYPE slis_keyinfo_alv,

ls_layout TYPE slis_layout_alv.

ls_layout-group_change_edit = 'X'.

ls_layout-colwidth_optimize = 'X'.

ls_layout-zebra = 'X'.

ls_layout-detail_popup = 'X'.

ls_layout-get_selinfos = 'X'.

  • Build field catalog and sort table

m_fieldcat 'GT_VBAK' 'VBELN' 'VBAK'.

m_fieldcat 'GT_VBAK' 'KUNNR' 'VBAK'.

m_fieldcat 'GT_VBAK' 'NETWR' 'VBAK'.

m_fieldcat 'GT_VBAK' 'ERDAT' 'VBAK'.

m_fieldcat 'GT_VBAK' 'WAERK' 'VBAK'.

m_fieldcat 'GT_VBAP' 'POSNR' 'VBAP'.

m_fieldcat 'GT_VBAP' 'MATNR' 'VBAP'.

m_fieldcat 'GT_VBAP' 'NETWR' 'VBAP'.

m_fieldcat 'GT_VBAP' 'WAERK' 'VBAP'.

m_sort 'GT_VBAK' 'KUNNR'.

m_sort 'GT_VBAP' 'NETWR'.

ls_keyinfo-header01 = 'VBELN'.

ls_keyinfo-item01 = 'VBELN'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'

is_layout = ls_layout

it_fieldcat = lt_fieldcat

it_sort = lt_sort

i_tabname_header = 'GT_VBAK'

i_tabname_item = 'GT_VBAP'

is_keyinfo = ls_keyinfo

TABLES

t_outtab_header = gt_vbak

t_outtab_item = gt_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. " F_LIST_DISPLAY

----


  • FORM USER_COMMAND *

----


FORM user_command USING i_ucomm LIKE sy-ucomm

is_selfield TYPE slis_selfield. "#EC CALLED

CASE i_ucomm.

WHEN '&IC1'. " Pick

CASE is_selfield-tabname.

WHEN 'GT_VBAP'.

WHEN 'GT_VBAK'.

READ TABLE gt_vbak INDEX is_selfield-tabindex.

IF sy-subrc EQ 0.

  • Sales order number

SET PARAMETER ID 'AUN' FIELD gt_vbak-vbeln.

  • Display Sales Order

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDCASE.

ENDFORM. " USER_COMMAND

Regards,

Joy.

2 REPLIES 2

former_member188827
Active Contributor
0 Kudos

This structure contains the header and item table field names which link the two tables (shared key).

Enter the foreign key field names in the fields KEYINFO-HEADERxx and KEYINFO-ITEMxx. The foreign key field names of the header and item tables are usually identical.

The item table has other key fields as well as the header table foreign key. These other key fields should also be named in this structure. The corresponding header table field (HEADERxx) must be SPACE.

Naming the other key fields guarantees a stable item table sort sequence.

plz reward points if dis helps

Former Member
0 Kudos

Main purpose of IS_KEYINFO is to store the relationship between header and line item tables. i.e. key field name(s) that is common to both of these tables.

For reference see this sample code:

REPORT z_alv_hierseq_list.

TYPE-POOLS: slis. " ALV Global types

SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

PARAMETERS p_max(02) TYPE n DEFAULT '10' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

DATA :

  • 1st Table

BEGIN OF gt_vbak OCCURS 0,

vbeln LIKE vbak-vbeln, " Sales document

kunnr LIKE vbak-kunnr, " Sold-to party

netwr LIKE vbak-netwr, " Net Value of the Sales Order

----


START-OF-SELECTION.

  • Read data

SELECT * FROM vbak

UP TO p_max ROWS

INTO CORRESPONDING FIELDS OF TABLE gt_vbak.

IF NOT gt_vbak[] IS INITIAL.

SELECT * FROM vbap

INTO CORRESPONDING FIELDS OF TABLE gt_vbap

FOR ALL ENTRIES IN gt_vbak

WHERE vbeln = gt_vbak-vbeln.

ENDIF.

PERFORM f_display.

----


  • Form F_DISPLAY

----


FORM f_display.

  • Macro definition

DEFINE m_fieldcat.

ls_fieldcat-tabname = &1.

ls_fieldcat-fieldname = &2.

ls_fieldcat-ref_tabname = &3.

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

DEFINE m_sort.

ls_sort-tabname = &1.

ls_sort-fieldname = &2.

ls_sort-up = 'X'.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA:

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv," Field catalog

ls_sort TYPE slis_sortinfo_alv,

lt_sort TYPE slis_t_sortinfo_alv," Sort table

ls_keyinfo TYPE slis_keyinfo_alv,

ls_layout TYPE slis_layout_alv.

ls_layout-group_change_edit = 'X'.

ls_layout-colwidth_optimize = 'X'.

ls_layout-zebra = 'X'.

ls_layout-detail_popup = 'X'.

ls_layout-get_selinfos = 'X'.

  • Build field catalog and sort table

m_fieldcat 'GT_VBAK' 'VBELN' 'VBAK'.

m_fieldcat 'GT_VBAK' 'KUNNR' 'VBAK'.

m_fieldcat 'GT_VBAK' 'NETWR' 'VBAK'.

m_fieldcat 'GT_VBAK' 'ERDAT' 'VBAK'.

m_fieldcat 'GT_VBAK' 'WAERK' 'VBAK'.

m_fieldcat 'GT_VBAP' 'POSNR' 'VBAP'.

m_fieldcat 'GT_VBAP' 'MATNR' 'VBAP'.

m_fieldcat 'GT_VBAP' 'NETWR' 'VBAP'.

m_fieldcat 'GT_VBAP' 'WAERK' 'VBAP'.

m_sort 'GT_VBAK' 'KUNNR'.

m_sort 'GT_VBAP' 'NETWR'.

ls_keyinfo-header01 = 'VBELN'.

ls_keyinfo-item01 = 'VBELN'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'

is_layout = ls_layout

it_fieldcat = lt_fieldcat

it_sort = lt_sort

i_tabname_header = 'GT_VBAK'

i_tabname_item = 'GT_VBAP'

is_keyinfo = ls_keyinfo

TABLES

t_outtab_header = gt_vbak

t_outtab_item = gt_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. " F_LIST_DISPLAY

----


  • FORM USER_COMMAND *

----


FORM user_command USING i_ucomm LIKE sy-ucomm

is_selfield TYPE slis_selfield. "#EC CALLED

CASE i_ucomm.

WHEN '&IC1'. " Pick

CASE is_selfield-tabname.

WHEN 'GT_VBAP'.

WHEN 'GT_VBAK'.

READ TABLE gt_vbak INDEX is_selfield-tabindex.

IF sy-subrc EQ 0.

  • Sales order number

SET PARAMETER ID 'AUN' FIELD gt_vbak-vbeln.

  • Display Sales Order

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDCASE.

ENDFORM. " USER_COMMAND

Regards,

Joy.