Application Development 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: 

problem in ALV Oops

Former Member
0 Kudos

HI all,

I displaying the output with using alv grid with classes, the problem i have to allow the user to give a popup checkbox to select the fields to display in output, so that i used the fm 'rs_databrowse_fieldselect', it is diplaying the box but all the fieldcats table are lvc_t_fcat structure but in the function module the parameters are internal table, please help in getting that box and mapping to display the wanted fields.

3 REPLIES 3

Former Member
0 Kudos

Hi Ashok,

I am not too sure of your requirements.

But if it is ALV OO, why don't the users use the ALV functionality - Layout settings? In Layout settings, the users can save variant of output columns that they want ti display on screen, and they can reuse the variant as and when.

Let me know if you require more info

Rgds,

ET

FredericGirod
Active Contributor
0 Kudos

Hi,

why didn't you use the variant for the ALV Grid to allow user to select fields that must be display ?

Rgd

Frédéric

Former Member
0 Kudos

Hai Ashok

try with the following Code( Just copy the code & try with in SE38 Tcode & Execute it that all)

REPORT ZALV_SALES_HEADER_DETAIL MESSAGE-ID Z50650(MSG) .

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

  • TABLES

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

TABLES: VBAK . "SALES DOCUMENT HEADER

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

  • DATA OBJECTS DECLARATION

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

DATA: IT_VBAK TYPE STANDARD TABLE OF ZVBAK_STRUC,

IT_VBAP TYPE STANDARD TABLE OF ZVBAP_STRUC,

GS_LAYOUT TYPE LVC_S_LAYO,

GS1_LAYOUT TYPE LVC_S_LAYO,

GRID TYPE REF TO CL_GUI_ALV_GRID,

CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

VBAK_CONTAINER TYPE REF TO CL_GUI_CONTAINER,

VBAP_CONTAINER TYPE REF TO CL_GUI_CONTAINER,

WA_VBAK LIKE LINE OF IT_VBAK,

WA_VBAP LIKE LINE OF IT_VBAP,

SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,

TOP_OF_PAGE_CONTAINER TYPE REF TO CL_GUI_CONTAINER,

GRID_VBAP TYPE REF TO CL_GUI_ALV_GRID,

TOP_PAGE TYPE REF TO CL_DD_DOCUMENT,

FLAG(1).

.

*"EVENT RECIEVER CLASS DEFINITION

CLASS LCL_EVENT_RECIEVER DEFINITION DEFERRED.

DATA: OBJ_EVENT TYPE REF TO LCL_EVENT_RECIEVER.

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

  • SELECTION-SCREEN

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

SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.

PARAMETERS: P_VBTYP LIKE VBAK-VBTYP DEFAULT 'C'.

SELECTION-SCREEN: END OF BLOCK B1.

  • CLASS DEFINITION AND DECLARATIONS

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

CLASS LCL_EVENT_RECIEVER DEFINITION.

PUBLIC SECTION.

EVENTS:DOUBLE_CLICK,

TOP_OF_PAGE.

METHODS:HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

IMPORTING E_ROW .

METHODS: HANDLE_TOP_OF_PAGE FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID.

ENDCLASS. "LCL_EVENT_RECIEVER DEFINITION

----


  • CLASS LCL_EVENT_RECIEVER IMPLEMENTATION

----


*

----


CLASS LCL_EVENT_RECIEVER IMPLEMENTATION.

METHOD: HANDLE_DOUBLE_CLICK.

READ TABLE IT_VBAK INDEX E_ROW-INDEX INTO WA_VBAK.

PERFORM FETCH_ITEM_DETAILS USING WA_VBAK.

PERFORM ALV_GRID.

ENDMETHOD. "HANDLE_DOUBLE_CLICK

METHOD: HANDLE_TOP_OF_PAGE.

CALL METHOD TOP_PAGE->ADD_TEXT

EXPORTING

TEXT = 'SALES HEADER & ITEM DETAILS'.

CALL METHOD TOP_PAGE->DISPLAY_DOCUMENT

EXPORTING

PARENT = TOP_OF_PAGE_CONTAINER.

ENDMETHOD. "HANDLER_TOP_OF_PAGE

ENDCLASS. "LCL_EVENT_RECIEVER IMPLEMENTATION

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

  • AT SELECTION-SCREEN

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

AT SELECTION-SCREEN.

IF S_VBELN IS NOT INITIAL.

SELECT COUNT(*)

FROM VBAK

WHERE VBELN IN S_VBELN.

IF SY-DBCNT = 0.

MESSAGE E000 WITH 'NO TABLE ENTRIES FOUND FOR LOW KEY SPECIFIED'.

ENDIF.

ENDIF.

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

  • START-OF-SELECTION.

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

START-OF-SELECTION.

PERFORM FETCH_SALES_HEADER_RECORD.

PERFORM CREATE_CALL. "CREATION OF OBJECTS & CALLING METHODS

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

  • END-OF-SELECTION.

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

END-OF-SELECTION.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'ZSTATUS'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Form FETCH_SALES_HEADER_RECORD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_SALES_HEADER_RECORD .

SELECT

VBELN

AUDAT

VBTYP

AUART

AUGRU

NETWR

WAERK

