Press "Enter" to skip to content

SAP BW Como hacer una adición de campos sobre un DM o Transaccional Estándar

admin 0

SAP BW Como hacer una adición de campos sobre un DM o Transaccional Estándar

Aquí les explico los pasos a seguir para conseguir este proceso, la verdad lo explicare agregando varios puntos que me parecen muy buenos para optimizar el sistema, si no lo sabes este proceso utiliza user exit, que SAP dejo para este propósito, el problema es que en ocasiones el mismo user exit es modificado por mucho y resulta en un problema cuando se está adicionando nuevo código y puede provocar problemas al resto de procesos ya liberados, primeramente explico el proceso para después darles un ejemplo.

Para hacer la adición de campos nuevos primeramente debemos identificar el user exit a utilizar, para eso entramos en la transacción CMOD

Aquí se crea el proyecto que contendrá el user exit respectivo que para el caso de BW es la ampliación RSAP0001 y sobre esta se encuentran los siguientes exits:

Uso Nombre técnico
Transaction data EXIT_SAPLRSAP_001
Master data attributes EXIT_SAPLRSAP_002
Master data texts EXIT_SAPLRSAP_003
Master data hierarchies EXIT_SAPLRSAP_004

Si no tenemos aún creado este proyecto se puede generar aquí mismo, por ejemplo yo le puse ZRSAP001 y presionas el botón

Asignas el texto y Presiona el botón, pide guardar y ubicar en transporte y muestra la siguiente pantalla, en la cual pondremos el mencionado user exit, RSAP0001:

Al presionar el botón, recordar activar antes que nada

Para implementar un exit se da doble clic sobre el deseado:

Doble clic sobre ZXRSAU02 y se crea el objeto y ahí se programa el exit.

Aquí se muestran los exit anteriomente explicados, ahora si viene lo bueno crear el exit principal, en este me enfocare a modificar un dato maestro con sus atributos, el conocido 0MATERIAL_ATTR, cabe mencionar también que utilizare una técnica sugerida por el mismo SAP para evitar problemas cuando muchos desarrolladores interactúan con estos procesos, ya que como se imaginaran en un equipo más grande muchos tendrán la necesidad de incrementar los extractores y un error en el código puede afectar a todos los involucrados ya que los exit de manera tradicional se programan algo así:

datalr_biw_mara_s type BIW_MARA_S.
CASE i_datasource.
WHEN ‘0material_attr’.
LOOP AT c_t_data into lr_biw_mara_s.
SELECT SINGLE BBTYP INTO lr_biw_mara_s FROM MARA
where matnr lr_biw_mara_smatnr.
IF sysubrc eq 0.
MODIFY c_t_data from lr_biw_mara_s.
ENDIF.
ENDLOOP.
WHEN ‘0customer_attr’.
LOOP AT c_t_data into lr_biw_mara_s.
SELECT SINGLE BBTYP INTO lr_biw_mara_s FROM MARA
where matnr lr_biw_mara_smatnr.
IF sysubrc eq 0.
MODIFY c_t_data from lr_biw_mara_s.
ENDIF.
ENDLOOP.
WHEN OTHERS.
ENDCASE.

Si se puede notar el problema es que los códigos van todos en el mismo lugar lo cual complica el programa puesto que un error puede alterar el resto de rutinas que estén adecuadamente, para evitar esto la sugerencia es seguir los siguientes pasos:

*&———————————————————————*
*&  Include           ZXRSAU02
*&———————————————————————*
DATAl_prog_name LIKE trdirname.
*&—–Se concatena la fuente con la constant ZBWI_——————-*
CONCATENATE ‘ZBWI_’ i_datasource INTO l_prog_name.
*&————-Se busca el programa nombra ZBWI_datasource ejemplo ZBWI_0MATERIAL_ATTR y se ejecuta——————–*
PERFORM execute_user_exit IN PROGRAM (l_prog_name)
TABLES I_T_SELECT
I_T_FIELDS
I_T_DATA
C_T_MESSAGES
IF FOUND.

Con esto podemos hacer cada ajuste de manera separada ya que este simple código procesara el programa con la fuente correspondiente y ya solo basta crear el programa que hará el proceso de la fuente de datos, aquí una muestra, importante es el nombre del programa que debe ser con la constante y el nombre de nuestra fuente de lo contrario no se enlazara:

Ejemplo del código:

REPORT ZBWI_0MATERIAL_ATTR.
*— User exit program for datasource 0MATERIAL_ATTR
TYPE-POOLSsbiwa«Mandatory for typecasting
*&———————————————————————*
*& Form start_user_exit
*&———————————————————————*
FORM execute_user_exit
TABLES I_T_SELECT TYPE SBIWA_T_SELECT
I_T_FIELDS TYPE SBIWA_T_FIELDS
C_T_DATA STRUCTURE BIW_MARA_S » Datasource structure
C_T_MESSAGES STRUCTURE BALMI.
*– table definition here (if any) ————*
*– local data definition here (if any) ————*
loop at c_t_data.
*– get Assortment list type from table MARA
select single BBTYP
into c_t_datazzbbtyp
from MARA
where MATNR c_t_datamatnr.
if sysubrc 0.
modify c_t_data.
endif.
endloop.
ENDFORM» start_user_exit

SAP BW Como hacer una adición de campos sobre un DM o Transaccional Estándar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *