跳轉到

程式資訊

  • 程式 IDAcc_selfrpt
  • 所屬子系統:N.總帳管理
  • 狀態:stable

自訂財報執行查詢

功能簡介

「自訂財報執行查詢」依照使用者事先在報表公式設定(Acc_rpt)裡定義的報表公式,把總帳餘額、預算數字套進每一列的公式算出結果,動態組出一份完全客製的財務報表。它不受內建資產負債表損益表格式的限制——版面、科目組合、加減邏輯、百分比基準全由報表公式控制。

適合會計/財務主管在月結後執行各種管理報表,例如「月份預算比較表」「當期損益與去年同期比較表」「T 字帳報表」等。流程上的位置是:

  1. 先在 Acc_rpt 報表公式設定定義好一份報表的每一列(科目名稱、公式、列印碼、層級)。
  2. 在本功能選擇該報表編號、設定年度與期間。
  3. 系統呼叫 DARB_QRY_ACC_SELFRPT 取回公式與總帳彙總,逐列套公式算值,並依「資料年數」展開多個年度欄位。
  4. 結果可在格線上檢視、列印成各式報表版型、或匯出 Excel。

本功能只執行、不維護公式

這支表單只負責執行查詢與列印,沒有新增/修改/刪除報表列的能力。要改報表長相(新增一列、改公式、改縮排)請到 Acc_rpt 報表公式設定

前置需求

  • 權限:總帳 → N-130 自訂財報 的瀏覽(查詢)與列印權限(frontmatter permissions: [瀏覽, 列印])。
  • 基礎資料:查詢結果是否正確,取決於下列資料是否齊備——
資料 影響的結果
報表公式設定(Acc_rpt) 必備。每一列的科目名稱、公式、列印碼、層級、百分比基準都由它決定;沒有指定報表編號就無法查詢
傳票 / 總帳餘額 各月份、各期間欄位的實際數字(借貸金額來源)
預算資料(Budget) 報表中「預算」相關欄位(Budget01~12、預算總計、預算當期…)
會計科目分類 / 會計科目 公式使用 ACC_BSAUTOACC_BSCE 自動展開大/中/小分類時的層級與排序
部門資料 限定部門查詢時的篩選依據

操作步驟

本功能是「條件面板+結果格線」的查詢報表,沒有逐筆編輯。操作集中在左側查詢條件面板與工具列。

步驟① 設定查詢條件

查詢條件面板

  1. 報表編號欄輸入或以放大鏡查詢挑選一份報表公式(資料來源為 Acc_rpt)。選定後右側會自動帶出報表名稱。此欄為必填,留空時按查詢不會有任何動作。
  2. 輸入年度(西元年,預設當年)。這是報表的「今年(Year0)」基準年。
  3. 輸入截止日期(月/日,預設 12/31)。系統以「年度+截止日期」當作查詢結束日。
  4. 輸入資料年數(預設 2,上限 1 位數)。代表要往回展開幾個年度欄位(今年、去年、前年…),最多到第 6 年(Year0~Year6)。
  5. 設定當期起始月份/當期截止月份(預設 1 ~ 當月)。系統用這個區間算出「當期」「當期月份」相關欄位;月份會自動限制在 1~12。
  6. 選擇幣別本幣功能幣集團幣(預設本幣)。決定金額用哪一種幣別呈現、以及小數位數。
  7. 視需要輸入部門代號(預設 ALL,代表全部門)。

步驟② 執行查詢

  1. 按工具列的 查詢
  2. 報表編號為空,系統會跳出提示「請輸入報表編號」並中止;補上報表編號後再查即可。
  3. 系統呼叫 DARB_QRY_ACC_SELFRPT,取回報表公式、總帳彙總(依年月分段成月/季/半年/全年/當期)與預算彙總,逐列套用公式算值,並依資料年數動態產生欄位。
  4. 結果顯示在右側格線:每一列是報表公式的一列(科目名稱依公式內的前導縮排呈現層級),欄位則是各年度的月份/季/半年/當期/預算數字。

執行查詢後的結果格線:含多年度月份欄與層級縮排的科目名稱

步驟③ 列印

  1. 列印,從報表清單挑選版型(見欄位連動與附加功能的報表清單)後輸出。
  2. 結果格線本身僅供檢視(唯讀);要保留版面請走 列印 產生報表。

小技巧

改了年度/期間/幣別/報表編號後直接再按一次 查詢 即可重算,欄位抬頭(如「2026/01」「2025/總計」)會跟著年度自動更新。

欄位說明

查詢條件(左側面板)

