Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV issue plz help

Former Member
0 Likes
1,079

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,051

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.

8 REPLIES 8
Read only

Former Member
0 Likes
1,051

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.

Read only

0 Likes
1,051

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

Read only

0 Likes
1,051

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

Read only

0 Likes
1,051

HI MUKESH

Thanx 4 the rply plz send me the whole code

thanx once again.

Read only

0 Likes
1,051

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.

Read only

0 Likes
1,051

thanx dude let me check it first den i ill giv u reward points

thanx once again.

Read only

0 Likes
1,051

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.

Read only

Former Member
0 Likes
1,052

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>