04-20-2009 11:53 AM
HI,
Runtime error in the below report as internal table IT_FIELDCAT is empty after the execution of FM
REUSE_ALV_FIELDCATALOG_MERGE.
Please tell me how do i rectify this error.
REPORT ZMY_ALV_COLORING_CELLS.
TYPE-POOLS SLIS.
DATA: BEGIN OF itab OCCURS 0,
BUKRS LIKE T001-BUKRS,
BUTXT LIKE T001-BUTXT,
END OF itab.
PARAMETERS: P_BUKRS TYPE TBUKRS.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_BUKRS.
PERFORM F4_FOR_BUKRS.
&----
*& Form F4_FOR_BUKRS
----
FORM F4_FOR_BUKRS.
DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV ,
ES_SELFIELD TYPE SLIS_SELFIELD. " Get data
SELECT BUKRS
BUTXT
FROM T001
INTO TABLE itab
up to 10 rows .
Get field
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'ITAB'
CHANGING
CT_FIELDCAT = IT_FIELDCAT[].
LOOP AT IT_FIELDCAT.
IT_FIELDCAT-KEY = SPACE.
IF IT_FIELDCAT-FIELDNAME = 'BUTXT'.
IT_FIELDCAT-EMPHASIZE = 'C710'.
ENDIF.
IF IT_FIELDCAT-FIELDNAME = 'BUKRS'.
IT_FIELDCAT-EMPHASIZE = 'C610'.
ENDIF.
MODIFY IT_FIELDCAT.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'THIS IS FOR F4 IN COLOR'
I_TABNAME = 'ITAB'
IT_FIELDCAT = IT_FIELDCAT[]
IMPORTING
ES_SELFIELD = ES_SELFIELD
TABLES
T_OUTTAB = ITAB .
Thanks,
Ahmed.
04-20-2009 12:02 PM
04-20-2009 12:03 PM
Well.. IT_FIELDCAT is not getting populated at all..
In the code which you have given.. i can see the declarations..and the loop on it.. but..where is it gettin populated..???
04-20-2009 12:07 PM
Hi,
Thanks for your reply
Actually it should get populate automatically by using the FM "Reuse_field_catalog_alv" but here it is not working.
I have one more demo also which is working by this FM.
Ahmed.
04-20-2009 12:17 PM
04-20-2009 12:24 PM
Hi,
Its simple: Do as follows:
1- create a new include for your report e.g :Z_DPA_INCLUDE
call the include i your report .
2- put the data declaration of internal table itab in the include
*& Include Z_DPA_INCLUDE
*&---------------------------------------------------------------------*
DATA: BEGIN OF itab OCCURS 0,
BUKRS LIKE T001-BUKRS,
BUTXT LIKE T001-BUTXT,
END OF itab.
3. pass the include name to the FM
data:lv_INCLNAME TYPE TRDIR-NAME.
lv_INCLNAME = 'Z_DPA_INCLUDE'.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INCLNAME = lv_INCLNAME
I_INTERNAL_TABNAME = 'ITAB'
CHANGING
CT_FIELDCAT = IT_FIELDCAT[].
It will work for sure.
Regards.
04-20-2009 12:21 PM
Hi Ahmed,
You can populate the data into field catalog using the below form
FORM build_fieldcatalog USING value(p_fieldname) TYPE c
value(p_tablename) TYPE c
value(p_length) TYPE i
value(p_text) TYPE c
value(p_do_sum)
value(p_data_type).
***Local data declaration.
DATA :lw_fieldcat TYPE slis_fieldcat_alv,
l_count TYPE i.
l_count = l_count + 1.
CLEAR lw_fieldcat.
lw_fieldcat-col_pos = l_count.
lw_fieldcat-fieldname = p_fieldname.
lw_fieldcat-tabname = p_tablename.
lw_fieldcat-outputlen = p_length.
lw_fieldcat-reptext_ddic = p_text.
lw_fieldcat-do_sum = p_do_sum.
lw_fieldcat-datatype = p_data_type.
APPEND lw_fieldcat TO gt_field_cat.
ENDFORM. " build_fieldcatalog
and for adding the required fields for output u can just use the below PERFORM stmt followed by column names, internal table name, size of the field and any texts if required.
PERFORM build_fieldcatalog USING :
'KUNNR' 'GT_OUTPUT' 10 text-001 '' '',
'NAME1' 'GT_OUTPUT' 30 text-002 '' '',
'NAME2' 'GT_OUTPUT' 10 text-003 '' ''.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
it_fieldcat = gt_field_cat[]
TABLES
t_outtab = gt_output[].
04-20-2009 12:22 PM
Hi,
wht exactly u wanted to do? u r trying for any F4 help for BUKRS or Company Code field?
if so, you should call below FM...
SELECT epstp
ptext FROM t163x
INTO TABLE it_t163x
WHERE spras = sy-langu.
v_retfield = 'EPSTP'.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = v_retfield
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'P_EPSTP'
window_title = 'PO Item Category'
value_org = 'S'
callback_program = sy-repid
TABLES
VALUE_TAB = it_t163x[]
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
Kindly let us know what exactly u want...
Regards,
Pavan
04-20-2009 12:37 PM
hi,
REPORT ZMY_ALV_COLORING_CELLS.
TYPE-POOLS slis.
DATA: BEGIN OF itab OCCURS 0,
bukrs LIKE t001-bukrs,
butxt LIKE t001-butxt,
END OF itab.
PARAMETERS: p_bukrs TYPE tbukrs.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_bukrs.
PERFORM f4_for_bukrs.
" &----------------------------------------------------------------
"& Form F4_FOR_BUKRS
" -----------------------------------------------------------------
FORM f4_for_bukrs.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv ,
wa_fieldcat TYPE slis_fieldcat_alv, "--> Create a work Area for it_fieldcat
es_selfield TYPE slis_selfield. " Get data
SELECT bukrs
butxt
FROM t001
INTO TABLE itab
UP TO 10 ROWS .
* Get field
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'ITAB'
i_inclname = sy-repid "---> add this parameter in your FM
CHANGING
ct_fieldcat = it_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
LOOP AT it_fieldcat INTO wa_fieldcat.
wa_fieldcat-key = space.
IF wa_fieldcat-fieldname = 'BUTXT'.
wa_fieldcat-emphasize = 'C710'.
ENDIF.
IF wa_fieldcat-fieldname = 'BUKRS'.
wa_fieldcat-emphasize = 'C610'.
ENDIF.
MODIFY it_fieldcat INDEX sy-tabix FROM wa_fieldcat TRANSPORTING
key emphasize. "---> use this modify statement
* MODIFY it_fieldcat.
ENDLOOP.
BREAK-POINT.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
i_title = 'THIS IS FOR F4 IN COLOR'
i_tabname = 'ITAB'
it_fieldcat = it_fieldcat[]
IMPORTING
es_selfield = es_selfield
TABLES
t_outtab = itab.
ENDFORM. "f4_for_bukrs
Thanks & Regards
04-20-2009 12:59 PM
Change like this
>
> HI,
>
> Runtime error in the below report as internal table IT_FIELDCAT is empty after the execution of FM
> REUSE_ALV_FIELDCATALOG_MERGE.
>
> Please tell me how do i rectify this error.
>
>
>
> REPORT ZMY_ALV_COLORING_CELLS.
> TYPE-POOLS SLIS.
>
> DATA: BEGIN OF itab OCCURS 0,
> BUKRS LIKE T001-BUKRS,
> BUTXT LIKE T001-BUTXT,
> END OF itab.
>
> PARAMETERS: P_BUKRS TYPE TBUKRS.
>
> AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_BUKRS.
>
>
> PERFORM F4_FOR_BUKRS.
> &----
> *& Form F4_FOR_BUKRS
> ----
> FORM F4_FOR_BUKRS.
>
> DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV ,
> ES_SELFIELD TYPE SLIS_SELFIELD. " Get data
>
> SELECT BUKRS
> BUTXT
> FROM T001
> INTO TABLE itab
> up to 10 rows .
> * Get field
>
> CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
> EXPORTING
> I_PROGRAM_NAME = SY-REPID
>* I_INTERNAL_TABNAME = 'ITAB'
> I_STRUCTURE_NAME = 'ITAB'
> CHANGING
> CT_FIELDCAT = IT_FIELDCAT[].
>
> LOOP AT IT_FIELDCAT.
> IT_FIELDCAT-KEY = SPACE.
> IF IT_FIELDCAT-FIELDNAME = 'BUTXT'.
> IT_FIELDCAT-EMPHASIZE = 'C710'.
> ENDIF.
> IF IT_FIELDCAT-FIELDNAME = 'BUKRS'.
> IT_FIELDCAT-EMPHASIZE = 'C610'.
> ENDIF.
>
> MODIFY IT_FIELDCAT.
> ENDLOOP.
>
> CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
> EXPORTING
> I_TITLE = 'THIS IS FOR F4 IN COLOR'
> I_TABNAME = 'ITAB'
> IT_FIELDCAT = IT_FIELDCAT[]
> IMPORTING
> ES_SELFIELD = ES_SELFIELD
> TABLES
> T_OUTTAB = ITAB .
>
>
>
>
>
> Thanks,
> Ahmed.
Rhea