欄位 必填 說明 / 格式 / 預設
報表編號 指定使用哪份報表公式(對應 Acc_rpt)。空白時無法查詢。挑選後自動帶出報表名稱
報表名稱 唯讀,依報表編號自動帶出
年度 西元年,預設當年;作為「今年(Year0)」基準
截止日期 月/日格式,預設 12/31;與年度組成查詢結束日
資料年數 預設 2、最多 1 位數;往回展開的年度數,並決定 SP 起始年
當期起始月份 預設 1,自動限制 1~12
當期截止月份 預設當月,自動限制 1~12;決定「當期月份」取哪一個月
幣別 本幣 / 功能幣 / 集團幣,預設本幣;決定金額幣別與小數位數
部門代號 預設 ALL(全部門)

結果格線欄位(依公式列為主、欄位隨年度動態產生)

格線的每一列來自報表公式的一列;欄位則由 SelfrptSource 的屬性依「年度位移」動態生成,抬頭會帶上實際年份。

欄位群 說明
序號 報表公式列的序號(LineNo_)
科目名稱 公式列的描述,保留公式內輸入的前導縮排空格以呈現大/中/小分類層級
{年度}/01 ~ /12 該年度各月份金額。Year0 為查詢年度、Year1 為去年、依此類推
{年度}/總計 該年度 12 個月合計
{年度}/當期 當期起始月份~當期截止月份的合計
{年度}/當期月份 「當期截止月份」那一個月的金額
{年度}/第一~四季 各季合計(1-3、4-6、7-9、10-12 月)
{年度}/上半年・下半年 1-6 月、7-12 月合計
…百分比 上述各欄相對於「百分比基準列」同欄的占比(%),詳見下節
預算 01 ~ 12 / 總計 / 當期 / 季 / 半年 取自預算資料,期間切分邏輯與實際數字相同
列印碼 / 小數位數 / 特殊控制 / 加註文字 / 借貸別 / 階層 由報表公式列帶入,控制列印呈現(粗體、底線、小數位等)

欄位抬頭會隨年度變動

欄位抬頭不是固定文字,而是用「查詢年度 − 年度位移」即時組出來的(例如查 2026 年、資料年數 2,就會出現 2026/...2025/... 兩組欄位)。

欄位連動與附加功能

這一節把「輸入某欄位後會發生什麼」「按某按鈕會做什麼」完整列出,全部來自實際程式碼。

報表編號 → 帶出報表名稱、決定可否查詢

  • 當你在報表編號欄選定一份報表,搜尋控件會把對應的報表名稱自動填到右側唯讀欄。
  • 查詢 時系統會先檢查報表編號是否為空:空白即中止並提示「請輸入報表編號」(MessageEnum.PleaseInputReportCode)。這是唯一的硬性擋查條件。

年度 / 資料年數 → 決定撈幾年、欄位抬頭、SP 起始日

  • 資料年數決定結果格線往回展開幾個年度欄位群(Year0、Year1…),最多支援到 Year6(7 個年度)。每一列的公式會對 Year0~Year(資料年數−1) 逐年套算。
  • 年度 + 截止日期組成 SP 查詢的結束日 年度/截止日期;SP 的資料起始日固定為 (年度 − 1)/01/01,亦即固定多撈前一年當基期。
  • 欄位抬頭會用「年度 − 位移」即時計算(例如 Year1 欄抬頭=年度−1)。

當期起始 / 截止月份 → 算「當期」與「當期月份」欄

  • 系統依當期起始~截止月份,把各月金額加總成當期欄;並把當期截止月份那一個月的金額單獨放進當期月份欄。
  • 月份輸入會自動箝制在 1~12(小於 1 補 1、大於 12 補 12)。

幣別 → 換算金額與小數位數

  • 本幣功能幣集團幣 會改變金額採用的幣別欄位(借貸取本幣/功能幣/集團幣),並決定報表的小數位數(功能幣、集團幣、本幣各有自己的小數位設定)。
  • 列印參數的「幣別」文字會帶入對應幣別代碼(功能幣取 _prgpar 2007、集團幣取 2021、本幣取環境設定本位幣)。

科目參數的三種寫法:單一代號 / 區間 / 含子科目

算金額的公式函式(ACC_ISACC_ISAACC_BSACC_SC)第一個科目參數可以有三種寫法:

寫法 範例 意義
單一代號 ACC_IS('1101') 完全比對:只加總科目代號剛好等於 1101 的那一筆,不含任何子科目(如 110101
區間 ACC_IS('1101~1199') 加總科目代號落在 11011199 之間(含頭尾)的所有科目
含子科目(前綴) ACC_IS('1101%') 加總所有以 1101 開頭的科目,1101 本身與其下所有子科目110101110102…)

母科目下掛子科目時用 %

當一個母科目(例如 1101)底下實際掛的是 110101110102 等子科目、明細金額都記在子科目上時,用單一代號 '1101' 會算不到子科目(因為是完全比對)。這時寫 '1101%' 就能一次把 1101 家族全部加總,不必手動去湊一段區間。

