2007 Jun 23 4:16 AM
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.
2007 Jun 23 4:20 AM
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
2007 Jun 23 4:25 AM
Check with Below Thread :
/people/community.user/blog/2007/05/07/alignment-of-data-in-top-of-page-in-alv-grid
Thanks
Seshu
2007 Jun 23 4:27 AM
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