Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Blocked Alv issue

Former Member
0 Likes
908

Here i get error when FM REUSE_ALV_BLOCK_LIST_DISPLAY comes.

Field symbol has not yet been assigned.

Here is my code


  TABLES: T001, KNB1.

TYPE-POOLS: SLIS.

DATA: IT_T001 LIKE TABLE OF T001,

       IT_KNB1 LIKE TABLE OF KNB1,

       IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

       WA_LAYOUT TYPE SLIS_LAYOUT_ALV,

       WA_EVENT TYPE SLIS_ALV_EVENT,

       IT_EVENT TYPE SLIS_T_EVENT.

START-OF-SELECTION.

   WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

END-OF-SELECTION.

PERFORM READ_DATA.

PERFORM BLOCK_INIT.

PERFORM FIELD_CATALOG USING 'T001' 'IT_T001'.

PERFORM APPEND_BLOCK  USING 'IT_T001' IT_T001.

PERFORM FIELD_CATALOG USING 'KNB1' 'IT_KNB1'.

PERFORM APPEND_BLOCK  USING 'IT_KNB1' IT_KNB1.

PERFORM DISPLAY_DATA.

FORM READ_DATA.

   SELECT MANDT BUKRS BUTXT ORT01 FROM T001 INTO TABLE IT_T001 UP TO 15 ROWS.

     IF NOT IT_T001 IS INITIAL.

       SELECT MANDT KUNNR BUKRS PERNR FROM KNB1 INTO TABLE IT_KNB1 UP TO 15 ROWS FOR ALL ENTRIES IN

         IT_T001 WHERE BUKRS = IT_T001-BUKRS.

     ENDIF.

ENDFORM.

FORM BLOCK_INIT.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

   EXPORTING

     I_CALLBACK_PROGRAM             = SY-CPROG

           .

ENDFORM.

FORM FIELD_CATALOG USING FP_STRUCTURE TYPE C

                          FP_TNAM      TYPE C.

   CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

    EXPORTING

      I_PROGRAM_NAME               = SY-REPID

      I_INTERNAL_TABNAME           = FP_TNAM

      I_STRUCTURE_NAME             = FP_STRUCTURE

    CHANGING

      CT_FIELDCAT                  = IT_FIELDCAT.

ENDFORM.

FORM APPEND_BLOCK USING FP_ITAB TYPE C

                         FP_DATA TYPE STANDARD TABLE.

   CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

     EXPORTING

       IS_LAYOUT                        = WA_LAYOUT

       IT_FIELDCAT                      = IT_FIELDCAT

       I_TABNAME                        = FP_ITAB

       IT_EVENTS                        = IT_EVENT

     TABLES

       T_OUTTAB                         = FP_DATA.

ENDFORM.

FORM DISPLAY_DATA.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

.

ENDFORM.


1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
863

Please check the following example:


TYPE-POOLS SLIS.

DATA: BEGIN OF ITAB OCCURS 0,
        BELNR LIKE BSEG-BELNR,
        GJAHR TYPE I,
        WRBTR TYPE I,
        WAERS LIKE BKPF-WAERS,
        TOTAL TYPE P,
        AUGDT type BSEG-AUGDT,
       END OF ITAB.


DATA: LAYOUT     TYPE SLIS_LAYOUT_ALV,
       IT_EVENTS  TYPE SLIS_T_EVENT,
       FCAT       TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
       REC_FCAT   TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

START-OF-SELECTION.

   FCAT-COL_POS       = 1.
   FCAT-FIELDNAME     = 'BELNR'.
   FCAT-TABNAME       = 'ITAB'.
   FCAT-REF_FIELDNAME = 'BELNR'.
   FCAT-REF_TABNAME   = 'BSEG'.
   APPEND FCAT.

   FCAT-COL_POS       = 2.
   FCAT-FIELDNAME     = 'GJAHR'.
   FCAT-TABNAME       = 'ITAB'.
   FCAT-REF_FIELDNAME = 'GJAHR'.
   FCAT-DATATYPE      = 'INT4'.
   FCAT-INTTYPE       = 'I'.
   FCAT-DO_SUM        = 'X'.

   APPEND FCAT.

   FCAT-COL_POS       = 3.
   FCAT-FIELDNAME     = 'WRBTR'.
   FCAT-TABNAME       = 'ITAB'.
   FCAT-DATATYPE      = 'INT4'.
   FCAT-INTTYPE       = 'I'.
   FCAT-DO_SUM        = 'X'.
   APPEND FCAT.

