‎2007 Jul 27 1:06 PM
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 .
‎2007 Jul 27 1:50 PM
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
‎2007 Jul 27 1:12 PM
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.
‎2007 Jul 27 1:42 PM
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 '|'.
‎2007 Jul 27 1:56 PM
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
‎2007 Jul 27 1:13 PM
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 ?
‎2007 Jul 27 1:50 PM
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
‎2011 Jan 11 12:14 AM
‎2011 Jan 11 12:15 AM