Anda di halaman 1dari 9

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

*& Report Z_ALV_INTERACTIVE_THROU_CLASS


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_ALV_INTERACTIVE_THROU_CLASS.
TABLES MARA.
SELECT-OPTIONS RANGE FOR MARA-MATNR.
TYPES : BEGIN OF ST_MARA,
MATNR TYPE MARA-MATNR,
MEINS TYPE MARA-MEINS,
LIGHT(1) TYPE C,
CHECKBOX(1) TYPE C,
END OF ST_MARA.
*TYPES : BEGIN OF ZMARA,
*
MATNR TYPE MARA-MATNR,
*
MEINS TYPE MARA-MEINS,
*
LIGHT(1) TYPE C,
*
CHECKBOX(1) TYPE C,
*
END OF ZMARA.
TYPES : BEGIN OF ST_MARC,
MATNR TYPE MARC-MATNR,
WERKS TYPE MARC-WERKS,
EKGRP TYPE MARC-EKGRP,
END OF ST_MARC.
DATA : IT_FCAT TYPE TABLE OF LVC_S_FCAT,
WA_FCAT TYPE LVC_S_FCAT,
IT1_FCAT TYPE TABLE OF LVC_S_FCAT,
WA1_FCAT TYPE LVC_S_FCAT,
IT_MARA TYPE TABLE OF ST_MARA,
LAYOUT TYPE LVC_S_LAYO,
WA_MARA TYPE ST_MARA,
WA1_MARA TYPE ST_MARA,
IT_MARC TYPE TABLE OF ST_MARC,
WA_MARC TYPE ST_MARC,
IT_ZMARA TYPE TABLE OF ZMARA,
WA_ZMARA TYPE ST_MARA,
IT_INDEX TYPE TABLE OF LVC_S_ROW,
WA_INDEX TYPE LVC_S_ROW.
DATA : GRID TYPE REF TO CL_GUI_ALV_GRID,
GRID1 TYPE REF TO CL_GUI_ALV_GRID,
GRID2 TYPE REF TO CL_GUI_ALV_GRID,
CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
CONT1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
CONT2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
LAYOUT-EXCP_FNAME = 'LIGHT'.
*LAYOUT-EDIT = 'X'.

CLASS LC_EVENT DEFINITION DEFERRED.


DATA LC_OBJ TYPE REF TO LC_EVENT.
*----------------------------------------------------------------------*
*
CLASS LC_EVENT DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LC_EVENT DEFINITION.
PUBLIC SECTION.
METHODS: D_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
ENDCLASS.

"LC_EVENT DEFINITION

*----------------------------------------------------------------------*
*
CLASS LC_EVENT IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LC_EVENT IMPLEMENTATION.
METHOD D_CLICK.
READ TABLE IT_MARA INTO WA1_MARA INDEX E_ROW-INDEX.
IF E_COLUMN-FIELDNAME = 'MATNR'.
SELECT MATNR WERKS EKGRP FROM MARC INTO TABLE IT_MARC
WHERE MATNR = WA1_MARA-MATNR.
CALL SCREEN 200.
ENDIF.
ENDMETHOD.
ENDCLASS.

"D_CLICK
"LC_EVENT IMPLEMENTATION

START-OF-SELECTION.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*&
Module SHOWALV OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE SHOWALV OUTPUT.

SELECT MATNR MEINS FROM ZMARA INTO TABLE IT_MARA.


WHERE MATNR IN RANGE.

* LOOP AT IT_MARA INTO WA_MARA.


*
*
IF WA_MARA-BRGEW <= 1.
*
MOVE 1 TO WA_MARA-LIGHT.
*
ELSEIF WA_MARA-BRGEW > 1 AND WA_MARA-BRGEW < 100.
*
MOVE 2 TO WA_MARA-LIGHT.
*
ELSEIF WA_MARA-BRGEW > 100.
*
MOVE 3 TO WA_MARA-LIGHT.
*
ENDIF.
*
MODIFY IT_MARA FROM WA_MARA TRANSPORTING LIGHT.
* ENDLOOP.
WA_FCAT-FIELDNAME = 'MATNR'.
WA_FCAT-OUTPUTLEN = 18.

WA_FCAT-REPTEXT = 'MATERIAL_NUMBER'.
WA_FCAT-EMPHASIZE = 'C110'.
* WA_FCAT-EDIT = 'X'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-FIELDNAME
WA_FCAT-OUTPUTLEN
WA_FCAT-REPTEXT =
WA_FCAT-EMPHASIZE

= 'MEINS'.
= 12.
'MEASURE_UNIT'.
= 'C210'.

APPEND WA_FCAT TO IT_FCAT.


*
*
*
*
*
*
*

