Application Development and Automation 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: 
Read only

Alv display

Former Member
0 Likes
586

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

1 ACCEPTED SOLUTION
Read only

venkat_o
Active Contributor
0 Likes
563

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

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
Let me know if u have any problem while doing ALV. Regards, Venkat.O

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

3 REPLIES 3
Read only

Former Member
0 Likes
563

Just check program SALV_DEMO_TABLE_REAL_SIMPLE and do in the same way.

Regards,

Atish

Read only

venkat_o
Active Contributor
0 Likes
564

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

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
Let me know if u have any problem while doing ALV. Regards, Venkat.O

Read only

Former Member
0 Likes
563

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.....