固定资产修改 利用BAPI 修改 增强字段 BAPI_FIXEDASSET_CHANGE <转载>

原文链接:https://blog.csdn.net/beyondeminem/article/details/120676965
对固定资产做了屏幕曾强
在这里插入图片描述
然后写了个RFC来带实现往增强字段写入数据。代码如下:

DATA: companycode LIKE  bapi1022_1-comp_code,
        asset       LIKE  bapi1022_1-assetmaino,
        subnumber   LIKE  bapi1022_1-assetsubno.

  DATA :generaldata        LIKE  bapi1022_feglg001,
        generaldatax       LIKE  bapi1022_feglg001x,
        timedependentdata  LIKE  bapi1022_feglg003,
        timedependentdatax LIKE  bapi1022_feglg003x,
        return             LIKE  bapiret2,
        allocations        LIKE   bapi1022_feglg004,

        allocationsx       LIKE   bapi1022_feglg004x.


  DATA :  lt_extensionin TYPE STANDARD TABLE OF  bapiparex,
          ls_extensionin TYPE  bapiparex.
  DATA: ls_anlu  TYPE bapi_te_anlu.
  CLEAR: companycode,asset ,subnumber,generaldata,generaldatax,
  timedependentdata,timedependentdatax,return.


      IF   i_zanla-sernr IS NOT INITIAL.
        generaldata-serial_no = i_zanla-sernr.
        generaldatax-serial_no = 'X'.
      ENDIF.
      IF   i_zanla-invnr IS NOT INITIAL.
        generaldata-invent_no = i_zanla-invnr.
        generaldatax-invent_no = 'X'.


      ENDIF.

      IF  i_zanla-sernr  IS NOT INITIAL.
        generaldata-serial_no  =    i_zanla-sernr .
        generaldatax-serial_no  =  'X'.
      ENDIF.

      IF i_zanla-kostl IS NOT INITIAL.


        timedependentdata-costcenter = i_zanla-kostl.
        timedependentdata-bus_area = i_zanla-gsber.
        timedependentdatax-bus_area = 'X'.
        timedependentdatax-costcenter = 'X'.
        timedependentdatax-from_date  = 'X'.
        timedependentdata-from_date  = sy-datum.
      ENDIF.

      IF  i_zanla-ord41  IS NOT INITIAL.
        allocations-evalgroup1  =  i_zanla-ord41.
        allocationsx-evalgroup1  =  'X'.
      ENDIF.



      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = i_zanla-bukrs
        IMPORTING
          output = i_zanla-bukrs.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = i_zanla-anln2
        IMPORTING
          output = i_zanla-anln2.

 CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = i_zanla-anln1
        IMPORTING
          output = i_zanla-anln1.


      "增强字段传值
      CLEAR ls_anlu.
      ls_anlu-comp_code       = i_zanla-bukrs . "公司
      ls_anlu-ASSETMAINO  =    i_zanla-ANLN1 .
     " ls_anlu-ASSETSUBNO  =   i_zanla-ANLN2.
      ls_anlu-ZEMPLOYEE_ID = i_zanla-ZEMPLOYEE_ID .
      ls_anlu-ZMAC_ID = i_zanla-ZMAC_ID .
      ls_anlu-ZDISCK_ID = i_zanla-ZDISCK_ID .
      "ls_anlu-zasset_status         = '在用'. "资产状态
      ls_extensionin-structure = 'BAPI_TE_ANLU'.

      ls_extensionin-valuepart1 = ls_anlu.
      APPEND ls_extensionin TO lt_extensionin.



      CALL FUNCTION 'BAPI_FIXEDASSET_CHANGE'
        EXPORTING
          companycode        = i_zanla-bukrs
          asset              = i_zanla-anln1
          subnumber          = i_zanla-anln2
*         GROUPASSET         =
          generaldata        = generaldata
          generaldatax       = generaldatax
*         INVENTORY          =
*         INVENTORYX         =
*         POSTINGINFORMATION =
*         POSTINGINFORMATIONX        =
          timedependentdata  = timedependentdata
          timedependentdatax = timedependentdatax
          allocations        = allocations
          allocationsx       = allocationsx
*         ORIGIN             =
*         ORIGINX            =
*         INVESTACCTASSIGNMNT        =
*         INVESTACCTASSIGNMNTX       =
*         NETWORTHVALUATION  =
*         NETWORTHVALUATIONX =
*         REALESTATE         =
*         REALESTATEX        =
*         INSURANCE          =
*         INSURANCEX         =
*         LEASING            =
*         LEASINGX           =
        IMPORTING
          return             = return
        TABLES
*         DEPRECIATIONAREAS  =
*         DEPRECIATIONAREASX =
*         INVESTMENT_SUPPORT =
          extensionin        = lt_extensionin.
      IF  return-type = 'E'.
        MESSAGE ID return-id TYPE return-type NUMBER return-number
         WITH return-message_v1  return-message_v2  return-message_v3
    return-message_v4 INTO out_message-message.
        out_message-msgtyp = 'E'.

      ELSE.
        out_message-msgtyp = 'S'.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'
*       IMPORTING
*           RETURN        =
          .
        MESSAGE ID return-id TYPE return-type NUMBER return-number
         WITH return-message_v1  return-message_v2  return-message_v3
    return-message_v4 INTO out_message-message.
      ENDIF.

      APPEND  out_message TO t_message.

我用上面这段代码发现修改不了增强字段里的内容 后来debug跟踪才发现。原来需要修改一处用户增强出入口才可以。

EXIT_SAPL1022_001 ZXAISU05

添加代码如下:
在这里插入图片描述

另外关于固定资产 BAPI 的用法,以下代码做个参考
固定资产调拨
BAPI:BAPI_FIXEDASSET_CHANGE
以下代码供参考:

"BAPI导入参数
  DATA: LV_COMPANYCODE          LIKE  BAPI1022_1-COMP_CODE, "公司代码
        LV_ASSET                LIKE  BAPI1022_1-ASSETMAINO, "主资产号
        LV_SUBNUMBER            LIKE  BAPI1022_1-ASSETSUBNO, "资产次级编号
        LV_GROUPASSET           LIKE  BAPI1022_MISC-XANLGR, "标识:资产是集团公司资产
        LS_GENERALDATA          LIKE  BAPI1022_FEGLG001,    "逻辑字段组 001 - 通用数据
        LS_GENERALDATAX         LIKE  BAPI1022_FEGLG001X,
        LS_INVENTORY            LIKE  BAPI1022_FEGLG011,
        LS_INVENTORYX           LIKE  BAPI1022_FEGLG011X,
        LS_POSTINGINFORMATION   LIKE  BAPI1022_FEGLG002,
        LS_POSTINGINFORMATIONX  LIKE  BAPI1022_FEGLG002X,
        LS_TIMEDEPENDENTDATA    LIKE  BAPI1022_FEGLG003, "逻辑字段组003 - 时间相关的数据
        LS_TIMEDEPENDENTDATAX   LIKE  BAPI1022_FEGLG003X,
        LS_ALLOCATIONS          LIKE  BAPI1022_FEGLG004, "逻辑字段组004 - 分配
        LS_ALLOCATIONSX         LIKE  BAPI1022_FEGLG004X,
        LS_ORIGIN               LIKE  BAPI1022_FEGLG009, "逻辑字段组009 - 原件
        LS_ORIGINX              LIKE  BAPI1022_FEGLG009X,
        LS_INVESTACCTASSIGNMNT  LIKE  BAPI1022_FEGLG010,
        LS_INVESTACCTASSIGNMNTX LIKE  BAPI1022_FEGLG010X,
        LS_NETWORTHVALUATION    LIKE  BAPI1022_FEGLG006,
        LS_NETWORTHVALUATIONX   LIKE  BAPI1022_FEGLG006X,
        LS_REALESTATE           LIKE  BAPI1022_FEGLG007,
        LS_REALESTATEX          LIKE  BAPI1022_FEGLG007X,
        LS_INSURANCE            LIKE  BAPI1022_FEGLG008,
        LS_INSURANCEX           LIKE  BAPI1022_FEGLG008X,
        LS_LEASING              LIKE  BAPI1022_FEGLG005,
        LS_LEASINGX             LIKE  BAPI1022_FEGLG005X,
        LS_GLO_TIME_DEP         LIKE  BAPI1022_GLO_TIME_DEP. "Globalization fields: Date interval of time-dependent data
  "BAPI导出参数
  DATA: LS_RETURN       LIKE  BAPIRET2.             "返回参数
  "BAPI表参数
  DATA: LT_DEPRECIATIONAREAS  LIKE  STANDARD TABLE OF BAPI1022_DEP_AREAS,
        LT_DEPRECIATIONAREASX LIKE  STANDARD TABLE OF BAPI1022_DEP_AREASX,
        LT_INVESTMENT_SUPPORT LIKE  STANDARD TABLE OF BAPI1022_INV_SUPPORT,
        LT_EXTENSIONIN        LIKE  STANDARD TABLE OF BAPIPAREX.
  DATA: LS_DEPRECIATIONAREAS  LIKE  BAPI1022_DEP_AREAS,
        LS_DEPRECIATIONAREASX LIKE  BAPI1022_DEP_AREASX,
        LS_INVESTMENT_SUPPORT LIKE  BAPI1022_INV_SUPPORT,
        LS_EXTENSIONIN        LIKE  BAPIPAREX.

  DATA: LS_ANLU                TYPE BAPI_TE_ANLU.

  DATA: LT_DATA TYPE TABLE OF TY_ALV.
  DATA: LS_DATA TYPE TY_ALV.


  LT_DATA[] = GT_ALV[].
  DELETE LT_DATA WHERE SEL NE 'X'.
  DELETE LT_DATA WHERE ICON NE ''. "状态灯不为空说明校验不通过

  LOOP AT LT_DATA ASSIGNING FIELD-SYMBOL(<LW_DATA>).

    "清空BAPI参数
    CLEAR:LV_COMPANYCODE,LV_ASSET,LV_SUBNUMBER,LV_GROUPASSET,
    LS_GENERALDATA,LS_GENERALDATAX,LS_INVENTORY,LS_INVENTORYX,LS_POSTINGINFORMATION, LS_POSTINGINFORMATIONX,
    LS_TIMEDEPENDENTDATA,LS_TIMEDEPENDENTDATAX,LS_ALLOCATIONS,LS_ALLOCATIONSX,LS_ORIGIN,LS_ORIGINX,
    LS_INVESTACCTASSIGNMNT,LS_INVESTACCTASSIGNMNTX,LS_NETWORTHVALUATION,LS_NETWORTHVALUATIONX,LS_REALESTATE,LS_REALESTATEX,
    LS_INSURANCE,LS_INSURANCEX,LS_LEASING,LS_LEASINGX,LS_GLO_TIME_DEP.
    CLEAR:LS_RETURN.
    CLEAR:LS_DEPRECIATIONAREAS,LS_DEPRECIATIONAREASX,LS_INVESTMENT_SUPPORT,LS_EXTENSIONIN.
    FREE:LT_DEPRECIATIONAREAS,LT_DEPRECIATIONAREASX,LT_INVESTMENT_SUPPORT,LT_EXTENSIONIN.

    <LW_DATA>-ANLN1  = |{ <LW_DATA>-ANLN1  ALPHA = IN }|.
    <LW_DATA>-KOSTL  = |{ <LW_DATA>-KOSTL  ALPHA = IN }|.
    <LW_DATA>-KOSTLV = |{ <LW_DATA>-KOSTLV ALPHA = IN }|.

