模板导入和导出模板程序smw0导入标准模板.docx
《模板导入和导出模板程序smw0导入标准模板.docx》由会员分享,可在线阅读,更多相关《模板导入和导出模板程序smw0导入标准模板.docx(13页珍藏版)》请在冰豆网上搜索。
模板导入和导出模板程序smw0导入标准模板
1、输入事务码SMW0,回车,进入如下界面:
2、选择WEBRFC应用程序的二进制数据,回车,如图:
在包中输入Z001或什么都不输入(包Z001是自定义的包,用于把SAP里更改的东西从测试开发系统中传入测试系统和生产机中,空白则保存在本地,不能传输,但可以在开发机上用),单击执行,即左上角小闹钟,进入上载EXCEL模板界面,如下图:
2、点击左上角创建按钮,
,维护对象名称及描述,
4、点击右下角按钮,选择要上载的EXCEL模板,
5、点保存按钮,EXCEL模板即创建成功,可以在程序中调用此模板了。
具体调用模板的方法,请参照程序ZFIR007和程序ZFIR008。
以上。
*&---------------------------------------------------------------------*
*& Report ZFIRJ042
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZFIRJ042 no STANDARD PAGE HEADING MESSAGE-ID 00.
TABLES :
sscrfields.
DATA:
gt_fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gs_layout TYPE slis_layout_alv,
gt_events TYPE slis_t_event, " ALV Event table
g_repid LIKE sy-repid .
DATA:
BEGIN OF it_imp OCCURS 0.
INCLUDE TYPE ZBW_MYBL.
DATA:
END OF it_imp.
DATA:
IT_IMP1 LIKE TABLE OF IT_IMP WITH HEADER LINE.
DATA:
BEGIN OF iexcel OCCURS 0.
INCLUDE STRUCTURE alsmex_tabline.
DATA:
END OF iexcel.
DATA:
tab_size TYPE i.
SELECTION-SCREEN :
FUNCTION KEY 1. "激活下载模板按键
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-010.
PARAMETERS :
p_infile LIKE rlgrap-filename .
* P_bukrs like T001-BUKRS OBLIGATORY,
* p_zbps LIKE ZBW_MYBL-zbps_org ,"预算单位
* pmonth(6) DEFAULT sy-datum+0(6) ."年度
* p_test AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK 1.
DATA lt_gt_data TYPE alsmex_tabline OCCURS 0 WITH HEADER LINE.
DEFINE m_alv_fieldcat.
gs_field-fieldname = &1."字段名
gs_field-outputlen = &2."列宽
gs_field-coltext = &3."列名
append gs_field to gt_field.
clear gs_field.
END-OF-DEFINITION.
DATA p_test
(1) TYPE c VALUE 'X'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
PERFORM select_file USING p_infile.
INITIALIZATION.
PERFORM frm_initialization.
AT SELECTION-SCREEN.
PERFORM frm_download_template."下载模板
PERFORM frm_check."输入检查及权限检查
START-OF-SELECTION.
PERFORM frm_get_data.
PERFORM upload_xls_data.
PERFORM frm_display.
*&---------------------------------------------------------------------*
*& Form SELECT_FILE
*&---------------------------------------------------------------------*
* select excel files
*----------------------------------------------------------------------*
* -->P_FILENAME text
*----------------------------------------------------------------------*
FORM frm_initialization .
sscrfields-functxt_01 = '下载模板'.
ENDFORM. "frm_initialization
*&---------------------------------------------------------------------*
*& Form SELECT_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FILENAME text
*----------------------------------------------------------------------*
FORM select_file USING p_filename LIKE rlgrap-filename.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
mask = ',Excel Files,*.xls.'
CHANGING
file_name = p_filename
EXCEPTIONS
mask_too_long = 1
OTHERS = 2.
ENDFORM. "SELECT_FILE
*&---------------------------------------------------------------------*
*& Form UPLOAD_XLS_DATA
*&---------------------------------------------------------------------*
* upload excel files
*----------------------------------------------------------------------*
FORM upload_xls_data.
IF it_imp[] IS NOT INITIAL.
MODIFY zbw_mybl FROM TABLE it_imp.
IF sy-subrc = 0.
MESSAGE i001(00) WITH '数据已导入成功'.
ELSE.
MESSAGE e001(00) WITH '数据导入失败,请检查数据!
'.
ENDIF.
ENDIF.
ENDFORM. "UPLOAD_XLS_DATA
*& Form frm_download_template
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_download_template .
DATA :
lc_file TYPE rlgrap-filename,
lc_wwwdatatab TYPE wwwdatatab ,
lc_subrc TYPE sy-subrc,
lc_temp TYPE c.
CASE sscrfields-ucomm.
WHEN 'FC01'."下载模板
"获取要下载的文件路径
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = '财务决算每月信息导入模板.xls' "设置前文件名
def_path = 'C:
\' "设置前路径
mode = 'S' "S = 保存,O = 打开
IMPORTING
filename = lc_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
* IF sy-subrc = 0.
MOVE 'ZFIRJ042' TO lc_wwwdatatab-objid.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF lc_wwwdatatab
FROM wwwdata WHERE srtf2 = 0 AND relid = 'MI'
AND objid = lc_wwwdatatab-objid .
"下载模板到指定路径
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lc_wwwdatatab
destination = lc_file
IMPORTING
rc = lc_subrc
CHANGING
temp = lc_temp.
IF lc_subrc <> 0 .
MESSAGE '没有相应的数据模板下载' TYPE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
* ENDIF.
ENDCASE.
ENDFORM. " FRM_DOWNLOAD_TEMPLATE
*----------------------------------------------------------------------*
* MODULE STATUS_0100 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_check .
* IF p_zbps CA sy-abcde.
* MESSAGE e001(00) WITH '请输入正确的期间!
'.
* ENDIF.
*检查权限 有没有预算单位的权限
* AUTHORITY-CHECK OBJECT 'ZBPS_ORG' ID 'ZBPS_ORG' FIELD p_zbps.
* IF sy-subrc <> 0.
* MESSAGE '没有预算单位的权限!
' TYPE 'E'.
* ENDIF.
ENDFORM. " FRM_CHECK
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_get_data .
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_infile
i_begin_col = '1'
i_begin_row = '2'
i_end_col = '29'
i_end_row = '5000'
TABLES
intern = lt_gt_data
EXCEPTIONS
upload_ole = 1.
REFRESH it_imp.
CLEAR it_imp.
LOOP AT lt_gt_data.
* CONDENSE lt_gt_data-value NO-GAPS. " 清除空格
TRANSLATE lt_gt_data-value TO UPPER CASE. " 转换所有字符为大
CASE lt_gt_data-col.
WHEN 1.
it_imp-COMP_CODE = lt_gt_data-value.
WHEN 2.
it_imp-ZBPS_ORG = lt_gt_data-value.
WHEN 3.
it_imp-FISCPER = lt_gt_data-value.
WHEN 4.
it_imp-TXTLG = lt_gt_data-value.
WHEN 5.
it_imp-FIELD1 = lt_gt_data-value.
WHEN 6.
it_imp-ZJMSKZPTB = lt_gt_data-value.
WHEN 7.
it_imp-ZJMSRZPTB = lt_gt_data-value.
WHEN 8.
it_imp-ZJMCPCBL = lt_gt_data-value.
WHEN 9.
it_imp-ZMYSKZPTB = lt_gt_data-value.
WHEN 10.
it_imp-ZMYSRZPTB = lt_gt_data-value.
WHEN 11.
it_imp-ZMYCPCBL = lt_gt_data-value.
ENDCASE.
AT END OF row.
APPEND it_imp.
CLEAR:
it_imp.
endat.
ENDLOOP.
LOOP AT it_imp.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD it_imp-COMP_CODE
ID 'ACTVT' FIELD '03'.
IF sy-subrc <> 0.
MESSAGE '您没有输入公司代码的权限,请检查。
' TYPE 'E'.
ENDIF.
SELECT * INTO CORRESPONDING FIELDS OF TABLE it_imp1
FROM ZBW_MYBL
WHERE zbps_org = it_imp-ZBPS_ORG
AND fiscper = it_imp-FISCPER.
IF sy-subrc = 0.
DATA msg TYPE string.
CLEAR msg.
CONCATENATE '预算单位' it_imp-ZBPS_ORG '期间' it_imp-FISCPER '的数据已经存在!
' INTO msg.
MESSAGE i001(00) WITH msg.
ENDIF.
ENDLOOP.
ENDFORM. " FRM_GET_DATA
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
* text 显示已导入的数据
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_display .
* REFRESH it_imp.
* CLEAR it_imp.
* SELECT * INTO CORRESPONDING FIELDS OF TABLE it_imp
* FROM ZBW_MYBL
* WHERE zbps_org = p_zbps
* AND fiscper = pmonth.
DEFINE add_field.
dis_filed-fieldname = &1.
dis_filed-reptext_ddic = &2.
if dis_filed-fieldname = 'CHECK'.
dis_filed-checkbox = 'X'.
dis_filed-edit = 'X'.
endif.
append dis_filed.
clear:
dis_filed.
END-OF-DEFINITION.
IF it_imp[] IS NOT INITIAL.
TYPE-POOLS:
slis.
DATA dis_filed TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA:
gs_layout TYPE slis_layout_alv.
gs_layout-zebra = 'X'. "设置每行的背景颜色交错显示
gs_layout-colwidth_optimize = 'X'. "ALV输出时候自动优化宽度
REFRESH dis_filed.
add_field 'CO