SAP_ABAP_FI_BAPI清单案例教程——固定资产创建_BAPI_FIXEDASSET_OVRTAKE_CREATE_AS01

SAP ABAP 顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读304次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提参考ALV/REPORT|SMARTFROM|SCREEN|OLE|BAPI|BDC|PI|IDOC|RFC|API|WEBSERVICE|Enhancement|UserExits|Badi|Debughttps://blog.csdn.net/java_zhong1990/article/details/132469977目标: 掌握SAP FI模块,主要流程相关的BAPI 函数的使用,主要有如下模块: 

凭证创建  | 固定资产创建


一 背景说明

1.1 什么是SAP BAPI.

        BAPI是SAP系统标准函数,比如:采购申请创建函数、采购订单创建函数等等。

1.2.1 模块导航 

会计凭证创建SAP_ABAP_FI_BAPI清单案例教程——采购付款/销售收款_BAPI_ACC_DOCUMENT_POST_F-02-CSDN博客
固定资产创建SAP_ABAP_FI_BAPI清单案例教程——固定资产创建_BAPI_FIXEDASSET_OVRTAKE_CREATE_AS01-CSDN博客

1.2.2 BAPI清单

BAPI_ACC_DOCUMENT_POST会计凭证创建
BAPI_FIXEDASSET_OVRTAKE_CREATE固定资产创建

二 代码模板

2.1 固定资产创建

REPORT zficp002.

INCLUDE ZFICP002_TOP.
INCLUDE ZFICP002_FRM.

INITIALIZATION.
  PERFORM initialization.

AT SELECTION-SCREEN .
  CASE sscrfields-ucomm .
    WHEN 'FC01'.
      PERFORM download_template
                  USING
                     '固定资产切换数据导入模板.xls'
                     'ZFICP002'.
    WHEN OTHERS.
  ENDCASE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file .
  PERFORM select_file CHANGING p_file .

START-OF-SELECTION .
  PERFORM upload_data .
  PERFORM show_data .
*&---------------------------------------------------------------------*
*& 包含               ZFICP002_TOP
*&---------------------------------------------------------------------*

TYPE-POOLS: esp1,slis .

TABLES: sscrfields,t001 .

TYPES: BEGIN OF tt_extd ,
         t_msg TYPE esp1_message_tab_type,
         style TYPE lvc_t_styl,
       END OF tt_extd .

DATA: go_cx        TYPE REF TO cx_root,
      lv_msg       TYPE string,
      lv_msg_total TYPE string.

TYPES: BEGIN OF tt_show,
         id       TYPE num08,       "索引号
         anlkl    TYPE anla-anlkl,  "资产分类
         bukrs    TYPE anla-bukrs,  "公司代码
         txt50    TYPE anla-txt50,  "描述1
         txa50    TYPE anla-txa50,  "描述2
         anlhtxt  TYPE anlh-anlhtxt,"资产主号文本
         sernr    TYPE anla-sernr,  "序列号
         invnr    TYPE anla-invnr,  "存货号
         menge    TYPE anla-menge,  "数量
         meins    TYPE anla-meins,  "单位
         invzu    TYPE anla-invzu,  "库存注记
         aktiv    TYPE anla-aktiv,  "资本化日期
         kostl    TYPE anlz-kostl,  "成本中心
         kostlv   TYPE anlz-kostlv, "责任成本中心
         caufn    TYPE anlz-caufn,  "内部订单
         werks    TYPE anlz-werks,  "工厂
         stort    TYPE anlz-stort,  "位置
         raumn    TYPE anlz-raumn,  "房间
         afasl_01 TYPE anlb-afasl,  "区域01 折旧码
         ndjar_01 TYPE anlb-ndjar,  "区域01 计划使用(年)
         ndper_01 TYPE anlb-ndper,  "区域01 计划使用(月)
         afabg_01 TYPE anlb-afabg,  "区域01 折旧开始日期
         ndabj_01 TYPE anlc-ndabj,  "区域01 已折旧时间(年)
         ndabp_01 TYPE anlc-ndabp,  "区域01 已折旧时间(月)
*         afasl_20 TYPE anlb-afasl, "区域20 折旧码
*         ndjar_20 TYPE anlb-ndjar, "区域20 计划使用(年)
*         ndper_20 TYPE anlb-ndper, "区域20 计划使用(月)
*         afabg_20 TYPE anlb-afabg, "区域20 折旧开始日期
*         ndabj_20 TYPE anlc-ndabj, "区域20 已折旧时间(年)
*         ndabp_20 TYPE anlc-ndabp, "区域20 已折旧时间(月)

         bwasl    TYPE tabw-bwasl,  "交易类型
         bzdat    TYPE bzdat,       "资产价值日
         anbtr    TYPE anbtr,       "金额
         budat    TYPE budat,       "过账日期

         kansw_01 TYPE kansw,       "区域01 原值
         knafa_01 TYPE knafa,       "区域01 累计折旧(年前)
         nafag_01 TYPE nafag,       "区域01 累计折旧(本年)
         kaafa_01 TYPE kaafa,       "区域01 计划外折旧
*         kansw_20 TYPE kansw, "区域20 原值
*         knafa_20 TYPE knafa, "区域20 累计折旧(年前)
*         nafag_20 TYPE nafag, "区域20 累计折旧(本年)
*         kaafa_20 TYPE kaafa, "区域20 计划外折旧
         abgja    TYPE t093b-abgja,
         history,                   "区分当年数据、历史数据
         anln1    TYPE anla-anln1,  "主资产号
         light.                     "处理状态
         INCLUDE    TYPE tt_extd.
TYPES: END OF tt_show .

