Skip to Content
0
Former Member
Jan 02, 2008 at 09:06 PM

Regarding Runtime error in ALV List Display.

71 Views

am using following to display data in ALV List.

but after executing of program am getting runtime error called 'Field Symbol has Not been assigned' .

please tell me how to correct the error.

Very urgent

Suitable answers rewarded with Maximum Ponits...

REPORT zmatrix.

TYPE-POOLS: slis.

TABLES: agr_define, sza5_d0700.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-006.

SELECT-OPTIONS: s_role FOR agr_define-agr_name OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.

************************************************************************

  • D A T A *

************************************************************************

TYPES: BEGIN OF ty_agr_1251_inf,

agr_name TYPE agr_1251-agr_name,

object TYPE agr_1251-object,

field TYPE agr_1251-field,

low(20) TYPE c,

high TYPE agr_1251-high,

infty TYPE t582s-infty,

itext TYPE t582s-itext,

END OF ty_agr_1251_inf.

TYPES: BEGIN OF ty_agr_1251_tcode,

agr_name TYPE agr_1251-agr_name,

object TYPE agr_1251-object,

field TYPE agr_1251-field,

low(20) TYPE c,

high TYPE agr_1251-high,

tcode TYPE tstct-tcode,

ttext TYPE tstct-ttext,

END OF ty_agr_1251_tcode.

TYPES: BEGIN OF ty_t582s,

infty TYPE agval,

itext TYPE t582s-itext,

END OF ty_t582s.

TYPES: BEGIN OF ty_code,

tcode TYPE tstct-tcode,

ttext TYPE ttext_stct,

END OF ty_code.

TYPES: BEGIN OF ty_inf,

infty TYPE t582s-infty,

itext TYPE t582s-itext,

END OF ty_inf.

TYPES: BEGIN OF ty_role,

agr_name TYPE agr_1251-agr_name,

END OF ty_role.

TYPES: BEGIN OF tys_role_dtls,

agr_name TYPE agr_name,

value TYPE c,

property TYPE c,

END OF tys_role_dtls.

TYPES: BEGIN OF tys_infotype_final,

text(60),

text1(60),

value(4),

END OF tys_infotype_final.

************************************************************************

  • I N T E R N A L T A B L E S *

************************************************************************

DATA: wa_infotyp_final TYPE tys_infotype_final.

DATA: t_infotyp_final TYPE TABLE OF tys_infotype_final.

DATA: BEGIN OF wa_infotyp_dtls,

infty TYPE infty,

itext TYPE intxt,

role_dtls TYPE TABLE OF tys_role_dtls,

END OF wa_infotyp_dtls.

DATA: BEGIN OF wa_tcode_dtls,

tcode TYPE tcode,

ttext TYPE ttext_stct,

role_dtls TYPE TABLE OF tys_role_dtls,

END OF wa_tcode_dtls.

DATA: t_infotyp_dtls LIKE TABLE OF wa_infotyp_dtls,

t_tcode_dtls LIKE TABLE OF wa_tcode_dtls,

t_role_dtls TYPE TABLE OF tys_role_dtls,

wa_role_dtls TYPE tys_role_dtls.

DATA: wa_inf TYPE ty_inf,

t_inf TYPE STANDARD TABLE OF ty_inf.

DATA: wa_role TYPE ty_role,

t_role TYPE STANDARD TABLE OF ty_role.

DATA: wa_tcode TYPE ty_code,

t_tcode TYPE TABLE OF ty_code.

DATA: wa_agr_1251_inf TYPE ty_agr_1251_inf.

DATA: wa_agr_1251_tcode TYPE ty_agr_1251_tcode.

DATA: t_agr_1251_inf TYPE STANDARD TABLE OF ty_agr_1251_inf.

DATA: t_agr_1251_tc TYPE STANDARD TABLE OF ty_agr_1251_tcode.

DATA: wa_582s TYPE ty_t582s.

DATA: t_582s TYPE STANDARD TABLE OF ty_t582s.

DATA: t_range_tcode TYPE RANGE OF tcode.

DATA: t_range_inf TYPE RANGE OF infotyp.