* Company code
    LV_COMPANYCODE = <LW_DATA>-BUKRS.
    LV_ASSET = <LW_DATA>-ANLN1.

    IF <LW_DATA>-ZCHG_ANLZ EQ 'X'.

* Cost center
      LS_TIMEDEPENDENTDATA-COSTCENTER = <LW_DATA>-KOSTL.
      LS_TIMEDEPENDENTDATAX-COSTCENTER = 'X'.

* Cost center responsible for asset
      LS_TIMEDEPENDENTDATA-RESP_CCTR = <LW_DATA>-KOSTLV.
      LS_TIMEDEPENDENTDATAX-RESP_CCTR = 'X'.

      "有效期起始日期
      LS_TIMEDEPENDENTDATA-FROM_DATE = <LW_DATA>-ADATU."有效期起始日期
      LS_TIMEDEPENDENTDATAX-FROM_DATE = 'X'.

      "资产停用
      LS_TIMEDEPENDENTDATA-SHUTDOWN = <LW_DATA>-XSTIL."资产停用
      LS_TIMEDEPENDENTDATAX-SHUTDOWN = 'X'.
    ENDIF.

    IF  <LW_DATA>-ZCHG_ANLU EQ 'X'.
      CLEAR LS_ANLU.
      LS_ANLU-COMP_CODE       = <LW_DATA>-BUKRS.
      LS_ANLU-ASSETMAINO       = <LW_DATA>-ANLN1.
      LS_ANLU-ZSTATUS         = <LW_DATA>-ZSTATUS. "资产状态
      LS_EXTENSIONIN-STRUCTURE = 'BAPI_TE_ANLU'.
      LS_EXTENSIONIN-VALUEPART1 = LS_ANLU.
      APPEND LS_EXTENSIONIN TO LT_EXTENSIONIN.
    ENDIF.

    IF <LW_DATA>-ZCHG_ANLH EQ 'X'.
      LS_GENERALDATA-MAIN_DESCRIPT = <LW_DATA>-ANLHTXT. "资产主号说明
      LS_GENERALDATAX-MAIN_DESCRIPT = 'X'.
    ENDIF.


    CALL FUNCTION 'BAPI_FIXEDASSET_CHANGE'
      EXPORTING
        COMPANYCODE          = LV_COMPANYCODE
        ASSET                = LV_ASSET
        SUBNUMBER            = LV_SUBNUMBER
        GROUPASSET           = LV_GROUPASSET
        GENERALDATA          = LS_GENERALDATA
        GENERALDATAX         = LS_GENERALDATAX
        INVENTORY            = LS_INVENTORY
        INVENTORYX           = LS_INVENTORYX
        POSTINGINFORMATION   = LS_POSTINGINFORMATION
        POSTINGINFORMATIONX  = LS_POSTINGINFORMATIONX
        TIMEDEPENDENTDATA    = LS_TIMEDEPENDENTDATA
        TIMEDEPENDENTDATAX   = LS_TIMEDEPENDENTDATAX
        ALLOCATIONS          = LS_ALLOCATIONS
        ALLOCATIONSX         = LS_ALLOCATIONSX
        ORIGIN               = LS_ORIGIN
        ORIGINX              = LS_ORIGINX
        INVESTACCTASSIGNMNT  = LS_INVESTACCTASSIGNMNT
        INVESTACCTASSIGNMNTX = LS_INVESTACCTASSIGNMNTX
        NETWORTHVALUATION    = LS_NETWORTHVALUATION
        NETWORTHVALUATIONX   = LS_NETWORTHVALUATIONX
        REALESTATE           = LS_REALESTATE
        REALESTATEX          = LS_REALESTATEX
        INSURANCE            = LS_INSURANCE
        INSURANCEX           = LS_INSURANCEX
        LEASING              = LS_LEASING
        LEASINGX             = LS_LEASINGX
        GLO_TIME_DEP         = LS_GLO_TIME_DEP
      IMPORTING
        RETURN               = LS_RETURN
      TABLES
        DEPRECIATIONAREAS    = LT_DEPRECIATIONAREAS
        DEPRECIATIONAREASX   = LT_DEPRECIATIONAREASX
        INVESTMENT_SUPPORT   = LT_INVESTMENT_SUPPORT
        EXTENSIONIN          = LT_EXTENSIONIN.
    IF SY-SUBRC EQ 0.
      IF LS_RETURN-TYPE EQ 'S'.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            WAIT = 'X'.

        CALL FUNCTION 'MESSAGE_TEXT_BUILD'
          EXPORTING
            MSGID               = LS_RETURN-ID
            MSGNR               = LS_RETURN-NUMBER
            MSGV1               = LS_RETURN-MESSAGE_V1
            MSGV2               = LS_RETURN-MESSAGE_V2
            MSGV3               = LS_RETURN-MESSAGE_V3
            MSGV4               = LS_RETURN-MESSAGE_V4
          IMPORTING
            MESSAGE_TEXT_OUTPUT = <LW_DATA>-MESSAGE.

        <LW_DATA>-ICON = ICON_GREEN_LIGHT.

      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

        CALL FUNCTION 'MESSAGE_TEXT_BUILD'
          EXPORTING
            MSGID               = LS_RETURN-ID
            MSGNR               = LS_RETURN-NUMBER
            MSGV1               = LS_RETURN-MESSAGE_V1
            MSGV2               = LS_RETURN-MESSAGE_V2
            MSGV3               = LS_RETURN-MESSAGE_V3
            MSGV4               = LS_RETURN-MESSAGE_V4
          IMPORTING
            MESSAGE_TEXT_OUTPUT = <LW_DATA>-MESSAGE.

        <LW_DATA>-ICON = ICON_RED_LIGHT.

      ENDIF.

    ELSE.
      <LW_DATA>-ICON = ICON_RED_LIGHT.
      <LW_DATA>-MESSAGE = '调拨失败,未传入数据'.

    ENDIF.

  ENDLOOP.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值