最初のうちは、コードを使って添付ファイルを削除するのはとても簡単だと考えていました。 以下の2つのインポートパラメータを持つメソッドを定義しました。以下の2つのインポートパラメータと1つのリターンパラメータを持つメソッドを定義しました:
iv_bor_type type string - ビジネス・オブジェクトの BOR タイプ iv_uuid type raw16 - ビジネス・オブジェクト・インスタンスのガイドライン rvsuccessful型 abap_bool - 削除が成功したかどうかを示します。
DATA: ls_bo TYPE SIBFLPORB,
lt_loios TYPE SKWF_IOS,
ls_loios TYPE SKWF_IO,
ls_error TYPE SKWF_ERROR,
lt_badios TYPE SKWF_IOERRS,
lv_del_flag TYPE ABAP_BOOL.
ls_bo-instid = iv_uuid.
ls_bo-typeid = iv_bor_type.
ls_bo-catid = 'BO'.
rv_successful = abap_false.
CALL METHOD cl_crm_documents=>get_info
EXPORTING
business_object = ls_bo
IMPORTING
loios = lt_loios.
LOOP AT lt_loios INTO ls_loios.
CALL METHOD cl_crm_documents=>lock
EXPORTING
is_bo = ls_bo
is_loio = ls_loios
IMPORTING
es_error = ls_error.
IF ls_error IS NOT INITIAL.
RETURN.
ENDIF.
ENDLOOP.
CALL METHOD cl_crm_documents=>delete
EXPORTING
business_object = ls_bo
ios = lt_loios
IMPORTING
bad_ios = lt_badios
error = ls_error.
IF ls_error IS INITIAL. " deletion failed
rv_successful = abap_true.
ENDIF.
テストを通じて、product、IBASE、BP、one orderのようなほとんどのBORタイプで完璧に動作することがわかりました。
しかし、CRM7.0 EHP3の私の新しいBORタイプCRMSOCPOSTでは機能しません。私のBOと添付ファイルの関係は、レポートに明示的なCOMMIT WORKの呼び出しが書き込まれるまで、実際には削除されません。しかし、他の標準的なCRM BORタイプでは、COMMIT WORKは必要ありません。 なぜでしょうか? デバッグの後、ようやく答えが見つかりました。ビジネス・オブジェクトがデータベースに存在する場合、COMMIT WORKは必要ありません。ビジネス・オブジェクトがデータベースに存在する場合、COMMIT WORKは必要ありません。
私のケースに戻ると、CRMSOCPOSTはCRM7.0 EHP3で作成された新しいBORタイプなので、関数モジュールはそれを認識しないため、コードは225行目に達し、その後CRMSOCPOSTはCRM7.0 EHP3で作成された新しいBOR型なので、私のケースに戻ると、関数モジュールはそれを認識しないので、コードは225行目に達し、その後、BOインスタンスはDBに存在しないとみなされます。