Application Development 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: 

ABAP error

Former Member
0 Kudos

Hello friends,

I have a simple ALV program. Everything works fine but after i execute the program and after I see the results and when I hit the back green arrow (F3) it goes to a short dump.

Here is the program.

I am unable to figure the cause of this short dump.

Any suggestions.

Thanks,

Shejal

************************************************************************
REPORT  ZCR00     NO STANDARD PAGE HEADING
                  LINE-SIZE  80
                  LINE-COUNT 65(0)
                  MESSAGE-ID ZZ.


*Tables declaration
************************************************************************

TABLES : MARC, "	Plant Data for Material
         MAKT,
         MARA. "	Material Descriptions

TYPE-POOLS: KKBLO,
            SLIS.

DATA:       DISVARIANT   LIKE DISVARIANT,
            EVENTCAT     TYPE SLIS_T_EVENT,
            EVENTCAT_LN  LIKE LINE OF EVENTCAT,
            FIELDCAT     TYPE SLIS_T_FIELDCAT_ALV,
            FIELDCAT_KKB TYPE KKBLO_T_FIELDCAT,
            FIELDCAT_LN  LIKE LINE OF FIELDCAT,
            KEYINFO      TYPE SLIS_KEYINFO_ALV,
            LAYOUT       TYPE SLIS_LAYOUT_ALV,
            LAYOUT_KKB   TYPE KKBLO_LAYOUT,
            PGM          LIKE SY-REPID,
            PRINTCAT     TYPE SLIS_PRINT_ALV,
            SORTCAT      TYPE SLIS_T_SORTINFO_ALV,
            SORTCAT_LN   LIKE LINE OF SORTCAT,

            BEGIN OF COLTAB OCCURS 50,
              FIELDNAME LIKE FIELDCAT_LN-FIELDNAME,
            END OF COLTAB.

**************************************************************************
*Types Declaration
**************************************************************************
TYPES :

 BEGIN OF S_MARC_MAKT,
     MATNR LIKE MARC-MATNR,
     WERKS LIKE MARC-WERKS,
     MMSTA LIKE MARC-MMSTA,
     MAKTX LIKE MAKT-MAKTX,
 END OF S_MARC_MAKT,

 BEGIN OF S_MARA,
     MATNR LIKE MARA-MATNR,
     MTARE LIKE MARA-MTART,
 END OF S_MARA.

**************************************************************************
*Internal table declaration
**************************************************************************
DATA :

   BEGIN OF T_OUTPUT OCCURS 0,
     CHECKBOX(1),
     MATNR LIKE MARC-MATNR,
     WERKS LIKE MARC-WERKS,
     MAKTX LIKE MAKT-MAKTX,
     MMSTA LIKE MARC-MMSTA,		
   END OF T_OUTPUT.

DATA : T_MARC_MAKT   TYPE TABLE OF S_MARC_MAKT,
       T_MARA        TYPE TABLE OF S_MARA.

DATA : T_STPOV TYPE STANDARD TABLE OF STPOV.


***************************************************************************
**Work Area Declaration
***************************************************************************
DATA : W_MARC_MAKT LIKE LINE OF T_MARC_MAKT,
       W_MARA      LIKE LINE OF T_MARA.

DATA : W_STPOV     LIKE LINE OF T_STPOV.

**************************************************************************
*Variable Declaration
**************************************************************************
DATA: V_DATUV LIKE SY-DATUM,
      V_DATUB LIKE SY-DATUM VALUE '99990101',
      V_REPID TYPE SYREPID,
      V_TABIX LIKE SY-TABIX,
      V_FLG(1).

* Declarations for ALV grid

**************************************************************************
*SELECTION-SCREEN
**************************************************************************
SELECTION-SCREEN : BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_MATNR FOR MAKT-MATNR OBLIGATORY,
                 P_MAKTX FOR MAKT-MAKTX NO INTERVALS ,
                 P_WERKS FOR MARC-WERKS NO INTERVALS OBLIGATORY,
                 P_MMSTA FOR MARC-MMSTA NO INTERVALS .
SELECTION-SCREEN : END OF BLOCK 1.

* Parameter for list viewer display variant
*
PARAMETERS:    VARIANT  LIKE DISVARIANT-VARIANT.

DATA: PRINT          TYPE SLIS_PRINT_ALV.
**********************************************************************************

INITIALIZATION.
  V_REPID = SY-REPID.
  V_DATUV = SY-DATUM.
*----------------------------------------------------------------------*
* Set up constants and selection criteria                              *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.

