‎2006 Jun 27 6:27 PM
Hi,
I am doing a alv report using user command, It is going to dump. It is giving me the error "Field symbol has not yet been assigned". Below is my code.
&----
*& Report ZTEST07
*&
&----
*&
*&
&----
REPORT ZTEST07 NO STANDARD PAGE HEADING LINE-SIZE 650
.
TYPE-POOLS : SLIS.
TABLES : BSEG.
TYPES : BEGIN OF I_BSEG,
BELNR LIKE BSEG-BELNR,
BUKRS LIKE BSEG-BUKRS,
GJAHR LIKE BSEG-GJAHR,
END OF I_BSEG.
Internal table for bseg first primary alv report.
DATA : IT_BSEG TYPE STANDARD TABLE OF I_BSEG INITIAL SIZE 0,
WA_BSEG TYPE I_BSEG.
TYPES : BEGIN OF I_BSEG1,
BELNR LIKE BSEG-BELNR,
DMBTR LIKE BSEG-DMBTR,
END OF I_BSEG1.
DATA : IT_BSEG1 TYPE STANDARD TABLE OF I_BSEG1 INITIAL SIZE 0,
WA_BSEG1 TYPE I_BSEG1.
*variable for report Id.
DATA : V_REPID LIKE SY-REPID.
DATA : I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA : IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
*declaration for events table where user command or set pf status will
*be defined.
DATA : V_EVENTS TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.
*declaration for layout.
DATA : ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
*declaration for variant (type of display we want)
DATA : I_VARIANT TYPE DISVARIANT,
I_VARIANT1 TYPE DISVARIANT,
I_SAVE(1) TYPE C.
Title displayed when the alv list is displayed
DATA : I_TITLE_BSEG1 TYPE LVC_TITLE VALUE 'First List Displayed'.
DATA : I_TITLE_BSEG2 TYPE LVC_TITLE VALUE 'Second List Displayed'.
INITIALIZATION.
V_REPID = SY-REPID.
PERFORM BUILD_FIELDCATLOG.
PERFORM EVENT_CALL.
PERFORM POPULATE_EVENT.
START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_REPORT.
&----
*& Form build_fieldcatlog
&----
text
----
FORM BUILD_FIELDCATLOG.
WA_FIELDCAT-TABNAME = 'it_bseg'.
WA_FIELDCAT-FIELDNAME = 'belnr'.
WA_FIELDCAT-SELTEXT_M = 'Doc Number'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'it_bseg'.
WA_FIELDCAT-FIELDNAME = 'bukrs'.
WA_FIELDCAT-SELTEXT_M = 'Company Code'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'it_bseg'.
WA_FIELDCAT-FIELDNAME = 'gjahr'.
WA_FIELDCAT-SELTEXT_M = 'Fiscal Year'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "build_fieldcatlog
&----
*& Form event_call
&----
text
----
FORM EVENT_CALL.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_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.
ENDFORM. "event_call
&----
*& Form populate_event
&----
text
----
FORM POPULATE_EVENT.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-FORM.
ENDIF.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'USER_COMMAND'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-NAME.
ENDIF.
ENDFORM. "populate_event
&----
*& Form data_retrieVAL
&----
text
----
FORM DATA_RETRIEVAL.
SELECT BELNR BUKRS GJAHR UP TO 10 ROWS FROM BSEG INTO TABLE IT_BSEG.
ENDFORM. "data_retrieVAL
&----
*& Form BUILD_LISTHEADER
&----
text
----
-->I_LISTHEADEtext
----
FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA HLINE TYPE SLIS_LISTHEADER.
HLINE-INFO = 'THIS IS MY FIRST ALV PRG'.
HLINE-TYP = 'H'.
ENDFORM. "BUILD_LISTHEADER
&----
*& Form DISPLAY_ALV_REPORT
&----
text
----
FORM DISPLAY_ALV_REPORT.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_BSEG1
IT_FIELDCAT = I_FIELDCAT[]
I_SAVE = 'A'
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_BSEG
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.
ENDFORM. "DISPLAY_ALV_REPORT
&----
*& Form TOP_OF_PAGE
&----
text
----
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
I_LOGO =
I_END_OF_LIST_GRID =
I_ALV_FORM =
.
ENDFORM. "TOP_OF_PAGE
&----
*& Form USER_COMMAND
&----
text
----
-->R_UCOMM text
----
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_BSEG INTO WA_BSEG INDEX RS_SELFIELD-TABINDEX.
PERFORM BUILD_FIELDCATLOG_BSEG1.
PERFORM EVENT_CALL_BSEG1.
PERFORM POPULATE_EVENT_BSEG1.
PERFORM DATA_RETRIEVAL_BSEG1.
PERFORM BUILD_LISTHEADER_BSEG1 USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_BSEG1.
ENDCASE.
ENDFORM. "USER_COMMAND
&----
*& Form BUILD_FIELDCATLOG_BSEG1
&----
text
----
FORM BUILD_FIELDCATLOG_BSEG1.
WA_FIELDCAT-TABNAME = 'it_bseg1'.
WA_FIELDCAT-FIELDNAME = 'belnr'.
WA_FIELDCAT-SELTEXT_M = 'Doc Number'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'it_bseg1'.
WA_FIELDCAT-FIELDNAME = 'belnr'.
WA_FIELDCAT-SELTEXT_M = 'Doc Number'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG_BSEG1
&----
*& Form EVENT_CALL_BSEG1
&----
text
----
FORM EVENT_CALL_BSEG1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_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.
ENDFORM. "EVENT_CALL_BSEG1
&----
*& Form POPULATE_EVENT_BSEG1
&----
text
----
FORM POPULATE_EVENT_BSEG1.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-FORM.
ENDIF.
ENDFORM. "POPULATE_EVENT_BSEG1
&----
*& Form F_TOP_OF_PAGE
&----
text
----
FORM F_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
I_LOGO =
I_END_OF_LIST_GRID =
I_ALV_FORM =
.
ENDFORM. "F_TOP_OF_PAGE
&----
*& Form DATA_RETRIEVAL_BSEG1
&----
text
----
FORM DATA_RETRIEVAL_BSEG1.
SELECT BELNR DMBTR FROM BSEG INTO TABLE IT_BSEG1.
ENDFORM. "DATA_RETRIEVAL_BSEG1
&----
*& Form BUILD_LISTHEADER_BSEG1
&----
text
----
-->I_LISTHEADEtext
----
FORM BUILD_LISTHEADER_BSEG1 USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA : HLINE1 TYPE SLIS_LISTHEADER.
HLINE1-TYP = 'H'.
HLINE1-INFO = 'CHECKING PRG'.
ENDFORM. "BUILD_LISTHEADER_BSEG1
&----
*& Form DISPLAY_ALV_BSEG1
&----
text
----
FORM DISPLAY_ALV_BSEG1.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = I_TITLE_BSEG2
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT =
IT_EVENTS = V_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 = IT_BSEG1
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.
ENDFORM. "DISPLAY_ALV_BSEG1
Please help me out.
Thanks,
Pavan.
‎2006 Jun 27 6:30 PM
hi Pavan
Change the Bolded ones in to caps and give a try
<b>WA_FIELDCAT-TABNAME = 'IT_BSEG'.
WA_FIELDCAT-FIELDNAME = 'BELNR'.</b>
<b>WA_FIELDCAT-SELTEXT_M = 'DOC NUMBER'.</b>
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
<b>WA_FIELDCAT-TABNAME = 'IT_BSEG'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.</b>
<b>WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.</b>
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
<b>WA_FIELDCAT-TABNAME = 'IT_BSEG'.
WA_FIELDCAT-FIELDNAME = 'GJAHR'.</b>
<b>WA_FIELDCAT-SELTEXT_M = 'FISCAL YEAR'.</b>
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
Regards,
Santosh
‎2006 Jun 27 6:31 PM
When building your field catalog, please make sure to use upper case values for TABNAME and FIELDNAME.
<b>*WA_FIELDCAT-TABNAME = 'it_bseg1'.
*WA_FIELDCAT-FIELDNAME = 'belnr'.
WA_FIELDCAT-TABNAME = 'IT_BSEG1'.
WA_FIELDCAT-FIELDNAME = 'BELNR'.</b>
WA_FIELDCAT-SELTEXT_M = 'Doc Number'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
Regards,
Rich Heilman
‎2006 Jun 27 6:32 PM
Hi Pavan,
I have executed your program it is
working fine, but i think there is no data
in the server u r working
But check once build fieldcatalog_bseg1.
you are declaring in caps and giving it without caps.
check it once,
Regards,
Laxmi.
Message was edited by: Laxmi
‎2006 Jun 27 6:38 PM
If i change the FORM like so, i am now getting data.
No need to push the TABNAME, but the FIELDNAMEs must be capitalized.
form build_fieldcatlog.
<b>* wa_fieldcat-tabname = 'it_bseg'.
wa_fieldcat-fieldname = 'BELNR'.</b>
wa_fieldcat-seltext_m = 'Doc Number'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
<b>* wa_fieldcat-tabname = 'it_bseg'.
wa_fieldcat-fieldname = 'BUKRS'.</b>
wa_fieldcat-seltext_m = 'Company Code'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
<b>* wa_fieldcat-tabname = 'it_bseg'.
wa_fieldcat-fieldname = 'GJAHR'.</b>
wa_fieldcat-seltext_m = 'Fiscal Year'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
endform. "build_fieldcatlog
Regards,
Rich Heilman
‎2006 Jun 27 6:53 PM
HI PAVAN,
WA_FIELDCAT-TABNAME = 'it_bseg'.
WA_FIELDCAT-FIELDNAME = <b>'BELNR'</b>.
WA_FIELDCAT-SELTEXT_M = 'Doc Number'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'it_bseg'.
WA_FIELDCAT-FIELDNAME = <b>'BUKRS'</b>.
WA_FIELDCAT-SELTEXT_M = 'Company Code'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'it_bseg'.
WA_FIELDCAT-FIELDNAME = <b>'GJAHR'</b>.
WA_FIELDCAT-SELTEXT_M = 'Fiscal Year'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
‎2006 Jun 27 7:16 PM
Hi All,
Thanks for your early response and works very fine.
Please let me know how to keep hot spot in this program, because I need the amount for that particular document number, whereas is in my program it is giving all.
Please help me out.
Thanks,
Pavan.
‎2006 Jun 27 7:28 PM
Hi pavan,
here is a good sample code in the link,heck it once:
http://www.sap-basis-abap.com/sapab033.htm
reward if it helps.
regards,
keerthi.
‎2006 Jun 28 3:02 PM
Hi,
Can anyone tell me how to add the hot spot in the above code.
Thanks,
Pavan.
‎2006 Jun 28 3:05 PM
In the field catalog for the field
WA_FIELDCAT-HOTSPOT = 'X'.
You need to activate the events to handle the event.
Regards
Ravi
‎2006 Jun 28 3:24 PM
Hi pavan,
report ztest_alv_check message-id zz .
type-pools: slis.
data: x_fieldcat type slis_fieldcat_alv,
it_fieldcat type slis_t_fieldcat_alv,
l_layout type slis_layout_alv,
x_events type slis_alv_event,
it_events type slis_t_event.
data: begin of itab occurs 0,
vbeln like vbak-vbeln,
posnr like vbap-posnr,
chk(1),
end of itab.
select vbeln
posnr
from vbap
up to 20 rows
into table itab.
x_fieldcat-fieldname = 'CHK'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 1.
x_fieldcat-input = 'X'.
x_fieldcat-edit = 'X'.
x_fieldcat-checkbox = 'X'.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
x_fieldcat-fieldname = 'VBELN'.
x_fieldcat-seltext_l = 'VBELN'.
<b>x_fieldcat-hotspot = 'X'.</b>
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 2.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
x_fieldcat-fieldname = 'POSNR'.
x_fieldcat-seltext_l = 'POSNR'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = 3.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = sy-repid
is_layout = l_layout
<b> i_callback_pf_status_set = 'STATUS'
i_callback_user_command = 'USER_COMMAND'</b>
it_fieldcat = it_fieldcat
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.
<b>form status using p_extab type slis_t_extab.
*- Pf status
set pf-status 'STATUS'. "enable F2 key ,give okcode &IC1
endform. " STATUS
form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when 'BACK' or 'CANC' or 'EXIT'.
leave to screen 0.
when '&IC1'.
if rs_selfield-fieldname = 'VBELN'.
set parameter id 'AUN' field rs_selfield-value.
call transaction 'VA03' and skip first screen.
endif.
endcase.
endform. "USER_COMMAND</b>
Regards
vijay
‎2006 Jun 28 5:08 PM
Hi Pavan and all other ALVers,
what about 2 smart form routines to create a valid and useful fieldcatalog for an internal table of any structure, just pass the table to be displayed and get back the field catalog:
(If you need it for grid control, just use FUNCTION 'LVC_TRANSFER_FROM_SLIS' to get the field catalog in OO LVC format)
<pre>
&----
*& Form ALV_FIELDCAT_FOR_ITAB
&----
Feldkatalog from (arbitrary) internal Table (c) Clemens Li
* build field catalog from type description
----
FORM alv_fieldcat_for_itab "#EC *
TABLES pt_outtab TYPE table "#EC *
CHANGING pt_alv_fieldcat TYPE slis_t_fieldcat_alv."#EC *
DATA:
l_desc TYPE sydes_desc,
l_alv_fieldcat TYPE slis_fieldcat_alv,
l_longfield TYPE fname.
FIELD-SYMBOLS:
<typeinfo> TYPE sydes_typeinfo,
<nameinfo> TYPE sydes_nameinfo.
DESCRIBE FIELD pt_outtab INTO l_desc. "#EC *
LOOP AT l_desc-types
ASSIGNING <typeinfo>
WHERE NOT idx_name IS INITIAL
AND table_kind IS INITIAL "no entries for deep table like color
AND back = 1. "top-level-entries only.
READ TABLE l_desc-names INDEX <typeinfo>-idx_name
ASSIGNING <nameinfo>.
CHECK <nameinfo>-name <> 'INCLUDE'.
l_alv_fieldcat-fieldname = <nameinfo>-name.
WHILE NOT <nameinfo>-continue IS INITIAL.
ADD 1 TO <typeinfo>-idx_name.
READ TABLE l_desc-names INDEX <typeinfo>-idx_name
ASSIGNING <nameinfo>.
CONCATENATE
l_alv_fieldcat-fieldname
<nameinfo>-name
INTO l_alv_fieldcat-fieldname.
ENDWHILE." not <nameinfo>-continue IS INITIAL.
READ TABLE l_desc-names INDEX <typeinfo>-idx_help_id
ASSIGNING <nameinfo>.
IF sy-subrc = 0.
Caution: Help-ID may be Tablename-Fieldname and thus longer
than 30 Chars; l_alv_fieldcat-rollname is 30 Chars only
l_alv_fieldcat-rollname = <nameinfo>-name.
l_longfield = <nameinfo>-name.
WHILE NOT <nameinfo>-continue IS INITIAL.
ADD 1 TO <typeinfo>-idx_help_id.
READ TABLE l_desc-names INDEX <typeinfo>-idx_help_id
ASSIGNING <nameinfo>.
CONCATENATE
l_longfield
<nameinfo>-name
INTO l_longfield.
ENDWHILE." not l_desc-continue is initial.
help id may be data element or <table>-<field>
IF l_longfield CA '-'.
get data type for table field
PERFORM get_rollname_4_tabfield
USING l_longfield CHANGING l_alv_fieldcat.
ENDIF." l_longfield ca '-'.
ELSE.
No Help-ID: Use Fieldname as text
l_alv_fieldcat-seltext_s =
l_alv_fieldcat-seltext_m =
l_alv_fieldcat-seltext_l =
l_alv_fieldcat-reptext_ddic =
<nameinfo>-name.
ENDIF." sy-subrc = 0.
Starting 4.7: get edit mask
IF NOT <typeinfo>-idx_edit_mask IS INITIAL.
READ TABLE l_desc-names INDEX <typeinfo>-idx_edit_mask
ASSIGNING <nameinfo>.
l_alv_fieldcat-edit_mask = <nameinfo>-name.
IF NOT <nameinfo>-continue IS INITIAL.
ADD 1 TO <typeinfo>-idx_edit_mask.
READ TABLE l_desc-names INDEX <typeinfo>-idx_edit_mask
ASSIGNING <nameinfo>.
CONCATENATE
l_alv_fieldcat-edit_mask
<nameinfo>-name
INTO l_alv_fieldcat-edit_mask.
ENDIF." not <nameinfo>-continue IS INITIAL.
ENDIF." not <typeinfo>-IDX_EDIT_MASK is initial.
assign length, output length and decimals
l_alv_fieldcat-intlen = <typeinfo>-length.
l_alv_fieldcat-outputlen = <typeinfo>-output_length.
l_alv_fieldcat-decimals_out = <typeinfo>-decimals.
l_alv_fieldcat-inttype = <typeinfo>-type.
APPEND l_alv_fieldcat TO pt_alv_fieldcat.
CLEAR: "prevent anything 2 B taken for subsequent fields
l_alv_fieldcat.
ENDLOOP." at l_desc-types where not IDX_NAME is in initial.
ENDFORM. " ALV_FIELDCAT_FOR_ITAB
*&----
*& Form get_rollname_4_tabfield
*&----
Get Data type for Table field
*----
FORM get_rollname_4_tabfield
USING p_fname TYPE fname
CHANGING p_alv_fieldcat TYPE slis_fieldcat_alv.
FIELD-SYMBOLS:
<dfies> TYPE dfies.
DATA:
l_tabname TYPE tabname,
lt_dfies TYPE TABLE OF dfies,
l_fieldname TYPE fieldname.
SPLIT p_fname AT '-'
INTO l_tabname l_fieldname.
CLEAR p_alv_fieldcat-rollname.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = l_tabname
fieldname = l_fieldname
LANGU = SY-LANGU
LFIELDNAME = ' '
ALL_TYPES = ' '
IMPORTING
X030L_WA =
DDOBJTYPE =
DFIES_WA =
LINES_DESCR =
TABLES
dfies_tab = lt_dfies
FIXED_VALUES =
EXCEPTIONS
not_found = 1
internal_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.
ELSE.
READ TABLE lt_dfies ASSIGNING <dfies> INDEX 1.
p_alv_fieldcat-rollname = <dfies>-rollname.
Und wenn keinerlei Twexte gepflegt sind?
IF <dfies>-reptext IS INITIAL AND
<dfies>-scrtext_s IS INITIAL AND
<dfies>-scrtext_m IS INITIAL AND
<dfies>-scrtext_l IS INITIAL.
No Text: Use Fieldname as text
p_alv_fieldcat-seltext_s =
p_alv_fieldcat-seltext_m =
p_alv_fieldcat-seltext_l =
p_alv_fieldcat-reptext_ddic =
p_alv_fieldcat-fieldname.
ENDIF." <dfies>-reptext IS INITIAL AND
ENDIF.
ENDFORM. " get_rollname_4_tabfield
</pre>
Regards,
Clemens