09-02-2008 1:46 PM
Hello,
I have created a field catalogue using FM REUSE_ALV_FIELDCATALOG_MERGE. Field catalog gets generated but all the fields are not present in this. Can anyone tell me, why is this happening?
Here is my Delartion and Code.
Declaration :
BEGIN OF i_set_mseg_temp OCCURS 100,
kostl like csks-kostl,
ltext like cskt-ltext,
extsrvno like esll-extsrvno,
sites like setleaf-setname,
proj(5) type c,
phase(2) type c,
lifnr like mseg-lifnr,
ebeln like mseg-ebeln,
sgtxt like mseg-sgtxt,
sakto like mseg-sakto,
erfme like mseg-erfme,
perio(2) TYPE c,
blart like rbkp-blart,
belnr like rseg-belnr,
userf2_txt like esll-userf2_txt,
valfrom like setleaf-valfrom,
kokrs like mseg-kokrs,
bukrs like mseg-bukrs,
mblnr like mseg-mblnr,
mjahr like mseg-mjahr,
lfbnr like mseg-lfbnr,
lfpos like mseg-lfpos,
shkzg like mseg-shkzg,
ps_psp_pnr like mseg-ps_psp_pnr,
dmbtr like mseg-dmbtr,
menge like mseg-menge,
year(4) type c,
extrow like esll-extrow,
bsart like ekko-bsart,
posid like prps-posid,
packno like essr-packno,
budat like essr-budat,
sub_packno like esll-sub_packno,
userf2_num like esll-userf2_num,
peinh like esll-peinh,
gjahr like rseg-gjahr,
rshkzg like rseg-shkzg,
wrbtr like rseg-wrbtr,
rmenge like rseg-menge,
suserf2_num like esll-userf2_num,
sdmbtr like mseg-dmbtr,
swrbtr like rseg-wrbtr,
avg_price like rseg-wrbtr,
savg_price like rseg-wrbtr,
END OF i_set_mseg_temp.
Code :
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'I_SET_MSEG_TEMP'
i_structure_name =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = sy-repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = i_fldcat[]
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.
09-02-2008 2:45 PM
it is working fine for me.
REPORT ztest_fieldcatalog.
TYPE-POOLS: slis.
DATA: i_fldcat TYPE slis_t_fieldcat_alv.
DATA: BEGIN OF i_set_mseg_temp OCCURS 0,
kostl LIKE csks-kostl,
ltext LIKE cskt-ltext,
extsrvno LIKE esll-extsrvno,
sites LIKE setleaf-setname,
proj(5) TYPE c,
phase(2) TYPE c,
lifnr LIKE mseg-lifnr,
ebeln LIKE mseg-ebeln,
sgtxt LIKE mseg-sgtxt,
sakto LIKE mseg-sakto,
erfme LIKE mseg-erfme,
perio(2) TYPE c,
blart LIKE rbkp-blart,
belnr LIKE rseg-belnr,
userf2_txt LIKE esll-userf2_txt,
valfrom LIKE setleaf-valfrom,
kokrs LIKE mseg-kokrs,
bukrs LIKE mseg-bukrs,
mblnr LIKE mseg-mblnr,
mjahr LIKE mseg-mjahr,
lfbnr LIKE mseg-lfbnr,
lfpos LIKE mseg-lfpos,
shkzg LIKE mseg-shkzg,
ps_psp_pnr LIKE mseg-ps_psp_pnr,
dmbtr LIKE mseg-dmbtr,
menge LIKE mseg-menge,
year(4) TYPE c,
extrow LIKE esll-extrow,
bsart LIKE ekko-bsart,
posid LIKE prps-posid,
packno LIKE essr-packno,
budat LIKE essr-budat,
sub_packno LIKE esll-sub_packno,
userf2_num LIKE esll-userf2_num,
peinh LIKE esll-peinh,
gjahr LIKE rseg-gjahr,
rshkzg LIKE rseg-shkzg,
wrbtr LIKE rseg-wrbtr,
rmenge LIKE rseg-menge,
suserf2_num LIKE esll-userf2_num,
sdmbtr LIKE mseg-dmbtr,
swrbtr LIKE rseg-wrbtr,
avg_price LIKE rseg-wrbtr,
savg_price LIKE rseg-wrbtr,
END OF i_set_mseg_temp.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'I_SET_MSEG_TEMP'
i_inclname = sy-repid
CHANGING
ct_fieldcat = i_fldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
break-point.
09-02-2008 2:00 PM
Use the function module like below it works...
DATA : incl_name LIKE trdir-name VALUE '(Your program name )'.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'I_SET_MSEG_TEMP'
i_inclname = incl_name
CHANGING
ct_fieldcat = i_fldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
Thanks,
Karthik
09-02-2008 2:03 PM
09-02-2008 2:11 PM
09-02-2008 2:17 PM
It works for me ...
Why dont give us the exact error your getting...
Try changing the itab with occurs 0
like below this might workout
BEGIN OF i_set_mseg_temp OCCURS 0,
Thanks,
Karthik
09-02-2008 2:24 PM
I changed to to occurs 0 as well. Didnt work.
Exact problem being : I have approx 25 fields in my internal table(I_SET_MSEG_TEMP ) of which I have to fill in field catalalog. When I use FM REUSE_ALV_FIELDCATALOG_MERGE, only 5 fields are filled in field catalog. These five field are marked in bold,
kostl like csks-kostl,
ltext like cskt-ltext,
extsrvno like esll-extsrvno,
sites like setleaf-setname,
proj(5) type c,
phase(2) type c,
lifnr like mseg-lifnr,
ebeln like mseg-ebeln,
sgtxt like mseg-sgtxt,
sakto like mseg-sakto,
erfme like mseg-erfme,
perio(2) TYPE c,
blart like rbkp-blart,
belnr like rseg-belnr,
userf2_txt like esll-userf2_txt,
valfrom like setleaf-valfrom,
kokrs like mseg-kokrs,
bukrs like mseg-bukrs,
mblnr like mseg-mblnr,
mjahr like mseg-mjahr,
lfbnr like mseg-lfbnr,
lfpos like mseg-lfpos,
shkzg like mseg-shkzg,
ps_psp_pnr like mseg-ps_psp_pnr,
dmbtr like mseg-dmbtr,
menge like mseg-menge,
year(4) type c,
extrow like esll-extrow,
bsart like ekko-bsart,
posid like prps-posid,
packno like essr-packno,
budat like essr-budat,
sub_packno like esll-sub_packno,
userf2_num like esll-userf2_num,
peinh like esll-peinh,
gjahr like rseg-gjahr,
rshkzg like rseg-shkzg,
wrbtr like rseg-wrbtr,
rmenge like rseg-menge,
suserf2_num like esll-userf2_num,
sdmbtr like mseg-dmbtr,
swrbtr like rseg-wrbtr,
avg_price like rseg-wrbtr,
savg_price like rseg-wrbtr,
END OF i_set_mseg_temp.
I am not able to understand why other fields are not filled in field catalog.
09-02-2008 2:45 PM
it is working fine for me.
REPORT ztest_fieldcatalog.
TYPE-POOLS: slis.
DATA: i_fldcat TYPE slis_t_fieldcat_alv.
DATA: BEGIN OF i_set_mseg_temp OCCURS 0,
kostl LIKE csks-kostl,
ltext LIKE cskt-ltext,
extsrvno LIKE esll-extsrvno,
sites LIKE setleaf-setname,
proj(5) TYPE c,
phase(2) TYPE c,
lifnr LIKE mseg-lifnr,
ebeln LIKE mseg-ebeln,
sgtxt LIKE mseg-sgtxt,
sakto LIKE mseg-sakto,
erfme LIKE mseg-erfme,
perio(2) TYPE c,
blart LIKE rbkp-blart,
belnr LIKE rseg-belnr,
userf2_txt LIKE esll-userf2_txt,
valfrom LIKE setleaf-valfrom,
kokrs LIKE mseg-kokrs,
bukrs LIKE mseg-bukrs,
mblnr LIKE mseg-mblnr,
mjahr LIKE mseg-mjahr,
lfbnr LIKE mseg-lfbnr,
lfpos LIKE mseg-lfpos,
shkzg LIKE mseg-shkzg,
ps_psp_pnr LIKE mseg-ps_psp_pnr,
dmbtr LIKE mseg-dmbtr,
menge LIKE mseg-menge,
year(4) TYPE c,
extrow LIKE esll-extrow,
bsart LIKE ekko-bsart,
posid LIKE prps-posid,
packno LIKE essr-packno,
budat LIKE essr-budat,
sub_packno LIKE esll-sub_packno,
userf2_num LIKE esll-userf2_num,
peinh LIKE esll-peinh,
gjahr LIKE rseg-gjahr,
rshkzg LIKE rseg-shkzg,
wrbtr LIKE rseg-wrbtr,
rmenge LIKE rseg-menge,
suserf2_num LIKE esll-userf2_num,
sdmbtr LIKE mseg-dmbtr,
swrbtr LIKE rseg-wrbtr,
avg_price LIKE rseg-wrbtr,
savg_price LIKE rseg-wrbtr,
END OF i_set_mseg_temp.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'I_SET_MSEG_TEMP'
i_inclname = sy-repid
CHANGING
ct_fieldcat = i_fldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
break-point.
09-02-2008 2:53 PM
it works for everybody other than you .... Hmmmmm I dont know why ?????????????
09-02-2008 3:37 PM
hi,
try this change and check it
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-cprog i_internal_tabname = 'I_SET_MSEG_TEMP'
i_inclname = sy-cprog
CHANGING
ct_fieldcat = i_fldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
regards
padma
09-05-2008 9:28 AM
Hi there
Why don't you let the system do all the hard work using the RTTI (run time Information facility)
data gv_rtti_struc type ref to cl_abap_structdescr .
data: zog like line of gv_rtti_struc->components .
data: zogt like table of zog,
data: dref type ref to data.
* field catalogs for the display
wa_it_fldcat type lvc_s_fcat,
it_fldcat type lvc_t_fcat,
create data dref type 'YOUR STRUCTURE' can be any structure you like
assign dref->* to <fs>.
gv_rtti_struc ?= cl_abap_structdescr=>describe_by_data( <fs> ).
* get the structure details into a table.
* table zogt[] contains the structure details
* From which you can can build your field catalog
zogt[] = gv_rtti_struc->components.
loop at zogt into zog.
clear wa_it_fldcat.
wa_it_fldcat-fieldname = zog-name .
wa_it_fldcat-datatype = zog-type_kind.
wa_it_fldcat-inttype = zog-type_kind.
wa_it_fldcat-intlen = zog-length.
wa_it_fldcat-decimals = zog-decimals.
wa_it_fldcat-coltext = zog-name.
wa_it_fldcat-lowercase = 'X'.
append wa_it_fldcat to it_fldcat.
endloop.
*
An extra advantage of doing it this way is that the number of lines in the table ZOGT is the number of elements in your structure which can be useful for manipulating parts of the structure at run time.
This method works for ANY structure so you could build a class to use in any program
call method go_fldcat->create_fld_cat
exporting
your_struct = <fs1>
changing
fld_cat = it_fldcat.
cheers
jimbo