DATA: gs_key                 LIKE bapi1022_key ,         "要创建的关键字字段
      gs_generaldata         LIKE bapi1022_feglg001 ,    "通用数据
      gs_generaldatax        LIKE bapi1022_feglg001x ,   "通用数据
      gs_inventory           LIKE bapi1022_feglg011,     "库存
      gs_inventoryx          LIKE bapi1022_feglg011x,    "库存
      gs_postinginformation  LIKE bapi1022_feglg002,     "记帐信息
      gs_postinginformationx LIKE bapi1022_feglg002x,    "记帐信息
      gs_timedependentdata   LIKE bapi1022_feglg003 ,    "时间相关的数据
      gs_timedependentdatax  LIKE bapi1022_feglg003x ,   "时间相关的数据
      lv_asset               LIKE bapi1022_1-assetmaino, "主资产号
      gt_depreciationareas   LIKE TABLE OF bapi1022_dep_areas WITH HEADER LINE,  "折旧范围
      gt_depreciationareasx  LIKE TABLE OF bapi1022_dep_areasx WITH HEADER LINE, "折旧范围
      gt_cumulatedvalues     LIKE TABLE OF bapi1022_cumval WITH HEADER LINE,     "已传输的累计值
      gt_postedvalues        LIKE TABLE OF bapi1022_postval WITH HEADER LINE,    "已过帐的传输值
      gt_transactions        LIKE TABLE OF bapi1022_trtype WITH HEADER LINE,     "年度的转帐过程中历史资产的业务
      gt_return              LIKE TABLE OF bapiret2 WITH HEADER LINE,            "返回参数
      gs_return              LIKE bapiret2.                                      "返回参数

DATA: gt_show TYPE TABLE OF tt_show WITH HEADER LINE,
      ls_msg  TYPE  esp1_message_wa_type,
      lt_msg  TYPE  esp1_message_tab_type,
      gs_layo TYPE lvc_s_layo,
      gs_fcat TYPE lvc_s_fcat,
      gt_fcat TYPE lvc_t_fcat.

DATA: bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

DATA: lv_error TYPE  c.

"ADD BY HXM 20180115
TYPES: BEGIN OF typ_t093c,
         burks TYPE t093c-bukrs,
         datum TYPE t093c-datum,
       END OF typ_t093c.
DATA:lt_t093c TYPE TABLE OF typ_t093c,
     ls_t093c TYPE typ_t093c.

DATA:bzdat TYPE sy-datum.


SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE TEXT-b01 .
  PARAMETERS p_file TYPE localfile ."OBLIGATORY .
SELECTION-SCREEN END OF BLOCK b01 .

SELECTION-SCREEN FUNCTION KEY: 1 .
*&---------------------------------------------------------------------*
*& 包含               ZFIDG010_FRM
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  SELECT_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--PC_FILE  text
*----------------------------------------------------------------------*
FORM select_file  CHANGING pc_file.
  DATA: lt_filetab  TYPE filetable WITH HEADER LINE .
  DATA: rc          TYPE i,
        file_filter TYPE string. "file filter

*定义file filter,注意定义的格式,显示的时候最后一个为默认的显示
*与你定义的DEFAULT_EXTENSION无关

  file_filter = 'Excel Files (*.xls)|*.xls|*.xlsx|All Files (*.*)|*.*'.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
*     window_title            =
      default_extension       = '*.xls'
*     default_filename        =
      file_filter             = file_filter
*     with_encoding           =
*     initial_directory       =
*     multiselection          =
    CHANGING
      file_table              = lt_filetab[]
      rc                      = rc
*     user_action             =
*     file_encoding           =
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4
      OTHERS                  = 5.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  IF lt_filetab[] IS NOT INITIAL.
    READ TABLE lt_filetab INDEX 1.
    pc_file = lt_filetab .
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  UPLOAD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM upload_data .

  DATA: lt_data TYPE TABLE OF alsmex_tabline WITH HEADER LINE .
  FIELD-SYMBOLS: <value> .

  IF p_file IS INITIAL .
    MESSAGE '请选择数据文件' TYPE 'S' DISPLAY LIKE 'E' .
    STOP .
  ENDIF .

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = p_file
      i_begin_col             = 1
      i_begin_row             = 5
      i_end_col               = 60
      i_end_row               = 20000
    TABLES
      intern                  = lt_data
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

  LOOP AT lt_data .

    AT NEW row .
      CLEAR gt_show .
    ENDAT .

    ASSIGN COMPONENT lt_data-col OF STRUCTURE gt_show TO <value> .
    IF sy-subrc EQ 0 .

      IF  lt_data-col EQ '0008' OR lt_data-col EQ '0031' OR lt_data-col EQ '0033'
       OR lt_data-col EQ '0034' OR lt_data-col EQ '0035' OR lt_data-col EQ '0036'
       OR lt_data-col EQ '0037' OR lt_data-col EQ '0038' OR lt_data-col EQ '0039'
       OR lt_data-col EQ '0040'."数量、金额字段不需要输入','
        REPLACE ALL OCCURRENCES OF REGEX ',' IN lt_data-value WITH ''.
      ENDIF.
      CONDENSE lt_data-value.

      "抛出异常
      CLEAR: lv_msg.
      TRY.
          <value> = lt_data-value .
        CATCH cx_root INTO go_cx.
          lv_msg = go_cx->if_message~get_text( ).
          IF lv_msg IS NOT INITIAL .
            lv_msg_total = lv_msg_total && lv_msg.
          ENDIF .
      ENDTRY.

    ENDIF .

    AT END OF row .
      PERFORM conversion_exit_alpha_input USING gt_show-kostl .
      PERFORM conversion_exit_alpha_input USING gt_show-kostlv .
      PERFORM conversion_exit_alpha_input USING gt_show-anlkl .
      PERFORM conversion_exit_alpha_input USING gt_show-caufn .
      PERFORM conversion_exit_alpha_input USING gt_show-werks .
      PERFORM conversion_exit_alpha_input USING gt_show-invnr .
      PERFORM check_data .
      IF gt_show-t_msg IS NOT INITIAL .
        gt_show-light = '1' .
      ENDIF .
      APPEND gt_show .
    ENDAT .

  ENDLOOP .
