业务背景:

在FBL1N/FBL3N/FBL5N未清项报表中,显示总账科目名称、供应商名称1、客户名称1。

解决方案:

FIBF > Settings > Products > of a Customer

添加所需的field,此处称为product,同时需要激活勾选Active

FIBF > Settings > P/S Mod > of a Customer

添加内容

Event:00001650

Product:XXXXXX

Ctr:SE

Function Module:Z_FI_ITEMREPORT

注此处所写入的Function Module需在后续的步骤中去创建。

Se11:Append Structure to RFPOS

在Append Structure中写入你需要添加的field,保存激活。

Se11:Append Structure to RFPOSX

在RFPOSX中加入和RFPOS同样的field,保存激活。

此处这两个structure则是控制layout的数据。

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.

Se38 Run Report RFPOSXEXTEND then click Yes

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

点击yes执行完成。

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