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

short dump correction

Former Member
0 Likes
966

need some valuable suggestions to correct dump with below description:

when inserting or deleating one or more lines of a internal table,

0(zero) was used as a line index.

an index with less than or equal to 0 is not allowed.

thanks .

1 ACCEPTED SOLUTION
Read only

former_member194669
Active Contributor
0 Likes
918

Hi,

Try to change



if not r_kunnr[] is initial.
APPEND LINES OF r_kunnr FROM gs_start TO gs_count TO s_kunnr.
endif.

aRs

7 REPLIES 7
Read only

Former Member
0 Likes
918

You need to debug it to see why the value of SY-TABIX is invalid ( i.e. = 0 ).

post the code where you are doing the deletete/statement.

Read only

0 Likes
918

hello martin .

i am getting short dump in form 'submit_steps' at line 'APPEND LINES OF r_kunnr FROM gs_start TO gs_count TO s_kunnr.'

REPORT znm_tier_seg_wrapper NO STANDARD PAGE HEADING

MESSAGE-ID zv

LINE-SIZE 150 .

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

  • include used to print standard headers on reports

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

INCLUDE: zstdrpthead.

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

  • Types declarations *

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

TYPES : BEGIN OF ty_data,

kunnr LIKE kna1-kunnr,

tier LIKE znm_segmentation-tier_code,

seg LIKE znm_segmentation-seg_code,

END OF ty_data.

TYPES : BEGIN OF ty_error_data,

kunnr LIKE kna1-kunnr,

tier LIKE znm_segmentation-tier_code,

seg LIKE znm_segmentation-seg_code,

msg(45) TYPE c,

END OF ty_error_data.

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

  • Data declarations *

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

DATA : gs_string TYPE string. "to read a rec from seq file

DATA :gv_kunnr LIKE kna1-kunnr,

gv_tier LIKE znm_segmentation-tier_code,

gv_seg LIKE znm_segmentation-seg_code.

DATA : gs_error_data TYPE ty_error_data,

gt_error_data TYPE STANDARD TABLE OF ty_error_data,

gs_data TYPE ty_data,

gt_data LIKE STANDARD TABLE OF gs_data,

gt_correct LIKE STANDARD TABLE OF gs_data.

  • gt_update LIKE STANDARD TABLE OF gs_data,

  • gt_export LIKE STANDARD TABLE OF gs_data.

DATA : gv_cust TYPE kna1-kunnr,

gv_spool TYPE tsp01,

gv_tier_code TYPE znm_segmentation-tier_code,

gv_seg_code TYPE znm_segmentation-seg_code.

*DATA : ls_spool LIKE tsp01.

*DATA : it_spool LIKE STANDARD TABLE OF ls_spool.

*DATA : lv_index TYPE sy-tabix.

DATA : gs_start TYPE i VALUE 1,

gs_count TYPE i,

gs_recjobs TYPE i,

gs_records TYPE i,

  • g_steps TYPE i,

gs_lines TYPE i.

DATA:

gv_customerfrom TYPE kna1-kunnr,

gv_customerto TYPE kna1-kunnr,

gv_jobnumber LIKE tbtcjob-jobcount,

gv_jobname LIKE tbtcjob-jobname,

gv_user_print_params LIKE pri_params,

gv_user_arc_params LIKE arc_params,

gv_startdate LIKE sy-datum,

gv_starttime LIKE sy-uzeit,

gv_job(4) TYPE c,

gv_test_mode(1). "running as test

RANGES:r_kunnr FOR kna1-kunnr,

r_tier FOR znm_segmentation-tier_code,

r_seg FOR znm_segmentation-seg_code.

CONSTANTS: c_intfid LIKE zifhdr-intfid VALUE 'ZSEG'.

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

*selection screen *

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

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

PARAMETERS : p_file(60) OBLIGATORY

LOWER CASE. "input file path

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.

PARAMETERS : p_recjob TYPE i.

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.

PARAMETERS : p_record TYPE i, " no of records per step.

p_prlstm TYPE i, " no of parallel streams

p_intrvl LIKE sy-uzeit."steam interval

SELECTION-SCREEN SKIP.

