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需在后续的步骤中去创建。

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实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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

在执行的时候,会提示如下页面

点击yes执行完成。

到此为止,已经可以实现对layout的任意设置,任意TABLE,任意field。