**  获取过账日期,凭证日期
*  IF GT_SHOW[] IS NOT INITIAL.
*    CLEAR:LT_T093C ,LS_T093C.
*  SELECT  * INTO CORRESPONDING FIELDS OF TABLE lt_t093c
*    FROM T093C
*    FOR ALL ENTRIES IN GT_SHOW
*    WHERE BUKRS = GT_SHOW-BUKRS.
*
*  READ TABLE LT_T093C INTO LS_T093C INDEX 1.
*  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  SHOW_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM show_data .

  DEFINE add_fcat.
    gs_fcat-fieldname = &1.
    gs_fcat-coltext   = &2.
    gs_fcat-edit      = &3.
    gs_fcat-checkbox  = &4.
    gs_fcat-ref_field = &5.
    gs_fcat-ref_table = &6.
    gs_fcat-cfieldname = &7.
    APPEND gs_fcat TO gt_fcat.
    CLEAR gs_fcat.
  END-OF-DEFINITION.
  add_fcat 'LIGHT'   '处理状态' '' '' '' '' ''.
  add_fcat 'ANLN1'   '主资产号' '' '' '' '' ''.
  add_fcat 'ANLKL'   '资产分类' '' '' '' '' ''.
  add_fcat 'BUKRS'   '公司代码' '' '' '' '' ''.
  add_fcat 'TXT50'   '描述1' '' '' '' '' ''.
  add_fcat 'TXA50'   '描述2' '' '' '' '' ''.
  add_fcat 'ANLHTXT' '资产主号文本' '' '' '' '' ''.
  add_fcat 'SERNR'   '序列号' '' '' '' '' ''.
  add_fcat 'MENGE'   '数量' '' '' '' '' ''.
  add_fcat 'MEINS'   '单位' '' '' '' '' ''.
  add_fcat 'INVZU'   '库存注记' '' '' '' '' ''.
  add_fcat 'AKTIV'   '资本化日期' '' '' '' '' ''.
  add_fcat 'KOSTL'   '成本中心' '' '' '' '' ''.
  add_fcat 'KOSTLV'  '责任成本中心' '' '' '' '' ''.
  add_fcat 'CAUFN'   '内部订单' '' '' '' '' ''.
  add_fcat 'WERKS'   '工厂' '' '' '' '' ''.
  add_fcat 'STORT'   '位置' '' '' '' '' ''.
  add_fcat 'RAUMN'   '房间' '' '' '' '' ''.
  add_fcat 'AFASL_01'   '(区域01)折旧码' '' '' '' '' ''.
  add_fcat 'NDJAR_01'   '(区域01)计划使用(年)' '' '' '' '' ''.
  add_fcat 'NDPER_01'   '(区域01)计划使用(月)' '' '' '' '' ''.
  add_fcat 'AFABG_01'   '(区域01)折旧开始日期' '' '' '' '' ''.
  add_fcat 'NDABJ_01'   '(区域01)已折旧时间(年)' '' '' '' '' ''.
  add_fcat 'NDABP_01'   '(区域01)已折旧时间(月)' '' '' '' '' ''.
*  add_fcat 'AFASL_20'   '(区域20)折旧码' '' '' '' '' ''.
*  add_fcat 'NDJAR_20'   '(区域20)计划使用(年)' '' '' '' '' ''.
*  add_fcat 'NDPER_20'   '(区域20)计划使用(月)' '' '' '' '' ''.
*  add_fcat 'AFABG_20'   '(区域20)折旧开始日期' '' '' '' '' ''.
*  add_fcat 'NDABJ_20'   '(区域20)已折旧时间(年)' '' '' '' '' ''.
*  add_fcat 'NDABP_20'   '(区域20)已折旧时间(月)' '' '' '' '' ''.
  add_fcat 'BWASL'   '交易类型' '' '' '' '' ''.
  add_fcat 'BZDAT'   '资产价值日' '' '' '' '' ''.
  add_fcat 'ANBTR'   '金额' '' '' '' '' ''.
  add_fcat 'BUDAT'   '过账日期' '' '' '' '' ''.
  add_fcat 'KANSW_01'   '(区域01)原值' '' '' '' '' ''.
  add_fcat 'KNAFA_01'   '(区域01)累计折旧(年前)' '' '' '' '' ''.
  add_fcat 'NAFAG_01'   '(区域01)累计折旧(本年)' '' '' '' '' ''.
*  add_fcat 'KANSW_20'   '(区域20)原值' '' '' '' '' ''.
*  add_fcat 'KNAFA_20'   '(区域20)累计折旧(年前)' '' '' '' '' ''.
*  add_fcat 'NAFAG_20'   '(区域20)累计折旧(本年)' '' '' '' '' ''.

  gs_layo-cwidth_opt = 'X' .
  gs_layo-excp_fname = 'LIGHT' .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'PF_STATUS_SET'
      i_callback_user_command  = 'USER_COMMAND'
      is_layout_lvc            = gs_layo
      it_fieldcat_lvc          = gt_fcat
      i_default                = 'X'
      i_save                   = 'A'
    TABLES
      t_outtab                 = gt_show.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  INITIALIZATION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM initialization .

  DATA: ls_dyntxt TYPE smp_dyntxt .
  ls_dyntxt-icon_id = icon_export.
  ls_dyntxt-quickinfo  = '模板下载'.
  ls_dyntxt-icon_text  = '模板下载'.
  sscrfields-functxt_01 = ls_dyntxt.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PF_STATUS_SET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM pf_status_set USING rt_extab TYPE slis_t_extab.

  SET PF-STATUS 'ALV' EXCLUDING rt_extab .

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
                     rs_selfield TYPE slis_selfield.

  rs_selfield-refresh    = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.

  CASE r_ucomm.
    WHEN 'CHECK'.
      PERFORM acc_document USING 'X' .

    WHEN 'POST'.
      PERFORM acc_document USING space .

    WHEN '&IC1' .
      READ TABLE gt_show INDEX rs_selfield-tabindex .
      rs_selfield-fieldname = to_upper( rs_selfield-fieldname ).

      CASE rs_selfield-fieldname.
        WHEN 'LIGHT'.
          PERFORM c14z_messages_show_as_popup
                  TABLES
                     gt_show-t_msg.

        WHEN 'ANLN1' OR 'BUKRS' OR 'ANLKL'.

          SET PARAMETER ID 'AN1' FIELD gt_show-anln1.
          SET PARAMETER ID 'BUK' FIELD gt_show-bukrs.
          CALL TRANSACTION 'AS93' AND SKIP FIRST SCREEN.
        WHEN OTHERS.
      ENDCASE.

    WHEN OTHERS.
  ENDCASE.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  ACC_DOCUMENT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM acc_document USING pu_check .

  DATA:
    ls_show    TYPE  tt_show,
    lv_test,
    lv_history.

  IF pu_check IS NOT INITIAL.
    lv_test = 'X'.
  ELSE.
    lv_test = ''.
  ENDIF.

  LOOP AT gt_show WHERE anln1 IS INITIAL .

    AT NEW id .
      CLEAR: gs_key,gs_generaldata,gs_generaldatax,gs_timedependentdata,gs_timedependentdatax,
             gs_inventory,gs_inventoryx,gs_postinginformation,gs_postinginformationx,
             lv_asset,lv_history.
      CLEAR: gt_return,gt_return[],gs_return,
      gt_depreciationareas,gt_depreciationareas[],gt_depreciationareasx,gt_depreciationareasx[],
      gt_cumulatedvalues,gt_cumulatedvalues[],gt_postedvalues,gt_postedvalues[],
      gt_transactions,gt_transactions[].
      REFRESH: lt_msg,bdcdata.
    ENDAT .

    gs_key-companycode = gt_show-bukrs ."公司代码

    gs_generaldata-assetclass     = gt_show-anlkl."资产分类
    gs_generaldata-descript       = gt_show-txt50."描述1
    gs_generaldata-descript2      = gt_show-txa50."描述2
    gs_generaldata-serial_no      = gt_show-sernr."序列号
    gs_generaldata-invent_no      = gt_show-invnr."存货号        add by hxm 20180208
    gs_generaldata-quantity       = gt_show-menge."数量
    gs_generaldata-base_uom       = gt_show-meins."单位
    gs_generaldata-main_descript  = gt_show-anlhtxt."资产主号文本
    gs_generaldatax-assetclass    = 'X'.
    gs_generaldatax-descript      = 'X'.
    gs_generaldatax-descript2     = 'X'.
    gs_generaldatax-serial_no     = 'X'.
    gs_generaldatax-invent_no     = 'X'.                        "add by hxm 20180208
    gs_generaldatax-quantity      = 'X'.
    gs_generaldatax-base_uom      = 'X'.
    gs_generaldatax-main_descript = 'X'.

    gs_inventory-note  = gt_show-invzu."库存注记
    gs_inventoryx-note = 'X'.

    gs_postinginformation-cap_date  = gt_show-aktiv."资本化日期
    gs_postinginformationx-cap_date = 'X'.

    gs_timedependentdata-costcenter  = gt_show-kostl."成本中心
    gs_timedependentdata-resp_cctr   = gt_show-kostlv."责任成本中心
    gs_timedependentdata-intern_ord  = gt_show-caufn."内部订单
    gs_timedependentdata-plant       = gt_show-werks."工厂
    gs_timedependentdata-location    = gt_show-stort."位置
    gs_timedependentdata-room        = gt_show-raumn."房间
    gs_timedependentdatax-costcenter = 'X'.
    gs_timedependentdatax-resp_cctr  = 'X'.
    gs_timedependentdatax-intern_ord = 'X'.
    gs_timedependentdatax-plant      = 'X'.
    gs_timedependentdatax-location   = 'X'.
    gs_timedependentdatax-room       = 'X'.

    """"""""""""""""
    """"""""""""""""折旧范围01 20
    gt_depreciationareas-area            = '01'."实际折旧范围
    gt_depreciationareas-dep_key         = gt_show-afasl_01."区域01 折旧码
    gt_depreciationareas-ulife_yrs       = gt_show-ndjar_01."区域01 计划使用(年)
    gt_depreciationareas-ulife_prds      = gt_show-ndper_01."区域01 计划使用(月)
*    gt_depreciationareas-odep_start_date = gt_show-afabg_01."区域01 折旧开始日期
    gt_depreciationareas-exp_ulife_yrs   = gt_show-ndabj_01."区域01 已折旧时间(年)
    gt_depreciationareas-exp_ulife_prds  = gt_show-ndabp_01."区域01 已折旧时间(月)
    APPEND gt_depreciationareas.
    CLEAR: gt_depreciationareas.
    gt_depreciationareasx-area            = '01'."实际折旧范围
    gt_depreciationareasx-dep_key         = 'X'.
    gt_depreciationareasx-ulife_yrs       = 'X'.
    gt_depreciationareasx-ulife_prds      = 'X'.
*    gt_depreciationareasx-odep_start_date = 'X'.
    IF gt_show-ndabj_01 IS NOT INITIAL.
      gt_depreciationareasx-exp_ulife_yrs   = 'X'.
    ENDIF.
    IF gt_show-ndabp_01 IS NOT INITIAL.
      gt_depreciationareasx-exp_ulife_prds  = 'X'.
    ENDIF.
    APPEND gt_depreciationareasx.
    CLEAR: gt_depreciationareasx.

    gt_depreciationareas-area            = '20'."实际折旧范围
    gt_depreciationareas-dep_key         = gt_show-afasl_01."区域20 折旧码
    gt_depreciationareas-ulife_yrs       = gt_show-ndjar_01."区域20 计划使用(年)
    gt_depreciationareas-ulife_prds      = gt_show-ndper_01."区域20 计划使用(月)