FROM VBAK

INTO CORRESPONDING FIELDS OF TABLE IT_VBAK

WHERE VBELN IN S_VBELN

AND VBTYP = P_VBTYP.

ENDFORM. " FETCH_SALES_HEADER_RECORD

&----


*& Form CREATE_CALL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CREATE_CALL .

IF CUSTOM_CONTAINER IS INITIAL.

CREATE OBJECT CUSTOM_CONTAINER

EXPORTING

  • PARENT =

CONTAINER_NAME = 'CUSTOM_CONTAINER'

  • 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 SPLITTER

EXPORTING

TOP = 5

PARENT = CUSTOM_CONTAINER

ROWS = 3

COLUMNS = 1

EXCEPTIONS

CNTL_ERROR = 1

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

CALL METHOD SPLITTER->GET_CONTAINER

EXPORTING

ROW = 1

COLUMN = 1

RECEIVING

CONTAINER = TOP_OF_PAGE_CONTAINER.

CALL METHOD SPLITTER->GET_CONTAINER

EXPORTING

ROW = 2

COLUMN = 1

RECEIVING

CONTAINER = VBAK_CONTAINER.

CALL METHOD SPLITTER->GET_CONTAINER

EXPORTING

ROW = 3

COLUMN = 1

RECEIVING

CONTAINER = VBAP_CONTAINER.

CREATE OBJECT GRID

EXPORTING

  • I_SHELLSTYLE = 0

  • I_LIFETIME =

I_PARENT = VBAK_CONTAINER

  • I_APPL_EVENTS = space

  • I_PARENTDBG =

  • I_APPLOGPARENT =

  • I_GRAPHICSPARENT =

  • I_NAME =

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.

GS_LAYOUT-GRID_TITLE = 'SALES HEADER DETAILS.'(100).

CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

I_STRUCTURE_NAME = 'ZVBAK_STRUC'

  • IS_VARIANT =

  • I_SAVE =

  • I_DEFAULT = 'X'

IS_LAYOUT = GS_LAYOUT

  • IS_PRINT =

  • IT_SPECIAL_GROUPS =

  • IT_TOOLBAR_EXCLUDING =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

CHANGING

IT_OUTTAB = IT_VBAK

  • IT_FIELDCATALOG =

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

CREATE OBJECT OBJ_EVENT .

SET HANDLER OBJ_EVENT->HANDLE_DOUBLE_CLICK FOR GRID.

SET HANDLER OBJ_EVENT->HANDLE_TOP_OF_PAGE FOR GRID.

CREATE OBJECT TOP_PAGE

EXPORTING

STYLE = 'ALV_GRID'

.

CALL METHOD TOP_PAGE->INITIALIZE_DOCUMENT.

CALL METHOD GRID->LIST_PROCESSING_EVENTS

EXPORTING

I_EVENT_NAME = 'TOP_OF_PAGE'

I_DYNDOC_ID = TOP_PAGE.

CALL SCREEN 100.

ENDFORM. " CREATE_CALL

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

CASE SY-UCOMM.

WHEN 'EXIT'.

LEAVE PROGRAM.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form FETCH_ITEM_DETAILS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_ITEM_DETAILS USING WA_VBAK TYPE ZVBAK_STRUC .

SELECT

VBELN

POSNR

MATNR

MATWA

PMATN

CHARG

FROM VBAP

INTO TABLE IT_VBAP

WHERE VBELN = WA_VBAK-VBELN.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH 'NO RECORDS FOUND FOR SPECIFIED KEY'.

ENDIF.

ENDFORM. " FETCH_ITEM_DETAILS

&----


*& Module STATUS_0200 OUTPUT

&----


  • text

----


MODULE STATUS_0200 OUTPUT.

SET PF-STATUS 'ZSTATUS'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0200 OUTPUT

&----


*& Module USER_COMMAND_0200 INPUT

&----


  • text

----


MODULE USER_COMMAND_0200 INPUT.

CASE SY-UCOMM.

WHEN 'EXIT'.

LEAVE PROGRAM.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_0200 INPUT

&----


*& Form alv_grid

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ALV_GRID .

IF FLAG = ''.

FLAG = 'X'.

CREATE OBJECT GRID_VBAP

EXPORTING

  • I_SHELLSTYLE = 0

  • I_LIFETIME =

I_PARENT = VBAP_CONTAINER

  • I_APPL_EVENTS = space

  • I_PARENTDBG =

  • I_APPLOGPARENT =

  • I_GRAPHICSPARENT =

  • I_NAME =

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

ENDIF.

GS1_LAYOUT-GRID_TITLE = 'SALES ITEM DETAILS.'(100).

CALL METHOD GRID_VBAP->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

I_STRUCTURE_NAME = 'ZVBAP_STRUC'

  • IS_VARIANT =

  • I_SAVE =

  • I_DEFAULT = 'X'

IS_LAYOUT = GS1_LAYOUT

  • IS_PRINT =

  • IT_SPECIAL_GROUPS =

  • IT_TOOLBAR_EXCLUDING =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

CHANGING

IT_OUTTAB = IT_VBAP

  • IT_FIELDCATALOG =

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

ENDFORM. " alv_grid

Thanks & regards

Sreenivasulu P