AT SELECTION-SCREEN ON VARIANT.
  CHECK NOT VARIANT IS INITIAL.
  PERFORM CHECK_VARIANT_EXISTENCE USING VARIANT 'U'.
*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR VARIANT.
  PERFORM F4_DISPLAY_VARIANT USING VARIANT 'U'.

START-OF-SELECTION.
  PERFORM EXTRACT_EXTRACT_DATA.
  PERFORM DATA_PROCESSING.

**************************************************************************
*END-OF-SELECTION
**************************************************************************
END-OF-SELECTION.
  IF NOT T_OUTPUT[] IS INITIAL.
    PERFORM OUTPUT_SCREEN1.
  ELSE.
    MESSAGE I999 WITH 'No Records Selected'.
  ENDIF.








*&---------------------------------------------------------------------*
*&      Form  EXTRACT_EXTRACT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM EXTRACT_EXTRACT_DATA .
  SELECT MARC~MATNR
         MARC~WERKS
         MARC~MMSTA
         MAKT~MAKTX
    INTO TABLE T_MARC_MAKT
    FROM MARC
   INNER JOIN MAKT
      ON MARC~MATNR = MAKT~MATNR
   WHERE MAKT~MATNR IN S_MATNR
     AND MAKT~MAKTX IN P_MAKTX
     AND MARC~WERKS IN P_WERKS
     AND MARC~MMSTA IN P_MMSTA.
ENDFORM.                    " EXTRACT_EXTRACT_DATA
*&---------------------------------------------------------------------*
*&      Form  DATA_PROCESSING
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DATA_PROCESSING .
  LOOP AT T_MARC_MAKT INTO W_MARC_MAKT.

    T_OUTPUT-MATNR = W_MARC_MAKT-MATNR.
    T_OUTPUT-WERKS = W_MARC_MAKT-WERKS.
    T_OUTPUT-MAKTX = W_MARC_MAKT-MAKTX.
    T_OUTPUT-MMSTA = W_MARC_MAKT-MMSTA.

    APPEND T_OUTPUT.

  ENDLOOP.
ENDFORM.                    " DATA_PROCESSING
*&---------------------------------------------------------------------*
*&      Form  OUTPUT_SCREEN1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM OUTPUT_SCREEN1 .

  PERFORM CALL_LIST_VIEWER.

ENDFORM.                    " OUTPUT_SCREEN1

*&---------------------------------------------------------------------*
*&      Form  CALL_LIST_VIEWER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM CALL_LIST_VIEWER .

  CLEAR: T_OUTPUT.
  PERFORM BUILD_FIELDCAT USING:
         'CHKBOX' 'T_OUTPUT'
          TEXT-001 'CHAR'       3 ' ' ' ' ' ' ' ' ' ' 'X' ' ' 'X',
         'MATNR' 'T_OUTPUT'
          TEXT-002 'CHAR'      18 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'WERKS' 'T_OUTPUT'
          TEXT-003 'CHAR'       5 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'MAKTX' 'T_OUTPUT'
          TEXT-004 'CHAR'      40 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'MMSTA' 'T_OUTPUT'
          TEXT-005 'CHAR'      12 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '.


  PERFORM BUILD_EVENTCAT USING: 'TOP_OF_LIST',
                                'USER_COMMAND'.

  PERFORM LIST_DISPLAY TABLES T_OUTPUT.

ENDFORM.                    "call_list_viewer




*----------------------------------------------------------------------*
* build field catalog entry                                            *
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT USING A_FIELDNAME
                          A_TABNAME
                          A_HEADING
                          A_DATATYPE
                          A_OUTPUTLEN
                          A_KEY
                          A_NO_OUT
                          A_NO_SUM
                          A_DO_SUM
                          A_NO_ZERO
                          A_INPUT
                          A_SUM
                          A_CHECKBOX.

  CLEAR FIELDCAT_LN.
  FIELDCAT_LN-FIELDNAME = A_FIELDNAME.
  FIELDCAT_LN-TABNAME  = A_TABNAME.
  FIELDCAT_LN-OUTPUTLEN = A_OUTPUTLEN.
  FIELDCAT_LN-DATATYPE = A_DATATYPE.
  FIELDCAT_LN-REPTEXT_DDIC = A_HEADING.
  FIELDCAT_LN-KEY = A_KEY.
  FIELDCAT_LN-NO_OUT = A_NO_OUT.
  FIELDCAT_LN-NO_SUM = A_NO_SUM.
  FIELDCAT_LN-DO_SUM = A_DO_SUM.
  FIELDCAT_LN-NO_ZERO = A_NO_ZERO.
  FIELDCAT_LN-INPUT = A_INPUT.
  FIELDCAT_LN-DO_SUM = A_SUM.
  FIELDCAT_LN-CHECKBOX = A_CHECKBOX.
  APPEND FIELDCAT_LN TO FIELDCAT.

