Sie sind auf Seite 1von 8

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

*& Report ZALV_INTERACTIVE_DRILLDOWN1


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZALV_INTERACTIVE_DRILLDOWN1.
TABLES: EKKO,
EKPO,
LFA1,
KNA1,
T001,
T001W,
T001L,
MARA.

"Purchasing Document Header


"Purchasing Document Item
"Vendor Master (General Section)
"General Data in Customer Master
"Company Codes
"Plants/Branches
"Storage Locations
"General Material Data

TYPE-POOLS: SLIS.
*variable for Report ID
DATA: V_REPID LIKE SY-REPID .
*****GLOBAL ALV DECLARATIONS
*DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
*
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
*
IT_LISTHEADER TYPE SLIS_T_LISTHEADER,
*
V_EVENTS TYPE SLIS_T_EVENT,
*
WA_EVENT TYPE SLIS_ALV_EVENT,
*
ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
**Class definition for handling double click
*CLASS event_class DEFINITION DEFERRED.
*Typed structures of all 8 tables defined****
TYPES: BEGIN OF TY_EKKO,
EBELN TYPE EKKO-EBELN, "Purchasing Doc.
BUKRS TYPE EKKO-BUKRS, "Company Code
BSTYP TYPE EKKO-BSTYP, "Doc. Category
LIFNR TYPE EKKO-LIFNR, "Vendor
AEDAT TYPE EKKO-AEDAT, "Created on
RESWK TYPE EKKO-RESWK, "Supplying Plant
EKGRP TYPE EKKO-EKGRP, "Purch. Group
KUNNR TYPE EKKO-KUNNR, "Customer
END OF TY_EKKO.
TYPES: BEGIN OF TY_EKPO,
EBELN TYPE EKPO-EBELN,
MATNR TYPE EKPO-MATNR,
LGORT TYPE EKPO-LGORT,
EBELP TYPE EKPO-EBELP,
BUKRS TYPE EKPO-BUKRS,
MENGE TYPE EKPO-MENGE,
MEINS TYPE EKPO-MEINS,
WERKS TYPE EKPO-WERKS,
MATKL TYPE EKPO-MATKL,
NETPR TYPE EKPO-NETPR,
END OF TY_EKPO.

"Purchasing Doc.
"Material
"Stor. Location
"Item
"Company Code
"PO Quantity
"Order Unit
"Plant
"Material Group
"Net Price

TYPES: BEGIN OF TY_LFA1_KNA1,


NAME1 TYPE LFA1-NAME1,
NAME2 TYPE KNA1-NAME1,
END OF TY_LFA1_KNA1.
TYPES: BEGIN OF TY_T001_T001W,
BUTXT TYPE T001-BUTXT, "COMPANY CODE
NAME1 TYPE T001W-NAME1,
END OF TY_T001_T001W.

"NAME 1

TYPES: BEGIN OF TY_T001L,


*
MAKTX TYPE MARA-MAKTX, "Description
LGOBE TYPE T001L-LGOBE, "Description
END OF TY_T001L.
**** ITAB & WA Declarations w.r.t all defined typed tables structures*****
DATA: IT_EKKO TYPE STANDARD TABLE OF TY_EKKO,
WA_EKKO LIKE LINE OF IT_EKKO,
IT_EKPO TYPE STANDARD TABLE OF TY_EKPO,
WA_EKPO LIKE LINE OF IT_EKPO,
IT_LFA1_KNA1 TYPE STANDARD TABLE OF TY_LFA1_KNA1,
WA_LFA1_KNA1 LIKE LINE OF IT_LFA1_KNA1,
IT_T001_T001W TYPE STANDARD TABLE OF TY_T001_T001W,
WA_T001_T001W LIKE LINE OF IT_T001_T001W,
IT_T001L TYPE STANDARD TABLE OF TY_T001L,
WA_T001L LIKE LINE OF IT_T001L.
*********Alv data declarations for alv basic(main) list
DATA: c_alv1 TYPE REF TO cl_gui_alv_grid, "ALV GRID CONTAINER
c_cont1 TYPE REF TO cl_gui_custom_container, "CUSTOM CONTAINER
*
event_receiver TYPE REF TO event_class, "event receiver
IT_FCAT1 TYPE lvc_t_fcat,
"itab of fieldcatalog
WA_FCAT1 TYPE LVC_S_FCAT,
"wa of fieldcatlog
ty_lay1 type lvc_s_layo. "wa of layout
********Data declarations for alv secondary/detailed list
DATA: c_alv2 TYPE REF TO cl_gui_alv_grid, "ALV GRID CONTAINER
c_cont2 TYPE REF TO cl_gui_custom_container, "CUSTOM CONTAINER
IT_FCAT2 TYPE lvc_t_fcat,
"itab of fieldcatalog
WA_FCAT2 TYPE LVC_S_FCAT,
"wa of fieldcatlog
ty_lay2 type lvc_s_layo. "wa of layout
SET SCREEN 100.
*********SELECTION-SCREEN DEFINITION*********************
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_BUKRS FOR EKKO-BUKRS OBLIGATORY.
PARAMETERS: P_BSTYP TYPE EKKO-BSTYP, "Purchasing Document Category
P_BSART TYPE EKKO-BSART. "Purchasing Document Type
SELECT-OPTIONS S_LIFNR FOR EKKO-LIFNR. "Vendor No
PARAMETERS: P_WERKS TYPE EKPO-WERKS OBLIGATORY, "PLANT
P_MATNR TYPE EKPO-MATNR, "Material
P_LGORT TYPE EKPO-LGORT OBLIGATORY. "Stor. Location
*
P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK B1.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
*** NOW CALL THE METHOD DIRECTORY_BROWSE OF Class:cl_gui_frontend_services
* CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE

