Para el uso de los BTE primero, visitas la transaccion FIBF
Luego selecciones opciones->productos->de un cliente
En esta aprtado de creas el producto como tal, y si te fijas en el check, eso lo que hace es darte la posibilidad de activar o desactivar cualquier evento, digamos que ocurre un problema y quieres apagar el evento para que no se ejecute el codigo que pusiste, vienes y quitas el check.
Luego vuelves a tras, y vas a opciones->Modulosp/s->de un cliente.
Y aqui le colocas el producto que creaste, y le dices con cual evento quieres que funcione, y a parte le colocas un modulo de funciones, el cual sera el bloque que tendra el codigo. Usualmente no, mejor dicho siempre, tendras que copiar un modulo de funcion standard, ya que SAP tiene modulos para cada evento. Para buscarlos vas a la se37 y colocas +numero del evento+ fijate que si puse asteriscos, eso es para que te salga el modulo estandar y te lo copias.
Ya terminaste con el BTE, ahora vamos al codigo dentro del modulo de funciones.
DATA: v_rnc LIKE i_kna1-stcd1,
v_respuesta TYPE char1,
v_mensaje TYPE string,
v_quetion TYPE c LENGTH 80.
DATA: l_kunnr TYPE kna1-kunnr.
* wa_ztrncblq LIKE ztrncblq.
CASE sy-tcode.
************************************************************************
******** Valido que se active este BTE solo en las t-code deseadas ****
************************************************************************
WHEN 'XD01' OR 'FD01' OR 'VD01' OR 'XD02' OR 'FD02' OR 'FD03' OR 'XD03'.
************************************************************************
******** *. Valida el número de pantalla donde se encuentra el campo de*
************************************************************************
IF i_kna1-stcd1 IS NOT INITIAL AND i_kna1-land1 EQ 'DO' . "Start if #1
v_rnc = i_kna1-stcd1.
REPLACE ALL OCCURRENCES OF '-' IN v_rnc WITH ''.
IF v_rnc CO ' 0123456789'. "Valido que solo haya digitado numeros. "Start if#2
************************************************************************
******** Valido que sea un RNC o una cedula ********************
************************************************************************
IF strlen( i_kna1-stcd1 ) NE 9 AND strlen( i_kna1-stcd1 ) NE 11.
MESSAGE 'RNC o Cedula no valido, favor corregir' TYPE 'E'.
ELSE.
************************************************************************
******** Valido que no este duplicado ********************
************************************************************************
SELECT SINGLE kunnr FROM kna1
INTO l_kunnr
WHERE kunnr <> i_kna1-kunnr
and stcd1 EQ i_kna1-stcd1.
IF sy-subrc EQ 0.
v_mensaje = 'RNC duplicado favor verificar el codigo [ '.
CONCATENATE v_mensaje l_kunnr ' ] ' INTO v_mensaje SEPARATED BY space.
CLEAR l_kunnr.
MESSAGE v_mensaje TYPE 'E' DISPLAY LIKE 'I'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDCASE.
Si te fijas bien, condicione el codigo a las t-code de deudores, porque da la casualidad de que los BTE son globales, y pasan muchas t-code asi que siempre es bueno condicionar el codigo a la t-code que vas a utilizar.