*    gt_depreciationareas-odep_start_date = gt_show-afabg_20."区域20 折旧开始日期
    gt_depreciationareas-exp_ulife_yrs   = gt_show-ndabj_01."区域20 已折旧时间(年)
    gt_depreciationareas-exp_ulife_prds  = gt_show-ndabp_01."区域20 已折旧时间(月)
    APPEND gt_depreciationareas.
    CLEAR: gt_depreciationareas.
    gt_depreciationareasx-area            = '20'."实际折旧范围
    gt_depreciationareasx-dep_key         = 'X'.
    gt_depreciationareasx-ulife_yrs       = 'X'.
    gt_depreciationareasx-ulife_prds      = 'X'.
*    gt_depreciationareasx-odep_start_date = 'X'.
    IF gt_show-ndabj_01 IS NOT INITIAL.
      gt_depreciationareasx-exp_ulife_yrs   = 'X'.
    ENDIF.
    IF gt_show-ndabp_01 IS NOT INITIAL.
      gt_depreciationareasx-exp_ulife_prds  = 'X'.
    ENDIF.
    APPEND gt_depreciationareasx.
    CLEAR: gt_depreciationareasx.

    IF gt_show-history EQ 'X'.
      lv_history = 'X'.

      """"""""""""""""
      """"""""""""""""维护资产原值和累计折旧值:ABLDT
      SELECT SINGLE abgja INTO @DATA(lv_abgja1) FROM t093b WHERE bukrs EQ @gt_show-bukrs
                                                           AND   afabe EQ '01'.
      SELECT SINGLE abgja INTO @DATA(lv_abgja2) FROM t093b WHERE bukrs EQ @gt_show-bukrs
                                                           AND   afabe EQ '20'.
      ADD 1 TO lv_abgja1.
      ADD 1 TO lv_abgja2.
      gt_cumulatedvalues-fisc_year = lv_abgja1.
      gt_cumulatedvalues-area      = '01'."实际折旧范围
      gt_cumulatedvalues-acq_value = gt_show-kansw_01."区域01 原值
      gt_cumulatedvalues-ord_dep   = gt_show-knafa_01."区域01 累计折旧(年前)
      gt_cumulatedvalues-unp_dep   = gt_show-kaafa_01."区域01 计划外折旧
      gt_cumulatedvalues-currency  = 'CNY'.
      APPEND gt_cumulatedvalues.
      CLEAR: gt_cumulatedvalues.

      CLEAR: gt_cumulatedvalues.
      gt_cumulatedvalues-fisc_year = lv_abgja2.
      gt_cumulatedvalues-area      = '30'."实际折旧范围
      gt_cumulatedvalues-acq_value = gt_show-kansw_01."区域20 原值
      gt_cumulatedvalues-ord_dep   = gt_show-knafa_01."区域20 累计折旧(年前)
      gt_cumulatedvalues-unp_dep   = gt_show-kaafa_01."区域20 计划外折旧
      gt_cumulatedvalues-currency  = 'CNY'.
      APPEND gt_cumulatedvalues.
      CLEAR: gt_cumulatedvalues.

      gt_postedvalues-fisc_year = lv_abgja1.
      gt_postedvalues-area      = '01'."实际折旧范围
      gt_postedvalues-ord_dep   = gt_show-nafag_01."区域01 累计折旧(本年)
      gt_postedvalues-currency  = 'CNY'.
      APPEND gt_postedvalues.
      CLEAR: gt_postedvalues.

      gt_postedvalues-fisc_year = lv_abgja2.
      gt_postedvalues-area      = '30'."实际折旧范围
      gt_postedvalues-ord_dep   = gt_show-nafag_01."区域20 累计折旧(本年)
      gt_postedvalues-currency  = 'CNY'.
      APPEND gt_postedvalues.
      CLEAR: gt_postedvalues,lv_abgja1,lv_abgja2.

      """"""""""""""""
      IF gt_show-aktiv+0(4) = 2023.
        """""""""""""""输入18年新增固定资产的获取业务:AB01
        gt_transactions-fisc_year    = '2023'.
        gt_transactions-area         = '01'."实际折旧范围
        gt_transactions-valuedate    = gt_show-bzdat."资产价值日
        gt_transactions-assettrtyp   = gt_show-bwasl."交易类型
        gt_transactions-amount       = gt_show-anbtr."金额
        gt_transactions-currency     = 'CNY'.
        gt_transactions-currency_iso = 'CNY'.
        gt_transactions-current_no   = '00001'.
        APPEND gt_transactions.
        CLEAR: gt_transactions.
        gt_transactions-fisc_year    = '2023'.
        gt_transactions-area         = '20'."实际折旧范围
        gt_transactions-valuedate    = gt_show-bzdat."资产价值日
        gt_transactions-assettrtyp   = gt_show-bwasl."交易类型
        gt_transactions-amount       = gt_show-anbtr."金额
        gt_transactions-currency     = 'CNY'.
        gt_transactions-currency_iso = 'CNY'.
        gt_transactions-current_no   = '00002'.
        APPEND gt_transactions.
        CLEAR: gt_transactions.
      ENDIF.
    ENDIF.

    AT END OF id .

*      IF LV_HISTORY EQ 'X'."历史数据
      CALL FUNCTION 'BAPI_FIXEDASSET_OVRTAKE_CREATE'
        EXPORTING
          key                 = gs_key
*         REFERENCE           =
*         CREATESUBNUMBER     =
*         CREATEGROUPASSET    =
          testrun             = lv_test
          generaldata         = gs_generaldata
          generaldatax        = gs_generaldatax
          inventory           = gs_inventory
          inventoryx          = gs_inventoryx
          postinginformation  = gs_postinginformation
          postinginformationx = gs_postinginformationx
          timedependentdata   = gs_timedependentdata
          timedependentdatax  = gs_timedependentdatax
        IMPORTING
*         COMPANYCODE         =
          asset               = lv_asset
*         SUBNUMBER           =
*         ASSETCREATED        =
        TABLES
          depreciationareas   = gt_depreciationareas[]
          depreciationareasx  = gt_depreciationareasx[]
*         INVESTMENT_SUPPORT  =
*         EXTENSIONIN         =
          cumulatedvalues     = gt_cumulatedvalues[]
          postedvalues        = gt_postedvalues[]
          transactions        = gt_transactions[]
*         PROPORTIONALVALUES  =
          return              = gt_return[]
*         POSTINGHEADERS      =
        .

*      ELSE."当年数据
*
*        CALL FUNCTION 'BAPI_FIXEDASSET_CREATE1'
*          EXPORTING
*            KEY                 = GS_KEY
**           REFERENCE           =
**           CREATESUBNUMBER     =
**           POSTCAP             =
**           CREATEGROUPASSET    =
*            TESTRUN             = LV_TEST
*            GENERALDATA         = GS_GENERALDATA
*            GENERALDATAX        = GS_GENERALDATAX
*            INVENTORY           = GS_INVENTORY
*            INVENTORYX          = GS_INVENTORYX
*            POSTINGINFORMATION  = GS_POSTINGINFORMATION
*            POSTINGINFORMATIONX = GS_POSTINGINFORMATIONX
*            TIMEDEPENDENTDATA   = GS_TIMEDEPENDENTDATA
*            TIMEDEPENDENTDATAX  = GS_TIMEDEPENDENTDATAX
*          IMPORTING
**           COMPANYCODE         =
*            ASSET               = LV_ASSET
**           SUBNUMBER           =
**           ASSETCREATED        =
*            RETURN              = GS_RETURN
*          TABLES
*            DEPRECIATIONAREAS   = GT_DEPRECIATIONAREAS[]
*            DEPRECIATIONAREASX  = GT_DEPRECIATIONAREASX[]
**           INVESTMENT_SUPPORT  =
**           EXTENSIONIN         =
*          .
*
*        APPEND GS_RETURN TO GT_RETURN.
*      ENDIF.

      REFRESH lt_msg .
      CLEAR: lv_error .
      LOOP AT gt_return WHERE type NE 'W' .

        IF gt_return-type EQ 'E' OR gt_return-type EQ 'A' .
          lv_error = 'X' .
        ENDIF .
        CLEAR ls_msg .
        PERFORM convert_to_esp1_msg USING gt_return-id
                                          gt_return-type
                                          gt_return-number
                                          gt_return-message_v1
                                          gt_return-message_v2
                                          gt_return-message_v3
                                          gt_return-message_v4
                                    CHANGING ls_msg .

        APPEND ls_msg TO lt_msg .

      ENDLOOP .

      IF lv_error EQ 'X' .
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

        DELETE lt_msg WHERE msgty EQ 'S' .
        ls_show-light = '1' .
        ls_show-t_msg = lt_msg[] .
        MODIFY gt_show FROM ls_show TRANSPORTING light t_msg
                       WHERE id = gt_show-id .

      ELSE .

        IF pu_check IS INITIAL.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.
          ls_show-anln1 = lv_asset.

*          PERFORM frm_bdc_abzon USING gt_show-id."资产过账  资产增值去掉
        ENDIF.

        IF lv_error EQ 'X'.
          ls_show-light = '2' .
        ELSE.
          ls_show-light = '3' .
        ENDIF.

        ls_show-t_msg = lt_msg[] .
        MODIFY gt_show FROM ls_show TRANSPORTING light t_msg anln1
                       WHERE id = gt_show-id .
      ENDIF .
    ENDAT .
  ENDLOOP .
  IF sy-subrc EQ 0.
    MESSAGE '请查看处理状态!' TYPE 'S'.
  ELSE.
    MESSAGE '资产号已创建!' TYPE 'E'.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  CHECK_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM check_data .

  DATA: lv_err TYPE c,
        ls_msg TYPE esp1_message_wa_type.

  IF lv_msg_total IS NOT INITIAL.
    ls_msg-msgid = '00' .
    ls_msg-msgty = 'E' .
    ls_msg-msgno = '001' .
    ls_msg-msgv1 = lv_msg_total .
    APPEND ls_msg TO gt_show-t_msg .
  ENDIF.
  CLEAR: lv_msg_total.

  IF gt_show-id IS INITIAL .
    ls_msg-msgid = '00' .
    ls_msg-msgty = 'E' .
    ls_msg-msgno = '001' .
    ls_msg-msgv1 = '索引为空' .
    APPEND ls_msg TO gt_show-t_msg .
  ENDIF .

  IF gt_show-bukrs IS INITIAL .
    ls_msg-msgid = '00' .
    ls_msg-msgty = 'E' .
    ls_msg-msgno = '001' .
    ls_msg-msgv1 = '公司代码为空' .
    APPEND ls_msg TO gt_show-t_msg .
  ENDIF .

  IF gt_show-anlkl IS INITIAL .
    ls_msg-msgid = '00' .
    ls_msg-msgty = 'E' .
    ls_msg-msgno = '001' .
    ls_msg-msgv1 = '资产分类为空' .
    APPEND ls_msg TO gt_show-t_msg .
  ENDIF .

  IF gt_show-txt50 IS INITIAL .
    ls_msg-msgid = '00' .
    ls_msg-msgty = 'E' .
    ls_msg-msgno = '001' .
    ls_msg-msgv1 = '描述1为空' .
    APPEND ls_msg TO gt_show-t_msg .
  ENDIF .

  IF gt_show-kostl IS INITIAL .
    ls_msg-msgid = '00' .
    ls_msg-msgty = 'E' .
    ls_msg-msgno = '001' .
    ls_msg-msgv1 = '成本中心为空' .
    APPEND ls_msg TO gt_show-t_msg .
  ENDIF .

  IF gt_show-meins IS NOT INITIAL .
    gt_show-meins = to_upper( gt_show-meins ).
  ENDIF .

  IF gt_show-werks IS NOT INITIAL AND gt_show-stort IS NOT INITIAL.
    SELECT COUNT(*) FROM t499s
      WHERE werks EQ gt_show-werks
      AND   stand EQ gt_show-stort.
    IF sy-subrc NE 0.
      ls_msg-msgid = '00' .
      ls_msg-msgty = 'E' .
      ls_msg-msgno = '001' .
      ls_msg-msgv1 = '工厂与位置对应关系不存在' .
      APPEND ls_msg TO gt_show-t_msg .
    ENDIF.
  ENDIF.

  IF ( gt_show-kansw_01 IS NOT INITIAL OR gt_show-knafa_01 IS NOT INITIAL OR
       gt_show-nafag_01 IS NOT INITIAL OR gt_show-kaafa_01 IS NOT INITIAL ) .  "add by hxm 20180126计划外折旧
