Ayuda SAP

ALV Grid - Consulta sobre tabla CDPOS

Que tal Foreros!!!

Esta consulta esta dirigida en especial a la comunidad de Abaper’s de este foro.

Buenos les adelanto que ya tengo mi primer Ticket para un nuevo desarrollo como ABAP :clap:!!

Bueno en fin les comento de que se trata mas o menos:

El área de Mercadeo de la empresa, trabaja con muchas promociones al año para capturar datos como Email, Teléfonos, Twitter de los clientes afiliados a los distintos servicios que se ofrecen. En este caso están requiriendo un reporte que muestre todo los clientes que hayan actualizado tanto el correo electrónico, como el teléfono en un rango de fecha determinado.

Anteriormente había trabajado en un query para sacar este información pero la verdad me surgió un inconveniente al consultar la tabla CDPOS que contiene la clase de objetos que han sido tanto insertados como modificados. El inconveniente surge es porque a través de la DBACOCKPIT - SQL Command Editor, no puede generar la consulta porque el sistema no lo permite y según he leído es por una restricción que el sistema coloca a esta tabla y la CDHDR (Si alguien puede explicarme el ¿porque? se los agradecería).

En fin y para no aburrirlos, estoy en fase de diseño de la solución y ya tengo las tablas que debo utilizar para sacar toda la información:
Tablas:
BUT000 - Para Nombres y Apellidos de Clientes
ADR6 - Emails
ADR2 - Telefonos
CDPOS - Para validar los registros modificados en el rango de fechas

Lo que estaba pensando era generar una tabla interna de la CDPOS con los campos que realmente me hacen falta que son OBJECTID - TABNAME - VALUENEW Y VALUEOLD, pero adelantándome a los acontecimientos, no se si en algún momento puede generarme el mismo inconveniente al realizar la consulta pero desde ABAP.

Espero haberme explicado bien.

Un saludo y un Abrazo!!!

Para nombre y apellido solo he visto la LFA1.

Ya estas trabajando como un verdadero ABAP, realizando analisis y pensando en consultas relacionales :slight_smile: +10.

En la LFA1 estan todos los clientes, y en esta tabla tienen un campo que dice ADRNR, direccion esa direccion es la que te pide las tablas de direcciones de SAP.

En la CDPOS tienes los campos que se modificaron, ahora solo falta la fecha.

Ya debo salir, pero en unas horas vuelvo y verifico, la tabla de la fecha.

1 me gusta

Que tal @smota!!

Agradecido por los cumplidos!! :+1:

Upss me falto un gran detalle !!!

No estoy trabajando en el ERP, esto es CRM y los datos de Clientes se almacenan en la BUT000.

Yo también voy saliendo pero en un rato me paso por aquí de nuevo para ver si alguien mas se anima en participar :+1:

desde que ley ABAPERS jajaj me oriente a modulos de FI, SD, MM, CO. y olvide preguntar de que system hablabas.
no tengo CRM a mano para poder iluminar tu consulta, pero invitare al equipo.

@smota, @Salco, @canuto, @MarcosJaimes, @miguelsap, @johnny282

1 me gusta

Que tal @smota,

Las fechas se encuentran en la CDHDR

1 me gusta

@johnny282 vas bien orientado…

La tabla BUT0000 es el maestro de Clientes tanto en CRM como en SAP IS-U:CCS. Como indicas, en esta tabla esta el nombre de los clientes, pero ten en cuenta que dependiendo del valor en el campo TYPE puede estar en un campo u otro.

Si TYPE = 1 (dejame verificar el valor, no estoy seguro) indica que el BP es Empresa y el nombre esta en campos NAME_ORG1, NAME_ORG2, NAME_ORG3, NAME_ORG4

Si TYPE = 2 (igual, voy a verificar) indica que el BP es Persona y el nombre esta en NAME_LAST, NAME_FIRST, NAME_LST2, NAME_LAST2

Tienes que tener cuidado para leerte la CDPOS, porque te puedes tumbar el perfomance del server debido al tamaño de esta tabla. Entra primero a la CDHDR por sus campos claves OBJECTCLAS=‘BUPA_BUP’ +OBJECTID + UDATE. Y luego con los valores obtenido le entras a la CDHDR por su PK: OBJECTCLAS+OBJECTID+CHANGENR.

Es posible que me haya equivocado en algo, te estoy dando esta informacion de memoria, ahorita no tengo r/3 disponible. De todas formas, mañana verifico los datos y si tal corrijo.

Estamos a la orden, te puedo ayudar bastatnte con este desarrollo.

3 Me gusta

Pues en principio si te llevas los campos de una tabla estándar a tu tabla interna no tendrías porque tener problemas para consultarlos.

1 me gusta

no, yo estoy raspado acá !!! no he trabajado con CRM, ahorita es que lo busque y no, no se nada de ahí

Que tal Chicos!!!

Hasta ahorita estoy leyendo los mensajes porque he estado algo complicado de tiempo hoy.

Efectivamente ya tome en cuenta lo que me comentas @MarcosJaimes.

Lo que estoy pensando es justamente a partir de los parámetros de entrada (Rango de Fechas) es alimentar un tabla interna a partir de una estructura con los campos estrictamente necesario de la CDHDR, para luego realizar un JOIN con otra tabla interna que almacene los campos de valores en la CDPOS. (Aun no se como hacer esto ultimo en código pero mas o menos es lo que he estado diagramando :stuck_out_tongue_winking_eye: )

Cualquier duda les estaré comentando…

Un abrazo a todos!!!

podrias hacer un for all entries. con el resultado de la primera busqueda, y asi haces esa union.

1 me gusta

Que tal @smota

FOR ALL ENTRIES anotado!!!

No se como usarlo, pero investigo en la documentación y te comento :+1:

Saludos…

de acuerdo con lo que plantea @smota, es mas eficiente que con INNER JOIN

ya va y quizas me boten del grupo de abapers jajajajaja pero no entiendo…en CRM, programas con el abap comun y corriente ??? no entiendo :s

yo estoy como brutico porque no entiendo cual es el requerimiento

1 me gusta

Para manejo de data en memoria y siempre que sea poca data 5 o 10 mil rows, los for all entries resuelven.
Sin embargo para grandes cantidaddes de data up to 10 mil rows los inner joins suelen ser mas rapidos.

1 me gusta

jajajja tranquilo @canuto para eso esta el grupo, para aclarar dudas.

Las sentencias no cambian para nada con respecto al ERP, lo que si cambia es el modelo de datos(Tablas, Estructuras, etc).

Ahora en la mañana estaba en un servicio MaxAttencion de SAP por un proyecto que se va a iniciar a principios del año que entra para la migracion a HANA y por lo que observe, hay un perfil que es ABAP for HANA, aquí las sentencias si cambian…

1 me gusta

Saludos @johnny282,

Yo siempre he diferido con mi amigo @smota con relación al uso de los For All Entries.

En el único escenario que recomiendo usarlo (porque no hay otra opción), es cuando se desea realizar un Join de una tabla cluster con otra (por ejemplo la BSEG). De lo contrario siempre que puedas realiza tus joins tomando en consideración los índices de las tablas.

Un momento de dolor vale toda una vida de gloria!

2 Me gusta

yo comparto lo mismo que @romaldyminaya !!

En cuanto a mi duda, perfecto !! ya entiendo…y lo de abap for hana, si, tengo entendido que algunas sentencias cambian.

1 me gusta

Tal vez es muy tarde pero existe la tx RSSCD100 - Visualizar documentos modificación, que despliega información referente a logs de modificación (programa RSSCD100).

Yo la he utilizado principalmente para ver quién eliminó documento como la entrega.

Algunas clases de objeto que he visto
BANF: modificaciones de solicitudes de pedido.
LIEFERUNG: modificaciones sobre entregas.
VERKBELEG: modificaciones de pedidos de ventas.
FAKTBELEG: Documento de facturación
COND_A: modificaciones de condiciones de precio.
MATERIAL: log de modificaciones sobre el maestro de materiales.
EINKBELEG: log de modificaciones de pedidos de compra.

para los próximos que necesiten realizar un reporte respecto a logs de modificaciones. pueden usar este reporte como base. saludos.

2 Me gusta

Saludos @canuto

Mira, al parecer el CRM utiliza el mismo core del R/3 porque en este cliente que estoy no tienen el CRM instalado mas sin embargo está la tabla que @johnny282 necesita para su aplicación: