*&---------------------------------------------------------------------*
*& Report ZFI002
*&---------------------------------------------------------------------*
*&
* System :
* Module : FI
* Tcode : ZFI002
* Program ID : ZFI002
* Program : 固定资产批量导入
* Author : JTQJ
* Date : 2018.12.20
* Description : 固定资产批量导入
*&
*&---------------------------------------------------------------------*
* Modified Recorder :
* Date C#NO Author Content
* ----------- ------- ------------------ ---------------
REPORT ZFI002.
TABLES: SSCRFIELDS.
TYPES: BEGIN OF TYP_DATA ,
ANLKL TYPE ANLA-ANLKL , " 资产分类
BUKRS TYPE ANLA-BUKRS, " 公司代码
ANLN1 TYPE ANLA-ANLN1 , " 资产编号
TXT50 TYPE ANLA-TXT50, " 描述
TXA50 TYPE ANLA-TXA50, " 附加描述
ANLHTXT TYPE ANLH-ANLHTXT, " 规格型号
SERNR TYPE ANLA-SERNR , " 序列号
INVNR TYPE ANLA-INVNR, " 存货号
XHIST TYPE XHIST , " 历史性管理
INKEN TYPE INKEN , " 库存标记
AKTIV TYPE ANLA-AKTIV, " 资本化日期
DEAKT TYPE ANLA-DEAKT, " 不活动日期(报废)
MENGE TYPE ANLA-MENGE, " 数量
MEINS TYPE ANLA-MEINS, " 单位
KOSTL TYPE ANLZ-KOSTL, " 成本中心
RAUMN TYPE ANLZ-RAUMN, " 房间
KFZKZ TYPE ANLZ-KFZKZ, " 融资抵押
ORD41 TYPE ANLA-ORD41, " 评估组1
ORD42 TYPE ANLA-ORD42, " 评估组2
ORD43 TYPE ANLA-ORD43, " 评估组3
ORD44 TYPE ANLA-ORD44, " 评估组4
GDLGRP TYPE ANLA-GDLGRP, " 评估组 5
LIFNR TYPE ANLA-LIFNR, " 供应商科目编号
LIEFE TYPE ANLA-LIEFE, " 供应商名称
HERST TYPE ANLA-HERST, " 制造商
TYPBZ TYPE ANLA-TYPBZ, " 类型名
AFABE TYPE ANLB-AFABE, " 实际折旧范围
AFASL TYPE ANLB-AFASL, " 折旧码
NDJAR TYPE ANLB-NDJAR, " 年度
NDPER TYPE ANLB-NDPER, " 期间
SCHRW TYPE ANLB-SCHRW, " 残值
KANSW TYPE ANLC-KANSW, " 原值
KNAFA TYPE ANLC-KNAFA, " 累计折旧
KNAFA2 TYPE ANLC-KNAFA, " 本年折旧
WAERS TYPE WAERS, " 币别
END OF TYP_DATA .
DATA: GT_DATA TYPE STANDARD TABLE OF TYP_DATA,
GS_DATA TYPE TYP_DATA.
SELECTION-SCREEN: FUNCTION KEY 1.
FIELD-SYMBOLS: <DATA> TYPE TYP_DATA.
DATA: TTL_TEXT TYPE STRING .
*----------------------------------------------------------------------*
DATA: I_S_LOG TYPE BAL_S_LOG.
DATA: I_S_MSG TYPE BAL_S_MSG.
DATA: E_LOG_HANDLE TYPE BALLOGHNDL.
DATA: L_S_DISPLAY_PROFILE TYPE BAL_S_PROF.
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001 .
PARAMETERS: P_FILE TYPE RLGRAP-FILENAME MEMORY ID M1.
PARAMETERS: P_RUN TYPE C AS CHECKBOX DEFAULT 'X' .
SELECTION-SCREEN END OF BLOCK B1 .
*-----------------------------------------------------------------------*
INITIALIZATION .
SSCRFIELDS-FUNCTXT_01 = '下载模版'.
TTL_TEXT = '固定资产导入' .
SET TITLEBAR 'TITLE1000' WITH TTL_TEXT .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE .
PERFORM GET_FILE_PATH .
*&---------------------------------------------------------------------*
*& AT SELECTION-SCREEN
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.
CASE SSCRFIELDS-UCOMM.
WHEN 'FC01'.
PERFORM FRM_DOWNLOAD USING '固定资产批量导入' 'ZFI002' CHANGING P_FILE.
RETURN.
ENDCASE.
IF P_FILE IS INITIAL.
MESSAGE E899(MM) WITH '路径为必输字段!' DISPLAY LIKE 'E'.
ENDIF.
START-OF-SELECTION .
PERFORM SUB_GET_DATA .
PERFORM SUB_CHECK_DATA .
IF GT_DATA[] IS NOT INITIAL .
PERFORM CREATE_ASSET_DATA .
ELSE.
MESSAGE '未能读取导入数据!' TYPE 'S' DISPLAY LIKE 'E' .
LEAVE LIST-PROCESSING .
ENDIF.
*&---------------------------------------------------------------------*
*& Form GET_FILE_PATH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_FILE_PATH .
DATA: RC TYPE I,
F_TABLE TYPE FILETABLE,
L_INITNAME TYPE STRING.
FIELD-SYMBOLS: <F> TYPE FILE_TABLE .
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = '选择文件'
DEFAULT_FILENAME = L_INITNAME
FILE_FILTER = 'Excel文件(*.XLS,*.XLSX)|*.XLS;*.XLSX|全部文件 (*.*)|*.*|'
INITIAL_DIRECTORY = 'C:\'
MULTISELECTION = ' '
CHANGING
FILE_TABLE = F_TABLE
RC = RC
EXCEPTIONS
CNTL_ERROR = 1
FILE_OPEN_DIALOG_FAILED = 2
ERROR_NO_GUI = 3.
CALL METHOD CL_GUI_CFW=>FLUSH
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2.
CLEAR: P_FILE .
READ TABLE F_TABLE ASSIGNING <F> INDEX 1.
IF SY-SUBRC EQ 0.
P_FILE = <F>-FILENAME.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SUB_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SUB_GET_DATA .
DATA: BATCH_DATA LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
DATA: L_ROW TYPE I,
L_COL TYPE I.
FIELD-SYMBOLS: <F1> TYPE ANY .
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 3
I_END_COL = 50
I_END_ROW = 9999
TABLES
INTERN = BATCH_DATA
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE '数据读取错误' TYPE 'S' DISPLAY LIKE 'E' .
RETURN .
ELSE .
CLEAR:GT_DATA[],L_ROW .
LOOP AT BATCH_DATA .
L_COL = BATCH_DATA-COL .
CONDENSE BATCH_DATA-VALUE NO-GAPS.
ASSIGN COMPONENT L_COL OF STRUCTURE GS_DATA TO <F1> .
IF <F1> IS ASSIGNED .
TRY .
<F1> = BATCH_DATA-VALUE .
CATCH CX_SY_CONVERSION_NO_NUMBER .
MESSAGE '文件读取内容异常!' TYPE 'E' .
ENDTRY.
ENDIF.
AT END OF ROW .
APPEND GS_DATA TO GT_DATA .
CLEAR: GS_DATA .
ENDAT .
ENDLOOP .
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CREATE_ASSET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_ASSET_DATA .
*-----------------------------------------------------------------------*
DATA: L_ASSET TYPE BAPI1022_1-ASSETMAINO,
LS_KEY TYPE BAPI1022_KEY,
LS_GENERALDATA TYPE BAPI1022_FEGLG001,
LS_GENERALDATAX TYPE BAPI1022_FEGLG001X,
LS_INVENTORY TYPE BAPI1022_FEGLG011,
LS_INVENTORYX TYPE BAPI1022_FEGLG011X,
LS_TIMEDEPEND TYPE BAPI1022_FEGLG003,
LS_TIMEDEPENDX TYPE BAPI1022_FEGLG003X,
LS_ALLOCATIONS LIKE BAPI1022_FEGLG004,
LS_ALLOCATIONSX LIKE BAPI1022_FEGLG004X,
LS_ORIGIN LIKE BAPI1022_FEGLG009,
LS_ORIGINX LIKE BAPI1022_FEGLG009X,
LS_POSTING TYPE BAPI1022_FEGLG002,
LS_POSTINGX TYPE BAPI1022_FEGLG002X,
LT_CUMVAL TYPE STANDARD TABLE OF BAPI1022_CUMVAL WITH HEADER LINE,
LT_RETURN TYPE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE,
LT_DEP_AREAS TYPE STANDARD TABLE OF BAPI1022_DEP_AREAS WITH HEADER LINE,
LT_DEP_AREASX TYPE STANDARD TABLE OF BAPI1022_DEP_AREASX WITH HEADER LINE,
LT_INVESTMENT_SUPPORT TYPE STANDARD TABLE OF BAPI1022_INV_SUPPORT WITH HEADER LINE,
LT_POSTVAL TYPE STANDARD TABLE OF BAPI1022_POSTVAL WITH HEADER LINE,
LT_TRTYPE TYPE STANDARD TABLE OF BAPI1022_TRTYPE WITH HEADER LINE.
DATA: LV_STR1 TYPE CHAR50,
LV_TXT TYPE CHAR50,
LV_PERC TYPE P DECIMALS 0,
LV_TABIX LIKE SY-TABIX,
LV_LINES TYPE I.
CALL FUNCTION 'BAL_GLB_MEMORY_REFRESH'.
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
I_S_LOG = I_S_LOG
IMPORTING
E_LOG_HANDLE = E_LOG_HANDLE
EXCEPTIONS
LOG_HEADER_INCONSISTENT = 1
OTHERS = 2.
CLEAR LV_LINES.
DESCRIBE TABLE GT_DATA LINES LV_LINES.
LOOP AT GT_DATA ASSIGNING <DATA> .
LV_TABIX = SY-TABIX.
CLEAR: LV_PERC, LV_STR1, LV_TXT.
LV_PERC = LV_TABIX / LV_LINES * 100.
LV_STR1 = LV_PERC.
CONDENSE LV_STR1.
CONCATENATE '正在处理数据...,' LV_STR1 '%'
INTO LV_TXT.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = LV_PERC
TEXT = LV_TXT.
LS_KEY-ASSET = <DATA>-ANLN1 .
LS_KEY-COMPANYCODE = <DATA>-BUKRS .
*-----------------------------------------------------------------------*
"资产分类
PERFORM FRM_CONVERT_INPUT USING <DATA>-ANLKL CHANGING LS_GENERALDATA-ASSETCLASS.
LS_GENERALDATA-DESCRIPT = <DATA>-TXT50.
LS_GENERALDATA-DESCRIPT2 = <DATA>-TXA50.
LS_GENERALDATA-MAIN_DESCRIPT = <DATA>-ANLHTXT. " 规格型号
LS_GENERALDATA-INVENT_NO = <DATA>-INVNR. " 存货号
LS_GENERALDATA-HISTORY = <DATA>-XHIST . " 历史性管理(不填写)
LS_GENERALDATAX-ASSETCLASS = 'X' .
LS_GENERALDATAX-DESCRIPT = 'X' .
LS_GENERALDATAX-DESCRIPT2 = 'X' .
LS_GENERALDATAX-MAIN_DESCRIPT = 'X'.
LS_GENERALDATAX-INVENT_NO = 'X' .
LS_GENERALDATAX-HISTORY = 'X' .
IF <DATA>-SERNR IS NOT INITIAL.
LS_GENERALDATA-SERIAL_NO = <DATA>-SERNR. " 序列号
LS_GENERALDATAX-SERIAL_NO = 'X' .
ENDIF.
LS_POSTING-CAP_DATE = <DATA>-AKTIV.
LS_POSTINGX-CAP_DATE = 'X' .
IF <DATA>-DEAKT IS NOT INITIAL.
LS_POSTING-DEACT_DATE = <DATA>-DEAKT. " 不活动日期(报废)
LS_POSTINGX-DEACT_DATE = 'X'.
ENDIF.
IF <DATA>-MENGE IS NOT INITIAL.
LS_GENERALDATA-QUANTITY = <DATA>-MENGE. " 数量
LS_GENERALDATAX-QUANTITY = 'X'.
ENDIF.
IF <DATA>-MEINS IS NOT INITIAL.
LS_GENERALDATA-BASE_UOM = <DATA>-MEINS. " 单位
LS_GENERALDATAX-BASE_UOM = 'X'.
LS_GENERALDATA-BASE_UOM_ISO = <DATA>-MEINS.
LS_GENERALDATAX-BASE_UOM_ISO = 'X'.
ENDIF.
*-----------------------------------------------------------------------*
LS_INVENTORY-INCLUDE_IN_LIST = <DATA>-INKEN. " 库存标记(不填写)
LS_INVENTORYX-INCLUDE_IN_LIST = 'X' .
*-----------------------------------------------------------------------*
*-----------------------------------------------------------------------*
"成本中心
PERFORM FRM_CONVERT_INPUT USING <DATA>-KOSTL CHANGING LS_TIMEDEPEND-COSTCENTER.
LS_TIMEDEPEND-ROOM = <DATA>-RAUMN. "房间
LS_TIMEDEPENDX-COSTCENTER = 'X' .
LS_TIMEDEPENDX-ROOM = 'X'.
LS_ALLOCATIONS-EVALGROUP1 = <DATA>-ORD41. "存放地点
LS_ALLOCATIONS-EVALGROUP2 = <DATA>-ORD42. "存放地点
LS_ALLOCATIONS-EVALGROUP3 = <DATA>-ORD43. "存放地点
LS_ALLOCATIONS-EVALGROUP4 = <DATA>-ORD44. "存放地点
LS_ALLOCATIONS-EVALGROUP5 = <DATA>-GDLGRP. "存放地点
LS_ALLOCATIONSX-EVALGROUP1 = 'X'.
LS_ALLOCATIONSX-EVALGROUP2 = 'X'.
LS_ALLOCATIONSX-EVALGROUP3 = 'X'.
LS_ALLOCATIONSX-EVALGROUP4 = 'X'.
LS_ALLOCATIONSX-EVALGROUP5 = 'X'.
IF <DATA>-LIFNR IS NOT INITIAL.
PERFORM FRM_CONVERT_INPUT USING <DATA>-LIFNR CHANGING LS_ORIGIN-VENDOR_NO. "供应商科目编号
LS_ORIGINX-VENDOR_NO = 'X'.
ENDIF.
IF <DATA>-LIEFE IS NOT INITIAL.
LS_ORIGIN-VENDOR = <DATA>-LIEFE . " 供应商名称
LS_ORIGINX-VENDOR = 'X' .
ENDIF.
IF <DATA>-HERST IS NOT INITIAL.
LS_ORIGIN-MANUFACTURER = <DATA>-HERST ."制造商
LS_ORIGINX-MANUFACTURER = 'X' .
ENDIF.
IF <DATA>-TYPBZ IS NOT INITIAL.
LS_ORIGIN-TYPE_NAME = <DATA>-TYPBZ. "类型名
LS_ORIGINX-TYPE_NAME = 'X' .
ENDIF.
*-----------------------------------------------------------------------*
LT_DEP_AREAS-AREA = <DATA>-AFABE . "实际折旧范围
LT_DEP_AREASX-AREA = <DATA>-AFABE .
IF <DATA>-AFASL IS NOT INITIAL.
LT_DEP_AREAS-DEP_KEY = <DATA>-AFASL . "折旧码
LT_DEP_AREASX-DEP_KEY = 'X' .
ENDIF.
IF <DATA>-SCHRW IS NOT INITIAL.
LT_DEP_AREAS-SCRAPVALUE = <DATA>-SCHRW. "残值
LT_DEP_AREASX-SCRAPVALUE = 'X'.
ENDIF.
IF <DATA>-NDJAR IS NOT INITIAL.
LT_DEP_AREAS-ULIFE_YRS = <DATA>-NDJAR . "使用期年
LT_DEP_AREASX-ULIFE_YRS = 'X'.
ENDIF.
IF <DATA>-NDPER IS NOT INITIAL.
LT_DEP_AREAS-ULIFE_PRDS = <DATA>-NDPER . "期间
LT_DEP_AREASX-ULIFE_PRDS = 'X' .
ENDIF.
APPEND LT_DEP_AREAS.
APPEND LT_DEP_AREASX.
CLEAR: LT_CUMVAL.
IF <DATA>-AKTIV+0(4) < '2019'."SY-DATUM+0(4).
LT_CUMVAL-FISC_YEAR = '2019'."SY-DATUM+0(4) - 1 .
LT_CUMVAL-AREA = <DATA>-AFABE .
LT_CUMVAL-ACQ_VALUE = <DATA>-KANSW.
LT_CUMVAL-ORD_DEP = <DATA>-KNAFA .
LT_CUMVAL-CURRENCY = <DATA>-WAERS .
LT_CUMVAL-CURRENCY_ISO = <DATA>-WAERS.
APPEND LT_CUMVAL .
ELSE.
LT_TRTYPE-FISC_YEAR = '2019'."SY-DATUM+0(4) .
LT_TRTYPE-CURRENT_NO = SY-TABIX .
LT_TRTYPE-AREA = <DATA>-AFABE .
LT_TRTYPE-VALUEDATE = <DATA>-AKTIV.
LT_TRTYPE-ASSETTRTYP = '100'.
LT_TRTYPE-AMOUNT = <DATA>-KANSW.
LT_TRTYPE-CURRENCY = <DATA>-WAERS .
LT_TRTYPE-CURRENCY_ISO = <DATA>-WAERS.
APPEND LT_TRTYPE .
ENDIF.
IF <DATA>-KNAFA2 <> 0.
LT_POSTVAL-FISC_YEAR = '2019'."SY-DATUM+0(4)
LT_POSTVAL-AREA = <DATA>-AFABE .
* IF LINES( LT_POSTVAL[] ) = 0.
* LT_POSTVAL-REV_REPL = <DATA>-KANSW .
* ENDIF.
LT_POSTVAL-ORD_DEP = <DATA>-KNAFA2 .
LT_POSTVAL-CURRENCY = <DATA>-WAERS .
LT_POSTVAL-CURRENCY_ISO = <DATA>-WAERS .
APPEND LT_POSTVAL .
ENDIF.
REFRESH LT_INVESTMENT_SUPPORT[].
CLEAR LT_INVESTMENT_SUPPORT.
LT_INVESTMENT_SUPPORT-CHANGE_IND = 'U'.
APPEND LT_INVESTMENT_SUPPORT.
* AT END OF INVNR .
CALL FUNCTION 'BAPI_FIXEDASSET_OVRTAKE_CREATE'
EXPORTING
KEY = LS_KEY
TESTRUN = P_RUN
ORIGIN = LS_ORIGIN
ORIGINX = LS_ORIGINX
GENERALDATA = LS_GENERALDATA
GENERALDATAX = LS_GENERALDATAX
INVENTORY = LS_INVENTORY
INVENTORYX = LS_INVENTORYX
POSTINGINFORMATION = LS_POSTING
POSTINGINFORMATIONX = LS_POSTINGX
TIMEDEPENDENTDATA = LS_TIMEDEPEND
TIMEDEPENDENTDATAX = LS_TIMEDEPENDX
ALLOCATIONS = LS_ALLOCATIONS
ALLOCATIONSX = LS_ALLOCATIONSX
IMPORTING
ASSET = L_ASSET
TABLES
DEPRECIATIONAREAS = LT_DEP_AREAS
DEPRECIATIONAREASX = LT_DEP_AREASX
INVESTMENT_SUPPORT = LT_INVESTMENT_SUPPORT
CUMULATEDVALUES = LT_CUMVAL[]
POSTEDVALUES = LT_POSTVAL[]
TRANSACTIONS = LT_TRTYPE[]
RETURN = LT_RETURN[].
READ TABLE LT_RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC = 0 .
LOOP AT LT_RETURN.
I_S_MSG-MSGTY = LT_RETURN-TYPE.
I_S_MSG-MSGID = LT_RETURN-ID.
I_S_MSG-MSGNO = LT_RETURN-NUMBER.
I_S_MSG-MSGV1 = LT_RETURN-MESSAGE_V1.
I_S_MSG-MSGV2 = LT_RETURN-MESSAGE_V2.
I_S_MSG-MSGV3 = LT_RETURN-MESSAGE_V3.
I_S_MSG-MSGV4 = LT_RETURN-MESSAGE_V4.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
I_LOG_HANDLE = E_LOG_HANDLE
I_S_MSG = I_S_MSG.
ENDLOOP.
CALL FUNCTION 'BAL_DSP_PROFILE_POPUP_GET'
IMPORTING
E_S_DISPLAY_PROFILE = L_S_DISPLAY_PROFILE
EXCEPTIONS
OTHERS = 1.
L_S_DISPLAY_PROFILE-USE_GRID = 'X'.
L_S_DISPLAY_PROFILE-DISVARIANT-REPORT = SY-REPID.
L_S_DISPLAY_PROFILE-DISVARIANT-HANDLE = 'LOG'.
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
I_S_DISPLAY_PROFILE = L_S_DISPLAY_PROFILE
EXCEPTIONS
OTHERS = 1.
STOP .
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
IF P_RUN = 'X'.
MESSAGE '数据测试导入成功运行' TYPE 'S'.
ELSE .
MESSAGE '数据导入成功!!!' TYPE 'S'.
LOOP AT LT_RETURN.
I_S_MSG-MSGTY = LT_RETURN-TYPE.
I_S_MSG-MSGID = LT_RETURN-ID.
I_S_MSG-MSGNO = LT_RETURN-NUMBER.
I_S_MSG-MSGV1 = LT_RETURN-MESSAGE_V1.
I_S_MSG-MSGV2 = LT_RETURN-MESSAGE_V2.
I_S_MSG-MSGV3 = LT_RETURN-MESSAGE_V3.
I_S_MSG-MSGV4 = LT_RETURN-MESSAGE_V4.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
I_LOG_HANDLE = E_LOG_HANDLE
I_S_MSG = I_S_MSG.
ENDLOOP.
ENDIF.
ENDIF.
CLEAR:LS_KEY ,
LS_GENERALDATA,
LS_GENERALDATA,
LS_INVENTORY ,
LS_INVENTORYX ,
LS_TIMEDEPEND ,
LS_TIMEDEPENDX,
LS_POSTING ,
LS_POSTINGX ,
LT_POSTVAL,LT_POSTVAL[],
LT_CUMVAL,LT_CUMVAL[],
LT_RETURN,LT_RETURN[] ,
LT_DEP_AREAS,LT_DEP_AREAS[],
LT_DEP_AREASX,LT_DEP_AREASX[],
LT_POSTVAL,LT_POSTVAL[],
LT_TRTYPE,LT_TRTYPE[] .
* ENDAT .
ENDLOOP.
CHECK P_RUN NE 'X' .
CALL FUNCTION 'BAL_DSP_PROFILE_POPUP_GET'
IMPORTING
E_S_DISPLAY_PROFILE = L_S_DISPLAY_PROFILE
EXCEPTIONS
OTHERS = 1.
L_S_DISPLAY_PROFILE-USE_GRID = 'X'.
L_S_DISPLAY_PROFILE-DISVARIANT-REPORT = SY-REPID.
L_S_DISPLAY_PROFILE-DISVARIANT-HANDLE = 'LOG'.
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
I_S_DISPLAY_PROFILE = L_S_DISPLAY_PROFILE
EXCEPTIONS
OTHERS = 1.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SUB_CHECK_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SUB_CHECK_DATA .
DATA: LT_DATA TYPE STANDARD TABLE OF TYP_DATA,
LS_DATA TYPE TYP_DATA.
DATA: L_LINE TYPE I,
L_ROW TYPE STRING.
DATA:LV_ANLN1 TYPE ANLA-ANLN1.
* DESCRIBE TABLE gt_data LINES l_line .
LT_DATA = GT_DATA .
SORT LT_DATA BY BUKRS .
DELETE ADJACENT DUPLICATES FROM LT_DATA COMPARING BUKRS .
DESCRIBE TABLE LT_DATA LINES L_LINE .
IF L_LINE > 1 .
MESSAGE '一次只能导入一个公司数据!' TYPE 'S' DISPLAY LIKE 'E' .
LEAVE LIST-PROCESSING .
ENDIF.
CLEAR: LT_DATA,L_ROW.
LOOP AT GT_DATA INTO GS_DATA .
ADD 1 TO L_ROW .
* IF GS_DATA-INVNR = SPACE .
IF GS_DATA-ANLN1 IS INITIAL.
L_ROW = L_ROW + 2 .
MESSAGE S001(00) WITH '第' L_ROW '行资产编号不能为空!' DISPLAY LIKE 'E' .
LEAVE LIST-PROCESSING .
ELSE.
CLEAR LV_ANLN1.
SELECT SINGLE ANLN1 INTO LV_ANLN1 FROM ANLA WHERE ANLN1 = GS_DATA-ANLN1.
IF LV_ANLN1 IS NOT INITIAL.
L_ROW = L_ROW + 2 .
MESSAGE S001(00) WITH '第' L_ROW '行资产编号在系统中已经存在!' DISPLAY LIKE 'E' .
LEAVE LIST-PROCESSING .
ENDIF.
ENDIF.
READ TABLE LT_DATA INTO LS_DATA WITH KEY ANLN1 = GS_DATA-ANLN1 .
IF SY-SUBRC = 0 .
L_ROW = L_ROW + 2 .
MESSAGE S001(00) WITH '第' L_ROW '行资产编号为重复项!' DISPLAY LIKE 'E' .
LEAVE LIST-PROCESSING .
ELSE .
APPEND GS_DATA TO LT_DATA .
ENDIF.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CONVERT_INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_<DATA>_ANLKL text
* <--P_S_GENERALDATA_ASSETCLASS text
*----------------------------------------------------------------------*
FORM FRM_CONVERT_INPUT USING P_DATA
CHANGING P_CONVERT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_DATA
IMPORTING
OUTPUT = P_CONVERT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DOWNLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0247 text
* -->P_0248 text
* <--P_P_FILE text
*----------------------------------------------------------------------*
FORM FRM_DOWNLOAD USING IN_TEXT TYPE STRING
IN_NAME TYPE WWWDATA-OBJID
CHANGING OT_FULLPATH TYPE RLGRAP-FILENAME.
DATA: LV_FNAME TYPE STRING, " 文件名
LV_UPLOAD TYPE STRING, " 文件名 + 路径
LV_FILENAME TYPE STRING, " 文件名
LV_PATH TYPE STRING VALUE 'C:\', " 路径
LS_OBJDATA LIKE WWWDATATAB, "获取模版信息
LV_RC LIKE SY-SUBRC.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
DEFAULT_EXTENSION = 'XLS'
DEFAULT_FILE_NAME = IN_TEXT
CHANGING
FILENAME = LV_FILENAME
PATH = LV_PATH
FULLPATH = LV_UPLOAD
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC = 0.
OT_FULLPATH = LV_UPLOAD.
ELSE.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SELECT SINGLE RELID
OBJID
INTO CORRESPONDING FIELDS OF LS_OBJDATA
FROM WWWDATA
WHERE SRTF2 = 0
AND RELID = 'MI'
AND OBJID = IN_NAME.
IF SY-SUBRC NE 0 OR LS_OBJDATA-OBJID EQ SPACE.
MESSAGE I000(PS) WITH '没有找到模版' IN_NAME DISPLAY LIKE 'E'.
RETURN.
ENDIF.
* 下载模板到路径下
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
KEY = LS_OBJDATA
DESTINATION = OT_FULLPATH
IMPORTING
RC = LV_RC.
IF LV_RC NE 0.
MESSAGE I000(PS) WITH '模板文件' IN_NAME '下载失败!' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
ENDFORM.
*Selection texts
*----------------------------------------------------------
* P_FILE 文件名
* P_RUN 测试运行
*Messages
*----------------------------------------------------------
*
* Message class: Hard coded
* 未能读取导入数据!
*
* Message class: MM
*899 & & & &
*
* Message class: PS
*000 & & & &
固定资产批导程序(2)
最新推荐文章于 2024-05-09 09:38:29 发布