02-15-2007 9:47 AM
hi
i am a new abaper
i have to develop a new alv report in oop.
kindly can anyone send any sample code for alv container
thanks in advance
02-15-2007 10:06 AM
Hi,
simple code,
REPORT z_alv_oops_grid MESSAGE-ID z7rnp .
*Data Declaration
*----------------
TABLES: ekko.
TYPE-POOLS: slis. "ALV Declarations
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko ,
it_ekpo TYPE STANDARD TABLE OF t_ekko ,
it_emptytab TYPE STANDARD TABLE OF t_ekko ,
wa_ekko TYPE t_ekko,
wa_ekpo TYPE t_ekko.
DATA: ok_code LIKE sy-ucomm, "OK-Code
save_ok LIKE sy-ucomm.
*ALV data declarations
DATA: fieldcatalog TYPE lvc_t_fcat WITH HEADER LINE.
DATA: gd_fieldcat TYPE lvc_t_fcat,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv.
DATA gs_layout TYPE lvc_s_layo .
*ALVtree data declarations
CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS cl_gui_cfw DEFINITION LOAD.
DATA: gd_tree TYPE REF TO cl_gui_alv_grid,
gd_hierarchy_header TYPE treev_hhdr,
gd_report_title TYPE slis_t_listheader,
gd_logo TYPE sdydo_value,
gd_variant TYPE disvariant ,
gd_container TYPE REF TO cl_gui_custom_container .
*Create container for alv-tree
DATA: gd_tree_container_name(30) TYPE c,
gd_custom_container TYPE REF TO cl_gui_custom_container.
*Selection Screen
*SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE text-001.
*SELECT-OPTIONS: S_EBELN FOR EKKO-EBELN .
*SELECTION-SCREEN END OF BLOCK B1.
*Start-of-selection.
START-OF-SELECTION.
* ALVtree setup data
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM build_hierarchy_header CHANGING gd_hierarchy_header.
PERFORM build_report_title USING gd_report_title gd_logo.
PERFORM build_variant.
* Display ALVtree report
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* Retrieve data into Internal tables
*----------------------------------------------------------------------*
FORM data_retrieval.
BREAK-POINT.
SELECT ebeln
UP TO 30 ROWS
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE it_ekko.
LOOP AT it_ekko INTO wa_ekko.
SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
FROM ekpo APPENDING TABLE it_ekpo
WHERE ebeln = wa_ekko-ebeln.
APPEND wa_ekpo to it_ekpo .
CLEAR wa_ekpo .
ENDLOOP .
ENDFORM. " DATA_RETRIEVAL
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog .
fieldcatalog-fieldname = 'EBELN'. "Field name in itab
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Purchase Order'. "Column text
fieldcatalog-col_pos = 0. "Column position
fieldcatalog-outputlen = 15. "Column width
fieldcatalog-emphasize = 'X'. "Emphasize (X or SPACE)
fieldcatalog-key = 'X'. "Key Field? (X or SPACE)
fieldcatalog-do_sum = 'X'. "Sum Column?
* fieldcatalog-no_zero = 'X'. "Don't display if zero
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'PO Iten'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Status'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Item Change Date'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 3.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Material Number'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'PO Quantity'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Order Unit'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Net Price'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 7.
fieldcatalog-datatype = 'CURR'.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Price / Unit'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 8.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
ENDFORM. " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-totals_only = 'X'.
*
* gd_layout-f2code = 'DISP'. "Sets fcode for when double
* "click(press f2)
*
* gd_layout-zebra = 'X'.
*
* gd_layout-group_change_edit = 'X'.
*
* gd_layout-header_text = 'helllllo'.
*
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form build_hierarchy_header
*&---------------------------------------------------------------------*
* build hierarchy-header-information
*----------------------------------------------------------------------*
* -->P_L_HIERARCHY_HEADER structure for hierarchy-header
*----------------------------------------------------------------------*
FORM build_hierarchy_header CHANGING
p_hierarchy_header TYPE treev_hhdr.
p_hierarchy_header-heading = 'Hierarchy Header'(013).
p_hierarchy_header-tooltip = 'This is the Hierarchy Header !'(014).
p_hierarchy_header-width = 30.
p_hierarchy_header-width_pix = ' ' .
ENDFORM. " build_hierarchy_header
*&---------------------------------------------------------------------*
*& Form BUILD_REPORT_TITLE
*&---------------------------------------------------------------------*
* Build table for ALVtree header
*----------------------------------------------------------------------*
* <-> p1 Header details
* <-> p2 Logo value
*----------------------------------------------------------------------*
FORM build_report_title CHANGING
pt_report_title TYPE slis_t_listheader
pa_logo TYPE sdydo_value.
DATA: ls_line TYPE slis_listheader,
ld_date(10) TYPE c.
* List Heading Line(TYPE H)
CLEAR ls_line.
ls_line-typ = 'H'.
* ls_line-key "Not Used For This Type(H)
ls_line-info = 'PO ALVTree Display'.
APPEND ls_line TO pt_report_title.
* Status Line(TYPE S)
ld_date(2) = sy-datum+6(2).
ld_date+2(1) = '/'.
ld_date+3(2) = sy-datum+4(2).
ld_date+5(1) = '/'.
ld_date+6(4) = sy-datum(4).
ls_line-typ = 'S'.
ls_line-key = 'Date'.
ls_line-info = ld_date.
APPEND ls_line TO pt_report_title.
* Action Line(TYPE A)
CLEAR ls_line.
ls_line-typ = 'A'.
CONCATENATE 'Report: ' sy-repid INTO ls_line-info SEPARATED BY space.
APPEND ls_line TO pt_report_title.
ENDFORM. "build_report_title
*&---------------------------------------------------------------------*
*& Form BUILD_VARIANT
*&---------------------------------------------------------------------*
* Build variant
*----------------------------------------------------------------------*
FORM build_variant.
* Set repid for storing variants
gd_variant-report = sy-repid.
ENDFORM. " BUILD_VARIANT
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*MODULE status_0100 OUTPUT.
*
* SET PF-STATUS 'MENU'.
*
** SET TITLEBAR 'xxx'.
*
*ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm .
WHEN 'EXIT' .
LEAVE PROGRAM .
ENDCASE .
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module display_alv OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE display_alv OUTPUT.
CREATE OBJECT gd_container
EXPORTING container_name = 'ALV_CONTAINER'.
IF gd_tree IS INITIAL .
CREATE OBJECT gd_tree
EXPORTING i_parent = gd_container .
CALL METHOD gd_tree->set_table_for_first_display
EXPORTING
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
* IS_VARIANT =
* I_SAVE =
* I_DEFAULT = 'X'
is_layout = gs_layout
* IS_PRINT =
it_special_groups = gd_tab_group
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
CHANGING
it_outtab = it_ekpo
it_fieldcatalog = gd_fieldcat
* 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. " display_alv OUTPUT
reward if useful.
02-15-2007 9:49 AM
Refer to package SLIS. You have lot of ALV related programs there
02-15-2007 9:56 AM
Hi,
OOPS ALV in Simple Steps.
1. Be ready with your internal table that you want to display in ALV.
2. Copy paste the following statements in the data declaration section
DATA: ok_code LIKE sy-ucomm,
g_container TYPE scrfname VALUE 'G_CUSTOM_CONTROL',
g_grid TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container.
DATA: gs_layout TYPE lvc_s_layo,
gt_fieldcatalog TYPE lvc_t_fcat.
g_container is the variable which contains the custom control name.
g_grid the reference variable of type cl_gui_alv_grid class.
g_custome_container is the reference variable of type cl_gui_custom_container.
3. After you are ready with the internal table prepare the fieldcatalog and populate the layout structure
4. Create a module pool program for the same report.
call screen 100.
Double click on 100 and then you would be navigated to Screen Painter (SE51).
5. Go to layout section, and create a custom control on the screen and name it as G_CUSTOM_CONTROL. (here you can give any name to the control but you have to take care that the name matches with the value of the g_container variable). Refer following snapshot.
6. Now in the PBO section create a module of any name and enter the following code.
if g_custom_container is initial.
here we check that if the custom control container is empty then instantiate the container
create object g_custom_container
exporting container_name = g_container.
here we instantiate the grid and assign it to the custom control container.
create object g_grid
exporting i_parent = g_custom_container.
by calling this method we can pass the internal table and the layout format of the
grid
call method g_grid->set_table_for_first_display
exporting
is_layout = gs_layout
changing
it_outtab = i_mara[]
it_fieldcatalog = gt_fieldcatalog
.
if sy-subrc <> 0.
endif.
endif.
And your OOPs ALV is done.!!!!!
<u><b>Code--</b></u>
REPORT Z_OOPS_ALV .
DATA : BEGIN OF IT_MARA OCCURS 0,
MARK TYPE FLAG,
MATNR TYPE MATNR,
MTART TYPE MTART,
MEINS TYPE MEINS,
MAKTK TYPE MATKL,
END OF IT_MARA.
DATA : BEGIN OF IT_MARA1 OCCURS 0,
MATNR TYPE MATNR,
MTART TYPE MTART,
MEINS TYPE MEINS,
MAKTK TYPE MATKL,
END OF IT_MARA1.
DATA : BEGIN OF IT_MARA2 OCCURS 0,
MATNR TYPE MATNR,
MTART TYPE MTART,
MEINS TYPE MEINS,
MATKL TYPE MATKL ,
END OF IT_MARA2.
DATA : T_FIELDCAT TYPE LVC_T_FCAT,
T_FIELDCAT1 TYPE LVC_T_FCAT,
S_FIELDCAT LIKE LINE OF T_FIELDCAT.
DATA : S_LAYOUT TYPE LVC_S_LAYO.
DATA : CONTROL TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: BEGIN OF WA ,
MARK TYPE FLAG,
MATNR TYPE MATNR,
MTART TYPE MTART,
MEINS TYPE MEINS,
MATKL TYPE MATKL ,
END OF WA.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001 .
SELECT-OPTIONS: S_MATNR FOR IT_MARA-MATNR .
SELECTION-SCREEN END OF BLOCK B1 .
----
CLASS lcl_events_box DEFINITION
----
*
----
CLASS LCL_EVENTS_BOX DEFINITION.
PUBLIC SECTION.
METHODS :
*Handler_Data_Changed for event Data_Changed of cl_gui_alv_grid
*imporTing er_data_changed,
*
HANDLER_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM,
HANDLER_TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT E_INTERACTIVE.
ENDCLASS. "lcl_events_box DEFINITION
----
CLASS lcl_events_box IMPLEMENTATION
----
*
----
CLASS LCL_EVENTS_BOX IMPLEMENTATION.
METHOD HANDLER_USER_COMMAND.
PERFORM FORM_USERCOMMAND CHANGING E_UCOMM.
ENDMETHOD. "Handler_user_command
METHOD HANDLER_TOOLBAR.
PERFORM FORM_TOOLBAR CHANGING E_OBJECT E_INTERACTIVE
E_OBJECT->MT_TOOLBAR.
ENDMETHOD. "Handler_ToolBar
ENDCLASS. "lcl_events_box IMPLEMENTATION
START-OF-SELECTION.
DATA : W_EVENTS TYPE REF TO LCL_EVENTS_BOX.
SELECT MATNR
MTART
MEINS
FROM MARA INTO CORRESPONDING FIELDS OF TABLE
IT_MARA
WHERE MATNR IN S_MATNR.
CALL SCREEN 100.
&----
*& Module pbo_module OUTPUT
&----
text
----
MODULE PBO_MODULE OUTPUT.
IF GRID IS INITIAL.
CREATE OBJECT CONTROL
EXPORTING
CONTAINER_NAME = 'CUSTOM_CONTROL'.
CREATE OBJECT GRID
EXPORTING
I_PARENT = CONTROL.
PERFORM BUILD_CATALOG.
PERFORM BUILD_CATALOG1.
PERFORM BUILD_LAYOUT.
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = S_LAYOUT
CHANGING
IT_OUTTAB = IT_MARA[]
IT_FIELDCATALOG = T_FIELDCAT.
CREATE OBJECT W_EVENTS.
SET HANDLER : W_EVENTS->HANDLER_TOOLBAR FOR GRID,
W_EVENTS->HANDLER_USER_COMMAND FOR GRID.
CALL METHOD GRID->SET_TOOLBAR_INTERACTIVE.
ELSE.
CALL METHOD GRID->REFRESH_TABLE_DISPLAY.
ENDIF.
ENDMODULE. " pbo_module OUTPUT
&----
*& Form BUILD_CATALOG
FORM BUILD_CATALOG .
S_FIELDCAT-COL_POS = '1'.
S_FIELDCAT-FIELDNAME = 'MARK'.
S_FIELDCAT-CHECKBOX = 'X'.
S_FIELDCAT-EDIT = 'X'.
APPEND S_FIELDCAT TO T_FIELDCAT.
CLEAR S_FIELDCAT.
S_FIELDCAT-COL_POS = '2'.
S_FIELDCAT-FIELDNAME = 'MATNR'.
S_FIELDCAT-SCRTEXT_M = 'MATERIAL NO'.
APPEND S_FIELDCAT TO T_FIELDCAT.
S_FIELDCAT-COL_POS = '3'.
S_FIELDCAT-FIELDNAME = 'MTART'.
S_FIELDCAT-SCRTEXT_M = 'MATERL TYPE'.
APPEND S_FIELDCAT TO T_FIELDCAT.
S_FIELDCAT-COL_POS = '4'.
S_FIELDCAT-FIELDNAME = 'MEINS'.
S_FIELDCAT-SCRTEXT_M = 'UOM'.
APPEND S_FIELDCAT TO T_FIELDCAT.
ENDFORM. " BUILD_CATALOG
&----
*& Form BUILD_LAYOUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM BUILD_LAYOUT .
S_LAYOUT-ZEBRA = 'X'.
S_LAYOUT-CWIDTH_OPT = 'X'.
S_LAYOUT-GRID_TITLE = 'Material Details'.
ENDFORM. "BUILD_LAYOUT
&----
*& Form FORM_USERCOMMAND
&----
text
----
<--P_E_UCOMM text
----
FORM FORM_USERCOMMAND CHANGING P_E_UCOMM.
CASE P_E_UCOMM.
WHEN 'INT1'.
DO.
READ TABLE IT_MARA INDEX SY-INDEX TRANSPORTING MARK MATNR.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
IF IT_MARA-MARK = 'X'.
READ TABLE IT_MARA INTO WA TRANSPORTING MATNR MTART MEINS .
MOVE-CORRESPONDING WA TO IT_MARA1.
READ TABLE IT_MARA1 TRANSPORTING MATNR MTART MEINS .
MOVE-CORRESPONDING IT_MARA1 TO IT_MARA2.
APPEND IT_MARA2.
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = S_LAYOUT
CHANGING
IT_OUTTAB = IT_MARA2[]
IT_FIELDCATALOG = T_FIELDCAT1.
*
SET PARAMETER ID 'MAT' FIELD IT_MARA-MATNR.
CALL TRANSACTION 'MM02'.
.
ENDIF.
ENDIF.
ENDDO.
WHEN 'GRPH'.
WRITE:/ ' No graph maintained'.
ENDCASE.
ENDFORM. " FORM_USERCOMMAND
&----
*& Form FORM_TOOLBAR
&----
text
----
<--P_E_OBJECT text
<--P_E_INTERACTIVE text
<--P_E_OBJECT_>MT_TOOLBAR text
----
FORM FORM_TOOLBAR CHANGING P_E_OBJECT TYPE REF TO
CL_ALV_EVENT_TOOLBAR_SET
P_E_INTERACTIVE
MT_TOOLBAR TYPE TTB_BUTTON.
REFRESH MT_TOOLBAR.
DATA WAL_BUTTON TYPE STB_BUTTON.
WAL_BUTTON-ICON = CON_status_reverse.
WAL_BUTTON-TEXT = 'GO'.
WAL_BUTTON-QUICKINFO = 'PROCEED'.
WAL_BUTTON-FUNCTION = 'INT1'.
WAL_BUTTON-BUTN_TYPE = 0.
WAL_BUTTON-DISABLED = 'X'.
INSERT WAL_BUTTON INTO P_E_OBJECT->MT_TOOLBAR INDEX 1.
WAL_BUTTON-TEXT = 'GO'.
WAL_BUTTON-QUICKINFO = 'PROCEED'.
WAL_BUTTON-FUNCTION = 'INT1'.
WAL_BUTTON-BUTN_TYPE = 0.
WAL_BUTTON-DISABLED = SPACE.
INSERT WAL_BUTTON INTO P_E_OBJECT->MT_TOOLBAR INDEX 1.
WAL_BUTTON-TEXT = 'GO'.
WAL_BUTTON-QUICKINFO = 'Graph Display'.
WAL_BUTTON-FUNCTION = 'GRPH'.
WAL_BUTTON-ICON = 'ICON_GRAPHICS'.
WAL_BUTTON-BUTN_TYPE = 0.
WAL_BUTTON-DISABLED = SPACE.
INSERT WAL_BUTTON INTO P_E_OBJECT->MT_TOOLBAR INDEX 1.
ENDFORM. " FORM_TOOLBAR
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Form BUILD_CATALOG1
&----
text
----
--> p1 text
<-- p2 text
----
FORM BUILD_CATALOG1 .
S_FIELDCAT-COL_POS = '1'.
S_FIELDCAT-FIELDNAME = 'MATNR'.
S_FIELDCAT-SCRTEXT_M = 'MATERIAL NO'.
APPEND S_FIELDCAT TO T_FIELDCAT1.
S_FIELDCAT-COL_POS = '2'.
S_FIELDCAT-FIELDNAME = 'MTART'.
S_FIELDCAT-SCRTEXT_M = 'MATERL TYPE'.
APPEND S_FIELDCAT TO T_FIELDCAT1.
S_FIELDCAT-COL_POS = '3'.
S_FIELDCAT-FIELDNAME = 'MEINS'.
S_FIELDCAT-SCRTEXT_M = 'UOM'.
APPEND S_FIELDCAT TO T_FIELDCAT1.
S_FIELDCAT-COL_POS = '4' .
S_FIELDCAT-FIELDNAME = 'MATKL' .
S_FIELDCAT-SCRTEXT_M = 'MATERIAL GROUP' .
APPEND S_FIELDCAT TO T_FIELDCAT1.
ENDFORM. " BUILD_CATALOG1
reward if useful.
02-15-2007 10:06 AM
Hi,
simple code,
REPORT z_alv_oops_grid MESSAGE-ID z7rnp .
*Data Declaration
*----------------
TABLES: ekko.
TYPE-POOLS: slis. "ALV Declarations
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko ,
it_ekpo TYPE STANDARD TABLE OF t_ekko ,
it_emptytab TYPE STANDARD TABLE OF t_ekko ,
wa_ekko TYPE t_ekko,
wa_ekpo TYPE t_ekko.
DATA: ok_code LIKE sy-ucomm, "OK-Code
save_ok LIKE sy-ucomm.
*ALV data declarations
DATA: fieldcatalog TYPE lvc_t_fcat WITH HEADER LINE.
DATA: gd_fieldcat TYPE lvc_t_fcat,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv.
DATA gs_layout TYPE lvc_s_layo .
*ALVtree data declarations
CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS cl_gui_cfw DEFINITION LOAD.
DATA: gd_tree TYPE REF TO cl_gui_alv_grid,
gd_hierarchy_header TYPE treev_hhdr,
gd_report_title TYPE slis_t_listheader,
gd_logo TYPE sdydo_value,
gd_variant TYPE disvariant ,
gd_container TYPE REF TO cl_gui_custom_container .
*Create container for alv-tree
DATA: gd_tree_container_name(30) TYPE c,
gd_custom_container TYPE REF TO cl_gui_custom_container.
*Selection Screen
*SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE text-001.
*SELECT-OPTIONS: S_EBELN FOR EKKO-EBELN .
*SELECTION-SCREEN END OF BLOCK B1.
*Start-of-selection.
START-OF-SELECTION.
* ALVtree setup data
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM build_hierarchy_header CHANGING gd_hierarchy_header.
PERFORM build_report_title USING gd_report_title gd_logo.
PERFORM build_variant.
* Display ALVtree report
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* Retrieve data into Internal tables
*----------------------------------------------------------------------*
FORM data_retrieval.
BREAK-POINT.
SELECT ebeln
UP TO 30 ROWS
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE it_ekko.
LOOP AT it_ekko INTO wa_ekko.
SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
FROM ekpo APPENDING TABLE it_ekpo
WHERE ebeln = wa_ekko-ebeln.
APPEND wa_ekpo to it_ekpo .
CLEAR wa_ekpo .
ENDLOOP .
ENDFORM. " DATA_RETRIEVAL
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog .
fieldcatalog-fieldname = 'EBELN'. "Field name in itab
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Purchase Order'. "Column text
fieldcatalog-col_pos = 0. "Column position
fieldcatalog-outputlen = 15. "Column width
fieldcatalog-emphasize = 'X'. "Emphasize (X or SPACE)
fieldcatalog-key = 'X'. "Key Field? (X or SPACE)
fieldcatalog-do_sum = 'X'. "Sum Column?
* fieldcatalog-no_zero = 'X'. "Don't display if zero
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'PO Iten'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Status'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Item Change Date'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 3.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Material Number'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'PO Quantity'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Order Unit'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Net Price'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 7.
fieldcatalog-datatype = 'CURR'.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-tabname = 'IT_EKPO'.
fieldcatalog-scrtext_m = 'Price / Unit'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = 8.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
ENDFORM. " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-totals_only = 'X'.
*
* gd_layout-f2code = 'DISP'. "Sets fcode for when double
* "click(press f2)
*
* gd_layout-zebra = 'X'.
*
* gd_layout-group_change_edit = 'X'.
*
* gd_layout-header_text = 'helllllo'.
*
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form build_hierarchy_header
*&---------------------------------------------------------------------*
* build hierarchy-header-information
*----------------------------------------------------------------------*
* -->P_L_HIERARCHY_HEADER structure for hierarchy-header
*----------------------------------------------------------------------*
FORM build_hierarchy_header CHANGING
p_hierarchy_header TYPE treev_hhdr.
p_hierarchy_header-heading = 'Hierarchy Header'(013).
p_hierarchy_header-tooltip = 'This is the Hierarchy Header !'(014).
p_hierarchy_header-width = 30.
p_hierarchy_header-width_pix = ' ' .
ENDFORM. " build_hierarchy_header
*&---------------------------------------------------------------------*
*& Form BUILD_REPORT_TITLE
*&---------------------------------------------------------------------*
* Build table for ALVtree header
*----------------------------------------------------------------------*
* <-> p1 Header details
* <-> p2 Logo value
*----------------------------------------------------------------------*
FORM build_report_title CHANGING
pt_report_title TYPE slis_t_listheader
pa_logo TYPE sdydo_value.
DATA: ls_line TYPE slis_listheader,
ld_date(10) TYPE c.
* List Heading Line(TYPE H)
CLEAR ls_line.
ls_line-typ = 'H'.
* ls_line-key "Not Used For This Type(H)
ls_line-info = 'PO ALVTree Display'.
APPEND ls_line TO pt_report_title.
* Status Line(TYPE S)
ld_date(2) = sy-datum+6(2).
ld_date+2(1) = '/'.
ld_date+3(2) = sy-datum+4(2).
ld_date+5(1) = '/'.
ld_date+6(4) = sy-datum(4).
ls_line-typ = 'S'.
ls_line-key = 'Date'.
ls_line-info = ld_date.
APPEND ls_line TO pt_report_title.
* Action Line(TYPE A)
CLEAR ls_line.
ls_line-typ = 'A'.
CONCATENATE 'Report: ' sy-repid INTO ls_line-info SEPARATED BY space.
APPEND ls_line TO pt_report_title.
ENDFORM. "build_report_title
*&---------------------------------------------------------------------*
*& Form BUILD_VARIANT
*&---------------------------------------------------------------------*
* Build variant
*----------------------------------------------------------------------*
FORM build_variant.
* Set repid for storing variants
gd_variant-report = sy-repid.
ENDFORM. " BUILD_VARIANT
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*MODULE status_0100 OUTPUT.
*
* SET PF-STATUS 'MENU'.
*
** SET TITLEBAR 'xxx'.
*
*ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm .
WHEN 'EXIT' .
LEAVE PROGRAM .
ENDCASE .
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module display_alv OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE display_alv OUTPUT.
CREATE OBJECT gd_container
EXPORTING container_name = 'ALV_CONTAINER'.
IF gd_tree IS INITIAL .
CREATE OBJECT gd_tree
EXPORTING i_parent = gd_container .
CALL METHOD gd_tree->set_table_for_first_display
EXPORTING
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
* IS_VARIANT =
* I_SAVE =
* I_DEFAULT = 'X'
is_layout = gs_layout
* IS_PRINT =
it_special_groups = gd_tab_group
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
CHANGING
it_outtab = it_ekpo
it_fieldcatalog = gd_fieldcat
* 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. " display_alv OUTPUT
reward if useful.
02-15-2007 10:40 AM
For ALV Report using OOPs Concept, here is the sample text code. kindly close the thread and point if it works:
SE24: Create a Class. Create Method Constructor....>Level"Instance" , Visibility "Public", write the method for it by double clicking
Code sample: METHOD constructor.
CREATE OBJECT o_cont
EXPORTING
container_name = p_cont.
IF sy-subrc = 0.
CREATE OBJECT o_grid
EXPORTING
i_parent = o_cont.
ENDIF.
ENDMETHOD.
Assign Parameter p_cont , with Associated Type say "Char32".
Method Get_Data to select data
Code sample: method GET_DATA.
select
vbeln
audat
kunnr
vkorg
netwr
from vbak
into corresponding fields of table it_so
where kunnr in s_cust.
if not it_so[] is initial.
call method put_data.
endif.
endmethod.
Parameter /Select-Options for Get_data...say S_Cust Type "Importing" associated type say"Zkunnr". Zkunnr is a table type with line-type say "WSELKUNNR" -a structure with components "SIGN, OPTIOn,LOW,HIGH" for select options. Create ur own table type in SE11 and LineType.
Method Display_Data with Sample Code: METHOD put_data.
DATA: it_fldcat TYPE lvc_t_fcat,
wa_fldcat LIKE LINE OF it_fldcat.
DATA: it_sort TYPE lvc_t_sort,
wa_sort LIKE LINE OF it_sort.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE =
i_structure_name = 'Z_SALES'
I_CLIENT_NEVER_DISPLAY = 'X'
I_BYPASSING_BUFFER =
I_INTERNAL_TABNAME =
CHANGING
ct_fieldcat = it_fldcat[]
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.
EXIT.
ELSE.
LOOP AT it_fldcat INTO wa_fldcat.
CASE wa_fldcat-fieldname.
WHEN 'VBELN'.
wa_fldcat-reptext = 'SO_No'.
wa_fldcat-ref_table = 'X'.
WHEN 'AUDAT'.
wa_fldcat-reptext = 'SO_Date'.
wa_fldcat-ref_table = 'X'.
WHEN 'KUNNR'.
wa_fldcat-reptext = 'Cust_No'.
wa_fldcat-ref_table = 'X'.
WHEN 'VKORG'.
wa_fldcat-reptext = 'SO_Org'.
wa_fldcat-ref_table = 'X'.
WHEN 'NETWR'.
wa_fldcat-reptext = 'Net_Value'.
wa_fldcat-do_sum = 'X'.
ENDCASE.
MODIFY it_fldcat FROM wa_fldcat INDEX sy-tabix.
ENDLOOP.
wa_sort-fieldname = 'KUNNR'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
ENDIF.
CALL METHOD o_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 =
is_print =
it_special_groups =
it_toolbar_excluding =
it_hyperlink =
it_alv_graphics =
it_except_qinfo =
ir_salv_adapter =
CHANGING
it_outtab = it_so[]
it_fieldcatalog = it_fldcat[]
it_sort = 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.
ENDMETHOD.
Now go to "Attribute Tab"
1)o_cont, Level:Instance, Private,Type Ref, CL_GUI_CUSTOM_CONTAINER
2)o_grid, Instance, Private, Type ref,CL_GUI_ALV_GRID
3)it_SO, instance,Private, type, z_sales(say for e.g)
Now save these and activate
SE38(Executable Program but you'll need to link this to a Screen painter in se51 to create container for ALV Grid
Code: &----
*& Module Pool ZCL_ALV
*&
&----
*&
*&
&----
REPORT zcl_alv.
TABLES: kna1.
DATA : x TYPE REF TO zcl_alv.
DATA: l_kunnr TYPE STANDARD TABLE OF wselkunnr.
SELECT-OPTIONS : s_kunnr FOR kna1-kunnr.
START-OF-SELECTION .
SET SCREEN 1000.
&----
*& Module STATUS_1000 OUTPUT
&----
text
----
MODULE status_1000 OUTPUT.
SET PF-STATUS 'OBJ'.
SET TITLEBAR 'T001'.
IF x IS INITIAL.
CREATE OBJECT x
EXPORTING
p_cont = 'SALES_DATA'.
ENDIF.
l_kunnr[] = s_kunnr[].
CALL METHOD x->get_data
EXPORTING
s_cust = l_kunnr.
ENDMODULE. " STATUS_1000 OUTPUT
&----
*& Module USER_COMMAND_1000 INPUT
&----
text
----
MODULE user_command_1000 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_1000 INPUT
///// Set ur PF Status and title bar
SE51- PBO, Module Status_screen number
PAI, Module User_command_screen number
Go to layout "Screen painter"........ Cick on "Custom Control " and Drag to create the Container with name say "Sales_Data
Save and activate. This will work.
02-15-2007 10:45 AM
Hi,
Sample programs:
http://www.geocities.com/victorav15/sapr3/abap_ood.html#d_grid
http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_color.htm
http://www.sapdevelopment.co.uk/reporting/alvhome.htm
-->download the PDF from following link.
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf
Some more:
http://www.sap-hefte.de/download/dateien/1025/087_leseprobe.pdf
http://www.alvgmbh.de/dwnload/gonio_t.pdfhttp://
You can get all demo programs for ALV:
Go to se38 and type <b>BCALV*</b> and press F4 for all demo porgrams.
A container is used for the ALV control.The class used for ALV is <b>cl_gui_alv_grid</b> and the custom container used is of class <b>cl_gui_custom_container</b>.
<b>a basic sample program:</b>
In your screen,you should create a control area for the custom controller and name it as 'CONTAINER'.
REPORT SAMPLE.
DATA: alv type ref to cl_gui_alv_GRID,
cont type ref to cl_gui_custom_container,
itab_spfli type table of spfli,
ok_code type sy-ucomm.
START-OF-SELECTION.
select * from spfli into table itab_spfli.
call screen 100.
END-OF-SELECTION.
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE STATUS_0100 OUTPUT.
seT PF-STATUS 'GUI'.
SET TITLEBAR 'xxx'.
if cont is initial.
CREATE OBJECT cont
EXPORTING
CONTAINER_NAME = 'CONTAINER'.
CREATE OBJECT ALV
EXPORTING
I_PARENT = CONT.
CALL METHOD ALV->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME = 'SPFLI'
IS_VARIANT =
I_SAVE =
I_DEFAULT =
IS_LAYOUT =
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
IR_SALV_ADAPTER =
CHANGING
IT_OUTTAB = itab_spfli
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.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
case ok_code.
when 'BACK'.
leave to screen 0.
when 'EXIT'.
leave to screen 0.
when 'SAVE'.
MODIFY spfli from table itab_spfli.
ENDCASE.
Regards,
Beejal
**Reward if this helps
02-15-2007 10:46 AM
if you have ecc 6.0 then you can use CL_GUI_SALV_GRID.
this one doesnt need any custom container anymore.
02-15-2007 11:15 AM