SAP BDC 录屏:
事物码:SHDB
需求举例说明:比如 给物料标记删除。
一开始思路是想通过查找SAP标准的BAPI实现的,根据事物码MM06 按照正常的查找ABAP的方法找关联的BAPI。下图双击事物进去看这个事物码在那个包下
通过以上方法不一定能找到对应的包,这次就是个例外,找到的 该BAPI_MATERIAL_DELETE就在MGA包中
根据这个SAP 标准的BAPI 发现不能正常的在程序中实现批量删除,填充BAPI需要的参数调用后只能去到MM06的第一个屏幕
1、
2、
以上方式无法实现,果断更改BDC录屏实现;
BDC 录屏如:
最终生成的from子程序填充参数实现
PERFORM bdc_dynpro USING 'SAPMM03G' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM03G-WERKS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RM03G-MATNR'
<fs_dis_alv>-matnr.
PERFORM bdc_field USING 'RM03G-WERKS'
<fs_dis_alv>-werks.
PERFORM bdc_dynpro USING 'SAPMM03G' '0111'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM03G-LVOWK'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'RM03G-LVOWK'
abap_true.
PERFORM bdc_transaction USING 'MM06' CHANGING l_subrc l_msg.
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR gt_bdcdata.
gt_bdcdata-program = program.
gt_bdcdata-dynpro = dynpro.
gt_bdcdata-dynbegin = 'X'.
APPEND gt_bdcdata.
ENDFORM.
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
IF fval <> nodata.
CLEAR gt_bdcdata.
gt_bdcdata-fnam = fnam.
gt_bdcdata-fval = fval.
APPEND gt_bdcdata.
ENDIF.
ENDFORM.
*----------------------------------------------------------------------*
* Start new transaction according to parameters *
*----------------------------------------------------------------------*
FORM bdc_transaction USING pv_tcode CHANGING pv_subrc pv_msg.
DATA: l_mstring(480).
DATA: l_subrc LIKE sy-subrc.
DATA: lx_auth_check TYPE REF TO cx_root.
DATA: l_auth_check_text TYPE string.
DATA: lt_bapireturn TYPE TABLE OF bapiret2 WITH HEADER LINE.
DATA: lw_return LIKE LINE OF lt_bapireturn.
* batch input session
TRY.
CALL TRANSACTION pv_tcode USING gt_bdcdata
MODE 'N'
UPDATE 'S'
MESSAGES INTO gt_bdc_msg.
CATCH cx_sy_authorization_error INTO lx_auth_check.
* Authorization missing for user when executing transaction
l_auth_check_text = lx_auth_check->get_text( ).
sy-subrc = 99.
ENDTRY.
IF sy-subrc NE 0.
pv_subrc = sy-subrc.
CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
TABLES
imt_bdcmsgcoll = gt_bdc_msg
ext_return = lt_bapireturn.
LOOP AT lt_bapireturn INTO lw_return .
CONCATENATE pv_msg lw_return-message l_auth_check_text INTO pv_msg SEPARATED BY space.
ENDLOOP.
ENDIF.
REFRESH gt_bdcdata.
CLEAR:gt_bdcdata.
CLEAR:gt_bdcdata[].
ENDFORM.