**
EXPORTING
**
WINDOW_TITLE
=
**
INITIAL_FOLDER
=
*
CHANGING
*
SELECTED_FOLDER
=
**
EXCEPTIONS
**
CNTL_ERROR
= 1
**
ERROR_NO_GUI
= 2
**
NOT_SUPPORTED_BY_GUI = 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.
*NOW CALL THE FM TO SEARCH FOR THE FILE PATH
* CALL FUNCTION 'F4_FILENAME'
* EXPORTING
*
PROGRAM_NAME
= SYST-CPROG
*
DYNPRO_NUMBER
= SYST-DYNNR
** FIELD_NAME
= ' '
* IMPORTING
*
FILE_NAME
= P_FILE.
* AT SELECTION-SCREEN VALIDATIONS***************
AT SELECTION-SCREEN ON S_BUKRS.
*Subroutine to validate Company Code.
PERFORM VALIDATE_COMP_CODE.
AT SELECTION-SCREEN ON S_LIFNR.
*Subroutine to validate Vendor Number.
PERFORM VALIDATE_VEN_NO.
INITIALIZATION.
START-OF-SELECTION.
* PERFORM ALV_SCREEN1.
*&---------------------------------------------------------------------*
*&
Form VALIDATE_COMP_CODE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM VALIDATE_COMP_CODE .
IF NOT S_BUKRS IS INITIAL.
SELECT BUKRS FROM EKKO
INTO WA_EKKO
UP TO 1 ROWS
WHERE BUKRS IN S_BUKRS.
ENDSELECT.
ENDIF.
ENDFORM.

" VALIDATE_COMP_CODE

*&---------------------------------------------------------------------*
*&
Form VALIDATE_VEN_NO
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM VALIDATE_VEN_NO .
IF NOT S_LIFNR IS INITIAL.
SELECT LIFNR FROM
EKKO INTO WA_EKKO
UP TO 1 ROWS
WHERE
LIFNR IN S_LIFNR.
ENDSELECT.
ENDIF.
ENDFORM.

" VALIDATE_VEN_NO

**----------------------------------------------------------------------*
** CLASS lcl_event_receiver DEFINITION
**----------------------------------------------------------------------*
*CLASS event_class DEFINITION.
**Handling double click
* PUBLIC SECTION.
*
METHODS:
*
handle_double_click
*
FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row .
*ENDCLASS. "lcl_event_receiver DEFINITION
*
**----------------------------------------------------------------------*
** CLASS lcl_event_receiver IMPLEMENTATION
**----------------------------------------------------------------------*
*CLASS event_class IMPLEMENTATION.
* METHOD handle_double_click.
*
DATA : WA_EKKO LIKE LINE OF IT_EKKO.
**Reading the selected data into a variable
*
READ TABLE IT_EKKO INDEX e_row-index INTO WA_EKKO.
** *Select the field details of the selected table
*
SELECT EBELN EBELP TXZ01 MATNR WERKS LGORT MATNR MENGE
*
MEINS NETPR FROM EKPO INTO TABLE IT_EKPO
*
WHERE EBELN = WA_EKKO-EBELN.
**calling the ALV containing the field values
*
CALL SCREEN 101.
* ENDMETHOD. "handle_double_click
*ENDCLASS. "lcl_event_receiver IMPLEMENTATION
*&---------------------------------------------------------------------*
*&
Module PBO_100 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE PBO_100 OUTPUT.
*Create one ALV Control that shows the first table
SET PF-STATUS 'CONT_100'.

SET TITLEBAR 'FIRST_ALV_LIST'.


V_REPID = SY-REPID.
IF c_cont1 IS INITIAL.
PERFORM GET_EKKO.
* create a custom container control for our ALV Control BY Create object stmt

*
*
*
*
*
*

*
*

CREATE OBJECT C_CONT1


EXPORTING
PARENT
=
CONTAINER_NAME
= 'CCONT1'
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.

* NOW CREATE THE ALV GRID OBJECT....


CREATE OBJECT C_ALV1
EXPORTING
*
I_SHELLSTYLE
= 0
*
I_LIFETIME
=
I_PARENT
= C_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.
* Set a titlebar for the grid control
ty_lay1-grid_title = 'Purchase Header Docs'(100).
* Now call for building fieldcatalog*****************
PERFORM ALV_100_FCAT1.

