2009 Jul 30 5:06 PM
Hi Frorums
When I execute this code, the insert works into my table however, the update does not, it causes the program to abort.
FORM UPDATE_ZPRDCOPATOT .
DATA: LV_SALES LIKE ZPRDCOPATOT-ZGROSSALES,
LV_COST LIKE ZPRDCOPATOT-ZINTPRICE.
TOT_REC-ZPERIOD = GV_PERIOD.
TOT_REC-ZDISTCHAN = GV_CURR_CHANNEL.
TOT_REC-ZGROSSALES = GV_TOTAL_SALES.
TOT_REC-ZINTPRICE = GV_TOTAL_COST.
SELECT * FROM
ZPRDCOPATOT WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL.
ENDSELECT.
IF sy-subrc = 4.
INSERT INTO ZPRDCOPATOT VALUES TOT_REC.
ELSEIF SY-SUBRC EQ 0.
TOT_REC-ZGROSSALES = TOT_REC-ZGROSSALES + ZPRDCOPATOT-ZGROSSALES.
TOT_REC-ZINTPRICE = TOT_REC-ZINTPRICE + ZPRDCOPATOT-ZINTPRICE.
MODIFY TOT_REC.
UPDATE ZPRDCOPATOT SET
ZGROSSALES = TOT_REC-ZGROSSALES
ZINTPRICE = TOT_REC-ZINTPRICE
WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL.
ENDIF.
CLEAR: GV_TOTAL_SALES, GV_TOTAL_COST.
ENDFORM. " UPDATE_ZPRDCOPATOT
Edited by: keith warnock on Jul 30, 2009 6:06 PM
2009 Jul 30 5:11 PM
Hi,
When I execute this code, the insert works into my table however, the update does not, it causes the program to abort.
FORM UPDATE_ZPRDCOPATOT .
DATA: LV_SALES LIKE ZPRDCOPATOT-ZGROSSALES,
LV_COST LIKE ZPRDCOPATOT-ZINTPRICE.
TOT_REC-ZPERIOD = GV_PERIOD.
TOT_REC-ZDISTCHAN = GV_CURR_CHANNEL.
TOT_REC-ZGROSSALES = GV_TOTAL_SALES.
TOT_REC-ZINTPRICE = GV_TOTAL_COST.
SELECT * FROM
ZPRDCOPATOT WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL.
ENDSELECT.
IF sy-subrc = 4.
INSERT INTO ZPRDCOPATOT VALUES TOT_REC.
ELSEIF SY-SUBRC EQ 0.
TOT_REC-ZGROSSALES = TOT_REC-ZGROSSALES + ZPRDCOPATOT-ZGROSSALES.
TOT_REC-ZINTPRICE = TOT_REC-ZINTPRICE + ZPRDCOPATOT-ZINTPRICE.
MODIFY TOT_REC.
UPDATE ZPRDCOPATOT SET
ZGROSSALES = TOT_REC-ZGROSSALES
ZINTPRICE = TOT_REC-ZINTPRICE
"WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL. "comment this
WHERE ZPERIOD = ZPRDCOPATOT- ZPERIOD AND ZDISTCHAN = ZPRDCOPATOT-ZDISTCHAN. "Write this
ENDIF.
CLEAR: GV_TOTAL_SALES, GV_TOTAL_COST.
ENDFORM. " UPDATE_ZPRDCOPATOT
Prabhudas
Prabhudas
> Edited by: keith warnock on Jul 30, 2009 6:06 PM
Hi Frorums
When I execute this code, the insert works into my table however, the update does not, it causes the program to abort.
FORM UPDATE_ZPRDCOPATOT .
DATA: LV_SALES LIKE ZPRDCOPATOT-ZGROSSALES,
LV_COST LIKE ZPRDCOPATOT-ZINTPRICE.
TOT_REC-ZPERIOD = GV_PERIOD.
TOT_REC-ZDISTCHAN = GV_CURR_CHANNEL.
TOT_REC-ZGROSSALES = GV_TOTAL_SALES.
TOT_REC-ZINTPRICE = GV_TOTAL_COST.
SELECT * FROM
ZPRDCOPATOT WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL.
ENDSELECT.
IF sy-subrc = 4.
INSERT INTO ZPRDCOPATOT VALUES TOT_REC.
ELSEIF SY-SUBRC EQ 0.
TOT_REC-ZGROSSALES = TOT_REC-ZGROSSALES + ZPRDCOPATOT-ZGROSSALES.
TOT_REC-ZINTPRICE = TOT_REC-ZINTPRICE + ZPRDCOPATOT-ZINTPRICE.
MODIFY TOT_REC.
UPDATE ZPRDCOPATOT SET
ZGROSSALES = TOT_REC-ZGROSSALES
ZINTPRICE = TOT_REC-ZINTPRICE
WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL.
ENDIF.
CLEAR: GV_TOTAL_SALES, GV_TOTAL_COST.
ENDFORM. " UPDATE_ZPRDCOPATOT
Edited by: keith warnock on Jul 30, 2009 6:06 PM
2009 Jul 30 5:11 PM
Hi,
When I execute this code, the insert works into my table however, the update does not, it causes the program to abort.
FORM UPDATE_ZPRDCOPATOT .
DATA: LV_SALES LIKE ZPRDCOPATOT-ZGROSSALES,
LV_COST LIKE ZPRDCOPATOT-ZINTPRICE.
TOT_REC-ZPERIOD = GV_PERIOD.
TOT_REC-ZDISTCHAN = GV_CURR_CHANNEL.
TOT_REC-ZGROSSALES = GV_TOTAL_SALES.
TOT_REC-ZINTPRICE = GV_TOTAL_COST.
SELECT * FROM
ZPRDCOPATOT WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL.
ENDSELECT.
IF sy-subrc = 4.
INSERT INTO ZPRDCOPATOT VALUES TOT_REC.
ELSEIF SY-SUBRC EQ 0.
TOT_REC-ZGROSSALES = TOT_REC-ZGROSSALES + ZPRDCOPATOT-ZGROSSALES.
TOT_REC-ZINTPRICE = TOT_REC-ZINTPRICE + ZPRDCOPATOT-ZINTPRICE.
MODIFY TOT_REC.
UPDATE ZPRDCOPATOT SET
ZGROSSALES = TOT_REC-ZGROSSALES
ZINTPRICE = TOT_REC-ZINTPRICE
"WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL. "comment this
WHERE ZPERIOD = ZPRDCOPATOT- ZPERIOD AND ZDISTCHAN = ZPRDCOPATOT-ZDISTCHAN. "Write this
ENDIF.
CLEAR: GV_TOTAL_SALES, GV_TOTAL_COST.
ENDFORM. " UPDATE_ZPRDCOPATOT
Prabhudas
Prabhudas
> Edited by: keith warnock on Jul 30, 2009 6:06 PM
2009 Jul 30 5:16 PM
Hello,
I made the code change but still got the same error... Here it is:
short text:
Error in an ABAP/4 statement when processing an internal table.
The dump, shows the program failing right at the update statement.
2009 Jul 30 5:34 PM
Hi,
MODIFY TOT_REC. "Comment this and check
UPDATE ZPRDCOPATOT SET
ZGROSSALES = TOT_REC-ZGROSSALES
WHERE ZPERIOD = ZPRDCOPATOT-ZPERIOD AND ZDISTCHAN = ZPRDCOPATOT-ZDISTCHAN.
Prabhudas
2009 Jul 30 5:35 PM
2009 Jul 30 5:20 PM
Hi,
In your code after SELECT statement try with sy-dbcnt value. See below code
SELECT * FROM
ZPRDCOPATOT WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL.
ENDSELECT.
IF sy-dbcnt = 0. " ----> Do this change
INSERT INTO ZPRDCOPATOT VALUES TOT_REC.
ELSEIF sy-dbcnt EQ 1. " ----> Do this change
TOT_REC-ZGROSSALES = TOT_REC-ZGROSSALES + ZPRDCOPATOT-ZGROSSALES.
TOT_REC-ZINTPRICE = TOT_REC-ZINTPRICE + ZPRDCOPATOT-ZINTPRICE.
MODIFY TOT_REC.
UPDATE ZPRDCOPATOT SET
ZGROSSALES = TOT_REC-ZGROSSALES
ZINTPRICE = TOT_REC-ZINTPRICE
WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL.
ENDIF.Regards
Bala Krishna
2009 Jul 30 5:26 PM
Hello,
That change did not work either:
Here is the error analysis:
You attempted to change, delete or create a line in the
internal table "\PROGRAM=ZSD_SLSORD_HIST_2COPA\DATA=IT_IPDATA", but no v
cursor exists
for the table.
Possible reasons:
1. The relevent ABAP/4 statement does not include the addition
"...INDEX...", although the statement is not
inside a "LOOP...ENDLOOP" loop processing this table.
2. The relevent ABAP/4 statement was called from within a
"LOOP...ENDLOOP" loop after a DELETE
"\PROGRAM=ZSD_SLSORD_HIST_2COPA\DATA=IT_IPDATA".
2009 Jul 30 5:35 PM
Hi,
In your code ZGROSSALES, ZINTPRICE after ENDSELECT does this fields have the values?
Just try keeping the ENDSELECT statement after ENDIF. as below.
SELECT * FROM
ZPRDCOPATOT WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL.
IF sy-dbcnt = 0.
INSERT INTO ZPRDCOPATOT VALUES TOT_REC.
ELSEIF sy-dbcnt EQ 1.
TOT_REC-ZGROSSALES = TOT_REC-ZGROSSALES + ZPRDCOPATOT-ZGROSSALES.
TOT_REC-ZINTPRICE = TOT_REC-ZINTPRICE + ZPRDCOPATOT-ZINTPRICE.
MODIFY TOT_REC.
UPDATE ZPRDCOPATOT SET
ZGROSSALES = TOT_REC-ZGROSSALES
ZINTPRICE = TOT_REC-ZINTPRICE
WHERE ZPERIOD = GV_PERIOD AND ZDISTCHAN = GV_CURR_CHANNEL.
ENDIF.
ENDSELECT.Regards
Bala Krishna
2009 Jul 30 5:30 PM
Hi,
Update with set expression will works fine, if the data records are exists already it will updates.
in your where condition you are checking two fields that condition is statisfying or not please check it once.
for example below code I tried working fine.
tables: mara.
data: it_mara type standard table of mara with header line.
it_mara-matnr = '100-100'.
it_mara-matkl = '001'.
update mara set
matkl = it_mara-matkl
where matnr = it_mara-matnr.
if sy-subrc = 0.
endif.
regards,
Ganesh
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |