BDC的录制并使用程序调用

  • Step1. 录制BDC
  • Step2. 通过标准创建ABAP程序调用BDC
  • Step3. 手动创建ABAP程序调用BDC
    • 3.1 从EXCEL TXT文件取数据
    • 3.2 根据录屏结果生成BDC调用数据
    • 3.3 执行BDC调用
    • 4.4 代码
  • Step4. 运行测试

Step1. 录制BDC

  1. 运行T-Code:SHDB,SHDB中可查看修改创建BDC录屏记录

  2. 点击新建记录,创建一个新的BDC录屏

  3. 输入创建参数,然后点击开始记录(录屏界面可能和使用事务代码的界面不一样;如果需要两个界面一致;需勾选不是批输入会话

  4. 输入物料编号,回车进入视图选择窗

  5. 选择基本数据 1视图视图;然后回车进入物料主数据视图界面

  6. 修改物料描述,物料组,然后切换到基本数据 2 视图;建议使用右边的视图切换按钮,保证BDC能够记录到

    7.录入基本数据2 视图数据后;点击保存按钮结束录屏

  7. 点击保存按钮保存记录(录屏的数据就是我们要使用的数据格式;构造一样的格式就可通过ABAP程序实现调用

  8. DBC ZMM02_01创建完成

Step2. 通过标准创建ABAP程序调用BDC

  1. 在SHDB界面选择记录ZMM02_01,然后点击程序按钮
  2. 输入对应参数
  3. 输入程序描述,点击源代码,跳转到程序编辑界面(可通过修改修改标准程序达到目的,参照 Step3. )

Step3. 手动创建ABAP程序调用BDC

3.1 从EXCEL TXT文件取数据

  • 详见代码:PERFORM FRM_GET_FILENAME.
  • 详见代码:PERFORM FRM_GET_DATA.

3.2 根据录屏结果生成BDC调用数据

  • 第一行记录事务代码的行可以省略
  • BDC_SUBSCR 的行可以省略不填
  • 未修改的值(MARA-MEINS = PC MARA-GEWEI = KG)也可省略不填
  • 详见代码:PERFORM FRM_CONVERT_DATA USING WA_DATA.

3.3 执行BDC调用

  • 方法一:使用Transaction方法,读入一条执行一次MM02
  • 方法二:使用Session的方式,读入所有数据放到一个Session,再用MM02逐条执行;还需要使用SM35去执行Session
  • 方法一详见代码:PERFORM FRM_EXEC_TRANSACTION.
  • 方法二详见代码:PERFORM FRM_EXEC_SESSION.

4.4 代码

TYPE-POOLS: TRUXS.
TYPES: BEGIN OF TY_DATAS,MATNR TYPE CHAR50,  "料号MAKTX TYPE CHAR50,  "物料描述MATKL TYPE CHAR50,  "物料组NORMT TYPE CHAR50,  "开发案号END OF TY_DATAS.DATA: GT_DATA TYPE TABLE OF TY_DATAS,WA_DATA TYPE TY_DATAS.DATA: GT_BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.PARAMETERS : P_FILE TYPE RLGRAP-FILENAME.AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.PERFORM FRM_GET_FILENAME.START-OF-SELECTION.PERFORM FRM_GET_DATA.END-OF-SELECTION.
*  "   调用方法一 By Transaction
*  PERFORM FRM_EXEC_TRANSACTION."   调用方法二  By Session(把多个Transaction放到一个Session一起执行)PERFORM FRM_EXEC_SESSION.**------------------------------------------FROM------------------------------------------**
FORM FRM_GET_FILENAME .DATA: LV_RC TYPE I.DATA: LT_FILE_TABLE TYPE FILETABLE.CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOGEXPORTINGWINDOW_TITLE = '打开文件'CHANGINGFILE_TABLE   = LT_FILE_TABLERC           = LV_RC.IF SY-SUBRC = 0.READ TABLE LT_FILE_TABLE INTO DATA(WA_FILE_TABLE) INDEX 1.P_FILE = WA_FILE_TABLE-FILENAME.ENDIF.ENDFORM.FORM FRM_GET_DATA .DATA: LT_RAW TYPE TRUXS_T_TEXT_DATA.CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'EXPORTING
*     I_FIELD_SEPERATOR    =I_LINE_HEADER        = 'X'I_TAB_RAW_DATA       = LT_RAWI_FILENAME           = P_FILETABLESI_TAB_CONVERTED_DATA = GT_DATAEXCEPTIONSCONVERSION_FAILED    = 1OTHERS               = 2.IF SY-SUBRC <> 0.
* Implement suitable error handling hereENDIF.
ENDFORM.FORM FRM_CONVERT_DATA USING P_WA_DATA.
* BDC_SUBSCR的项没有意义,可不填CLEAR: GT_BDCDATA,GT_BDCDATA[].PERFORM FRM_SCREEN_LINE USING 'SAPLMGMM' '0060'.PERFORM FRM_FIELD_LINE USING 'BDC_CURSOR' 'RMMG1-MATNR'.PERFORM FRM_FIELD_LINE USING 'BDC_OKCODE' '=ENTR'.PERFORM FRM_FIELD_LINE USING 'RMMG1-MATNR' WA_DATA-MATNR.PERFORM FRM_SCREEN_LINE USING 'SAPLMGMM' '0070'.PERFORM FRM_FIELD_LINE USING 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(01)'.PERFORM FRM_FIELD_LINE USING 'BDC_OKCODE' '=ENTR'.PERFORM FRM_FIELD_LINE USING 'MSICHTAUSW-KZSEL(01)' 'X'.PERFORM FRM_SCREEN_LINE USING 'SAPLMGMM' '4004'.PERFORM FRM_FIELD_LINE USING 'BDC_OKCODE' 'SP02'.PERFORM FRM_FIELD_LINE USING 'MAKT-MAKTX' WA_DATA-MAKTX.PERFORM FRM_FIELD_LINE USING 'BDC_CURSOR' 'MARA-MATKL'.PERFORM FRM_FIELD_LINE USING 'MARA-MATKL' WA_DATA-MATKL.PERFORM FRM_SCREEN_LINE USING 'SAPLMGMM' '4004'.PERFORM FRM_FIELD_LINE USING 'BDC_OKCODE' '=BU'.PERFORM FRM_FIELD_LINE USING 'BDC_CURSOR' 'MARA-NORMT'.PERFORM FRM_FIELD_LINE USING 'MARA-NORMT' WA_DATA-NORMT.
ENDFORM.FORM FRM_SCREEN_LINE  USING    VALUE(P_VALUE1)VALUE(P_VALUE2).CLEAR: GT_BDCDATA.GT_BDCDATA-PROGRAM = P_VALUE1.GT_BDCDATA-DYNPRO = P_VALUE2.GT_BDCDATA-DYNBEGIN = 'X'.APPEND GT_BDCDATA.ENDFORM.FORM FRM_FIELD_LINE  USING    VALUE(P_VALUE11)VALUE(P_VALUE12).CLEAR: GT_BDCDATA.GT_BDCDATA-FNAM = P_VALUE11.GT_BDCDATA-FVAL = P_VALUE12.APPEND GT_BDCDATA.ENDFORM.FORM FRM_EXEC_TRANSACTION.DATA: LT_MESSAGE TYPE TABLE OF BDCMSGCOLL WITH HEADER LINE.DATA: LV_MESSAGE TYPE STRING.LOOP AT GT_DATA INTO WA_DATA.PERFORM FRM_CONVERT_DATA USING WA_DATA.CALL TRANSACTION 'MM02' USING GT_BDCDATA[]
*                            OPTIONS FROM GS_OPTIONS     "结构传参,参照结构:CTU_PARAMSMESSAGES INTO LT_MESSAGE    "返回消息,参照结构:BDCMSGCOLLUPDATE 'S'                  "更新模式:S 同步 A 异步MODE 'E'.                   "显示模式:A 前台 N 后台 E 仅显示错误IF SY-SUBRC = 0.READ TABLE LT_MESSAGE WITH KEY MSGID = 'M3'MSGNR = '801'.IF SY-SUBRC = 0.WRITE:/ '物料:',WA_DATA-MATNR,'物料修改成功'.ELSE.LOOP AT LT_MESSAGE WHERE MSGTYP = 'E'.WRITE:/ '物料:',WA_DATA-MATNR,'物料修改失败'.CALL FUNCTION 'MESSAGE_TEXT_BUILD'EXPORTINGMSGID               = LT_MESSAGE-MSGIDMSGNR               = LT_MESSAGE-MSGNRMSGV1               = LT_MESSAGE-MSGV1MSGV2               = LT_MESSAGE-MSGV2MSGV3               = LT_MESSAGE-MSGV3MSGV4               = LT_MESSAGE-MSGV4IMPORTINGMESSAGE_TEXT_OUTPUT = LV_MESSAGE.WRITE:/ LV_MESSAGE.ENDLOOP.ENDIF.ELSE.WRITE:/ 'BDC执行错误'.ENDIF.ENDLOOP.ENDFORM.FORM FRM_EXEC_SESSION." Open SessionDATA: LS_GROUPNAME TYPE APQI-GROUPID VALUE 'ZMM02_01'.CALL FUNCTION 'BDC_OPEN_GROUP'EXPORTINGCLIENT              = SY-MANDTGROUP               = LS_GROUPNAMEKEEP                = 'X'USER                = SY-UNAMEEXCEPTIONSCLIENT_INVALID      = 1DESTINATION_INVALID = 2GROUP_INVALID       = 3GROUP_IS_LOCKED     = 4HOLDDATE_INVALID    = 5INTERNAL_ERROR      = 6QUEUE_ERROR         = 7RUNNING             = 8SYSTEM_LOCK_ERROR   = 9USER_INVALID        = 10OTHERS              = 11.LOOP AT GT_DATA INTO WA_DATA.PERFORM FRM_CONVERT_DATA USING WA_DATA." Insert SessionCALL FUNCTION 'BDC_INSERT'EXPORTINGTCODE            = 'MM02'TABLESDYNPROTAB        = GT_BDCDATA[]EXCEPTIONSINTERNAL_ERROR   = 1NOT_OPEN         = 2QUEUE_ERROR      = 3TCODE_INVALID    = 4PRINTING_INVALID = 5POSTING_INVALID  = 6OTHERS           = 7.ENDLOOP." Close SessionCALL FUNCTION 'BDC_CLOSE_GROUP'EXCEPTIONSNOT_OPEN    = 1QUEUE_ERROR = 2OTHERS      = 3.IF sy-subrc = 0.WRITE:/ 'Session创建成功,请到SM35执行'.ENDIF.
ENDFORM.

Step4. 运行测试

  1. 准备Excel数据
  2. Transaction 方式

  3. Session 方式


  4. 执行结果

SAP SHDB 录制BDC并程序调用BDC教程相关推荐

  1. SAP UI5和微信小程序对比之我见

    今天继续由SAP成都研究院著名的菜园子小哥Wang Cong,给大家分享他作为一个SAP前端人员是如何看待SAP UI5和微信小程序的异同点的. 关于Wang Cong种菜的手艺,大家请移步到他以前的 ...

  2. 子程序调用与宏定义的异同_如何用数控系统进行简单的宏程序调用?老师傅告诉你,用G65就行...

    什么是简单调用?很多人都不知道吧,如果想要深入操作宏, 就先要学会变量,学会变量之担,再去操作宏,就会变得非常的简单,今天给大家分享如何用G65进行简单的宏程序调用. 用户宏的简单宏调用是指在主程序中 ...

  3. java web 调用hadoop_Java及Web程序调用hadoop2.6

    1. hadoop集群: 1.1 系统及硬件配置: hadoop版本:2.6 :三台虚拟机:node101(192.168.0.101).node102(192.168.0.102).node103( ...

  4. C#程序调用cmd执行命令

    酷小孩 原文 C#程序调用cmd执行命令 对于C#通过程序来调用cmd命令的操作,网上有很多类似的文章,但很多都不行,竟是漫天的拷贝.我自己测试整理了一下. 代码: string str = Cons ...

  5. C#程序调用外部程序

    /* *编程语言:VisualStudio.NetC#(Beta2) *作者:迪泊威 *功能:通过C#程序调用Windows记事本程序编辑一个 *名为test.txt的文本文件. * *在整个程序中S ...

  6. openid java_微信小程序调用微信登陆获取openid及java做为服务端示例

    一.微信小程序 第一步:调用 wx.login获取code 文档地址 第二步:判断用户是否授权读取用户信息 文档地址 第三步:调用wx.getUserInfo读取用户数据 文档地址 第四步:由于小程序 ...

  7. 桌面程序调用Web Service应用实例

    作者:朱金灿 来源:blog.csdn.net/clever101 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com ...

  8. 小程序调用微信支付返回错误

    小程序调用wx.requestPayment(OBJECT)这个方法发起微信支付,返回"调用支付JSAPI缺少参数:total_fee"这个错误.查看控制台发现预支付订单id为空( ...

  9. Python Module_subprocess_子进程(程序调用)

    目录 目录 前言 软件环境 认识subprocess Popen Constructor构造函数 Class Popen的参数 args 调用程序 调用Shell指令 stdinstdoutstder ...

最新文章

  1. python history没有定义_python – AttributeError:’Tensor’对象没有属性’_keras_history’...
  2. 谷歌用AI训练“耳机线”,实现了触摸屏大多数功能
  3. double salary = wage = 9999.99错误
  4. strace 命令详解
  5. springboot项目不加端口号也可以访问项目的方法
  6. 谷歌大脑提出DropBlock卷积正则化方法,显著改进CNN精度
  7. Attaching the Script debugger to process ‘[****]’ on machine **** failed.
  8. Qt:During startup program exited with code 0xc0000135
  9. c语言读取tdx日线文件,***EXCEL读取通达信股票日线数据***改为读取通达信股票5分钟数据...
  10. Python经典编程习题100例,供初学者学习
  11. HTML资产负债表和收入支出表(可动态更新)
  12. 代码要写注释吗?写你就输了
  13. Java随笔记录第五章:类设计基础
  14. 二、DMSP/OLS、NPP/VIIRS等夜间灯光数据能源碳排放空间化——灯光指数计算(一)
  15. 解密Android7.0 8.0进程保活与拉活的实现方式 如何才能让APP常驻内存 躲避系统的追杀
  16. PostgreSQL 空间st_contains,st_within空间包含搜索优化 - 降IO和降CPU(bound box)
  17. Spider第1课:爬虫基础
  18. GC9110T 12V 直流电机驱动芯片 GC9110(低压6V驱动)的12V升级版本
  19. 马云:今天互联网创业还靠免费就是找死
  20. 计算机风扇介绍,电脑散热风扇的种类

热门文章

  1. Vue 学习笔记(六) P41-P43
  2. Linuxprobe-28期-第二节课
  3. 唠唠MySQL的join
  4. oc 协议 回调 静态成员_深入iOS系统底层之静态库
  5. leetcode | 971. Flip Binary Tree To Match Preorder Traversal(DFS/preorder)
  6. VC++2012编程演练数据结构《9》平衡二叉搜索树
  7. 景深--摄影基础理论(1)
  8. Excel:文本型日期转化为数值型日期
  9. 【机器学习实战】利用KNN和其他分类器对手写数字进行识别
  10. 读取.dwg文件“曲线救国”之读取.dxf