You are on page 1of 6

*&---------------------------------------------------------------------*

*& Report ZKRS1_ALV_OOPS


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zkrs1_alv_oops.
TYPES : BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
pmatn TYPE vbap-pmatn,
matkl TYPE vbap-matkl,
pstyv TYPE vbap-pstyv,
prodh TYPE vbap-prodh,
netwr TYPE vbap-netwr,
END OF ty_vbap.

DATA : it_vbap TYPE TABLE OF ty_vbap,


it_fcat TYPE lvc_t_fcat,
wa_layo TYPE lvc_s_layo,
g_ok_code TYPE sy-ucomm.
DATA : grid TYPE REF TO cl_gui_alv_grid,
cont TYPE REF TO cl_gui_custom_container,
g_name TYPE scrfname VALUE 'ALV'.
TABLES : vbap.
*----------------------------------------------------------------------*
*
CLASS d_event DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS d_event DEFINITION.
PUBLIC SECTION.
METHODS : do_dc FOR EVENT
IMPORTING
do_hc FOR EVENT
IMPORTING
ENDCLASS.

double_click OF cl_gui_alv_grid
e_row e_column es_row_no ,
hotspot_click OF cl_gui_alv_grid
e_row_id e_column_id es_row_no .
"d_event DEFINITION

*----------------------------------------------------------------------*
*
CLASS d_event IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS d_event IMPLEMENTATION.

METHOD do_dc.
IF e_column-fieldname = 'MATNR'.
DELETE it_vbap INDEX e_row-index.
CALL METHOD grid->refresh_table_display.
ENDIF.
ENDMETHOD.
METHOD do_hc.
BREAK-POINT.
ENDMETHOD.
ENDCLASS.

"do_dc

"do_hc
"d_event IMPLEMENTATION

DATA : event TYPE REF TO d_event .


SELECT-OPTIONS : s_vbeln FOR vbap-vbeln.
START-OF-SELECTION .
PERFORM get_data.
PERFORM dis_alv.
*&---------------------------------------------------------------------*
*&
Form get_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_data .
SELECT vbeln
posnr
matnr
pmatn
matkl
pstyv
prodh
netwr FROM vbap INTO TABLE it_vbap
WHERE vbeln IN s_vbeln.
ENDFORM.
" get_data
*&---------------------------------------------------------------------*
*&
Form dis_alv
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM dis_alv .

CALL SCREEN 100.


ENDFORM.
" dis_alv
*&---------------------------------------------------------------------*
*&
Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN'.
* SET TITLEBAR 'xxx'.
PERFORM call_alv.
ENDMODULE.
" STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE g_ok_code.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
" USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*&
Form call_alv
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM call_alv .
IF grid IS INITIAL.
CREATE OBJECT cont
EXPORTING
container_name

= g_name

.
CREATE OBJECT grid
EXPORTING
i_parent
.
CREATE OBJECT event.

= cont

SET HANDLER event->do_dc FOR grid.


SET HANDLER event->do_hc FOR grid.
PERFORM gen_fcat.
PERFORM gen_layput .

*
*
*
*
*
*
*
*
*
*
*
*
*
*

*
*
*
*
*
*
*
*
*

CALL METHOD grid->set_table_for_first_display


EXPORTING
I_BUFFER_ACTIVE
=
I_BYPASSING_BUFFER
=
I_CONSISTENCY_CHECK
=
I_STRUCTURE_NAME
=
IS_VARIANT
=
I_SAVE
=
I_DEFAULT
= 'X'
is_layout
= wa_layo
IS_PRINT
=
IT_SPECIAL_GROUPS
=
IT_TOOLBAR_EXCLUDING
=
IT_HYPERLINK
=
IT_ALV_GRAPHICS
=
IT_EXCEPT_QINFO
=
IR_SALV_ADAPTER
=
CHANGING
it_outtab
= it_vbap
it_fieldcatalog
= it_fcat
IT_SORT
=
IT_FILTER
=
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR
= 2
TOO_MANY_LINES
= 3
others
= 4
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ELSE.
CALL METHOD grid->refresh_table_display .
ENDIF.

ENDFORM.
" call_alv
*&---------------------------------------------------------------------*
*&
Form gen_fcat
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*

* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM gen_fcat .
*
*
**
*
**
**
**
*
*
**
**
**
**
*
*
**
**
*

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'


EXPORTING
I_BUFFER_ACTIVE
=
i_structure_name
= 'VBAP'
I_CLIENT_NEVER_DISPLAY
= 'X'
I_BYPASSING_BUFFER
=
I_INTERNAL_TABNAME
=
CHANGING
ct_fieldcat
= it_fcat
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.
DATA : wa_fcat TYPE lvc_s_fcat.
wa_fcat-fieldname = 'VBELN' .
wa_fcat-coltext = 'SO'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'POSNR' .
wa_fcat-coltext = 'Item'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname
wa_fcat-coltext =
wa_fcat-hotspot =
APPEND wa_fcat TO
CLEAR wa_fcat.

= 'MATNR' .
'Material'.
'X'.
it_fcat.

wa_fcat-fieldname = 'PMATN' .
wa_fcat-coltext = 'Mat Cat'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'MATKL' .
wa_fcat-coltext = 'Mat type'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'PSTYV' .
wa_fcat-coltext = 'Item Cat'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'PRODH' .
wa_fcat-coltext = 'Prod.Hierarchy'.

APPEND wa_fcat TO it_fcat.


CLEAR wa_fcat.
wa_fcat-fieldname = 'NETWR' .
wa_fcat-coltext = 'Price'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

ENDFORM.
" gen_fcat
*&---------------------------------------------------------------------*
*&
Form gen_layput
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM gen_layput .
wa_layo-sel_mode = 'D'.
ENDFORM.

" gen_layput

You might also like