DATA: wa_range_inf LIKE LINE OF t_range_inf.

DATA: wa_range_tcode LIKE LINE OF t_range_tcode.

DATA: wa_field TYPE slis_fieldcat_alv.

DATA: t_field TYPE slis_t_fieldcat_alv.

************************************************************************

  • VARIABLES FOR OLE *

************************************************************************

DATA: text(20),

count(20).

DATA: text1(30).

DATA: agr_name TYPE agr_1251-agr_name.

DATA: flag TYPE i VALUE '0'.

DATA: string1 TYPE string.

DATA: str TYPE string VALUE 'SAP%'.

DATA: count1 TYPE i VALUE '0'.

&----


*& Event START-OF-SELECTION

&----


START-OF-SELECTION.

PERFORM f100_get_inf_data.

PERFORM f200_process_inf_data.

count1 = 1.

PERFORM f300_prepare_field_catalog.

PERFORM f110_main_data.

PERFORM f400_display_data.

PERFORM f100_get_trans_data.

&----


*& Form f110_main_data

&----


  • text

----


FORM f110_main_data.

wa_infotyp_final-text = 'Access to Infotypes'.

APPEND wa_infotyp_final TO t_infotyp_final.

wa_infotyp_final-text = 'Infotype'.

wa_infotyp_final-text1 = 'Description'.

APPEND wa_infotyp_final TO t_infotyp_final.

wa_infotyp_final-text = '*'.

wa_infotyp_final-text1 = 'Acess to all Infotypes'.

  • LOOP AT t_role INTO wa_role WHERE agr_name <> ' '.

  • READ TABLE t_agr_1251_inf INTO wa_agr_1251_inf

  • WITH KEY agr_name = wa_role-agr_name field = 'INFTY' low = '*'.

  • IF syst-subrc = 0.

  • wa_infotyp_final-value = 'X'.

  • ENDIF.

  • ENDLOOP.

APPEND wa_infotyp_final TO t_infotyp_final.

LOOP AT t_inf INTO wa_inf WHERE infty <> ' '.

wa_infotyp_final-text = wa_inf-infty.

wa_infotyp_final-text1 = wa_inf-itext.

LOOP AT t_role INTO wa_role WHERE agr_name <> ' '.

  • Role Name

CLEAR wa_role_dtls.

flag = 1.

wa_role_dtls-agr_name = wa_role-agr_name.

  • For Value D & F

READ TABLE t_agr_1251_inf INTO wa_agr_1251_inf

WITH KEY agr_name = wa_role-agr_name field = 'AUTHC'..

IF syst-subrc EQ 0.

IF wa_agr_1251_inf-low = 'R'.

wa_infotyp_final-value = 'D'.

ELSE.

wa_infotyp_final-value = 'F'.

ENDIF.

ENDIF.

APPEND wa_role_dtls TO t_role_dtls.

APPEND wa_infotyp_final TO t_infotyp_final.

ENDLOOP.

ENDLOOP.

ENDFORM. "f110_main_data

&----


*& Form f100_get_inf_data

&----


  • text

----


FORM f100_get_inf_data.

----


  • Logic for Infotypes *

----


SELECT aagr_name aobject

afield alow a~high

INTO TABLE t_agr_1251_inf

FROM agr_1251 AS a INNER JOIN agr_define AS b

ON aagr_name EQ bagr_name

WHERE ( ( aobject EQ 'P_ORGIN' OR aobject EQ 'P_PERNR' )

AND ( aagr_name IN s_role ) AND ( bagr_name NOT LIKE str ) ).

ENDFORM. "f100_get_inf_data

&----


*& Form f200_get_inf_process_data

&----


  • text

----


FORM f200_process_inf_data.

LOOP AT t_agr_1251_inf INTO wa_agr_1251_inf.

IF wa_agr_1251_inf-high IS INITIAL.

CLEAR wa_range_inf.

wa_range_inf-sign = 'I'.

wa_range_inf-option = 'EQ'.

wa_range_inf-low = wa_agr_1251_inf-low.

APPEND wa_range_inf TO t_range_inf.