PARAMETERS p_test AS CHECKBOX DEFAULT ' '. "test mode

SELECTION-SCREEN END OF BLOCK b3.

*

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

INITIALIZATION.

  • IF sy-sysid = 'R3D'.

  • p_file = 'usr/sap/R3D/interface/NMSegment/inbox'.

  • ELSEIF sy-sysid EQ 'R3U'.

  • p_file = 'usr/sap/R3U/interface/NMSegment/inbox'.

  • ELSEIF sy-sysid EQ 'R3T'.

  • p_file = 'usr/sap/R3T/interface/NMSegment/inbox'.

  • ELSEIF sy-sysid EQ 'R3P'.

  • p_file = 'usr/sap/R3P/interface/NMSegment/inbox'.

  • ENDIF.

CONCATENATE 'usr/sap/' sy-sysid '/interface/NMSegment/inbox'

INTO p_file.

START-OF-SELECTION.

--begin of test modemudassir----


run in a test mode only-

IF p_test = 'X'.

gv_test_mode = 'Y'.

ELSE.

gv_test_mode = 'N'.

ENDIF.

IF gv_test_mode = 'Y'.

WRITE: / '***TEST MODE NO JOBS SUBMITTED**' COLOR COL_NEGATIVE.

ENDIF.

--end of test modemudassir----


*Uploading of text file from Application server.

OPEN DATASET p_file FOR INPUT IN TEXT MODE. " encoding default.

IF sy-subrc <> 0.

EXIT.

ENDIF.

  • PERFORM fetch_data_from_file. "commented for test purposre by naresh

CLOSE DATASET p_file.

PERFORM validate_fetched_data.

IF NOT gt_correct[] IS INITIAL.

PERFORM submit_jobs.

PERFORM archive_file.

ENDIF.

END-OF-SELECTION.

IF NOT gt_correct[] IS INITIAL.

  • Fotter of the report

WRITE: /(150) sy-uline.

SKIP 1.

WRITE :/(3) 'Total number of jobs submitted ',

gv_job.

ENDIF.

IF NOT gt_error_data[] IS INITIAL.

PERFORM send_email.

ENDIF.

TOP-OF-PAGE.

PERFORM write_global_header USING SY-REPID.

PERFORM top_of_page.

&----


*& Form fetch_data_from_file

&----


  • text

----


FORM fetch_data_from_file .

DO.

CLEAR : gv_kunnr, gv_tier , gv_seg.

CLEAR gs_data.

READ DATASET p_file INTO gs_string.

IF sy-subrc NE 0.

EXIT.

ENDIF.

SPLIT gs_string AT ',' INTO gv_kunnr gv_tier gv_seg.

gs_data-kunnr = gv_kunnr.

gs_data-tier = gv_tier.

gs_data-seg = gv_seg.

APPEND gs_data TO gt_data.

ENDDO.

ENDFORM. " fetch_data_from_file

&----


*& Form validate_fetched_data

&----


  • text

----


FORM validate_fetched_data .

LOOP AT gt_data INTO gs_data.

CLEAR gs_error_data.

SELECT SINGLE kunnr

INTO gv_cust

FROM kna1

WHERE kunnr = gs_data-kunnr.

IF sy-subrc NE 0.

gs_error_data-kunnr = gs_data-kunnr.

gs_error_data-msg = 'customer does not exist'.

ENDIF.

SELECT SINGLE tier_code

INTO gv_tier_code

FROM znm_segmentation

WHERE tier_code = gs_data-tier.

IF sy-subrc NE 0.

IF gs_error_data-msg IS INITIAL.

gs_error_data-msg = 'Tier code does not exist'.

ELSE.

CONCATENATE gs_error_data-msg 'Tier code does not exist'

INTO gs_error_data-msg

SEPARATED BY ' , '.

ENDIF.

ENDIF.

SELECT SINGLE seg_code

INTO gv_seg_code

FROM znm_segmentation

WHERE tier_code = gv_tier

AND seg_code = gv_seg.

IF sy-subrc NE 0.

IF gs_error_data-msg IS INITIAL.

gs_error_data-msg = 'Segment code does not exist'.