ENDFORM.                    "BUILD_FIELDCAT

*----------------------------------------------------------------------*
*       FORM BUILD_EVENTCAT
*----------------------------------------------------------------------*
FORM BUILD_EVENTCAT USING A_EVENT.

  EVENTCAT_LN-NAME = EVENTCAT_LN-FORM = A_EVENT.
  APPEND EVENTCAT_LN TO EVENTCAT.

ENDFORM.                    "BUILD_EVENTCAT

*----------------------------------------------------------------------*
* call the ABAP list viewer                                            *
*----------------------------------------------------------------------*
FORM LIST_DISPLAY TABLES A_OUTPUT.

  PGM = DISVARIANT-REPORT = SY-REPID.
  DISVARIANT-VARIANT = VARIANT.
* call list viewer
  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM      = PGM
      IT_FIELDCAT             = FIELDCAT
      IS_VARIANT              = DISVARIANT
      IS_LAYOUT               = LAYOUT
      IS_PRINT                = PRINT
      I_SAVE                  = 'A'
      IT_EVENTS               = EVENTCAT
      IT_SORT                 = SORTCAT
      I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
    TABLES
      T_OUTTAB                = A_OUTPUT
    EXCEPTIONS
      PROGRAM_ERROR           = 1
      OTHERS                  = 2.

ENDFORM.                    "LIST_DISPLAY

**---------------------------------------------------------------------*
** FORM USER_COMMAND *
**---------------------------------------------------------------------*

FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.

  CASE UCOMM.

    WHEN '&IC1'.
      READ TABLE T_OUTPUT INDEX SELFIELD-TABINDEX.

  ENDCASE.
  SELFIELD-REFRESH = 'X'.

ENDFORM.                    " CALL_LIST_VIEWER


*----------------------------------------------------------------------*
*       FORM CHECK_VARIANT_EXISTENCE
*----------------------------------------------------------------------*
*       Verify that a variant on the selection screen exists
*----------------------------------------------------------------------*
FORM CHECK_VARIANT_EXISTENCE USING VARNAME LIKE DISVARIANT-VARIANT
                                   SAVE   TYPE C.

  DATA: XDISVAR LIKE DISVARIANT.

  XDISVAR-REPORT  = SY-REPID.
  XDISVAR-VARIANT = VARNAME.

  CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
    EXPORTING
      I_SAVE        = SAVE
    CHANGING
      CS_VARIANT    = XDISVAR
    EXCEPTIONS
      WRONG_INPUT   = 1
      NOT_FOUND     = 2
      PROGRAM_ERROR = 3
      OTHERS        = 4.

  IF SY-SUBRC <> 0.
    MESSAGE E256(56) WITH VARNAME.
*   Anzeigevariante &1 nicht gefunden
  ENDIF.

  DISVARIANT-REPORT  = SY-REPID.
  DISVARIANT-VARIANT = VARNAME.

ENDFORM.                    "check_variant_existence

*----------------------------------------------------------------------*
*       Form  F4_DISPLAY_VARIANT
*----------------------------------------------------------------------*
*       F4 help to find a display variant
*       varname = name of the dynpro field for which f4 is requested
*       save    = type of list variant saving
*                 ' ' = no saving allowed
*                 'A' = standard & user specific variants can be saved
*                 'U' = only user specific variants can be saved
*                 'X' = only standard variants can be saved
*----------------------------------------------------------------------*
FORM F4_DISPLAY_VARIANT USING VARNAME LIKE DISVARIANT-VARIANT
                              SAVE    TYPE C.

  DISVARIANT-REPORT = SY-REPID.

  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      IS_VARIANT    = DISVARIANT
      I_SAVE        = SAVE
    IMPORTING
      ES_VARIANT    = DISVARIANT
    EXCEPTIONS
      NOT_FOUND     = 1
      PROGRAM_ERROR = 2
      OTHERS        = 3.

  IF SY-SUBRC = 0.
    VARNAME = DISVARIANT-VARIANT.
  ELSE.
    MESSAGE S245(56).
*   Keine Anzeigevariante(n) vorhanden
  ENDIF.
ENDFORM.                               " F4_DISPLAY_VARIANT

1 ACCEPTED SOLUTION

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