** NOW CALL THE TABLE FIRST DISPLAY METHOD


CALL METHOD C_ALV1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
*
I_BUFFER_ACTIVE
=
*
I_BYPASSING_BUFFER
=
*
I_CONSISTENCY_CHECK
=
I_STRUCTURE_NAME
= 'EKKO'
*
IS_VARIANT
=
*
I_SAVE
=
*
I_DEFAULT
= 'X'
IS_LAYOUT
= TY_LAY1
*
IS_PRINT
=
*
IT_SPECIAL_GROUPS
=
*
IT_TOOLBAR_EXCLUDING
=
*
IT_HYPERLINK
=
*
IT_ALV_GRAPHICS
=
*
IT_EXCEPT_QINFO
=
*
IR_SALV_ADAPTER
=
CHANGING
IT_OUTTAB
= IT_EKKO
IT_FIELDCATALOG
= IT_FCAT1[]
*
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.
ENDIF.
ENDMODULE.
" PBO_100 OUTPUT
*&---------------------------------------------------------------------*
*&
Module PAI_100 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE PAI_100 INPUT.
DATA: OK_CODE LIKE SY-UCOMM.
case ok_code.
when 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

" PAI_100 INPUT

*&---------------------------------------------------------------------*
*&
Form GET_EKKO

*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_EKKO .
SELECT EBELN BUKRS BSTYP LIFNR AEDAT RESWK EKGRP KUNNR
FROM EKKO
INTO TABLE IT_EKKO
WHERE
BUKRS IN S_BUKRS AND
BSTYP = P_BSTYP AND
BSART = P_BSART AND
LIFNR IN S_LIFNR.
ENDFORM.

" GET_EKKO

*&---------------------------------------------------------------------*
*&
Form ALV_100_FCAT1
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM ALV_100_FCAT1 .
* FIRST CLEAR THE CONTENTS OF WA_FCAT1**
CLEAR WA_FCAT1.
WA_FCAT1-TABNAME =
WA_FCAT1-FIELDNAME
WA_FCAT1-COLTEXT =
WA_FCAT1-COL_POS =
APPEND WA_FCAT1 TO
CLEAR WA_FCAT1.

'IT_EKKO'.
= 'EBELN'.
'Purchasing_Doc'.
1.
IT_FCAT1.

WA_FCAT1-TABNAME =
WA_FCAT1-FIELDNAME
WA_FCAT1-COLTEXT =
WA_FCAT1-COL_POS =
APPEND WA_FCAT1 TO
CLEAR WA_FCAT1.

'IT_EKKO'.
= 'BUKRS'.
'Company_Code'.
2.
IT_FCAT1.

WA_FCAT1-TABNAME =
WA_FCAT1-FIELDNAME
WA_FCAT1-COLTEXT =
WA_FCAT1-COL_POS =
APPEND WA_FCAT1 TO
CLEAR WA_FCAT1.

'IT_EKKO'.
= 'BSTYP'.
'Doc_Category'.
3.
IT_FCAT1.

WA_FCAT1-TABNAME =
WA_FCAT1-FIELDNAME
WA_FCAT1-COLTEXT =
WA_FCAT1-COL_POS =
APPEND WA_FCAT1 TO
CLEAR WA_FCAT1.

'IT_EKKO'.
= 'LIFNR'.
'Vendor'.
4.
IT_FCAT1.

WA_FCAT1-TABNAME =
WA_FCAT1-FIELDNAME
WA_FCAT1-COLTEXT =
WA_FCAT1-COL_POS =
APPEND WA_FCAT1 TO
CLEAR WA_FCAT1.

'IT_EKKO'.
= 'AEDAT'.
'Created_On'.
5.
IT_FCAT1.

WA_FCAT1-TABNAME =
WA_FCAT1-FIELDNAME
WA_FCAT1-COLTEXT =
WA_FCAT1-COL_POS =
APPEND WA_FCAT1 TO
CLEAR WA_FCAT1.

'IT_EKKO'.
= 'RESWK'.
'Supplying_Plant'.
6.
IT_FCAT1.

WA_FCAT1-TABNAME =
WA_FCAT1-FIELDNAME
WA_FCAT1-COLTEXT =
WA_FCAT1-COL_POS =
APPEND WA_FCAT1 TO
CLEAR WA_FCAT1.

'IT_EKKO'.
= 'EKGRP'.
'Purchasing_Org'.
7.
IT_FCAT1.

WA_FCAT1-TABNAME =
WA_FCAT1-FIELDNAME
WA_FCAT1-COLTEXT =
WA_FCAT1-COL_POS =
APPEND WA_FCAT1 TO
CLEAR WA_FCAT1.

'IT_EKKO'.
= 'KUNNR'.
'Customer'.
8.
IT_FCAT1.

ENDFORM.

" ALV_100_FCAT1

Das könnte Ihnen auch gefallen