我遇到ABAP问题。我有以下的代码从一本书:如何找到我的SQL INSERT不起作用的原因?
METHOD make_reservation.
DATA: license_plate TYPE zcars-license_plate,
reservation_wa LIKE LINE OF reservation_tab,
reservation_num TYPE i,
mess TYPE string.
reservation_num = lines(reservation_tab).
SELECT license_plate FROM zcars INTO (license_plate) WHERE category = category.
LOOP AT reservation_tab
TRANSPORTING NO FIELDS
WHERE license_plate = license_plate
AND NOT (date_from > date_to OR date_to < date_from).
ENDLOOP.
IF sy-subrc <> 0.
reservation_wa-reservation_id = reservation_num + 1.
reservation_wa-customer_id = customer.
reservation_wa-license_plate = license_plate.
reservation_wa-date_from = date_from.
reservation_wa-date_to = date_to.
INSERT reservation_wa INTO TABLE reservation_tab.
IF sy-subrc <> 0.
CONCATENATE license_plate ' reserved!' INTO mess.
MESSAGE mess TYPE 'I'.
ELSE.
MESSAGE 'internal error!' TYPE 'I' DISPLAY LIKE 'E'.
LEAVE PROGRAM.
ENDIF.
RETURN.
ENDIF.
ENDSELECT.
RAISE EXCEPTION TYPE zcx_no_car_available.
ENDMETHOD.
的问题是不能正常运行,我总是得到sy-subrc <> 0
行INSERT reservation_wa INTO TABLE reservation_tab.
。这导致消息“内部错误!”
现在我的问题:我厌倦了调试它,但我无法找到此声明不插入数据的原因。如何找到详细的错误消息此SQL语句出了什么问题?
'METHOD'和'LEAVE PROGRAM' in the same example?请尽快扔掉本书。 ;-) – vwegert
请将数据类型声明添加到示例中,特别是结构和表类型。 – vwegert
插入后,您仍然在sy-subrc上检查错误的方法。插入实际工作时,您报告错误。 – Esti