SAP ABAP 顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读409次。目标:基于对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
一、实现步骤
1 OLE_EXCEL批导
1.1 下载按钮
1.2 选择EXCEL上传,解析EXCLE数据, Call屏幕。
1.3 实现效果
1.4 代码样例
*&---------------------------------------------------------------------*
*& Report ZMMRP010
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zmmrp007.
*******************************************************
*程序名: zmmrp007
*程序描述: 采购订单审批
*----------------------------------------------------------------------
*创建日期 开发顾问 业务顾问
*2019.09.17. terryzhong
*===============================================
*修改请求号 修改日期 修改人 修改描述
*xxxxxxxx xxxx.xx.xx xxxxxxxx xxxxxxxx
*******************************************************
INCLUDE zmmrp007_top.
INCLUDE zmmrp007_sel.
INCLUDE zmmrp007_frm.
INCLUDE zmmrp007_9000.
INCLUDE zmmrp007_status_9000pbo.
INCLUDE zmmrp007_user_command_9000i01.
INITIALIZATION."第一次打开屏幕或者点击执行代码已经执行完成重新显示屏幕的时候会运行
*(1).只能用于报表程序
*(2).在选择屏幕出现之前执行.
*(3).通常的用法是在这里给选择屏幕中的字段赋值。
sscrfields-functxt_02 = '下载模板'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_file.
PERFORM get_excel.
AT SELECTION-SCREEN."当在选择屏幕上有做操作的时候都会进入到这个事件
IF sscrfields-ucomm = 'FC02'.
PERFORM download_template.
ENDIF.
START-OF-SELECTION."当触发执行的时候屏幕
IF p_rd2 EQ 'X'."批量修改
"执行对EXCEL数据的解析
PERFORM get_data.
CLEAR gs_cdata.
CALL SCREEN '9000'.
ENDIF.
END-OF-SELECTION.
IF p_rd1 EQ 'X'.
CALL TRANSACTION 'ZMMRP007A'."单个修改
ENDIF.
*&---------------------------------------------------------------------*
*& 包含 ZMMRP007_TOP
*&---------------------------------------------------------------------*
TABLES: sscrfields.
TYPES: BEGIN OF gy_cdata,
check(2) TYPE c,
ebeln TYPE ekko-ebeln, "采购订单号
ebelp TYPE ekpo-ebelp, "采购订单项次
zindex TYPE etens, "确认序号
ebtyp TYPE ekes-ebtyp, "确认类型
eindt TYPE ekes-eindt, "交货日期
menge TYPE ekpo-menge, "数量
* peinh TYPE ztmm_quotesi-peinh, "价格单位
bstme TYPE bstme,
* bstme(10) type c,
suppliercno TYPE xblnr_long, "参考
exestatus(2) TYPE c,
exedesc(255) TYPE c,
END OF gy_cdata.
DATA gs_cdata TYPE gy_cdata.
DATA gt_cdata TYPE TABLE OF gy_cdata.
DATA gv_ok_code LIKE sy-ucomm.
DATA gt_cdata_copy TYPE TABLE OF gy_cdata.
DATA gs_cdata_copy TYPE gy_cdata.
*DATA gt_cdata_update TYPE TABLE OF gy_cdata.
*DATA gs_cdata_update TYPE gy_cdata.
*&---------------------------------------------------------------------*
*& 包含 ZMMRP007_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN FUNCTION KEY 2.
SELECTION-SCREEN:BEGIN OF BLOCK bl1 WITH FRAME.
SELECTION-SCREEN SKIP 1.
PARAMETERS:p_rd1 RADIOBUTTON GROUP g1."单个采购订单确定
PARAMETERS:p_rd2 RADIOBUTTON GROUP g1."批导一采购订单确认
SELECTION-SCREEN SKIP 1.
PARAMETERS: pa_file TYPE rlgrap-filename."文件夹上传
SELECTION-SCREEN:END OF BLOCK bl1.
*&---------------------------------------------------------------------*
*& 包含 ZMMRP007_FRM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM download_template .
DATA:
lw_objdata TYPE wwwdatatab,
l_filename TYPE string VALUE '卡片BDC', "默认下载名称
l_fullpath TYPE string VALUE 'D:\' , "文件保存目录
l_path TYPE string VALUE 'D:\' , "模板保存路径
lw_destination LIKE rlgrap-filename,
l_rc LIKE sy-subrc,
l_user_action TYPE i.
* 保存下载的模板
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
default_extension = 'xlsx' "文件格式
default_file_name = '采购订单交期确认批导模板' "默认名称
CHANGING
filename = l_filename "默认下载名称
path = l_path "文件保存目录
fullpath = l_fullpath "获取模板保存路径
user_action = l_user_action
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF l_user_action NE 0.
MESSAGE e208(00) WITH '取消操作'.
ENDIF.
lw_destination = l_fullpath.
* 检查模板是否为空
IF l_fullpath = '' OR l_path IS NOT INITIAL.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF lw_objdata
FROM wwwdata WHERE objid = 'ZMMRP007_TEMPLATE' .
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lw_objdata
destination = lw_destination
IMPORTING
rc = l_rc.
IF l_rc NE 0.
MESSAGE '模板下载失败'
TYPE 'E'.
* 模板下载失败!
RETURN.
ENDIF.
ENDIF.
ENDFORM.
FORM get_excel .
DATA : l_filetab TYPE filetable,
l_waftab LIKE LINE OF l_filetab,
l_rc TYPE i.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = '打开文件'
initial_directory = 'C:/'
CHANGING
file_table = l_filetab
rc = l_rc
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.
EXIT.
ELSE.
READ TABLE l_filetab INTO l_waftab INDEX 1.
pa_file = l_waftab-filename.
CLEAR: l_filetab,l_waftab.
ENDIF.
ENDFORM.
FORM get_data .
TYPES: BEGIN OF ly_excel_data,
ebeln TYPE ekko-ebeln, "采购订单号
ebelp TYPE ekpo-ebelp, "采购订单项次
zindex TYPE etens, "确认序号
ebtyp TYPE ekes-ebtyp, "确认类型
eindt TYPE ekes-eindt, "交货日期
menge TYPE ekpo-menge, "数量
bstme TYPE bstme, "单位
* peinh TYPE ztmm_quotesi-peinh, "价格单位
suppliercno TYPE xblnr_long, "参考
END OF ly_excel_data.
DATA ls_excel_data TYPE ly_excel_data.
DATA lt_excel TYPE TABLE OF alsmex_tabline WITH HEADER LINE.
DATA l_index LIKE sy-tabix.
DATA: lv_lines TYPE i.
FIELD-SYMBOLS: <fs>.
IF pa_file IS NOT INITIAL.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = pa_file
i_begin_col = '1'
i_begin_row = '2'
i_end_col = '8'
i_end_row = '50000'
TABLES
intern = lt_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc = 0.
*&& 将EXCEL格式中的数据导入到内表TAB_LOAD中
LOOP AT lt_excel.
ASSIGN COMPONENT lt_excel-col OF STRUCTURE ls_excel_data TO <fs>.
<fs> = lt_excel-value.
AT END OF row.
MOVE-CORRESPONDING ls_excel_data TO gs_cdata."跟Excel的列一一对应的内表
APPEND gs_cdata TO gt_cdata.
CLEAR: ls_excel_data, gs_cdata.
ENDAT.
ENDLOOP.
lv_lines = lines( gt_cdata ).
IF lv_lines > 200.
MESSAGE '本次导入数据超过200,请拆分数据文件!' TYPE 'S'DISPLAY LIKE 'E'.
STOP.
ENDIF.
ENDIF.
ELSE.
MESSAGE '请输入文件路径!' TYPE 'S'DISPLAY LIKE 'E'.
STOP.
ENDIF.
ENDFORM.
二、SAP OLE概念
2.1 SAP OLE的一些关键概念
OLE(Object Linking and Embedding)是一种面向对象的技术,最初由Microsoft开发,用于在不同的应用程序之间共享和嵌入对象。在SAP中,OLE通常用于与外部应用程序(如Microsoft Office应用程序)进行集成和数据交换。以下是有关SAP OLE的一些关键概念:
-
OLE对象:OLE允许您创建、嵌入和链接对象,这些对象可以是文本、图像、表格、图形、图表等。在SAP中,您可以使用OLE对象来将SAP数据嵌入到外部应用程序中,或者将外部应用程序中的数据嵌入到SAP中。
-
嵌入(Embedding):嵌入是将一个应用程序中的对象插入到另一个应用程序中的过程。在SAP中,您可以嵌入外部应用程序(如Excel或Word)中的表格、图表或文本,以便在SAP界面中显示和编辑这些对象。
-
链接(Linking):链接是在一个应用程序中创建的对象与另一个应用程序中的同一对象之间的关联。在SAP中,您可以创建一个链接到外部应用程序中数据的OLE对象,以便在SAP中查看和更新该数据,同时保持数据的同步性。
-
OLE容器:OLE容器是指支持OLE对象的应用程序,它允许您在其中嵌入和显示OLE对象。在SAP中,SAP GUI可以充当OLE容器,允许您在SAP界面中处理OLE对象。
-
OLE服务器:OLE服务器是指可以创建和提供OLE对象的应用程序。在SAP中,外部应用程序(如Microsoft Excel或Word)可以作为OLE服务器,供SAP通过OLE技术访问和操作其中的数据。
-
SAP GUI和OLE:SAP GUI支持OLE技术,因此您可以在SAP界面中嵌入、链接和与OLE对象交互。这允许在SAP界面中使用外部应用程序的功能,以及将SAP数据嵌入到外部应用程序中。
-
数据交换:OLE技术允许在SAP和其他应用程序之间进行数据交换。您可以从SAP中提取数据并将其用于其他应用程序中的分析、报告和处理,反之亦然。
-
自动化(Automation):OLE还支持自动化,这意味着SAP可以通过编程方式控制和操作外部应用程序,以执行特定的任务和操作文章来源:https://www.toymoban.com/news/detail-692810.html
三、使用SAP OLE技术的注意事项
3.1 OLE技术的注意事项
在使用SAP OLE(Object Linking and Embedding)技术时,需要注意一些重要事项,以确保安全性、可靠性和性能。以下是使用SAP OLE技术的注意事项:文章来源地址https://www.toymoban.com/news/detail-692810.html
- 权限和安全性:确保在SAP系统和外部应用程序之间的数据交换中设置适当的权限控制,以确保只有经过授权的用户能够访问和处理数据。
- 在SAP系统中,对于具有OLE功能的用户,确保他们仅具备必要的权限来执行相关任务,以减少潜在的风险。
- 错误处理:实施适当的错误处理机制,以捕获和处理数据交换中的错误和异常情况。
- 记录错误日志,以便进行故障排除和审计。
- 性能考虑:考虑性能方面的问题,特别是在处理大量数据或频繁进行数据交换时。确保数据交换不会影响SAP系统的性能。
- 考虑数据缓存和数据同步的机制,以减少不必要的数据访问。
- 外部应用程序的稳定性:外部应用程序(如Microsoft Office应用程序)的稳定性对于SAP OLE操作非常重要。确保外部应用程序在执行OLE任务时不会崩溃或产生问题。
- 定期更新外部应用程序以获得最新的修复和安全性补丁。
- 版本兼容性:确保SAP系统和外部应用程序的版本兼容。某些OLE功能可能在不同版本之间有所变化,因此需要进行测试和验证。
- 数据一致性:在使用OLE链接时,确保数据在SAP系统和外部应用程序之间保持一致。避免数据的冲突或不一致性。
- 备份和恢复:在进行重要的数据交换操作之前,执行数据备份,以防数据丢失或损坏。了解如何在需要时进行数据恢复。
- 监控和审计:实施监控机制,以追踪SAP OLE任务的执行状态和性能。记录数据交换的详细信息,以便进行审计和合规性检查。
到了这里,关于SAP_ABAP_OLE_EXCEL批导案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!