當前位置:編程學習大全網 - 編程語言 - sap 如何成批刪除DN

sap 如何成批刪除DN

我自己寫的BDC,只能刪inbound DN,outbound的沒試過,試試把VL32N替換成VL02N看看

*&---------------------------------------------------------------------*

*& 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

  • 上一篇:java編程中,如何實現時間的計算?
  • 下一篇:樂高思維風暴編程特許。
  • copyright 2024編程學習大全網