Kuranov.Dmitry написал(а):
Почитайте курсы по абапу ....
зачем в WHERE пихать IF?
IF p_flag = 'X'.
SELECT ...
ELSE.
SELECT...
endif.
так очень сильно нагружает БД и запрос обрабатывается долго, у меня идет соединение двух таблиц по 3-4 млн каждая и определенные критерии.
если я выведу сразу таблицу, а потом почищу от elevel = 1, то приходится долго ждать.
А при elevel=1 в селекте, транзакция отрабатывается в течение 15-20 сек.
Поэтому и такая вот задача.... что нужно именно в моем селекте
Code:
SELECT zppmrp5~matnr_1
zppmrp5~datuv
zppmrp5~matnr_2
zppmrp5~matnr
zppmrp5~werks
zppmrp5~arbpl_1
zppmrp5~arbpl_2
zppmrp5~seqnr
zppmrp5~elevel
zppmrp5~pbdnr
zppmrp5~zbesk
zppmrp5~IA
zppmrp5~gamng AS gamng_td
zppmrp5~gamng_1 AS gamng_1_td
zppmrp5_tmp1~gamng AS gamng_ld
zppmrp5_tmp1~gamng_1 AS gamng_1_ld
INTO CORRESPONDING FIELDS OF TABLE gt_result_tab
FROM zppmrp5
LEFT
JOIN zppmrp5_tmp1 ON zppmrp5_tmp1~matnr = zppmrp5~matnr
AND zppmrp5_tmp1~matnr_1 = zppmrp5~matnr_1
AND zppmrp5_tmp1~matnr_2 = zppmrp5~matnr_2
AND zppmrp5_tmp1~arbpl_1 = zppmrp5~arbpl_1
AND zppmrp5_tmp1~arbpl_2 = zppmrp5~arbpl_2
AND zppmrp5_tmp1~seqnr = zppmrp5~seqnr
AND zppmrp5_tmp1~werks = zppmrp5~werks
AND zppmrp5_tmp1~pbdnr = zppmrp5~pbdnr
WHERE zppmrp5~elevel = 1 AND
zppmrp5~matnr_1 IN so_mat1 AND
zppmrp5~matnr_2 IN so_mat2 AND
zppmrp5~matnr IN so_matnr AND
zppmrp5~arbpl_1 IN so_arb1 AND
zppmrp5~arbpl_2 IN so_arb2 AND
zppmrp5~ZBESK IN so_ZBESK.
SELECT zppmrp5_tmp1~matnr_1
zppmrp5_tmp1~matnr_2
zppmrp5_tmp1~werks
zppmrp5_tmp1~matnr
zppmrp5_tmp1~arbpl_1
zppmrp5_tmp1~arbpl_2
zppmrp5_tmp1~datuv
zppmrp5_tmp1~seqnr
zppmrp5_tmp1~elevel
zppmrp5_tmp1~pbdnr
zppmrp5_tmp1~gamng AS gamng_ld
zppmrp5_tmp1~gamng_1 AS gamng_1_ld
zppmrp5_tmp1~zbesk
zppmrp5_tmp1~IA
zppmrp5~gamng AS gamng_td
zppmrp5~gamng_1 AS gamng_1_td
APPENDING CORRESPONDING FIELDS OF TABLE gt_result_tab
FROM zppmrp5_tmp1
LEFT
JOIN zppmrp5 ON zppmrp5~matnr = zppmrp5_tmp1~matnr
AND zppmrp5~matnr_1 = zppmrp5_tmp1~matnr_1
AND zppmrp5~matnr_2 = zppmrp5_tmp1~matnr_2
AND zppmrp5~arbpl_1 = zppmrp5_tmp1~arbpl_1
AND zppmrp5~arbpl_2 = zppmrp5_tmp1~arbpl_2
AND zppmrp5~seqnr = zppmrp5_tmp1~seqnr
AND zppmrp5~werks = zppmrp5_tmp1~werks
AND zppmrp5~pbdnr = zppmrp5_tmp1~pbdnr
WHERE zppmrp5_tmp1~elevel = 1 AND
zppmrp5_tmp1~matnr_1 IN so_mat1 AND
zppmrp5_tmp1~matnr_2 IN so_mat2 AND
zppmrp5_tmp1~matnr IN so_matnr AND
zppmrp5_tmp1~arbpl_1 IN so_arb1 AND
zppmrp5_tmp1~arbpl_2 IN so_arb2 AND
zppmrp5_tmp1~ZBESK IN so_ZBESK.