会计凭证冲销的BAPI报错 悬赏10元

2021-08-06 16:44发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


下边这两个BAPI都尝试了,都报一样的错误:“E    RW    630    组件 利润中心会计核算 冲销不可能”

但是用 FB08 前台冲销,用一样的参数,就可以冲销成功。


(PS: 原因自己找到了,补充在了后边)


BAPI_ACC_DOCUMENT_REV_POST

BAPI_ACC_GL_POSTING_REV_POST


图片.png



传递参数:

图片.png

这两个BAPI都尝试了,都报一样的错误:

图片.png


但是同一笔会计凭证 : FB08 就能够冲销成功

图片.png


图片.png


系统版本是:

图片.png


微信群里的回答(微信群回答并没有解决问题,下边有我自己debug程序找到的答案):


2472834_E_20210806.pdf


番茄盖饭加俩蛋:
[File]

番茄盖饭加俩蛋:
@SD-沧浪之水-北京 

SD-沧浪之水:
ECC 系统啊

SD-沧浪之水:
不是 S4

wind:
POSTING_INTERFACE_REVERSE_DOC=>这个试试

SD-沧浪之水:
[Photo]

SD-沧浪之水:
我们系统里是没人用过这个,这个能行吗

wind:
   "冲销
      CALL FUNCTION 'CALL_FB08'
        EXPORTING
          i_bukrs      = ls_post-bukrs
          i_belnr      = ls_post-belnr1
          i_gjahr      = ls_post-gjahr1
          i_stgrd      = lv_stgrd
          i_budat      = <fs_operation>-zbudat
          i_no_auth    = abap_true
        EXCEPTIONS
          not_possible = 1
          OTHERS       = 2.

wind:
或者这个

小狗蛋:
bapi开头的那个问题蛮多的,输入参数就那几个,我也碰到过莫名其妙的问题

SD-沧浪之水:
@ABAP-wind-深圳 这个其实里边就是调用BDC 的 FB08

wind:


SD-沧浪之水:
但其实我想用BAPI

wind:
理论上前台可以,这个也可以

SD-沧浪之水:
因为有的情况想回滚

黄粱美梦:
是的,很多事务码都可以这么调用,像VL01N

宇魏:
本来就是要冲销凭证,还回滚到哪?

SD-沧浪之水:
@ABAP-广州-VIGOR 因为还有另外一个 CO 凭证想同时冲销

SD-沧浪之水:
如果 CO 的冲销报错, 这个FI 凭证也终止冲销

宇魏:
DATA : LS_BKPF     TYPE BKPF.
  DATA : LS_REVERSAL TYPE BAPIACREV,
         LV_BUS_ACT  TYPE BAPIACHE09-BUS_ACT,
         LV_OBJ_KEY  TYPE BAPIACREV-OBJ_KEY,
         LT_RETURN   TYPE TABLE OF BAPIRET2,
         LS_RETURN   TYPE BAPIRET2.

*  获取数据
  SELECT SINGLE * FROM BKPF INTO LS_BKPF
    WHERE BUKRS = CHG_LOG-BUKRS
      AND BELNR = CHG_LOG-BELNR
      AND GJAHR = CHG_LOG-GJAHR
      AND XREVERSAL = ''
      .
  IF SY-SUBRC <> 0.
    "MSGTY = 'E'.
    "MSGTX = '表:BKPF(会计核算凭证标题)没有数据或该凭证已冲销!请核查数据!'.
  ENDIF.

*  bapi 参数赋值
  LS_REVERSAL-OBJ_TYPE     = LS_BKPF-AWTYP.
  LS_REVERSAL-OBJ_KEY      = LS_BKPF-AWKEY.
  LS_REVERSAL-OBJ_KEY_R    = LS_BKPF-AWKEY.
  LS_REVERSAL-PSTNG_DATE   = LS_BKPF-BUDAT.
  LS_REVERSAL-FIS_PERIOD   = LS_BKPF-MONAT.
  LS_REVERSAL-COMP_CODE    = LS_BKPF-BUKRS.
  LS_REVERSAL-AC_DOC_NO    = LS_BKPF-BELNR.
  LS_REVERSAL-REASON_REV   = '03'.

*   取得系统 LOGICAL SYSTEM
  CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
    IMPORTING
      OWN_LOGICAL_SYSTEM = LS_REVERSAL-OBJ_SYS.

