2007 Feb 21 5:28 AM
Hi ALV masters,
Plz help me ..
I have an ALV grid report where i have the data in my final table t_final.
now i'm trying to populate the fieldcat using FM reuse_alv_fieldcatalog_merge but its not at all getting populated.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = l_repid
I_INTERNAL_TABNAME = 'T_Final'
I_INCLNAME = l_repid
CHANGING
CT_FIELDCAT = T_FIELDCAT[]
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
Please help me and if possibl try to send som sample code also.
Thanks in advance..
2007 Feb 21 5:31 AM
Check it its working fine for me or send your whole code
report ztest_34331_merge.
type-pools : slis.
tables : qals.
data : begin of t_out occurs 0,
matnr like qals-matnr, "MATERIAL
werk like qals-werk, "PLANT
art like qals-art, "Inspaction Lot Type
objnr like qals-objnr, "Object Number
end of t_out.
data : i_fieldcat type slis_t_fieldcat_alv with header line,
i_layout type slis_layout_alv,
gs_layout type lvc_s_layo,
g_repid type sy-repid,
ls_fieldcat type slis_fieldcat_alv.
select-options:s_prflos for qals-prueflos.
initialization.
g_repid = sy-repid.
i_layout-zebra = 'X'.
i_layout-colwidth_optimize = 'X'.
start-of-selection.
perform fetch_data.
end-of-selection.
perform fill_fieldcat.
perform display_alv.
&----
*& Form FETCH_DATA
&----
text
----
--> p1 text
<-- p2 text
----
form fetch_data .
select matnr werk art objnr
from qals
into table t_out
where prueflos in s_prflos.
endform. " FETCH_DATA
&----
*& Form FILL_FIELDCAT
&----
text
----
form fill_fieldcat .
refresh i_fieldcat[].
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = g_repid
i_internal_tabname = 'T_OUT'
i_inclname = g_repid
changing
ct_fieldcat = i_fieldcat[]
exceptions
inconsistent_interface = 1
program_error = 2
others = 3.
endform. " FILL_FIELDCAT
&----
*& Form display_alv
&----
text
----
form display_alv .
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = g_repid
is_layout = i_layout
it_fieldcat = i_fieldcat[]
tables
t_outtab = t_out
exceptions
program_error = 1
others = 2.
endform. " display_alv
2007 Feb 21 5:30 AM
Follow this
*For Function module ALV (report)
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'T_FINAL' (caps)
CHANGING
ct_fieldcat = t_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.Refer this
http://www.sapdevelopment.co.uk/reporting/alv/alv_variousfcat.htm
this will solve ur problem, reward points if this solves.
Problem solved or not, reward and close the thread. else please revert back with queries.
2007 Feb 21 5:31 AM
Check it its working fine for me or send your whole code
report ztest_34331_merge.
type-pools : slis.
tables : qals.
data : begin of t_out occurs 0,
matnr like qals-matnr, "MATERIAL
werk like qals-werk, "PLANT
art like qals-art, "Inspaction Lot Type
objnr like qals-objnr, "Object Number
end of t_out.
data : i_fieldcat type slis_t_fieldcat_alv with header line,
i_layout type slis_layout_alv,
gs_layout type lvc_s_layo,
g_repid type sy-repid,
ls_fieldcat type slis_fieldcat_alv.
select-options:s_prflos for qals-prueflos.
initialization.
g_repid = sy-repid.
i_layout-zebra = 'X'.
i_layout-colwidth_optimize = 'X'.
start-of-selection.
perform fetch_data.
end-of-selection.
perform fill_fieldcat.
perform display_alv.
&----
*& Form FETCH_DATA
&----
text
----
--> p1 text
<-- p2 text
----
form fetch_data .
select matnr werk art objnr
from qals
into table t_out
where prueflos in s_prflos.
endform. " FETCH_DATA
&----
*& Form FILL_FIELDCAT
&----
text
----
form fill_fieldcat .
refresh i_fieldcat[].
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = g_repid
i_internal_tabname = 'T_OUT'
i_inclname = g_repid
changing
ct_fieldcat = i_fieldcat[]
exceptions
inconsistent_interface = 1
program_error = 2
others = 3.
endform. " FILL_FIELDCAT
&----
*& Form display_alv
&----
text
----
form display_alv .
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = g_repid
is_layout = i_layout
it_fieldcat = i_fieldcat[]
tables
t_outtab = t_out
exceptions
program_error = 1
others = 2.
endform. " display_alv
2007 Feb 21 7:33 AM
Hi Mukesh,
this is my code.
plz tell where i'm going rong..
&----
*& Report ZMMR_CHANGES *
*& *
&----
Title : Material Master: Display Changes *
Description : This ABAP report will collectively list all material *
master changes to the fields specified in the selection*
criteria. *
Request No : SRDK922644 *
Author : Praveen Reddy *
Created on : 14-FEB-2007 *
*
----
REPORT ZMMR_CHANGES
NO STANDARD PAGE HEADING
message-id ZSPR.
TYPE-POOLS : SLIS.
TABLES : CDHDR , " Change document header
CDPOS , " Change document item
MARAV , " View Table for Logical DB MGM
MARC , " Plant Data for Material
MVKE . " Sales Data for Material
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN BEGIN OF BLOCK GENERAL WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS :
S_OBJCLS FOR CDHDR-OBJECTCLAS ,
S_MATNR FOR CDHDR-OBJECTID ,
S_WERKS FOR MARC-WERKS ,
S_VKORG FOR MVKE-VKORG ,
S_VTWEG FOR MVKE-VTWEG ,
S_TABNAM FOR CDPOS-TABNAME ,
S_FNAME FOR CDPOS-FNAME ,
S_CHGIND FOR CDPOS-CHNGIND ,
S_DATE FOR CDHDR-UDATE ,
S_USER FOR CDHDR-USERNAME .
SELECTION-SCREEN END OF BLOCK GENERAL.
SELECTION-SCREEN END OF BLOCK A.
*Data : G_WERKS LIKE MARC-WERKS ,
G_VKORG LIKE MVKE-VKORG ,
G_VTWEG LIKE MVKE-VTWEG ,
G_DESC LIKE MARAV-MAKTX .
TYPES : BEGIN OF TY_FOR_DISP ,
OBJCLASS LIKE CDHDR-OBJECTCLAS ,
OBJID LIKE CDHDR-OBJECTID ,
WERKS LIKE MARC-WERKS ,
VKORG LIKE MVKE-VKORG ,
VTWEG LIKE MVKE-VTWEG ,
DESC LIKE MARAV-MAKTX ,
TABNAME LIKE CDPOS-TABNAME ,
FNAME LIKE CDPOS-FNAME ,
CHNGIND LIKE CDPOS-CHNGIND ,
UDATE LIKE CDHDR-UDATE ,
USERNAME LIKE CDHDR-USERNAME ,
VALUE_OLD LIKE CDPOS-VALUE_OLD ,
VALUE_NEW LIKE CDPOS-VALUE_NEW ,
END OF TY_FOR_DISP .
TYPES : BEGIN OF TY_CDHDR,
OBJCLASS LIKE CDHDR-OBJECTCLAS ,
OBJID LIKE CDHDR-OBJECTID ,
CHNGIND LIKE CDPOS-CHNGIND ,
CHANGENR LIKE CDHDR-CHANGENR ,
UDATE LIKE CDHDR-UDATE ,
USERNAME LIKE CDHDR-USERNAME ,
VALUE_OLD LIKE CDPOS-VALUE_OLD ,
VALUE_NEW LIKE CDPOS-VALUE_NEW ,
END OF TY_CDHDR .
TYPES : BEGIN OF TY_CDPOS,
TABNAME LIKE CDPOS-TABNAME ,
FNAME LIKE CDPOS-FNAME ,
CHANGENR LIKE CDHDR-CHANGENR ,
CHNGIND LIKE CDPOS-CHNGIND ,
TABKEY LIKE CDPOS-TABKEY ,
FIELDTEXT LIKE DFIES-FIELDTEXT,
UDATE LIKE CDPOS-UDATE ,
USERNAME LIKE CDPOS-USERNAME ,
VALUE_OLD LIKE CDPOS-VALUE_OLD ,
VALUE_NEW LIKE CDPOS-VALUE_NEW ,
END OF TY_CDPOS .
DATA : T_FOR_DISP TYPE STANDARD TABLE OF TY_FOR_DISP
WITH HEADER LINE ,
T_CDHDR TYPE STANDARD TABLE OF TY_CDHDR
WITH HEADER LINE ,
T_CDPOS TYPE STANDARD TABLE OF TY_CDPOS
WITH HEADER LINE .
DATA : G_LANGU LIKE SY-LANGU,
G_TABIX LIKE SY-TABIX,
G_DATE LIKE SY-DATUM.
DATA : G_WERKS LIKE MARC-WERKS ,
G_VKORG LIKE MVKE-VKORG ,
G_VTWEG LIKE MVKE-VTWEG ,
G_DESC LIKE MARAV-MAKTX .
*------ALV Grid Field Catalog Fields
DATA: T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
T_FIELDCAT_H LIKE T_FIELDCAT WITH HEADER LINE.
*------End
CONSTANTS : C_MATERIAL(10) VALUE 'MATERIAL' ,
C_OBJCLASS(10) VALUE 'OBJCLASS' ,
C_OBJECTID(8) VALUE 'OBJID' ,
C_WERKS(5) VALUE 'WERKS' ,
C_VKORG(5) VALUE 'VKORG' ,
C_VTWEG(5) VALUE 'VTWEG' ,
C_DESC(4) VALUE 'DESC' ,
C_TABNAME(7) VALUE 'TABNAME' ,
C_FNAME(5) VALUE 'FNAME' ,
C_CHNGIND(7) VALUE 'CHNGIND' ,
C_UDATE(5) VALUE 'UDATE' ,
C_USERNAME(8) VALUE 'USERNAME' ,
C_VALUE_OLD(9) VALUE 'VALUE_OLD' ,
C_VALUE_NEW(9) VALUE 'VALUE_NEW' .
*CONSTANTS: C_TABNAM_FOR_ALV_FM TYPE SLIS_TABNAME VALUE 'T_FOR_DISP'.
*************************************************
INITIALIZATION *****************
*************************************************
INITIALIZATION.
CLEAR: T_CDHDR,
T_CDPOS,
T_FIELDCAT,
T_FIELDCAT_H,
T_FOR_DISP.
REFRESH:T_CDHDR,
T_CDPOS.
CLEAR : CDHDR, " Change document header
CDPOS. " Change document items
******************************************************
****START-OF-SELECTION.
******************************************************
START-OF-SELECTION.
*-FETCHING DETAILS of Changes done
PERFORM SUB_GET_DETAILS.
Get the field description.
PERFORM SUB_CALL_DDIF_FIELDINFO_GET.
*********************************************************
****END-OF-SELECTION.
*********************************************************
END-OF-SELECTION.
*--DISPLAYING DATA IN ALV
PERFORM SUB_DISPLAY_ALV.
&----
*& Form SUB_GET_DETAILS
&----
This subrouting is used to get Final output which will shown in
ALV Grid From Table CDPOS.
----
FORM SUB_GET_DETAILS.
SELECT OBJECTCLAS
OBJECTID
CHANGENR
UDATE
USERNAME
INTO TABLE T_CDHDR
FROM CDHDR
WHERE OBJECTCLAS IN S_OBJCLS
AND OBJECTID IN S_MATNR
AND TABNAME IN S_TABNAM
AND FNAME IN S_FNAME
AND CHNGIND IN S_CHGIND
AND UDATE IN S_DATE
AND UDATE IN S_DATE
AND USERNAME IN S_USER .
IF SY-SUBRC <> 0.
WRITE:/ TEXT-003.
ENDIF.
LOOP AT T_CDHDR.
CLEAR T_FOR_DISP.
IF T_CDHDR-OBJCLASS = C_MATERIAL.
SELECT SINGLE MAKTX
INTO G_DESC
FROM MARAV
WHERE MATNR = T_CDHDR-OBJID+0(18)
AND SPRAS = SY-LANGU.
ENDIF.
T_FOR_DISP-DESC = G_DESC.
CLEAR G_DESC.
CLEAR T_FOR_DISP.
T_FOR_DISP-OBJCLASS = T_CDHDR-OBJCLASS .
T_FOR_DISP-OBJID = T_CDHDR-OBJID .
T_FOR_DISP-UDATE = T_CDHDR-UDATE .
T_FOR_DISP-USERNAME = T_CDHDR-USERNAME .
*ENDIF.
APPEND T_FOR_DISP.
ENDLOOP.
*ENDIF.
SELECT
TABNAME
FNAME
CHANGENR
CHNGIND
TABKEY
UDATE
USERNAME
VALUE_OLD
VALUE_NEW
FROM CDPOS
INTO TABLE T_CDPOS
FOR ALL ENTRIES IN T_CDHDR
CDHDRCHANGENR = CDPOSCHANGENR
WHERE
CHANGENR EQ T_CDHDR-CHANGENR
AND TABNAME IN S_TABNAM
AND FNAME IN S_FNAME
AND CHNGIND IN S_CHGIND .
AND UDATE IN S_DATE.
AND OBJECTID IN S_DATE
AND USERNAME IN S_USER .
IF SY-SUBRC <> 0.
WRITE:/ TEXT-003.
ENDIF.
*CLEAR T_FOR_DISP.
READ TABLE T_CDPOS
WITH KEY CHANGENR = T_CDHDR-CHANGENR.
CLEAR : G_WERKS,
G_VKORG,
G_VTWEG.
G_DESC .
IF T_CDPOS-TABNAME = 'MARC'.
G_WERKS = T_CDPOS-TABKEY+21(4).
ENDIF.
CHECK G_WERKS IN S_WERKS.
IF SY-SUBRC = 0.
T_FOR_DISP-WERKS = G_WERKS.
ENDIF.
IF T_CDPOS-TABNAME = 'MVKE'.
G_VKORG = T_CDPOS-TABKEY+21(4).
ENDIF.
CHECK G_VKORG IN S_VKORG.
T_FOR_DISP-VKORG = G_VKORG.
G_VTWEG = T_CDPOS-TABKEY+25(2).
CHECK G_VTWEG IN S_VTWEG.
T_FOR_DISP-VTWEG = G_VTWEG.
T_FOR_DISP-TABNAME = T_CDPOS-TABNAME.
T_FOR_DISP-FNAME = T_CDPOS-FNAME.
T_FOR_DISP-CHNGIND = T_CDPOS-CHNGIND.
T_FOR_DISP-VALUE_OLD = T_CDPOS-VALUE_OLD.
T_FOR_DISP-VALUE_NEW = T_CDPOS-VALUE_NEW.
APPEND T_FOR_DISP.
ENDLOOP.
ENDLOOP.
CLEAR T_FOR_DISP.
ENDFORM. " SUB_GET_DETAILS
&----
*& Form SUB_DISPLAY_ALV
&----
This Subroutine is used to display data to ALV Grid from internal *
tables T_CDHDR & T_CDPOS. which is filled in subroutine *
SUB_GET_DETAILS *
----
FORM SUB_DISPLAY_ALV .
BREAK-POINT.
DATA: l_layout type slis_layout_alv,
l_title type lvc_title,
l_repid like sy-repid.
l_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = l_repid
I_INTERNAL_TABNAME = 'TY_FOR_DISP'
I_INCLNAME = l_repid
CHANGING
CT_FIELDCAT = T_FIELDCAT[]
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
WRITE:/ 'ERROR IN CALLING ALV FM'.
ENDIF.
*----Change Field Heading We move All field data from T_FIELDCAT To
*----another Internal table with header line namely T_FIELDCAT_H
*CLEAR T_FIELDCAT_H[].
REFRESH T_FIELDCAT_H[].
BREAK-POINT.
MOVE T_FIELDCAT[] TO T_FIELDCAT_H[].
CLEAR G_TABIX.
LOOP AT T_FIELDCAT_H.
G_TABIX = SY-TABIX.
CASE T_FIELDCAT_H-FIELDNAME.
WHEN C_OBJCLASS.
T_FIELDCAT_H-SELTEXT_L = TEXT-004.
T_FIELDCAT_H-SELTEXT_M = TEXT-004.
T_FIELDCAT_H-SELTEXT_S = TEXT-004.
T_FIELDCAT_H-OUTPUTLEN = 15.
WHEN C_OBJECTID.
T_FIELDCAT_H-SELTEXT_L = TEXT-005.
T_FIELDCAT_H-SELTEXT_M = TEXT-005.
T_FIELDCAT_H-SELTEXT_S = TEXT-005.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_DESC.
T_FIELDCAT_H-SELTEXT_L = TEXT-006.
T_FIELDCAT_H-SELTEXT_M = TEXT-006.
T_FIELDCAT_H-SELTEXT_S = TEXT-006.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_WERKS.
T_FIELDCAT_H-SELTEXT_L = TEXT-007.
T_FIELDCAT_H-SELTEXT_M = TEXT-007.
T_FIELDCAT_H-SELTEXT_S = TEXT-007.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_VKORG.
T_FIELDCAT_H-SELTEXT_L = TEXT-008.
T_FIELDCAT_H-SELTEXT_M = TEXT-008.
T_FIELDCAT_H-SELTEXT_S = TEXT-008.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_VTWEG.
T_FIELDCAT_H-SELTEXT_L = TEXT-009.
T_FIELDCAT_H-SELTEXT_M = TEXT-009.
T_FIELDCAT_H-SELTEXT_S = TEXT-009.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_TABNAME.
T_FIELDCAT_H-SELTEXT_L = TEXT-010.
T_FIELDCAT_H-SELTEXT_M = TEXT-010.
T_FIELDCAT_H-SELTEXT_S = TEXT-010.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_FNAME.
T_FIELDCAT_H-SELTEXT_L = TEXT-011.
T_FIELDCAT_H-SELTEXT_M = TEXT-011.
T_FIELDCAT_H-SELTEXT_S = TEXT-011.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_CHNGIND.
T_FIELDCAT_H-SELTEXT_L = TEXT-012.
T_FIELDCAT_H-SELTEXT_M = TEXT-012.
T_FIELDCAT_H-SELTEXT_S = TEXT-012.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_UDATE.
T_FIELDCAT_H-SELTEXT_L = TEXT-013.
T_FIELDCAT_H-SELTEXT_M = TEXT-013.
T_FIELDCAT_H-SELTEXT_S = TEXT-013.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_USERNAME.
T_FIELDCAT_H-SELTEXT_L = TEXT-014.
T_FIELDCAT_H-SELTEXT_M = TEXT-014.
T_FIELDCAT_H-SELTEXT_S = TEXT-014.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_VALUE_OLD.
T_FIELDCAT_H-SELTEXT_L = TEXT-015.
T_FIELDCAT_H-SELTEXT_M = TEXT-015.
T_FIELDCAT_H-SELTEXT_S = TEXT-015.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN C_VALUE_NEW.
T_FIELDCAT_H-SELTEXT_L = TEXT-016.
T_FIELDCAT_H-SELTEXT_M = TEXT-016.
T_FIELDCAT_H-SELTEXT_S = TEXT-016.
T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN OTHERS.
CONTINUE.
ENDCASE.
MODIFY T_FIELDCAT_H.
CLEAR T_FIELDCAT_H.
ENDLOOP.
*BREAK-POINT.
MOVE T_FIELDCAT_H[] TO T_FIELDCAT[].
*----End
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = l_repid
i_callback_pf_status_set = 'SET_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_grid_title = l_title
is_layout = l_layout
it_fieldcat = t_fieldcat
i_save = 'A'
tables
t_outtab = T_FOR_DISP[]
exceptions
program_error = 1
others = 2.
IF SY-SUBRC <> 0.
WRITE:/ TEXT-017.
ENDIF.
ENDFORM. " SUB_DISPLAY_ALV
&----
*& Form TOP_OF_PAGE
&----
This subrouting is used to show heading to ALV Grid. This
subrouting is called from subrouting 'SUB_DISPLAY_ALV', Function
'REUSE_ALV_GRID_DISPLAY' & export param 'i_callback_top_of_page'
----
*Form TOP_OF_PAGE.
*
DATA : L_HEADER TYPE SLIS_T_LISTHEADER,
L_HEADER_H TYPE SLIS_LISTHEADER.
*
DATA : L_FROMDAT(10) TYPE C,
L_TODATE(10) TYPE C.
*
*CONSTANTS : C_DOT(1) TYPE C VALUE '.',
C_L_HEADER_H_TYP(1) VALUE 'H'. "---ALV Grid Header Type
*
CLEAR : L_HEADER.
*
**--To Manage Date Format
CONCATENATE S_DATE-LOW+6(2)
C_DOT
S_DATE-LOW+4(2)
C_DOT
S_DATE-LOW+0(4)
INTO L_FROMDAT.
**
CONCATENATE S_DATE-HIGH+6(2)
C_DOT
S_DATE-HIGH+4(2)
C_DOT
S_DATE-HIGH+0(4)
INTO L_TODATE.
**---End
*
*
IF L_TODATE <> '00.00.0000'.
CONCATENATE 'Purchase Org:'(014)
S_VKORG-LOW
'PO changes from'(015)
L_FROMDAT
'To'(013)
L_TODATE
INTO L_HEADER_H-INFO SEPARATED BY SPACE.
**
ELSE.
**
G_DATE = SY-DATUM.
CONCATENATE 'CHANGES: '
G_DATE
INTO L_HEADER_H-INFO SEPARATED BY SPACE.
ENDIF.
*
Main report header
L_HEADER_H-TYP = C_L_HEADER_H_TYP.
APPEND L_HEADER_H TO L_HEADER.
*
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = L_HEADER
I_LOGO = ''.
*
*ENDFORM. "TOP_OF_PAGE
Plz look into this and suggest me ..thanks a lot.
2007 Feb 21 8:29 AM
Hello,
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = l_repid<b>I_INTERNAL_TABNAME = 'T_FOR_DISP'</b>
I_INCLNAME = l_repid
CHANGING
CT_FIELDCAT = T_FIELDCAT[]
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.Let me knwo waht problem u r facing, already I have mentioned to change as above.
2007 Feb 21 8:59 AM
Hi,
right now i'm using the same logic.
If u didn't see the code i hav attached plz look into that and advice ..what i hav missed..
Thanx a lot..
2007 Feb 21 9:39 AM
Instead of types, try changing ur code to occurs 0.
DATA : BEGIN OF T_FOR_DISP OCCURS 0,
OBJCLASS LIKE CDHDR-OBJECTCLAS ,
OBJID LIKE CDHDR-OBJECTID ,
WERKS LIKE MARC-WERKS ,
VKORG LIKE MVKE-VKORG ,
VTWEG LIKE MVKE-VTWEG ,
DESC LIKE MARAV-MAKTX ,
TABNAME LIKE CDPOS-TABNAME ,
FNAME LIKE CDPOS-FNAME ,
CHNGIND LIKE CDPOS-CHNGIND ,
UDATE LIKE CDHDR-UDATE ,
USERNAME LIKE CDHDR-USERNAME ,
VALUE_OLD LIKE CDPOS-VALUE_OLD ,
VALUE_NEW LIKE CDPOS-VALUE_NEW ,
END OF T_FOR_DISP .
Pass T_FOR_DISP to MERGE fm.
2007 Feb 21 9:39 AM
Hi,
i copied and executed ur code in my system and its giving me the exact output.
No Change needed its working fine. Give some fields in the selection screen.
Select some entries for S_matnr, s_objclass, S_chngid, s_date, S_user from CDHDR.
Then run this prog it will give u the output.
I have pasted the same code
TYPE-POOLS : slis.
TABLES : cdhdr , " Change document header
cdpos , " Change document item
marav , " View Table for Logical DB MGM
marc , " Plant Data for Material
mvke . " Sales Data for Material
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF BLOCK general WITH FRAME TITLE text-002.
SELECT-OPTIONS :
s_objcls FOR cdhdr-objectclas ,
s_matnr FOR cdhdr-objectid ,
s_werks FOR marc-werks ,
s_vkorg FOR mvke-vkorg ,
s_vtweg FOR mvke-vtweg ,
s_tabnam FOR cdpos-tabname ,
s_fname FOR cdpos-fname ,
s_chgind FOR cdpos-chngind ,
s_date FOR cdhdr-udate ,
s_user FOR cdhdr-username .
SELECTION-SCREEN END OF BLOCK general.
SELECTION-SCREEN END OF BLOCK a.
*Data : G_WERKS LIKE MARC-WERKS ,
* G_VKORG LIKE MVKE-VKORG ,
* G_VTWEG LIKE MVKE-VTWEG ,
* G_DESC LIKE MARAV-MAKTX .
TYPES : BEGIN OF ty_for_disp ,
objclass LIKE cdhdr-objectclas ,
objid LIKE cdhdr-objectid ,
werks LIKE marc-werks ,
vkorg LIKE mvke-vkorg ,
vtweg LIKE mvke-vtweg ,
desc LIKE marav-maktx ,
tabname LIKE cdpos-tabname ,
fname LIKE cdpos-fname ,
chngind LIKE cdpos-chngind ,
udate LIKE cdhdr-udate ,
username LIKE cdhdr-username ,
value_old LIKE cdpos-value_old ,
value_new LIKE cdpos-value_new ,
END OF ty_for_disp .
TYPES : BEGIN OF ty_cdhdr,
objclass LIKE cdhdr-objectclas ,
objid LIKE cdhdr-objectid ,
* CHNGIND LIKE CDPOS-CHNGIND ,
changenr LIKE cdhdr-changenr ,
udate LIKE cdhdr-udate ,
username LIKE cdhdr-username ,
* VALUE_OLD LIKE CDPOS-VALUE_OLD ,
* VALUE_NEW LIKE CDPOS-VALUE_NEW ,
END OF ty_cdhdr .
TYPES : BEGIN OF ty_cdpos,
tabname LIKE cdpos-tabname ,
fname LIKE cdpos-fname ,
changenr LIKE cdhdr-changenr ,
chngind LIKE cdpos-chngind ,
tabkey LIKE cdpos-tabkey ,
fieldtext LIKE dfies-fieldtext,
* UDATE LIKE CDPOS-UDATE ,
* USERNAME LIKE CDPOS-USERNAME ,
value_old LIKE cdpos-value_old ,
value_new LIKE cdpos-value_new ,
END OF ty_cdpos .
* DATA : t_for_disp TYPE STANDARD TABLE OF ty_for_disp WITH HEADER
*LINE ,
DATA : t_for_disp TYPE STANDARD TABLE OF ty_for_disp WITH HEADER
LINE ,
t_cdhdr TYPE STANDARD TABLE OF ty_cdhdr
WITH HEADER LINE ,
t_cdpos TYPE STANDARD TABLE OF ty_cdpos
WITH HEADER LINE .
DATA : g_langu LIKE sy-langu,
g_tabix LIKE sy-tabix,
g_date LIKE sy-datum.
DATA : g_werks LIKE marc-werks ,
g_vkorg LIKE mvke-vkorg ,
g_vtweg LIKE mvke-vtweg ,
g_desc LIKE marav-maktx .
*------ALV Grid Field Catalog Fields
DATA: t_fieldcat TYPE slis_t_fieldcat_alv,
t_fieldcat_h LIKE t_fieldcat WITH HEADER LINE.
*t_fieldcat_h TYPE slis_t_fieldcat_alv.
*------End
CONSTANTS : c_material(10) VALUE 'MATERIAL' ,
c_objclass(10) VALUE 'OBJCLASS' ,
c_objectid(8) VALUE 'OBJID' ,
c_werks(5) VALUE 'WERKS' ,
c_vkorg(5) VALUE 'VKORG' ,
c_vtweg(5) VALUE 'VTWEG' ,
c_desc(4) VALUE 'DESC' ,
c_tabname(7) VALUE 'TABNAME' ,
c_fname(5) VALUE 'FNAME' ,
c_chngind(7) VALUE 'CHNGIND' ,
c_udate(5) VALUE 'UDATE' ,
c_username(8) VALUE 'USERNAME' ,
c_value_old(9) VALUE 'VALUE_OLD' ,
c_value_new(9) VALUE 'VALUE_NEW' .
*CONSTANTS: C_TABNAM_FOR_ALV_FM TYPE SLIS_TABNAME VALUE 'T_FOR_DISP'.
*************************************************
************ INITIALIZATION *****************
*************************************************
INITIALIZATION.
CLEAR: t_cdhdr,
t_cdpos,
t_fieldcat,
t_fieldcat_h,
t_for_disp.
REFRESH:t_cdhdr,
t_cdpos.
CLEAR : cdhdr, " Change document header
cdpos. " Change document items
******************************************************
****START-OF-SELECTION.
******************************************************
START-OF-SELECTION.
*-FETCHING DETAILS of Changes done
PERFORM sub_get_details.
* Get the field description.
* PERFORM SUB_CALL_DDIF_FIELDINFO_GET.
*********************************************************
****END-OF-SELECTION.
*********************************************************
END-OF-SELECTION.
*--DISPLAYING DATA IN ALV
PERFORM sub_display_alv.
*&---------------------------------------------------------------------*
*& Form SUB_GET_DETAILS
*&---------------------------------------------------------------------*
* This subrouting is used to get Final output which will shown in
* ALV Grid From Table CDPOS.
*----------------------------------------------------------------------*
FORM sub_get_details.
SELECT objectclas
objectid
changenr
udate
username
INTO TABLE t_cdhdr
FROM cdhdr
WHERE objectclas IN s_objcls
AND objectid IN s_matnr
* AND TABNAME IN S_TABNAM
* AND FNAME IN S_FNAME
* AND CHNGIND IN S_CHGIND
* AND UDATE IN S_DATE
AND udate IN s_date
AND username IN s_user .
IF sy-subrc <> 0.
WRITE:/ text-003.
ENDIF.
LOOP AT t_cdhdr.
CLEAR t_for_disp.
IF t_cdhdr-objclass = c_material.
SELECT SINGLE maktx
INTO g_desc
FROM marav
WHERE matnr = t_cdhdr-objid+0(18)
AND spras = sy-langu.
ENDIF.
t_for_disp-desc = g_desc.
CLEAR g_desc.
* CLEAR T_FOR_DISP.
t_for_disp-objclass = t_cdhdr-objclass .
t_for_disp-objid = t_cdhdr-objid .
t_for_disp-udate = t_cdhdr-udate .
t_for_disp-username = t_cdhdr-username .
*ENDIF.
* APPEND T_FOR_DISP.
* ENDLOOP.
*ENDIF.
SELECT
tabname
fname
changenr
chngind
tabkey
* UDATE
* USERNAME
value_old
value_new
FROM cdpos
INTO TABLE t_cdpos
FOR ALL ENTRIES IN t_cdhdr
* CDHDR~CHANGENR = CDPOS~CHANGENR
WHERE
changenr EQ t_cdhdr-changenr
AND tabname IN s_tabnam
AND fname IN s_fname
AND chngind IN s_chgind .
* AND UDATE IN S_DATE.
* AND OBJECTID IN S_DATE
* AND USERNAME IN S_USER .
IF sy-subrc <> 0.
WRITE:/ text-003.
ENDIF.
*CLEAR T_FOR_DISP.
READ TABLE t_cdpos
WITH KEY changenr = t_cdhdr-changenr.
CLEAR : g_werks,
g_vkorg,
g_vtweg.
* G_DESC .
IF t_cdpos-tabname = 'MARC'.
g_werks = t_cdpos-tabkey+21(4).
ENDIF.
CHECK g_werks IN s_werks.
IF sy-subrc = 0.
t_for_disp-werks = g_werks.
ENDIF.
IF t_cdpos-tabname = 'MVKE'.
g_vkorg = t_cdpos-tabkey+21(4).
ENDIF.
CHECK g_vkorg IN s_vkorg.
t_for_disp-vkorg = g_vkorg.
g_vtweg = t_cdpos-tabkey+25(2).
CHECK g_vtweg IN s_vtweg.
t_for_disp-vtweg = g_vtweg.
t_for_disp-tabname = t_cdpos-tabname.
t_for_disp-fname = t_cdpos-fname.
t_for_disp-chngind = t_cdpos-chngind.
t_for_disp-value_old = t_cdpos-value_old.
t_for_disp-value_new = t_cdpos-value_new.
APPEND t_for_disp.
* ENDLOOP.
ENDLOOP.
CLEAR t_for_disp.
ENDFORM. " SUB_GET_DETAILS
*&---------------------------------------------------------------------*
*& Form SUB_DISPLAY_ALV
*&---------------------------------------------------------------------*
* This Subroutine is used to display data to ALV Grid from internal *
* tables T_CDHDR & T_CDPOS. which is filled in subroutine *
* SUB_GET_DETAILS *
*----------------------------------------------------------------------*
FORM sub_display_alv .
BREAK-POINT.
DATA: l_layout TYPE slis_layout_alv,
l_title TYPE lvc_title,
l_repid LIKE sy-repid.
l_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = l_repid
i_internal_tabname = 'TY_FOR_DISP'
i_inclname = l_repid
CHANGING
ct_fieldcat = t_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE:/ 'ERROR IN CALLING ALV FM'.
ENDIF.
*----Change Field Heading We move All field data from T_FIELDCAT To
*----another Internal table with header line namely T_FIELDCAT_H
BREAK-POINT.
MOVE t_fieldcat[] TO t_fieldcat_h[].
LOOP AT t_fieldcat_h.
CASE t_fieldcat_h-fieldname.
WHEN c_objclass.
t_fieldcat_h-seltext_l = text-004.
t_fieldcat_h-seltext_m = text-004.
t_fieldcat_h-seltext_s = text-004.
* T_FIELDCAT_H-OUTPUTLEN = 15.
WHEN c_objectid.
t_fieldcat_h-seltext_l = text-005.
t_fieldcat_h-seltext_m = text-005.
t_fieldcat_h-seltext_s = text-005.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_desc.
t_fieldcat_h-seltext_l = text-006.
t_fieldcat_h-seltext_m = text-006.
t_fieldcat_h-seltext_s = text-006.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_werks.
t_fieldcat_h-seltext_l = text-007.
t_fieldcat_h-seltext_m = text-007.
t_fieldcat_h-seltext_s = text-007.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_vkorg.
t_fieldcat_h-seltext_l = text-008.
t_fieldcat_h-seltext_m = text-008.
t_fieldcat_h-seltext_s = text-008.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_vtweg.
t_fieldcat_h-seltext_l = text-009.
t_fieldcat_h-seltext_m = text-009.
t_fieldcat_h-seltext_s = text-009.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_tabname.
t_fieldcat_h-seltext_l = text-010.
t_fieldcat_h-seltext_m = text-010.
t_fieldcat_h-seltext_s = text-010.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_fname.
t_fieldcat_h-seltext_l = text-011.
t_fieldcat_h-seltext_m = text-011.
t_fieldcat_h-seltext_s = text-011.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_chngind.
t_fieldcat_h-seltext_l = text-012.
t_fieldcat_h-seltext_m = text-012.
t_fieldcat_h-seltext_s = text-012.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_udate.
t_fieldcat_h-seltext_l = text-013.
t_fieldcat_h-seltext_m = text-013.
t_fieldcat_h-seltext_s = text-013.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_username.
t_fieldcat_h-seltext_l = text-014.
t_fieldcat_h-seltext_m = text-014.
t_fieldcat_h-seltext_s = text-014.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_value_old.
t_fieldcat_h-seltext_l = text-015.
t_fieldcat_h-seltext_m = text-015.
t_fieldcat_h-seltext_s = text-015.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN c_value_new.
t_fieldcat_h-seltext_l = text-016.
t_fieldcat_h-seltext_m = text-016.
t_fieldcat_h-seltext_s = text-016.
* T_FIELDCAT_H-OUTPUTLEN = 20.
WHEN OTHERS.
CONTINUE.
ENDCASE.
MODIFY t_fieldcat_h.
* CLEAR T_FIELDCAT_H.
ENDLOOP.
*BREAK-POINT.
MOVE t_fieldcat_h[] TO t_fieldcat[].
*----End
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
* i_callback_pf_status_set = 'SET_STATUS'
* i_callback_user_command = 'USER_COMMAND'
* i_callback_top_of_page = 'TOP_OF_PAGE'
* i_grid_title = l_title
* is_layout = l_layout
it_fieldcat = t_fieldcat
* i_save = 'A'
TABLES
t_outtab = t_for_disp[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
* IF SY-SUBRC <> 0.
* WRITE:/ TEXT-017.
* ENDIF.
ENDFORM. " SUB_DISPLAY_ALVAs per my first reply u have corrected the tab name in CAPS thats all.
Hello reward suitable points, u have marked the thraed as solved on ur own.
Message was edited by:
Judith Jessie Selvi
2007 Feb 21 5:31 AM
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = l_repid
I_INTERNAL_TABNAME = 'T_FINAL'
I_INCLNAME = l_repid
CHANGING
<b>CT_FIELDCAT = T_FIELDCAT</b>
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
2007 Feb 21 6:23 AM
Hi Srikant,
Can you tell me how to create search help for fields.Please send me sample code for creating search help.
2007 Feb 21 8:23 AM
hello mohit dis is the code or search help on a field.
DATA : LT_RETURN TYPE DDSHRETVAL OCCURS 0 WITH HEADER LINE.
DATA : LS_F4 TYPE LVC_S_MODI,
WA_RETURN TYPE DDSHRETVAL.
DATA : LT_FIELD_TAB TYPE DFIES OCCURS 0 WITH HEADER LINE,
LT_MAPPING TYPE DSELC OCCURS 0 WITH HEADER LINE.
this itab will get populated n displayed when u press F4 on the field
TYPES : BEGIN OF itab,
(itab fields...)
END OF TT_IR_F4.
DATA : LT_F4 TYPE itab OCCURS 0,
LS_F4 TYPE itab.
SELECT *
INTO LS_F4
FROM tablename
ENDSELECT.
*
CLEAR : LT_FIELD_TAB.
REFRESH : LT_FIELD_TAB.
*
LT_FIELD_TAB-TABNAME = 'tablename'.
LT_FIELD_TAB-FIELDNAME = 'fieldname'.
LT_FIELD_TAB-OFFSET = offset.
LT_FIELD_TAB-INTLEN = initlen.
LT_FIELD_TAB-OUTPUTLEN = outputlen.
LT_FIELD_TAB-INTTYPE = 'C'.
LT_FIELD_TAB-SCRTEXT_M = 'text'.
APPEND LT_FIELD_TAB.
CLEAR : LT_FIELD_TAB.
(repeat this for number coulmns in the itab)
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'fieldname'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
VALUE_ORG = 'S'
tables
value_tab = LT_F4[]
FIELD_TAB = LT_FIELD_TAB[]
RETURN_TAB = LT_RETURN[]
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE LT_RETURN INTO WA_RETURN INDEX 1.
IF SY-SUBRC = 0.
fieldname = WA_RETURN-FIELDVAL.
ENDIF.
here the fieldname is the name of the field on which u want to have the search help.
plz reward if u find it helpful
Message was edited by:
ashwinee mali
Message was edited by:
ashwinee mali
2007 Feb 21 5:32 AM
Hi,
You have to give T_FINAL in caps..
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = l_repid
I_INTERNAL_TABNAME = <b>'T_FINAL'</b>
Check this example
TYPE-POOLS: slis.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: BEGIN OF wa_ekko,
ebeln like ekko-ebeln,
ekorg like ekko-ekorg,
ekgrp like ekko-ekgrp,
END OF wa_ekko.
DATA: v_repid TYPE syrepid.
v_repid = sy-repid.
DATA it_ekko LIKE STANDARD TABLE OF wa_ekko WITH HEADER LINE.
SELECT * UP TO 100 ROWS
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE it_ekko.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'WA_EKKO'
i_inclname = v_repid
CHANGING
ct_fieldcat = gt_fieldcat.
have hotspot for a PO.
DATA: s_fieldcat LIKE LINE OF gt_fieldcat.
s_fieldcat-hotspot = 'X'.
MODIFY gt_fieldcat FROM s_fieldcat TRANSPORTING hotspot
WHERE fieldname = 'EBELN'.
Pass the program.
v_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
it_fieldcat = gt_fieldcat
TABLES
t_outtab = it_ekko.
Thanks,
Naren
2007 Feb 21 5:50 AM
Hi Narendran,
It's gr8 to see ur contribution in sdn.
Can you plz solve a question:--
I have to generate a tcode.Which is basically instruction to buyer for purchaging some goods.
In which user have to some purchage some piece of material for a certain price.
Example: Instruction number,x(name of material) , 20(quantity), 900(total rupees buyer carry)
Now buyer have to purchage this product with in 900 Ruppes.This is basically instruction to buyer and this rate shd be varify first with this tcode.
Key field require are:
Instruction Number(shd not be duplicate)
Plant(mandatory)
Material code(mandatory)
Quantity(mandatory)
Max Rate(mandatory)
Min Rate(non mandatory)
Remarks
Vendor
Here validation requires
1. min rate > max rate
2. Instruction number shd not be duplicate.
Can you tell me how would i map this scenerio and whch table i shd use to find appropriate field.
Plz do it hurry.
2007 Feb 21 5:33 AM
2007 Feb 21 6:58 AM
Hi,
Give the table name 'T_Final' in Capital letters, 'T_FINAL'. This will solve your problem.
Regards,
Paul.