ELSE.

CONCATENATE gs_error_data-msg 'Segment code gv_seg does not exist'

INTO gs_error_data-msg

SEPARATED BY ' , '.

ENDIF.

ENDIF.

IF gs_error_data-msg IS INITIAL.

CLEAR r_kunnr.

r_kunnr-sign = 'I'.

r_kunnr-option = 'EQ'.

r_kunnr-low = gs_data-kunnr.

APPEND r_kunnr.

CLEAR r_tier.

r_tier-sign = 'I'.

r_tier-option = 'EQ'.

r_tier-low = gs_data-tier.

APPEND r_tier.

CLEAR r_seg.

r_seg-sign = 'I'.

r_seg-option = 'EQ'.

r_seg-low = gs_data-seg.

APPEND r_seg.

APPEND gs_data TO gt_correct.

ELSE.

gs_error_data-kunnr = gs_data-kunnr.

gs_error_data-tier = gs_data-tier.

gs_error_data-seg = gs_data-seg.

APPEND gs_error_data TO gt_error_data.

ENDIF.

ENDLOOP.

ENDFORM. " validate_fetched_data

&----


*& Form archive_file

&----


  • text

----


FORM archive_file .

CALL FUNCTION 'ZYP_INTF_ARCHIVE_FILE'

EXPORTING

intfid = c_intfid

file_name = p_file

from_path = 'I'

  • date_time_stamp = 'X'

  • force_overwrite = ' '

EXCEPTIONS

interface_id_not_found = 1

no_physical_path = 2

no_root_path = 3

invalid_from_path = 4

file_already_exists = 5

OTHERS = 6.

IF sy-subrc <> 0.

MESSAGE e000 WITH 'Error archiving file ' p_file

' - for interface id ' c_intfid.

ENDIF.

ENDFORM. " archive_file

&----


*& Form submit_jobs

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM submit_jobs .

DO.

IF p_recjob LT gs_lines.

gs_recjobs = p_recjob.

ELSE.

gs_recjobs = gs_lines.

ENDIF.

PERFORM submit_steps.

gs_lines = gs_lines - p_recjob.

IF gs_lines LE 0.

EXIT.

ENDIF.

ENDDO.

ENDFORM. " submit_jobs

&----


*& Form submit_steps

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM submit_steps .

RANGES:s_kunnr FOR kna1-kunnr,

s_tier FOR znm_segmentation-tier_code,

s_seg FOR znm_segmentation-seg_code.

DO.

gs_start = gs_start + gs_count.

IF NOT p_record IS INITIAL .

IF p_record LT gs_recjobs.

gs_records = p_record.

ELSE.

gs_records = gs_recjobs.

ENDIF.

gs_recjobs = gs_recjobs - gs_records.

gs_count = gs_records.

ELSE.

gs_count = gs_recjobs.

ENDIF.

gv_job = gv_job + 1.

IF gv_job EQ 1.

gv_startdate = sy-datum.

gv_starttime = sy-uzeit.

ENDIF.

IF NOT p_intrvl IS INITIAL.

IF gv_job GT 1.

gv_starttime = gv_starttime + p_intrvl.

ENDIF.

ENDIF.

APPEND LINES OF r_kunnr FROM gs_start TO gs_count TO s_kunnr.

APPEND LINES OF r_tier FROM gs_start TO gs_count TO s_tier.

APPEND LINES OF r_seg FROM gs_start TO gs_count TO s_seg.

PERFORM write_jobdetails.

IF gv_test_mode = 'Y'. " mudassir

PERFORM open_job.

**begin of comments by mudassir

  • CHECK gv_test_mode = 'N'.

**end of comments by mudassir

SUBMIT znm_tier_seg_update

WITH s_kunnr IN r_kunnr

WITH s_tier IN r_tier

WITH s_seg IN r_seg

AND RETURN

USER sy-uname

VIA JOB gv_jobname

NUMBER gv_jobnumber

TO SAP-SPOOL

SPOOL PARAMETERS gv_user_print_params

ARCHIVE PARAMETERS gv_user_arc_params

WITHOUT SPOOL DYNPRO.

PERFORM close_job.