FCAT-COL_POS       = 4.
   FCAT-FIELDNAME     = 'TOTAL'.
   FCAT-TABNAME       = 'ITAB'.
*  FCAT-DATATYPE      = 'INT4'.
   FCAT-INTTYPE       = 'P'.
   FCAT-DO_SUM        = 'X'.
   APPEND FCAT.

FCAT-COL_POS       = 5.
   FCAT-FIELDNAME     = 'AUGDT'.
   FCAT-TABNAME       = 'ITAB'.
   FCAT-REF_FIELDNAME = 'AUGDT'.
   FCAT-REF_TABNAME   = 'BSEG'.
   APPEND FCAT.

BREAK DEVELOPER.
   DO 100 TIMES.
     ITAB-WRBTR = SY-INDEX.
     ITAB-GJAHR = SY-INDEX + 1.

    ITAB-TOTAL = ITAB-WRBTR / ITAB-GJAHR.
    itab-AUGDT = sy-datum.

     APPEND ITAB.
   ENDDO.


*CALLING ALV
   CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
     EXPORTING
       I_CALLBACK_PROGRAM = 'Z_TOT_ALV'.

   CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
     EXPORTING
       IS_LAYOUT   = LAYOUT
       IT_FIELDCAT = FCAT[]
       I_TABNAME   = 'ITAB'
       IT_EVENTS   = IT_EVENTS[]
     TABLES
       T_OUTTAB    = ITAB[].
   CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.

Here i get error when FM REUSE_ALV_BLOCK_LIST_DISPLAY comes.

Field symbol has not yet been assigned.

Here is my code


  TABLES: T001, KNB1.

TYPE-POOLS: SLIS.

DATA: IT_T001 LIKE TABLE OF T001,

       IT_KNB1 LIKE TABLE OF KNB1,

       IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

       WA_LAYOUT TYPE SLIS_LAYOUT_ALV,

       WA_EVENT TYPE SLIS_ALV_EVENT,

       IT_EVENT TYPE SLIS_T_EVENT.

START-OF-SELECTION.

   WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

END-OF-SELECTION.

PERFORM READ_DATA.

PERFORM BLOCK_INIT.

PERFORM FIELD_CATALOG USING 'T001' 'IT_T001'.

PERFORM APPEND_BLOCK  USING 'IT_T001' IT_T001.

PERFORM FIELD_CATALOG USING 'KNB1' 'IT_KNB1'.

PERFORM APPEND_BLOCK  USING 'IT_KNB1' IT_KNB1.

PERFORM DISPLAY_DATA.

FORM READ_DATA.

   SELECT MANDT BUKRS BUTXT ORT01 FROM T001 INTO TABLE IT_T001 UP TO 15 ROWS.

     IF NOT IT_T001 IS INITIAL.

       SELECT MANDT KUNNR BUKRS PERNR FROM KNB1 INTO TABLE IT_KNB1 UP TO 15 ROWS FOR ALL ENTRIES IN

         IT_T001 WHERE BUKRS = IT_T001-BUKRS.

     ENDIF.

ENDFORM.

FORM BLOCK_INIT.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

   EXPORTING

     I_CALLBACK_PROGRAM             = SY-CPROG

           .

ENDFORM.

FORM FIELD_CATALOG USING FP_STRUCTURE TYPE C

                          FP_TNAM      TYPE C.

   CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

    EXPORTING

      I_PROGRAM_NAME               = SY-REPID

      I_INTERNAL_TABNAME           = FP_TNAM

      I_STRUCTURE_NAME             = FP_STRUCTURE

    CHANGING

      CT_FIELDCAT                  = IT_FIELDCAT.

ENDFORM.

FORM APPEND_BLOCK USING FP_ITAB TYPE C

                         FP_DATA TYPE STANDARD TABLE.

   CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

     EXPORTING

       IS_LAYOUT                        = WA_LAYOUT

       IT_FIELDCAT                      = IT_FIELDCAT

       I_TABNAME                        = FP_ITAB

       IT_EVENTS                        = IT_EVENT

     TABLES

       T_OUTTAB                         = FP_DATA.

ENDFORM.

FORM DISPLAY_DATA.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

.

ENDFORM.


7 REPLIES 7
Read only

Former Member
0 Likes
864

Please check the following example:


TYPE-POOLS SLIS.

DATA: BEGIN OF ITAB OCCURS 0,
        BELNR LIKE BSEG-BELNR,
        GJAHR TYPE I,
        WRBTR TYPE I,
        WAERS LIKE BKPF-WAERS,
        TOTAL TYPE P,
        AUGDT type BSEG-AUGDT,
       END OF ITAB.


DATA: LAYOUT     TYPE SLIS_LAYOUT_ALV,
       IT_EVENTS  TYPE SLIS_T_EVENT,
       FCAT       TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
       REC_FCAT   TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

START-OF-SELECTION.

   FCAT-COL_POS       = 1.
   FCAT-FIELDNAME     = 'BELNR'.
   FCAT-TABNAME       = 'ITAB'.
   FCAT-REF_FIELDNAME = 'BELNR'.
   FCAT-REF_TABNAME   = 'BSEG'.
   APPEND FCAT.

   FCAT-COL_POS       = 2.
   FCAT-FIELDNAME     = 'GJAHR'.
   FCAT-TABNAME       = 'ITAB'.
   FCAT-REF_FIELDNAME = 'GJAHR'.
   FCAT-DATATYPE      = 'INT4'.
   FCAT-INTTYPE       = 'I'.
   FCAT-DO_SUM        = 'X'.

   APPEND FCAT.

   FCAT-COL_POS       = 3.
   FCAT-FIELDNAME     = 'WRBTR'.
   FCAT-TABNAME       = 'ITAB'.
   FCAT-DATATYPE      = 'INT4'.
   FCAT-INTTYPE       = 'I'.
   FCAT-DO_SUM        = 'X'.
   APPEND FCAT.

FCAT-COL_POS       = 4.
   FCAT-FIELDNAME     = 'TOTAL'.
   FCAT-TABNAME       = 'ITAB'.
*  FCAT-DATATYPE      = 'INT4'.
   FCAT-INTTYPE       = 'P'.
   FCAT-DO_SUM        = 'X'.
   APPEND FCAT.

FCAT-COL_POS       = 5.
   FCAT-FIELDNAME     = 'AUGDT'.
   FCAT-TABNAME       = 'ITAB'.
   FCAT-REF_FIELDNAME = 'AUGDT'.
   FCAT-REF_TABNAME   = 'BSEG'.
   APPEND FCAT.

BREAK DEVELOPER.
   DO 100 TIMES.
     ITAB-WRBTR = SY-INDEX.
     ITAB-GJAHR = SY-INDEX + 1.

    ITAB-TOTAL = ITAB-WRBTR / ITAB-GJAHR.
    itab-AUGDT = sy-datum.

     APPEND ITAB.
   ENDDO.


*CALLING ALV
   CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
     EXPORTING
       I_CALLBACK_PROGRAM = 'Z_TOT_ALV'.

   CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
     EXPORTING
       IS_LAYOUT   = LAYOUT
       IT_FIELDCAT = FCAT[]
       I_TABNAME   = 'ITAB'
       IT_EVENTS   = IT_EVENTS[]
     TABLES
       T_OUTTAB    = ITAB[].
   CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.

Read only

0 Likes
863

Hi,

Thanks for your time.

My issue is to display two list without writing multiple times 'REUSE_ALV_BLOCK_LIST_APPEND' using SUBROUTINES. Now the program you sent will display only one block.

It could help full if you solve in my way.

Read only

rajesh_kumar2
Product and Topic Expert
Product and Topic Expert
0 Likes
863

Hello ,

The issue was that you were trying to use same fields catalog for all the blocks.

Check the corrected code below :

REPORT ZTEST1 .

TABLES: T001, KNB1.

TYPE-POOLS: SLIS.

DATA: V_REPID TYPE SY-REPID.

DATA: IT_T001 LIKE TABLE OF T001,

        IT_KNB1 LIKE TABLE OF KNB1,

        IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,

        IT_FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV,

        WA_LAYOUT TYPE SLIS_LAYOUT_ALV,

        WA_EVENT TYPE SLIS_ALV_EVENT,

        IT_EVENT TYPE SLIS_T_EVENT.

START-OF-SELECTION.

    WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

    V_REPID = SY-REPID.

END-OF-SELECTION.

PERFORM READ_DATA.

PERFORM BLOCK_INIT.

PERFORM FIELD_CATALOG USING 'T001' 'IT_T001'  IT_FIELDCAT1.

PERFORM APPEND_BLOCK  USING 'IT_T001' IT_T001 IT_FIELDCAT1.

PERFORM FIELD_CATALOG USING 'KNB1' 'IT_KNB1'  IT_FIELDCAT2.

PERFORM APPEND_BLOCK  USING 'IT_KNB1' IT_KNB1 IT_FIELDCAT2.

PERFORM DISPLAY_DATA.

FORM READ_DATA.

    SELECT MANDT BUKRS BUTXT ORT01 FROM T001 INTO TABLE IT_T001 UP TO 15 ROWS.

      IF NOT IT_T001 IS INITIAL.

        SELECT MANDT KUNNR BUKRS PERNR FROM KNB1 INTO TABLE IT_KNB1 UP TO 15 ROWS FOR ALL ENTRIES IN

          IT_T001 WHERE BUKRS = IT_T001-BUKRS.

      ENDIF.

ENDFORM.

FORM BLOCK_INIT.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

    EXPORTING

      I_CALLBACK_PROGRAM             = V_REPID

            .

ENDFORM.

FORM FIELD_CATALOG USING FP_STRUCTURE TYPE C

                           FP_TNAM      TYPE C

                           FP_FIELDCAT  TYPE STANDARD TABLE.

    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

     EXPORTING

       I_PROGRAM_NAME               = SY-REPID

       I_INTERNAL_TABNAME           = FP_TNAM

       I_STRUCTURE_NAME             = FP_STRUCTURE

     CHANGING

       CT_FIELDCAT                  = FP_FIELDCAT.

ENDFORM.

FORM APPEND_BLOCK USING FP_ITAB TYPE C

                          FP_DATA TYPE STANDARD TABLE

                          fp_field TYPE STANDARD TABLE .

    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

      EXPORTING

        IS_LAYOUT                        = WA_LAYOUT

        IT_FIELDCAT                      = fp_field

        I_TABNAME                        = FP_ITAB

        IT_EVENTS                        = IT_EVENT

      TABLES

        T_OUTTAB                         = FP_DATA.

ENDFORM.

FORM DISPLAY_DATA.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

.

ENDFORM.

Read only

0 Likes
863

REPORT zr_and_d.

TYPE-POOLS:slis.

DATA:x_layout TYPE slis_layout_alv,
t_field TYPE slis_t_fieldcat_alv,

x_fldcat LIKE LINE OF t_field,
t_events TYPE slis_t_event,
x_events TYPE slis_alv_event,
t_sort TYPE slis_t_sortinfo_alv,
x_sort LIKE LINE OF t_sort ,

x_print_layout TYPE slis_print_alv.

DEFINE add_catalog.
clear x_fldcat.
x_fldcat-fieldname = &1.
x_fldcat-seltext_m = &2.
x_fldcat-outputlen = &3.
x_fldcat-tech = &4.
x_fldcat-col_pos = &5.
x_fldcat-no_zero = 'X'.
x_fldcat-ddictxt = 'M'.
x_fldcat-datatype = &6.
x_fldcat-ddic_outputlen = &7.
if &6 = 'N'.
x_fldcat-lzero = 'X'.
endif.
append x_fldcat to t_field.
END-OF-DEFINITION.

data: v_repid like sy-repid.
data: begin of itab occurs 0,
matnr like mara-matnr,
ernam like mara-ernam,
meins like mara-meins,
end of itab.
data: begin of jtab occurs 0,
matnr like makt-matnr,
maktx like makt-maktx,
end of jtab.
select matnr ernam meins
up to 20 rows
from mara
into table itab.
select matnr maktx
up to 20 rows
from makt
into table jtab.
v_repid = sy-repid.

call function 'REUSE_ALV_BLOCK_LIST_INIT'
exporting

i_callback_program = v_repid.



*Block 1:

refresh t_field. clear t_field.
refresh t_events.
add_catalog:
'MATNR' 'Material' '18' '' '1' 'C' '18',
'ERNAM' 'Created By' '12' '' '2' 'C' '12',
'MEINS' 'Unit' '5' '' '3' 'C' '3'.

x_events-form = 'TOP_OF_LIST1'.
x_events-name = slis_ev_top_of_list.
append x_events to t_events.
call function 'REUSE_ALV_BLOCK_LIST_APPEND'
exporting
is_layout = x_layout
it_fieldcat = t_field
i_tabname = 'ITAB'
it_events = t_events
it_sort = t_sort
tables
t_outtab = itab
exceptions
program_error = 1
maximum_of_appends_reached = 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.
*--BLOCK 2(SUMMARY REPORT)
*INITIALIZE
refresh t_field. clear t_field.
refresh t_events.
add_catalog:
'MATNR' 'Material' '20' '' '1' 'C' '18',
'MAKTX' 'Description' '40' '' '2' 'C' '40'.
*--build table for events.
x_events-form = 'TOP_OF_LIST2'.
x_events-name = slis_ev_top_of_list.
append x_events to t_events.
call function 'REUSE_ALV_BLOCK_LIST_APPEND'
exporting
is_layout = x_layout
it_fieldcat = t_field
i_tabname = 'JTAB'
it_events = t_events
tables
t_outtab = jtab
exceptions
program_error = 1
maximum_of_appends_reached = 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.

call function 'REUSE_ALV_BLOCK_LIST_DISPLAY'

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.

form top_of_list1.
skip 1.
write: 10 'List 1',
/5 '----'.
skip 1.
format reset.
endform.
form top_of_list2.
skip 1.
write: 10 'List 2',
/5 '----'.
skip 1.
format reset.
endform.

Read only

0 Likes
863

Hi,

You to use two REUSE_ALV_BLOCK_LIST_APPEND function modules.One for t001 and another one for knb1.

While you are passing through subroutines the interface parameters type should be match with type of function module interface parameters.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
   EXPORTING
     IS_LAYOUT                        = WA_LAYOUT1
     IT_FIELDCAT                      = IT_FCAT1
     I_TABNAME                        = 'IT_T001'
     IT_EVENTS                        = IT_EVENT1
   TABLES
     T_OUTTAB                         = IT_T001.


CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
   EXPORTING
     IS_LAYOUT                        = WA_LAYOUT2
     IT_FIELDCAT                      = IT_FCAT2
     I_TABNAME                        = 'IT_KNB1'
     IT_EVENTS                        = IT_EVENT2
   TABLES
     T_OUTTAB                         = IT_KNB1.

Read only

0 Likes
863

Thanks Rajesh

It worked for me.

Read only

Former Member
0 Likes
863

Hi, I have checked your code and observed that same fieldcat table IT_FIELDCAT is used for different table types.

try to use different fieldcat tables for differnt internal tables. This will resolve your issue.

Regards,

Vijaymadhur.