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

Runtime error:ABAP program lines are longer than the internal table

Former Member
0 Likes
2,059

Hi all,

Below is the code I have written,when Iam running it Iam getting

'ABAP program lines are longer than the internal table' runtime error.How can I resolve it.

REPORT ZTEST1 NO STANDARD PAGE HEADING LINE-SIZE 255.

TABLES:MARC,CDHDR,CDPOS.

TYPE-POOLS:SLIS.

DATA:HEADER TYPE SLIS_T_FIELDCAT_ALV,

WA TYPE SLIS_FIELDCAT_ALV,

LAYOUT TYPE SLIS_LAYOUT_ALV.

TYPES:BEGIN OF MARC_TY,

MATNR LIKE MARC-MATNR,

WERKS LIKE MARC-WERKS,

EKGRP LIKE MARC-EKGRP,

MINBE LIKE MARC-MINBE,

EISBE LIKE MARC-EISBE,

MABST LIKE MARC-MABST,

END OF MARC_TY.

TYPES:BEGIN OF MATNR1_TY,

MATNR1 LIKE CDHDR-OBJECTID,

END OF MATNR1_TY.

TYPES:BEGIN OF CDHDR_TY,

OBJECTCLAS LIKE CDHDR-OBJECTCLAS,

OBJECTID LIKE CDHDR-OBJECTID,

CHANGENR LIKE CDHDR-CHANGENR,

USERNAME LIKE CDHDR-USERNAME,

UDATE LIKE CDHDR-UDATE,

END OF CDHDR_TY.

TYPES:BEGIN OF CDPOS_TY,

OBJECTCLAS LIKE CDPOS-OBJECTCLAS,

OBJECTID LIKE CDPOS-OBJECTID,

CHANGENR LIKE CDPOS-CHANGENR,

TABNAME LIKE CDPOS-TABNAME,

FNAME LIKE CDPOS-FNAME,

CHNGIND LIKE CDPOS-CHNGIND,

VALUE_NEW LIKE CDPOS-VALUE_NEW,

VALUE_OLD LIKE CDPOS-VALUE_OLD,

END OF CDPOS_TY.

**************TABLE TYPES********************************************

TYPES: MARC_TAB TYPE TABLE OF MARC_TY,

MATNR1_TAB TYPE TABLE OF MATNR1_TY,

CDHDR_TAB TYPE TABLE OF CDHDR_TY,

CDPOS_TAB TYPE TABLE OF CDPOS_TY.

*******************INTERNAL TABLES************************************

DATA:MARC_ITAB TYPE MARC_TAB,

MATNR1_ITAB TYPE MATNR1_TAB,

CDHDR_ITAB TYPE CDHDR_TAB,

CDPOS_ITAB TYPE CDPOS_TAB.

****************WORK AREAS********************************************

DATA:MARC_WA TYPE MARC_TY,

MATNR1_WA TYPE MATNR1_TY,

CDHDR_WA TYPE CDHDR_TY,

CDPOS_WA TYPE CDPOS_TY.

*******************SELECTION-SCREEN***********************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.

PARAMETERS:PLANT LIKE MARC-WERKS.

SELECT-OPTIONS:MATERIAL FOR MARC-MATNR.

SELECT-OPTIONS:DATE FOR CDHDR-UDATE.

SELECTION-SCREEN END OF BLOCK B1.

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

START-OF-SELECTION.

SELECT MATNR

WERKS

EKGRP

MINBE

EISBE

MABST

FROM MARC INTO TABLE MARC_ITAB

WHERE MATNR IN MATERIAL

AND WERKS = PLANT.

CHECK MARC_ITAB[] IS NOT INITIAL.

LOOP AT MARC_ITAB INTO MARC_WA.

MATNR1_WA-MATNR1 = MARC_WA-MATNR.

APPEND MATNR1_WA TO MATNR1_ITAB.

CLEAR MATNR1_WA.

ENDLOOP.

CHECK MATNR1_ITAB[] IS NOT INITIAL.

SELECT OBJECTCLAS

OBJECTID

CHANGENR

USERNAME

UDATE

FROM CDHDR INTO TABLE CDHDR_ITAB

FOR ALL ENTRIES IN MATNR1_ITAB

WHERE OBJECTCLAS = 'MATERIAL'

AND OBJECTID = MATNR1_ITAB-MATNR1

AND UDATE IN DATE.

CHECK CDHDR_ITAB[] IS NOT INITIAL.

SORT CDHDR_ITAB[] DESCENDING BY OBJECTID CHANGENR.

DELETE ADJACENT DUPLICATES FROM CDHDR_ITAB[] COMPARING OBJECTID.

SELECT OBJECTCLAS

OBJECTID

CHANGENR

TABNAME

FNAME

CHNGIND

VALUE_NEW

VALUE_OLD

FROM CDPOS INTO CORRESPONDING FIELDS OF TABLE CDPOS_ITAB

FOR ALL ENTRIES IN CDHDR_ITAB

WHERE OBJECTCLAS = CDHDR_ITAB-OBJECTCLAS

AND OBJECTID = CDHDR_ITAB-OBJECTID

AND CHANGENR = CDHDR_ITAB-CHANGENR

AND TABNAME = 'MARC'

AND FNAME IN ('MINBE','EISBE','MABST','LVORM')

AND CHNGIND = 'U'.

CHECK CDPOS_ITAB[] IS NOT INITIAL.