*   调用 BAPI 函数,冲销会计凭证
  CALL FUNCTION 'BAPI_ACC_DOCUMENT_REV_POST'
    EXPORTING
      REVERSAL = LS_REVERSAL
      BUS_ACT  = LS_BKPF-GLVOR
    IMPORTING
      OBJ_KEY  = LV_OBJ_KEY
    TABLES
      RETURN   = LT_RETURN.

宇魏:
这是从笔记里面找到的代码, 当时项目上就是这么用的,可以冲销

宇魏:
@SD-沧浪之水-北京 看看在你那边环境上能不能有效

SD-沧浪之水:
@ABAP-广州-VIGOR 我用的就是这个BAPI。

宇魏:
看字段是不是都给值了

SD-沧浪之水:
[Photo]

SD-沧浪之水:
LS_REVERSAL-REASON_REV   = '03'.

SD-沧浪之水:
冲销原因我们系统里只有 01, 02 。 你这个03是什么啊

SD-沧浪之水:
估计是我们系统本身有问题。

SD-沧浪之水:
请参与回答问题的同学领取

Robert.S:
当前期间回转                  冲销当月凭证,会在科目的借贷项增加发生额
关闭期间回转                  冲销以前月凭证,会在科目的接待方增加发生额
当前期间的实际回转            冲销当月凭证,红字冲销
关闭期间实际回转              冲销以前月凭证,红字冲销


问题真实原因通过debug程序找到:

首先通过消息号 RW 630 反查程序:

image.png


image.png


然后找到这个动态 call function的点

image.png

image.png

然后再重新debug,到function:COPCA_DOCUMENT_REVERSE_CHECK 里边去看,在哪个地方导致的 返回值 sy-subrc 赋值非 0的

image.png


image.png


image.png


然后进入到function:COPCA_ACTIVE_ACT 里边查看

image.png


然后用 SM30 反查这个配置表:TKA00PCA在SPRO 的配置

image.png

image.png


image.png


2016年开始,这个就没配置过,
而且配置的话,需要把 EPSKZ(行项目)这个勾得打上,调用会计凭证冲销的BAPI才不会报错。

image.png


跟财务顾问咨询了,当时是故意取消这个配置的,因为不想在创建发票的时候产生利润中心凭证(每天单据量几十万,出于减小系统压力的考虑)


所以我在下边的地方添加了增强,跳过这个报错

图片.png


         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


下边这两个BAPI都尝试了,都报一样的错误:“E    RW    630    组件 利润中心会计核算 冲销不可能”

但是用 FB08 前台冲销,用一样的参数,就可以冲销成功。


(PS: 原因自己找到了,补充在了后边)


BAPI_ACC_DOCUMENT_REV_POST

BAPI_ACC_GL_POSTING_REV_POST


图片.png



传递参数:

图片.png

这两个BAPI都尝试了,都报一样的错误:

图片.png


但是同一笔会计凭证 : FB08 就能够冲销成功

图片.png


图片.png


系统版本是:

图片.png


微信群里的回答(微信群回答并没有解决问题,下边有我自己debug程序找到的答案):


2472834_E_20210806.pdf


番茄盖饭加俩蛋:
[File]

番茄盖饭加俩蛋:
@SD-沧浪之水-北京 

SD-沧浪之水:
ECC 系统啊

SD-沧浪之水:
不是 S4

wind:
POSTING_INTERFACE_REVERSE_DOC=>这个试试

SD-沧浪之水:
[Photo]

SD-沧浪之水:
我们系统里是没人用过这个,这个能行吗

wind:
   "冲销
      CALL FUNCTION 'CALL_FB08'
        EXPORTING
          i_bukrs      = ls_post-bukrs
          i_belnr      = ls_post-belnr1
          i_gjahr      = ls_post-gjahr1
          i_stgrd      = lv_stgrd
          i_budat      = <fs_operation>-zbudat
          i_no_auth    = abap_true
        EXCEPTIONS
          not_possible = 1
          OTHERS       = 2.

wind:
或者这个

小狗蛋:
bapi开头的那个问题蛮多的,输入参数就那几个,我也碰到过莫名其妙的问题

SD-沧浪之水:
@ABAP-wind-深圳 这个其实里边就是调用BDC 的 FB08

wind:


SD-沧浪之水:
但其实我想用BAPI

wind:
理论上前台可以,这个也可以

SD-沧浪之水:
因为有的情况想回滚

黄粱美梦:
是的,很多事务码都可以这么调用,像VL01N

宇魏:
本来就是要冲销凭证,还回滚到哪?

