2007 Oct 05 5:29 AM
Hi experts
plz help
i have createed an alv using slis method
in the output there must come a header
in this header i ill have to show som details
like on the left side of the header i want to show the details of the user and on the right side i want to show he data of vendor .
i am able to get the data in the left side but i am not able to show the data of vendor on the right side
the data of vendor is by default coming on left side only just below the details of user but i want to show those details on the right side of the header .
plz tell me how to do it .
thanx in advance.
2007 Oct 05 6:34 AM
hI
<b>Alignment of Data in TOP-OF-PAGE in ALV GRID</b>
Many of us faced difficulty in aligning the data in TOP-OF-PAGE in ALV GRID using function modules, We are not able to right align the data or which ever position we want.
Many unsolved threads on this topic!!!!!!!!!!.
Here is a sample code which aligns the data according to the position specified.
REPORT alv_top_of_page.
TABLES : t001.
TYPE-POOLS: slis.
DATA : w_repid LIKE sy-repid.
TYPES : BEGIN OF ty_comp.
INCLUDE STRUCTURE t001.
TYPES : END OF ty_comp.
DATA: wa_layout TYPE slis_layout_alv.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
DATA : it_comp TYPE TABLE OF ty_comp.
INITIALIZATION.
w_repid = sy-repid.
START-OF-SELECTION.
SELECT * FROM t001 INTO TABLE it_comp.
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = w_repid
i_internal_tabname = 'IT_COMP'
i_inclname = w_repid
CHANGING
ct_fieldcat = it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
is_layout = wa_layout
it_fieldcat = it_fieldcat
TABLES
t_outtab = it_comp
EXCEPTIONS
program_error = 1
OTHERS = 2.
&----
*& Form html_top_of_page
&----
FORM html_top_of_page USING document TYPE REF TO cl_dd_document.
DATA: text TYPE sdydo_text_element.
CALL METHOD document->add_gap
EXPORTING
width = 100.
text = 'Company Code Data'.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'HEADING'.
CALL METHOD document->new_line.
CALL METHOD document->new_line.
CALL METHOD document->new_line.
text = 'User Name : '.
CALL METHOD document->add_text
EXPORTING
text = text
sap_emphasis = 'Strong'.
CALL METHOD document->add_gap
EXPORTING
width = 6.
text = sy-uname.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'Key'.
CALL METHOD document->add_gap
EXPORTING
width = 50.
text = 'Date : '.
CALL METHOD document->add_text
EXPORTING
text = text
sap_emphasis = 'Strong'.
CALL METHOD document->add_gap
EXPORTING
width = 6.
text = sy-datum.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'Key'.
CALL METHOD document->add_gap
EXPORTING
width = 50.
text = 'Time : '.
CALL METHOD document->add_text
EXPORTING
text = text
sap_emphasis = 'Strong'.
CALL METHOD document->add_gap
EXPORTING
width = 6.
text = sy-uzeit.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'Key'.
CALL METHOD document->new_line.
CALL METHOD document->new_line.
ENDFORM. "HTML_TOP_OF_PAGE
<b>REWARD IF USEFULL</b>
Hi experts
plz help
i have createed an alv using slis method
in the output there must come a header
in this header i ill have to show som details
like on the left side of the header i want to show the details of the user and on the right side i want to show he data of vendor .
i am able to get the data in the left side but i am not able to show the data of vendor on the right side
the data of vendor is by default coming on left side only just below the details of user but i want to show those details on the right side of the header .
plz tell me how to do it .
thanx in advance.
2007 Oct 05 5:33 AM
HI,
it is not possible to print in the right portion of the header if u are using normal ALV.
if u use OOalv only it is possible.
rgds,
bharat.
2007 Oct 05 5:39 AM
i dnt no how to use that header in oo alv
cud u plz guide me how to print that matter in right through oo alv method
2007 Oct 05 5:44 AM
Hi Anit,
I am assuming you have basic idea about how to handle TOP-OF-PAGE event in OO ALV.
In the top-of-page event write the code in the below way.
FORM event_top_of_page
USING z_dyndoc_id TYPE REF TO cl_dd_document.
*
DATA : lz_text(255) TYPE c.
*
System ID
CLEAR : lz_text.
CONCATENATE text-015
sy-sysid
INTO lz_text
SEPARATED BY space.
PERFORM add_text
USING lz_text.
CALL METHOD z_dyndoc_id->add_gap
EXPORTING
WIDTH = 100.
*
Title
CLEAR : lz_text.
CONCATENATE text-016
sy-title
INTO lz_text
SEPARATED BY space.
PERFORM add_text
USING lz_text.
CALL METHOD z_dyndoc_id->new_line.
Here add_gap parameter will create GAP between your left and right header data.
If you still face problem.I will send you the whole code.
<b>REWARD POINTS</b> if helpful.
Mukesh Kumar
2007 Oct 05 5:58 AM
HI MUKESH
Thanx 4 the rply plz send me the whole code
thanx once again.
2007 Oct 05 6:11 AM
Hi Anit,
I am attaching here the whole Code. It is somewhat big code so go through it thoroughly.If you still face problem reply this thread otherwise <b>REWARD POINT</b>.
REPORT test
MESSAGE-ID zzrefn01
NO STANDARD PAGE HEADING
*** Portrait: 93x80
LINE-SIZE 150
LINE-COUNT 80.
*** Landscape: 132x65
LINE-SIZE 132
LINE-COUNT 65.
************************************************************************
************************************************************************
INCLUDES **
************************************************************************
************************************************************************
INCLUDE zbc_i00. "Customer Standard Include
INCLUDE <icon>. "For Button on the ALV Tool Bar
INCLUDE yyef_check_isp_top.
INCLUDE yyef_check_isp_f01.
INCLUDE yyef_check_isp_o01.
INCLUDE yyef_check_isp_i01.
----
CLASS zcl_event_handler IMPLEMENTATION
----
*
----
CLASS zcl_event_handler IMPLEMENTATION.
Top-of-page event
METHOD top_of_page.
PERFORM event_top_of_page
USING z_dyndoc_id.
ENDMETHOD. "METHOD top_of_page
Change Status Button
METHOD handle_toolbar.
IF NOT pa_prodr IS INITIAL.
DATA: lz_toolbar TYPE stb_button.
CLEAR lz_toolbar.
MOVE 'CHANGE_STATUS' TO lz_toolbar-function.
MOVE text-001 TO lz_toolbar-text.
APPEND lz_toolbar TO e_object->mt_toolbar.
ENDIF. "IF NOT pa_prodr IS INITIAL
ENDMETHOD. "METHOD handle_toolbar
Handle User Command
METHOD handle_user_command.
CASE e_ucomm.
WHEN 'CHANGE_STATUS'.
LOOP AT it_output
INTO wa_output.
IF wa_output-chk_box EQ kc_x.
z_flag = 1.
EXIT.
ENDIF. "IF wa_output-chk_box EQ kc_x
ENDLOOP. "LOOP AT it_output INTO wa_output
IF z_flag EQ 1.
PERFORM display_selected_data.
ELSE.
MESSAGE i001(zzrefn01)
WITH text-023.
ENDIF. "IF z_flag EQ 1
ENDCASE. "CASE e_ucomm
ENDMETHOD. "METHOD handle_user_command
ENDCLASS. "zcl_event_handler IMPLEMENTATION
************************************************************************
************************************************************************
Processing of selection screen **
************************************************************************
************************************************************************
----
First time initialization *
*
Get Default variant *
----
INITIALIZATION.
z_repid = sy-repid.
PERFORM variant_init.
zx_variant = z_variant.
CALL FUNCTION 'LVC_VARIANT_DEFAULT_GET'
EXPORTING
i_save = kc_u
CHANGING
cs_variant = zx_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc EQ 0.
pa_vari = zx_variant-variant.
ELSE.
MESSAGE i001(zzrefn01)
WITH text-021.
ENDIF. "IF sy-subrc EQ 0
*** First time initialization in online mode except calls with variant
*** (is not processed on return from prog to selection screen)
pa_xyz = ....
so_xyz.....
SET PF-STATUS 'STAT1000'.
*** An example for select options restrictions is available
*** in TT1/YYKA_EXPORT_START_HOST (remove comment)
----
Selection screen PBO *
*
Comment........ *
............... *
----
AT SELECTION-SCREEN OUTPUT.
*** Init selection screen, also on variants
*** (only for online reports)
IF NOT zn_init_seldynp IS INITIAL
AND sy-batch IS INITIAL "Not on batch calls (e.g. AutoSys)
AND sy-slset IS INITIAL. "Not on calls with variant
IF NOT pa_prodr IS INITIAL.
CLEAR: pa_prodr.
MESSAGE w999(zbcc). "Flag prod.run reseted
ENDIF.
CLEAR: pa_start.
ENDIF.
CLEAR: zn_init_seldynp.
*** Process dynpro fields
LOOP AT SCREEN.
*** --> Read-Only fields
IF screen-group1 EQ 'RDO'
AND screen-input NE '0'
AND screen-group3 NE 'VPU'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
----
Selection screen PAI *
*
Comment........ *
............... *
----
*AT SELECTION-SCREEN ON so_xyz.
AT SELECTION-SCREEN.
PERFORM pai_of_selection_screen.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_vari.
PERFORM f4_for_variant.
PERFORM btci_at_sel_screen. "Call BTCI checks (optional)
************************************************************************
************************************************************************
Program **
************************************************************************
************************************************************************
----
Main routine *
*
.............. *
.............. *
----
START-OF-SELECTION.
PERFORM fetch_data.
PERFORM build_data.
PERFORM prepare_field_catalog
CHANGING it_fieldcat.
CALL SCREEN 100.
----
End routine *
*
.............. *
.............. *
----
END-OF-SELECTION.
************************************************************************
************************************************************************
Interactive Reporting **
************************************************************************
************************************************************************
----
Comment........ *
............... *
----
AT LINE-SELECTION.
*** Good example in TT1/YIIHART (remove comment)
----
Comment........ *
............... *
----
AT USER-COMMAND.
PERFORM handle_user_command.
----
Comment........ *
............... *
----
AT PFN.
iNCLUDE YYEF_CHECK_ISP_F01
&----
*& Include YYEF_CHECK_ISP_F01 *
&----
&----
*& Form pai_of_selection_screen
&----
Check Variant Exist or not
----
FORM pai_of_selection_screen .
IF NOT pa_vari IS INITIAL.
MOVE z_variant TO zx_variant.
MOVE pa_vari TO zx_variant-variant.
CALL FUNCTION 'LVC_VARIANT_EXISTENCE_CHECK'
EXPORTING
i_save = kc_u
CHANGING
cs_variant = zx_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc EQ 2.
MESSAGE i001(zzrefn01)
WITH text-024.
ENDIF. "IF sy-subrc EQ 2
z_variant = zx_variant.
ELSE.
PERFORM variant_init.
ENDIF. "IF NOT pa_vari IS INITIAL
ENDFORM. "pai_of_selection_screen
&----
*& Form variant_init
&----
Initialization of Variant
----
FORM variant_init .
CLEAR z_variant.
z_variant-report = z_repid.
ENDFORM. " variant_init
&----
*& Form f4_for_variant
&----
F4 Help for Layout
----
FORM f4_for_variant .
CALL FUNCTION 'LVC_VARIANT_F4'
EXPORTING
is_variant = z_variant
i_save = kc_u
IMPORTING
e_exit = z_exit
es_variant = zx_variant
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc EQ 1.
MESSAGE i001(zzrefn01)
WITH text-022.
ELSE.
IF z_exit = space.
pa_vari = zx_variant-variant.
ENDIF. "IF z_exit = space
ENDIF. "IF sy-subrc EQ 1
ENDFORM. "f4_for_variant
&----
*& Form fetch_data
&----
Fetch data from DB tables.
----
FORM fetch_data .
SELECT *
FROM yyeft1200
INTO TABLE it_yyeft1200
WHERE id_rech IN so_idrec
AND fnumkred IN so_fnumk
AND status IN so_stat
AND erdat IN so_erdat
ORDER BY PRIMARY KEY.
IF sy-subrc EQ 0.
SELECT *
FROM yyeft1201
INTO TABLE it_yyeft1201
FOR ALL ENTRIES IN it_yyeft1200
WHERE id_rech EQ it_yyeft1200-id_rech
AND artnr_bp IN so_artnr
ORDER BY PRIMARY KEY.
IF sy-subrc EQ 0.
SELECT *
FROM yyeft1008
INTO TABLE it_yyeft1008
FOR ALL ENTRIES IN it_yyeft1201
WHERE bp_refnr EQ it_yyeft1201-bprefnr.
IF sy-subrc EQ 0.
SORT it_yyeft1008[] BY bp_refnr.
ENDIF. "IF sy-subrc EQ 0.
ENDIF. "IF sy-subrc EQ 0.
ELSE.
zn_cancel = kc_x.
ENDIF. "IF sy-subrc EQ 0.
ENDFORM. " fetch_data
&----
*& Form build_data
&----
Gather the data from all the internal tables into one.
----
FORM build_data .
LOOP AT it_yyeft1200
INTO wa_yyeft1200.
CLEAR wa_output.
*
wa_output-id_rech = wa_yyeft1200-id_rech.
wa_output-fnumkred = wa_yyeft1200-fnumkred.
wa_output-status = wa_yyeft1200-status.
wa_output-erdat = wa_yyeft1200-erdat.
wa_output-bukrs = wa_yyeft1200-bukrs.
wa_output-belnr = wa_yyeft1200-belnr.
wa_output-gjahr = wa_yyeft1200-gjahr.
*
IF wa_yyeft1200-status GE kc_status10
AND wa_yyeft1200-belnr IS INITIAL.
wa_output-com_delfnd = 'FI Doc NOT found'(t03).
ENDIF.
*
IF wa_yyeft1200-status LT kc_status10
AND NOT wa_yyeft1200-belnr IS INITIAL
AND wa_output-com_delfnd IS INITIAL
AND NOT pa_det IS INITIAL.
wa_output-com_delfnd = 'FI Doc should be empty'(t01).
ENDIF.
*
LOOP AT it_yyeft1201
INTO wa_yyeft1201
WHERE id_rech EQ wa_yyeft1200-id_rech.
*
wa_output-bprefnr = wa_yyeft1201-bprefnr.
wa_output-lfdat = wa_yyeft1201-lfdat.
wa_output-artnr_bp = wa_yyeft1201-artnr_bp.
*
READ TABLE it_yyeft1008
WITH KEY bp_refnr = wa_yyeft1201-bprefnr
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
LOOP AT it_yyeft1008
INTO wa_yyeft1008
FROM sy-tabix.
*
IF wa_yyeft1008-bp_refnr NE wa_yyeft1201-bprefnr.
EXIT.
ENDIF.
wa_output-id_anlief = wa_yyeft1008-id_anlief.
*
IF NOT pa_det IS INITIAL
OR NOT wa_output-com_delfnd IS INITIAL.
APPEND wa_output TO it_output.
ENDIF.
ENDLOOP. "LOOP AT it_yyeft1008
ELSE.
CLEAR wa_output-id_anlief.
wa_output-com_delfnd = 'Deliv. NOT found'(t06).
APPEND wa_output TO it_output.
ENDIF.
ENDLOOP. "LOOP AT it_yyeft1201
IF sy-subrc NE 0.
wa_output-com_delfnd = 'No Detail records in YYEFT1201'(e01).
APPEND wa_output TO it_output.
ENDIF. "IF sy-subrc NE 0.
ENDLOOP. "LOOP AT it_yyeft1200
Checkbox Editable for Production Run
IF pa_prodr IS INITIAL.
LOOP AT it_output
INTO wa_output.
zs_style-fieldname = 'CHK_BOX'.
zs_style-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT zs_style INTO TABLE wa_output-celltab.
MODIFY it_output FROM wa_output
TRANSPORTING celltab.
ENDLOOP. "LOOP AT it_output INTO wa_output.
ENDIF. "IF pa_prodr IS INITIAL
LOOP AT it_output
INTO wa_output.
IF wa_output-status GE kc_status10
AND wa_output-belnr IS INITIAL
AND NOT pa_prodr IS INITIAL.
zs_style-fieldname = 'CHK_BOX'.
zs_style-style = cl_gui_alv_grid=>mc_style_enabled.
INSERT zs_style INTO TABLE wa_output-celltab.
MODIFY it_output FROM wa_output
TRANSPORTING celltab.
ENDIF. "IF wa_output-status GE kc_status10
ENDLOOP. "LOOP AT it_output INTO wa_output
ENDFORM. "build_data
&----
*& Form prepare_field_catalog
&----
Field Catalog Preparation
----
<--PIT_FIELDCAT Field catalog
----
FORM prepare_field_catalog
CHANGING pit_fieldcat TYPE lvc_t_fcat.
*
DATA: ls_fcat TYPE lvc_s_fcat.
*
IF it_output1 IS INITIAL.
Check Box
CLEAR ls_fcat.
ls_fcat-fieldname = 'CHK_BOX'.
ls_fcat-datatype = 'CHAR'.
ls_fcat-intlen = '1'.
ls_fcat-edit = kc_x.
ls_fcat-coltext = text-014.
ls_fcat-checkbox = kc_x.
ls_fcat-outputlen = '5'.
APPEND ls_fcat TO pit_fieldcat.
ENDIF. "IF it_output1 IS INITIAL
*
ID RECH
CLEAR ls_fcat.
ls_fcat-fieldname = 'ID_RECH'.
ls_fcat-outputlen = '10'.
ls_fcat-coltext = text-002.
APPEND ls_fcat TO pit_fieldcat.
*
BP Reference
CLEAR ls_fcat.
ls_fcat-fieldname = 'BPREFNR'.
ls_fcat-outputlen = '15'.
ls_fcat-coltext = text-003.
APPEND ls_fcat TO pit_fieldcat.
*
Delivery date
CLEAR ls_fcat.
ls_fcat-fieldname = 'LFDAT'.
ls_fcat-outputlen = '10'.
ls_fcat-coltext = text-004.
APPEND ls_fcat TO pit_fieldcat.
*
Article
CLEAR ls_fcat.
ls_fcat-fieldname = 'ARTNR_BP'.
ls_fcat-outputlen = '18'.
ls_fcat-coltext = text-005.
APPEND ls_fcat TO pit_fieldcat.
*
Account Payable invoice
CLEAR ls_fcat.
ls_fcat-fieldname = 'FNUMKRED'.
ls_fcat-outputlen = '16'.
ls_fcat-coltext = text-006.
APPEND ls_fcat TO pit_fieldcat.
*
Status
CLEAR ls_fcat.
ls_fcat-fieldname = 'STATUS'.
ls_fcat-outputlen = '2'.
ls_fcat-coltext = text-007.
APPEND ls_fcat TO pit_fieldcat.
*
Create date
CLEAR ls_fcat.
ls_fcat-fieldname = 'ERDAT'.
ls_fcat-outputlen = '10'.
ls_fcat-coltext = text-008.
APPEND ls_fcat TO pit_fieldcat.
*
Comment
CLEAR ls_fcat.
ls_fcat-fieldname = 'COM_DELFND'.
ls_fcat-outputlen = '25'.
ls_fcat-coltext = text-009.
APPEND ls_fcat TO pit_fieldcat.
*
Delivery ID
CLEAR ls_fcat.
ls_fcat-fieldname = 'ID_ANLIEF'.
ls_fcat-outputlen = '10'.
ls_fcat-coltext = text-010.
APPEND ls_fcat TO pit_fieldcat.
*
Company Code
CLEAR ls_fcat.
ls_fcat-fieldname = 'BUKRS'.
ls_fcat-outputlen = '4'.
ls_fcat-coltext = text-011.
APPEND ls_fcat TO pit_fieldcat.
*
Accounting Document Number
CLEAR ls_fcat.
ls_fcat-fieldname = 'BELNR'.
ls_fcat-outputlen = '10'.
ls_fcat-coltext = text-012.
APPEND ls_fcat TO pit_fieldcat.
*
Financial Year
CLEAR ls_fcat.
ls_fcat-fieldname = 'GJAHR'.
ls_fcat-outputlen = '4'.
ls_fcat-coltext = text-013.
APPEND ls_fcat TO pit_fieldcat.
*
ENDFORM. " prepare_field_catalog
&----
*& Form EVENT_TOP_OF_PAGE
&----
TOP-OF-PAGE Preparation
----
-->z_dyndoc_id Text of TOP-OF-PAGE
----
FORM event_top_of_page
USING z_dyndoc_id TYPE REF TO cl_dd_document.
*
DATA : lz_text(255) TYPE c.
*
System ID
CLEAR : lz_text.
CONCATENATE text-015
sy-sysid
INTO lz_text
SEPARATED BY space.
PERFORM add_text
USING lz_text.
CALL METHOD z_dyndoc_id->new_line.
*
Title
CLEAR : lz_text.
CONCATENATE text-016
sy-title
INTO lz_text
SEPARATED BY space.
PERFORM add_text
USING lz_text.
CALL METHOD z_dyndoc_id->new_line.
*
Date
CLEAR : lz_text.
WRITE sy-datum TO lz_text.
CONCATENATE text-017
lz_text
INTO lz_text
SEPARATED BY space.
PERFORM add_text
USING lz_text.
CALL METHOD z_dyndoc_id->new_line.
*
User ID
CLEAR : lz_text.
CONCATENATE text-018
sy-uname
INTO lz_text
SEPARATED BY space.
PERFORM add_text
USING lz_text.
CALL METHOD z_dyndoc_id->new_line.
*
Time
CLEAR : lz_text.
WRITE sy-uzeit TO lz_text.
CONCATENATE text-019
lz_text
INTO lz_text
SEPARATED BY space.
PERFORM add_text
USING lz_text.
CALL METHOD z_dyndoc_id->new_line.
*
Program Name
CLEAR : lz_text.
WRITE sy-repid TO lz_text.
CONCATENATE text-020
lz_text
INTO lz_text
SEPARATED BY space.
PERFORM add_text
USING lz_text.
CALL METHOD z_dyndoc_id->new_line.
*
Populating data to TOP-OF-PAGE
PERFORM top-of-page.
*
ENDFORM. " EVENT_TOP_OF_PAGE
&----
*& Form ADD_TEXT
&----
Add Text To TOP-OF-PAGE
----
FORM add_text
USING p_text TYPE sdydo_text_element.
CALL METHOD z_dyndoc_id->add_text
EXPORTING
text = p_text.
ENDFORM. " ADD_TEXT
&----
*& Form TOP-OF-PAGE
&----
TOP-OF-PAGE
----
FORM top-of-page.
CALL METHOD z_dyndoc_id->display_document
EXPORTING
reuse_control = kc_x
parent = z_parent_top
EXCEPTIONS
html_display_error = 1.
IF sy-subrc NE 0.
MESSAGE i001(zzrefn01)
WITH text-036 ' '.
ENDIF. "IF sy-subrc NE 0
ENDFORM. "TOP-OF-PAGE
&----
*& Form handle_user_command
&----
Handle the user command
----
FORM handle_user_command .
*
DATA lzi_lin TYPE i.
*
REFRESH ra_id_rech[].
CLEAR ra_id_rech.
ra_id_rech-sign = kc_include.
ra_id_rech-option = kc_equal.
*
CASE sy-ucomm.
WHEN kc_ucomm-upd.
DESCRIBE LIST NUMBER OF LINES lzi_lin.
DO lzi_lin TIMES.
CLEAR wa_output.
READ LINE sy-index
FIELD VALUE wa_output-chk_box
wa_output-id_rech.
IF sy-subrc NE 0.
EXIT.
ELSE.
IF wa_output-chk_box EQ kc_x.
ra_id_rech-low = wa_output-id_rech.
APPEND ra_id_rech.
ENDIF.
ENDIF.
ENDDO.
*
IF NOT ra_id_rech IS INITIAL.
SORT ra_id_rech BY low.
DELETE ADJACENT DUPLICATES FROM ra_id_rech
COMPARING low.
*
IF NOT pa_prodr IS INITIAL.
UPDATE yyeft1200
SET status = kc_status00
WHERE id_rech IN ra_id_rech.
IF sy-subrc EQ 0.
MESSAGE s900(zbcc)
WITH 'Status change successful'(m08)
space
space
space.
ELSE.
MESSAGE i900(zbcc)
WITH 'Status change failed'(m09)
space
space
space.
ENDIF. "IF sy-subrc EQ 0.
ELSE.
MESSAGE i900(zbcc)
WITH 'TEST RUN: NO databases will be changed'(m03)
space
space
space.
ENDIF. "IF NOT pa_prodr IS INITIAL.
ELSE.
MESSAGE i900(zbcc)
WITH 'Atleast one line should be selected'(m01)
'in order to update.'(m02)
space
space.
ENDIF. "IF NOT ra_id_rech IS INITIAL
*
WHEN kc_ucomm-back
OR kc_ucomm-exit
OR kc_ucomm-cancel.
LEAVE TO SCREEN 0.
WHEN OTHERS.
*
ENDCASE. "CASE sy-ucomm
ENDFORM. " handle_user_command
&----
*& Form display_selected_data
&----
Display Selected Data
----
FORM display_selected_data.
LOOP AT it_output
INTO wa_output
WHERE chk_box EQ kc_x.
MOVE-CORRESPONDING wa_output TO wa_output1.
APPEND wa_output1 TO it_output1.
ENDLOOP. "LOOP AT it_output
call dialog screen and display new alv control
IF NOT it_output1[] IS INITIAL.
CALL SCREEN 101 STARTING AT 10 5.
ENDIF. "IF NOT it_output1[] IS INITIAL
ENDFORM. " change_status
iNCLUDE YYEF_CHECK_ISP_I01
&----
*& Include YYEF_CHECK_ISP_I01 *
&----
&----
*& Module USER_COMMAND_0100 INPUT
&----
Handle user command for screen 0100
----
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN kc_ucomm-back.
LEAVE TO SCREEN 0.
WHEN kc_ucomm-exit.
LEAVE TO SCREEN 0.
ENDCASE. "CASE sy-ucomm.
ENDMODULE. "USER_COMMAND_0100 INPUT
&----
*& Module USER_COMMAND_0101 INPUT
&----
Handle User Command for screen 0101
----
MODULE user_command_0101 INPUT.
CASE sy-ucomm.
WHEN kc_ucomm-back.
LEAVE TO SCREEN 0.
ENDCASE. "CASE sy-ucomm
ENDMODULE. " USER_COMMAND_0101 INPUT
Include YYEF_CHECK_ISP_O01
&----
*& Include YYEF_CHECK_ISP_O01 *
&----
&----
*& Module PBO OUTPUT
&----
OO ALV Display
----
MODULE pbo OUTPUT.
CREATE OBJECT z_container
EXPORTING container_name = kc_container.
Create TOP-Document
CREATE OBJECT z_dyndoc_id
EXPORTING style = kc_alv.
Create Splitter for custom_container
CREATE OBJECT z_splitter
EXPORTING parent = z_container
rows = 2
columns = 1.
For TOP-OF-PAGE
CALL METHOD z_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = z_parent_top.
For ALV Display
CALL METHOD z_splitter->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = z_parent_grid.
Set height for g_parent_html
CALL METHOD z_splitter->set_row_height
EXPORTING
id = 1
height = 20.
*
CREATE OBJECT z_grid
EXPORTING i_parent = z_parent_grid.
*
Set Handler for TOP-OF-PAGE
CREATE OBJECT z_handler.
SET HANDLER z_handler->top_of_page FOR z_grid.
*
z_repid = sy-repid.
z_variant-report = z_repid.
*
Display ALV
zs_layout-stylefname = kc_style.
*
CALL METHOD z_grid->set_table_for_first_display
EXPORTING
is_layout = zs_layout
i_save = kc_u
is_variant = z_variant
CHANGING
it_outtab = it_output[]
it_fieldcatalog = it_fieldcat.
*
Processing TOP-OF-PAGE Event
CALL METHOD z_grid->list_processing_events
EXPORTING
i_event_name = kc_top
i_dyndoc_id = z_dyndoc_id.
*
Set handler for ALV Tool Bar
SET HANDLER z_handler->handle_toolbar FOR z_grid.
SET HANDLER z_handler->handle_user_command FOR z_grid.
CALL METHOD z_grid->set_toolbar_interactive.
ENDMODULE. " PBO OUTPUT
&----
*& Module STATUS_0100 OUTPUT
&----
Set the GUI status
----
MODULE status_0100 OUTPUT.
SET PF-STATUS kc_status.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module STATUS_0101 OUTPUT
&----
Display selected records on screen 0101
----
MODULE status_0101 OUTPUT.
SET TITLEBAR kc_title.
*
CREATE OBJECT z_container1
EXPORTING container_name = kc_container1.
CREATE OBJECT z_grid1
EXPORTING i_parent = z_container1.
PERFORM prepare_field_catalog
CHANGING it_fieldcat1.
Display ALV
CALL METHOD z_grid1->set_table_for_first_display
EXPORTING
is_layout = zs_layout
CHANGING
it_outtab = it_output1[]
it_fieldcatalog = it_fieldcat1.
ENDMODULE. " STATUS_0101 OUTPUT
INCLUDE YYEF_CHECK_ISP_TOP
&----
*& Include YYEF_CHECK_ISP_TOP *
&----
************************************************************************
************************************************************************
DATA DEFINITIONS **
************************************************************************
************************************************************************
----
Class declarations *
----
*class zcl_xyz definition deferred.
CLASS :cl_gui_alv_grid DEFINITION LOAD,
cl_gui_custom_container DEFINITION LOAD.
----
Tables (old SAP style, please avoid and use workareas instead) *
----
TABLES: yyeft1200,
yyeft1201.
*tables: xyz.
----
Controls *
----
*controls: ctrl_xyz.
----
Types *
----
TYPES: BEGIN OF ty_output,
chk_box(1) TYPE c,
celltab TYPE lvc_t_styl,
id_rech TYPE yyeft1200-id_rech,
bprefnr TYPE yyeft1201-bprefnr,
lfdat TYPE yyeft1201-lfdat,
artnr_bp TYPE yyeft1201-artnr_bp,
fnumkred TYPE yyeft1200-fnumkred,
status TYPE yyeft1200-status,
erdat TYPE yyeft1200-erdat,
com_delfnd TYPE char25,
id_anlief TYPE yyeft1008-id_anlief,
bukrs TYPE yyeft1200-bukrs,
belnr TYPE yyeft1200-belnr,
gjahr TYPE yyeft1200-gjahr,
END OF ty_output.
TYPES: BEGIN OF ty_output1,
celltab TYPE lvc_t_styl,
id_rech TYPE yyeft1200-id_rech,
bprefnr TYPE yyeft1201-bprefnr,
lfdat TYPE yyeft1201-lfdat,
artnr_bp TYPE yyeft1201-artnr_bp,
fnumkred TYPE yyeft1200-fnumkred,
status TYPE yyeft1200-status,
erdat TYPE yyeft1200-erdat,
com_delfnd TYPE char25,
id_anlief TYPE yyeft1008-id_anlief,
bukrs TYPE yyeft1200-bukrs,
belnr TYPE yyeft1200-belnr,
gjahr TYPE yyeft1200-gjahr,
END OF ty_output1.
TYPES: BEGIN OF ty_status,
id_rech TYPE yyeft1200-id_rech,
END OF ty_status.
*TYPES-POOLS: xyz.
*TYPES: ty_xyz.
----
Internal tables *
----
*DATA: it_xyz.
DATA: it_yyeft1200 TYPE STANDARD TABLE OF yyeft1200,
it_yyeft1201 TYPE SORTED TABLE OF yyeft1201
WITH UNIQUE KEY id_rech posnr,
it_yyeft1008 TYPE STANDARD TABLE OF yyeft1008,
it_output TYPE STANDARD TABLE OF ty_output,
it_output1 TYPE STANDARD TABLE OF ty_output1,
it_fieldcat TYPE lvc_t_fcat,
it_fieldcat1 TYPE lvc_t_fcat.
----
Workareas *
----
*DATA: wa_xyz.
DATA: wa_yyeft1200 TYPE yyeft1200,
wa_yyeft1201 TYPE yyeft1201,
wa_yyeft1008 TYPE yyeft1008,
wa_output TYPE ty_output,
wa_output1 TYPE ty_output1.
*****OO ALV DATA DECLARATION
DATA: zs_style TYPE lvc_s_styl,
zs_layout TYPE lvc_s_layo,
z_container TYPE REF TO cl_gui_custom_container,
z_container1 TYPE REF TO cl_gui_custom_container,
z_grid TYPE REF TO cl_gui_alv_grid,
z_grid1 TYPE REF TO cl_gui_alv_grid,
z_dyndoc_id TYPE REF TO cl_dd_document,
z_splitter TYPE REF TO cl_gui_splitter_container,
z_parent_grid TYPE REF TO cl_gui_container,
z_parent_top TYPE REF TO cl_gui_container.
----
Constants *
----
*constants: kc_xyz value ... "character
*constants: kn_xyz value ... "numeric
*constants: ki_xyz value ... "integer
*constants: kp_xyz value ... "packed
*constants: kx_xyz value ... "hex
CONSTANTS: kc_status00 TYPE yyeft1200-status VALUE '00',
kc_status10 TYPE yyeft1200-status VALUE '10',
kc_x TYPE char01 VALUE 'X',
kc_include TYPE char01 VALUE 'I',
kc_equal(2) TYPE c VALUE 'EQ',
kc_status(11) TYPE c VALUE 'ZGUI_STATUS',
kc_container TYPE char10 VALUE 'ZCONTAINER',
kc_container1 TYPE char11 VALUE 'ZCONTAINER1',
kc_u TYPE char01 VALUE 'U',
kc_top TYPE char30 VALUE 'TOP_OF_PAGE',
kc_alv TYPE char50 VALUE 'ALV_GRID',
kc_style TYPE char07 VALUE 'CELLTAB',
kc_title TYPE char07 VALUE 'ZTITLE'.
CONSTANTS: BEGIN OF kc_ucomm,
upd TYPE sy-ucomm VALUE 'UPD',
back TYPE sy-ucomm VALUE 'BACK',
exit TYPE sy-ucomm VALUE 'EXIT',
cancel TYPE sy-ucomm VALUE 'CANCEL',
END OF kc_ucomm.
----
Sentence counters *
----
*data: cnt_xyz type i value 0.
----
Calculation variables (Rechenfelder) *
----
*data: r_xyz.
----
Switches *
----
*data: sw_xyz(1) type n value 0.
----
Misc variables *
----
*DATA: z_xyz.
*** Initialization of parameters at call of/return to
*** selection dynpro (for Online-only-reports)
DATA: zn_init_seldynp(1) TYPE n
VALUE 1.
*** Log
*DATA: z_subrc TYPE sy-subrc.
DATA: zn_cancel(1) TYPE n,
z_variant TYPE disvariant,
zx_variant TYPE disvariant.
DATA: z_repid TYPE sy-repid,
z_exit TYPE char01,
z_flag TYPE char01.
----
Field symbols (pointers) *
----
*field-symbols: <fs_xyz>.
----
Ranges *
----
DATA: ra_id_rech TYPE RANGE OF yyeft1200-id_rech
WITH HEADER LINE.
*data: ra_xyz type range of xyz
with header line.
************************************************************************
************************************************************************
Classes: Definition and Implementation **
************************************************************************
************************************************************************
*class zcl_xyz definition.
*endclass.
*class zcl_xyz implementation.
*endclass.
CLASS zcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
TOP-OF-PAGE
top_of_page
FOR EVENT top_of_page OF cl_gui_alv_grid
IMPORTING e_dyndoc_id,
Change Status Button on Tool Bar
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
Process User Command
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "zcl_event_handler DEFINITION
&----
*& Global Definitions
&----
DATA: z_handler TYPE REF TO zcl_event_handler. "handler
----
Select options / Parameter *
----
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS: so_idrec FOR yyeft1200-id_rech,
so_fnumk FOR yyeft1200-fnumkred,
so_stat FOR yyeft1200-status,
so_erdat FOR yyeft1200-erdat,
so_artnr FOR yyeft1201-artnr_bp.
PARAMETER: pa_det AS CHECKBOX,
pa_prodr AS CHECKBOX, "Flag Prod. Run
pa_vari TYPE disvariant-variant DEFAULT 'LAYOUT1'.
"Layout
SELECTION-SCREEN END OF BLOCK b1.
*SELECT-OPTIONS: so_xyz FOR z_xyz.
*PARAMETERS: pa_xyz.
*PARAMETERS: pa_dummy MODIF ID rdo. "Read-Only example
*
*PARAMETERS: pa_prodr AS CHECKBOX. "Flag Production Run (optional)
*
*PARAMETERS: pa_start AS CHECKBOX. "Flag Start, for reports without
*"selection screen (optional)
*
*SELECTION-SCREEN ULINE.
2007 Oct 05 6:14 AM
thanx dude let me check it first den i ill giv u reward points
thanx once again.
2007 Oct 05 6:30 AM
Hi Anit,
One modification in that code.In that code only METHOD new_line is used where you need the gap use METHOD add_gap in place of new_line and pass the width as the parameter like
System ID
CLEAR : lz_text.
CONCATENATE text-015
sy-sysid
INTO lz_text
SEPARATED BY space.
PERFORM add_text
USING lz_text.
CALL METHOD z_dyndoc_id->add_gap
EXPORTING
WIDTH = 100.
*
Title
CLEAR : lz_text.
CONCATENATE text-016
sy-title
INTO lz_text
SEPARATED BY space.
PERFORM add_text
USING lz_text.
CALL METHOD z_dyndoc_id->new_line.
2007 Oct 05 6:34 AM
hI
<b>Alignment of Data in TOP-OF-PAGE in ALV GRID</b>
Many of us faced difficulty in aligning the data in TOP-OF-PAGE in ALV GRID using function modules, We are not able to right align the data or which ever position we want.
Many unsolved threads on this topic!!!!!!!!!!.
Here is a sample code which aligns the data according to the position specified.
REPORT alv_top_of_page.
TABLES : t001.
TYPE-POOLS: slis.
DATA : w_repid LIKE sy-repid.
TYPES : BEGIN OF ty_comp.
INCLUDE STRUCTURE t001.
TYPES : END OF ty_comp.
DATA: wa_layout TYPE slis_layout_alv.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
DATA : it_comp TYPE TABLE OF ty_comp.
INITIALIZATION.
w_repid = sy-repid.
START-OF-SELECTION.
SELECT * FROM t001 INTO TABLE it_comp.
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = w_repid
i_internal_tabname = 'IT_COMP'
i_inclname = w_repid
CHANGING
ct_fieldcat = it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
is_layout = wa_layout
it_fieldcat = it_fieldcat
TABLES
t_outtab = it_comp
EXCEPTIONS
program_error = 1
OTHERS = 2.
&----
*& Form html_top_of_page
&----
FORM html_top_of_page USING document TYPE REF TO cl_dd_document.
DATA: text TYPE sdydo_text_element.
CALL METHOD document->add_gap
EXPORTING
width = 100.
text = 'Company Code Data'.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'HEADING'.
CALL METHOD document->new_line.
CALL METHOD document->new_line.
CALL METHOD document->new_line.
text = 'User Name : '.
CALL METHOD document->add_text
EXPORTING
text = text
sap_emphasis = 'Strong'.
CALL METHOD document->add_gap
EXPORTING
width = 6.
text = sy-uname.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'Key'.
CALL METHOD document->add_gap
EXPORTING
width = 50.
text = 'Date : '.
CALL METHOD document->add_text
EXPORTING
text = text
sap_emphasis = 'Strong'.
CALL METHOD document->add_gap
EXPORTING
width = 6.
text = sy-datum.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'Key'.
CALL METHOD document->add_gap
EXPORTING
width = 50.
text = 'Time : '.
CALL METHOD document->add_text
EXPORTING
text = text
sap_emphasis = 'Strong'.
CALL METHOD document->add_gap
EXPORTING
width = 6.
text = sy-uzeit.
CALL METHOD document->add_text
EXPORTING
text = text
sap_style = 'Key'.
CALL METHOD document->new_line.
CALL METHOD document->new_line.
ENDFORM. "HTML_TOP_OF_PAGE
<b>REWARD IF USEFULL</b>
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |