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 report

Former Member
0 Likes
525

in simple alv reports after passing the events table to alv_grid_display top-of-page is not triggering. give me the solution or any sample example to test.

in simple alv reports after passing the events table to alv_grid_display top-of-page is not triggering. give me the solution or any sample example to test.

3 REPLIES 3
Read only

Former Member
0 Likes
499

Hi Lakshmi,

Check below code, you will get an idea.

&----


*& Form validate_selection_criteria

&----


  • Validation of entries for company code plant and material number

----


FORM validate_selection_criteria .

DATA: lv_matnr LIKE mara-matnr,

lv_werks LIKE t001w-werks.

  • validating company code and selecting US Company codes only

SELECT bukrs

FROM t001

INTO TABLE gt_bukrs

WHERE bukrs IN s_bukrs

AND land1 = gc_country_key.

IF sy-subrc NE 0.

MESSAGE e000 WITH text-t03.

ENDIF.

  • Plant

IF s_werks IS NOT INITIAL.

SELECT SINGLE werks FROM t001w INTO lv_werks WHERE werks IN s_werks.

IF sy-subrc NE 0.

MESSAGE e000 WITH text-t04.

ENDIF.

ENDIF.

  • Material Number

IF s_matnr IS NOT INITIAL.

SELECT SINGLE matnr FROM mara INTO lv_matnr WHERE matnr IN s_matnr.

IF sy-subrc NE 0.

MESSAGE e000 WITH text-t05.

ENDIF.

ENDIF.

ENDFORM. " validate_selection_criteria

&----


*& Form fetch_data

&----


FORM fetch_data .

REFRESH: gt_tax_details,gt_mseg_data,gt_address_data.

CLEAR: gt_tax_details,gt_mseg_data,gt_address_data.

DATA: lv_object_id TYPE crmt_object_id_co,

lv_number_int TYPE crmt_item_no_co.

SELECT f~mblnr

f~budat

g~bwart

g~umlgo

g~bukrs

g~umwrk

g~werks

g~sakto

g~matnr

g~menge

g~meins

g~ablad

g~dmbtr

g~mjahr

g~zeile

g~line_id

g~lifnr

t~maktx

t~spras

INTO TABLE gt_mseg_data

FROM (

mseg AS g

INNER JOIN mkpf AS f ON gmblnr = fmblnr

AND gmjahr = fmjahr

INNER JOIN makt AS t ON tmatnr = gmatnr )

FOR ALL ENTRIES IN gt_bukrs

WHERE g~bukrs = gt_bukrs-bukrs

AND f~budat IN s_budat

AND g~werks IN s_werks

AND g~matnr IN s_matnr

AND ( g~bwart = gc_bwart OR

g~bwart = gc_bwart_ebp )

AND t~spras = sy-langu.

CHECK sy-subrc EQ 0.

  • getting address details

SELECT d~lgort

d~werks

c~region

c~name2

c~taxjurcode

d~lfdnr

c~addrnumber

c~date_from

c~nation

INTO TABLE gt_address_data

FROM (

twlad AS d INNER JOIN

adrc AS c ON caddrnumber = dadrnr

)

FOR ALL ENTRIES IN gt_mseg_data

WHERE d~werks = gt_mseg_data-umwrk

AND d~lgort = gt_mseg_data-umlgo.

  • getting product code & tax details

SELECT m~matnr

a~kappl

a~kschl

a~lland

a~matkl

a~datbi

k~knumh

k~kopos

k~mwsk1

t~kalsm

t~mwskz

t~procd

INTO TABLE gt_tax_details

FROM ( ( (

mara AS m

INNER JOIN a600 AS a ON mmatkl = amatkl )

INNER JOIN konp AS k ON aknumh = kknumh

AND akappl = kkappl

AND akschl = kkschl )

INNER JOIN t007a AS t ON kmwsk1 = tmwskz )

FOR ALL ENTRIES IN gt_mseg_data

WHERE m~matnr = gt_mseg_data-matnr

AND t~kalsm = gc_kalsm.

IF sy-subrc = 0.

SORT gt_tax_details BY matnr.

DELETE ADJACENT DUPLICATES FROM gt_tax_details COMPARING matnr.

SELECT spras

matkl

wgbez

INTO TABLE gt_t023t

FROM t023t

FOR ALL ENTRIES IN gt_tax_details

WHERE matkl = gt_tax_details-matkl

AND spras = sy-langu.

SORT gt_t023t BY matkl.

ENDIF.

SORT gt_address_data BY lgort werks.

  • Logic for getting EBP details

LOOP AT gt_mseg_data INTO gs_mseg_data

WHERE bwart = gc_bwart_ebp

AND ablad IS NOT INITIAL.

SPLIT gs_mseg_data-ablad AT '\' INTO gs_scitem_id-object_id

gs_scitem_id-number_int.

IF sy-subrc EQ 0.

APPEND gs_scitem_id TO gt_scitem_id.

CLEAR gs_scitem_id.

ENDIF.

ENDLOOP.

DELETE ADJACENT DUPLICATES FROM gt_scitem_id COMPARING ALL FIELDS.

