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: 

runtime error-short dump

Former Member
0 Kudos

Hi,

please correct me where i went wrong...

RANGES: r_daterange FOR vbak-audat.

RANGES:GRG_DATERANGE FOR VBAK-AUDAT.

PERFORM CHECK_SELECT_OPTIONS USING DATE_FROM

DATE_TO

CHANGING R_DATERANGE[].

  • if sales order number is the selection criteria

if not salesorder_no is initial.

clear :wa_vbak, wa_vbfa, wa_costlist_in.

refresh:t_vbak, costlist_in.

select avbeln aauart bposnr bnetpr

into table t_vbak

from vbak as a

inner join vbap as b

on avbeln = bvbeln

where a~vbeln = salesorder_no

and a~audat in r_daterange

and a~kunnr = partner_number

and b~abgru NE ' ' .

----


***INCLUDE /VWNA/LINSD_BAPI_INV_GET_INF01 .

----


&----


*& Form CHECK_SELECT_OPTIONS

&----


  • text

----


  • -->P_DATE_FROM text

  • -->P_DATE_TO text

  • <--P_R_DATERANGE[] text

----


FORM CHECK_SELECT_OPTIONS USING P_DATE_FROM LIKE VBAK-AUDAT

P_DATE_TO LIKE VBAK-AUDAT

CHANGING PRG_DATERANGE LIKE GRG_DATERANGE[].

DATA: WA_DATERANGE LIKE GRG_DATERANGE.

CLEAR WA_DATERANGE.

REFRESH PRG_DATERANGE.

WA_DATERANGE-SIGN = 'I'.

iF ( P_DATE_FROM IS INITIAL ) AND ( P_DATE_TO IS INITIAL ).

ELSEIF P_DATE_FROM IS INITIAL.

WA_DATERANGE-OPTION = 'LE'.

MOVE P_DATE_TO TO WA_DATERANGE-LOW.

ELSEIF P_DATE_TO IS INITIAL.

WA_DATERANGE-OPTION = 'GE'.

MOVE P_DATE_FROM TO WA_DATERANGE-LOW.

ELSE.

WA_DATERANGE-OPTION = 'BT'.

MOVE P_DATE_FROM TO WA_DATERANGE-LOW.

MOVE P_DATE_TO TO WA_DATERANGE-HIGH.

ENDIF.

APPEND WA_DATERANGE TO PRG_DATERANGE.

clear wa_daterange.

When i execute the code its creating a short dump and the message is :

The current ABAP/4 program attempted to execute an ABAP/4 Open SQL

statement in which the WHERE condition contains an IN itab operator.

The IN itab operator is used with internal tables which

have the following structure:

SIGN(1) OPTION(2) LOW LIKE db_field HIGH LIKE db_field

The OPTION column should contain only one of the following values:

"EQ LE GE CP BT NE LT GT NP NB"

The value " " is not allowed here. Please help me in resolving the error..

Thanks,

Challa

2 REPLIES 2

Former Member
0 Kudos

Hi

This will happen when P_DATE_FROM IS INITIAL AND P_DATE_TO IS INITIAL.

You are populating the range table with just sign as 'I' and option is not populated.

change your code to:

WA_DATERANGE-SIGN = 'I'.

iF ( P_DATE_FROM IS INITIAL ) AND ( P_DATE_TO IS INITIAL ).

ELSEIF P_DATE_FROM IS INITIAL.

WA_DATERANGE-OPTION = 'LE'.

MOVE P_DATE_TO TO WA_DATERANGE-LOW.

APPEND WA_DATERANGE TO PRG_DATERANGE.

ELSEIF P_DATE_TO IS INITIAL.

WA_DATERANGE-OPTION = 'GE'.

MOVE P_DATE_FROM TO WA_DATERANGE-LOW.

APPEND WA_DATERANGE TO PRG_DATERANGE.

ELSE.

WA_DATERANGE-OPTION = 'BT'.

MOVE P_DATE_FROM TO WA_DATERANGE-LOW.

MOVE P_DATE_TO TO WA_DATERANGE-HIGH.

APPEND WA_DATERANGE TO PRG_DATERANGE.

ENDIF.

*APPEND WA_DATERANGE TO PRG_DATERANGE.

clear wa_daterange.

Regards

Navneet

Former Member
0 Kudos

Give this a try:

FORM check_select_options USING p_date_from LIKE vbak-audat
p_date_to LIKE vbak-audat
CHANGING prg_daterange LIKE grg_daterange[].

  DATA: wa_daterange LIKE grg_daterange.

  CLEAR wa_daterange.
  REFRESH prg_daterange.

  wa_daterange-sign = 'I'.
  IF ( p_date_from IS INITIAL ) AND ( p_date_to IS INITIAL ).
    EXIT.                                                       "<====
  ELSEIF p_date_from IS INITIAL.
    wa_daterange-option = 'LE'.
    MOVE p_date_to TO wa_daterange-low.
  ELSEIF p_date_to IS INITIAL.
    wa_daterange-option = 'GE'.
    MOVE p_date_from TO wa_daterange-low.
  ELSE.
    wa_daterange-option = 'BT'.
    MOVE p_date_from TO wa_daterange-low.
    MOVE p_date_to TO wa_daterange-high.
  ENDIF.
  APPEND wa_daterange TO prg_daterange.
  CLEAR wa_daterange.

Rob