SAP 修改记录写入的思考

119 篇文章 9 订阅
100 篇文章 14 订阅

上一篇 调用SAP 采购配额维护 SAP ABAP 采购配额维护-CSDN博客 ME_UPDATE_QUOTA没有写入修改记录里面,使得从修改记录的表数据读取的报表/接口 取不到数据了

参考 https://wenku.baidu.com/view/95052a8ccd22bcd126fff705cc17552707225ea3.html?_wkts_=1709621750543&bdQuery=%E4%BF%9D%E5%AD%98%E6%95%B0%E6%8D%AE%E8%87%B3CDHDR

找到SAP S4 已有的function ZWT_DEBI_WRITE_DOCUMENT

FUNCTION ZWT_DEBI_WRITE_DOCUMENT.
*"----------------------------------------------------------------------
*"*"Verbuchungsfunktionsbaustein:
*"
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(OBJECTID) LIKE  CDHDR-OBJECTID
*"             VALUE(TCODE) LIKE  CDHDR-TCODE
*"             VALUE(UTIME) LIKE  CDHDR-UTIME
*"             VALUE(UDATE) LIKE  CDHDR-UDATE
*"             VALUE(USERNAME) LIKE  CDHDR-USERNAME
*"             VALUE(PLANNED_CHANGE_NUMBER) LIKE  CDHDR-PLANCHNGNR
*"                             DEFAULT SPACE
*"             VALUE(OBJECT_CHANGE_INDICATOR) LIKE  CDHDR-CHANGE_IND
*"                             DEFAULT 'U'
*"             VALUE(PLANNED_OR_REAL_CHANGES) LIKE  CDHDR-CHANGE_IND
*"                             DEFAULT SPACE
*"             VALUE(NO_CHANGE_POINTERS) LIKE  CDHDR-CHANGE_IND
*"                             DEFAULT SPACE
*"             VALUE(N_KNA1) LIKE  KNA1 STRUCTURE  KNA1
*"             VALUE(O_YKNA1) LIKE  KNA1 STRUCTURE  KNA1
*"             VALUE(N_KNB1) LIKE  KNB1 STRUCTURE  KNB1
*"             VALUE(O_YKNB1) LIKE  KNB1 STRUCTURE  KNB1
*"             VALUE(UPD_KNA1) LIKE  CDPOS-CHNGIND DEFAULT SPACE
*"             VALUE(UPD_KNB1) LIKE  CDPOS-CHNGIND DEFAULT SPACE
*"             VALUE(UPD_KNBK) LIKE  CDPOS-CHNGIND DEFAULT SPACE
*"       TABLES
*"              XKNBK STRUCTURE  FKNBK
*"              YKNBK STRUCTURE  FKNBK
*"----------------------------------------------------------------------


CALL FUNCTION 'CHANGEDOCUMENT_OPEN'
  EXPORTING OBJECTCLASS = 'DEBI           '
            OBJECTID    = OBJECTID
            PLANNED_CHANGE_NUMBER = PLANNED_CHANGE_NUMBER
            PLANNED_OR_REAL_CHANGES = PLANNED_OR_REAL_CHANGES
  EXCEPTIONS SEQUENCE_INVALID = 1
             OTHERS           = 2.

CASE SY-SUBRC.
  WHEN 1. MESSAGE A001(F2) WITH 'SEQUENCE INVALID'.
  WHEN 2. MESSAGE A001(F2) WITH 'OPEN ERROR'.
ENDCASE.

* KNA1
IF UPD_KNA1                           NE SPACE.
   CALL FUNCTION 'CHANGEDOCUMENT_SINGLE_CASE'
     EXPORTING  TABLENAME           = 'KNA1                          '
                WORKAREA_OLD        = O_YKNA1
                WORKAREA_NEW        = N_KNA1
                CHANGE_INDICATOR    = UPD_KNA1
                DOCU_DELETE         = 'X'
     EXCEPTIONS NAMETAB_ERROR       = 1
                OPEN_MISSING        = 2
                POSITION_INSERT_FAILED = 3
                OTHERS              = 4.

   CASE SY-SUBRC.
     WHEN 1. MESSAGE A001(F2) WITH 'NAMETAB-ERROR'.
     WHEN 2. MESSAGE A001(F2) WITH 'OPEN MISSING'.
     WHEN 3. MESSAGE A001(F2) WITH 'INSERT ERROR'.
     WHEN 4. MESSAGE A001(F2) WITH 'SINGLE ERROR'.
   ENDCASE.
