【增强】FI行项目报表增强任意字段
業務背景:例如在FBL1N/FBL3N/FBL5N中顯示總賬科目名稱、供應商名稱1、客戶名稱1
依以下步驟執行:
1.FIBF > Settings > Products > of a Customer
添加所需的field,此處稱為product,同時需要激活勾選Active
2.FIBF > Settings > P/S Mod > of a Customer
添加內容
Event:00001650
Product:XXXXXX
Ctr:SE
Function Module:Z_FI_ITEMREPORT
注此處所寫入的Function Module需在后續的步驟中去創建。
************************************************************************
此處需要注意一點的是,在product 項 必須使用上面創建的product
即 event:00001650
product:ZKNAME1(上面創建的field,用第一個就可以)
fm:Z_FI_ITEMREPORT
泣血提醒,如果這個地方設置錯誤,在進入FBL1N\3N\5N時將不會進入自定義的FM,謹記。
************************************************************************
3.Se11:Append Structure to?RFPOS
在Append Structure中寫入你需要添加的field,保存激活。
4.Se11:Append Structure to?RFPOSX
在RFPOSX中加入和RFPOS同樣的field,保存激活。
此處這兩個structure則是控制layout的數據。
5.Se37 Creating a?Z_FI_FG?Function Group.
then Copy Function?SAMPLE_INTERFACE_00001650?into?Z_FI_ITEMREPORT
此處的Z_FI_ITEMREPORT請與step2中的名稱一致。
加入code實現:
FUNCTION Z_FI_ITEMREPORT.
*"--------------------------------------------------------------------
*"*"局部接口:
*"? IMPORTING
*"???? VALUE(I_POSTAB) LIKE? RFPOS STRUCTURE? RFPOS
*"? EXPORTING
*"???? VALUE(E_POSTAB) LIKE? RFPOS STRUCTURE? RFPOS
*"--------------------------------------------------------------------
*-------------- Initialize Output by using the following line ----------
? E_POSTAB = I_POSTAB.
*BREAK-POINT.
? data: ZKNAME1?? type LFA1-NAME1,
??????? ZDNAME1?? type KNA1-NAME1,
??????? ZSKATTXT? type SKAT-TXT20.
? "得到供應商名稱1
? IF I_POSTAB-KOART = 'K'.
??? select single NAME1 from LFA1
??????????? into? ZKNAME1
??????? where LIFNR = I_POSTAB-KONTO.
? ENDIF.
? "得到客戶名稱1
? IF I_POSTAB-KOART = 'D'.
??? select single NAME1 from KNA1
??????? into? ZKNAME1
??????? where KUNNR = I_POSTAB-KONTO.
? ENDIF.
? "得到總賬科目名稱
??? select single TXT20 from SKAT
??????? into? ZSKATTXT
??????? where SAKNR = I_POSTAB-HKONT
????????? AND KTOPL = '1000'.
?
? E_POSTAB-ZKNAME1 = ZKNAME1.
? E_POSTAB-ZDNAME1 = ZDNAME1.
? E_POSTAB-ZSKATTXT = ZSKATTXT.
ENDFUNCTION.
6.Se38 Run Report?RFPOSXEXTEND??then click?Yes
此處執行的這個pm,是用來激活前面的兩個structure 。
在執行的時候,會提示如下頁面
點擊yes執行。
如遇此種報錯
請找Basis查看系統中是否有安裝note 947573
此Note控制這個設置。
**********************************************************************
此處修正一點,這個NOTE是不可以解決這個問題的,究竟為什么,因為這個NOTE解決的是報錯 003
至于這個原因是什么,我追究了好久,沒有結果,有的人說是T021S這個表的問題,有的人說是別的NOTE,
反正不管了,我給出我的解決方案。
為什么要執行 RFPOSXEXTEND這個程序,其實就是為了將在RFPOS中新增的field加入到結構RFPOSXEXT中,
那不能執行這個程序難道就不能添加到這個結構中了嗎,當然有更直白的方法,
既然在RFPOS和RFPOSX中是采用Append Structure新增field,那么就直接采用Append Structure將
field添加到RFPOSXEXT中不久可以了嗎,就這么簡單!
所以最終的結果是在RFPOS、RFPOSX、RFPOSXEXT三個結構中Append Structure 新增的field,保存激活,OK!
此處給我的教訓就是,要弄清楚每一個步驟的意義是什么,否則還是沒有真正學會它。
***********************************************************************
?到此為止,已經可以實現對layout的任意設置,任意TABLE,任意field。
總結
以上是生活随笔為你收集整理的【增强】FI行项目报表增强任意字段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP维护工厂日历
- 下一篇: 增强——BTE流程简介