% 一定要放在最後面

% 只支援放在科目代號結尾當「前綴合計」用('1101%'),不是萬用字元,不能放中間或開頭。另外要注意前綴是整段比對'1101%' 只含 1101 開頭的科目,不會1102 也算進來;若要同時涵蓋 11011102,請改用它們共同的母層前綴 '110%' 或用區間 '1101~1102'

含子科目寫法只認得檔內既有的科目

前綴合計是靠「本次查詢實際載入的科目資料」去比對出範圍的;某個子科目若這期完全沒有異動、也沒有預算與期初資料,自然不會被算進來(金額本來就是 0,結果不受影響)。

公式自動展開:ACC_BSAUTO / ACC_BSCE

ACC_BSAUTOACC_BSCE 跟其他公式函式(ACC_BSACC_IS…)不一樣:它們不是用來算某一格金額的,而是「展開指令」——你在 Acc_rpt 只設定一列、公式裡寫上它,查詢時系統會把這一列自動長成很多列,每一列才填入真正的 ACC_BSCACC_BS 公式去算金額。等於幫你把整段大/中/小分類的科目清單自動鋪好,不必逐科目手動建列。

兩者的差別在「展開範圍」與「依據什麼資料展開」:

ACC_BSAUTO ACC_BSCE("階層,分類名")
寫法 無參數,直接寫 ACC_BSAUTO 帶參數,如 ACC_BSCE("1,流動資產")
展開範圍 整張表,全部分類一次鋪完 只展開你指定的那一個分類節點往下
依據資料 本期實際有異動的科目(這期有上傳票的才會出現) 會計科目分類表(不管有無異動,整個分類底下都鋪出來)
產出 大分類 → 中分類 → 小分類 → 科目,逐層列出 該節點底下的子分類 + 科目明細
減項 公式前面加 -(例 -ACC_BSCE("1,負債"))可讓展開出來的整段都以減項計入
縮排 自動:中分類縮 4 格、小分類/科目縮 8 格 自動依層級縮排

ACC_BSCE階層參數:1 = 大分類、2 = 中分類、3 = 小分類;分類名就是該分類的名稱(需與會計科目分類裡的名稱一致)。

其餘沒有用到這兩個指令的一般公式列,則原樣保留、由文字計算器(TextCalculatorBll)逐格求值。

什麼時候用哪一個?

想要「整份資產負債表骨架自動生出來、且只列出這期真的有動到的科目」→ 用 ACC_BSAUTO。 想要「在自己排的版面中,某一段(例如『流動資產』)底下的科目自動帶出來」→ 用 ACC_BSCE 指名那一個分類。

科目名稱的縮排來自公式設定

一般(非自動展開)列的層級縮排,是你在 Acc_rpt「科目名稱」欄前面打的空格;系統讀取時刻意只去尾端空白、保留前導縮排,所以報表才有層級感(參見 2026-05-27 變更紀錄)。自動展開列(BSAUTO/BSCE)的縮排則由系統依層級自動加。

公式自動展開:ACC_SCAN(進階版,可指定目標函數)

ACC_SCANACC_BSCE 的進階版——一樣是「展開指令」(在一列公式裡寫上它,查詢時自動長成很多列),但兩點更彈性:

  • 目標算值函數可指定ACC_BSCE 寫死用資產負債表餘額口徑(ACC_BSCACC_BS),ACC_SCAN 可自選 ISAISBSSCCF,因此損益類(ACC_ISACC_ISA)、期初(ACC_SC)、現金流量(ACC_CF)都能掃描展開。
  • 展開範圍可選層級或科目區間:大/中/小分類,或直接指定一段科目代號區間。

寫法:ACC_SCAN('目標','範圍別','範圍內容',抬頭,位數上限)(也支援一組引號的 ACC_SCAN("目標,範圍別,範圍內容,抬頭,位數上限");前面加 - 讓整段以減項計入)。

參數 意義 可填
目標 展開後每列要用的算值函數 ISAISBSSCCF
範圍別 依什麼展開 L 大分類/M 中分類/S 小分類/R 科目範圍
範圍內容 分類名,或 R 時的 起始科目~截止科目(無 ~ 視為單一科目) 例:營業費用6100~6199
抬頭 目前僅 1=科目名稱,省略視同 1 1
位數上限 展開到「科目代號幾碼」為止;省略= 4必須是正整數 46

展開位數上限:逐科目列到「幾碼」為止(2026-07-16 起)