ENDIF.

* KNB1
IF UPD_KNB1                           NE SPACE.
   CALL FUNCTION 'CHANGEDOCUMENT_SINGLE_CASE'
     EXPORTING  TABLENAME           = 'KNB1                          '
                WORKAREA_OLD        = O_YKNB1
                WORKAREA_NEW        = N_KNB1
                CHANGE_INDICATOR    = UPD_KNB1
                DOCU_DELETE         = 'X'
     EXCEPTIONS NAMETAB_ERROR       = 1
                OPEN_MISSING        = 2
                POSITION_INSERT_FAILED = 3
                OTHERS              = 4.

   CASE SY-SUBRC.
     WHEN 1. MESSAGE A001(F2) WITH 'NAMETAB-ERROR'.
     WHEN 2. MESSAGE A001(F2) WITH 'OPEN MISSING'.
     WHEN 3. MESSAGE A001(F2) WITH 'INSERT ERROR'.
     WHEN 4. MESSAGE A001(F2) WITH 'SINGLE ERROR'.
   ENDCASE.
ENDIF.



* KNBK
IF UPD_KNBK                           NE SPACE.
   CALL FUNCTION 'CHANGEDOCUMENT_MULTIPLE_CASE'
     EXPORTING  TABLENAME           = 'KNBK                          '
                CHANGE_INDICATOR    = UPD_KNBK
                DOCU_DELETE         = 'X'
     TABLES     TABLE_OLD           = YKNBK
                TABLE_NEW           = XKNBK
     EXCEPTIONS NAMETAB_ERROR       = 1
                OPEN_MISSING        = 2
                POSITION_INSERT_FAILED = 3
                OTHERS              = 4.

   CASE SY-SUBRC.
     WHEN 1. MESSAGE A001(F2) WITH 'NAMETAB-ERROR'.
     WHEN 2. MESSAGE A001(F2) WITH 'OPEN MISSING'.
     WHEN 3. MESSAGE A001(F2) WITH 'INSERT ERROR'.
     WHEN 4. MESSAGE A001(F2) WITH 'MULTIPLE ERROR'.
   ENDCASE.
ENDIF.


CALL FUNCTION 'CHANGEDOCUMENT_CLOSE'
  EXPORTING  OBJECTCLASS    = 'DEBI           '
             OBJECTID       = OBJECTID
             DATE_OF_CHANGE = UDATE
             TIME_OF_CHANGE = UTIME
             TCODE          = TCODE
             USERNAME       = USERNAME
OBJECT_CHANGE_INDICATOR = OBJECT_CHANGE_INDICATOR
NO_CHANGE_POINTERS           = NO_CHANGE_POINTERS
  EXCEPTIONS HEADER_INSERT_FAILED   = 1
             OBJECT_INVALID         = 2
             OPEN_MISSING           = 3
             NO_POSITION_INSERTED   = 4
             OTHERS                 = 5.

CASE SY-SUBRC.
  WHEN 1. MESSAGE A001(F2) WITH 'INSERT HEADER FAILED'.
  WHEN 2. MESSAGE A001(F2) WITH 'OBJECT INVALID'.
  WHEN 3. MESSAGE A001(F2) WITH 'OPEN MISSING'.
  WHEN 5. MESSAGE A001(F2) WITH 'CLOSE ERROR'.
ENDCASE.

ENDFUNCTION.

底层无非4个function 

1、CHANGEDOCUMENT_OPEN 开启 / 初始化 

2、CHANGEDOCUMENT_SINGLE_CASE 单个

3、CHANGEDOCUMENT_MULTIPLE_CASE 批量

4、CHANGEDOCUMENT_CLOSE 关闭 

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gavin_gxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值