2008 Mar 17 10:17 AM
Hi guys,
I'm new to ABAP and trying now to create a simple ALV report, but I'm getting exception in the second ALV call function statement. This code is downloaded from the web with some modifications, so I thought it will work, but something is not ok. Can you please give me an advice?
Thank you, AR
the code:
REPORT ZTEST.
type-pools: slis.
types: begin of person,
name(20) type c,
surname(40) type c,
end of person.
data lt_person type table of person.
data ls_person type person.
data int_fcat type SLIS_T_FIELDCAT_ALV.
ls_person-name = 'xx'.
ls_person-surname = 'yy'.
append ls_person to lt_person.
ls_person-name = 'tt'.
ls_person-surname = 'ww'.
append ls_person to lt_person.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = sy-repid
I_INTERNAL_TABNAME = 'lt_person'
CHANGING
CT_FIELDCAT = int_fcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
if sy-subrc <> 0.
write: 'S:', sy-subrc.
endif.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
IT_FIELDCAT = int_fcat
I_SAVE = 'A'
TABLES
T_OUTTAB = lt_person
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
if sy-subrc <> 0.
write: 'D:', sy-subrc.
endif.
2008 Mar 17 10:25 AM
hi,
its having problem in REUSE_ALV_FIELDCATALOG_MERGE
try like this
TYPE-POOLS: slis.
TYPES: BEGIN OF person,
name(20) TYPE c,
surname(40) TYPE c,
END OF person.
DATA lt_person TYPE TABLE OF person.
DATA ls_person TYPE person.
DATA int_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
ls_person-name = 'xx'.
ls_person-surname = 'yy'.
APPEND ls_person TO lt_person.
ls_person-name = 'tt'.
ls_person-surname = 'ww'.
APPEND ls_person TO lt_person.
*CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
* EXPORTING
* i_program_name = sy-repid
* i_internal_tabname = 'PERSON'
* CHANGING
* ct_fieldcat = int_fcat
* EXCEPTIONS
* inconsistent_interface = 1
* program_error = 2
* OTHERS = 3.
*IF sy-subrc = 0.
* WRITE: 'S:', sy-subrc.
*ENDIF.
int_fcat-tabname = 'LT_PERSON'.
int_fcat-fieldname = 'NAME'.
int_fcat-seltext_m = 'Name'.
APPEND int_fcat.
int_fcat-tabname = 'LT_PERSON'.
int_fcat-fieldname = 'SURNAME'.
int_fcat-seltext_m = 'Surname'.
APPEND int_fcat.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = int_fcat[]
i_save = 'A'
TABLES
t_outtab = lt_person
EXCEPTIONS
program_error = 1
OTHERS = 2.
*IF sy-subrc = 0.
* WRITE: 'D:', sy-subrc.
*ENDIF.
reward if usefull..
hi,
its having problem in REUSE_ALV_FIELDCATALOG_MERGE
try like this
TYPE-POOLS: slis.
TYPES: BEGIN OF person,
name(20) TYPE c,
surname(40) TYPE c,
END OF person.
DATA lt_person TYPE TABLE OF person.
DATA ls_person TYPE person.
DATA int_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
ls_person-name = 'xx'.
ls_person-surname = 'yy'.
APPEND ls_person TO lt_person.
ls_person-name = 'tt'.
ls_person-surname = 'ww'.
APPEND ls_person TO lt_person.
*CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
* EXPORTING
* i_program_name = sy-repid
* i_internal_tabname = 'PERSON'
* CHANGING
* ct_fieldcat = int_fcat
* EXCEPTIONS
* inconsistent_interface = 1
* program_error = 2
* OTHERS = 3.
*IF sy-subrc = 0.
* WRITE: 'S:', sy-subrc.
*ENDIF.
int_fcat-tabname = 'LT_PERSON'.
int_fcat-fieldname = 'NAME'.
int_fcat-seltext_m = 'Name'.
APPEND int_fcat.
int_fcat-tabname = 'LT_PERSON'.
int_fcat-fieldname = 'SURNAME'.
int_fcat-seltext_m = 'Surname'.
APPEND int_fcat.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = int_fcat[]
i_save = 'A'
TABLES
t_outtab = lt_person
EXCEPTIONS
program_error = 1
OTHERS = 2.
*IF sy-subrc = 0.
* WRITE: 'D:', sy-subrc.
*ENDIF.
reward if usefull..
2008 Mar 17 10:20 AM
Hi
What kind of error do you get?
Please add additional exceptions to the function modules so that you could have more precise information on the error.
Rgds
Mat
2008 Mar 17 10:25 AM
hi,
its having problem in REUSE_ALV_FIELDCATALOG_MERGE
try like this
TYPE-POOLS: slis.
TYPES: BEGIN OF person,
name(20) TYPE c,
surname(40) TYPE c,
END OF person.
DATA lt_person TYPE TABLE OF person.
DATA ls_person TYPE person.
DATA int_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
ls_person-name = 'xx'.
ls_person-surname = 'yy'.
APPEND ls_person TO lt_person.
ls_person-name = 'tt'.
ls_person-surname = 'ww'.
APPEND ls_person TO lt_person.
*CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
* EXPORTING
* i_program_name = sy-repid
* i_internal_tabname = 'PERSON'
* CHANGING
* ct_fieldcat = int_fcat
* EXCEPTIONS
* inconsistent_interface = 1
* program_error = 2
* OTHERS = 3.
*IF sy-subrc = 0.
* WRITE: 'S:', sy-subrc.
*ENDIF.
int_fcat-tabname = 'LT_PERSON'.
int_fcat-fieldname = 'NAME'.
int_fcat-seltext_m = 'Name'.
APPEND int_fcat.
int_fcat-tabname = 'LT_PERSON'.
int_fcat-fieldname = 'SURNAME'.
int_fcat-seltext_m = 'Surname'.
APPEND int_fcat.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = int_fcat[]
i_save = 'A'
TABLES
t_outtab = lt_person
EXCEPTIONS
program_error = 1
OTHERS = 2.
*IF sy-subrc = 0.
* WRITE: 'D:', sy-subrc.
*ENDIF.
reward if usefull..
2008 Mar 17 10:44 AM
Dhwani,
thanx, just one question: why is this working w/o using the REUSE_ALV_FIELDCATALOG_MERGE FM? I've read, that it is mnecessary to build the catalogue. So when to use this FM?
Thank you, AR
2008 Mar 17 10:50 AM
hi,
ya its compulsary to build fieldcata log but its not necessary to use FM REUSE_ALV_FIELDCATALOG_MERGE for building field catalog..
i have never use this function module to create fieldcat...
here is the code for simple ALV
Hope this will be helpfull to u.
*&---------------------------------------------------------------------*
*& Report ZALV_DS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zalv_ds LINE-SIZE 35.
TYPE-POOLS:slis.
TABLES:mara,
makt,
marc.
DATA:BEGIN OF itab OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
werks LIKE marc-werks,
mtart LIKE mara-mtart,
matkl LIKE mara-matkl,
meins LIKE mara-meins,
ntgew LIKE mara-ntgew,
cellcolors TYPE lvc_t_scol,
END OF itab.
DATA:t_fcat TYPE slis_t_fieldcat_alv,
t_eve TYPE slis_t_event.
DATA : st_layout TYPE slis_layout_alv.
SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:mat FOR mara-matnr. " no intervals no-extension.
*PARAMETERS:mat LIKE mara-matnr.
SELECTION-SCREEN:END OF BLOCK blk1.
INITIALIZATION.
PERFORM build_cata USING t_fcat.
PERFORM build_event.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM display_data.
*&---------------------------------------------------------------------*
*& Form build_cata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TEMP_FCAT text
*----------------------------------------------------------------------*
FORM build_cata USING temp_fcat TYPE slis_t_fieldcat_alv.
sy-tvar0 = sy-uname.
WRITE sy-datum TO sy-tvar1.
DATA:wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-ref_tabname = 'MARA'.
wa_fcat-ref_fieldname = 'MATNR'.
wa_fcat-col_pos = 1.
wa_fcat-seltext_m = 'Material'.
wa_fcat-input = 'X'.
wa_fcat-edit = 'X'.
APPEND wa_fcat TO temp_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MAKTX'.
wa_fcat-seltext_m = 'Description'.
wa_fcat-fix_column = 'x'.
wa_fcat-key = 'X'. "To color a column
wa_fcat-edit = ''.
APPEND wa_fcat TO temp_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'WERKS'.
wa_fcat-seltext_m = 'Plant'.
wa_fcat-key = ' '.
APPEND wa_fcat TO temp_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MTART'.
wa_fcat-ddic_outputlen = 4.
wa_fcat-row_pos = 2.
APPEND wa_fcat TO temp_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MATKL'.
wa_fcat-ref_tabname = 'MARA'.
wa_fcat-ref_fieldname = 'MATKL'.
wa_fcat-seltext_m = 'Group'.
APPEND wa_fcat TO temp_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MEINS'.
wa_fcat-ref_tabname = ' '.
wa_fcat-ref_fieldname = ' '.
wa_fcat-row_pos = 2.
wa_fcat-seltext_m = 'Measurement Unit'.
APPEND wa_fcat TO temp_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'NTGEW'.
wa_fcat-seltext_m = 'Net Value'.
wa_fcat-row_pos = 2.
wa_fcat-no_out = ' '.
APPEND wa_fcat TO temp_fcat.
ENDFORM. "build_cata
*&---------------------------------------------------------------------*
*& Form data_retrieval
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM data_retrieval.
SELECT mara~matnr mara~mtart mara~matkl mara~meins mara~ntgew
makt~maktx marc~werks
INTO CORRESPONDING FIELDS OF TABLE itab
FROM mara INNER JOIN makt ON
mara~matnr = makt~matnr
INNER JOIN marc ON
mara~matnr = marc~matnr
WHERE mara~matnr IN mat.
SORT itab BY matnr.
DELETE ADJACENT DUPLICATES FROM itab.
ENDFORM. "data_retrieval
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_data.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'ZALV_DS'
it_fieldcat = t_fcat
TABLES
t_outtab = itab
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
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |