惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyberwarzone
Cyberwarzone
F
Full Disclosure
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
J
Java Code Geeks
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
L
LINUX DO - 最新话题
T
Threatpost
S
SegmentFault 最新的问题
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
C
Cyber Attacks, Cyber Crime and Cyber Security
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
S
Schneier on Security
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
G
GRAHAM CLULEY
Latest news
Latest news
P
Privacy International News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
G
Google Developers Blog
L
LangChain Blog
MyScale Blog
MyScale Blog
Project Zero
Project Zero
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
N
News | PayPal Newsroom
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
SecWiki News
SecWiki News
T
Tor Project blog
C
Check Point Blog
Google Online Security Blog
Google Online Security Blog
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学

博客园 - levin

如何读取内存的数据?(转) ECC 6.0 安装之后的配置(转) 网络分析中数据包结构的定义 网络管理之数据包的解释与结构分析(转) SAP BDC 技术的分类(转) Delphi中建议使用的语句 Delphi面向对象编程的20条规则 Delphi取整函数 ECC 6.0 New GL Functionality and General FAQ - levin Delphi中的容器类 BDC教程(转) - levin - 博客园 Master data-Customer 如何快速从BSEG读取数据(转) Rules for Better SQL Programming 刷新ALV定位到当前记录行 - levin - 博客园 双击ALV调用事务代码并传入参数 如何查找系统屏幕参数 一些常用的系统变量(SYST) ABAP内表(internal table)有关的系统变量 ABAP字符串比较操作中空格的影响
SAP BDC批量导入数据(转) - levin - 博客园
levin · 2009-08-06 · via 博客园 - levin

Batch Input是一种数据批量输入SAP系统的辅助程序,SAP系统的资料、格式可以通过Batch Input录入SAP系统

Batch Input的机制是模拟事务处理将数据录入R/3系统

Batch Input类似SAPCATT,控制性更好,处理能力更强

 1、首先我们需要把需要批导入事务的操作步骤记录下来,可以用T-CODESHDB”来记录。

COMMAND LINE中输入“SHDB”。

 

2、进入TRANSACTION RECORDER界面

3、点“NEW RECORDER”创建一个记录,现在以修改订单为例,键入记录名“ZAMAO”,输入事务代码“VA02”,

然后“START RECORDING”。

4、下面的任务就是记录下修改订单的操作步骤。

5、填入订单号码,按确定

6、现在来增加一下订单的PO DATE

7、填入“2006.10.01”,点“保存”。

8、这样就完成了一个最最简单的BDC录取工作,录完之后会出现系统运行的操作的跟踪,包括程序号,屏幕号,字段名,值等等,下面的任务是根据这些写到程序里面以完成SAP自动跑订单修改的这一动作。

9、首先必须定义BDC变量:

* BDC table
DATA: t_bdc       LIKE bdcdata  OCCURS 0 WITH HEADER LINE,
           t_bdcmsg LIKE bdcmsgcoll  OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF t_log OCCURS 0,
               information(289) TYPE c,   "
返回信息
           END OF t_log.
DATA: v_mode TYPE c VALUE 'N'.

其中TABLE t_bdc中记录的具体的操作步骤,而TABLE t_bdcmsg是记录系统返回的信息,成功与否都记录到自定义的信息表t_log中。

先写个记录BDC的函数:

FORM. fm_set_bdc TABLES t_bdc STRUCTURE bdcdata
                                                     USING u_sign TYPE c
u_par1
u_par2.

CLEAR: t_bdc.
IF u_sign = 'X'.
   t_bdc-program = u_par1.
   t_bdc-dynpro = u_par2.
   t_bdc-dynbegin = u_sign.
ELSE.
   t_bdc-fnam = u_par1.
   t_bdc-fval = u_par2.
ENDIF.
APPEND t_bdc.
ENDFORM. 

然后写入T_bdc:

PERFORM. fm_set_bdc:
    TABLES t_bdc USING 'X'    'SAPMV45A'     '0102',
    TABLES t_bdc USING ' '    'BDC_OKCODE'  '/00',
    TABLES t_bdc USING ' '    'VBAK-VBELN'   it_display-vbeln,
    TABLES t_bdc USING 'X'   'SAPMV45A'      '4001',
    TABLES t_bdc USING ' ' '   VBKD-BSTDK'   '2006.10.01'.

因为此处是修改操作,所以要切记写入的只是你修改的数据,千万别把订单本来的数据也写入t_bdc,如果写入则会把需要修改的所有订单都该成举例的订单的数据,而我们需要修改的仅仅是增加一个PO DATE2006.10.01”。

然后是调用事物代码:

CALL TRANSACTION 'VA42'
           USING t_bdc
           MODE v_mode "Background performance
           UPDATE 'S' "local updata
           MESSAGES INTO t_bdcmsg. "all message table

v_mode是显示模式:

A”表示显示每一步操作步骤,

N”表示不显示步骤,

E”表示当出现错误的时候显示出错的位置。

系统信息写入到t_bdc中。

最后是收集系统信息(成功与否,要是失败,失败的原因)并输出到SAP程序屏幕

READ TABLE t_bdcmsg WITH KEY msgtyp = 'S'
                                                    msgid = 'V1'
                                                    msgnr = '311'.         "
批导入成功的标志,可以自己debugt_bdcmsg中去找.
IF sy-subrc EQ 0.
     CONCATENATE '
订单号码:'
                               it_display-vbeln
                              ',
项目号:'
                              it_display-posnr
                              '
修改成功' INTO t_log.
    APPEND t_log.
    CLEAR t_log.
ELSE.


LOOP AT t_bdcmsg.
    IF t_bdcmsg-msgtyp = 'E'
        OR t_bdcmsg-msgv1 <> ''
        OR t_bdcmsg-msgv2 <> ''
        OR t_bdcmsg-msgv3 <> ''
        OR t_bdcmsg-msgv4 <> ''.
MESSAGE ID t_bdcmsg-msgid                   
“收集错误信息,并写入自定义的表t_log中。
                TYPE 'S'
                NUMBER t_bdcmsg-msgnr
                WITH t_bdcmsg-msgv1
    t_bdcmsg-msgv2
    t_bdcmsg-msgv3
    t_bdcmsg-msgv4
    INTO t_log-information.
CONCATENATE '
订单号码:'
                        it_display-vbeln
                       ',
项目号:'

                       it_display-posnr
                       '
出错:'
                       t_log-information
INTO t_log-information.
APPEND t_log.
CLEAR t_log.
ENDIF.
ENDLOOP.
ENDIF.

LOOP AT t_log.                          "显示出错信息

    WRITE:/ t_log-information.

ENDLOOP.

到次一个批导入程序基本完成。