SAP收发存报表程序
?
1.1?????????????????????????????????????????????????????????????????表結構關系
| 相關數據表 | 表描述 | 字段名稱 | 字段描述 |
| EBAN | 采購申請抬頭表 | ? | ? |
| EBKN | 采購申請項目明細表 | ? | ? |
| EKKO | 采購訂單抬頭表 | ? | ? |
| EKPO | 采購訂單項目明細表 | KNTTP | 科目設置類型 |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
| EKKN | 采購訂單科目分配數據 | EBELN | ? |
| ? | ? | EBELP | ? |
| ? | ? | ZEKKN | 帳戶分配的序列號 |
| ? | ? | PS_PSP_PNR | 工作分解結構元素 (WBS 元素) |
| ? | ? | NPLNR | 科目分配的網絡號 |
| AFKO | 生產抬頭文件 | AUFNR | 生產訂單號 |
| ? | ? | PRONR | WBS元素指針 |
| AUFK | 生產訂單長文本 | ? | ? |
| ? | ? | ? | ? |
| MSPRH | 項目庫存:歷史(無價值字段) | SOBKZ | 特殊庫存標識 |
| ? | ? | PSPNR | 工作分解結構元素 (WBS 元素) |
| ? | ? | LFGJA | 當前期間的會計年度 |
| ? | ? | LFMON | 當前期間 (記帳期間) |
| ? | ? | PRLAB | 非限制使用的估價的庫存 |
| ? | ? | PRINS | 質量在檢的庫存 |
| ? | ? | PRSPE | 凍結庫存 |
| ? | ? | PREIN | 所有限制批次的總計庫存 |
| MSPR | 項目庫存(無價值字段) | ? | (當前期存儲位置層次項目庫存) |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
| MSSQ | 項目庫存(無價值字段) | ? | (當前期工廠層次項目庫存) |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
| MSSQH | ? | ? | ? |
| ? | ? | ? | ? |
| QBEW | 項目庫存的分開評估(僅包含項目庫存及估價數據) | ? | ? |
| QBEWH | 項目庫存的分開評估(歷史記錄) | ? | ? |
| EBEW | 銷售訂單庫存的分開評估 | ? | ? |
| EBEWH | 銷售訂單庫存的分開評估(歷史記錄) | ? | ? |
| MBEW | 常規庫存的評估(僅包含常規庫存價值數據,不包含項目庫存的相關數據) | ? | ? |
| MBEWH | 常規庫存的評估(歷史記錄) | ? | ? |
| ? | ? | ? | ? |
| PRPS | WBS結構數據 | POSID | WBS元素 |
| ? | ? | ? | MSEG-PSPNR 搜索此表可得到WBS號碼; |
| PROJ | 項目定義結構表 | ? | ? |
| ? | ? | ? | MSEG-PSPNR,搜索此表可得到項目定義; WBS元素(24碼)找其項目定義,也必須透過指針來尋找項目定義; |
| ? | ? | ? | ? |
| MKPF | 物料憑證抬頭數據 | ? | ? |
| MSEG | 物料憑證行項目數據 ? | ? | ? |
| EKET | 采購訂單收貨 | ? | ? |
| QINF | 物料和供應商的 QM 信息記錄 | MATNR | 物料號 |
| ? | ? | LIEFERANT | 供應商帳戶號 |
| ? | ? | WERK | 工廠 |
| ? | ? | FREI_DAT | 下達的有效到期日 |
| ? | ? | NOINSP | QM 信息記錄中的檢驗控制 |
| MARC | 物料工廠數據 | QMATV | 物料工廠的質檢設置是否存在 |
| ? | ? | ? | ? |
| QMAT | 檢驗類型 - 物料參數 | MATNR | 物料號 |
| ? | ? | WERKS | 工廠 |
| ? | ? | ART | 檢驗類型 |
| ? | ? | APA | 首選的檢驗類型 |
| ? | ? | AFR | 處理單位的檢驗 |
| ? | ? | AKTIV | 檢驗類型 - 物料合并已激活 |
| ? | ? | ? | ? |
| RBKP | 發票抬頭數據 | ? | ? |
| ? | ? | ? | ? |
| RSEG | 發票行項目 | ? | ? |
| ? | ? | ? | ? |
?
相關的事務代碼:
MB52 – 庫存綜覽顯示
MB51 – 物料憑證清單
?
?
1.2?????????????????????????????????????????????????????????????????自定義表清單及結構定義
程序處理邏輯內表一:
| 字段名稱 | 字段描述 | ? |
| ? | ||
?
?
?
?
?
程序處理邏輯內表二和內表三:
| 字段名稱 | 字段描述 | 值 |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
?
?
?
?
1.3?????????????????????????????????????????????????????????????????輸入/輸出數據格式定義
?
| 源 數 據 | SAP系 統 | ||||||
| 序號 | 域名 | 類型 (長度) | 描述 | 字段名 | 類型 (長度) | 描述 | 轉換關系 |
| 1)???????? ? | ? | ? | ? | ? | ? | ? | ? |
| 2)???????? ? | ? | ? | ? | ? | ? | ? | ? |
| 3)???????? ? | ? | ? | ? | ? | ? | ? | ? |
| 4)???????? ? | ? | ? | ? | ? | ? | ? | ? |
| 5)???????? ? | ? | ? | ? | ? | ? | ? | ? |
| 6)???????? ? | ? | ? | ? | ? | ? | ? | ? |
| 7)???????? ? | ? | ? | ? | ? | ? | ? | ? |
| 8)???????? ? | ? | ? | ? | ? | ? | ? | ? |
| 9)???????? ? | ? | ? | ? | ? | ? | ? | ? |
?
2?????????輸入/輸出畫面格式設計要求
?
2.1?????????????????????????????????????????????????????????????????報表選擇屏幕
以下是本程序的第一個畫面:初始化畫面
?
| 名??? 稱 | 屬 性 | 必輸項 (是/否) | 默認值 | 其他特殊要求 | 參考表字段 ? |
| 工廠 | (多值) | ? | ? | 權限檢查 | MSEG-WERKS |
| 存儲位置 | (多值) | ? | ? | ? | ? |
| WBS元素 | (多值) | ? | ? | ? | MSEG- PS_PSP_PNR |
| 物料類型 | (多值) | ? | ? | ? | ? |
| 物料組 | (多值) | ? | ? | ? | ? |
| 評估類 | (多值) | ? | ? | ? | ? |
| 期間(YYYYMM) | (單值) | ? | ? | ? | MKPF- BUDAT之年月 |
| 輸出明細資料 | (單值) | ? | N | ? | (核選框) |
注:
“屬性”字段注明: 多選, 單選, 單選鈕/, 選框或其他等;
?
?
2.2?????????????????????????????????????????????????????????????????客戶化增強功能畫面設計
?
?
(以下是格式化畫面設計要求)
?
?
?
3?????????程序處理邏輯說明
?
1.????? 生成選擇輸入畫面,用戶輸入參數;檢查權限;
?
2.????? 按用戶選擇畫面參數,選擇指定范圍的數據,結合如下取數規則,生成報表:
?
3.????? 取數規則:
?
安裝項目定義掩碼:X-XX NN NN
制作項目定義掩碼:X-X-XX NN NN
| 序號 | 字段 | 取數規則 | 備注 |
| 1)??????? ? | 物料編號 | ? | ? |
| 2)??????? ? | 物料描述 | MAKT- | ? |
| 3)??????? ? | 單位 | MARA-MEINS; | ? |
| 4)??????? ? | 物料類型 | MARA-MTART; | ? |
| 5)??????? ? | 單重 | 如果物料類型為ZFS1或ZFS2,則: 其期初庫存及相關交易一定是項目庫存相關:如果WBS元素的第四位為 “-”,則取WBS元素第5位~第10位;否則取WBS元素的第3位~第8位 作為 WBS 元素“基本編碼”; ? 由 生產訂單抬頭表中找產品物料編碼、WBS元素第5位~第10位 與上述 WBS 元素“基本編碼”一致的訂單,取其生產訂單抬頭文本的第四行,如果為零,再找下一個生產訂單直到取值非零為止; 如果最終由生產訂單中不能取值,則取 采購訂單行項目: 由EKKN/EKKO表中找:物料編碼、WBS元素第5位~第10位 與上述 WBS 元素“基本編碼”一致的采購訂單,取其采購該項目文本的第四行(第一頁標簽),如果為零,再找下一個采購訂單直到取值非零為止; 最終找不到,則置零; 如果是其他物料類型,則取物料主數據中基本數據視圖之毛重; | ? |
| 6)??????? ? | 物料組 | MARA-MATKL; | ? |
| 7)??????? ? | 商務分類 | 如果物料類型為ZFS1或ZFS2,則由物料號碼+WBS元素找任一生產訂單文本的第六行,壓縮空格后取前15位; 可在取單重時同時取商務分類:生產訂單文本的第六行或采購訂單相應文本標簽下的第六行; 如果物料類型為其他,則置空; | ? |
| 8)??????? ? | 評估類 | 由MBEWH/QBEWH中取(分別對于常規庫存和項目庫存); | ? |
| 9)??????? ? | 工廠 | ? | ? |
| 10)???? ? | WBS元素 | ? | ? |
| 11)???? ? | 項目定義 | ? | ? |
| 12)???? ? | 項目描述 | ? | ? |
| 13)???? ? | 期初數量 ? 期初金額 | 對于常規庫存,按用戶選取的物料/工廠/存儲位置/評估類型范圍,按如下規則取期初庫存數據: 1) 截取報表期間的的年份、月份,按“物料”+“工廠“+ “倉庫”+“年份”+“月份-1” 讀取MARDH 表的數據.? ??? 注:“月份-1”是指報表期間的前一個月 1.1)如果讀取成功,保存至“上月期末庫存臨時字段”, 1.2)如果讀取不成功,再從MARDH找“=月份”或“>月份且最接近的紀錄”, 1.2.1)如果找到了,就保存至“上月期末庫存臨時字段” 1.2.2)如果找不到,則取MARD的當前庫存保存至”上月期末庫存臨時字段”(非限制庫存/質檢庫存); 參照上述規則,按物料/工廠/期間年份/期間月份,由表MBEWH/MBEW中取期初單價數據; ? 對于項目庫存,按用戶選取的物料/工廠/存儲位置/WBS元素范圍,由表MSPR/MSPRH中期初數量數據,由QBEW/QBEWH中取單價數據(VERPR-移動平均價); ? 按前一字段取值規則得到的數量*單價即為期初金額; | ? |
| 14)???? ? | 收入數量 收入金額 | 以下取第一部分:由表MSEG中按移動類型取物料編號不為空的記錄: 收入數量&收入金額: 由表MKPF/MSEG中按選擇的數據范圍,取以下移動類型記錄其對應字段 MSEG-MENGE/DMBTR的值,如果MSEG- SHKZG 為 “S”,則記為本字段的正項,如果為 “H”,則為本字段的負項: 移動類型范圍為 100 ~ 199 , 561/562, 501/502, 921/922, 301~499,541~544 ; ? 對于發票確認對收入金額的影響部分取值規則,請參照 “發出數量”字段的取值說明。 | ? |
| 15)???? ? | 發出數量 發出金額 | 由MSEG中取物料編號非空的記錄: 收入數量&收入金額: 由表MKPF/MSEG中按選擇的數據范圍,取以下移動類型記錄其對應字段 MSEG-MENGE/DMBTR的值,如果MSEG- SHKZG 為 “S”,則記為本字段的負項,如果為 “H”,則為本字段的正項: 移動類型范圍為 201 ~ 299 , 551/552, 645/646, 901~914 ,? 923/924 , 301~499, 541~544 ; ? 第二部分: 還要取移動類型為101/102/122/161/162, 物料號非空,但MSEG- KZVBR字段為 “V”的記錄(對應的MSEG-KNTTP= “K/P/S/R”之一) :其數量和價值分別累加到相應的 “物料/工廠(可能還有WBS元素)” 記錄的 “發出數量/發出金額”中, 如果MSEG- SHKZG 為 “S”,則記為本字段的正項,如果為 “H”,則為本字段的負項; ? 以下取第三部分(由發票校驗的差異調整部分,RSEG- KNTTP =K/P/R/S 的記錄): 由RBKP取當期的所有發票憑證號碼。由RBKP-BELNR找表RSEG:如果RSEG-KNTTP 為 “K/P/R/S”之一,且RSEG-MATNR 非空且RSEG-EFKOR 非空,則說明發票確認有對直接采購消耗的存貨物資的金額調整記賬,但此部分的調整記賬,是同時反映在收入金額和(消耗)發出金額上,沒有經過庫存帳。所以以下繼續處理取得的值必須要同時累加到 “收入金額”和 “發出金額”上,但收入數量和發出數量不變更(發票交易不會帶來數量變化): 由 RSEG- BELNR + RSEG- GJAHR 搜索 BKPF-BWKEY, 取BKPF- BELNR(會計憑證號碼);由 BKPF-BELNR 取表BSEG 中 BSEG-MATR = RSEG-MANR .AND. BSEG- EBELN = RSEG-EBELN .AND. BSEG-EBELP=RSEG-EBELP 的記錄,如果BSEG- SHKZG = “S”則取 BSEG- DMBTR 的值為調整金額暫存值;如果BSEG- SHKZG = “H”: BSEG- DMBTR 的負值為調整金額暫存值; ? 如果RSEG-KNTTP = “Q” ,或為空,則舍棄此 “調整金額暫存值”;否則,分別將此金額累加到 “收入金額”和“發出金額”中(對應關鍵字段:物料+工廠(或者加WBS元素)); ? | ? |
| 16)???? ? | 盤點數量 | 按指定期間和數據范圍,由MKPF/MSEG中取移動類型為 “701/702/711/712” 的交易記錄字段MSEG-MENGE/ DMBTR(基本單位數量/本位幣金額); 如果MSEG- SHKZG 為 “S”,則記為本字段的正項,如果為 “H”,則為本字段的負項; | ? |
| 17)???? ? | 盤點金額 | 參照前一字段的說明; | ? |
| 18)???? ? | 調整金額 | 庫存價值調整: 不對應庫存交易,對應發票確認時因采購訂單價格與發票價格差異導致的對庫存金額的調整(此時庫存數量不變), 或者調整庫存物料的單價時也導致庫存金額變化; 庫存價值調整金額,僅當按公司出具報表時,該字段值才有效。因為系統沒有記錄各存儲位置的價格更改和價值更新(價值更改是在評估范圍層次或WBS元素層次有效); 以下是第一部分: 單價修改的憑證上 "價值修改"可能對應: 存貨價值的改變及差異的改變: 無論是按S或V計價, 只要是價格改變, 存貨價值一定是變化的. 取MLCR-BDATJ/POPER為報告期間的所有記錄,得到憑證號+會計年度+項目號(MLCR-BELNR/KJAHR/POSNR)+存貨價值修改(MLCR-SALK3); 再按上述 三個字段(MLCR-BELNR/KJAHR/POSNR) 取 表 MLIT-MATNR/BWKEY(評估范圍)/WBS號; 如果上述過程由MLCR中取得的金額為零(SALK3),則以相同的(MLCR-BELNR /KJAHR /POSNR) 及前一期間再取MLCR-SALK3, 以該值置換符號(乘以 -1),則得到報告期間的庫存調整金額; 單價調整:可能針對常規庫存或項目庫存。取值時要將物料號碼及WBS元素和工廠代碼一同取值; ???????? 以下是第二部分: 由表RSEG/RBKP中取價值修改記錄。 由表RBKP中取當前報表期間的發票憑證抬頭數據記錄,由此表的憑證號找表RSEG-STOCK POSTING 非零的記錄,得到 RSEG-WERKS/RSEG-MATNR 的庫存價值變更。如果RSEG-KNTTP為空,則累加到此報表的工廠+物料的 “調整金額”中(該字段的值有正項,也可能有負項,直接累加到“調整金額”中);如果RSEG-KNTTP= “Q”,則該調整金額屬于項目庫存金額的調整,必須由RSEG-EBELN 和 RSEG-EBELP(采購訂單號碼及行項目號碼)找PO的行項目的WBS元素號碼,而將該 RSEG-STOCK POSTING 的金額寫入 “工廠+物料+WBS元素” 的值中; ? | ? |
| 19)???? ? | 期末數量 | =期初數量+收入數量-發出數量 | ? |
| 20)???? ? | 期末金額 | =期初金額+收入金額-發出金額+調整金額; | ? |
| 21)???? ? | 差異數量 | =期末數量-(畫面輸入期間的下一期間)期初數量(按期初數量取數規則得到) | ? |
| 22)???? ? | 差異金額 | =期末金額-(畫面輸入期間的下一期間)期初金額(按期初金額取值規則得到) | ? |
| 23)???? ? | 構件噸位 | 單重*期末數量 / 1000 | ? |
?
?
4. 如果用戶未輸入存儲位置,則表示是在工廠層次出具報表,取報表記錄關鍵字為: 工廠代碼/物料編碼/WBS元素/商務分類(物料組、物料類型依附于該三個鍵值),所有數量和金額按此鍵值匯總; 同時對于 “收入數量”“收入金額”“發出數量”“發出金額”字段,不統計移動類型 311~316;
5. 如果用戶輸入了存儲位置,則取值表字段 “工廠代碼/存儲位置/物料編碼/WBS元素/商務分類”,相應的取數結果均按物料+工廠+存儲位置+WBS元素+商務分類層次累計;對于 “收入數量”“收入金額”“發出數量”“發出金額”字段,所統計的移動類型無限制;
6. 最終輸出方式:
如果用戶在畫面上選擇了 “輸出明細資料”(Y”,則首先按取數規則表的字段格式輸出清單;
否則不執行明細清單資料的輸出;
接下來,在同一清單上,再附加如下分類統計表:
除了列出上表格式的按料號的明細外,還需要列出如下分類小計報表:
附加清單一:按WBS元素分類匯總的收發存明細表(僅對WBS元素非空的記錄進行小計并分類匯總輸出);
附加清單二:按商務分類匯總的收發存明細表(僅列出物料類型為 “ZFS1/ZF2”的每一商務分類的小計);
附加清單三:按商務分類+項目定義分類匯總的收發存明細表;
附加清單四:按評估類分類匯總的收發存明細資料;
?
請依次輸出。相應清單字段如下:
?
| ? | ? | 附加清單一 | 附加清單二 | 附加清單三 | 附加清單四 |
| 1)??????? ? | 物料編號 | ? | ? | ? | ? |
| 2)??????? ? | 物料描述 | ? | ? | ? | ? |
| 3)??????? ? | 單位 | ? | ? | ? | ? |
| 4)??????? ? | 物料類型 | ? | ? | ? | ? |
| 5)??????? ? | 單重 | ? | ? | ? | ? |
| 6)??????? ? | 物料組 | ? | ? | ? | ? |
| 7)??????? ? | 商務分類 | ? | X | X | ? |
| 8)??????? ? | 評估類 | ? | ? | ? | X |
| 9)??????? ? | 工廠 | ? | ? | ? | ? |
| 10)???? ? | WBS元素 | X | ? | ? | ? |
| 11)???? ? | 項目定義 | ? | ? | X | ? |
| 12)???? ? | 項目描述 | ? | ? | O | ? |
取數規則表中的其余字段,均要輸出;
?
?
總結
以上是生活随笔為你收集整理的SAP收发存报表程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP 库存物资收发存报表主要思路
- 下一篇: 中国三大相声世家