SD-沧浪之水:
@ABAP-广州-VIGOR 因为还有另外一个 CO 凭证想同时冲销

SD-沧浪之水:
如果 CO 的冲销报错, 这个FI 凭证也终止冲销

宇魏:
DATA : LS_BKPF     TYPE BKPF.
  DATA : LS_REVERSAL TYPE BAPIACREV,
         LV_BUS_ACT  TYPE BAPIACHE09-BUS_ACT,
         LV_OBJ_KEY  TYPE BAPIACREV-OBJ_KEY,
         LT_RETURN   TYPE TABLE OF BAPIRET2,
         LS_RETURN   TYPE BAPIRET2.

*  获取数据
  SELECT SINGLE * FROM BKPF INTO LS_BKPF
    WHERE BUKRS = CHG_LOG-BUKRS
      AND BELNR = CHG_LOG-BELNR
      AND GJAHR = CHG_LOG-GJAHR
      AND XREVERSAL = ''
      .
  IF SY-SUBRC <> 0.
    "MSGTY = 'E'.
    "MSGTX = '表:BKPF(会计核算凭证标题)没有数据或该凭证已冲销!请核查数据!'.
  ENDIF.

*  bapi 参数赋值
  LS_REVERSAL-OBJ_TYPE     = LS_BKPF-AWTYP.
  LS_REVERSAL-OBJ_KEY      = LS_BKPF-AWKEY.
  LS_REVERSAL-OBJ_KEY_R    = LS_BKPF-AWKEY.
  LS_REVERSAL-PSTNG_DATE   = LS_BKPF-BUDAT.
  LS_REVERSAL-FIS_PERIOD   = LS_BKPF-MONAT.
  LS_REVERSAL-COMP_CODE    = LS_BKPF-BUKRS.
  LS_REVERSAL-AC_DOC_NO    = LS_BKPF-BELNR.
  LS_REVERSAL-REASON_REV   = '03'.

*   取得系统 LOGICAL SYSTEM
  CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
    IMPORTING
      OWN_LOGICAL_SYSTEM = LS_REVERSAL-OBJ_SYS.

*   调用 BAPI 函数,冲销会计凭证
  CALL FUNCTION 'BAPI_ACC_DOCUMENT_REV_POST'
    EXPORTING
      REVERSAL = LS_REVERSAL
      BUS_ACT  = LS_BKPF-GLVOR
    IMPORTING
      OBJ_KEY  = LV_OBJ_KEY
    TABLES
      RETURN   = LT_RETURN.

宇魏:
这是从笔记里面找到的代码, 当时项目上就是这么用的,可以冲销

宇魏:
@SD-沧浪之水-北京 看看在你那边环境上能不能有效

SD-沧浪之水:
@ABAP-广州-VIGOR 我用的就是这个BAPI。

宇魏:
看字段是不是都给值了

SD-沧浪之水:
[Photo]

SD-沧浪之水:
LS_REVERSAL-REASON_REV   = '03'.

SD-沧浪之水:
冲销原因我们系统里只有 01, 02 。 你这个03是什么啊

SD-沧浪之水:
估计是我们系统本身有问题。

SD-沧浪之水:
请参与回答问题的同学领取

Robert.S:
当前期间回转                  冲销当月凭证,会在科目的借贷项增加发生额
关闭期间回转                  冲销以前月凭证,会在科目的接待方增加发生额
当前期间的实际回转            冲销当月凭证,红字冲销
关闭期间实际回转              冲销以前月凭证,红字冲销


问题真实原因通过debug程序找到:

首先通过消息号 RW 630 反查程序:

image.png


image.png


然后找到这个动态 call function的点

image.png

image.png

然后再重新debug,到function:COPCA_DOCUMENT_REVERSE_CHECK 里边去看,在哪个地方导致的 返回值 sy-subrc 赋值非 0的

image.png


image.png


image.png


然后进入到function:COPCA_ACTIVE_ACT 里边查看

image.png


然后用 SM30 反查这个配置表:TKA00PCA在SPRO 的配置

image.png

image.png


image.png


2016年开始,这个就没配置过,
而且配置的话,需要把 EPSKZ(行项目)这个勾得打上,调用会计凭证冲销的BAPI才不会报错。

image.png


跟财务顾问咨询了,当时是故意取消这个配置的,因为不想在创建发票的时候产生利润中心凭证(每天单据量几十万,出于减小系统压力的考虑)


所以我在下边的地方添加了增强,跳过这个报错

图片.png