sap abap初体验11之再看BDC批导

11 批导

11.1 简单批导SHDB

目的要修改以下4列
在这里插入图片描述

11.1.1 录屏

在这里插入图片描述

维护物料描述、物料组
在这里插入图片描述

MS登记编号

在这里插入图片描述

保存生成操作记录,共4部分

在这里插入图片描述
在这里插入图片描述

11.1.2 保存生成源代码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

源代码一共分2个部分

结构定义部分

在这里插入图片描述

循环调用部分

在这里插入图片描述

11.1.3 根据事物记录器写代码

第一行记录事务代码的行可以省略
BDC_SUBSCR 的行可以省略不填
未修改的值(MARA-MEINS = PC MARA-GEWEI = KG)也可省略不填,就奔着要修改的4列去

report ZLGZTEST08_BDC
       no standard page heading line-size 255.




*1 第一步,定义对象

TYPE-POOLS: TRUXS.
TYPES: BEGIN OF TY_DATAS,
         MATNR TYPE CHAR50,  "料号
         MAKTX TYPE CHAR50,  "物料描述
         MATKL TYPE CHAR50,  "物料组
         MSBOOKPARTNO TYPE CHAR50,  "MS登记号
       END OF TY_DATAS.

"定义EXCEL的数据存储对象
DATA: GT_DATA TYPE TABLE OF TY_DATAS,
      WA_DATA TYPE TY_DATAS.

"BDC的数据对象
DATA: GT_BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.


*2 第二步,定义文件选择参数,并选择文件
PARAMETERS : P_FILE TYPE RLGRAP-FILENAME.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
  PERFORM FRM_GET_FILENAME.

*3 第三步,获取文件数据
START-OF-SELECTION.
  PERFORM FRM_GET_DATA.

END-OF-SELECTION.


*4 第四步,调用BDC录入数据
*  "   调用方法一 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_DIALOG
    EXPORTING
      WINDOW_TITLE = '打开文件'
    CHANGING
      FILE_TABLE   = LT_FILE_TABLE
      RC           = 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_RAW
      I_FILENAME           = P_FILE
    TABLES
      I_TAB_CONVERTED_DATA = GT_DATA
    EXCEPTIONS
      CONVERSION_FAILED    = 1
      OTHERS               = 2.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.
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_FIELD_LINE USING 'MSICHTAUSW-KZSEL(02)' '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-MSBOOKPARTNO'.
  PERFORM FRM_FIELD_LINE USING 'MARA-MSBOOKPARTNO' WA_DATA-MSBOOKPARTNO.

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.



"4 第四步,调用的FORM每读入一行,就执行一次
FORM FRM_EXEC_TRANSACTION.

"定义消息的展示方式
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值