2007 Jul 24 11:18 AM
Hi ,
can any one help me out in using the custom container in ALV
I need to out put the report using the custom container
can any one help me out with sample code (simple).........
ThankX in advance..
siva
2007 Jul 24 11:29 AM
Hi
See this
&----
*& Report ZCL_ALV_REPT
*&
&----
REPORT ZCL_ALV_REPT.
tables kna1.
data : anji type ref to ZCL_TEST_BS,
l_kunnr type standard table of wselkunnr.
select-options : s_kunnr for kna1-kunnr.
Start-of-selection.
set screen 100.
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
module STATUS_0100 output.
set pf-status 'OOPS'.
if anji is initial.
create object anji
exporting
p_cont ='SALES_DATA'.
endif.
l_kunnr[] = s_kunnr[].
call method anji->get_data
exporting
s_cust = l_kunnr.
endmodule. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
module USER_COMMAND_0100 input.
case sy-ucomm.
when 'BACK' or 'EXIT' or 'CANCEL'.
leave program.
endcase.
endmodule. " USER_COMMAND_0100 INPUT
&----
CLASS ZCL_TEST_BS.
Attributes:
O_CONT Instance Private Type Ref To CL_GUI_CUSTOM_CONTAINER
O_GRID Instance Private Type Ref To CL_GUI_ALV_GRID
IT_SO Instance Private Type ZSALES
Methods:
CONSTRUCTOR Instance Public
Parameters:
P_CONT Type CHAR32 Default 'SALES_DATA'
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.
GET_DATA Instance Public
Parameters:
S_CUST Importing Type ZKUNNR(table Type)..(Line Type ..WSELKUNNR)
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 display_output.
endif.
endmethod.
DISPLAY_OUTPUT Instance Private
METHOD display_output.
DATA : it_fldcat TYPE lvc_t_fcat.
DATA : 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_structure_name = 'ZSALES1'
CHANGING
ct_fieldcat = it_fldcat[]
.
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.'.
WHEN 'VKORG'.
wa_fldcat-reptext = 'SOrgn'.
wa_fldcat-ref_table = 'X'.
WHEN 'NETWR'.
wa_fldcat-reptext = 'NetValue'.
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
CHANGING
it_outtab = it_so[]
it_fieldcatalog = it_fldcat[]
it_sort = it_sort
.
ENDMETHOD.
<b>Reward points for useful Answers</b>
Regards
Anji
Hi ,
can any one help me out in using the custom container in ALV
I need to out put the report using the custom container
can any one help me out with sample code (simple).........
ThankX in advance..
siva
2007 Jul 24 11:29 AM
Hi
See this
&----
*& Report ZCL_ALV_REPT
*&
&----
REPORT ZCL_ALV_REPT.
tables kna1.
data : anji type ref to ZCL_TEST_BS,
l_kunnr type standard table of wselkunnr.
select-options : s_kunnr for kna1-kunnr.
Start-of-selection.
set screen 100.
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
module STATUS_0100 output.
set pf-status 'OOPS'.
if anji is initial.
create object anji
exporting
p_cont ='SALES_DATA'.
endif.
l_kunnr[] = s_kunnr[].
call method anji->get_data
exporting
s_cust = l_kunnr.
endmodule. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
module USER_COMMAND_0100 input.
case sy-ucomm.
when 'BACK' or 'EXIT' or 'CANCEL'.
leave program.
endcase.
endmodule. " USER_COMMAND_0100 INPUT
&----
CLASS ZCL_TEST_BS.
Attributes:
O_CONT Instance Private Type Ref To CL_GUI_CUSTOM_CONTAINER
O_GRID Instance Private Type Ref To CL_GUI_ALV_GRID
IT_SO Instance Private Type ZSALES
Methods:
CONSTRUCTOR Instance Public
Parameters:
P_CONT Type CHAR32 Default 'SALES_DATA'
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.
GET_DATA Instance Public
Parameters:
S_CUST Importing Type ZKUNNR(table Type)..(Line Type ..WSELKUNNR)
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 display_output.
endif.
endmethod.
DISPLAY_OUTPUT Instance Private
METHOD display_output.
DATA : it_fldcat TYPE lvc_t_fcat.
DATA : 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_structure_name = 'ZSALES1'
CHANGING
ct_fieldcat = it_fldcat[]
.
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.'.
WHEN 'VKORG'.
wa_fldcat-reptext = 'SOrgn'.
wa_fldcat-ref_table = 'X'.
WHEN 'NETWR'.
wa_fldcat-reptext = 'NetValue'.
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
CHANGING
it_outtab = it_so[]
it_fieldcatalog = it_fldcat[]
it_sort = it_sort
.
ENDMETHOD.
<b>Reward points for useful Answers</b>
Regards
Anji
2007 Jul 24 11:33 AM
Hi,
SAP Custom Container
The SAP Custom Container allows you to display controls( ALV GRID,
ALV TREE control, displaying LOGO) in an area defined on a normal screen using the Screen Painter.
Class: CL_GUI_CUSTOM_CONTAINER
Use
Use the SAP Custom Container to build a control into an area on a screen or subscreen. You define the area occupied by the control in the Screen Painter.
The default size of the control that you place in the Custom Container is the same as that of the container itself.
for defining the custom container you must maintain refarence variable to CL_GUI_CUSTOM_CONTAINER in declaration part and create object to CL_GUI_CUSTOM_CONTAINER in PAI or PBO event's of SCREEN.
1) ****maintaining refarence variable to CL_GUI_CUSTOM_CONTAINER
DATA: container TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
here we can instantation and screen integration.
here we can specifies the output location, where we can display GRID CONTROL or LOG based on our requirement.
2) in SCREEN we can define the contianer.
1) goto SE51.
2) provide screen number and description
3) select LAYOUT option
4) select one control.( seelct 2nd screen element from bottom)
5) maintain ATTRIBUTES ( provide name, it must same as
CONTAINER_NAME = 'container1')
6)save and activate.
3) ******in flow logic PBO/PAI of screen you we can creating object to CL_GUI_CUSTOM_CONTAINER
IF container IS INITIAL.
CREATE OBJECT container CONTAINER_NAME = 'container1'.
you must pass the same name( screen atribute name ) to container_name parameter while creating object to CL_GUI_CUSTOM_CONTAINER.
for more information on custom container follow this link.
http://help.sap.com/saphelp_nw04/helpdata/en/c2/27e14e59ed11d29bd90000e8a47b2e/content.htm
for sample program follow this link
kindly go through this link. Hope it will helps to u.
http://help.sap.com/saphelp_nw04/helpdata/en/64/9e7759068011d294f000a0c94260a5/content.htm
http://www.sapdevelopment.co.uk/reporting/alv/alvtree%5Calvtree_basic.htm
http://help.sap.com/saphelp_nw2004s/helpdata/en/2a/755b94ca5911d299af5c9604c10e27/content.htm
<b>Reward points if useful</b>
Regards
Ashu
2007 Jul 24 11:35 AM
hi,
Check the sample code
TABLES : vbak,vbap.
***structure declaration
TYPES : BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
ernam TYPE vbak-ernam,
audat TYPE vbak-audat,
auart TYPE vbak-auart,
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
matkl TYPE vbap-matkl,
lfrel TYPE vbap-lfrel,
END OF ty_vbap.
DATA : it_vbak TYPE TABLE OF ty_vbak,
wa_vbak TYPE ty_vbak,
it_vbap TYPE TABLE OF ty_vbap,
wa_vbap TYPE ty_vbap.
***REFERENCE VARIABLE
DATA: v_cus1 TYPE REF TO cl_gui_custom_container,
v_grid1 TYPE REF TO cl_gui_alv_grid,
v_cus2 TYPE REF TO cl_gui_custom_container,
v_grid2 TYPE REF TO cl_gui_alv_grid.
***field catalog declaration
DATA : it_fcat_vbak TYPE lvc_t_fcat,
wa_fcat_vbak TYPE lvc_s_fcat,
it_fcat_vbap TYPE lvc_t_fcat,
wa_fcat_vbap TYPE lvc_s_fcat,
is_layout TYPE lvc_s_layo.
is_layout-zebra = 'X'.
***select option
SELECT-OPTIONS : so_vbeln FOR vbak-vbeln.
***validating the select option
SELECT SINGLE vbeln
FROM vbak
INTO vbak-vbeln
WHERE vbeln IN so_vbeln.
***field catalog for vbak
wa_fcat_vbak-col_pos = '1'.
wa_fcat_vbak-fieldname = 'VBELN'.
wa_fcat_vbak-scrtext_m = 'SALES DOC'.
wa_fcat_vbak-emphasize = 'X'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '2'.
wa_fcat_vbak-fieldname = 'ERDAT'.
wa_fcat_vbak-scrtext_m = 'CREATED DATE'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '3'.
wa_fcat_vbak-fieldname = 'ERNAM'.
wa_fcat_vbak-scrtext_m = 'PERSON NAME'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '4'.
wa_fcat_vbak-fieldname = 'AUDAT'.
wa_fcat_vbak-scrtext_m = 'DOCUMENT DATE'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '5'.
wa_fcat_vbak-fieldname = 'AUART'.
wa_fcat_vbak-scrtext_m = 'SALES DOC TYPE'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
***field catalog for vbak
wa_fcat_vbap-col_pos = '1'.
wa_fcat_vbap-fieldname = 'VBELN'.
wa_fcat_vbap-scrtext_m = 'SALES DOC '.
APPEND wa_fcat_vbap TO it_fcat_vbap.
CLEAR wa_fcat_vbap.
wa_fcat_vbap-col_pos = '2'.
wa_fcat_vbap-fieldname = 'POSNR'.
wa_fcat_vbap-scrtext_m = 'SALES ITEM'.
APPEND wa_fcat_vbap TO it_fcat_vbap.
CLEAR wa_fcat_vbap.
wa_fcat_vbap-col_pos = '3'.
wa_fcat_vbap-fieldname = 'MATNR'.
wa_fcat_vbap-scrtext_m = 'MATERIAL NO.'.
APPEND wa_fcat_vbap TO it_fcat_vbap.
CLEAR wa_fcat_vbap.
***start of selection
START-OF-SELECTION.
SELECT vbeln erdat ernam audat auart
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN so_vbeln.
----
CLASS cl_envent DEFINITION
----
*
----
CLASS cl_event DEFINITION.
PUBLIC SECTION.
METHODS click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row
e_column.
ENDCLASS. "cl_envent DEFINITION
----
CLASS cl_event IMPLEMENTATION
----
*
----
CLASS cl_event IMPLEMENTATION.
METHOD click.
READ TABLE it_vbak INDEX e_row-index INTO wa_vbak.
PERFORM select_data_vbap USING wa_vbak
CHANGING it_vbap.
CALL SCREEN '0200'.
ENDMETHOD. "click
ENDCLASS. "cl_event IMPLEMENTATION
**start of selection
START-OF-SELECTION.
SELECT vbeln erdat ernam audat auart
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN so_vbeln.
CALL SCREEN '0100'.
***declaring reference variable
DATA obj_cl_event TYPE REF TO cl_event.
***creating object for class cl_event
CREATE OBJECT obj_cl_event.
*
SET HANDLER obj_cl_event->click FOR v_grid1.
&----
*& Form select_data_vbap
&----
text
----
-->P_WA_VBAK text
-->P_IT_VBAK text
----
FORM select_data_vbap USING p_wa_vbak LIKE LINE OF it_vbak
CHANGING p_it_vbak LIKE it_vbap[].
SELECT vbeln posnr matnr matkl lfrel
FROM vbap
INTO TABLE it_vbap
WHERE vbeln = p_wa_vbak-vbeln.
ENDFORM. "select_data_vbap
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE status_0100 OUTPUT.
SET PF-STATUS 'INT0100'.
SET TITLEBAR 'xxx'.
SELECT vbeln erdat ernam audat auart
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN so_vbeln.
CREATE OBJECT v_cus1
EXPORTING
PARENT =
container_name = 'CUSTOM1'
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 v_grid1
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
i_parent = v_cus1
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.
CALL METHOD v_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_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_fcat_vbak
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 obj_cl_event.
SET HANDLER obj_cl_event->click FOR v_grid1.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module STATUS_0200 OUTPUT
&----
text
----
MODULE status_0200 OUTPUT.
SET PF-STATUS 'INT0200'.
SET TITLEBAR 'xxx'.
CREATE OBJECT v_cus2
EXPORTING
PARENT =
container_name = 'CUSTOM2'
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 v_grid2
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
i_parent = v_cus2
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.
CALL METHOD v_grid2->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_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_fcat_vbap
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.
ENDMODULE. " STATUS_0200 OUTPUT
&----
*& 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
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE user_command_0200 INPUT.
CASE sy-ucomm.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'PREV'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
2007 Jul 24 11:53 AM
Hi,
1. Please chk the sample program
'BCALV_GRID_DEMO'.
2. The method
cl_gui_custom_container
is used to create a refrence variable for the Container.
eg: data : grid type REF TO cl_gui_alv_grid,
g_custome_container TYPE REF TO cl_gui_custom_container,
gt_flight TYPE TABLE OF sflight.
3. In the PBO you must instantiate the container and the ALV GRID Control.
Regards,
Padmam.
2007 Jul 24 12:00 PM
HI,
see the system defined programs.
BCALV_EDIT_*(for grid on container)
saptlist_*(for tree on container)
rgds,
bharat.
2007 Jul 26 10:39 AM
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |