Lista contactos con nombre/apellidos para mailing

Hola, hemos migrado a sap y necesitamos sacar un listado de Sap de los contactos de los clientes para hacer mailing, pero con CLISAP no pone el Nombre y el apellido y parece que no pone todos los contactos y los mezcla, ¿cómo se podría resolver? He estado mirando con las opciones que se indican por aquí, acceso a las tablas no tenemos o no sabemos hacerlo. He probado con CLISAP y el matchcode, con XD03 y con CLISAP, ¿hay alguna forma de hacerlo

Gracias y saludos.

:exclamation: @javierc, no veo tu tema de presentación en el foro y lo requerimos en las normas de convivencia del foro de Ayuda SAP que por favor te pido les des una mirada.

Por lo tanto no sé si eres un consultor o usuario final o usuario clave, o un estudiante o interesado en SAP en general … Por favor abre un nuevo tema en Presentaciones, y brinda más detalles sobre tu perfil, tareas, etc.

-Muchas gracias

Estas en SAP Business One o ECC?

Disculpa, pensaba que lo hice en su momento, pues ya está hecho, aunque soy informático y he hecho labores de análisis y desarrollo en otros lenguajes, en SAP no tengo conocimientos de este tipo, aunque sí de SQL general, Oracle, Sql Server, etc.

Actualmente el perfil sería usuario final.

Saludos

que sap usas

SAP ERP? SAP B1? otro?

Hola, la versión que uso es SAP ERP.

Saludos

si tienes acceso a ver tablas en SAP, puede ser consultando la tabla KNA1 campo NAME1

o también con estas transacciones
VC/2
S_ALR_87012195

no soy de @Ventas pero con esas logré ver el nombre y apellido de los clientes
puedes revisar este tema que habla de algo similar

Espero te ayude

Saludos.

1 me gusta

Hola @javierc,

Tal vez podrías probar con la transacción OV50 .

Saludos.-

1 me gusta

Gracias por vuestras respuestas, he visto que puedo acceder por SQL a las tablas, me estoy preparando una consulta para preparar todos los campos, ya tengo todo salvo un dato que no encuentro de dónde sacar, y es el comisionista para poder luego filtrar a cada uno los suyos.

El comisionista se graba como un interlocutar en la tabla KNVP en el campo de partners PARVW, pero no sé de dónde sacar el nombre de el comisionista y encargado comercial para no sacar solo el código, ¿sabéis dónde puedo cogerlo?

Saludos

Saludos @javierc, necesitas hacer un join entre la tabla ADRC y KNA1 y allí encontraras el nombre. para poder hacerlo debes de contar con el código de cliente.

Espero sea de ayuda la información.

Saludos.

1 me gusta

También puedes usar esta BAPI, solo le entregas como parámetro el campo adrnr y te retorna la información completa de direcciones y mucho mas.

  CALL FUNCTION 'ADDR_GET'
    EXPORTING
      address_selection = wa_addr1
    IMPORTING
      address_value     = wa_addr1_val
    EXCEPTIONS
      parameter_error   = 1
      address_not_exist = 2
      version_not_exist = 3
      internal_error    = 4
      address_blocked   = 5
      OTHERS            = 6.

Nota aparte y justo hoy estoy trabajando en un reporte donde debo mostrar información de nombre y direcciones de los clientes me he encontrado con la rara sorpresa que los elementos de datos de la tabla KNA1 y ADRC difieren en las longitudes de los mismos campos, por ej. en KNA1 NAME1 (nombre de cliente) es un char de 35 y en ADRC NAME1 (también nombre de cliente) es un char de 40 y peor aun el campo de dirección en una tabla es largo 60 y en la otra es de 35. Pero como es eso posible???

Bueno obviamente ahora todos los report que recuperar el nombre y dirección de la tabla KNA1 vienen todos truncados y nadie se había dado cuenta de esto!!!

Hola, gracias por vuestra ayuda, pero no encuentro el dato que busco.

El dato que tengo es el código del comisionista, que está guardado en la tabla KNVP en el campo PARVW pero ese código no doy con ello ni en KNA1 ni ADRC que comentas. En algún registro tendrían que estar mis datos de comisionista, pero hago búsquedas y no lo veo. Entiendo que aunque está en interlocutores no deben ser eso exactamente, de hecho el formato del código difiere.
He mirado como he visto por la web para ver en qué tabla está el campo de una transacción con F1 y el botón información técnica he entrado con la VA02, botón datos área de ventas - función interlocutor y situado en el campo nombre al hacerlo pone que la tabla es RF02D, la case de tabla “Estruct.” y Nombre de campo VTXTM pero no puedo hacer select de esa tabla da error: "Invalid table name: Could not fnd table/view RF02S in schema SAPTMOS: line 1 col 15 (at pos 14)
Sí que logro ver la estrucutra con la S11 si indico que es una vista, ahí veo los campos, pero indica de qué tablas se sacan.

Debe ser algún tipo de vista, luego abajo pone Campo dynpro, programa SAMF02D… no sé si esto os da alguna pista. Si no lo logro tendré que conformarme con los códigos y luego cruzarlo en excel.

Lo que busco es sacar el mismo dato que la va02 cuando pone:

FR Función interlocutor Número Nombre
VE Encargado comercial 999999 Nombre persona que busco
ZC Comisionista 999999 Nombre persona que busco
ZE Factura electronica 999999 Este ya lo he encontrado en tabla KNKV

Por otra parte de lo que comenta Ricardo me interesa esto que pones de BAPI, no lo conocía, he buscando un poco y entiendo que debe ser algo parecido a las funciones o procedimientos almacenados de las bases de datos pero propio de Sap ¿no?

He abierto la transacción BAPI, ¿cómo meto el código que indicas puedes indicarme los pasos para empezar?

En todos los sitios leo que hay que saber cómo se llama… pero será para usar una que existe, ¿no se pueden crear? He entrado y hay un sitio que pone proyecto nuevo. Por ejemplo para usar la que dices ADDR_GET ¿qué pasos tendría que hacer?

Saludos

Ingresa a la TRX SE37 desde acá puedes ejecutar las BAPIS (que no son mas que funciones que reciben parámetros y retornan resultados), puedes realizar la ejecución poniendo datos de prueba.

Los pasos serian los siguientes:

1.- Ingresa a TRX SE37.
2.- Escribe ADDR_GET en el campo modulo de funciones:
3.- Presiona el botón ejecutar.
4.- En los parámetros del exporting debes ingresar el valor del campo ADRNR que lo puedes obtener de la tabla VBPA. Este valor va en la estructura address_selection campo addrnumber.
5.- Luego vuelve a presionar botón ejecutar y evalúa tu resultado.

El código Abap seria algo como lo siguiente:

DATA: 
ti_vbpa      TYPE STANDARD TABLE OF vbpa,
wa_vbpa      LIKE LINE OF ti_vbpa,
o_numped     TYPE vbelv,
wa_addr1     TYPE addr1_sel,
wa_addr1_val TYPE addr1_val.

SELECT parvw kunnr lifnr adrnr land1
    FROM vbpa
    INTO CORRESPONDING FIELDS OF TABLE ti_vbpa
    WHERE vbeln = o_numped AND parvw = 'RG'.

  CLEAR wa_addr1_val.

  READ TABLE ti_vbpa INTO wa_vbpa INDEX 1.

  wa_addr1-addrnumber = wa_vbpa-adrnr.

  IF sy-subrc = 0.
    CALL FUNCTION 'ADDR_GET'
    EXPORTING
      address_selection = wa_addr1
    IMPORTING
      address_value     = wa_addr1_val
    EXCEPTIONS
      parameter_error   = 1
      address_not_exist = 2
      version_not_exist = 3
      internal_error    = 4
      address_blocked   = 5
      OTHERS            = 6.
    IF sy-subrc <> 0.
      MESSAGE text-014 TYPE 'I' DISPLAY LIKE 'E'.
    ENDIF.
    wa_data-nomcomp   = wa_addr1_val-name1.
    wa_data-dircomp   = wa_addr1_val-STREET.
    wa_data-citycomp  = wa_addr1_val-CITY1.
ENDIF.

Salu2

1 me gusta

Que tal @javierc creo que entender lo que estas buscando, no es un BP es un empleado del modulo de HR lo cual maneja una estructura diferente, busca en las tablas PA0001 allí obtendrás los datos que necesitas.

Saludos.

3 Me gusta

Muchas gracias, con esto que me has dicho ya he encontrado el dato que buscaba. Aquí está consulta por si a alguien le sirve, seguro que alguien puede decirme cómo optimizarla. Por cierto que no funciona ninguna función desde la transacción DBACOCKPIT ¿es normal? ¿Puedo usarlas desde algún sitio? Quería usar la función IIF, MAX, MINX, etc pero da una excepción.

select CLI_SOC.KUNNR         "Cod.Cli"
      ,CLI_SOC.ALTKN         "Codigo Rial"
      ,CLI_SOC.BUKRS         "Sociedad"
      ,CLIENTES.NAME1        "Nombre"
      ,CLIENTES.NAME2        "Nombre 2"
      ,CLIENTES.ORT01        "Poblacion"
      ,CLIENTES.PSTLZ        "Codigo Postal"
      ,CLIENTES.REGIO        "Region"
      ,CLIENTES.STRAS        "Direccion"
      ,CLIENTES.TELF1        "Telefono"
     , (select DISTINCT(EMPLEADOS.ENAME)
             from KNVP INTERLOCUTORES , PA0001 EMPLEADOS
          where CLI_SOC.MANDT = INTERLOCUTORES.MANDT AND CLI_SOC.KUNNR = INTERLOCUTORES.KUNNR AND INTERLOCUTORES.VKORG = CLI_SOC.BUKRS AND INTERLOCUTORES.PARVW='ZC' AND INTERLOCUTORES.VKORG = EMPLEADOS.BUKRS AND INTERLOCUTORES.PERNR = EMPLEADOS.PERNR) "Nombre Comisionista"
      ,CONTACTOS.PRSNR        "Código persona"
      ,CONTACTOS.NAMEV        "Nombre de pila"
      ,CONTACTOS.NAME1        "Apellidos"
      ,CONTACTOS.TELF1        "Telefono contacto"
      ,(SELECT DISTINCT(SMTP_ADDR) 
           FROM ADR6 
         WHERE ADR6.CLIENT = CLI_SOC.MANDT AND CONSNUMBER='001' AND CLIENTES.ADRNR = ADR6.ADDRNUMBER AND ADR6.PERSNUMBER = CONTACTOS.PRSNR ) "Correo electronico Persona"
from KNB1 CLI_SOC 
    ,KNA1 CLIENTES 
    ,KNVK CONTACTOS
where CLI_SOC.MANDT  = CLIENTES.MANDT  
  AND CLI_SOC.KUNNR  = CLIENTES.KUNNR
  AND CLI_SOC.KUNNR  = CONTACTOS.KUNNR 
  AND CLI_SOC.MANDT  = CONTACTOS.MANDT
ORDER BY CLI_SOC.KUNNR


Con esto tenéis los datos del cliente y los contactos, pero mucho cuidado que es una consulta que consume sus recursos si hay muchos clientes y contactos.

Si queréis filtrar por socidad, mandante y cliente podéis poner en el where:

CLI_SOC.BUKRS = ‘XXX’ → aquí la sociedad
AND CLI_SOC.MANDT = 100
AND CLI_SOC.KUNNR = ‘000099999’ → aquí el cliente buscado

Saludos

Muchas gracias por el código para las BAPIS, en cuanto pueda lo pruebo.

Saludos

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.