*LOOP AT CDPOS_ITAB INTO CDPOS_WA.

*

  • WRITE: / CDPOS_WA-OBJECTCLAS,

  • CDPOS_WA-OBJECTID,

  • CDPOS_WA-CHANGENR,

  • CDPOS_WA-TABNAME,

  • CDPOS_WA-FNAME,

  • CDPOS_WA-CHNGIND,

  • CDPOS_WA-VALUE_NEW,

  • CDPOS_WA-VALUE_OLD.

*

*

*ENDLOOP.

WA-SELTEXT_L = 'OBJECTCLAS'.

WA-COL_POS = '1'.

WA-FIELDNAME = 'OBJECTCLAS'.

WA-TABNAME = 'CDPOS_ITAB'.

WA-OUTPUTLEN = '15'.

APPEND WA TO HEADER.

CLEAR WA.

WA-SELTEXT_L = 'OBJECTID'.

WA-COL_POS = '2'.

WA-FIELDNAME = 'OBJECTID'.

WA-TABNAME = 'CDPOS_ITAB'.

WA-OUTPUTLEN = '20'.

APPEND WA TO HEADER.

CLEAR WA.

WA-SELTEXT_L = 'CHANGENR'.

WA-COL_POS = '3'.

WA-FIELDNAME = 'CHANGENR'.

WA-TABNAME = 'CDPOS_ITAB'.

WA-OUTPUTLEN = '8'.

APPEND WA TO HEADER.

CLEAR WA.

WA-SELTEXT_L = 'TABNAME'.

WA-COL_POS = '4'.

WA-FIELDNAME = 'TABNAME'.

WA-TABNAME = 'CDPOS_ITAB'.

WA-OUTPUTLEN = '5'.

APPEND WA TO HEADER.

CLEAR WA.

WA-SELTEXT_L = 'FNAME'.

WA-COL_POS = '5'.

WA-FIELDNAME = 'FNAME'.

WA-TABNAME = 'CDPOS_ITAB'.

WA-OUTPUTLEN = '7'.

APPEND WA TO HEADER.

CLEAR WA.

WA-SELTEXT_L = 'CHANGING'.

WA-COL_POS = '6'.

WA-FIELDNAME = 'CHANGING'.

WA-TABNAME = 'CDPOS_ITAB'.

WA-OUTPUTLEN = '1'.

APPEND WA TO HEADER.

CLEAR WA.

WA-SELTEXT_L = 'VALUE_NEW'.

WA-COL_POS = '7'.

WA-FIELDNAME = 'VALUE_NEW'.

WA-TABNAME = 'CDPOS_ITAB'.

WA-OUTPUTLEN = '5'.

APPEND WA TO HEADER.

CLEAR WA.

WA-SELTEXT_L = 'VALUE_OLD'.

WA-COL_POS = '8'.

WA-FIELDNAME = 'VALUE_OLD'.

WA-TABNAME = 'CDPOS_ITAB'.

WA-OUTPUTLEN = '5'.

APPEND WA TO HEADER.

CLEAR WA.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'CDPOS_ITAB'

I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = HEADER[]

EXCEPTIONS

.

IF SY-SUBRC <> 0.

ENDIF.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IT_FIELDCAT = HEADER[]

TABLES

T_OUTTAB = CDPOS_ITAB[]

.

IF SY-SUBRC <> 0.

ENDIF.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
714

hi,

My report is working fineas a normal calssical report,but is throwing aruntime error,when Iam converting it to alv.So,please tell me how to resolve the error.

4 REPLIES 4
Read only

Former Member
0 Likes
714

Your select querry on MARC is not matching with MARC_TY.

The field in the MARC table and MARC_TY should be same.

and also, when you are making select querry on CDPOS table

with all entries.

When ever you are using all entries select statement, you should check whether the internal table is having value.

you should check

if CDPOS_IT[] is not initial.

SELECT OBJECTCLAS

OBJECTID

CHANGENR

TABNAME

FNAME

CHNGIND

VALUE_NEW

VALUE_OLD

FROM CDPOS INTO CORRESPONDING FIELDS OF TABLE CDPOS_ITAB

FOR ALL ENTRIES IN CDHDR_ITAB

WHERE OBJECTCLAS = CDHDR_ITAB-OBJECTCLAS

AND OBJECTID = CDHDR_ITAB-OBJECTID

AND CHANGENR = CDHDR_ITAB-CHANGENR

AND TABNAME = 'MARC'

AND FNAME IN ('MINBE','EISBE','MABST','LVORM')

AND CHNGIND = 'U'.

endif.

Regards

Madhan D

Read only

Former Member
0 Likes
715

hi,

My report is working fineas a normal calssical report,but is throwing aruntime error,when Iam converting it to alv.So,please tell me how to resolve the error.

Read only

0 Likes
714

since you are using the merge function, it is creating the problem. main reason for this in the background it reads the report into a 72chars work area, that time if it encounters any line more than 72chars , it will give the dump.

you have two options one break the source code into 2 or 3 lines if you have any code line which crosses 72 chars. or else you can control this with the help of editor settings, check it once.

my suggestion is always use 72 or less chars in a line.

read table.............................................................................................binary search.

break it like this..

read table itab into wa

..................

...................

binary search

Read only

0 Likes
714

Hi vijay,

I have adjusted the code as you said,but still Iam getting the same error.