You are on page 1of 5

REPORT zalv_demo NO STANDARD PAGE HEADING LINE-SIZE 100

LINE-COUNT 72 MESSAGE-ID zfi_msgs.

* TYPES Declarations
TYPES: BEGIN OF ty_bsid,
kunnr TYPE bsid-kunnr, " Customer Number
sel TYPE c, " Selection field in list display
belnr TYPE bsid-belnr, " Accounting Document Number
blart TYPE bsid-blart, " Document Type
budat TYPE bsid-budat, " Posting Date
dmbtr TYPE bsid-dmbtr, " AMOUNT IN LOCAL CUR
waers TYPE bsid-waers, " Local Currency
END OF ty_bsid.

* Internal and Workarea Declarations


DATA: t_bsid TYPE STANDARD TABLE OF ty_bsid,
wa_bsid TYPE ty_bsid.

* ALV Declarations
TYPE-POOLS : slis.

DATA: wa_fieldcat TYPE slis_fieldcat_alv,


it_fcat TYPE slis_t_fieldcat_alv,
wa_repid TYPE sy-repid,
wa_layout TYPE slis_layout_alv.

DATA: it_fieldcat TYPE slis_t_fieldcat_alv.

* Global Variable Declaration

DATA: w_bukrs TYPE bsid-bukrs,


w_flg TYPE c.
data:�s_kunnr�type�bsid-kunnr,
������w_budat�type�bsid-budat.

* Constant Declarations

CONSTANTS: c_x TYPE c VALUE 'X'.


*----------------------------------------------------------------------*
* SELECTION SCREEN *
*----------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .

PARAMETERS : p_bukrs TYPE bsid-bukrs OBLIGATORY. " Company Code


SELECT-OPTIONS : so_kunnr FOR w_kunnr, " Customer Number
so_pdate FOR w_budat OBLIGATORY. " As on Date
PARAMETERS: p_codate TYPE bsid-budat DEFAULT sy-datum OBLIGATORY,
p_ref TYPE char4 OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1 .

INITIALIZATION.
wa_repid = sy-repid.

*----------------------------------------------------------------------*
* AT SELECTION SCREEN *
*----------------------------------------------------------------------*

AT SELECTION-SCREEN.

* Validating the Company code data


SELECT SINGLE bukrs
FROM t001
INTO w_bukrs
WHERE bukrs = p_bukrs.
IF sy-subrc NE 0.
MESSAGE e001 WITH text-008.
ENDIF.

*----------------------------------------------------------------------*
* START OF SELECTION *
*----------------------------------------------------------------------*

START-OF-SELECTION.

* Data Extraction
PERFORM data_extraction.
IF w_flg NE c_x.
* Display Fieldcatlog infomration
PERFORM build_fieldcatlog.

* Build Layout
PERFORM build_layout.

*Displaying information in ALV Grid display.


PERFORM alv_display.
ELSE.
MESSAGE i001 WITH text-009.
EXIT.
ENDIF.
*&---------------------------------------------------------------------*
*& Form DATA_EXTRACTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM data_extraction .
REFRESH: t_bsid.
SELECT belnr
kunnr
blart
budat
dmbtr
waers
FROM bsid
INTO CORRESPONDING FIELDS OF TABLE t_bsid
WHERE bukrs EQ p_bukrs AND
kunnr IN so_kunnr AND
budat LE so_pdate.

IF NOT t_bsid[] IS INITIAL.

ELSE.
w_flg = c_x.
ENDIF.

ENDFORM. " DATA_EXTRACTION


*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATLOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcatlog .

wa_fieldcat-fieldname = 'KUNNR'. " Document Type


wa_fieldcat-seltext_m = text-007.
wa_fieldcat-col_pos = '1'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'BELNR'. " Document Number


wa_fieldcat-seltext_m = text-002.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'BUDAT'. " Document Date in Document


wa_fieldcat-seltext_m = text-004.
wa_fieldcat-col_pos = '3'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'DMBTR'. " Amount in Local Currency


wa_fieldcat-seltext_m = text-005.
wa_fieldcat-col_pos = '4'.
wa_fieldcat-just = 'L'.
* wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO it_fcat.
CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'WAERS'. " Currency Key


wa_fieldcat-seltext_m = text-006.
wa_fieldcat-col_pos = '5'.
wa_fieldcat-outputlen = 4.
wa_fieldcat-just = 'L'.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO it_fcat.
CLEAR wa_fieldcat.

ENDFORM. " BUILD_FIELDCATLOG


*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_layout .
wa_layout-box_fieldname = 'SEL'. "set field name to store row selection
wa_layout-edit = c_x. "makes whole ALV table editable
wa_layout-zebra = c_x.
ENDFORM. " BUILD_LAYOUT

*&---------------------------------------------------------------------*
*& Form ALV_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM alv_display .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'


EXPORTING
i_callback_program = wa_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout = wa_layout
it_fieldcat = it_fcat[]
TABLES
t_outtab = t_bsid
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. " ALV_DISPLAY


*----------------------------------------------------------*
* FORM SET_PF_STATUS *
*----------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'ZPFSTATUS'. "Copy of 'STANDARD' pf_status from fgroup SALV

ENDFORM. "set_pf_status

*&---------------------------------------------------------------------*
*& Form user_command
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.


LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. "user_command

You might also like