*&---------------------------------------------------------------------*
*& Report ZZMM
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zzbmm9029 LINE-SIZE 999.
TABLES likp.
TYPES:
BEGIN OF tp_vbeln,
vbeln TYPE likp-vbeln,
END OF tp_vbeln,
BEGIN OF tp_bdcdata,
program TYPE bdcdata-program,
dynpro TYPE bdcdata-dynpro,
dynbegin TYPE bdcdata-dynbegin,
fnam TYPE bdcdata-fnam,
fval TYPE bdcdata-fval,
END OF tp_bdcdata,
tp_tbl_bdcdata TYPE STANDARD TABLE OF tp_bdcdata,
tp_tbl_bdcmsg TYPE STANDARD TABLE OF bdcmsgcoll.
DATA:vbeln TYPE vbeln,
retcode TYPE zmm_dn_header-retcode,
retmesg TYPE zmm_dn_header-retmesg.
DATA: gt_message TYPE TABLE OF bapiret1,
gw_message TYPE bapiret1.
DATA: gt_vbeln TYPE TABLE OF tp_vbeln ,
gw_vbeln TYPE tp_vbeln .
SELECT-OPTIONS s_vbeln FOR likp-vbeln.
START-OF-SELECTION.
CLEAR gt_vbeln.
SELECT vbeln INTO TABLE gt_vbeln
FROM likp
WHERE vbeln IN s_vbeln.
IF gt_vbeln[] IS INITIAL.
MESSAGE i000(zzmm) WITH 'No data found'.
ENDIF.
LOOP AT gt_vbeln INTO gw_vbeln.
PERFORM frm_bdc_delete USING gw_vbeln-vbeln
CHANGING retcode
retmesg.
WRITE:/ retcode ,retmesg.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Form FRM_BDC_DELETE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_VBELN text
* <--P_RETCODE text
* <--P_RETMESG text
*----------------------------------------------------------------------*
FORM frm_bdc_delete USING fu_vbeln TYPE likp-vbeln
CHANGING pe_retcode
pe_retmesg.
DATA: lw_bdcdata TYPE tp_bdcdata,
lt_bdcdata TYPE tp_tbl_bdcdata,
lt_bdcmsg TYPE tp_tbl_bdcmsg,
lw_bdcmsg TYPE bdcmsgcoll,
lv_errmsg TYPE zmm_dn_item-retmesg.
DATA: lv_temp TYPE string,
lstart_time TYPE syst-uzeit,
lend_time TYPE syst-uzeit.
* * for log
CLEAR lv_temp.
lstart_time = sy-uzeit.
lw_bdcdata-program = 'SAPMV50A'.
lw_bdcdata-dynpro = '4104'.
lw_bdcdata-dynbegin = 'X'.
APPEND lw_bdcdata TO lt_bdcdata.
CLEAR lw_bdcdata.
PERFORM build_bdcdata:
USING 'BDC_CURSOR'
'LIKP-VBELN'
CHANGING lt_bdcdata,
USING 'BDC_OKCODE'
'/00'
CHANGING lt_bdcdata,
USING 'LIKP-VBELN'
fu_vbeln
CHANGING lt_bdcdata.
lw_bdcdata-program = 'SAPMV50A'.
lw_bdcdata-dynpro = '1000'.
lw_bdcdata-dynbegin = 'X'.
APPEND lw_bdcdata TO lt_bdcdata.
CLEAR lw_bdcdata.
PERFORM build_bdcdata USING 'BDC_OKCODE'
'/ELOES_T'
CHANGING lt_bdcdata.
CALL TRANSACTION 'VL32N' USING lt_bdcdata MODE 'N'
UPDATE 'S'
MESSAGES INTO lt_bdcmsg.
READ TABLE lt_bdcmsg INTO lw_bdcmsg WITH KEY msgtyp = 'E'.
IF sy-subrc = 0.
PERFORM get_message USING 'E'
lt_bdcmsg
CHANGING lv_errmsg.
* MESSAGE e007(zmm_general) WITH lv_errmsg INTO pe_retmesg.
CONCATENATE 'DN deleted failed:' lv_errmsg INTO pe_retmesg.
pe_retcode = '001'.
PERFORM fm_set_log USING 'E'
'ZMM_GENERAL'
'007'
pe_retmesg
''
''
''
''.
ELSE.
PERFORM get_message USING 'S'
lt_bdcmsg
CHANGING lv_errmsg.
lend_time = sy-uzeit.
CONCATENATE lv_errmsg 'from' lstart_time 'to' lend_time '.' INTO lv_temp
SEPARATED BY space.
pe_retmesg = lv_errmsg = lv_temp.
pe_retcode = '000'.
CLEAR lv_temp.
MESSAGE i004(zmm_general) WITH fu_vbeln lstart_time lend_time INTO lv_temp.
PERFORM fm_set_log USING 'I'
sy-msgid
sy-msgno
lv_temp
fu_vbeln
lstart_time
lend_time
''.
ENDIF.
ENDFORM. " FRM_BDC_DELETE
*&---------------------------------------------------------------------*
*& Form BUILD_BDCDATA
*&---------------------------------------------------------------------*
* Build BDC Table
*----------------------------------------------------------------------*
* -->FU_FNAM text
* -->FU_FVAL text
* <--FC_BDCDATA text
*----------------------------------------------------------------------*
FORM build_bdcdata USING fu_fnam TYPE bdcdata-fnam
fu_fval TYPE any
CHANGING fc_tbl_bdcdata TYPE tp_tbl_bdcdata.
DATA: lw_bdcdata TYPE tp_bdcdata.
MOVE: fu_fval TO lw_bdcdata-fval,
fu_fnam TO lw_bdcdata-fnam.
SHIFT lw_bdcdata-fval LEFT DELETING LEADING space.
APPEND lw_bdcdata TO fc_tbl_bdcdata.
ENDFORM. " BUILD_BDCDATA
*&---------------------------------------------------------------------*
*& Form GET_MESSAGE
*&---------------------------------------------------------------------*
* Get Message
*----------------------------------------------------------------------*
* -->P_MSGTYP text
* <--P_LV_ERRMSG text
*----------------------------------------------------------------------*
FORM get_message USING fu_msgtyp TYPE msgtyp
fu_bdcmsg TYPE tp_tbl_bdcmsg
CHANGING fc_msg TYPE zmm_dn_item-retmesg.
DATA: lv_msgno TYPE sy-msgno,
lv_msgid TYPE sy-msgid,
lv_msgv1 LIKE sy-msgv1,
lv_msgv2 LIKE sy-msgv2,
lv_msgv3 LIKE sy-msgv3,
lv_msgv4 LIKE sy-msgv4,
lw_bdcmsg TYPE bdcmsgcoll.
READ TABLE fu_bdcmsg INTO lw_bdcmsg WITH KEY msgtyp = fu_msgtyp.
IF sy-subrc = 0.
lv_msgno = lw_bdcmsg-msgnr.
lv_msgid = lw_bdcmsg-msgid.
lv_msgv1 = lw_bdcmsg-msgv1.
lv_msgv2 = lw_bdcmsg-msgv2.
lv_msgv3 = lw_bdcmsg-msgv3.
lv_msgv4 = lw_bdcmsg-msgv4.
ENDIF.
CALL FUNCTION 'TB_MESSAGE_BUILD_TEXT'
EXPORTING
langu = sy-langu
msgid = lv_msgid
msgno = lv_msgno
msgv1 = lv_msgv1
msgv2 = lv_msgv2
msgv3 = lv_msgv3
msgv4 = lv_msgv4
IMPORTING
text = fc_msg.
gw_message-type = fu_msgtyp.
gw_message-id = lv_msgid.
gw_message-number = lv_msgno.
gw_message-message = fc_msg.
gw_message-message_v1 = lv_msgv1.
gw_message-message_v2 = lv_msgv2.
gw_message-message_v3 = lv_msgv3.
gw_message-message_v4 = lv_msgv4.
APPEND gw_message TO gt_message.
CLEAR gw_message.
ENDFORM. " GET_MESSAGE
*&---------------------------------------------------------------------*
*& Form FM_SET_LOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TYPE text
* -->P_ID text
* -->P_NUMBER text
* -->P_MESSAGE text
* -->P_MESSAGE_V1 text
* -->P_MESSAGE_V2 text
* -->P_MESSAGE_V3 text
* -->P_MESSAGE_V4 text
*----------------------------------------------------------------------*
FORM fm_set_log USING p_type
p_id
p_number
p_message
p_message_v1
p_message_v2
p_message_v3
p_message_v4.
DATA lw_message TYPE bapiret1.
lw_message-type = p_type.
lw_message-id = p_id.
lw_message-number = p_number.
lw_message-message = p_message.
lw_message-message_v1 = p_message_v1.
lw_message-message_v2 = p_message_v2.
lw_message-message_v3 = p_message_v3.
lw_message-message_v4 = p_message_v4.
APPEND lw_message TO gt_message.
ENDFORM. " FM_SET_LOG