ELSE.

CLEAR wa_range_inf.

wa_range_inf-sign = 'I'.

wa_range_inf-option = 'BT'.

wa_range_inf-low = wa_agr_1251_inf-low.

wa_range_inf-high = wa_agr_1251_inf-high.

APPEND wa_range_inf TO t_range_inf.

ENDIF.

ENDLOOP.

SORT t_range_inf.

DELETE ADJACENT DUPLICATES FROM t_range_inf.

IF t_range_inf IS NOT INITIAL.

SELECT infty itext FROM t582s

INTO TABLE t_582s

WHERE sprsl = 'EN' AND infty IN t_range_inf.

IF syst-subrc EQ 0.

ENDIF.

ENDIF.

LOOP AT t_agr_1251_inf INTO wa_agr_1251_inf.

IF wa_agr_1251_inf-high IS INITIAL.

READ TABLE t_582s INTO wa_582s

WITH KEY infty = wa_agr_1251_inf-low.

IF syst-subrc EQ 0.

wa_agr_1251_inf-infty = wa_582s-infty.

wa_agr_1251_inf-itext = wa_582s-itext.

MODIFY t_agr_1251_inf FROM wa_agr_1251_inf

TRANSPORTING infty itext.

IF syst-subrc EQ 0.

ENDIF.

ENDIF.

ELSE.

CLEAR count.

LOOP AT t_582s INTO wa_582s

WHERE infty GE wa_agr_1251_inf-low

AND infty LE wa_agr_1251_inf-high.

IF count LE 1.

wa_agr_1251_inf-high = space.

wa_agr_1251_inf-infty = wa_582s-infty.

wa_agr_1251_inf-itext = wa_582s-itext.

MODIFY t_agr_1251_inf FROM wa_agr_1251_inf

TRANSPORTING infty itext.

IF syst-subrc EQ 0.

CLEAR wa_582s.

ENDIF.

ELSE.

wa_agr_1251_inf-high = space.

wa_agr_1251_inf-infty = wa_582s-infty.

wa_agr_1251_inf-itext = wa_582s-itext.

APPEND wa_agr_1251_inf TO t_agr_1251_inf.

ENDIF.

CLEAR wa_agr_1251_inf.

count = count + 1.

ENDLOOP.

ENDIF.

ENDLOOP.

wa_role-agr_name = ' '.

APPEND wa_role TO t_role.

wa_role-agr_name = ' '.

APPEND wa_role TO t_role.

LOOP AT t_agr_1251_inf INTO wa_agr_1251_inf.

IF wa_agr_1251_inf IS NOT INITIAL.

wa_role-agr_name = wa_agr_1251_inf-agr_name.

wa_inf-infty = wa_agr_1251_inf-infty.

wa_inf-itext = wa_agr_1251_inf-itext.

APPEND wa_role TO t_role.

APPEND wa_inf TO t_inf.

ENDIF.

ENDLOOP.

SORT t_role BY agr_name.

DELETE ADJACENT DUPLICATES FROM t_role.

SORT t_inf BY infty.

DELETE ADJACENT DUPLICATES FROM t_inf.

ENDFORM. "f200_get_process_inf_data

&----


*& Form f100_get_trans_data

&----


  • text

----


FORM f100_get_trans_data.

----


  • Logic for Transaction Codes *

----


SELECT aagr_name aobject

afield alow a~high

INTO CORRESPONDING FIELDS OF TABLE t_agr_1251_tc

FROM agr_1251 AS a

INNER JOIN agr_define AS b ON aagr_name EQ bagr_name

WHERE a~agr_name IN s_role

AND a~object EQ 'S_TCODE'.

ENDFORM. "f100_get_trans_data

&----


*& Form f200_process_trans_data

&----


  • text

----


FORM f200_process_trans_data.

LOOP AT t_agr_1251_tc INTO wa_agr_1251_tcode.

IF wa_agr_1251_tcode-high IS INITIAL.

CLEAR wa_range_tcode.

wa_range_tcode-sign = 'I'.

wa_range_tcode-option = 'EQ'.

