2007 Aug 14 8:30 AM
Hi all
what are the initial steps to create alv with oops?
Regrds
hitesh
2007 Aug 14 8:36 AM
<b>Process to create ALV with OOPs:</b>
Step 1:
Create a container. There are 2 type of containers: docking and custom.
Go to SE38.Create a program. Use Pattern button to create object for docking container. Click ABAP Object Pattern radio button. Click Create object radio button. Give Instance as o_docking and class as cl_gui_docking_contianer.
Step 2:
Create a grid inside the container.
Use Pattern button to create the same. Make the parent of grid as container.
Click ABAP Object Pattern radio button. Click Create object radio button. Give Instance as o_grid and class as cl_gui_alv_grid. Create object o_grid.
Step 3:
Call the function lvc_fieldcatalog_merge to get the field catalog.
Pass the structure name.
Step 4:
Call the method of grid set_table_for_first_display to display the output.
Click ABAP Object Pattern radio button. Click Call Method radio button. Give Instance as o_grid and Class/Interface as cl_gui_alv_grid and Method as set_table_for_first_display.
w_variant-report = sy-repid.
Call method o_grid->set_table_for_first_display
Step 5:
Fill the internal table itab with values by using logic.
select * from mara into table itab up to 100 rows.
call screen 9000.
Create a screen by double clicking 9000 in the above line. Fill the description for the screen. In the flow logic, uncomment the PBO and PAI module and create those in main program (for simplicity).
Step 6:
Create GUI status. Create GUI Title if required. That can be done by using display object List (CtrlShiftF5).Then in left side, right click the program and create GUI Status and Title.
Step 7:
Free the memory occupied once the BACK, EXIT or CANCEL button is clicked. Use Pattern button to call the method FREE of cl_gui_alv_grid and cl_gui_docking_container.
Click ABAP Object Pattern radio button. Click Call Method radio button. Give Instance as o_grid and Class/Interface as cl_gui_alv_grid and Method as Free.
Similarly Click Call Method radio button. Give Instance as o_docking and Class/Interface as cl_gui_docking_container and Method as Free.
Regards
Mustafizur
2007 Aug 14 8:31 AM
Hi
check this
Classical ALV:
http://www.geocities.com/mpioud/Abap_programs.html
OOPS ALV:
Editable ALV
Tree
http://www.sapdevelopment.co.uk/reporting/alv/alvtree/alvtree_usrint.htm
General Tutorial for OOPS
<b>Reward points for useful Answers</b>
Regards
Anji
2007 Aug 14 8:35 AM
Hello Hitesh,
SAP Provided some simple and standard programs for help...
Just go to se38 and type bcalv* and press f4 u will get lot of examples for ALVs.
and please refer to the following code and steps bellow to that...
&----
*& Report ZMAT_ALV_GRID *
*& *
&----
*& *
*& *
&----
REPORT ZCL_CLASS1.
TYPES: BEGIN OF T_MARA,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MAKT-MAKTX,
WERKS TYPE MARD-WERKS,
LGORT TYPE MARD-LGORT,
LABST TYPE MARD-LABST,
END OF T_MARA.
*DATA: IT_MARA TYPE STANDARD TABLE OF T_MARA.
DATA: IT_MARA TYPE T_MARA OCCURS 0.
DATA: O_CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
O_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: X_FLDCAT TYPE LVC_S_FCAT.
DATA: IT_FLDCAT TYPE LVC_T_FCAT.
DATA: I_LAYOUT TYPE LVC_S_LAYO.
DATA: X_SORT TYPE LVC_S_SORT.
DATA: I_SORT TYPE LVC_T_SORT.
TABLES: MARA.
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
PARAMETERS: P_CHK AS CHECKBOX.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM GENERATE_FLDCAT.
PERFORM GENERATE_LAYOUT.
PERFORM DO_SORT.
SET SCREEN 100.
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'MAIN'.
SET TITLEBAR 'xxx'.
PERFORM BUILD_ALV.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Form BUILD_ALV
&----
text
----
FORM BUILD_ALV .
CREATE OBJECT O_CONT
EXPORTING
CONTAINER_NAME = 'MAT_CONTAINER'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
others = 6.
CREATE OBJECT O_GRID
EXPORTING
I_PARENT = O_CONT
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
others = 5.
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 = ' '
IS_LAYOUT = I_LAYOUT
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
IT_OUTTAB = IT_MARA
IT_FIELDCATALOG = IT_FLDCAT[]
IT_SORT = I_SORT
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4.
ENDFORM. " BUILD_ALV
&----
*& Form GET_DATA
&----
text
----
FORM GET_DATA .
SELECT A~MATNR
B~MAKTX
C~WERKS
C~LGORT
C~LABST
INTO TABLE IT_MARA
FROM MARA AS A
INNER JOIN MAKT AS B
ON BMATNR = AMATNR
INNER JOIN MARD AS C
ON CMATNR = AMATNR
WHERE A~MATNR IN S_MATNR
AND B~SPRAS = SY-LANGU.
ENDFORM. " GET_DATA
&----
*& Form GENERATE_FLDCAT
&----
text
----
FORM GENERATE_FLDCAT .
*CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE =
I_STRUCTURE_NAME = 'ZSMARA'
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.
X_FLDCAT-COL_POS = 1.
X_FLDCAT-FIELDNAME = 'MATNR'.
X_FLDCAT-OUTPUTLEN = '18'.
X_FLDCAT-REPTEXT = 'Material No'.
APPEND X_FLDCAT TO IT_FLDCAT.
X_FLDCAT-COL_POS = 2.
X_FLDCAT-FIELDNAME = 'MAKTX'.
X_FLDCAT-OUTPUTLEN = '48'.
X_FLDCAT-REPTEXT = 'Material Desc'.
X_FLDCAT-TOOLTIP = 'Material Desc'.
APPEND X_FLDCAT TO IT_FLDCAT.
X_FLDCAT-COL_POS = 3.
X_FLDCAT-FIELDNAME = 'WERKS'.
X_FLDCAT-OUTPUTLEN = '5'.
X_FLDCAT-REPTEXT = 'Plant'.
X_FLDCAT-TOOLTIP = 'Plant'.
APPEND X_FLDCAT TO IT_FLDCAT.
X_FLDCAT-COL_POS = 4.
X_FLDCAT-FIELDNAME = 'LGORT'.
X_FLDCAT-OUTPUTLEN = '5'.
X_FLDCAT-REPTEXT = 'S.Loc'.
X_FLDCAT-TOOLTIP = 'S.Loc'.
APPEND X_FLDCAT TO IT_FLDCAT.
X_FLDCAT-COL_POS = 5.
X_FLDCAT-FIELDNAME = 'LABST'.
X_FLDCAT-OUTPUTLEN = '20'.
X_FLDCAT-REPTEXT = 'Quantity'.
X_FLDCAT-TOOLTIP = 'Quantity'.
X_FLDCAT-DO_SUM = 'X'.
APPEND X_FLDCAT TO IT_FLDCAT.
ENDFORM. " GENERATE_FLDCAT
&----
*& Form GENERATE_LAYOUT
&----
text
----
FORM GENERATE_LAYOUT .
I_LAYOUT-ZEBRA = 'X'.
I_LAYOUT-FRONTEND = 'X'.
I_LAYOUT-GRID_TITLE = 'ALV GRID USING OOPS'.
I_LAYOUT-NUMC_TOTAL = 'X'.
ENDFORM. " GENERATE_LAYOUT
&----
*& Form DO_SORT
&----
text
----
FORM DO_SORT .
X_SORT-FIELDNAME = 'MATNR'.
X_SORT-UP = 'X'.
X_SORT-SUBTOT = 'X'.
IF P_CHK = 'X'.
X_SORT-EXPA = SPACE.
ELSE.
X_SORT-EXPA = 'X'.
ENDIF.
APPEND X_SORT TO I_SORT.
ENDFORM. " DO_SORT
inorder to execute this code perfectly, do the following things.
1. Create a Graphical Screen 100.
2. Place a Custom Control on that screen and give name as MAT_CONTAINER.
3. activate the screen.
and execute the program.
Reward If Helpful
Regards
--
Sasidhar Reddy Matli.
2007 Aug 14 8:36 AM
<b>Process to create ALV with OOPs:</b>
Step 1:
Create a container. There are 2 type of containers: docking and custom.
Go to SE38.Create a program. Use Pattern button to create object for docking container. Click ABAP Object Pattern radio button. Click Create object radio button. Give Instance as o_docking and class as cl_gui_docking_contianer.
Step 2:
Create a grid inside the container.
Use Pattern button to create the same. Make the parent of grid as container.
Click ABAP Object Pattern radio button. Click Create object radio button. Give Instance as o_grid and class as cl_gui_alv_grid. Create object o_grid.
Step 3:
Call the function lvc_fieldcatalog_merge to get the field catalog.
Pass the structure name.
Step 4:
Call the method of grid set_table_for_first_display to display the output.
Click ABAP Object Pattern radio button. Click Call Method radio button. Give Instance as o_grid and Class/Interface as cl_gui_alv_grid and Method as set_table_for_first_display.
w_variant-report = sy-repid.
Call method o_grid->set_table_for_first_display
Step 5:
Fill the internal table itab with values by using logic.
select * from mara into table itab up to 100 rows.
call screen 9000.
Create a screen by double clicking 9000 in the above line. Fill the description for the screen. In the flow logic, uncomment the PBO and PAI module and create those in main program (for simplicity).
Step 6:
Create GUI status. Create GUI Title if required. That can be done by using display object List (CtrlShiftF5).Then in left side, right click the program and create GUI Status and Title.
Step 7:
Free the memory occupied once the BACK, EXIT or CANCEL button is clicked. Use Pattern button to call the method FREE of cl_gui_alv_grid and cl_gui_docking_container.
Click ABAP Object Pattern radio button. Click Call Method radio button. Give Instance as o_grid and Class/Interface as cl_gui_alv_grid and Method as Free.
Similarly Click Call Method radio button. Give Instance as o_docking and Class/Interface as cl_gui_docking_container and Method as Free.
Regards
Mustafizur
2007 Aug 14 8:38 AM
Hi Hitesh
use this program and debug
REPORT ZK_ORDER .
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
*
*********
INCLUDE <ICON>.
TABLES: EQUI.
DATA: OK_CODE LIKE SY-UCOMM,
GT_SPFLI TYPE TABLE OF SPFLI,
GT_SFLIGHT TYPE TABLE OF SFLIGHT,
G_REPID LIKE SY-REPID,
GS_LAYOUT TYPE LVC_S_LAYO,
GS_LAYOUT1 TYPE LVC_S_LAYO,
CONT_ON_100 TYPE SCRFNAME VALUE 'REFERENCE',
CONT_ON_200 TYPE SCRFNAME VALUE 'ORDER',
GRID1 TYPE REF TO CL_GUI_ALV_GRID,
GRID2 TYPE REF TO CL_GUI_ALV_GRID,
CUSTOM_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
CUSTOM_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER,
IT_SORT TYPE LVC_T_SORT,
IT_SORT1 TYPE LVC_T_SORT.
DATA: IT_REF_CAT TYPE LVC_T_FCAT WITH HEADER LINE.
DATA: IT_REF_CAT1 TYPE LVC_T_FCAT WITH HEADER LINE.
DATA: WA_FLDCAT LIKE LINE OF IT_REF_CAT.
DATA: WA_FLDCAT1 LIKE LINE OF IT_REF_CAT.
DATA: WA_SORT LIKE LINE OF IT_SORT.
DATA: WA_SORT1 LIKE LINE OF IT_SORT.
DATA: BEGIN OF IT_EQUNR OCCURS 0,
EQUNR LIKE EQUI-EQUNR,
END OF IT_EQUNR.
DATA: IT_REF_EQUNR TYPE TABLE OF ZEQUI_REF.
DATA: IT_ORDERS TYPE TABLE OF ZEQUI_ORDER.
DATA: IT_ORDERS1 TYPE TABLE OF ZEQUI_ORDER1.
DATA: REF_EQUNR LIKE LINE OF IT_REF_EQUNR.
DATA: ORDER LIKE LINE OF IT_ORDERS.
DATA: ORDER1 LIKE LINE OF IT_ORDERS1.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_EQUNR FOR EQUI-EQUNR.
SELECTION-SCREEN END OF BLOCK B1.
SET SCREEN 100.
----
CLASS lcl_event_receiver DEFINITION
----
*
----
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
PRIVATE SECTION.
ENDCLASS. "lcl_event_receiver DEFINITION
----
CLASS lcl_event_receiver IMPLEMENTATION
----
*
----
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_DOUBLE_CLICK.
IF E_COLUMN-FIELDNAME = 'AUFNR'.
READ TABLE IT_ORDERS1 INTO ORDER1 INDEX E_ROW-INDEX.
IF ORDER1-AUFNR NE ''.
SET PARAMETER ID 'ANR' FIELD ORDER1-AUFNR.
CALL TRANSACTION 'IW33' AND SKIP FIRST SCREEN.
ENDIF.
ELSEIF E_COLUMN-FIELDNAME = 'EQUNR1'.
READ TABLE IT_ORDERS1 INTO ORDER1 INDEX E_ROW-INDEX.
IF ORDER1-EQUNR1 NE ''.
SET PARAMETER ID 'EQN' FIELD ORDER1-EQUNR1.
CALL TRANSACTION 'IE03' AND SKIP FIRST SCREEN.
ENDIF.
ELSEIF E_COLUMN-FIELDNAME = 'EQUNR'.
READ TABLE IT_REF_EQUNR INTO REF_EQUNR INDEX E_ROW-INDEX.
IF REF_EQUNR-EQUNR NE ''.
SET PARAMETER ID 'EQN' FIELD REF_EQUNR-EQUNR.
CALL TRANSACTION 'IE03' AND SKIP FIRST SCREEN.
ENDIF.
ELSEIF E_COLUMN-FIELDNAME = 'REFERENCE'.
READ TABLE IT_REF_EQUNR INTO REF_EQUNR INDEX E_ROW-INDEX.
IF REF_EQUNR-REFERENCE NE ''.
SET PARAMETER ID 'EQN' FIELD REF_EQUNR-REFERENCE.
CALL TRANSACTION 'IE03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
*READ TABLE IT_REF_EQUNR INDEX E_ROW-INDEX INTO
ENDMETHOD. "handle_double_click
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
G_REPID = SY-REPID.
*select all equipmetns with references.
SELECT EQUNR FROM EQUI INTO TABLE IT_EQUNR WHERE EQUNR IN S_EQUNR.
SORT IT_EQUNR BY EQUNR.
IF IT_EQUNR[] IS NOT INITIAL.
SELECT REFERENCE EQUNR FROM EQUI INTO TABLE IT_REF_EQUNR
FOR ALL ENTRIES IN IT_EQUNR
WHERE EQUNR EQ IT_EQUNR-EQUNR
AND REFERENCE NE ''.
ENDIF.
SELECTING THE ORDERS FOR ref equipment number
SORT IT_REF_EQUNR BY REFERENCE EQUNR.
IF IT_REF_EQUNR[] IS NOT INITIAL.
SELECT EQUNR AUFNR FROM VIAUF_AFVC INTO TABLE IT_ORDERS
FOR ALL ENTRIES IN IT_REF_EQUNR
WHERE EQUNR EQ IT_REF_EQUNR-REFERENCE.
ENDIF.
LOOP AT IT_ORDERS INTO ORDER.
ORDER1-EQUNR1 = ORDER-EQUNR.
ORDER1-AUFNR = ORDER-AUFNR.
APPEND ORDER1 TO IT_ORDERS1.
*CLEAR IT_ORDERS1.
CLEAR ORDER.
ENDLOOP.
sorting
WA_SORT-FIELDNAME = 'REFERENCE'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.
WA_SORT1-FIELDNAME = 'EQUNR1'.
WA_SORT1-UP = 'X'.
APPEND WA_SORT1 TO IT_SORT1.
CLEAR WA_SORT1.
field catalog s
WA_FLDCAT-FIELDNAME = 'REFERENCE'.
WA_FLDCAT-REPTEXT = 'Ref Euip Num'.
APPEND WA_FLDCAT TO IT_REF_CAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-FIELDNAME = 'EQUNR'.
WA_FLDCAT-REPTEXT = 'Euip Num'.
APPEND WA_FLDCAT TO IT_REF_CAT.
CLEAR WA_FLDCAT.
WA_FLDCAT1-FIELDNAME = 'EQUNR1'.
WA_FLDCAT1-REPTEXT = 'Ref Euip Num'.
APPEND WA_FLDCAT1 TO IT_REF_CAT1.
CLEAR WA_FLDCAT1.
WA_FLDCAT1-FIELDNAME = 'AUFNR'.
WA_FLDCAT1-REPTEXT = 'Order Num For Ref Equi Num'.
APPEND WA_FLDCAT1 TO IT_REF_CAT1.
CLEAR WA_FLDCAT1.
IF CUSTOM_CONTAINER1 IS INITIAL.
CREATE OBJECT CUSTOM_CONTAINER1
EXPORTING
CONTAINER_NAME = CONT_ON_100.
create an instance of alv control
CREATE OBJECT GRID1
EXPORTING I_PARENT = CUSTOM_CONTAINER1.
GS_LAYOUT1-GRID_TITLE = TEXT-100.
CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'ZEQUI_REF'
IS_LAYOUT = GS_LAYOUT1
CHANGING
IT_OUTTAB = IT_REF_EQUNR
IT_FIELDCATALOG = IT_REF_CAT[]
IT_SORT = IT_SORT.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GRID1.
ENDIF.
create a custom container control for our ALV Control
CREATE OBJECT CUSTOM_CONTAINER2
EXPORTING
CONTAINER_NAME = CONT_ON_200.
create an instance of alv control
CREATE OBJECT GRID2
EXPORTING I_PARENT = CUSTOM_CONTAINER2.
GS_LAYOUT-GRID_TITLE = TEXT-200.
*
Set a titlebar for the grid control
*
CALL METHOD GRID2->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'ZEQUI_ORDER1'
IS_LAYOUT = GS_LAYOUT
CHANGING
IT_OUTTAB = IT_ORDERS1
IT_FIELDCATALOG = IT_REF_CAT1[]
IT_SORT = IT_SORT1.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK FOR GRID2.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
*set screen 0.
*leave program.
*call selection-screen 1000.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
AT SELECTION-SCREEN.
IF S_EQUNR[] IS INITIAL.
MESSAGE E000(Z01) WITH 'enter equipment number'.
ENDIF.
reward points to all helpful answers
kiran.M
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |