2008 May 08 5:54 AM
Hi,
Field catalog after function module call is being populated with zero lines.
DATA : begin of int_marc OCCURS 0,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
bwtty TYPE marc-bwtty,
lgort TYPE mard-lgort,
end of int_marc.
DATA : int_fieldcat TYPE slis_t_fieldcat_alv.
.
.
.
.
DATA : ws_tabname TYPE slis_tabname VALUE 'INT_MARC',
ws_nam1 TYPE sy-repid,
ws_nam2 TYPE trdir-name.
MOVE sy-repid to ws_nam1.
MOVE sy-repid to ws_nam2.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = ws_nam1
I_INTERNAL_TABNAME = ws_tabname
I_STRUCTURE_NAME = 'X_MARC'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = ws_nam2
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = int_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
In debug mode int_fieldcat is 0x372
My question - how to populate int_fieldcat
Hi,
Field catalog after function module call is being populated with zero lines.
DATA : begin of int_marc OCCURS 0,
matnr TYPE marc-matnr,
werks TYPE marc-werks,
bwtty TYPE marc-bwtty,
lgort TYPE mard-lgort,
end of int_marc.
DATA : int_fieldcat TYPE slis_t_fieldcat_alv.
.
.
.
.
DATA : ws_tabname TYPE slis_tabname VALUE 'INT_MARC',
ws_nam1 TYPE sy-repid,
ws_nam2 TYPE trdir-name.
MOVE sy-repid to ws_nam1.
MOVE sy-repid to ws_nam2.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = ws_nam1
I_INTERNAL_TABNAME = ws_tabname
I_STRUCTURE_NAME = 'X_MARC'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = ws_nam2
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = int_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
In debug mode int_fieldcat is 0x372
My question - how to populate int_fieldcat
2008 May 08 5:57 AM
2008 May 08 6:25 AM
Hi,
Check the following code:
Report ZDEMO_ALVGRID *
*& *
&---------------------------------------------------------------------
*& *
*& Example of a simple ALV Grid Report *
*& ................................... *
*& *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
&---------------------------------------------------------------------
REPORT zdemo_alvgrid .
TABLES: ekko.
type-pools: slis. "ALV Declarations
*Data Declaration
*----------------
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid,
gt_events type slis_t_event,
gd_prntparams type slis_print_alv.
************************************************************************
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform build_events.
perform build_print_params.
perform display_alv_report.
&---------------------------------------------------------------------
*& Form BUILD_FIELDCATALOG
&---------------------------------------------------------------------
Build Fieldcatalog for ALV Report
--------------------------------------------------------------------------------
form build_fieldcatalog.
There are a number of ways to create a fieldcat.
For the purpose of this example i will build the fieldcatalog manualy
by populating the internal table fields individually and then
appending the rows. This method can be the most time consuming but can
also allow you more control of the final product.
Beware though, you need to ensure that all fields required are
populated. When using some of functionality available via ALV, such as
total. You may need to provide more information than if you were
simply displaying the result
I.e. Field type may be required in-order for
the 'TOTAL' function to work.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO Item'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'Item change date'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'PO quantity'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Order Unit'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = 'Net Price'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 15.
fieldcatalog-datatype = 'CURR'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " BUILD_FIELDCATALOG
&---------------------------------------------------------------------
*& Form BUILD_LAYOUT
&---------------------------------------------------------------------
Build layout for ALV grid report
--------------------------------------------------------------------------------
form build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-totals_only = 'X'.
gd_layout-f2code = 'DISP'. "Sets fcode for when double
"click(press f2)
gd_layout-zebra = 'X'.
gd_layout-group_change_edit = 'X'.
gd_layout-header_text = 'helllllo'.
endform. " BUILD_LAYOUT
&---------------------------------------------------------------------
*& Form DISPLAY_ALV_REPORT
&---------------------------------------------------------------------
Display report using ALV grid
--------------------------------------------------------------------------------
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_special_groups = gd_tabgroup
it_events = gt_events
is_print = gd_prntparams
i_save = 'X'
is_variant = z_template
tables
t_outtab = it_ekko
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_REPORT
&---------------------------------------------------------------------
*& Form DATA_RETRIEVAL
&---------------------------------------------------------------------
Retrieve data form EKPO table and populate itab it_ekko
--------------------------------------------------------------------------------
form data_retrieval.
select ebeln ebelp statu aedat matnr menge meins netpr peinh
up to 10 rows
from ekpo
into table it_ekko.
endform. " DATA_RETRIEVAL
--------------------------------------------------------------------------------
Form TOP-OF-PAGE *
--------------------------------------------------------------------------------
ALV Report Header *
--------------------------------------------------------------------------------
Form top-of-page.
*ALV Header declarations
data: t_header type slis_t_listheader,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c.
Title
wa_header-typ = 'H'.
wa_header-info = 'EKKO Table Report'.
append wa_header to t_header.
clear wa_header.
Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
append wa_header to t_header.
clear: wa_header.
Total No. of Records Selected
describe table it_ekko lines ld_lines.
ld_linesc = ld_lines.
concatenate 'Total No. of Records Selected: ' ld_linesc
into t_line separated by space.
wa_header-typ = 'A'.
wa_header-info = t_line.
append wa_header to t_header.
clear: wa_header, t_line.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_header.
i_logo = 'Z_LOGO'.
endform.
--------------------------------------------------------------------------------
FORM USER_COMMAND *
--------------------------------------------------------------------------------
--> R_UCOMM *
--> RS_SELFIELD *
--------------------------------------------------------------------------------
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
Check function code
CASE r_ucomm.
WHEN '&IC1'.
Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'EBELN'.
Read data table, using index of row user clicked on
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
Set parameter ID for transaction screen field
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
&---------------------------------------------------------------------
*& Form BUILD_EVENTS
&---------------------------------------------------------------------
Build events table
--------------------------------------------------------------------------------
form build_events.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gt_events[].
read table gt_events with key name = slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move 'END_OF_PAGE' to ls_event-form.
append ls_event to gt_events.
endif.
read table gt_events with key name = slis_ev_end_of_list
into ls_event.
if sy-subrc = 0.
move 'END_OF_LIST' to ls_event-form.
append ls_event to gt_events.
endif.
endform. " BUILD_EVENTS
&---------------------------------------------------------------------
*& Form BUILD_PRINT_PARAMS
&---------------------------------------------------------------------
Setup print parameters
--------------------------------------------------------------------------------
form build_print_params.
gd_prntparams-reserve_lines = '3'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
endform. " BUILD_PRINT_PARAMS
&---------------------------------------------------------------------
*& Form END_OF_PAGE
&---------------------------------------------------------------------
form END_OF_PAGE.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
write: sy-uline(50).
skip.
write:/40 'Page:', sy-pagno .
endform.
&---------------------------------------------------------------------
*& Form END_OF_LIST
&---------------------------------------------------------------------
form END_OF_LIST.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
skip.
write:/40 'Page:', sy-pagno .
endform.Regards
Kannaiah
2008 May 08 6:36 AM
Hi ,
you can use the FM only when
internal table is having structure equivalent to DB table
or, uyou can use can use the structure......
refer the following sample code...
&----
*& Report ZUK_WIP04_REPORT4
*&
&----
*&
*&
&----
REPORT ZUK_WIP04_REPORT4 NO STANDARD PAGE HEADING MESSAGE-ID ZMSG44
LINE-SIZE 120 LINE-COUNT 65(3) .
TABLES : ZCRICKET.
TYPE-POOLS : SLIS.
DATA : V_REPID LIKE SY-REPID.
DATA : IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
work areas
DATA : W_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
W_FIELDCAT1 TYPE SLIS_FIELDCAT_ALV,
W_EVENTS TYPE SLIS_ALV_EVENT,
W_EVENTS1 TYPE SLIS_ALV_EVENT.
LAYOUT
DATA : I_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA : I_LAYOUT1 TYPE SLIS_LAYOUT_ALV.
table bodys
DATA : I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
I_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
I_EVENTS TYPE SLIS_T_EVENT,
I_EVENTS1 TYPE SLIS_T_EVENT,
I_LISTHEADER TYPE SLIS_T_LISTHEADER.
itab
DATA : ITAB LIKE ZCRICKET OCCURS 0 WITH HEADER LINE.
DATA : ITAB1 LIKE ZCRICKET OCCURS 0 WITH HEADER LINE.
*************************************************************************
Data Declerations
*************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : R1 RADIOBUTTON GROUP G1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(20) TEXT-002 FOR FIELD R1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : R2 RADIOBUTTON GROUP G1 .
SELECTION-SCREEN COMMENT 5(20) TEXT-003 FOR FIELD R2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-004.
SELECT-OPTIONS : S_RANK FOR ZCRICKET-RANK OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B2.
***********************************************************************************
initialization
***********************************************************************************
INITIALIZATION.
V_REPID = SY-REPID.
S_RANK-LOW = 1.
S_RANK-HIGH = 10.
APPEND S_RANK.
CLEAR S_RANK.
PERFORM BUILD-LAYOUT.
PERFORM BUILD-FIELDCAT.
***************************************************************************************
at selection-screen
***************************************************************************************
AT SELECTION-SCREEN.
SELECT SINGLE *
FROM ZCRICKET
INTO ZCRICKET
WHERE RANK IN S_RANK.
IF SY-SUBRC NE 0.
MESSAGE I999 WITH 'Enter valid rank no'.
ENDIF.
***************************************************************************************
start-of-selection
***************************************************************************************
START-OF-SELECTION.
IF R1 = 'X'.
PERFORM DATA-RETREIVAL.
PERFORM GRID-DISPLAY.
ENDIF.
IF R2 = 'X'.
PERFORM DATA-RETREIVAL1.
PERFORM LIST-DISPLAY.
ENDIF.
&----
*& Form DATA-RETREIVAL
&----
text
----
--> p1 text
<-- p2 text
----
FORM DATA-RETREIVAL .
SELECT RANK
NAME
COUNTRY
RUNS
WICKETS
FROM ZCRICKET
INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE RANK IN S_RANK.
IF SY-SUBRC NE 0.
MESSAGE I999 WITH 'Query failed--Honey!'.
ENDIF.
ENDFORM. " DATA-RETREIVAL
FORM DATA-RETREIVAL1 .
SELECT RANK
NAME
COUNTRY
RUNS
WICKETS
FROM ZCRICKET
INTO CORRESPONDING FIELDS OF TABLE ITAB
WHERE RANK IN S_RANK.
IF SY-SUBRC NE 0.
MESSAGE I999 WITH 'Query failed--Honey!'.
ENDIF.
ENDFORM. " DATA-RETREIVAL1
&----
*& Form BUILD-LAYOUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM BUILD-LAYOUT .
I_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
I_LAYOUT-ZEBRA = 'X'.
ENDFORM. " BUILD-LAYOUT
&----
*& Form BUILD-FIELDCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM BUILD-FIELDCAT .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = V_REPID
I_INTERNAL_TABNAME =
I_STRUCTURE_NAME = 'ZCRICKET'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = I_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. " BUILD-FIELDCAT
&----
*& Form GRID-DISPLAY
&----
text
----
--> p1 text
<-- p2 text
----
FORM GRID-DISPLAY .
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'Cricket details'
I_GRID_SETTINGS =
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = I_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
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. " GRID-DISPLAY
&----
*& Form LIST-DISPLAY
&----
text
----
--> p1 text
<-- p2 text
----
FORM LIST-DISPLAY .
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = I_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IR_SALV_LIST_ADAPTER =
IT_EXCEPT_QINFO =
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
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.
reward if helpful
Rgds
umakanth
2008 May 08 6:48 AM
HI,
You have just declare the fieldcat but u r not fill the fieldcat table.
U have to fill the fieldcat table with your requirement like this
fint_fieldcat -fieldname = 'EBELN'.
int_fieldcat -seltext_m = 'Purchase Order'.
int_fieldcat -col_pos = 0.
int_fieldcat -outputlen = 10.
int_fieldcat -emphasize = 'X'.
int_fieldcat -do_sum = 'X'.
int_fieldcat -no_zero = 'X'.
append int_fieldcat.
clear int_fieldcat.
Thanks.