WA_FCAT-FIELDNAME = 'BRGEW'.
WA_FCAT-OUTPUTLEN = 13.
WA_FCAT-REPTEXT = 'GROSS_WEIGHT'.
WA_FCAT-EMPHASIZE = 'C310'.
WA_FCAT-EDIT = 'X'.
APPEND WA_FCAT TO IT_FCAT.
WA_FCAT-FIELDNAME = 'CHECKBOX'.
WA_FCAT-OUTPUTLEN = '10'.
WA_FCAT-REPTEXT = 'CHECK_BOX'.
WA_FCAT-CHECKBOX = 'X'.
WA_FCAT-EDIT = 'X'.
APPEND WA_FCAT TO IT_FCAT.
IF CONT IS INITIAL.
CREATE OBJECT CONT

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

EXPORTING
PARENT
=
CONTAINER_NAME
= 'CC'
STYLE
=
LIFETIME
= lifetime_default
REPID
=
DYNNR
=
NO_AUTODEF_PROGID_DYNNR
=
EXCEPTIONS
CNTL_ERROR
= 1
CNTL_SYSTEM_ERROR
= 2
CREATE_ERROR
= 3
LIFETIME_ERROR
= 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
others
= 6
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CREATE OBJECT GRID


EXPORTING
*
I_SHELLSTYLE
*
I_LIFETIME
I_PARENT
*
I_APPL_EVENTS

= 0
=
= CONT
= space

*
I_PARENTDBG
=
*
I_APPLOGPARENT
=
*
I_GRAPHICSPARENT =
*
I_NAME
=
*
I_FCAT_COMPLETE = SPACE
* EXCEPTIONS
*
ERROR_CNTL_CREATE = 1
*
ERROR_CNTL_INIT = 2
*
ERROR_CNTL_LINK = 3
*
ERROR_DP_CREATE = 4
*
others
= 5
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

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

*
*
*
*
*
*
*
*
*

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
= LAYOUT
IS_PRINT
=
IT_SPECIAL_GROUPS
=
IT_TOOLBAR_EXCLUDING
=
IT_HYPERLINK
=
IT_ALV_GRAPHICS
=
IT_EXCEPT_QINFO
=
IR_SALV_ADAPTER
=
CHANGING
IT_OUTTAB
= IT_MARA
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.

CREATE OBJECT LC_OBJ.


SET HANDLER LC_OBJ->D_CLICK FOR GRID.
ELSE.
CALL METHOD GRID->REFRESH_TABLE_DISPLAY
*
EXPORTING
*
IS_STABLE
=
*
I_SOFT_REFRESH =

*
*
*

EXCEPTIONS
FINISHED
= 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.
ENDIF.
ENDMODULE.
" SHOWALV OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
IF SY-UCOMM = 'FBACK'.
LEAVE TO SCREEN 0.
ELSEIF SY-UCOMM = 'FSAVE'.
*
CREATE OBJECT CONT2
* EXPORTING
**
PARENT
=
*
CONTAINER_NAME
= 'CC'
**
STYLE
=
**
LIFETIME
= lifetime_default
**
REPID
=
**
DYNNR
=
**
NO_AUTODEF_PROGID_DYNNR
=
**
EXCEPTIONS
**
CNTL_ERROR
= 1
**
CNTL_SYSTEM_ERROR
= 2
**
CREATE_ERROR
= 3
**
LIFETIME_ERROR
= 4
**
LIFETIME_DYNPRO_DYNPRO_LINK = 5
**
others
= 6
*
.
*
IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*
ENDIF.
*
*
CREATE OBJECT GRID2
*
EXPORTING
**
I_SHELLSTYLE
= 0
**
I_LIFETIME
=
*
I_PARENT
= CONT2
**
I_APPL_EVENTS
= space
**
I_PARENTDBG
=
**
I_APPLOGPARENT
=
**
I_GRAPHICSPARENT =
**
I_NAME
=
**
I_FCAT_COMPLETE = SPACE
**
EXCEPTIONS
**
ERROR_CNTL_CREATE = 1
**
ERROR_CNTL_INIT = 2
**
ERROR_CNTL_LINK = 3
**
ERROR_DP_CREATE = 4
**
others
= 5
*
.

*
**
**
*
*
*
*
*

IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD GRID->CHECK_CHANGED_DATA.
IMPORTING
E_VALID =
CHANGING
C_REFRESH = 'X'
LOOP AT IT_MARA INTO WA_MARA.
IF WA_MARA-CHECKBOX = 'X'.
INSERT ZMARA FROM WA_MARA.
ENDIF.
ENDLOOP.
ELSEIF SY-UCOMM = 'FDEL2'.

