【增强】FI行项目报表增强任意字段

业务背景:例如在FBL1N/FBL3N/FBL5N中显示总账科目名称、供应商名称1、客户名称1

依以下步骤执行:

1.FIBF > Settings > Products > of a Customer

【增强】FI行项目报表增强任意字段

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

【增强】FI行项目报表增强任意字段

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

【增强】FI行项目报表增强任意字段

添加内容

Event00001650

ProductXXXXXX

CtrSE

Function ModuleZ_FI_ITEMREPORT

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

【增强】FI行项目报表增强任意字段

************************************************************************

此处需要注意一点的是,在product 必须使用上面创建的product

event00001650

productZKNAME1(上面创建的field,用第一个就可以)

fmZ_FI_ITEMREPORT

泣血提醒,如果这个地方设置错误,在进入FBL1N\3N\5N时将不会进入自定义的FM,谨记。

************************************************************************

3.Se11Append Structure to RFPOS

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

4.Se11Append 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

【增强】FI行项目报表增强任意字段

此处的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

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

【增强】FI行项目报表增强任意字段

点击yes执行。

如遇此种报错【增强】FI行项目报表增强任意字段

请找Basis查看系统中是否有安装note 947573

Note控制这个设置。

**********************************************************************

此处修正一点,这个NOTE是不可以解决这个问题的,究竟为什么,因为这个NOTE解决的是报错 003

至于这个原因是什么,我追究了好久,没有结果,有的人说是T021S这个表的问题,有的人说是别的NOTE

反正不管了,我给出我的解决方案。

为什么要执行 RFPOSXEXTEND这个程序,其实就是为了将在RFPOS中新增的field加入到结构RFPOSXEXT

那不能执行这个程序难道就不能添加到这个结构中了吗,当然有更直白的方法,

既然在RFPOSRFPOSX中是采用Append Structure新增field,那么就直接采用Append Structure

field添加到RFPOSXEXT中不久可以了吗,就这么简单!

所以最终的结果是在RFPOSRFPOSXRFPOSXEXT三个结构中Append Structure 新增的field,保存**,OK

此处给我的教训就是,要弄清楚每一个步骤的意义是什么,否则还是没有真正学会它。

***********************************************************************

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