*       gt_show-kansw_20 IS NOT INITIAL OR gt_show-knafa_20 IS NOT INITIAL OR
*       gt_show-nafag_20 IS NOT INITIAL OR gt_show-kaafa_20 IS NOT INITIAL ).  "add by hxm 20180126计划外折旧
    gt_show-history = 'X'.

    IF ( gt_show-bwasl IS NOT INITIAL OR gt_show-bzdat IS NOT INITIAL OR
         gt_show-anbtr IS NOT INITIAL OR gt_show-budat IS NOT INITIAL ).
      ls_msg-msgid = '00' .
      ls_msg-msgty = 'E' .
      ls_msg-msgno = '001' .
      ls_msg-msgv1 = '当年数据栏(交易类型等)与历史数据栏(原值等)不能同时输入'.
      APPEND ls_msg TO gt_show-t_msg .
    ENDIF.
  ENDIF.

***add by xjc 批导大于当前日期的折旧 赋上历史标记
  IF gt_show-afabg_01 >= '20231101' .
    gt_show-history = 'X'.

  ENDIF .
***endadd

  IF ( gt_show-kansw_01 IS INITIAL AND gt_show-knafa_01 IS INITIAL AND
       gt_show-nafag_01 IS INITIAL AND gt_show-kaafa_01 IS INITIAL ).  "add by hxm 20180126计划外折旧
*       gt_show-kansw_20 IS INITIAL AND gt_show-knafa_20 IS INITIAL AND
*       gt_show-nafag_20 IS INITIAL AND gt_show-kaafa_20 IS INITIAL  ).  "add by hxm 20180126计划外折旧

    IF ( gt_show-bwasl IS INITIAL OR gt_show-bzdat IS INITIAL OR
         gt_show-anbtr IS INITIAL OR gt_show-budat IS INITIAL ).
      ls_msg-msgid = '00' .
      ls_msg-msgty = 'E' .
      ls_msg-msgno = '001' .
      ls_msg-msgv1 = '当年数据栏(交易类型、资产价值日、金额、过账日期)中的字段不能为空'.
      APPEND ls_msg TO gt_show-t_msg .
    ENDIF.
  ENDIF.

  IF ( gt_show-kansw_01 IS INITIAL AND gt_show-knafa_01 IS INITIAL AND
       gt_show-nafag_01 IS INITIAL AND gt_show-kaafa_01 IS INITIAL )   "add by hxm 20180126计划外折旧
*       gt_show-kansw_20 IS INITIAL AND gt_show-knafa_20 IS INITIAL AND
*       gt_show-nafag_20 IS INITIAL AND gt_show-kaafa_20 IS INITIAL )   "add by hxm 20180126计划外折旧
    AND ( gt_show-bwasl IS INITIAL AND gt_show-bzdat IS INITIAL AND
         gt_show-anbtr IS INITIAL AND gt_show-budat IS INITIAL ).
    ls_msg-msgid = '00' .
    ls_msg-msgty = 'E' .
    ls_msg-msgno = '001' .
    ls_msg-msgv1 = '请输入当年数据栏(交易类型等)或历史数据栏(原值等)的数据'.
    APPEND ls_msg TO gt_show-t_msg .

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  CONVERSION_EXIT_ALPHA_INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM conversion_exit_alpha_input CHANGING pc_alpha .

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = pc_alpha
    IMPORTING
      output = pc_alpha.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  CONVERT_TO_ESP1_MSG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM  convert_to_esp1_msg USING pu_msgid pu_msgty pu_msgno
                               pu_msgv1 pu_msgv2 pu_msgv3 pu_msgv4
                         CHANGING pc_msg TYPE esp1_message_wa_type .

  CLEAR pc_msg .
  pc_msg-msgid = pu_msgid .
  pc_msg-msgty = pu_msgty.
  pc_msg-msgno = pu_msgno.
  pc_msg-msgv1 = pu_msgv1.
  pc_msg-msgv2 = pu_msgv2.
  pc_msg-msgv3 = pu_msgv3.
  pc_msg-msgv4 = pu_msgv4.

ENDFORM.                   " CONVERT_TO_ESP1_MSG

*&---------------------------------------------------------------------*
*&      Form  C14Z_MESSAGES_SHOW_AS_POPUP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM c14z_messages_show_as_popup TABLES it_msg TYPE esp1_message_tab_type .

  CHECK it_msg[] IS NOT INITIAL .
  CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
*   EXPORTING
*     I_MSGID             =
*     I_MSGTY             =
*     I_MSGNO             =
*     I_MSGV1             =
*     I_MSGV2             =
*     I_MSGV3             =
*     I_MSGV4             =
*     I_LINENO            =
    TABLES
      i_message_tab = it_msg.

ENDFORM.                    " C14Z_MESSAGES_SHOW_AS_POPUP

