SAP EXCEL数据上传,ALV显示模板程序
来源:互联网 发布:edg淘宝 编辑:程序博客网 时间:2024/05/03 20:49
先将EXCEL数据上传到SAP的内表中,然后对数据进行检查,将数据存储到SAP的后台表,然后用ALV对数据进行查询。
REPORT ztest002.
TYPE-POOLS truxs.
DATA xltab TYPE truxs_t_text_data.
DATA: BEGIN OF gt_upload OCCURS 0,
matnr(18),
lifnr(10),
jyfs(10), "检验方式
maktx(40),
name1(35).
DATA: END OF gt_upload.
DATA: BEGIN OF gt_ztest002 OCCURS 0.
INCLUDE STRUCTURE zsrm_ztest002.
DATA: END OF gt_ztest002.
*************ALV 报表定义
TYPE-POOLS slis.
*DATA: myrepid LIKE sy-repid. "REPORT NAME
DATA: fieldcat TYPE slis_t_fieldcat_alv.
DATA: afield TYPE LINE OF slis_t_fieldcat_alv.
DATA: layout TYPE slis_layout_alv .
DEFINE fill.
clear afield.
afield-col_pos = &1.
afield-fieldname = &2.
afield-seltext_l = &3.
afield-no_zero = &4.
append afield to fieldcat.
END-OF-DEFINITION.
DATA: BEGIN OF gt_error OCCURS 0,
matnr TYPE zsrm_ztest002-matnr,
maktx TYPE zsrm_ztest002-maktx,
lifnr TYPE zsrm_ztest002-lifnr,
name1 TYPE zsrm_ztest002-name1,
jyfs TYPE zsrm_ztest002-jyfs,
message(40) TYPE c.
DATA: END OF gt_error.
DATA: BEGIN OF gx_error_title,
matnr(18),
maktx(40),
lifnr(10),
name1(35),
jyfs(10),
message(40) TYPE c.
DATA: END OF gx_error_title.
SELECTION-SCREEN BEGIN OF BLOCK blk2
WITH FRAME TITLE title2.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: r1 RADIOBUTTON GROUP gr1 .
SELECTION-SCREEN COMMENT 3(10) text1.
SELECTION-SCREEN COMMENT 16(5) text2.
PARAMETER: file LIKE rlgrap-filename .
SELECTION-SCREEN COMMENT 70(10) text4.
PARAMETER: del_box AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER: r2 RADIOBUTTON GROUP gr1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 3(20) text3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK blk2.
*&---------------------------------------------------------------------*
*& INITIALIZATION.
*&---------------------------------------------------------------------*
INITIALIZATION.
title2 = '待检数据上传\查看'.
text1 = '待检数据上传'.
text2 = '文件名'.
text3 = '待检数据显示'.
text4 = '全删全建'.
*&---------------------------------------------------------------------*
*& AT SELECTION-SCREEN ON VALUE-REQUEST
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR file.
PERFORM get_pc_filename.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
IF r1 = 'X' AND file IS NOT INITIAL.
PERFORM upload_file.
PERFORM data_check.
IF gt_error[] IS INITIAL.
PERFORM insert_data.
ELSE.
PERFORM popup_error.
ENDIF.
ELSEIF r2 = 'X'.
PERFORM get_ztest002.
PERFORM show_ztest002.
ENDIF.
*&---------------------------------------------------------------------*
*& Form GET_PC_FILENAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_pc_filename .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
* mask = ',*.XLS ,*.XLS.'
mode = '0'
title = 'Get the file name'
IMPORTING
filename = file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
ENDFORM. " GET_PC_FILENAME
*&---------------------------------------------------------------------*
*& Form UPLOAD_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM upload_file .
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = 'X'
i_tab_raw_data = xltab
i_filename = file
TABLES
i_tab_converted_data = gt_upload
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF gt_upload[] IS INITIAL.
MESSAGE '上传表格没有数据' TYPE 'I'.
STOP.
ENDIF.
ENDFORM. " UPLOAD_FILE
*&---------------------------------------------------------------------*
*& Form DATA_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM data_check .
DATA: lt_tmp LIKE STANDARD TABLE OF gt_upload WITH HEADER LINE.
lt_tmp[] = gt_upload[].
SORT lt_tmp BY matnr lifnr.
DELETE ADJACENT DUPLICATES FROM lt_tmp COMPARING matnr lifnr.
IF sy-subrc = 0.
MESSAGE '存在相同物料号和供应商数据' TYPE 'E'.
ENDIF.
REFRESH lt_tmp.
LOOP AT gt_upload.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gt_upload-lifnr
IMPORTING
output = gt_upload-lifnr.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = gt_upload-matnr
IMPORTING
output = gt_upload-matnr.
SELECT SINGLE maktx INTO gt_upload-maktx FROM makt WHERE matnr = gt_upload-matnr AND spras = sy-langu.
SELECT SINGLE name1 INTO gt_upload-name1 FROM lfa1 WHERE lifnr = gt_upload-lifnr .
MODIFY gt_upload.
ENDLOOP.
LOOP AT gt_upload WHERE maktx = space.
MOVE-CORRESPONDING gt_upload TO gt_error.
SHIFT gt_error-matnr LEFT DELETING LEADING '0'.
SHIFT gt_error-lifnr LEFT DELETING LEADING '0'.
gt_error-message = '物料号不存在!'.
APPEND gt_error.
ENDLOOP.
LOOP AT gt_upload WHERE name1 = space.
MOVE-CORRESPONDING gt_upload TO gt_error.
SHIFT gt_error-matnr LEFT DELETING LEADING '0'.
SHIFT gt_error-lifnr LEFT DELETING LEADING '0'.
gt_error-message = '供应商不存在!'.
APPEND gt_error.
ENDLOOP.
ENDFORM. " DATA_CHECK
*&---------------------------------------------------------------------*
*& Form INSERT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM insert_data .
DATA: BEGIN OF lt_ztest002 OCCURS 0.
INCLUDE STRUCTURE zsrm_ztest002.
DATA: END OF lt_ztest002.
LOOP AT gt_upload.
MOVE-CORRESPONDING gt_upload TO lt_ztest002.
APPEND lt_ztest002.
ENDLOOP.
lt_ztest002-sydat = sy-datum.
lt_ztest002-sytim = sy-uzeit.
lt_ztest002-syusr = sy-uname.
MODIFY lt_ztest002 TRANSPORTING sydat sytim syusr WHERE sydat IS INITIAL.
IF del_box = 'X'.
DELETE FROM zsrm_ztest002 .
INSERT zsrm_ztest002 FROM TABLE lt_ztest002.
ELSE.
MODIFY zsrm_ztest002 FROM TABLE lt_ztest002.
ENDIF.
IF sy-subrc = 0.
MESSAGE '更新成功!' TYPE 'S'.
ENDIF.
ENDFORM. " INSERT_DATA
*&---------------------------------------------------------------------*
*& Form GET_ztest002
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_ztest002 .
SELECT * INTO TABLE gt_ztest002 FROM zsrm_ztest002.
ENDFORM. " GET_ztest002
*&---------------------------------------------------------------------*
*& Form SHOW_ztest002
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM show_ztest002 .
layout-zebra = 'X'.
layout-colwidth_optimize = 'X'.
fill 1 'MATNR' '物料' 'X'.
fill 2 'MAKTX' '描述' ''.
fill 3 'LIFNR' '供应商' 'X'.
fill 4 'NAME1' '名称' ''.
fill 5 'JYFS' '检验方式' ''.
fill 6 'SYDAT' '日期' ''.
fill 7 'SYTIM' '时间' ''.
fill 8 'SYUSR' '用户名' ''.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = layout
i_save = 'X'
it_fieldcat = fieldcat
* it_events = gt_events
TABLES
t_outtab = gt_ztest002 "输出内表
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " SHOW_ztest002
*&---------------------------------------------------------------------*
*& Form POPUP_ERROR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM popup_error .
DATA: title LIKE rgsel-dynp_title.
DATA: l_line TYPE sy-tabix.
title = '错误信息'.
gx_error_title-matnr = '物料编码'.
gx_error_title-maktx = '物料描述'.
gx_error_title-lifnr = '供应商'.
gx_error_title-name1 = '供应商名称'.
gx_error_title-jyfs = '检验方式'.
gx_error_title-message = '错误信息'.
CALL FUNCTION 'G_DISPLAY_SELECTION_DYNPRO'
EXPORTING
dynp_title = title
show_also_1 = 'X'
allow_sort = 'X'
start_column = 24
sel_title1 = gx_error_title "EXTENDED_DISPLAY = 'X'
IMPORTING
sel_index = l_line "返回双击选中行的index
TABLES
sel_table = gt_error
EXCEPTIONS
no_lines = 1
no_line_picked = 2
OTHERS = 3.
ENDFORM. " POPUP_ERROR
- SAP EXCEL数据上传,ALV显示模板程序
- SAP ABAP编程 excel数据批量上传--用ALV展示
- ABAP alv用excel显示数据
- sap alv转换(导出excel部分字段显示不正确)
- SAP通过程序创建Excel模板
- 【SAP ABAP】动态显示ALV
- 程序间获取ALV显示数据(读取ALV GRID上的数据)
- SAP SMW0 上传EXCEL模板遇到的问题
- SAP SMW0 上传EXCEL模板遇到的问题
- SAP SMW0 上传EXCEL模板遇到的问题
- SAP ABAP OLE 操作上传的EXCEL模板(转)
- 将excel模板文件上传到sap中
- SAP SMW0 上传EXCEL模板遇到的问题
- 给出excel模板,进行数据批量上传
- SAP MB52改为ALV显示格式
- SAP ALV标准范例程序介绍
- SAP EXCEL 上传和下载
- SAP SM37后台作业结果显示为alv list怎么样可以显示alv grid形式呢?
- 【Application】Android Application 对象介绍
- 判断添加前置任务不能重复
- Hibernate -- 对象关系映射基础
- 为什么 ["1", "2", "3"].map(parseInt) 返回 [1,NaN,NaN]?
- ORA-01555 "Snapshot too old" - Detailed Explanation (文档 ID 40689.1)
- SAP EXCEL数据上传,ALV显示模板程序
- Linux命令
- SQL练习题
- 数据结构 10进制与20进制
- 博客推荐系统--mahout FP关联规则应用2
- V4L2 continue..
- 初探计算机病毒及其预防
- spring-portlet生成pdf文件
- 存储过程