• 事务码ABAVN-资产卡片报废-BAPI_ASSET_RETIREMENT_POST


    注意点:
    1.
    ls_retirementdata-compl_ret = ‘X’."标志: 记帐全部报废
    有完全报废标识的情况,
    报废金额ls_retirementdata-amount = iv_anbtr
    报废百分比ls_retirementdata-perc_rate = iv_prozs
    报废数量ls_retirementdata-quantity = iv_menge
    不可有值否则报错:“不允许使用此组合表目”
    金额,百分比,数量必输切只能输一个

    2.
    有报废金额金额时报废金额币别必输
    有报废数量时报废单位必输

    代码如下
    FUNCTION zfm_rfc_anln1_scrap.
    *“----------------------------------------------------------------------
    "“本地接口:
    *” IMPORTING
    *” VALUE(IV_BUKRS) TYPE BUKRS OPTIONAL
    *" VALUE(IV_ANLN1) TYPE ANLN1 OPTIONAL
    *" VALUE(IV_BLDAT) TYPE BLDAT DEFAULT SY-DATUM
    *" VALUE(IV_BUDAT) TYPE BUDAT DEFAULT SY-DATUM
    *" VALUE(IV_BZDAT) TYPE BZDAT OPTIONAL
    *" VALUE(IV_ANBTR) TYPE ANBTR OPTIONAL
    *" VALUE(IV_PROZS) TYPE PROZS OPTIONAL
    *" VALUE(IV_MENGE) TYPE MENGE_D OPTIONAL
    *" EXPORTING
    *" VALUE(EV_STATUS) TYPE CHAR1
    *" VALUE(EV_MESSAGE) TYPE CHAR100
    *" VALUE(EV_XBLNR) TYPE XBLNR
    *"----------------------------------------------------------------------
    *(修改日志)--------------------------------------------------------
    *

    • 日志号 修改人 修改时间 修改说明 传输号码

    • 001

    DATA: ls_generalpostingdata TYPE bapifapo_gen_info,
    ls_retirementdata TYPE bapifapo_ret,
    ls_doc TYPE bapifapo_doc_ref,
    ls_return TYPE bapiret2,
    ls_furtherpostingdata TYPE bapifapo_add_info.

    IF iv_bukrs IS INITIAL.
    ev_status = ‘E’.
    ev_message = ‘公司代码为空’.
    ENDIF.

    IF iv_anln1 IS INITIAL.
    ev_status = ‘E’.
    IF ev_message IS INITIAL.
    ev_message = ‘资产编码为空’.
    ELSE.
    ev_message = ev_message && ‘/’ && ‘资产编码为空’.
    ENDIF.
    ENDIF.

    IF iv_bzdat IS INITIAL.
    ev_status = ‘E’.
    IF ev_message IS INITIAL.
    ev_message = ‘资产价值日期为空’.
    ELSE.
    ev_message = ev_message && ‘/’ && ‘资产价值日期为空’.
    ENDIF.
    ENDIF.

    IF iv_anbtr IS NOT INITIAL .
    DATA(lv_add) = 1.
    ENDIF.

    "记账金额,百分比,数量必输切只能输一个检查
    IF iv_prozs IS NOT INITIAL .
    lv_add = lv_add + 1.
    ENDIF.

    IF iv_menge IS NOT INITIAL .
    lv_add = lv_add + 1.
    ENDIF.

    IF lv_add <> 1 .
    ev_status = ‘E’.
    IF ev_message IS INITIAL.
    ev_message = ‘记账金额,百分比,数量必输切只能输一个’.
    ELSE.
    ev_message = ev_message && ‘/’ && ‘记账金额,百分比,数量必输切只能输一个’.
    ENDIF.

    ENDIF.

    IF ev_status <> ‘E’.

    ls_generalpostingdata-username    = sy-uname.
    ls_generalpostingdata-doc_type    = 'AA'.
    ls_generalpostingdata-doc_date    = iv_bldat."凭证中的凭证日期
    ls_generalpostingdata-pstng_date  = iv_bldat."凭证中的过账日期
    ls_generalpostingdata-fis_period  = iv_bldat+4(2)."会计期间
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • ls_generalpostingdata-trans_date = iv_bzdat. "换算日期
      ls_generalpostingdata-comp_code = iv_bukrs. "公司代码
      ls_generalpostingdata-assetmaino = iv_anln1. "主资产号
      ls_generalpostingdata-assetsubno = ‘0000’.
      ls_generalpostingdata-assettrtyp = ‘’.
    SELECT SINGLE
      aktiv ,
      meins
      FROM anla
      INTO ( @DATA(lv_aktiv) ,@DATA(lv_meins) )
      WHERE anln1 = @iv_anln1
        AND anln2 = '0000'.
    IF sy-subrc = 0.
      IF lv_aktiv = sy-datum+0(4)."当年的用250
        ls_generalpostingdata-assettrtyp  = '250'.
      ELSE.
        ls_generalpostingdata-assettrtyp  = '200'."往年的用200
      ENDIF.
    ENDIF.
    
    IF iv_anbtr <> 0.
      ls_retirementdata-amount  = iv_anbtr. "记账金额
      ls_retirementdata-currency   = 'CNY'. "记账金额
    ENDIF.
    
    IF iv_prozs <> 0.
      ls_retirementdata-perc_rate  = iv_prozs. "百分比
    ENDIF.
    
    IF iv_menge <> 0.
      ls_retirementdata-quantity   = iv_menge. "数量
      ls_retirementdata-base_uom  = lv_meins."单位
    ENDIF.
    
    ls_retirementdata-valuedate  = iv_bzdat."参考日期
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • ls_retirementdata-compl_ret = ‘X’."标志: 记帐全部报废
    ls_furtherpostingdata-header_txt = iv_anln1 && '资产报废'."将文本写入报废会计凭证的抬头文本
    ls_furtherpostingdata-item_text = iv_anln1 && '资产报废'."将文本写入报废会计凭证的抬头文本
    
    CALL FUNCTION 'BAPI_ASSET_RETIREMENT_POST'
      EXPORTING
        generalpostingdata = ls_generalpostingdata
        retirementdata     = ls_retirementdata
        furtherpostingdata = ls_furtherpostingdata
      IMPORTING
        documentreference  = ls_doc
        return             = ls_return.
    IF ls_return-type = 'S'.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
      IF ls_return-number = '374' AND
      ls_return-id     = 'AA'.
    
        ev_status = 'S'.
        ev_message = '报废成功'.
        ev_xblnr = ls_return-message_v2.
      ENDIF.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      ev_status = 'E'.
      ev_message = ls_return-message.
    ENDIF.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    ENDIF.
    ENDFUNCTION.

  • 相关阅读:
    OpenSSL加解密算法使用方法
    SAS|proc report
    二叉树的自下而上、从右到左的层次遍历算法实现
    【实用工具】Centos 安装ARL灯塔
    spring cloud 快速上手系列 -> 02-配置中心 Config -> 021-Config服务端
    【Elasticsearch教程11】Mapping字段类型之日期时间date date_nanos
    Rust中级教程:指针生态(引用、原始指针、智能指针)and内存操作(Stack、Heap)
    Debezium的基本使用(以MySQL为例)
    【Vulnhub靶场】THALES:1
    Ubuntu 22.04配置/etc/rc.local开机自启文件
  • 原文地址:https://blog.csdn.net/FQHX_116/article/details/126364297