*
IF CONT2 IS INITIAL.
*
CREATE OBJECT CONT2
* EXPORTING
**
PARENT
=
*
CONTAINER_NAME
= 'CC'
**
STYLE
=
**
LIFETIME
= lifetime_default
**
REPID
=
**
DYNNR
=
**
NO_AUTODEF_PROGID_DYNNR
=
**
EXCEPTIONS
**
CNTL_ERROR
= 1
**
CNTL_SYSTEM_ERROR
= 2
**
CREATE_ERROR
= 3
**
LIFETIME_ERROR
= 4
**
LIFETIME_DYNPRO_DYNPRO_LINK = 5
**
others
= 6
*
.
*
IF SY-SUBRC <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*
ENDIF.
*
*
CREATE OBJECT GRID2
*
EXPORTING
**
I_SHELLSTYLE
= 0
**
I_LIFETIME
=
*
I_PARENT
= CONT2
**
I_APPL_EVENTS
= space
**
I_PARENTDBG
=
**
I_APPLOGPARENT
=
**
I_GRAPHICSPARENT =
**
I_NAME
=
**
I_FCAT_COMPLETE = SPACE
**
EXCEPTIONS
**
ERROR_CNTL_CREATE = 1
**
ERROR_CNTL_INIT = 2
**
ERROR_CNTL_LINK = 3
**
ERROR_DP_CREATE = 4
**
others
= 5
*
.

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

IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*
*
*
*
*
*
*
*

CALL METHOD GRID->CHECK_CHANGED_DATA


IMPORTING
E_VALID =
CHANGING
C_REFRESH = 'X'
.
CALL METHOD GRID->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = IT_INDEX
ET_ROW_NO
=
.
LOOP AT IT_MARA INTO WA_ZMARA.
IF WA_ZMARA-CHECKBOX = 'X'.
DELETE ZMARA FROM WA_ZMARA .
ENDIF.
ENDLOOP.

* ENDIF.
LOOP AT IT_INDEX INTO WA_INDEX.
READ TABLE IT_MARA INTO WA_MARA INDEX WA_INDEX-INDEX.
WA_MARA-CHECKBOX = 'X'.
MODIFY IT_MARA FROM WA_MARA INDEX WA_INDEX-INDEX TRANSPORTING CHECKBOX.
DELETE ZMARA FROM WA_MARA.
ENDLOOP.
ENDIF.
ENDMODULE.

" USER_COMMAND_0100 INPUT

*----------------------------------------------------------------------*
* MODULE SHOWALV1 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE SHOWALV1 OUTPUT.
WA1_FCAT-FIELDNAME = 'MATNR'.
WA1_FCAT-OUTPUTLEN = '18'.
WA1_FCAT-REPTEXT = 'MATNR'.
APPEND WA1_FCAT TO IT1_FCAT.
WA1_FCAT-FIELDNAME = 'WERKS'.
WA1_FCAT-OUTPUTLEN = '10'.
WA1_FCAT-REPTEXT = 'PLANT'.
APPEND WA1_FCAT TO IT1_FCAT.
WA1_FCAT-FIELDNAME = 'EKGRP'.
WA1_FCAT-OUTPUTLEN = '18'.
WA1_FCAT-REPTEXT = 'EKGRP'.

APPEND WA1_FCAT TO IT1_FCAT.


IF CONT1 IS INITIAL.

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

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

CREATE OBJECT CONT1


EXPORTING
PARENT
=
CONTAINER_NAME
= 'CC1'
STYLE
=
LIFETIME
= lifetime_default
REPID
=
DYNNR
=
NO_AUTODEF_PROGID_DYNNR
=
EXCEPTIONS
CNTL_ERROR
= 1
CNTL_SYSTEM_ERROR
= 2
CREATE_ERROR
= 3
LIFETIME_ERROR
= 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
others
= 6
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT GRID1
EXPORTING
I_SHELLSTYLE
= 0
I_LIFETIME
=
I_PARENT
= CONT1
I_APPL_EVENTS
= space
I_PARENTDBG
=
I_APPLOGPARENT
=
I_GRAPHICSPARENT =
I_NAME
=
I_FCAT_COMPLETE = SPACE
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
others
= 5
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL METHOD GRID1->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
=

*
*
*
*
*
*
*

IS_PRINT
=
IT_SPECIAL_GROUPS
=
IT_TOOLBAR_EXCLUDING
=
IT_HYPERLINK
=
IT_ALV_GRAPHICS
=
IT_EXCEPT_QINFO
=
IR_SALV_ADAPTER
=
CHANGING
IT_OUTTAB
= IT_MARC
IT_FIELDCATALOG
= IT1_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 GRID1->REFRESH_TABLE_DISPLAY
*
EXPORTING
*
IS_STABLE
=
*
I_SOFT_REFRESH =
*
EXCEPTIONS
*
FINISHED
= 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.
ENDIF.
ENDMODULE.
" SHOWALV1 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0200 INPUT.
IF SY-UCOMM = 'FBACK1'.
LEAVE TO SCREEN 0.
ENDIF.
ENDMODULE.

" USER_COMMAND_0200 INPUT

Anda mungkin juga menyukai