*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM download_template USING pu_filename pu_objid.
*& 下载模版
  DATA: ls_objdata LIKE wwwdatatab.
  DATA: lv_filename TYPE string,
        lv_fullpath TYPE string  VALUE 'C:\',
        lv_path     TYPE  string VALUE 'C:\'.
  DATA: lv_errtxt TYPE string.
  DATA: lv_destination LIKE rlgrap-filename.
  DATA: lv_rc LIKE sy-subrc.

  DATA: lv_fileup LIKE rlgrap-filename.

  lv_filename = pu_filename .
*& 调用保存对话框
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      default_extension    = 'xls'
      default_file_name    = lv_filename
      initial_directory    = 'C:\'
    CHANGING
      filename             = lv_filename
      path                 = lv_path
      fullpath             = lv_fullpath
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.
  IF sy-subrc NE 0.
    MESSAGE '不能打开EXCEL' TYPE 'E'.
  ENDIF.
  CHECK lv_fullpath IS NOT INITIAL .
  lv_fileup = lv_fullpath.
  ls_objdata-relid = 'MI' .
  ls_objdata-objid = pu_objid .

  lv_destination = lv_fullpath .
  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      key         = ls_objdata
      destination = lv_destination
    IMPORTING
      rc          = lv_rc.
  IF lv_rc NE 0.
    CONCATENATE '模板文件:' ls_objdata-objid '下载失败' INTO lv_errtxt.
    MESSAGE lv_errtxt TYPE 'E'.
  ELSE.
    MESSAGE '模版下载成功' TYPE 'S'.
  ENDIF.

ENDFORM.                    " DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*& Form FRM_BDC_ABZON
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_bdc_abzon USING p1.
  DATA: lv_amt TYPE char15.
  CLEAR:bzdat.
  READ TABLE gt_show ASSIGNING FIELD-SYMBOL(<gt_show>) WITH KEY id = p1.
  IF sy-subrc EQ 0.
    IF <gt_show>-anbtr EQ 0.
      RETURN.

    ENDIF.
    IF <gt_show>-history = 'X'.
      bzdat = ls_t093c-datum.
    ELSE.
      bzdat = <gt_show>-bzdat.
    ENDIF.

    PERFORM bdc_dynpro      USING 'SAPLAMDPS2I' '0100'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=TAB02'.
    PERFORM bdc_field       USING 'RAIFP3-XBANL'
                                  'X'.
    PERFORM bdc_field       USING 'RAIFP2-ANLN1'
                                  lv_asset."资产号
    PERFORM bdc_field       USING 'RAIFP2-ANLN2'
                                  '0000'.
    PERFORM bdc_field       USING 'RAIFP1-BLDAT'
                                  <gt_show>-budat."凭证日期
*                                 LS_T093C-DATUM
*                                 SY-DATUM.
    PERFORM bdc_field       USING 'RAIFP1-BUDAT'
                                  <gt_show>-budat."过账日期
*                                 LS_T093C-DATUM
*                                 SY-DATUM.
    PERFORM bdc_field       USING 'RAIFP1-BZDAT'
*                                  <gt_show>-bzdat."资产价值日
                                   bzdat.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RAIFP2-ANBTR'.

    PERFORM bdc_field       USING 'RAIFP2-MENGE' "数量
                            <gt_show>-menge  .

    PERFORM bdc_field       USING  'RAIFP2-MEINS' "单位
                            <gt_show>-meins  .
*    PERFORM bdc_field       USING 'RAIFP2-ANBTR'
*                                  <gt_show>-anbtr."记帐金额
    IF <gt_show>-anbtr LT 0 .
      WRITE <gt_show>-anbtr TO lv_amt.
      REPLACE '-' WITH space INTO lv_amt.
      SHIFT lv_amt LEFT DELETING LEADING space.
      lv_amt = '-' && lv_amt.
      PERFORM bdc_field       USING 'RAIFP2-ANBTR'
                                  lv_amt."记帐金额

    ELSE.
      PERFORM bdc_field       USING 'RAIFP2-ANBTR'
                                  <gt_show>-anbtr."记帐金额
    ENDIF.
    PERFORM bdc_dynpro      USING 'SAPLAMDPS2I' '0100'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=SAVE'.
    PERFORM bdc_field       USING 'RAIFP3-XBANL'
                                  'X'.
    PERFORM bdc_field       USING 'RAIFP2-ANLN1'
                                  lv_asset."资产号
    PERFORM bdc_field       USING 'RAIFP2-ANLN2'
                                  '0000'.
    PERFORM bdc_field       USING 'RAIFP2-GKONT'
                                  '9999999999'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RAIFP1-BWASL'.
    PERFORM bdc_field       USING 'RAIFP1-BWASL'
                                  <gt_show>-bwasl."事务类型

    REFRESH: messtab.
    CLEAR: lv_error .
    CALL TRANSACTION 'ABZON' USING bdcdata
                            UPDATE 'S'"本地的(L)、同步(S)、异步的(A)
                            MODE  'E' "显示所有屏幕(A)、显示错误(E)、后台的处理(N)、后台处理,可以调试(P)
                            MESSAGES INTO messtab .
    LOOP AT messtab.
      "IF messtab-msgtyp EQ 'E' OR messtab-msgtyp EQ 'A' .
      lv_error = 'X' .
      "ENDIF .
      CLEAR ls_msg .
      PERFORM convert_to_esp1_msg USING messtab-msgid
                                        messtab-msgtyp
                                        messtab-msgnr
                                        messtab-msgv1
                                        messtab-msgv2
                                        messtab-msgv3
                                        messtab-msgv4
                                  CHANGING ls_msg .
      APPEND ls_msg TO lt_msg .
    ENDLOOP.
  ENDIF.


ENDFORM.
*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.

  CLEAR bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.

ENDFORM.
*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.

  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  CONDENSE bdcdata-fval.
  APPEND bdcdata.

ENDFORM.

三 批导模板

https://download.csdn.net/download/java_zhong1990/88475003

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Terry谈企业数字化

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

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

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

打赏作者

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

抵扣说明:

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

余额充值