Cómo eliminar DN por lotes en SAP
*&------------- -. --------------------------------------- -- ------* p>
*& Informe ZZMM
*&
*&------------- --------- ----------------------------------------- ------* p>
*&
*&
*&---------------- --------- ----------------------------------------- ---*
INFORME zzbmm9029 TAMAÑO DE LÍNEA 999.
Formulario likp.
Tipo:
COMIENZO DE tp_vbeln,
vbeln TIPO likp-vbeln,
FIN DE tp_vbeln,
COMIENZO DE tp_bdcdata,
programa TIPO bdcdata-program,
dynpro TIPO bdcdata-dynpro,
dynbegin TIPO bdcdata-dynbegin,
fnam TIPO bdcdata-fnam,
fval TIPO bdcdata-fval,
FIN DE tp_bdcdata,
tp_tbl_bdcdata TIPO TABLA ESTÁNDAR DE tp_bdcdata,
tp_tbl_bdcmsg TIPO bdcmsg TIPO TABLA ESTÁNDAR DE bdcmsgcoll.
DATOS:vbeln TIPO vbeln,
retcode TIPO zmm_dn_header-retcode,
retmesg TIPO zmm_dn_header-retmesg.
DATOS: gt_message TIPO TABLA DE bapiret1,
gw_message TIPO bapiret1.
DATOS: gt_vbeln TIPO TABLA DE tp_vbeln,
gw_vbeln TIPO tp_vbeln .
SELECCIONAR-OPCIONES s_vbeln PARA likp-vbeln.
INICIO-DE-SELECCIÓN.
BORRAR gt_vbeln.
SELECCIONE vbeln EN LA TABLA gt_vbeln
DESDE likp
DONDE vbeln EN s_vbeln.
SI gt_vbeln[] ES INICIAL.
MENSAJE i000(zzmm) CON 'No se encontraron datos'.
ENDIF.
BUCLE EN gt_vbeln EN gw_vbeln.
PERFORME frm_bdc_delete USANDO gw_vbeln- vbeln
CAMBIANDO retcode
retmesg .
ESCRIBIR:/ retcode ,retmesg.
ENDLOOP.
* &------------------------------------------------- ------------ --------------------*<
*& Formulario FRM_BDC_DELETE
*&-------- -------------------------------------- ------------ -----------*
* texto
*-------------- ----------- --------------------------------------- ---------*
* -->P_P_VBELN texto
* <--P_RETCODE texto
* <--P_RETMESG texto
*------ ------------------------------------- ------------- -------------*
FORMULAR frm_bdc_delete USANDO fu_vbeln TIPO likp-vbeln
CAMBIANDO pe_retcode
pe_retmesg.
DATOS: lw_bdcdata TIPO tp_bdcdata,
lt_bdcdata TIPO tp _tbl_bdcdata,
lt_bdcmsg TIPO tp_tbl_bdcmsg,
lw_bdcmsg TIPO bdcmsgcoll,
lv_errmsg TIPO zmm_dn_item-retmesg.
DATA.lv_temp TYPE cadena,
lstart_time TYPE syst-uzeit,
lend_time TYPE syst-uzeit.
* * para registro
CLEAR lv_temp.
lstart_time = syst-uzeit.
lw_bdcdata-program = 'SAPMV50A'.
lw_bdcdata-dynpro = '4104'.
lw_bdcdata-dynbegin = 'X'.
AGREGAR lw_bdcdata A lt_bdcdata.
BORRAR lw_bdcdata.
PERFORMAR build_bdcdata:
USANDO 'BDC_CURSOR'
'LIKP-VBELN'
CAMBIANDO lt_bdcdata,
USANDO 'BDC_OKCODE'
'/00'
CAMBIANDO lt_bdcdata,
USANDO 'LIKP-VBELN'
fu_vbeln
CAMBIANDO lt_bdcdata.
lw_bdcdata-program = 'SAPMV50A'.
lw_bdcdata-dynpro = '1000'.
lw_bdcdata-dynbegin = 'X'.
AGREGAR lw_bdcdata A lt_bdcdata.
BORRAR lw_bdcdata.
PERFORMAR build_bdcdata USANDO 'BDC_OKCODE'
'/ELOES_T'
CAMBIANDO lt_bdcdata.
LLAMAR LA TRANSACCIÓN 'VL32N' USANDO lt_bdcdata MODO 'N'
ACTUALIZAR 'S'
MENSAJES EN lt_bdcmsg.
Lea la tabla lt_bdcmsg EN lw_bdcmsg CON LA CLAVE msgtyp = 'E'.
SI sy-subrc = 0.
PERFORMAR get_message USANDO 'E'
lt_bdcmsg
CAMBIANDO lv_errmsg.
* MENSAJE e007(zmm_general) CON lv_errmsg EN pe_retmesg.
CONCATENAR 'DN eliminado fallido:' lv_errmsg EN pe_retmesg.
pe_retcode='001'.
PERFORMAR fm_set_log USANDO 'E'
'ZMM_GENERAL'
'007'
pe_retmesg
''
''
''
''
' ''.
ELSE.
PERFORMAR get_message USANDO 'S'
lt_bdcmsg
CAMBIANDO lv_errmsg.
lend_time=sy -uzeit.
CONCATENAR lv_errmsg 'desde' lstart_time 'hasta' lend_time '.' EN lv_temp
SEPARADO POR espacio.
pe_retmesg=lv_errmsg=lv_temp.
pe_retcode='000'.
BORRAR lv_temp.
MENSAJE i004(zmm_general) CON fu_vbeln lstart_time lend_time EN lv_temp.
REALIZAR fm_set_log USANDO 'I'
sy-msgid
sy-msgno
lv_temp
fu_vbeln
lstart_time
lend_time
' '.
ENDIF.
ENDFORM. " FRM_BDC_DELETE
*& --------------------------------------- ----------------------------------*
*& Formulario BUILD_BDCDATA
* &----------------------------------------------------- ------------------------------*
* Crear tabla BDC p>
*---------- ---------------------------------- --------------------*
* -->FU_FNAM texto
* -- >FU_FVAL texto
* < --FC_BDCDATA texto
*---------------------- ------------- ------------------------------- -*
FORMULARIO build_bdcdata USANDO fu_fnam TIPO bdcdata-fnam p>
fu_fval TIPO cualquiera
CAMBIANDO fc_tbl_bdcdata TIPO tp_tbl_bdcdata.
DATOS: lw_bdcdata TIPO tp_ bdcdata.
MOVER: fu_fval A lw_bdcdata-fval,
fu_fnam A lw_bdcdata-fnam.
MAYÚS lw_bdcdata-fval IZQUIERDA ELIMINANDO EL ESPACIO PRINCIPAL.
AGREGAR lw_bdcdata A fc_tbl_bdcdata.
ENDFORM." BUILD_BDCDATA
*&------------------------------------------------ - ---------------------*
*& Formulario GET_MESSAGE
*&-------- -------------------------------------------------- ---------- -*
* Recibir mensaje
*-------------------- ------ -------------------------------------------- ------ *
* -->P_MSGTYP texto
* <--P_LV_ERRMSG texto
*------------- ------ -------------------------------------------- ------ -*
FORMA get_message USANDO fu_msgtyp TIPO msgtyp
fu_bdcmsg TIPO tp_tbl_bdcmsg
CAMBIANDO fc_msg TIPO zmm_dn_item-retmesg
<. p>DATOS: lv_msgno TIPO sy-msgno,lv_msgid TIPO sy-msgid,
lv_msgv1 COMO sy-msgv1,
lv_msgv2 COMO sy-msgv2,
lv_msgv3 COMO sy-msgv3,
lv_msgv4 COMO sy-msgv4,
lw_bdcmsg TIPO bdcmsgcoll
LEER LA TABLA fu_bdcmsg EN lw_bdcmsg CON LA CLAVE. msgtyp = fu_msgtyp. p>
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.
LLAMADA FUNCIÓN 'TB_MESSAGE_BUILD_TEXT'
EXPORTANDO
langu = sy- langu
lv_msgv4 = lw_bdcmsg-msgv4.
ENDIF.
msgid = lv_msgid
msgno = lv_msgno
msgv1 = lv_msgv1
msgv2 = lv_msgv2 p>
msgv3 = lv_msgv3
msgv4 = lv_msgv4
IMPORTANDO
texto = 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.
APENDAR gw_message A gt_message.
Borrar gw_message. p>
p>
FORMA FINAL.
" GET_MESSAGE
*&--------------------------------------- ----------------------------------*
*&& formulario FM_SET_LOG p>
*&------------------------------------------- ------- -----------------------*
* texto
*-- ------- - ------------------------------------------ -------- ----------*
* -->P_TYPE texto
* -->P_ID texto
* -->P_NUMBER texto
* -->P_MESSAGE_V4 texto
*--------------------- -------- ----------------------------------------*
FORMULAR fm_set_log USANDO 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