ABAP BDC录屏

BDC录屏

创建程序

输入程序名称,点击创建按钮:
在这里插入图片描述
输入程序的标题,选择类型为”可执行程序“,点击”保存“:
在这里插入图片描述
选择包名,点击保存:
在这里插入图片描述
选择请求号,点击“确定”:
在这里插入图片描述

程序履历
*&---------------------------------------------------------------------*
*& Report Z_TEST_BDC_LHY
*&---------------------------------------------------------------------*
*& TYPE:Report
*& Description:BDC录屏测试
*& Creator:Hongyu.Liu
*& Created On:2024220*&---------------------------------------------------------------------*
*                           Change History
* ----------        -------------       -------------      -------------
*   Version          Date                Change By           Description
* ----------        -------------       -------------      -------------
*   N                2024.2.20           Hongyu.Liu          创建
*&---------------------------------------------------------------------* 
REPORT Z_TEST_BDC_LHY. 

SHDB录屏

1.输入TCode:SHDB进入BDC录制初始界面

2.单击工具栏 “新建”按钮创建一个新的BDC,系统将弹出Create Recording对话框,要求输入记录名称(此名称可以不用Y或Z开头来定义)和录制程序的事务码,本例以创建物料主数据MM01为例。

在这里插入图片描述
填写消息:
在这里插入图片描述
完成后点保存,界面自动跳转到如下图界面,红色圈住的地方就是我们在录屏的过程中填入的值,接下来在程序中需要动态的进行修改。
在这里插入图片描述
在这里插入图片描述
点保存后,点返回,如下图:
在这里插入图片描述
点击“返回”:
在这里插入图片描述
点击“程序”:
在这里插入图片描述
选中,点击程序:
在这里插入图片描述
输入程序的名称,点击“继续”:
在这里插入图片描述
输入标题,点击“源代码”:
在这里插入图片描述
选择包,点击保存:
在这里插入图片描述
选择请求号,点击“继续”按钮:
在这里插入图片描述
界面转到abap编辑界面
在这里插入图片描述

编辑代码

在第一阶段中生成的代码,在实际的应用中并不是所有都需要用到,下图中红色框圈出来的部分是我们需要用实际业务中的变量进行代替的。
步骤大概如下:
①从数据库或本地文件中获取到需要进行操作的数据
②Loop循环需要操作的数据,每一条需要进行操作的数据需要进行一次BDC(构建BDC 数据 + Call Transaction)
③在SHDB中生成的代码,我们只需要留下红色框中的代码(包括Form 中代码),并将原来录屏中输入的定值变更为loop内表中的值,整理后复制到自己需要用到BDC的程序中进行②操作即可。
如下图所示:
在这里插入图片描述
在这里插入图片描述
https://blog.youkuaiyun.com/ylxb166/article/details/117416437

在这里插入图片描述

在这里插入图片描述

完整程序

*&---------------------------------------------------------------------*
*& Report Z_TEST_BDC_LHY
*&---------------------------------------------------------------------*
*& TYPE:Report
*& Description:BDC录屏测试
*& Creator:Hongyu.Liu
*& Created On:2024220*&---------------------------------------------------------------------*
*                           Change History
* ----------        -------------       -------------      -------------
*   Version          Date                Change By           Description
* ----------        -------------       -------------      -------------
*   N                2024.2.20           Hongyu.Liu          创建
*&---------------------------------------------------------------------*
REPORT z_test_bdc_lhy.
"PARAMETERS: dataset(132) LOWER CASE.

"INCLUDE bdcrecx1.
"INCLUDE bdcrecx1_s.

START-OF-SELECTION.
 TYPES:BEGIN OF wa,
   mbrsh LIKE mara-mbrsh,   "行业领域
   mtart LIKE mara-mtart,   "物料类型
   maktx LIKE makt-maktx,   "物料描述
   meins LIKE mara-meins,   "计量单位
   matkl LIKE mara-matkl,   "物料组
   mtpos_mara LIKE mara-mtpos_mara, "普通项目类别组
  END OF wa.
 DATA itab TYPE TABLE OF wa WITH HEADER LINE.
 DATA:bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.  "用来存储屏幕字段参数值,传递录屏参数
 DATA:messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.  "记录执行BDC过程中产生的消息
 DATA:p_mode TYPE c .
 DO 10 TIMES.
    itab-mbrsh = 'M'. "行业领域
    itab-mtart = 'Z300'. "物料类型
    itab-maktx = 'BDC测试物料lhy-' && sy-index && '-' &&  sy-datum && '-' && sy-uzeit. "物料描述
    itab-meins = 'EA'. "单位
    itab-matkl = '0107'. "物料组
    itab-mtpos_mara = 'NORM'. "普通项目类别组
    APPEND itab.
 ENDDO.

START-OF-SELECTION.
 "PERFORM open_group.
 LOOP AT itab.
    PERFORM bdc_dynpro      USING 'SAPLMGMM' '0060'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RMMG1-MTART'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ENTR'.
    PERFORM bdc_field       USING 'RMMG1-MBRSH'
                                  itab-mbrsh.
    PERFORM bdc_field       USING 'RMMG1-MTART'
                                  itab-mtart.
    PERFORM bdc_dynpro      USING 'SAPLMGMM' '0070'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ENTR'.
    PERFORM bdc_field       USING 'MSICHTAUSW-KZSEL(01)'
                                  'X'.
    PERFORM bdc_dynpro      USING 'SAPLMGMM' '4004'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=BABA'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'MAKT-MAKTX'.
    PERFORM bdc_field       USING 'MAKT-MAKTX'
                                  itab-maktx.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'MARA-MATKL'.
    PERFORM bdc_field       USING 'MARA-MEINS'
                                  itab-meins.
    PERFORM bdc_field       USING 'MARA-MATKL'
                                  itab-matkl.
    PERFORM bdc_field       USING 'MARA-MTPOS_MARA'
                                  itab-mtpos_mara.
    PERFORM bdc_dynpro      USING 'SAPLSPO1' '0300'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=CANC'.
    PERFORM bdc_dynpro      USING 'SAPLMGMM' '4004'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=BU'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'MAKT-MAKTX'.
    PERFORM bdc_field       USING 'MAKT-MAKTX'
                                  itab-maktx.
    PERFORM bdc_field       USING 'MARA-MEINS'
                                  itab-meins.
    PERFORM bdc_field       USING 'MARA-MATKL'
                                  itab-matkl.
    PERFORM bdc_field       USING 'MARA-MTPOS_MARA'
                                  itab-mtpos_mara.
    REFRESH: messtab[].

    p_mode = 'N'.
	"执行BDC,事务代码是MM01,p_mode模式是“不显示屏幕”,A代表“异步的”,messtab用于存放消息 
    CALL TRANSACTION 'MM01'  USING bdcdata
                       MODE   p_mode
                       UPDATE 'A'
                       MESSAGES INTO messtab.
 ENDLOOP.

*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
*  IF fval <> nodata.
    CLEAR bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    APPEND bdcdata.
*  ENDIF.
ENDFORM. 

执行程序

点击“执行”按钮,生成的物料如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值