ACC_SCANLMS 分類或 R 科目範圍逐科目展開(大/中/小分類另補標頭列與層級縮排),但只列到「代號長度 ≤ 位數上限」的科目

  • 代號長度超過上限的子科目,不各自成列,金額改由其母科目(代號較短的前綴科目)那一列用 % 前綴合計併入——母科目公式自動變成 ACC_xxx('代號%')(例:ACC_IS('1101%') 涵蓋 1101 及其所有子科目)。母科目底下若無更深子科目,公式維持 ACC_xxx('代號')(不帶 %)。
  • 母子科目同時成列時不重複計數:若母科目(如統制科目 110)與其子科目(如 1101)都在上限內、都各自成列,母列只計「自身金額+未各自成列的子科目」,不會用 110% 把已成列的 1101 再吞一次——保證每個科目金額在整份展開中恰被計入一列。
  • 位數上限預設 4 碼(多數帳套的明細科目層級)。要展更細,把第 5 參數調大,例如 6 就會把 6 碼子科目也各自列出。
  • 孤兒保底:某個超過上限的子科目,若它的短碼母科目不在本次掃描範圍內(沒有可併入的母列),仍會個別列出,金額才不會漏掉。

分類值空白的科目(沒歸小分類/中分類)維持逐科目列出,掛在上一層底下。R 範圍別一樣套用位數上限規則(只是平鋪、不補分類標頭)。

範例

  • ACC_SCAN('IS','L','營業費用',1):把「營業費用」大分類逐科目展開;預設只列到 4 碼科目,更細的子科目金額併入其 4 碼母科目列(母列公式帶 %)。
  • ACC_SCAN('IS','L','營業費用',1,6):同上,但展到 6 碼——6 碼子科目也各自成列(更深的才併入)。
  • ACC_SCAN('IS','R','6100~6199',1):科目 6100~6199 逐科目各一列(同樣受位數上限規範)。

在存檔前先看展開結果

Acc_rpt 報表公式設定 用「模擬表預覽」按鈕,可先看 ACC_SCAN 會展出哪些列(列號/序號/科目名稱/公式),確認無誤再查詢。

百分比基準列 → 算各欄百分比

  • 報表公式中可指定某一列為百分比基準(PercentageBaseline = Y,通常是「營業收入淨額」之類)。
  • 查詢時系統以該基準列的「總計/當期/當期月份」當分母,算出每一列對應欄位的占比(四捨五入到小數 2 位)填入 …百分比 欄。
  • 若沒有任何一列被標為百分比基準,百分比欄位維持 0。

列印(GetReports)

列印 時系統提供下列內建版型(同一份查詢結果可切換不同版型輸出):

報表編號 報表抬頭
N130-1 月份預算比較表
N130-2 預算與實際比較表
N130-3 當期損益與預算比較表
N130-4 月份損益比較表
N130-5 當期損益與去年同期比較表
N130-6 依截止月份與前期比較
N130-7 T 字帳報表 %
N130-8 T 字帳報表
N130-9 當月損益與去年同月比較表 %
N130-7 當期簡表

列印時系統會把查詢結果、報表公式、結束日、查詢期間(年度/起月 ~ 訖月)、部門、年月、幣別等當作報表參數帶入版型。

尚未提供的動作

本功能不提供新增/修改/刪除報表列、也沒有沖帳或轉傳票。報表結構一律回到 Acc_rpt 報表公式設定維護。

列印版型選擇清單(N130-1~N130-9)

常見問題

按了查詢卻沒有任何反應?

最常見原因是報表編號欄空白。本功能會先檢查報表編號,空白時直接中止並提示「請輸入報表編號」。請先在報表編號欄挑一份報表公式再查。

報表有些列數字是 0?

該列公式引用的科目在查詢期間沒有交易(總帳餘額為 0),或公式引用的科目代碼有誤。請到 Acc_rpt 報表公式設定檢查該列公式,並確認 傳票在查詢期間有對應的異動。

百分比欄全部是 0?

百分比是「各列 ÷ 百分比基準列 × 100」。若報表公式裡沒有任何一列被標為百分比基準(PercentageBaseline = Y),或基準列當期/總計為 0,百分比就會是 0。請在 Acc_rpt 把基準列(通常是營收)標好。

預算欄是空的?

預算數字來自預算資料(Budget)。請確認該年度、該科目已維護預算;沒有預算資料時對應欄位會是 0。

科目名稱的層級縮排不見了、變成扁平?

自訂列的縮排來自你在 Acc_rpt「科目名稱」前面打的空格。系統讀取時只去尾端空白、保留前導縮排。若縮排消失,請確認 Acc_rpt 該列科目名稱前確實有打縮排空格(此問題已於 2026-05-27 修正,需確認已更新版本)。

去年、前年的欄位沒出現?

往回展開幾個年度由資料年數控制(預設 2)。若只看到今年欄位,請把資料年數調大;數字越大,展開的年度欄位群越多。

相關功能