资产跨公司代码转移批量过账

资产跨公司代码转移批量过账调用BDC无法检查,而且BDC无法返回生成的凭证编号,所以调用bapi

  DATA:ls_GENERALPOSTINGDATA  TYPE BAPIFAPO_GEN_INFO,
       ls_TRANSFERTODATA      TYPE BAPIFAPO_TRANSFER_TO,
       ls_TRANSFERPOSTINGDATA TYPE BAPIFAPO_TRANSFER_REV_DISTR,
       ls_FURTHERPOSTINGDATA  TYPE BAPIFAPO_ADD_INFO,
       lt_RETURN_ALL          TYPE STANDARD TABLE OF BAPIRET2,
       ls_RETURN_ALL          TYPE BAPIRET2.

 * 往来变式
  L_RAIFP1-TRAVA = 'Z001'.
* Intracompany transfer
  L_RAIFP1-gsvor = 'UMBU'.
* For intracompany transfer
  L_RAIFP1-vorgn = 'UMAI'."UMAI
* 凭证日期
  L_RAIFP1-BLDAT = F_BUDAT.
* 过账日期
  L_RAIFP1-BUDAT = F_BUDAT.
* 资产日期
  L_RAIFP1-BZDAT = F_BUDAT.

* 公司代码
  LREC_RAIFP2-BUKRS = f_vbukr.
  LREC_RAIFP3-BUKRS = f_vbukr.
* 项目文本
  LREC_RAIFP2-SGTXT = '正式转资'.

  LOOP AT TAB_out7 INTO REC_out7 WHERE chkbx = 'X'.
    L_TABIX = SY-TABIX.
*   货币
    IF REC_out7-WAERS IS INITIAL.
      L_RAIFP1-WAERS = 'CNY'.
    ELSE.
      L_RAIFP1-WAERS = REC_out7-WAERS.
    ENDIF.

*   以前年度价值
    IF NOT REC_out7-ZZJZ2 IS INITIAL.
*      ERP upgrade modify for S/4 HANA(Grammar correction)

      CLEAR:
        ls_GENERALPOSTINGDATA,
        ls_TRANSFERTODATA,
        ls_TRANSFERPOSTINGDATA,
        ls_FURTHERPOSTINGDATA,
        lt_RETURN_ALL.
      ls_GENERALPOSTINGDATA-DOC_DATE   = F_BUDAT.    "凭证日期
      ls_GENERALPOSTINGDATA-PSTNG_DATE = F_BUDAT.    "过账日期
*      ls_GENERALPOSTINGDATA-TRANS_DATE = F_BUDAT.    "资产价值日期
      ls_GENERALPOSTINGDATA-COMP_CODE  = F_VBUKR.    "公司代码
      ls_GENERALPOSTINGDATA-ASSETMAINO = REC_out7-ANLN3.  "预转固资产号
      ls_GENERALPOSTINGDATA-ASSETSUBNO = REC_out7-ANLN4.  "预转固资产子号

      ls_TRANSFERPOSTINGDATA-VALUEDATE  = F_BUDAT.   "资产价值日期


      ls_TRANSFERTODATA-PART_COMCO = F_VBUKR.       "公司代码
      ls_TRANSFERTODATA-PART_ASSET = REC_out7-ANLN1."正式资产号
      ls_TRANSFERTODATA-PART_SUBNO = REC_out7-ANLN1."正式资产子号



      ls_FURTHERPOSTINGDATA-HEADER_TXT = '正式转资'.       "凭证抬头文本

      ls_TRANSFERPOSTINGDATA-TRANSVAR   =  'Z001'.         "往来变式
      ls_TRANSFERPOSTINGDATA-AMOUNT     = REC_out7-ZZJZ2.  "本年度价值
      ls_TRANSFERPOSTINGDATA-CURRENCY   = L_RAIFP1-WAERS.  "货币
      ls_TRANSFERPOSTINGDATA-NEW_ACQ_IN = ''.

      CALL FUNCTION 'BAPI_ASSET_TRANSFER_CHECK'
        EXPORTING
          GENERALPOSTINGDATA  = ls_GENERALPOSTINGDATA
          TRANSFERTODATA      = ls_TRANSFERTODATA
          TRANSFERPOSTINGDATA = ls_TRANSFERPOSTINGDATA
          FURTHERPOSTINGDATA  = ls_FURTHERPOSTINGDATA
        TABLES
          RETURN_ALL          = lt_RETURN_ALL.
      READ TABLE lt_RETURN_ALL INTO ls_RETURN_ALL WITH KEY TYPE = 'E'.
      IF SY-SUBRC <> 0.
        CALL FUNCTION 'BAPI_ASSET_TRANSFER_POST'
          EXPORTING
            GENERALPOSTINGDATA  = ls_GENERALPOSTINGDATA
            TRANSFERTODATA      = ls_TRANSFERTODATA
            TRANSFERPOSTINGDATA = ls_TRANSFERPOSTINGDATA
            FURTHERPOSTINGDATA  = ls_FURTHERPOSTINGDATA
          TABLES
            RETURN_ALL          = lt_RETURN_ALL.
        READ TABLE lt_RETURN_ALL INTO ls_RETURN_ALL WITH KEY TYPE = 'S' ID = 'FAA_POST' .
        IF SY-SUBRC = 0.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              WAIT = 'X'.
          REC_out7-GDATUM1 = F_BUDAT.
          REC_out7-BELNR1  = ls_RETURN_ALL-MESSAGE_V2 .
          MOVE-CORRESPONDING REC_out7 TO REC_ZFI0067T.
          MODIFY TAB_out7 FROM REC_out7 INDEX L_TABIX.
          MODIFY ZFI0067T FROM REC_ZFI0067T.

          MOVE-CORRESPONDING REC_out7 TO REC_ZFI0068T.
          MODIFY ZFI0068T FROM REC_ZFI0068T.
        ELSE.
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ENDIF.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      ENDIF.

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SAP系统中,过账是指将凭证中的会计分录记录在相应的总账科目中的过程。其中,每个分录行都会涉及到不同的公司代码。因此,根据题目所给条件,sap过账的第一行主要不在公司代码中。 首先,对于SAP系统而言,每个公司都会有自己独立的公司代码,用于进行财务和管理记录。公司代码是一个独立的单位,它关联了一组特定的业务规则和会计准则,用于处理该公司的财务交易。因此,通过SAP过账时,根据公司代码的定义,每个过账项目都会涉及到具体的公司代码。 然而,在题目中,明确指出sap过账的第一行主要不在公司代码中。从这一条件可以推断,过账中第一行可能是在公司代码之外的特殊行项目。这样的行项目可能包括临时性的或者是与公司代码无关的费用或收入,例如特殊摊销、贷方差异或与特定业务相关的费用。 具体的情况可能需要根据实际情况进行分析。例如,如果在处理合同费用的过程中,第一行可能是临时的抵消分录或者是包含多个公司代码的分摊费用。也有可能是某些特定的费用或收入需要在第一行进行初始化,然后通过后续行项目进行具体的分配。 总而言之,由于题目没有提供更多的背景信息,因此我们无法准确判断sap过账第一行主要不在公司代码中的具体原因。需要根据实际情况,结合公司的业务操作和sap系统的配置来进行分析和确定。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值