The reason why it is dumping is because you have your internal table defintiion with a field called CHECKBOX, but when filling the field catalog, you are filling as CHKBOX. This is the reason for the error, these names need to be the same, change eithe the name in the internal table or the field cat.

REgards,

Rich heilman

12 REPLIES 12

Former Member
0 Kudos

Hi

Check the Dump in ST22 and analyse it

Was it happening only for this report alone? or execute any other report and see.

may be some other GUI problem.

Regards

Anji

Former Member
0 Kudos

Hi,

I see that this is a interactive ALV report as you have populated

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

You need to copy standard menu bar from standard ALV program SAPLSALV using transaction SE41.

Use that menu bar in your program, you will have to pass import parameter I_CALLBACK_PF_STATUS_SET value. For this similar to User command, you need to create a form for pf status and pass the same to your report.

For interactive ALV, check this link.

Hope this helps.

ashish

0 Kudos

Anji,

It happens only for this program. Can you please try the program I gave. want to see if it happens in any other system as well.

Ashish,

I have modified the program as you said and it still goes to a dump.

Shejal.

Modified Code.

*----------------------------------------------------------------------*
* call the ABAP list viewer                                            *
*----------------------------------------------------------------------*
FORM LIST_DISPLAY TABLES A_OUTPUT.

  PGM = DISVARIANT-REPORT = SY-REPID.
  DISVARIANT-VARIANT = VARIANT.
* call list viewer
  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = PGM
<b>      I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'</b>
      IT_FIELDCAT              = FIELDCAT
      IS_VARIANT               = DISVARIANT
      IS_LAYOUT                = LAYOUT
      IS_PRINT                 = PRINT
      I_SAVE                   = 'A'
      IT_EVENTS                = EVENTCAT
      IT_SORT                  = SORTCAT
      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
    TABLES
      T_OUTTAB                 = A_OUTPUT
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.

ENDFORM.                    "LIST_DISPLAY
<b>**---------------------------------------------------------------------*
** FORM SET_PF_STATUS *
**---------------------------------------------------------------------*
FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'ZSTD'.
ENDFORM.                    "set_pf_status</b>

**---------------------------------------------------------------------*
** FORM USER_COMMAND *
**---------------------------------------------------------------------*

FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.

  CASE UCOMM.

    WHEN '&IC1'.
      READ TABLE T_OUTPUT INDEX SELFIELD-TABINDEX.

  ENDCASE.
  SELFIELD-REFRESH = 'X'.

ENDFORM.                    " CALL_LIST_VIEWER

0 Kudos

It only goes to dump when you hit the F3(back) button on the ALV output? What does the dump say, what exactly is the error in the dump.

Regards,

Rich Heilman

0 Kudos

this is the place where I see the dump.

Fields

Main Program SAPLKKBL

Source code of LKKBLF01

check <ls_fieldcat>-input = 'X'.

assign component <ls_fieldcat>-fieldname

of structure rt_outtab to <field>.

assign local copy of <field> to <field_copy>.

assign local copy of <field> to <h_field>.

<field_copy> = <field>.

<b><b>clear <field>.</b> -->DUMP</b>

IN the debug mode i see for this program <field> is grayed out where as for other programs its not grayed out.

Any suggestions.

The program I have pasted do not contain and ZTABLES nor any ZINCLUDES>

Shejal.

0 Kudos

Hello Shejal,

More over to Rich's reply, you need to put

layout-box_fieldname = 'CHECKBOX'.

It will enable the checkboxs for selection.

Regards,

Naimesh

Former Member
0 Kudos

Hi Shejal,

Just comment the below line from your code, this is causing the problem for you.

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

<b>Reward for helpful answers</b>

Satish

0 Kudos

Thanks Satish.

This is an Interactive report. So i cant comment that line.

Shejal.

0 Kudos

Hi,

You are generating field catalog manually. This is causing the problem. Please use fm REUSE_ALV_FIELDCATALOG_MERGE to generate field catalog.

ashish

0 Kudos

Hi,

You can try

If not <field> is initial.

Clear <field>

Endif.

I think it's dumping since this didn't get assigned!

Regards

Nishant

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

The reason why it is dumping is because you have your internal table defintiion with a field called CHECKBOX, but when filling the field catalog, you are filling as CHKBOX. This is the reason for the error, these names need to be the same, change eithe the name in the internal table or the field cat.

REgards,

Rich heilman

0 Kudos

Thanks Rich,

That was a good catch.

Is it just a random observation or did you guess this could be a reason and looked at it.

Shejal,