02-11-2008 7:01 AM
Please help me with the code. I am getting error dump and the error is 'field symbol has not been assigned'.
I am using two tables spfli and scarr to display data using ALV in heirarchy format.
TABLES:
spfli.
TYPE-POOLS:
slis.
DATA:
it_scarr TYPE STANDARD TABLE OF scarr,
it_spfli TYPE STANDARD TABLE OF spfli,
gt_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv.
data:
wa_keyinfo type slis_keyinfo_alv.
SELECT-OPTIONS:
s_carrid FOR spfli-carrid,
s_connid FOR spfli-connid.
START-OF-SELECTION.
PERFORM get_spfli.
PERFORM fill_fieldcat.
END-OF-SELECTION.
PERFORM display_data.
FORM display_data .
wa_keyinfo-header01 = 'CARRID'.
wa_keyinfo-item01 = 'CARRID'.
wa_keyinfo-header02 = SPACE.
wa_keyinfo-item02 = 'CONNID'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
IT_FIELDCAT = gt_fieldcat[]
i_tabname_header = 'SCARR'
i_tabname_item = 'SPFLI'
is_keyinfo = wa_keyinfo
tables
t_outtab_header = IT_SCARR[]
t_outtab_item = IT_SPFLI[].
IF sy-subrc <> 0.
ENDIF.
ENDFORM.
FORM get_spfli .
SELECT *
INTO TABLE it_spfli[]
FROM spfli
WHERE carrid in s_carrid
AND connid in s_connid.
if sy-subrc <> 0.
message i000(ydn) with 'no records found'.
leave list-processing.
endif.
SELECT *
INTO TABLE it_scarr[]
FROM scarr
FOR ALL ENTRIES IN it_spfli
WHERE carrid = it_spfli-carrid.
ENDFORM.
FORM fill_fieldcat .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'IT_SCARR'
i_structure_name = 'SCARR'
CHANGING
ct_fieldcat = gt_fieldcat[]
.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'IT_SPFLI'
i_structure_name = 'SPFLI'
CHANGING
ct_fieldcat = gt_fieldcat[]
.
IF sy-subrc <> 0.
ENDIF.
ENDFORM.
Please tell me what is wrong with the code.
Thanks in advance.
02-11-2008 7:23 AM
Hi, try this example and change this according to ur requirement.
HIERARCHICAL ALV REPORT.
TYPE-POOLS: SLIS.
DATA: BEGIN OF I_VBAK OCCURS 0,
VBELN LIKE VBAK-VBELN,
ERNAM LIKE VBAK-ERNAM,
ERDAT LIKE VBAK-ERDAT,
AUDAT LIKE VBAK-AUDAT,
VAR1,
END OF I_VBAK.
DATA: BEGIN OF I_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
CHARG LIKE VBAP-CHARG,
END OF I_VBAP.
DATA: FLDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
LAYOUT TYPE SLIS_LAYOUT_ALV,
KEY TYPE SLIS_KEYINFO_ALV.
SELECT VBELN ERNAM ERDAT AUDAT FROM VBAK
INTO CORRESPONDING FIELDS OF TABLE I_VBAK
UP TO 20 ROWS.
SELECT VBELN POSNR MATNR CHARG FROM VBAP
INTO CORRESPONDING FIELDS OF TABLE I_VBAP
UP TO 20 ROWS.
FLDCAT-FIELDNAME = 'VBELN'.
FLDCAT-TABNAME = 'I_VBAK'.
FLDCAT-REF_FIELDNAME = 'VBELN'.
FLDCAT-REF_TABNAME = 'VBAK'.
FLDCAT-SELTEXT_M = 'SALES DOC.'.
FLDCAT-COL_POS = 0.
FLDCAT-KEY = 'X'.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'ERNAM'.
FLDCAT-TABNAME = 'I_VBAK'.
FLDCAT-REF_FIELDNAME = 'ERNAM'.
FLDCAT-REF_TABNAME = 'VBAK'.
FLDCAT-SELTEXT_M = 'NAME OF PERSON'.
FLDCAT-COL_POS = 1.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'ERDAT'.
FLDCAT-TABNAME = 'I_VBAK'.
FLDCAT-REF_FIELDNAME = 'ERDAT'.
FLDCAT-REF_TABNAME = 'VBAK'.
FLDCAT-SELTEXT_M = 'RECORD DATE'.
FLDCAT-COL_POS = 2.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'AUDAT'.
FLDCAT-TABNAME = 'I_VBAK'.
FLDCAT-REF_FIELDNAME = 'AUDAT'.
FLDCAT-REF_TABNAME = 'VBAK'.
FLDCAT-SELTEXT_M = 'DOCUMENT DATE'.
FLDCAT-COL_POS = 3.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'POSNR'.
FLDCAT-TABNAME = 'I_VBAP'.
FLDCAT-REF_FIELDNAME = 'POSNR'.
FLDCAT-REF_TABNAME = 'VBAP'.
FLDCAT-SELTEXT_M = 'SALES DOC ITEM'.
FLDCAT-COL_POS = 4.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'MATNR'.
FLDCAT-TABNAME = 'I_VBAP'.
FLDCAT-REF_FIELDNAME = 'MATNR'.
FLDCAT-REF_TABNAME = 'VBAP'.
FLDCAT-SELTEXT_M = 'MATERIAL NO'.
FLDCAT-COL_POS = 5.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'CHARG'.
FLDCAT-TABNAME = 'I_VBAP'.
FLDCAT-REF_FIELDNAME = 'CHARG'.
FLDCAT-REF_TABNAME = 'VBAP'.
FLDCAT-SELTEXT_M = 'BATCH NUMBER'.
FLDCAT-COL_POS = 6.
APPEND FLDCAT.
CLEAR FLDCAT.
LAYOUT-EXPAND_FIELDNAME = 'VAR1'.
KEY-HEADER01 = 'VBELN'.
KEY-ITEM01 = 'VBELN'.
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 = FLDCAT[]
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 = 'I_VBAK'
I_TABNAME_ITEM = 'I_VBAP'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
IS_KEYINFO = KEY
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 = I_VBAK
T_OUTTAB_ITEM = I_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.
Reward points,if it is useful.
Thanks,
chandu.
02-11-2008 7:23 AM
Hi, try this example and change this according to ur requirement.
HIERARCHICAL ALV REPORT.
TYPE-POOLS: SLIS.
DATA: BEGIN OF I_VBAK OCCURS 0,
VBELN LIKE VBAK-VBELN,
ERNAM LIKE VBAK-ERNAM,
ERDAT LIKE VBAK-ERDAT,
AUDAT LIKE VBAK-AUDAT,
VAR1,
END OF I_VBAK.
DATA: BEGIN OF I_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
CHARG LIKE VBAP-CHARG,
END OF I_VBAP.
DATA: FLDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
LAYOUT TYPE SLIS_LAYOUT_ALV,
KEY TYPE SLIS_KEYINFO_ALV.
SELECT VBELN ERNAM ERDAT AUDAT FROM VBAK
INTO CORRESPONDING FIELDS OF TABLE I_VBAK
UP TO 20 ROWS.
SELECT VBELN POSNR MATNR CHARG FROM VBAP
INTO CORRESPONDING FIELDS OF TABLE I_VBAP
UP TO 20 ROWS.
FLDCAT-FIELDNAME = 'VBELN'.
FLDCAT-TABNAME = 'I_VBAK'.
FLDCAT-REF_FIELDNAME = 'VBELN'.
FLDCAT-REF_TABNAME = 'VBAK'.
FLDCAT-SELTEXT_M = 'SALES DOC.'.
FLDCAT-COL_POS = 0.
FLDCAT-KEY = 'X'.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'ERNAM'.
FLDCAT-TABNAME = 'I_VBAK'.
FLDCAT-REF_FIELDNAME = 'ERNAM'.
FLDCAT-REF_TABNAME = 'VBAK'.
FLDCAT-SELTEXT_M = 'NAME OF PERSON'.
FLDCAT-COL_POS = 1.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'ERDAT'.
FLDCAT-TABNAME = 'I_VBAK'.
FLDCAT-REF_FIELDNAME = 'ERDAT'.
FLDCAT-REF_TABNAME = 'VBAK'.
FLDCAT-SELTEXT_M = 'RECORD DATE'.
FLDCAT-COL_POS = 2.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'AUDAT'.
FLDCAT-TABNAME = 'I_VBAK'.
FLDCAT-REF_FIELDNAME = 'AUDAT'.
FLDCAT-REF_TABNAME = 'VBAK'.
FLDCAT-SELTEXT_M = 'DOCUMENT DATE'.
FLDCAT-COL_POS = 3.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'POSNR'.
FLDCAT-TABNAME = 'I_VBAP'.
FLDCAT-REF_FIELDNAME = 'POSNR'.
FLDCAT-REF_TABNAME = 'VBAP'.
FLDCAT-SELTEXT_M = 'SALES DOC ITEM'.
FLDCAT-COL_POS = 4.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'MATNR'.
FLDCAT-TABNAME = 'I_VBAP'.
FLDCAT-REF_FIELDNAME = 'MATNR'.
FLDCAT-REF_TABNAME = 'VBAP'.
FLDCAT-SELTEXT_M = 'MATERIAL NO'.
FLDCAT-COL_POS = 5.
APPEND FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'CHARG'.
FLDCAT-TABNAME = 'I_VBAP'.
FLDCAT-REF_FIELDNAME = 'CHARG'.
FLDCAT-REF_TABNAME = 'VBAP'.
FLDCAT-SELTEXT_M = 'BATCH NUMBER'.
FLDCAT-COL_POS = 6.
APPEND FLDCAT.
CLEAR FLDCAT.
LAYOUT-EXPAND_FIELDNAME = 'VAR1'.
KEY-HEADER01 = 'VBELN'.
KEY-ITEM01 = 'VBELN'.
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 = FLDCAT[]
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 = 'I_VBAK'
I_TABNAME_ITEM = 'I_VBAP'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
IS_KEYINFO = KEY
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 = I_VBAK
T_OUTTAB_ITEM = I_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.
Reward points,if it is useful.
Thanks,
chandu.
02-11-2008 7:35 AM
I have modified your program and it is not giving dump now.
*&---------------------------------------------------------------------*
*& Report ZTEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ztest.
TABLES:
spfli.
TYPE-POOLS:
slis.
DATA:
it_scarr TYPE STANDARD TABLE OF scarr,
it_spfli TYPE STANDARD TABLE OF spfli,
gt_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv.
DATA:
wa_keyinfo TYPE slis_keyinfo_alv.
SELECT-OPTIONS:
s_carrid FOR spfli-carrid,
s_connid FOR spfli-connid.
START-OF-SELECTION.
PERFORM get_spfli.
PERFORM fill_fieldcat.
END-OF-SELECTION.
PERFORM display_data.
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_data .
wa_keyinfo-header01 = 'CARRID'.
wa_keyinfo-item01 = 'CARRID'.
wa_keyinfo-header02 = space.
wa_keyinfo-item02 = 'CONNID'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
it_fieldcat = gt_fieldcat[]
i_tabname_header = 'SCARR'
i_tabname_item = 'SPFLI'
is_keyinfo = wa_keyinfo
TABLES
t_outtab_header = it_scarr[]
t_outtab_item = it_spfli[].
IF sy-subrc EQ 0.
ENDIF.
ENDFORM. "display_data
*&---------------------------------------------------------------------*
*& Form get_spfli
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_spfli .
SELECT *
INTO TABLE it_spfli[]
FROM spfli
WHERE carrid IN s_carrid
AND connid IN s_connid.
IF sy-subrc EQ 0.
MESSAGE i000(ydn) WITH 'no records found'.
LEAVE LIST-PROCESSING.
ENDIF.
SELECT *
INTO TABLE it_scarr[]
FROM scarr
FOR ALL ENTRIES IN it_spfli
WHERE carrid = it_spfli-carrid.
ENDFORM. "get_spfli
*&---------------------------------------------------------------------*
*& Form fill_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fill_fieldcat .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'IT_SCARR'
i_structure_name = 'SCARR'
CHANGING
ct_fieldcat = gt_fieldcat[].
IF sy-subrc EQ 0.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'IT_SPFLI'
i_structure_name = 'SPFLI'
CHANGING
ct_fieldcat = gt_fieldcat[].
IF sy-subrc EQ 0.
ENDIF.
ENDFORM. "fill_fieldcat
02-11-2008 7:40 AM
Hi Abhishek,
Thank you so much for your code. I need to log on to server to try it out. So, please tell me what is wrong in my code. I will get back once i try it.
Thanks again.