2008 Apr 08 3:12 AM
Hi
in the following report i need to display it_detail in to ALV format. How to do? Pls help me
*get data
START-OF-SELECTION.
IF p_detail = 'X'.
PERFORM get_data.
ELSE.
PERFORM get_data.
ENDIF.
&----
*& Form get_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data.
SELECT bukrs budat belnr monat blart waers
INTO TABLE it_bkpf
FROM bkpf
WHERE bukrs = '012'
AND blart IN s_blart
AND budat IN s_budat
AND waers IN s_waers.
IF NOT it_bkpf[] IS INITIAL.
SELECT bukrs belnr werks saknr aufnr dmbtr sgtxt
INTO TABLE it_bseg
FROM bseg
FOR ALL ENTRIES IN it_bkpf
WHERE belnr = it_bkpf-belnr
AND valut = it_bkpf-budat
AND bukrs = '012'
AND werks = '1201'
AND saknr IN s_saknr
AND shkzg = 'H'.
ENDIF.
LOOP AT it_bkpf.
READ TABLE it_bseg WITH KEY
belnr = it_bkpf-belnr BINARY SEARCH.
IF sy-subrc = 0.
it_detail-budat = it_bkpf-budat. "posting date
it_detail-period = it_bkpf-budat+0(6).
it_detail-saknr = it_bseg-saknr.
it_detail-aufnr = it_bseg-aufnr.
it_detail-sgtxt = it_bseg-sgtxt.
it_detail-blart = it_bkpf-blart. " Document Type
it_detail-dmbtr = it_bseg-dmbtr.
it_detail-waers = it_bkpf-waers.
APPEND it_detail.
CLEAR it_detail.
ENDIF.
ENDLOOP.
ENDFORM. " get_data
2008 Apr 08 3:56 AM
Kumar k,
Please have a look at the sample code including ur subroutine to fetch data from database.
Check the comments wherever those are needed i have included
Let me know if u have any problem while doing ALV.
Regards,
Venkat.O
REPORT zvenkat_test1.
*&---------------------------------------------------------------------*
" You program variables internal and Work area declarations.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
" ALV Declarations
*----------------------------------------------------------------------*
* Types Pools
TYPE-POOLS:
slis.
* Types
TYPES:
t_fieldcat TYPE slis_fieldcat_alv,
t_events TYPE slis_alv_event,
t_layout TYPE slis_layout_alv.
* Workareas
DATA:
w_fieldcat TYPE t_fieldcat,
w_events TYPE t_events,
w_layout TYPE t_layout.
* Internal Tables
DATA:
i_fieldcat TYPE STANDARD TABLE OF t_fieldcat,
i_events TYPE STANDARD TABLE OF t_events.
START-OF-SELECTION.
"You program Logic to fetch data from Database and do modifications and prepare \
" final internal table to display using ALV.
IF p_detail = 'X'.
PERFORM get_data.
ELSE.
PERFORM get_data.
ENDIF.
"Once you get the data from the Database table and read to display
" Follow the steps to create ALV.
END-OF-SELECTION.
"&---------------------------------------------------------------------*
" Fieldcatalog Internal table
" ------------
" 1. It contains descriptions of the list output fields
" (usually a subset of the internal output table fields).
" 2. A field catalog is required for every ALV list output.
"&---------------------------------------------------------------------*
PERFORM build_fieldcatalog_table.
"&---------------------------------------------------------------------*
" Events
" ------
" 1. When we use ALV,certain events TOP-OF-PAGE ,END-OF-PAGE,
" AT LINE-SELECTION,AT USER-COMMANDs are not triggered.
" 2. To perform those Functions ,we have to build Events table and
" pass this table through REUSE_ALV_LIST_DISPALY Function.
"&---------------------------------------------------------------------*
PERFORM build_events_table.
"&---------------------------------------------------------------------*
" Display ALV
" ------
" 1. We use REUSE_ALV_LIST_DISPLAY function module to display as normal output
" 2. We use REUSE_ALV_GRID_DISPLAY function module to display in grid format
"&---------------------------------------------------------------------*
PERFORM display_data.
*&---------------------------------------------------------------------*
*& Form build_fieldcatalog_table
*&---------------------------------------------------------------------*
FORM build_fieldcatalog_table .
CLEAR :
w_fieldcat,
i_fieldcat[].
w_fieldcat-col_pos = 1 .
w_fieldcat-fieldname = 'WERKS' . "Column name as it is in Final internal table
w_fieldcat-tabname = 'I_MARD'. "Final Internal table which has to be displayed
w_fieldcat-seltext_m = 'Plant'. "Column text for the field above
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-col_pos = 1 .
w_fieldcat-fieldname = 'LGORT' .
w_fieldcat-tabname = 'I_MARD'.
w_fieldcat-seltext_m = 'S.Location'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-col_pos = 1 .
w_fieldcat-fieldname = 'MATNR'.
w_fieldcat-tabname = 'I_MARD'.
w_fieldcat-seltext_m = 'Mat No'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-col_pos = 1 .
w_fieldcat-fieldname = 'INSME' .
w_fieldcat-do_sum = 'X'.
w_fieldcat-tabname = 'I_MARD'.
w_fieldcat-seltext_m = 'quality Stock'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-col_pos = 1 .
w_fieldcat-fieldname = 'EINME'.
w_fieldcat-do_sum = 'X'.
w_fieldcat-tabname = 'I_MARD'.
w_fieldcat-seltext_m = 'Total Stock'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
ENDFORM. " build_fieldcatalog_table
*&---------------------------------------------------------------------*
*& Form build_events_table
*&---------------------------------------------------------------------*
FORM build_events_table .
CLEAR :w_events,
i_events[].
w_events-name = 'TOP_OF_PAGE' .
w_events-form = 'TOP_OF_PAGE' .
APPEND w_events TO i_events.
CLEAR w_events.
" You can what are all the events are available for the simple ALV and GRID ALV
" by running the function module in SE37. Among all TOP_OF_PAGE is one.
ENDFORM. " build_events_table
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
FORM display_data .
DATA:program TYPE sy-repid.
program = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE = ' '
i_callback_program = program
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_STRUCTURE_NAME =
* is_layout =
it_fieldcat = i_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* it_sort = i_sort1
* IT_FILTER =
* IS_SEL_HIDE =
* i_default = 'X'
* i_save = 'A'
* is_variant = variant1
* it_events = i_events1
* 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
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = i_mard "This is Final internal table that is to be displayed.
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
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
FORM get_data .
SELECT bukrs budat belnr monat blart waers
INTO TABLE it_bkpf
FROM bkpf
WHERE bukrs = '012'
AND blart IN s_blart
AND budat IN s_budat
AND waers IN s_waers.
IF NOT it_bkpf[] IS INITIAL.
SELECT bukrs belnr werks saknr aufnr dmbtr sgtxt
INTO TABLE it_bseg
FROM bseg
FOR ALL ENTRIES IN it_bkpf
WHERE belnr = it_bkpf-belnr
AND valut = it_bkpf-budat
AND bukrs = '012'
AND werks = '1201'
AND saknr IN s_saknr
AND shkzg = 'H'.
ENDIF.
LOOP AT it_bkpf.
READ TABLE it_bseg WITH KEY
belnr = it_bkpf-belnr BINARY SEARCH.
IF sy-subrc = 0.
it_detail-budat = it_bkpf-budat. "posting date
it_detail-period = it_bkpf-budat+0(6).
it_detail-saknr = it_bseg-saknr.
it_detail-aufnr = it_bseg-aufnr.
it_detail-sgtxt = it_bseg-sgtxt.
it_detail-blart = it_bkpf-blart. " Document Type
it_detail-dmbtr = it_bseg-dmbtr.
it_detail-waers = it_bkpf-waers.
APPEND it_detail.
CLEAR it_detail.
ENDIF.
ENDLOOP.
ENDFORM. " get_data
Hi
in the following report i need to display it_detail in to ALV format. How to do? Pls help me
*get data
START-OF-SELECTION.
IF p_detail = 'X'.
PERFORM get_data.
ELSE.
PERFORM get_data.
ENDIF.
&----
*& Form get_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data.
SELECT bukrs budat belnr monat blart waers
INTO TABLE it_bkpf
FROM bkpf
WHERE bukrs = '012'
AND blart IN s_blart
AND budat IN s_budat
AND waers IN s_waers.
IF NOT it_bkpf[] IS INITIAL.
SELECT bukrs belnr werks saknr aufnr dmbtr sgtxt
INTO TABLE it_bseg
FROM bseg
FOR ALL ENTRIES IN it_bkpf
WHERE belnr = it_bkpf-belnr
AND valut = it_bkpf-budat
AND bukrs = '012'
AND werks = '1201'
AND saknr IN s_saknr
AND shkzg = 'H'.
ENDIF.
LOOP AT it_bkpf.
READ TABLE it_bseg WITH KEY
belnr = it_bkpf-belnr BINARY SEARCH.
IF sy-subrc = 0.
it_detail-budat = it_bkpf-budat. "posting date
it_detail-period = it_bkpf-budat+0(6).
it_detail-saknr = it_bseg-saknr.
it_detail-aufnr = it_bseg-aufnr.
it_detail-sgtxt = it_bseg-sgtxt.
it_detail-blart = it_bkpf-blart. " Document Type
it_detail-dmbtr = it_bseg-dmbtr.
it_detail-waers = it_bkpf-waers.
APPEND it_detail.
CLEAR it_detail.
ENDIF.
ENDLOOP.
ENDFORM. " get_data
2008 Apr 08 3:18 AM
Just check program SALV_DEMO_TABLE_REAL_SIMPLE and do in the same way.
Regards,
Atish
2008 Apr 08 3:56 AM
Kumar k,
Please have a look at the sample code including ur subroutine to fetch data from database.
Check the comments wherever those are needed i have included
Let me know if u have any problem while doing ALV.
Regards,
Venkat.O
REPORT zvenkat_test1.
*&---------------------------------------------------------------------*
" You program variables internal and Work area declarations.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
" ALV Declarations
*----------------------------------------------------------------------*
* Types Pools
TYPE-POOLS:
slis.
* Types
TYPES:
t_fieldcat TYPE slis_fieldcat_alv,
t_events TYPE slis_alv_event,
t_layout TYPE slis_layout_alv.
* Workareas
DATA:
w_fieldcat TYPE t_fieldcat,
w_events TYPE t_events,
w_layout TYPE t_layout.
* Internal Tables
DATA:
i_fieldcat TYPE STANDARD TABLE OF t_fieldcat,
i_events TYPE STANDARD TABLE OF t_events.
START-OF-SELECTION.
"You program Logic to fetch data from Database and do modifications and prepare \
" final internal table to display using ALV.
IF p_detail = 'X'.
PERFORM get_data.
ELSE.
PERFORM get_data.
ENDIF.
"Once you get the data from the Database table and read to display
" Follow the steps to create ALV.
END-OF-SELECTION.
"&---------------------------------------------------------------------*
" Fieldcatalog Internal table
" ------------
" 1. It contains descriptions of the list output fields
" (usually a subset of the internal output table fields).
" 2. A field catalog is required for every ALV list output.
"&---------------------------------------------------------------------*
PERFORM build_fieldcatalog_table.
"&---------------------------------------------------------------------*
" Events
" ------
" 1. When we use ALV,certain events TOP-OF-PAGE ,END-OF-PAGE,
" AT LINE-SELECTION,AT USER-COMMANDs are not triggered.
" 2. To perform those Functions ,we have to build Events table and
" pass this table through REUSE_ALV_LIST_DISPALY Function.
"&---------------------------------------------------------------------*
PERFORM build_events_table.
"&---------------------------------------------------------------------*
" Display ALV
" ------
" 1. We use REUSE_ALV_LIST_DISPLAY function module to display as normal output
" 2. We use REUSE_ALV_GRID_DISPLAY function module to display in grid format
"&---------------------------------------------------------------------*
PERFORM display_data.
*&---------------------------------------------------------------------*
*& Form build_fieldcatalog_table
*&---------------------------------------------------------------------*
FORM build_fieldcatalog_table .
CLEAR :
w_fieldcat,
i_fieldcat[].
w_fieldcat-col_pos = 1 .
w_fieldcat-fieldname = 'WERKS' . "Column name as it is in Final internal table
w_fieldcat-tabname = 'I_MARD'. "Final Internal table which has to be displayed
w_fieldcat-seltext_m = 'Plant'. "Column text for the field above
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-col_pos = 1 .
w_fieldcat-fieldname = 'LGORT' .
w_fieldcat-tabname = 'I_MARD'.
w_fieldcat-seltext_m = 'S.Location'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-col_pos = 1 .
w_fieldcat-fieldname = 'MATNR'.
w_fieldcat-tabname = 'I_MARD'.
w_fieldcat-seltext_m = 'Mat No'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-col_pos = 1 .
w_fieldcat-fieldname = 'INSME' .
w_fieldcat-do_sum = 'X'.
w_fieldcat-tabname = 'I_MARD'.
w_fieldcat-seltext_m = 'quality Stock'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-col_pos = 1 .
w_fieldcat-fieldname = 'EINME'.
w_fieldcat-do_sum = 'X'.
w_fieldcat-tabname = 'I_MARD'.
w_fieldcat-seltext_m = 'Total Stock'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
ENDFORM. " build_fieldcatalog_table
*&---------------------------------------------------------------------*
*& Form build_events_table
*&---------------------------------------------------------------------*
FORM build_events_table .
CLEAR :w_events,
i_events[].
w_events-name = 'TOP_OF_PAGE' .
w_events-form = 'TOP_OF_PAGE' .
APPEND w_events TO i_events.
CLEAR w_events.
" You can what are all the events are available for the simple ALV and GRID ALV
" by running the function module in SE37. Among all TOP_OF_PAGE is one.
ENDFORM. " build_events_table
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
FORM display_data .
DATA:program TYPE sy-repid.
program = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE = ' '
i_callback_program = program
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_STRUCTURE_NAME =
* is_layout =
it_fieldcat = i_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* it_sort = i_sort1
* IT_FILTER =
* IS_SEL_HIDE =
* i_default = 'X'
* i_save = 'A'
* is_variant = variant1
* it_events = i_events1
* 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
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = i_mard "This is Final internal table that is to be displayed.
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
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
FORM get_data .
SELECT bukrs budat belnr monat blart waers
INTO TABLE it_bkpf
FROM bkpf
WHERE bukrs = '012'
AND blart IN s_blart
AND budat IN s_budat
AND waers IN s_waers.
IF NOT it_bkpf[] IS INITIAL.
SELECT bukrs belnr werks saknr aufnr dmbtr sgtxt
INTO TABLE it_bseg
FROM bseg
FOR ALL ENTRIES IN it_bkpf
WHERE belnr = it_bkpf-belnr
AND valut = it_bkpf-budat
AND bukrs = '012'
AND werks = '1201'
AND saknr IN s_saknr
AND shkzg = 'H'.
ENDIF.
LOOP AT it_bkpf.
READ TABLE it_bseg WITH KEY
belnr = it_bkpf-belnr BINARY SEARCH.
IF sy-subrc = 0.
it_detail-budat = it_bkpf-budat. "posting date
it_detail-period = it_bkpf-budat+0(6).
it_detail-saknr = it_bseg-saknr.
it_detail-aufnr = it_bseg-aufnr.
it_detail-sgtxt = it_bseg-sgtxt.
it_detail-blart = it_bkpf-blart. " Document Type
it_detail-dmbtr = it_bseg-dmbtr.
it_detail-waers = it_bkpf-waers.
APPEND it_detail.
CLEAR it_detail.
ENDIF.
ENDLOOP.
ENDFORM. " get_data
2008 Apr 08 4:08 AM
Hi,
Simple steps.....
For displaying the column names you have to add field catelog.
DATA : w_fieldcat TYPE slis_fieldcat_alv,
i_fieldcat TYPE slis_t_fieldcat_alv,
gs_layout TYPE slis_layout_alv.
w_fieldcat-tabname = 'it_details'.
w_fieldcat-fieldname = 'Your first field name'
w_fieldcat-outputlen = '6'.
w_fieldcat-col_pos = '1'.
w_fieldcat-row_pos = '1'.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-tabname = 'it_details'..
w_fieldcat-fieldname = 'Your second field name'.
w_fieldcat-do_sum = c_x.
w_fieldcat-outputlen = '13'.
w_fieldcat-col_pos = '2'.
w_fieldcat-row_pos = '1'.
w_fieldcat-seltext_l = c_seltext_l1.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
After this call FM
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'Your program name'
is_layout = gs_layout
it_fieldcat = i_fieldcat[]
it_sort = wa_sort1
TABLES
t_outtab = it_details.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Pls. reward if useful.....
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |