SAP_ABAP_OLE_EXCEL批导案例

这篇具有很好参考价值的文章主要介绍了SAP_ABAP_OLE_EXCEL批导案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 实现效果

SAP_ABAP_OLE_EXCEL批导案例,SAP Abap实战篇,经验分享
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的一些关键概念:

  1. OLE对象:OLE允许您创建、嵌入和链接对象,这些对象可以是文本、图像、表格、图形、图表等。在SAP中,您可以使用OLE对象来将SAP数据嵌入到外部应用程序中,或者将外部应用程序中的数据嵌入到SAP中。

  2. 嵌入(Embedding):嵌入是将一个应用程序中的对象插入到另一个应用程序中的过程。在SAP中,您可以嵌入外部应用程序(如Excel或Word)中的表格、图表或文本,以便在SAP界面中显示和编辑这些对象。

  3. 链接(Linking):链接是在一个应用程序中创建的对象与另一个应用程序中的同一对象之间的关联。在SAP中,您可以创建一个链接到外部应用程序中数据的OLE对象,以便在SAP中查看和更新该数据,同时保持数据的同步性。

  4. OLE容器:OLE容器是指支持OLE对象的应用程序,它允许您在其中嵌入和显示OLE对象。在SAP中,SAP GUI可以充当OLE容器,允许您在SAP界面中处理OLE对象。

  5. OLE服务器:OLE服务器是指可以创建和提供OLE对象的应用程序。在SAP中,外部应用程序(如Microsoft Excel或Word)可以作为OLE服务器,供SAP通过OLE技术访问和操作其中的数据。

  6. SAP GUI和OLE:SAP GUI支持OLE技术,因此您可以在SAP界面中嵌入、链接和与OLE对象交互。这允许在SAP界面中使用外部应用程序的功能,以及将SAP数据嵌入到外部应用程序中。

  7. 数据交换:OLE技术允许在SAP和其他应用程序之间进行数据交换。您可以从SAP中提取数据并将其用于其他应用程序中的分析、报告和处理,反之亦然。

  8. 自动化(Automation):OLE还支持自动化,这意味着SAP可以通过编程方式控制和操作外部应用程序,以执行特定的任务和操作

三、使用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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SAP ABAP技术文章合集_微信公众号:ABAP猿

    序号 文章标题 01 ABAP OOALV-基本显示 02 ABAP OOALV-排序、过滤 03 ABAP OOALV-合计、小计 04 ABAP OOALV-选择模式、触发事件 05 ABAP OOALV-隐藏列、修改列标题、添加图标列、调整列位置 06 ABAP OOALV-固定列、鼠标悬停文本 07 ABAP OOALV-颜色(列、行、单元格) 08 ABAP OOALV-样式(列、行、单元格

    2024年02月03日
    浏览(38)
  • SAP/ABAP(二)

    一、循环结构 二、条件判断 三、异常处理(cx-root) 四、结构体,工作区 五、内表

    2024年02月17日
    浏览(31)
  • SAP ABAP 基础语法超详细

    1.表声明 当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,结构的变量集等于数据表里面的字段。 2.定义变量 v1 是变量名。 (l) 是变量的长度。 t 是数据类型。 d 是小数位。 ‘xxx’ 是缺省值。 如:data num(10) type p decimals 3 value ‘1.12’. 数据

    2024年02月15日
    浏览(45)
  • SAP,ABAP:ALV变式复制

    应用场景:程序优化,需要新开一个程序优化,优化完成后原程序ALV变式无法带到新的程序, ALV变式是很好用的功能 REPORT zbsc. 事务代码:ZBSC-ALV变式复制 程序名称:ZBSC-ALV变式复制 程序目的: ZBSC-ALV变式复制 开发人员: *(修改日志)----------------------------------------------------

    2024年02月09日
    浏览(34)
  • 【SAP ABAP】SAP Webservice & RESTful 接口服务发布教程

    关于 WebService 概念,这篇文章讲解的非常全面,可以移步阅读《SAP Web service》。 本想通过 RFC 来发布 ODATA 服务,奈何当前 SAP ECC 版本过低不支持,只好采用其他方式来发布服务,于是就尝试了下面这两种方法。 SE37,创建以下测试用 RFC 测试执行 RFC,得到的数据结果如下图:

    2024年02月02日
    浏览(35)
  • sap abap,forms,smartforms 导出pdf

    4种方法: 1.安装pdf程序,Foxit Reader,先敲回车 自动带出,如下图: 直接打印就会弹出保存pdf文档路径,点保存。这种方式是最简单的,可 forms 和 smartforms 。 2. forms 和 smartforms 打印到spool 中,首先要设置个人参数文件  输出设备 ,默认输出设备LP01    。 T-CODE: SP02 或如下图

    2024年02月12日
    浏览(70)
  • SAP ABAP增强 BADI的增强全解析

            BADI的全称是Business Add-in,它的主要技术是基于ABAP的对象来实现增强。SAP中BADI的维护事务代码是SE18和SE19,SE18主要是创建及维护BADI对象,而SE19用于维护BADI的实例,即如何来实现BADI对象的功能。         SAP的BADI因系统版本的差别可能会有不同,R/3中的BADI被称为Cl

    2023年04月23日
    浏览(28)
  • SAP ABAP ChatGPT 初体验 我会失业吗?

    简介: ChatGPT 最近很火,听说我可能要失业!就在今天我历经千辛万苦,终于把 ChatGPT 注册好了。话不多说,我先问两个 ABAP 开发问题压压惊。 : SAP ABAP ChatGPT OpenAI 失业 下面是我在 ChatGPT 的聊天截图, 我对这个回答满意度 90% ,此时我内心还不慌,虽然内容很完整逻

    2023年04月15日
    浏览(32)
  • SAP ABAP调用Http/Https方式实例

    注意: 1.url必须带\\\"http://\\\"或者“https://”。 2. http_client-propertytype_redirect = http_client-co_disabled .这一行是设置是否允许重定向,是为“co_enabled”,否为“co_disabled”。 3. 可能出现的错误 404 Hostname Unknow,是因为服务器未配置该url的dns 4. 可能出现的错误 401 refused,可能是被防火墙

    2024年02月07日
    浏览(41)
  • SAP ABAP中的数据类型 Data Types

    简单来说分两种: 数据字典里定义的 在ABAP程序里定义的 1.1 数字型的 用在数学计算里的,表达式里的,表序号里的。 Interger整数型 : INT1 : 1字节整数,0-255 (2的8次方-1) INT2 : 2字节整数,-32768-32767(2的15次方-1,有一位是符号位) INT4 : 4字节整数,-2147483648-2147483647(

    2024年02月03日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包