1. 程式人生 > >SAP 列轉行

SAP 列轉行

不知道 -s bubuko rom end 後來 img else pan

有一個報表要對表fmbl進行查詢,但有一個期間條件

技術分享圖片

需對於特定的多列進行匯總

技術分享圖片

例如期間是

技術分享圖片

就要獲取到 TVAL01 + TVAL02 + TVAL03

一開始我的想法是,建立像下面這樣的視圖,然後查詢條件直接就可以用 in

技術分享圖片

但在ABAP裏發現不能直接建立這樣的視圖。也想過先通過SAP創建視圖

技術分享圖片

然後,在數據庫裏刪除視圖,按我上面的SQL重建。後來想想,這樣會導致接手我程序的人不知道這件事就悲劇了,並且不是所有開發人員都可以有權限修改數據庫,最終換了下面的辦法。

* 獲取月份
SELECT DISTINCT monat
INTO TABLE @DATA(it_monat)
FROM thol
WHERE monat IN @s_monat .

然後在LOOP數據時,再LOOP一次月份

LOOP AT it_monat INTO DATA(lw_monat).
IF lw_monat-monat = ‘01‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval01.
ELSEIF lw_monat-monat = ‘02‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval02.
ELSEIF lw_monat-monat = ‘03‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval03.
ELSEIF lw_monat-monat = ‘04‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval04.
ELSEIF lw_monat-monat = ‘05‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval05.
ELSEIF lw_monat-monat = ‘06‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval06.
ELSEIF lw_monat-monat = ‘07‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval07.
ELSEIF lw_monat-monat = ‘08‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval08.
ELSEIF lw_monat-monat = ‘09‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval09.
ELSEIF lw_monat-monat = ‘10‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval10.
ELSEIF lw_monat-monat = ‘11‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval11.
ELSEIF lw_monat-monat = ‘12‘.
wa_output-tval_sum = wa_output-tval_sum + lw_output-tval12.
ENDIF.
ENDLOOP.

SAP 列轉行