【IT168 技术文章】
*&---------------------------------------------------------------------*
*& Report ZPP001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZPP001 NO STANDARD PAGE HEADING.
*-----------------------------------------------------------------------
* Identification
* Modul-Name : ZPPPR001
* Author : Samuel Liu Atos Origin Modified by:wiele
* Creation date : 11.09.2006 Modified on:27.09.2007
* Owner : PP module
* Dev. under SAP : ECC6.0
* Description : Import BOM master Data
*-----------------------------------------------------------------------
************************************************************************
*Data
************************************************************************
TABLES:ZPP_BOM.
DATA: file type string,
result type string.
DATA count TYPE I.
DATA Tcount(10) TYPE C.
************************************************************************
*定义BOM结构
************************************************************************
TYPES: BEGIN OF TYPE1,
FACTORY(4) TYPE C, " 工厂
PNUMBER(18) TYPE C, "父阶物料编码
VALID_FROM_DATE(8) TYPE C, "有效日期
PQUANTITY(13) TYPE C, "父阶物料数量
PUNIT(3) TYPE C, "父阶物料单位
SEQUENGE(4) TYPE C, "BOM项目序号
ITEM_CAT(1) TYPE C, "项目类别(物料单)
SNUMBER(18) TYPE C, "子阶物料编码
QUANTITY(13) TYPE C, "子阶物料数量
UNIT(3) TYPE C, "子阶物料单位
* FIXED(1) TYPE C, "固定数量
COMP_SCRAP(7) TYPE C , "部件废品百分比
REMARK1(40) TYPE C,
REMARK2(40) TYPE C,
COST_REL(1) TYPE C, "成本核算标志
MEMO TYPE string, "子项备注
YMATNR(40) TYPE C,
TABIX(7) TYPE C,
SPPROCTYPE(2) type c, "子项目的特殊采购类型
ISS_ST_LOC(4) type c, "子项目生产订单的发货地点
END OF TYPE1.
DATA: STRU TYPE TYPE1,
ITAB TYPE TABLE OF TYPE1.
DATA: TSTRING TYPE STRING.
DATA: BEGIN OF I_OUT OCCURS 0,
LINE(600),
END OF I_OUT.
DATA:BEGIN OF RETURN OCCURS 10.
INCLUDE STRUCTURE BAPIRET2.
DATA: END OF RETURN.
DATA:BEGIN OF ITAB1 OCCURS 10.
INCLUDE STRUCTURE ZPP_BOM.
DATA: END OF ITAB1.
DATA:BEGIN OF ITAB2 OCCURS 10.
INCLUDE STRUCTURE ZPP_BOM.
DATA: END OF ITAB2.
************************************************************************
* Selection Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK BLOCK2 WITH FRAME TITLE TEXT-B02.
PARAMETER P_FILE LIKE KONSPARAM-PCU40_FILE OBLIGATORY.
SELECTION-SCREEN END OF BLOCK BLOCK2.
************************************************************************
* At Selection Screen
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
*获得导入数据的文本名
PERFORM GET_FILE.
************************************************************************
* Start of Selection
************************************************************************
start-of-selection.
************************************************************************
* 获取数据从TXT文件
************************************************************************
PERFORM GET_DATA USING ITAB. "Upload data into itab
DATA: DATE TYPE SY-DATUM.
CLEAR I_OUT.
REFRESH I_OUT.
************************************************************************
*准备传输
************************************************************************
TSTRING = '准备传输BOM'.
perform record_log using TString.
************************************************************************
*检查接收的数据
************************************************************************
perform check_data tables itab
using result.
************************************************************************
*导入BOM的数##
************************************************************************
if result = 'true'.
perform bom_transport tables itab1.
endif.
************************************************************************
*传输完毕
************************************************************************
TString = '传输BOM完毕'.
perform record_log using TString.
************************************************************************
*打印LOG记录
************************************************************************
perform print_log.
************************************************************************
*传出数据至文##
************************************************************************
perform export_txt.
*&---------------------------------------------------------------------*
*& Form record_log
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TSTRING text
*----------------------------------------------------------------------*
FORM record_log USING P_TSTRING TYPE STRING.
*log记录,生成文##
*格式化时##
DATA: TIME(10) TYPE C.
CALL FUNCTION 'TIME_CHAR_CONVERSION'
EXPORTING
INPUT = SY-UZEIT
IMPORTING
TIMESTR = TIME.
*增加文本内容
CONCATENATE SY-DATUM TIME P_TSTRING INTO I_OUT-LINE SEPARATED BY
' '.
APPEND I_OUT.
ENDFORM. " record_log
*&---------------------------------------------------------------------*
*& Form check_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
FORM check_data tables P_ITAB STRUCTURE STRU
using p_result.
*检查BOM数据##
TString = '检查BOM数据表'.
perform record_log using TString.
*计算BOM里面的数据条##
perform calculate tables p_itab
using tcount.
*判断记录条数
if tcount = 0 .
*记录数据条数
TString = 'BOM数据表记录数为0'.
perform record_log using TString.
p_result = 'false'.
else.
*记录数据条数
TString = 'BOM数据表记录数为'.
CONCATENATE TString Tcount '条' into TString.
perform record_log using TString.
TString = '开始读取数据表'.
perform record_log using TString.
p_result = 'true'.
endif.
ENDFORM. " check_data
*&---------------------------------------------------------------------*
*& Form bom_transport
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
FORM bom_transport TABLES P_ITAB STRUCTURE ZPP_BOM.
*首先删除.
CALL FUNCTION 'ZFM_BOM_CREATE'
EXPORTING
ZFLAG = 'Y'
TABLES
BOM = P_ITAB
RETURNS = RETURN
EXCEPTIONS
CREATE_BOM_FAIL = 1.
APPEND LINES OF P_ITAB TO ITAB2.
CALL FUNCTION 'ZFM_BOM_CREATE'
EXPORTING
ZFLAG = 'X'
* VERSION = TMP-ZNUM
* BOMTXT = TMP-ZBOMTXT
TABLES
BOM = ITAB2
RETURNS = RETURN
EXCEPTIONS
CREATE_BOM_FAIL = 1.
*输出创建BOM的消##
LOOP AT RETURN.
TString = RETURN-MESSAGE.
perform record_log using TString.
ENDLOOP.
*ENDIF.
* ENDLOOP.
ENDFORM. " bom_transport
*&---------------------------------------------------------------------*
*& Form calculate
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_ITAB text
* -->P_COUNT text
*----------------------------------------------------------------------*
FORM calculate TABLES P_P_ITAB STRUCTURE STRU
USING P_COUNT.
CLEAR ITAB1.
REFRESH ITAB1.
DESCRIBE TABLE P_P_ITAB LINES P_COUNT.
CONDENSE P_COUNT.
IF P_COUNT NE 0.
LOOP AT P_P_ITAB.
ITAB1-FACTORY = P_P_ITAB-FACTORY.
ITAB1-PNUMBER = P_P_ITAB-PNUMBER. "父阶物料编码
ITAB1-VALID_FROM_DATE = P_P_ITAB-VALID_FROM_DATE. "有效日期
ITAB1-SNUMBER = P_P_ITAB-SNUMBER. "子阶物料编码
ITAB1-PQUANTITY = P_P_ITAB-PQUANTITY. "父阶物料数量
ITAB1-PUNIT = P_P_ITAB-PUNIT. "父阶物料单位
ITAB1-SEQUENGE = P_P_ITAB-SEQUENGE. "BOM项目##
ITAB1-ITEM_CAT = P_P_ITAB-ITEM_CAT. "项目类别
ITAB1-QUANTITY = P_P_ITAB-QUANTITY. "子阶物料数量
ITAB1-UNIT = P_P_ITAB-UNIT. "子阶物料单位
ITAB1-FIXED = ''. "固定数量
ITAB1-COMP_SCRAP = P_P_ITAB-COMP_SCRAP. "部件废品百分##
ITAB1-REMARK1 = P_P_ITAB-REMARK1.
ITAB1-REMARK2 = P_P_ITAB-REMARK2.
ITAB1-YMATNR = P_P_ITAB-YMATNR.
ITAB1-MEMO = P_P_ITAB-MEMO.
ITAB1-TABIX = P_P_ITAB-TABIX.
ITAB1-COST_REL = P_P_ITAB-COST_REL. "成本核算标志
ITAB1-SPPROCTYPE = P_P_ITAB-SPPROCTYPE. "BOM 项目的特殊采购类##
ITAB1-ISS_ST_LOC = P_P_ITAB-ISS_ST_LOC. "生产订单的发货地##
APPEND ITAB1.
ENDLOOP.
ENDIF.
ENDFORM. " calculate
*&---------------------------------------------------------------------*
*& Form GET_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_FILE.
CALL FUNCTION 'WS_FILENAME_GET' "Get file name
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
MASK = ',*.* ,*.*.'
MODE = '0'
TITLE = 'Get File name'
IMPORTING
FILENAME = P_FILE
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* MESSAGE E016 WITH P_PATH.
ENDIF.
ENDFORM. " GET_FILE
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text *
*----------------------------------------------------------------------*
FORM GET_DATA USING P_ITAB.
CALL FUNCTION 'UPLOAD'
EXPORTING
* CODEPAGE = 'IBM'
FILENAME = P_FILE
FILETYPE = 'DAT'
* ITEM = ' '
* FILEMASK_MASK = ' '
* FILEMASK_TEXT = ' '
* FILETYPE_NO_CHANGE = ' '
* FILEMASK_ALL = ' '
* FILETYPE_NO_SHOW = ' '
* LINE_EXIT = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* SILENT = 'S'
* IMPORTING
* FILESIZE =
* CANCEL =
* ACT_FILENAME =
* ACT_FILETYPE =
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form print_log
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM print_log .
*打印记录数据
LOOP AT I_OUT.
write :/ i_out.
ENDLOOP.
ENDFORM. " print_log
*&---------------------------------------------------------------------*
*& Form export_txt
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM export_txt .
*形成文件名称
CONCATENATE 'C:\log' SY-DATUM '.TXT' INTO FILE.
*判断文件是否存在
call method cl_gui_frontend_services=>file_exist
EXPORTING
file = file
RECEIVING
result = result.
if result = 'X'.
*文件已存在,采用插入补充数据的方##
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = FILE
FILETYPE = 'ASC'
APPEND = 'X'
TABLES
DATA_TAB = I_OUT
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
IF SY-SUBRC EQ 0.
ENDIF.
else.
*文件不存在,采用直接创建文件
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = FILE
FILETYPE = 'ASC'
TABLES
DATA_TAB = I_OUT
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
IF SY-SUBRC EQ 0.
ENDIF.
endif.
ENDFORM. " export_txt
*& Report ZPP001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZPP001 NO STANDARD PAGE HEADING.
*-----------------------------------------------------------------------
* Identification
* Modul-Name : ZPPPR001
* Author : Samuel Liu Atos Origin Modified by:wiele
* Creation date : 11.09.2006 Modified on:27.09.2007
* Owner : PP module
* Dev. under SAP : ECC6.0
* Description : Import BOM master Data
*-----------------------------------------------------------------------
************************************************************************
*Data
************************************************************************
TABLES:ZPP_BOM.
DATA: file type string,
result type string.
DATA count TYPE I.
DATA Tcount(10) TYPE C.
************************************************************************
*定义BOM结构
************************************************************************
TYPES: BEGIN OF TYPE1,
FACTORY(4) TYPE C, " 工厂
PNUMBER(18) TYPE C, "父阶物料编码
VALID_FROM_DATE(8) TYPE C, "有效日期
PQUANTITY(13) TYPE C, "父阶物料数量
PUNIT(3) TYPE C, "父阶物料单位
SEQUENGE(4) TYPE C, "BOM项目序号
ITEM_CAT(1) TYPE C, "项目类别(物料单)
SNUMBER(18) TYPE C, "子阶物料编码
QUANTITY(13) TYPE C, "子阶物料数量
UNIT(3) TYPE C, "子阶物料单位
* FIXED(1) TYPE C, "固定数量
COMP_SCRAP(7) TYPE C , "部件废品百分比
REMARK1(40) TYPE C,
REMARK2(40) TYPE C,
COST_REL(1) TYPE C, "成本核算标志
MEMO TYPE string, "子项备注
YMATNR(40) TYPE C,
TABIX(7) TYPE C,
SPPROCTYPE(2) type c, "子项目的特殊采购类型
ISS_ST_LOC(4) type c, "子项目生产订单的发货地点
END OF TYPE1.
DATA: STRU TYPE TYPE1,
ITAB TYPE TABLE OF TYPE1.
DATA: TSTRING TYPE STRING.
DATA: BEGIN OF I_OUT OCCURS 0,
LINE(600),
END OF I_OUT.
DATA:BEGIN OF RETURN OCCURS 10.
INCLUDE STRUCTURE BAPIRET2.
DATA: END OF RETURN.
DATA:BEGIN OF ITAB1 OCCURS 10.
INCLUDE STRUCTURE ZPP_BOM.
DATA: END OF ITAB1.
DATA:BEGIN OF ITAB2 OCCURS 10.
INCLUDE STRUCTURE ZPP_BOM.
DATA: END OF ITAB2.
************************************************************************
* Selection Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK BLOCK2 WITH FRAME TITLE TEXT-B02.
PARAMETER P_FILE LIKE KONSPARAM-PCU40_FILE OBLIGATORY.
SELECTION-SCREEN END OF BLOCK BLOCK2.
************************************************************************
* At Selection Screen
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
*获得导入数据的文本名
PERFORM GET_FILE.
************************************************************************
* Start of Selection
************************************************************************
start-of-selection.
************************************************************************
* 获取数据从TXT文件
************************************************************************
PERFORM GET_DATA USING ITAB. "Upload data into itab
DATA: DATE TYPE SY-DATUM.
CLEAR I_OUT.
REFRESH I_OUT.
************************************************************************
*准备传输
************************************************************************
TSTRING = '准备传输BOM'.
perform record_log using TString.
************************************************************************
*检查接收的数据
************************************************************************
perform check_data tables itab
using result.
************************************************************************
*导入BOM的数##
************************************************************************
if result = 'true'.
perform bom_transport tables itab1.
endif.
************************************************************************
*传输完毕
************************************************************************
TString = '传输BOM完毕'.
perform record_log using TString.
************************************************************************
*打印LOG记录
************************************************************************
perform print_log.
************************************************************************
*传出数据至文##
************************************************************************
perform export_txt.
*&---------------------------------------------------------------------*
*& Form record_log
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TSTRING text
*----------------------------------------------------------------------*
FORM record_log USING P_TSTRING TYPE STRING.
*log记录,生成文##
*格式化时##
DATA: TIME(10) TYPE C.
CALL FUNCTION 'TIME_CHAR_CONVERSION'
EXPORTING
INPUT = SY-UZEIT
IMPORTING
TIMESTR = TIME.
*增加文本内容
CONCATENATE SY-DATUM TIME P_TSTRING INTO I_OUT-LINE SEPARATED BY
' '.
APPEND I_OUT.
ENDFORM. " record_log
*&---------------------------------------------------------------------*
*& Form check_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
FORM check_data tables P_ITAB STRUCTURE STRU
using p_result.
*检查BOM数据##
TString = '检查BOM数据表'.
perform record_log using TString.
*计算BOM里面的数据条##
perform calculate tables p_itab
using tcount.
*判断记录条数
if tcount = 0 .
*记录数据条数
TString = 'BOM数据表记录数为0'.
perform record_log using TString.
p_result = 'false'.
else.
*记录数据条数
TString = 'BOM数据表记录数为'.
CONCATENATE TString Tcount '条' into TString.
perform record_log using TString.
TString = '开始读取数据表'.
perform record_log using TString.
p_result = 'true'.
endif.
ENDFORM. " check_data
*&---------------------------------------------------------------------*
*& Form bom_transport
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
FORM bom_transport TABLES P_ITAB STRUCTURE ZPP_BOM.
*首先删除.
CALL FUNCTION 'ZFM_BOM_CREATE'
EXPORTING
ZFLAG = 'Y'
TABLES
BOM = P_ITAB
RETURNS = RETURN
EXCEPTIONS
CREATE_BOM_FAIL = 1.
APPEND LINES OF P_ITAB TO ITAB2.
CALL FUNCTION 'ZFM_BOM_CREATE'
EXPORTING
ZFLAG = 'X'
* VERSION = TMP-ZNUM
* BOMTXT = TMP-ZBOMTXT
TABLES
BOM = ITAB2
RETURNS = RETURN
EXCEPTIONS
CREATE_BOM_FAIL = 1.
*输出创建BOM的消##
LOOP AT RETURN.
TString = RETURN-MESSAGE.
perform record_log using TString.
ENDLOOP.
*ENDIF.
* ENDLOOP.
ENDFORM. " bom_transport
*&---------------------------------------------------------------------*
*& Form calculate
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_ITAB text
* -->P_COUNT text
*----------------------------------------------------------------------*
FORM calculate TABLES P_P_ITAB STRUCTURE STRU
USING P_COUNT.
CLEAR ITAB1.
REFRESH ITAB1.
DESCRIBE TABLE P_P_ITAB LINES P_COUNT.
CONDENSE P_COUNT.
IF P_COUNT NE 0.
LOOP AT P_P_ITAB.
ITAB1-FACTORY = P_P_ITAB-FACTORY.
ITAB1-PNUMBER = P_P_ITAB-PNUMBER. "父阶物料编码
ITAB1-VALID_FROM_DATE = P_P_ITAB-VALID_FROM_DATE. "有效日期
ITAB1-SNUMBER = P_P_ITAB-SNUMBER. "子阶物料编码
ITAB1-PQUANTITY = P_P_ITAB-PQUANTITY. "父阶物料数量
ITAB1-PUNIT = P_P_ITAB-PUNIT. "父阶物料单位
ITAB1-SEQUENGE = P_P_ITAB-SEQUENGE. "BOM项目##
ITAB1-ITEM_CAT = P_P_ITAB-ITEM_CAT. "项目类别
ITAB1-QUANTITY = P_P_ITAB-QUANTITY. "子阶物料数量
ITAB1-UNIT = P_P_ITAB-UNIT. "子阶物料单位
ITAB1-FIXED = ''. "固定数量
ITAB1-COMP_SCRAP = P_P_ITAB-COMP_SCRAP. "部件废品百分##
ITAB1-REMARK1 = P_P_ITAB-REMARK1.
ITAB1-REMARK2 = P_P_ITAB-REMARK2.
ITAB1-YMATNR = P_P_ITAB-YMATNR.
ITAB1-MEMO = P_P_ITAB-MEMO.
ITAB1-TABIX = P_P_ITAB-TABIX.
ITAB1-COST_REL = P_P_ITAB-COST_REL. "成本核算标志
ITAB1-SPPROCTYPE = P_P_ITAB-SPPROCTYPE. "BOM 项目的特殊采购类##
ITAB1-ISS_ST_LOC = P_P_ITAB-ISS_ST_LOC. "生产订单的发货地##
APPEND ITAB1.
ENDLOOP.
ENDIF.
ENDFORM. " calculate
*&---------------------------------------------------------------------*
*& Form GET_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_FILE.
CALL FUNCTION 'WS_FILENAME_GET' "Get file name
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
MASK = ',*.* ,*.*.'
MODE = '0'
TITLE = 'Get File name'
IMPORTING
FILENAME = P_FILE
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* MESSAGE E016 WITH P_PATH.
ENDIF.
ENDFORM. " GET_FILE
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text *
*----------------------------------------------------------------------*
FORM GET_DATA USING P_ITAB.
CALL FUNCTION 'UPLOAD'
EXPORTING
* CODEPAGE = 'IBM'
FILENAME = P_FILE
FILETYPE = 'DAT'
* ITEM = ' '
* FILEMASK_MASK = ' '
* FILEMASK_TEXT = ' '
* FILETYPE_NO_CHANGE = ' '
* FILEMASK_ALL = ' '
* FILETYPE_NO_SHOW = ' '
* LINE_EXIT = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* SILENT = 'S'
* IMPORTING
* FILESIZE =
* CANCEL =
* ACT_FILENAME =
* ACT_FILETYPE =
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form print_log
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM print_log .
*打印记录数据
LOOP AT I_OUT.
write :/ i_out.
ENDLOOP.
ENDFORM. " print_log
*&---------------------------------------------------------------------*
*& Form export_txt
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM export_txt .
*形成文件名称
CONCATENATE 'C:\log' SY-DATUM '.TXT' INTO FILE.
*判断文件是否存在
call method cl_gui_frontend_services=>file_exist
EXPORTING
file = file
RECEIVING
result = result.
if result = 'X'.
*文件已存在,采用插入补充数据的方##
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = FILE
FILETYPE = 'ASC'
APPEND = 'X'
TABLES
DATA_TAB = I_OUT
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
IF SY-SUBRC EQ 0.
ENDIF.
else.
*文件不存在,采用直接创建文件
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = FILE
FILETYPE = 'ASC'
TABLES
DATA_TAB = I_OUT
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
IF SY-SUBRC EQ 0.
ENDIF.
endif.
ENDFORM. " export_txt