PERFORM get_spool.

ENDIF. " mudassir

IF gs_recjobs LE 0.

EXIT.

ENDIF.

ENDDO.

ENDFORM. " submit_steps

----


  • FORM open_job *

----


  • Create a job details to be queued

----


FORM open_job.

*----


begin of comment by mudassir

CHECK gv_test_mode = 'N'.

*----


end of comment by mudassir

DATA: l_valid(1) TYPE c.

CONCATENATE sy-repid '_' gv_job INTO gv_jobname.

CONDENSE gv_jobname NO-GAPS.

CALL FUNCTION 'JOB_OPEN'

EXPORTING

jobname = gv_jobname

IMPORTING

jobcount = gv_jobnumber

EXCEPTIONS

cant_create_job = 1

invalid_job_data = 2

jobname_missing = 3

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE e956(zv) WITH gv_jobname.

ENDIF.

CALL FUNCTION 'GET_PRINT_PARAMETERS'

EXPORTING

mode = 'BATCH'

report = sy-repid

no_dialog = 'X'

IMPORTING

out_archive_parameters = gv_user_arc_params

out_parameters = gv_user_print_params

valid = l_valid

EXCEPTIONS

archive_info_not_found = 1

invalid_print_params = 2

invalid_archive_params = 3

OTHERS = 4.

IF sy-subrc <> 0.

MESSAGE e959(zv) WITH gv_jobname.

ENDIF.

gv_user_print_params-primm = space. " Do not print immediately

ENDFORM. "open_job

----


  • FORM close_job *

----


  • Close a job we have submitted earlier on and release it for Batch

  • Processing

----


FORM close_job.

DATA: l_released(1) TYPE c,

l_starttime LIKE sy-uzeit.

*---begin of code mudassir

CHECK gv_test_mode = 'N'.

*---end of code mudassir

CALL FUNCTION 'JOB_CLOSE'

EXPORTING

jobcount = gv_jobnumber

jobname = gv_jobname

sdlstrtdt = gv_startdate

sdlstrttm = gv_starttime

strtimmed = space

  • targetserver = p_server

IMPORTING

job_was_released = l_released

EXCEPTIONS

cant_start_immediate = 1

invalid_startdate = 2

jobname_missing = 3

job_close_failed = 4

job_nosteps = 5

job_notex = 6

lock_failed = 7

OTHERS = 8.

IF sy-subrc <> 0.

MESSAGE e957(zv) WITH sy-subrc.

ENDIF.

ENDFORM. "close_job

*----


**sending emails.

*----


&----


*& Form get_spool

&----


  • Retrieve the recent spool number from table TSP01

----


  • --> p1 text

  • <-- p2 text

----


FORM get_spool.

DATA: lt_spool TYPE TABLE OF tsp01.

SELECT rqident rqcretime rqmodtime

FROM tsp01 INTO TABLE lt_spool

WHERE rq2name = sy-uname.

IF sy-subrc EQ 0.

SORT lt_spool BY rqcretime DESCENDING.

READ TABLE lt_spool INTO gv_spool INDEX 1.

ENDIF.

ENDFORM. " get_spool

&----


*& Form send_email

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM send_email .

  • Work Areas ***********************************************************

DATA: ls_doc_data TYPE sodocchgi1,

ls_receivers LIKE somlreci1,

ls_obj_content TYPE solisti1.

.

  • Internal Tables

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

DATA: lt_receivers TYPE TABLE OF somlreci1,

lt_obj_content TYPE TABLE OF solisti1.

CONCATENATE 'Segmentation failed Records from Batch Run' sy-datum

INTO ls_doc_data-obj_descr.

CONCATENATE 'From a batch run on ' sy-datum ' completed at ' sy-uzeit

'[FILE] consists of some failed records.'

INTO ls_obj_content-line.

APPEND ls_obj_content TO lt_obj_content.

CONCATENATE

'These records have not been imported into SAP R/3 and will'

'need evaluating with the third party ph group.'

'these records can then be sent to yell ltd. during next monthly'

'feed of segmentation data.'

INTO ls_obj_content-line.

APPEND ls_obj_content TO lt_obj_content.