wa_range_tcode-low = wa_agr_1251_tcode-low.

APPEND wa_range_tcode TO t_range_tcode.

ELSE.

CLEAR wa_range_tcode.

wa_range_tcode-sign = 'I'.

wa_range_tcode-option = 'BT'.

wa_range_tcode-low = wa_agr_1251_tcode-low.

wa_range_tcode-high = wa_agr_1251_tcode-high.

APPEND wa_range_tcode TO t_range_tcode.

ENDIF.

ENDLOOP.

SORT t_range_tcode.

DELETE ADJACENT DUPLICATES FROM t_range_tcode.

IF t_range_tcode IS NOT INITIAL.

SELECT tcode

ttext

FROM tstct

INTO TABLE t_tcode

WHERE sprsl EQ 'E'

AND tcode IN t_range_tcode.

IF sy-subrc EQ 0.

ENDIF.

ENDIF.

SORT t_agr_1251_tc BY agr_name.

LOOP AT t_agr_1251_tc INTO wa_agr_1251_tcode.

IF wa_agr_1251_tcode-high IS INITIAL.

READ TABLE t_tcode INTO wa_tcode

WITH KEY tcode = wa_agr_1251_tcode-low.

IF syst-subrc EQ 0.

wa_agr_1251_tcode-tcode = wa_tcode-tcode.

wa_agr_1251_tcode-ttext = wa_tcode-ttext.

MODIFY t_agr_1251_tc FROM wa_agr_1251_tcode

TRANSPORTING tcode ttext.

IF syst-subrc EQ 0.

ENDIF.

ENDIF.

ELSE.

CLEAR count.

LOOP AT t_tcode INTO wa_tcode

WHERE tcode GE wa_agr_1251_tcode-low

AND tcode LE wa_agr_1251_tcode-high.

IF count LE 1.

agr_name = wa_agr_1251_tcode-agr_name.

wa_agr_1251_tcode-high = space.

wa_agr_1251_tcode-tcode = wa_tcode-tcode.

wa_agr_1251_tcode-ttext = wa_tcode-ttext.

MODIFY t_agr_1251_tc FROM wa_agr_1251_tcode

TRANSPORTING tcode ttext high.

IF syst-subrc EQ 0.

CLEAR wa_tcode.

ENDIF.

count = 1.

ELSE.

wa_agr_1251_tcode-high = space.

wa_agr_1251_tcode-agr_name = agr_name.

wa_agr_1251_tcode-low = wa_tcode-tcode.

wa_agr_1251_tcode-tcode = wa_tcode-tcode.

wa_agr_1251_tcode-ttext = wa_tcode-ttext.

APPEND wa_agr_1251_tcode TO t_agr_1251_tc.

ENDIF.

CLEAR wa_agr_1251_tcode.

count = count + 1.

ENDLOOP.

ENDIF.

ENDLOOP.

LOOP AT t_agr_1251_tc INTO wa_agr_1251_tcode.

wa_role-agr_name = wa_agr_1251_tcode-agr_name.

APPEND wa_role TO t_role.

ENDLOOP.

SORT t_role BY agr_name.

DELETE ADJACENT DUPLICATES FROM t_role.

SORT t_tcode BY tcode.

DELETE ADJACENT DUPLICATES FROM t_tcode.

ENDFORM. "f200_process_trans_data

&----


*& Form f100_prepare_field_catalog

&----


  • text

----


FORM f300_prepare_field_catalog.

LOOP AT t_role INTO wa_role.

wa_field-col_pos = count1.

wa_field-fieldname = wa_role-agr_name.

APPEND wa_field TO t_field.

count1 = count1 + 1.

ENDLOOP.

ENDFORM. "f100_prepare_field_catalog

&----


*& Form f100_display_data

&----


  • text

----


FORM f400_display_data.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

i_callback_program = sy-cprog

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_STRUCTURE_NAME =

  • IS_LAYOUT =

it_fieldcat = t_field[]

  • 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

  • IR_SALV_LIST_ADAPTER =

  • IT_EXCEPT_QINFO =

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = t_infotyp_final[]

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. "f100_display_data