IF NOT gt_scitem_id[] IS INITIAL.

SELECT SINGLE rfcdest

INTO gv_rfcdest

FROM crmrfcpar.

CALL FUNCTION 'Z_GET_SC_DELADDRESS' DESTINATION gv_rfcdest

EXPORTING

scitem_id = gt_scitem_id

IMPORTING

scdel_details = gt_scitem_address_details.

IF sy-subrc <> 0.

MESSAGE e000 WITH text-e01 text-e02.

ELSE.

ENDIF.

ENDIF.

SORT gt_scitem_address_details BY object_id number_int.

  • Filling all selected data in display table

LOOP AT gt_mseg_data INTO gs_mseg_data.

  • Adding MSEG/MKPF/MAKT fields

gs_disp_table-bukrs = gs_mseg_data-bukrs.

gs_disp_table-mblnr = gs_mseg_data-mblnr.

gs_disp_table-budat = gs_mseg_data-budat.

gs_disp_table-werks = gs_mseg_data-werks.

gs_disp_table-sakto = gs_mseg_data-sakto.

gs_disp_table-matnr = gs_mseg_data-matnr.

gs_disp_table-maktx = gs_mseg_data-maktx.

gs_disp_table-menge = gs_mseg_data-menge.

gs_disp_table-meins = gs_mseg_data-meins.

IF gs_mseg_data-menge IS NOT INITIAL.

gs_disp_table-unit_price = gs_mseg_data-dmbtr / gs_mseg_data-menge.

ENDIF.

gs_disp_table-dmbtr = gs_mseg_data-dmbtr.

  • Address details

READ TABLE gt_address_data INTO gs_address_data

WITH KEY lgort = gs_mseg_data-umlgo

werks = gs_mseg_data-umwrk

BINARY SEARCH.

gs_disp_table-region = gs_address_data-region.

gs_disp_table-name2 = gs_address_data-name2.

gs_disp_table-taxjurcode = gs_address_data-taxjurcode.

  • Adding Product Code

READ TABLE gt_tax_details INTO gs_tax_details

WITH KEY matnr = gs_mseg_data-matnr.

IF sy-subrc = 0.

gs_disp_table-procd = gs_tax_details-procd.

gs_disp_table-matkl = gs_tax_details-matkl.

CLEAR gs_t023t.

READ TABLE gt_t023t INTO gs_t023t

WITH KEY matkl = gs_tax_details-matkl

BINARY SEARCH.

gs_disp_table-wgbez = gs_t023t-wgbez.

ENDIF.

IF gs_mseg_data-bwart = gc_bwart_ebp.

  • For EBP

CLEAR: lv_object_id,

lv_number_int.

SPLIT gs_mseg_data-ablad AT '\' INTO lv_object_id

lv_number_int.

CLEAR gs_scitem_address_details.

READ TABLE gt_scitem_address_details

INTO gs_scitem_address_details

WITH KEY object_id = lv_object_id

number_int = lv_number_int

BINARY SEARCH.

gs_disp_table-region = gs_scitem_address_details-region.

gs_disp_table-name2 = gs_scitem_address_details-name_2.

gs_disp_table-taxjurcode = gs_scitem_address_details-taxjurcode.

ENDIF.

APPEND gs_disp_table TO gt_disp_table.

CLEAR: gs_disp_table,

gs_tax_details,

gs_address_data.

ENDLOOP.

ENDFORM. " fetch_data

&----


*& Form display_alv

&----


FORM display_alv .

PERFORM get_alv_events.

PERFORM fieldcat_init.

PERFORM build_top_of_page CHANGING gt_listheader.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_bypassing_buffer = 'X'

i_buffer_active = ' '

i_callback_program = gv_repid

it_fieldcat = gt_fieldcat[]

it_events = gt_events

is_layout = gs_layout

TABLES

t_outtab = gt_disp_table

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDFORM. " display_alv

&----


*& Form get_alv_events

&----


FORM get_alv_events .

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = gt_events

EXCEPTIONS

list_type_wrong = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

gs_events-form = 'STD_TOP_OF_PAGE'.

MODIFY gt_events FROM gs_events TRANSPORTING form WHERE name =

'TOP_OF_PAGE'.

ENDFORM. " get_alv_events

&----


*& Form fieldcat_init

&----


FORM fieldcat_init.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

DATA: pos TYPE i VALUE 1.

PERFORM fill_fieldcat_table USING pos 'BUKRS' 'MSEG'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'MBLNR' 'MSEG'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'REGION' 'ADRC'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'BUDAT' 'MKPF'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'WERKS' 'MSEG'.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'NAME2'.

ls_fieldcat-tabname = 'GT_DISP_TABLE'.

ls_fieldcat-ref_fieldname = 'NAME2'.

ls_fieldcat-ref_tabname = 'MSEG'.

ls_fieldcat-reptext_ddic = text-c02.

ls_fieldcat-seltext_l = text-c02.

ls_fieldcat-seltext_m = text-c02.

ls_fieldcat-seltext_s = text-c02.

ls_fieldcat-ddic_outputlen = 15.

APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'TAXJURCODE' 'ADRC'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'SAKTO' 'MSEG'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'MATNR' 'MSEG'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'MAKTX' 'MAKT'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'MATKL' 'MARA'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'WGBEZ' 'T023T'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'PROCD' 'T007A'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'MENGE' 'MSEG'.

pos = pos + 1.

PERFORM fill_fieldcat_table USING pos 'MEINS' 'MSEG'.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'UNIT_PRICE'.

ls_fieldcat-tabname = 'GT_DISP_TABLE'.

ls_fieldcat-ref_fieldname = 'DMBTR'.

ls_fieldcat-ref_tabname = 'MSEG'.

ls_fieldcat-reptext_ddic = text-c01.

ls_fieldcat-seltext_l = text-c01.

ls_fieldcat-seltext_m = text-c01.

ls_fieldcat-seltext_s = text-c01.

ls_fieldcat-ddic_outputlen = 15.

APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

ls_fieldcat-col_pos = pos.

ls_fieldcat-fieldname = 'DMBTR'.

ls_fieldcat-tabname = 'GT_DISP_TABLE'.

ls_fieldcat-ref_fieldname = 'DMBTR'.

ls_fieldcat-ref_tabname = 'MSEG'.

ls_fieldcat-reptext_ddic = text-c04.

ls_fieldcat-seltext_l = text-c04.

ls_fieldcat-seltext_m = text-c04.

ls_fieldcat-seltext_s = text-c04.

ls_fieldcat-ddic_outputlen = 15.

APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.

pos = pos + 1.

gs_layout-box_fieldname = 'BOX'.

ENDFORM. " fieldcat_init1

&----


*& Form fill_fieldcat_table

&----


FORM fill_fieldcat_table USING p_pos

value(p_fieldname)

value(p_tabname).

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

ls_fieldcat-col_pos = p_pos.

ls_fieldcat-fieldname = p_fieldname.

ls_fieldcat-tabname = 'GT_DISP_TABLE'.

ls_fieldcat-ref_fieldname = p_fieldname.

ls_fieldcat-ref_tabname = p_tabname.

APPEND ls_fieldcat TO gt_fieldcat.

CLEAR ls_fieldcat.

ENDFORM. " fill_fieldcat_table

&----


*& Form build_top_of_page

&----


FORM build_top_of_page CHANGING l_top_of_page TYPE slis_t_listheader.

DATA:ls_line TYPE slis_listheader.

CLEAR ls_line.

ls_line-typ = 'H'.

ls_line-info = gv_title .

APPEND ls_line TO l_top_of_page.

CLEAR ls_line.

ls_line-typ = 'S'.

ls_line-key = text-t02.

WRITE sy-datum TO ls_line-info.

APPEND ls_line TO l_top_of_page.

CLEAR ls_line.

ENDFORM. " build_top_of_page

&----


*& Form std_top_of_page

&----


FORM std_top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = gt_listheader

i_logo = 'ENJOYSAP_LOGO'.

ENDFORM. "std_top_of_page

Reward points if useful.

Regards,

Atish

Read only

Former Member
0 Likes
499

Check with Below Thread :

/people/community.user/blog/2007/05/07/alignment-of-data-in-top-of-page-in-alv-grid

Thanks

Seshu

Read only

Former Member
0 Likes
499

TRY THIS


TYPE-POOLS : SLIS.

TABLES : MARA.
DATA : BEGIN OF ITAB OCCURS 0,
       MATNR LIKE MARA-MATNR,
       MTART LIKE MARA-MTART,
       END OF ITAB.

DATA : IFIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
       WFIELDCAT TYPE SLIS_FIELDCAT_ALV.




SELECT MATNR MTART INTO TABLE ITAB FROM MARA UP TO 20 ROWS.

WFIELDCAT-FIELDNAME     = 'MATNR'.
WFIELDCAT-SELTEXT_L = 'Material no'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCAT.

WFIELDCAT-FIELDNAME     = 'MTART'.
WFIELDCAT-SELTEXT_L = 'Material typ'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCAT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
   I_CALLBACK_PROGRAM                = SY-REPID
*   I_CALLBACK_PF_STATUS_SET          = ' '
*   I_CALLBACK_USER_COMMAND           = ' '
   I_CALLBACK_TOP_OF_PAGE            = 'TOPOFPAGE'
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
*   IS_LAYOUT                         =
   IT_FIELDCAT                       = IFIELDCAT
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
*   I_SAVE                            = ' '
*   IS_VARIANT                        =
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   I_HTML_HEIGHT_TOP                 = 0
*   I_HTML_HEIGHT_END                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
  TABLES
    t_outtab                          = ITAB
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

FORM TOPOFPAGE.
DATA : ILIST TYPE SLIS_T_LISTHEADER,
       WLIST TYPE SLIS_LISTHEADER.

WLIST-INFO = 'Top of page'.
WLIST-TYP  = 'H'.
APPEND WLIST TO ILIST.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    it_list_commentary       = ILIST
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
*   I_ALV_FORM               =
          .


ENDFORM.

regards

shiba dutta