开发说明:在CBO的程序开发过程中,需要为Table准备大量的测试数据,手动录入效率低,不专业,我们可以采用其他的高级编辑工具(例如:EXCEL,EditPlus)按照Table数据存储结构准备好数据,最后保存为ASC的文本文件,通过执行下面开发的程序,下面的程序执行的功能就是把编辑好的文本文件上的数据上载到SAP对应的Table中,小程序非常实用,也适用于我们大量更新Table数据时使用,ABAPer们的手头必备啊!

开发技术:
1.文本文件上载技术
2.动态程序代码生成技术
3.ABAP动态程序执行技术
4.TXT文本文件对应用Table字段编辑技术
注意事项:
文件文件编辑过程中时间日期格式为 20060201 120000 表示 2006.02.01 12:00:00
文本文件中不能包含除字符,数字之外的其他特殊符号。假如Table中对应的字段数据为空时,在编辑数据时也对应该列为空。
程序代码:如下
*******************************************************************
* (Copyright @2006 Mysingle Digital System Co.Ltd.
* All Rights Reserved|Confidential)
* System Module        :  ABAP CBO
* Program Description  :  Table Upload & Download
* Developer            :  ZOU XIN
* Develop Date         :  2006.01.01
* Use Status           :  Release 1.0
*******************************************************************
REPORT z_cbo_abap_01 NO STANDARD PAGE HEADING.
TABLES : dd03l,dd02t.
DATA: BEGIN OF tab OCCURS 10,
        fcode(4),
      END OF tab.
DATA : BEGIN OF itab OCCURS 0,
        chk(1) TYPE c,                     " check box
        tabname    LIKE dd03l-tabname,     " Table name
        fieldname  LIKE dd03l-fieldname,   " Feld Name
        position   LIKE dd03l-position,    " Table
        keyflag    LIKE dd03l-keyflag,     " Primary Key
        datatype   LIKE dd03l-datatype,    " Data Type
        intlen     LIKE dd03l-leng,
       END OF itab.
DATA itab1 LIKE itab OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF uptab OCCURS 0,
        text(72) TYPE c,
       END OF uptab.
DATA: BEGIN OF error_message,
        line1(72),
        line2(72),
        line3(72),
      END OF error_message.
DATA : cnt1(8) TYPE c,
       fcode LIKE sy-ucomm,
       changed LIKE s38e-buf_varied,
       prog(8) TYPE c,
       msg(120) TYPE c,
       er_include LIKE sy-repid,
       er_line    LIKE sy-index,
       er_off     LIKE sy-tabix,
       er_subrc   LIKE sy-subrc.
* 程序录入界面
PARAMETERS : tabname LIKE dd03l-tabname DEFAULT 'ZP023'.

 
START-OF-SELECTION.
*上载Table字段分析
SELECT SINGLE * FROM dd02t WHERE tabname = tabname.
  SET PF-STATUS 'ZOUXIN'.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE itab FROM dd03l
              WHERE tabname = tabname
              AND as4local = 'A'
              ORDER BY position.
  itab-chk = 'X'.
MODIFY itab INDEX 1 TRANSPORTING chk .
*动态上载程序代码生成函数
  PERFORM generate_upload_code.
*ABAP程序代码编辑器调用
  PERFORM edit_generator_code.
AT USER-COMMAND .
  IF sy-ucomm = 'EDIT'.
    PERFORM edit_generator_code.
  ELSEIF sy-ucomm = 'EXEC'.
GENERATE SUBROUTINE POOL uptab NAME prog MESSAGE msg.
*程序代码语法检测
    PERFORM chcek_syntax_error.
*动态程序代码执行
    PERFORM dyn1 IN PROGRAM (prog).
  ENDIF.
*&---------------------------------------------------------------*
*&      Form  generate_upload_code
*&---------------------------------------------------------------*
FORM generate_upload_code.
  REFRESH uptab.
  uptab-text = 'REPORT ZUP19800526.'.
  APPEND uptab.
  CONCATENATE 'TABLES :' tabname '.' INTO uptab-text
  SEPARATED BY space.
  APPEND uptab.
  uptab-text = 'DATA : BEGIN OF UPTAB OCCURS 0,'.
  APPEND uptab.
  LOOP AT itab WHERE chk = ''.
    CLEAR uptab.
    CONCATENATE '  ' itab-fieldname '(' itab-intlen  ')'  ' TYPE C ,'
                INTO uptab-text+10(80).
    APPEND uptab.
  ENDLOOP.
  uptab-text+6(82) = 'END OF UPTAB.'.
  APPEND uptab.
  uptab-text = 'DATA : BEGIN OF RESULT OCCURS 0.'.
  APPEND uptab.
  CLEAR uptab.
  CONCATENATE 'INCLUDE STRUCTURE' itab-tabname '.'
               INTO uptab-text+10(80) SEPARATED BY space.
  APPEND uptab.
  uptab-text = 'DATA : END OF RESULT.'.
  APPEND uptab.
  uptab-text = 'FORM DYN1.'.
  APPEND uptab.
  CLEAR uptab.
  uptab-text+2(88) = 'CALL FUNCTION ''UPLOAD'''.
  APPEND uptab.
  CLEAR uptab.
  uptab-text+4(86) = 'EXPORTING'.
  APPEND uptab.
  CLEAR uptab.
  uptab-text+6(84) = 'FILENAME = ''C:/'''.
  APPEND uptab.
  uptab-text+6(84) = 'FILETYPE = ''DAT'''.
  APPEND uptab.
  uptab-text+4(86) = 'TABLES'.
  APPEND uptab.
  CLEAR uptab.
  uptab-text+6(84) = 'DATA_TAB = UPTAB.'.
  APPEND uptab.
  uptab-text+2(88) = 'LOOP AT UPTAB.'.
  APPEND uptab.
  CLEAR uptab.
  uptab-text+4(86) = 'CLEAR RESULT.'.
  APPEND uptab.
  uptab-text+4(86) = 'MOVE-CORRESPONDING UPTAB TO RESULT.'.
  APPEND uptab.
  uptab-text+4(86) = 'APPEND RESULT.'.
  APPEND uptab.
  uptab-text+2(88) = 'ENDLOOP.'.
  APPEND uptab.
  CLEAR uptab.
  CONCATENATE 'INSERT'  itab-tabname 'FROM TABLE RESULT.'
              INTO uptab-text+2(88) SEPARATED BY space.
  APPEND uptab.
  uptab-text = 'ENDFORM.' .
  APPEND uptab.
  CLEAR uptab.
ENDFORM.                    " generate_upload_code
*&---------------------------------------------------------------*
*&      Form  edit_generator_code
*&---------------------------------------------------------------*
FORM edit_generator_code.
  CALL FUNCTION 'EDITOR_APPLICATION'
       EXPORTING
            application = 'BF'
            display     = ' '
            name        = 'Source Code.....'
       IMPORTING
            fcode       = fcode
            changed     = changed
       TABLES
            content     = uptab.
  LOOP AT uptab.
    WRITE:/1 uptab-text.
  ENDLOOP.
ENDFORM.                               " PRINT_GENERATOR_CODE
*&---------------------------------------------------------------*
*&      Form  chcek_syntax_error
*&---------------------------------------------------------------*
FORM chcek_syntax_error.
  CALL FUNCTION 'EDITOR_SYNTAX_CHECK'
       EXPORTING
            i_global_check   = ' '
            i_global_program = ' '
            i_program        = 'ZUP19800526'
            i_r2_check       = ' '
            i_r2_destination = ' '
            i_trdir          = ' '
       IMPORTING
            o_error_include  = er_include
            o_error_line     = er_line
            o_error_message  = error_message
            o_error_offset   = er_off
            o_error_subrc    = er_subrc
       TABLES
            i_source         = uptab.
  IF er_subrc <> 0.
    er_line = er_line - 2.
    WRITE:/1 'Error Line : ',er_line.
    WRITE:/1 error_message-line1,error_message-line2,
             error_message-line3.
    STOP.
  ENDIF.
ENDFORM.                    " chcek_syntax_error
1.程序初始界面,输入Upload的table名.
2.程序运行第一界面,显示程序自动生成的上载程序代码
3.程序运行第二界面,确认程序自动生成的上载程序代码,执行
4.程序运行第三界面中小界面,程序执行提示输入上在数据具体路径
5.OK,数据上载成功
补充1:上载数据文件格式,*.TXT DAT格式文件,俗称纯文本文件
补充2:SAP Table格式,注意不要理会Mandt Client字段,其他字段数据对应

ABAP动态生成经典应用之Table数据Upload 程序相关推荐

  1. ABAP动态生成经典应用之Dynamic SQL Excute 程序

    开发说明:在SAP的系统维护过程中,有时我们需要修改一些Table中的数据,可是很多Table又不能直接在Tcode:SE16中修改,使用的SAP ID又没有调试数据修改权限,这时我们应该怎么样修改数 ...

  2. JS实现动态生成表格并提交表格数据向后端 表格中数据转为json

    原文地址 需求:在web页面上动态的生成表格,并可以对表格中的数据进行编辑,然后把表格中的数据提交至后端服务器保存. 首先动态生成表格. 1.首先我们需要导入JS库文件.jQuery 2.然后在页面d ...

  3. Skywalking-09:OAL原理——如何通过动态生成的Class类保存数据

    OAL 如何通过动态生成的 Class 类,保存数据 前置工作 OAL 如何将动态生成的 SourceDispatcher 添加到 DispatcherManager // org.apache.sk ...

  4. layui table动态选中_layui后台管理—table 数据表格详细讲解

    1.layui介绍 layui是一款采用自身模块规范编写的前端UI框架,遵循原生HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用,非常适合界面的快速开发.layui区别于那些基于MVVM底 ...

  5. 动态生成JSP文件,并调用JSP程序

    2019独角兽企业重金招聘Python工程师标准>>> 下面这个JSP程序,动态生成可一个testDynamicInclude.inc.jsp,然后在后面调用它. 在JSP的动态生成 ...

  6. ABAP动态生成内表的三种方法

    动态内表的创建和使用主要有以下几点: 动态内表的创建,首先要定义动态结构,然后再根据定义的动态结构利用系统一个标准的method:"cl_ALV_table_create=>creat ...

  7. 前端——动态生成表格

    案例分析 因为表格数据是不断更新的,我们需要js 动态生成. 这里我们模拟数据,自己定义好数据. 数据我们采取对象形式存储. 所有的数据都是放到tbody里面的行里面. 因为行很多,我们需要循环创建多 ...

  8. JavaScript网页——动态生成表格

    1.创建学生数据 分析:因为里面的学生数据都是动态的,我们需要js动态生成.这里我们模拟数据,自己定义好数据.数据我们采取对象形式存储. var students = [{name:'吕小布',sub ...

  9. java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件

    简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...

最新文章

  1. Leetcode 207.课程表
  2. 一劳永逸关闭Windwos默认共享
  3. 没想到这家老牌AI公司越来越不“纯粹”了
  4. 正则表达式抓取文件内容中的http链接地址
  5. 基础算法 —— 贪心算法
  6. ES6新特性之修饰器
  7. 【锁相环系列3】QPSK解调之Costas锁相环去小频偏(重点环路滤波器参数设置和迭代核心代码详解)
  8. MapReduce计数器
  9. 传播路由_什么路由器穿墙效果好?购买防骗知识
  10. php 订单状态如何_如何编写程序实现图书管理系统当中的借书功能
  11. git 中怎样查看未传送(git push)到远程代码库的(git commit)提交?
  12. 电子技术基础——基本共射放大电路
  13. php + redis 实现延迟队列
  14. 初等数论及python应用
  15. 计算机显示没有可以的ip地址,电脑连不上WiFi,手机可以访问,出现黄色感叹号,没有有效的ip配置...
  16. 《人性的弱点》-[美]戴尔·卡耐基
  17. meta-inf文件夹以及MANIFEST.MF文件的作用
  18. 美业选择会员系统的原因
  19. 红外额温枪方案开发技术支持
  20. 前端三要素:HTML、CSS、JavaScript介绍以及三者的关系理解

热门文章

  1. oracle集群图例
  2. sharepoint column中的图片链接不能显示为图片
  3. SpringBoot(七)整合themeleaf+bootstrap
  4. 【漫画解读银行业务】
  5. Deploying Kubernetes with CoreDNS using kubeadm
  6. 杰和弯道超车 推企业级NAS存储应用方案
  7. java程序员保持天天快乐的6个习惯
  8. 通过用户名限制用户上网
  9. APDPlat的系统启动和关闭流程剖析
  10. 消除warning方法