MOVE

'To view the failed records and their reasons for failure, please

access sap r/3 transaction sp01'

TO ls_obj_content-line.

APPEND ls_obj_content TO lt_obj_content.

MOVE 'Please enter the following: '

TO ls_obj_content-line.

APPEND ls_obj_content TO lt_obj_content.

CONCATENATE 'Spool Request Number: ' '[SPOOL REQUEST NUMBER]'

gv_spool INTO ls_obj_content-line.

APPEND ls_obj_content TO lt_obj_content.

CONCATENATE 'User Created By: ' '[CREATED BY]' 'and'

INTO ls_obj_content-line.

APPEND ls_obj_content TO lt_obj_content.

CONCATENATE 'Date: ' sy-datum

INTO ls_obj_content-line.

APPEND ls_obj_content TO lt_obj_content.

ls_receivers-receiver = 'mohammed.mohiuddin@wipro.com'.

ls_receivers-rec_type = 'U'.

APPEND ls_receivers TO lt_receivers.

MOVE 'Note: The spool will be deleted in 7 days'

TO ls_obj_content-line.

APPEND ls_obj_content TO lt_obj_content.

CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'

EXPORTING

document_data = ls_doc_data

document_type = 'RAW'

  • PUT_IN_OUTBOX = ' '

  • IMPORTING

  • SENT_TO_ALL =

  • NEW_OBJECT_ID =

TABLES

  • OBJECT_HEADER =

object_content = lt_obj_content

  • CONTENTS_HEX =

  • OBJECT_PARA =

  • OBJECT_PARB =

receivers = lt_receivers

EXCEPTIONS

too_many_receivers = 1

document_not_sent = 2

document_type_not_exist = 3

operation_no_authorization = 4

parameter_error = 5

x_error = 6

enqueue_error = 7

OTHERS = 8

.

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

&----


*& Form top_of_page

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM top_of_page .

WRITE: / '|',

3 'Job',

37 '|',

39 'Jobname',

72 '|',

74 'Start Date',

90 '|',

92 'Start Time',

108 '|',

110 'Customer From',

126 '|',

128 'Customer To',

150 '|',

/ sy-uline(150).

SKIP 2.

ENDFORM. " top_of_page

&----


*& Form write_jobdetails

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM write_jobdetails.

DATA:

lv_jobname LIKE tbtcjob-jobname,

lv_job(4) TYPE c.

CLEAR :

gv_customerfrom,

gv_customerto.

CONCATENATE sy-repid '_' gv_job INTO gv_jobname.

CONDENSE lv_jobname NO-GAPS.

READ TABLE r_kunnr INTO gv_customerfrom INDEX gs_start.

READ TABLE r_kunnr INTO gv_customerto INDEX gs_count.

WRITE:/ sy-uline(150).

WRITE: / '|',

3 'Job',

34 gv_job,

37 '|',

39 lv_jobname,

72 '|',

74 sy-datum,

90 '|',

92 gv_starttime,

108 '|',

110 gv_customerfrom,

126 '|',

128 gv_customerto,

150 '|'.

Read only

0 Likes
918

Hi mudassir,

I think this part may be triggering an issue

gs_start = gs_start + gs_count.

IF NOT p_record IS INITIAL .

IF p_record LT gs_recjobs.

gs_records = p_record.

ELSE.

gs_records = gs_recjobs.

ENDIF.

gs_recjobs = gs_recjobs - gs_records.

gs_count = gs_records.

ELSE.

gs_count = gs_recjobs.

ENDIF.

check this block of code which is dealing with the gs_count. Its seems to be cause of the problem

Read only

former_member189059
Active Contributor
0 Likes
918

check the index value that you are passing to your insert / delete statement

add code such as


if index <> 0.
...
endif.

what is the exact statement which is giving the dump ?

Read only

former_member194669
Active Contributor
0 Likes
919

Hi,

Try to change



if not r_kunnr[] is initial.
APPEND LINES OF r_kunnr FROM gs_start TO gs_count TO s_kunnr.
endif.

aRs

Read only

Former Member
0 Likes
918

closed

Read only

Former Member
0 Likes
918

closed