SAP Jobsuche bei DV-Treff
Chrissauter
vor 6 Jahre
Hallo Ihr SAP Tüftler

Ich hab ein grosses Problem mit einem Query wo viele Zusatzfelder hat. Dieses Query bricht seit kurzem mit ABAP-Laufzeitfehler ab. Ich hab das Coding angeschaut, komme aber auf keinen grünen Zweig. Hier mein Coding:

Coding:

Tables: A004,KONP,STXL,T604T.

Data: wa_tline TYPE standard table of TLINE with header line.

Data: wa_a004 TYPE standard table of a004 with header line.

Data: wa_a006 TYPE standard table of a006 with header line.

Data: WA_t604t TYPE standard table of t604t WITH HEADER LINE.

Data:z_tdnamed LIKE STXL-TDNAME.

Data:z_tdnamef LIKE STXL-TDNAME.

Data:z_tdnamei LIKE STXL-TDNAME.

Data:z_tdnamee LIKE STXL-TDNAME.

Data:z_text(120) type C.

Data:record_matnr(18) Type C.

*Data:value LIKE STXL-TDNAME.

*value = '000000'.

Data:z_value(6) Type C.

Zusatzfelder:

CLEAR maktx_e.

SELECT SINGLE maktx FROM makt INTO maktx_e

WHERE matnr = mara-matnr

AND spras = 'E'.

CLEAR maktx_f.

SELECT SINGLE maktx FROM makt INTO maktx_f

WHERE matnr = mara-matnr

AND spras = 'F'.

CLEAR maktx_i.

SELECT SINGLE maktx FROM makt INTO maktx_i

WHERE matnr = mara-matnr

AND spras = 'I'.

CLEAR maktx_d.

SELECT SINGLE maktx FROM makt INTO maktx_d

WHERE matnr = mara-matnr

AND spras = 'D'.

CLEAR knumh_chf.

SELECT SINGLE knumh FROM a004 INTO knumh_chf

WHERE matnr = mara-matnr

AND kschl = 'PR00'

AND datab <= sy-datum

AND datbi >= sy-datum.

CLEAR knumh_usd.

SELECT SINGLE knumh FROM a006 INTO knumh_usd

WHERE matnr = mara-matnr

AND waerk = 'USD'

AND kschl = 'PR00'

AND datab <= sy-datum

AND datbi >= sy-datum.

CLEAR knumh_eur.

SELECT SINGLE knumh FROM a006 INTO knumh_eur

WHERE matnr = mara-matnr

AND waerk = 'EUR'

AND kschl = 'PR00'

AND datab <= sy-datum

AND datbi >= sy-datum.

CLEAR datab_chf.

SELECT SINGLE datab FROM a004 INTO datab_chf

WHERE knumh = knumh_chf.

CLEAR kbetr_chf.

SELECT SINGLE kbetr FROM konp INTO kbetr_chf

WHERE knumh = knumh_chf

AND konwa = 'CHF'.

CLEAR datab_eur.

SELECT SINGLE datab FROM a006 INTO datab_eur

WHERE knumh = knumh_eur.

CLEAR kbetr_eur.

SELECT SINGLE kbetr FROM konp INTO kbetr_eur

WHERE knumh = knumh_eur.

CLEAR datab_usd.

SELECT SINGLE datab FROM a006 INTO datab_usd

WHERE knumh = knumh_usd.

CLEAR kbetr_usd.

SELECT SINGLE kbetr FROM konp INTO kbetr_usd

WHERE knumh = knumh_usd.

CLEAR knumhlpchf.

select * from a004 into table wa_a004

where matnr = mara-matnr AND

kschl = 'PR00'.

sort wa_a004 by knumh.

loop at wa_a004.

knumhlpchf = wa_a004-knumh.

endloop.

CLEAR knumhlpeur.

select * from a006 into table wa_a006

where matnr = mara-matnr AND

kschl = 'PR00'.

sort wa_a006 by knumh.

loop at wa_a006.

knumhlpeur = wa_a006-knumh.

endloop.

CLEAR knumhlpusd.

select * from a006 into table wa_a006

where matnr = mara-matnr AND

kschl = 'PR00'.

sort wa_a006 by knumh.

loop at wa_a006.

knumhlpusd = wa_a006-knumh.

endloop.

CLEAR kbetrlpchf.

SELECT SINGLE kbetr FROM konp INTO kbetrlpchf

WHERE knumh = knumhlpchf

AND konwa = 'CHF'.

CLEAR kbetrlpeur.

SELECT SINGLE kbetr FROM konp INTO kbetrlpeur

WHERE knumh = knumhlpeur

AND konwa = 'EUR'.

CLEAR kbetrlpusd.

SELECT SINGLE kbetr FROM konp INTO kbetrlpusd

WHERE knumh = knumhlpusd

AND konwa = 'USD'.

clear vertrt_d.

*z_value = '100010'.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

INPUT = mara-matnr

IMPORTING

OUTPUT = record_matnr.

concatenate record_matnr mvke-vkorg mvke-vtweg into z_tdnamed.

CALL FUNCTION 'READ_TEXT'

EXPORTING

* CLIENT = SY-MANDT

ID = '0001'

LANGUAGE = 'D'

NAME = z_tdnamed

OBJECT = 'MVKE'

* ARCHIVE_HANDLE = 0

* LOCAL_CAT = ' '

* IMPORTING

* HEADER =

TABLES

LINES = WA_TLINE

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

NOT_FOUND = 4

OBJECT = 5

REFERENCE_CHECK = 6

WRONG_ACCESS_TO_ARCHIVE = 7

OTHERS = 8.

IF SY-SUBRC = 0.

loop at wa_tline.

concatenate vertrt_d wa_tline-tdline into vertrt_d.

endloop.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*vertrt_d = mara-matnr.

clear wa_tline.

refresh wa_tline.

clear vertrt_f.

*z_value = '100010'.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

INPUT = mara-matnr

IMPORTING

OUTPUT = record_matnr.

concatenate record_matnr mvke-vkorg mvke-vtweg into z_tdnamef.

CALL FUNCTION 'READ_TEXT'

EXPORTING

* CLIENT = SY-MANDT

ID = '0001'

LANGUAGE = 'F'

NAME = z_tdnamef

OBJECT = 'MVKE'

* ARCHIVE_HANDLE = 0

* LOCAL_CAT = ' '

* IMPORTING

* HEADER =

TABLES

LINES = WA_TLINE

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

NOT_FOUND = 4

OBJECT = 5

REFERENCE_CHECK = 6

WRONG_ACCESS_TO_ARCHIVE = 7

OTHERS = 8.

IF SY-SUBRC = 0.

loop at wa_tline.

concatenate vertrt_f wa_tline-tdline into vertrt_f.

endloop.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*vertrt_d = mara-matnr.

clear wa_tline.

refresh wa_tline.

clear vertrt_i.

*z_value = '100010'.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

INPUT = mara-matnr

IMPORTING

OUTPUT = record_matnr.

concatenate record_matnr mvke-vkorg mvke-vtweg into z_tdnamei.

CALL FUNCTION 'READ_TEXT'

EXPORTING

* CLIENT = SY-MANDT

ID = '0001'

LANGUAGE = 'I'

NAME = z_tdnamei

OBJECT = 'MVKE'

* ARCHIVE_HANDLE = 0

* LOCAL_CAT = ' '

* IMPORTING

* HEADER =

TABLES

LINES = WA_TLINE

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

NOT_FOUND = 4

OBJECT = 5

REFERENCE_CHECK = 6

WRONG_ACCESS_TO_ARCHIVE = 7

OTHERS = 8.

IF SY-SUBRC = 0.

loop at wa_tline.

concatenate vertrt_i wa_tline-tdline into vertrt_i.

endloop.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*vertrt_d = mara-matnr.

clear wa_tline.

refresh wa_tline.

clear vertrt_e.

*z_value = '100010'.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

INPUT = mara-matnr

IMPORTING

OUTPUT = record_matnr.

concatenate record_matnr mvke-vkorg mvke-vtweg into z_tdnamee.

CALL FUNCTION 'READ_TEXT'

EXPORTING

* CLIENT = SY-MANDT

ID = '0001'

LANGUAGE = 'E'

NAME = z_tdnamee

OBJECT = 'MVKE'

* ARCHIVE_HANDLE = 0

* LOCAL_CAT = ' '

* IMPORTING

* HEADER =

TABLES

LINES = WA_TLINE

EXCEPTIONS

ID = 1

LANGUAGE = 2

NAME = 3

NOT_FOUND = 4

OBJECT = 5

REFERENCE_CHECK = 6

WRONG_ACCESS_TO_ARCHIVE = 7

OTHERS = 8.

IF SY-SUBRC = 0.

loop at wa_tline.

concatenate vertrt_e wa_tline-tdline into vertrt_e.

endloop.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*vertrt_d = mara-matnr.

clear wa_tline.

refresh wa_tline.

clear smatn.

IF mara-mstav = '91'.

SELECT SINGLE smatn INTO smatn FROM kondd

WHERE kondd~knumh in (

SELECT knumh FROM kotd001

WHERE kotd001~matwa = mara-matnr ).

SHIFT smatn LEFT DELETING LEADING '0'.

ENDIF.

CLEAR stawn.

*clear text.

SELECT SINGLE stawn FROM marc INTO stawn

WHERE matnr = mara-matnr.

select * from t604t into table wa_t604t

where spras = 'DE' AND

land1 = 'CH' AND

stawn = stawn.

If marc-stawn >' '.

LOOP at WA_t604t.

concatenate wa_t604t-text1 wa_t604t-text2 wa_t604t-text3 into z_text.

endloop.

else.

clear z_text.

endif.

clear text.

text = z_text.

Förderer

wreichelt
vor 6 Jahre
Hallo,

über die Selects :

CLEAR knumhlpeur.

select * from a006 into table wa_a006

where matnr = mara-matnr AND

kschl = 'PR00'.

sort wa_a006 by knumh.

loop at wa_a006.

knumhlpeur = wa_a006-knumh.

endloop.

CLEAR knumhlpusd.

select * from a006 into table wa_a006

where matnr = mara-matnr AND

kschl = 'PR00'.

sort wa_a006 by knumh.

loop at wa_a006.

knumhlpusd = wa_a006-knumh.

endloop.

könnten zu viele Daten in die wa_a006 gelesen werden.

Versuche mal vor dem zweiten Select ein refresh auf die TB: wa_006 zu machen.

Gruß

Chrissauter
vor 6 Jahre
Hallo Wolfgang

So Trifft man sich wieder 👍

Kannst Du mir kurz erklären wo und wie ich das refresh einbauen soll.

Gruss

Christoph

wreichelt
vor 6 Jahre
Hallo Christoph,

jeweils vor dem Select

-> refresh: wa_a006.

CLEAR knumhlpeur.

select * from a006 into table wa_a006

where matnr = mara-matnr AND

eigentlich immer vor dem Select * from xxxx into yyyy.

Gruß Wolfgang

Chrissauter
vor 6 Jahre
Hallo Wolfgang

Hat leider nicht geklappt. Es kam wie vorher auch der Laufzeitfehler. Hast Du oder sonstjemand noch eine Idee?

Gruss

Christoph

Alpmann
vor 6 Jahre
Hallo Christoph,

an welcher Stelle bricht denn das Programm genau ab. Guck doch mal in die ST22 und schick mal den Bereich "Ausschnitt Quelltext". Dort ist die Stelle des Abbruchs mit >>>> markiert.

Mit freundlichen Grüßen

Matthias Alpmann

Chrissauter
vor 6 Jahre
Hallo Matthias

Anbei habe ich einen Ausschnitt von meiner Meldung.

154 *** additional coding:

155 CLEAR kbetr_chf.

156 SELECT SINGLE kbetr FROM konp INTO kbetr_chf

157 WHERE knumh = knumh_chf

158 AND konwa = 'CHF'.

159 *** additional coding:

160 *break-point.

161 CLEAR datab_eur.

162 SELECT SINGLE datab FROM a006 INTO datab_eur

163 WHERE knumh = knumh_eur.

>>>>> check SP$00014.

165 *** additional coding:

166 *break-point.

167 CLEAR datab_usd.

168 SELECT SINGLE datab FROM a006 INTO datab_usd

169 WHERE knumh = knumh_usd.

170 check SP$00013.

Wenn Du noch mehr Info benötigst dann lass es mich wissen.

Gruss

Christoph