* Dokumentart (TA DC10, Tabelle TDWA)
PARAMETERS: p_dtype TYPE bapi_doc_aux-doctype OBLIGATORY.
* Objekttyp (Material -> MARA)
PARAMETERS: p_otype TYPE bapi_doc_drad-objecttype OBLIGATORY DEFAULT 'MARA'.
* Objektkey (Material -> MATNR)
PARAMETERS: p_okey TYPE bapi_doc_drad-objectkey OBLIGATORY DEFAULT '000000001122334455'.
START-OF-SELECTION.
DATA: it_doc_keys TYPE STANDARD TABLE OF bapi_doc_keys WITH DEFAULT KEY.
DATA: lv_return TYPE bapiret2.
* Determine Documents for an Object
CALL FUNCTION 'BAPI_DOCUMENT_GETOBJECTDOCS'
EXPORTING
objecttype = p_otype
objectkey = p_okey
currentversionsonly = abap_false " alle Versionen lesen
date = sy-datum
IMPORTING
return = lv_return
TABLES
documentlist = it_doc_keys.
IF lv_return-type CA 'EA'.
WRITE: / lv_return-message.
ELSE.
* Alle gefundenen Dokumenteninfosätze durchgehen
LOOP AT it_doc_keys ASSIGNING FIELD-SYMBOL(<d>).
* Wenn Dokumenttyp gefunden
IF <d>-documenttype = p_dtype.
DATA: ret TYPE string.
* Abfrage zum Löschen
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Frage'
text_question = |Löschen DI { <d>-documentnumber } ?|
display_cancel_button = abap_true
IMPORTING
answer = ret.
CASE ret.
WHEN '1'.
* Ja --> löschen
* Delete document or set deletion indicator
CALL FUNCTION 'BAPI_DOCUMENT_DELETE_DIRECT'
EXPORTING
documenttype = <d>-documenttype
documentnumber = <d>-documentnumber
documentpart = <d>-documentpart
documentversion = <d>-documentversion
IMPORTING
return = lv_return.
IF lv_return-type CA 'EA'.
* Rollback bei Fehler
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
* Daten verbuchen
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDIF.
ENDLOOP.
ENDIF.