S4HANA SDK @CleanupTransaccion: Как восстановить информацию об ошибке - PullRequest
0 голосов
/ 29 мая 2020

Мы увеличиваем Capm на Java. У нас есть действие в нашей службе компакт-дисков. В этом действии мы проверяем некоторые предварительные условия перед выполнением действия. Если одно из предварительных условий не выполняется, мы хотим сохранить детали в таблице в нашем Capm и вернуть ошибку, чтобы проинформировать пользователя. Проблема заключается в том, что когда мы возвращаем ошибку, поскольку действие находится внутри транзакции, транзакция откатывает данные, которые мы сохранили.

Код выглядит примерно так:

    @Action(Name = "doAction", serviceName = "OurService")
    public OperationResponse doAction(OperationRequest oRequest, ExtensionHelper extHelper) {

        // Do some checks
        ...

        // If some of the checks fails:

            ...
            persistsCheckDetails(info);
            return OperationResponse.setError(error);

        // Everything is ok

            doTheaction();
            return OperationResponse.setSuccess().setEntityData(listResponse).response();

    }

Мы играем с аннотацией CleanupTransaction, которая запускается после завершения транзакции, но не можем найти способ восстановить детали ошибки, возникающей в транзакции.

@CleanupTransaction()
public void test(boolean result, List<OperationRequest> requests, ExtensionHelper extHelper){

    // We can recover the params of the action
    OperationRequest oRequest = requests.get(0);
    params = oRequest.getParameters();

    // We can recover a MessageContainer
    oRequest.getMessageContainer()

    // But it seems that this MessageContainer only have methods to set messages, not for recovering

}

Как мы можем восстановить информацию о транзакции? Есть ли способ отправить данные из нашего Action в метод CleanupTransaction через заголовки или что-то еще?

...