Мне было предоставлено следующее заявление CASE WHEN
от нашего провайдера MIS.Я смотрю на упрощение, так как я не эксперт, поэтому мне легче читать, тем больше у меня шансов понять и научиться.
Текущее утверждение:
,CASE SopOrderItem.SoiProcessMethod:WHEN 0
THEN IF SopOrderItem.SoiReplenishmentOrder
THEN DO: IF SopProduct.SopPrePostPaid = 0
THEN ASSIGN lv-ProcessMethod = "Replenishment Pay on Replenishment".
ELSE ASSIGN lv-ProcessMethod = "Replenishment Pay on Delivery".
END.
ELSE lv-processmethod = "Call Off":U.
WHEN 1 THEN lv-processmethod = "On Demand":U.
WHEN 2 THEN lv-processmethod = "Personalised":U.
END CASE
Вот чтоя был в состоянии написать, от которого я знаю, что работает часть, на которой я застрял, является WHEN SopOrderItem.SoiProcessMethod = 0
.На данный момент я не понимаю утверждение.Из того, что я могу сказать по-английски, он говорит, что когда SopOrderItem.SoiProcessMethod равен 0, проверьте, не равняется ли SopProduct.SopPrePostPaid также 0, если оба значения истинны, тогда «Заполнение при пополнении», если не тогда «Пополнение при доставке».
Есть ли способ, которым я могу упростить утверждение, чтобы мне было легче его понять.
В данный момент у меня есть приведенное ниже утверждение, но это привело к тому, что мой запрос упал и потребовалось много времени, чтобы обновить:
CASE WHEN SopOrderItem.SoiProcessMethod = 1 THEN 'On Demand'
WHEN SopOrderItem.SoiProcessMethod = 2 THEN 'Personalised'
WHEN SopOrderItem.SoiProcessMethod = 0 AND SopProduct.SopPrePostPaid = 0 THEN "Replenishment Pay on Replenishment"
WHEN SopOrderItem.SoiProcessMethod = 0 AND SopProduct.SopPrePostPaid <> 0 THEN "Replenishment Pay on Delivery"
ELSE 'Call Off'
END