SlideShare una empresa de Scribd logo
1 de 98
Descargar para leer sin conexión
om
                                                                p.c
                                                  esa
                 Blogdesap
                                       gd
          resumen 2012
           .              blo
        ww



       http://www.blogdesap.com
  /w




      Customizing, ABAP y noticias
 p:/




        Recopilación de los artículos publicados en blogdesap durante el año 2012
htt
Puedes acceder a estos artículos y otros que voy publicando a través de




                                                                                                                     om
                                                          http://www.blogdesap.com

                                                    http://www.facebook.com/blogdesap




                                                                                                          p.c
Para seguir creciendo te agradezco que compartas este blog con tus amigos, conocidos y cualquier que esté interesado. Puedes compartir este
pdf libremente bajo las condiciones de la licencia Creative Commons




                                                                                        esa
             Blogdesap: resumen 2010-11 por http://www.blogdesap.com se encuentra bajo una Licencia Creative Commons
                                 Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported.
                                                                           gd
Este PDF se ha generado gracias al proyecto http://fivefilters.org/ y a http://www.pdfill.com/pdf_tools_free.html
                                                         blo
Las imágenes que aparecen publicadas son propiedad de sus autores y aparecen publicadas aquí bajo la licencia Creative Commons que ellos mismos
cedieron. A continuación se relaciona el origen de estas imágenes.

http://www.flickr.com/photos/zooboing/5508849065/
http://www.flickr.com/photos/jamescridland/2272701122/
http://www.flickr.com/photos/27128437@N07/3020096760/
http://www.flickr.com/photos/dinah/2155542715/
http://www.flickr.com/photos/mikecogh/2615450243/
                                     .

http://www.flickr.com/photos/wonderlane/6696970999/
http://www.flickr.com/photos/kexino/5142774552/
                                  ww


http://www.flickr.com/photos/68235594@N02/6209901764/
http://www.flickr.com/photos/zigazou76/3621421967/
http://www.flickr.com/photos/uncut/32992478/
http://www.flickr.com/photos/suewaters/3239113361/
http://www.flickr.com/photos/uncut/32992438/
http://www.flickr.com/photos/alancleaver/2380333875/
http://es.wikipedia.org/wiki/Archivo:Andora.png
http://www.flickr.com/photos/pa1nt/2517516586/
http://www.flickr.com/photos/ofernandezberrios/2719764089/
http://www.flickr.com/photos/szpako/6296123543/
                    /w




http://www.flickr.com/photos/juhansonin/5135576565/
http://www.flickr.com/photos/j1x4r/4313734090/
http://taxcredits.net/
http://www.seniorliving.org/
http://www.flickr.com/photos/oarranzli/8020458953/in/photostream
http://www.flickr.com/photos/stefg/83249642/
     p:/




http://www.flickr.com/photos/andrea-prieto/6165780168/
http://www.flickr.com/photos/newtown_grafitti/5594383495/
http://www.flickr.com/photos/49889874@N05/5645164344/
http://www.flickr.com/photos/garryknight/5489575248/
http://www.flickr.com/photos/tedpercival/2127361324/
http://www.flickr.com/photos/flissphil/367608136/
http://www.flickr.com/photos/trawin/3269858710/
htt




http://www.flickr.com/photos/timoelliott/6328671116/
http://www.flickr.com/photos/ecastro/2204417040/
http://www.flickr.com/photos/z287marc/3192570544/
http://www.flickr.com/photos/23024164@N06/7069248491/
http://www.flickr.com/photos/traftery/5733183289/
http://www.flickr.com/photos/bovinity/2125620107/
http://www.flickr.com/photos/cdharrison/4991886507/
http://www.flickr.com/photos/quinnanya/5797565681/
http://www.flickr.com/photos/tallchris/14288135/
http://www.flickr.com/photos/thirteenofclubs/5520261196/
http://www.flickr.com/photos/rudiriet/403986061/
http://www.flickr.com/photos/ronguillen/2086953033/
http://www.flickr.com/photos/garryknight/6796846915/




                                                                                                om
http://www.softicons.com/free-icons/object-icons/cargo-boxes-icons-by-antreposhop/fork-3-icon




                                                                                           p.c
                                                                            esa
                                                                gd
                                .                blo
                             ww
                 /w
     p:/
htt
INDICE




                                                                       om
ABAP
1. Rangos numéricos propios
2. Índices de tablas
3. Webservices: ficheros xml
4. Webservices: service providers
5. Webservices: service consumer




                                                                  p.c
6. Log de modificaciones de tablas
7. Proteger y desproteger variantes
8. Encontrar tablas de transacciones
9. Documenta tus programas ABAP
10. ¿Por qué los usuarios no leen los mensajes?
11. ¿Son mis entornos diferentes?




                                                                 esa
BC
12. Regeneración de objetos
13. Fijar color del sistema
14. Parámetros de usuario
15. Conocer los accesos y el trabajo de un usuario
16. Introduce un texto informativo en la entrada a SAP
17. Cinco formas de encontrar transacciones del customizing
                                                            gd
                                             blo
FI
18. Cinco razones por las que no funciona el programa de pagos


MM
                              .
                           ww


19. Apariencia de campos del maestro de materiales
20. Creación de almacenes en materiales
21. Ayuda de búsqueda inteligente sin matchcode
22. Valor mínimo de proveedor
23. Surtido parcial de proveedor
24. Cómo bloquear la actualización del registro info
25. Comparando qué he pedido y qué me han facturado
                /w




PM
26. Funciones de interlocutor en órdenes de mantenimiento
27. Campos nuevos en equipos
     p:/




SD
28. Datos adicionales en documentos de ventas
htt




29. Campos de reserva en clientes
30. Configurar regiones
31. Datos incompletos en documentos de ventas
32. Verificación de pedidos de clientes duplicados
33. Flujos de documentos
34. Determinación de cuentas de ventas
35. Portes de transporte en ventas de material
36. Cinco razones por las que el IVA no se determina correctamente
37. Gestión de lotes en SAP
38. Qué es un cliente CPD y por qué crearlo




                                                                           om
SAP
39. Una mirada a la nueva SCN
40. Transacciones en logística




                                                                      p.c
41. Transacciones en finanzas
42. Preparados para la nueva SAP GUI 7.30
43. Breve historia de SAP
44. Siete requisites para ser un buen consultor




                                                                     esa
                                                         gd
                              .               blo
                           ww
                /w
    p:/
htt
blogdesap.com           created using fivefilters.org




                                                                                                            m
Rangos numéricos propios                                              números disponibles son inferiores a este porcentaje.

                                                                  Una vez tenemos todo esto grabamos, nos aparecerá un mensaje
                                                                  de advertencia. Aceptamos.




                                                                                              .co
                                                                  Actualización del rango

                                                                  Ya tenemos creado nuestro rango numérico. Ahora debemos
                                                                  informar nuestras numeraciones dependientes de centro.
Este post trata de cómo crear objetos de rangos numéricos
específicos de cliente para poder utilizar luego en nuestros
                                                                      Presionamos el botón “Rangos números”.




                                                                                sap
programas SAP. Por ejemplo, queremos crear una numeración
específica de nuestros empleados que guardaremos en una tabla         Indicamos el centro.
Z* a través de un programa Z*.
                                                                      Presionamos “Intervalos”.
Para información más específica sobre rangos numéricos que
proporciona de forma estándar SAP podéis referiros a un post
                                                                      +Intervalo.
anterior.




                                                                    de
                                                                      Guardamos. Nos dará un mensaje advirtiendo que esta
Parametrización
                                                                      numeración no es transportable al sistema productivo y que
Transacción: SNUM                                                     deberemos reproducirla en nuestro mandante destino
                                                                      también.
                                                               og
                                                  .bl
                                 ww



    Objeto: damos un nombre a nuestro rango.
                                                                  Utilización
    Elemento datos objeto inferior: nuestro rango va a depender
    del centro de trabajo del empleado. Los empleados del         Y ahora sólo falta utilizarlo en un programa que diseñemos ya
    centro “0310” tendrán un código que empiece por “3”; los      que este objeto no está asociado de forma estándar en ninguna
                     /w




    del centro “0610” tendrán código que empiece por “6”, etc.    transacción SAP. Para hacerlo tenemos que llamar al objeto
    Aquí indicaremos pues el elemento de datos de centro          directamente en nuestro programa ABAP mediante el módulo de
    “WERKS_D”.                                                    funciones “NUMBER_GET_NEXT“. Por ejemplo, para empleados
                                                                  del centro ‘0310’ sería del siguiente modo. 
    Indicador hasta ejercicio: si quisiéramos cambiar la
                                                                  CALL FUNCTION 'NUMBER_GET_NEXT'
         p:/




    numeración de ejercicio en ejercicio, marcaríamos este
    campo. No es el caso de este ejemplo.                           EXPORTING
                                                                      nr_range_nr             = '01'
    Dominio longitud número: en este campo indicamos de qué           object                  = 'ZEMPLEADOS'
    longitud será la numeración. Para eso introducimos un             subobject               = '0310'
    dominio con la longitud prevista (ya sea creando un nuevo       IMPORTING
htt




    dominio ya sea utilizando uno que exista de forma estándar        number                  = v_number
    en SAP). Voy a utilizar la longitud del campo “numero de        EXCEPTIONS
    personal” estándar de SAP (dominio “PERNR”).                      interval_not_found      = 1
                                                                      number_range_not_intern = 2
    Porcentaje advertencia: al llenar este campo le estamos           object_not_found        = 3
    diciendo a SAP que nos avise si en nuestro rango los              quantity_is_0           = 4
blogdesap.com             created using fivefilters.org




                                                                                                                 m
Log de modificaciones de                                                  Navegamos a ‘Pasar a /Opciones técnicas’.


tablas                                                                    Marcamos la opción ‘Grabar en log modificaciones de
                                                                          datos’. Nos aseguramos de que la tabla quede activa tras




                                                                                                   .co
                                                                          hacer la grabación.




                                                                                   sap
                                                                        de
                                                                  og
En varias ocasiones he recibido consultas acerca de cómo se
puede saber en SAP qué usuario ha modificado información
                                                                          Vamos al perfil de sistema y modificamos el valor
dentro de una tabla. Esta información es útil si no tenemos
                                                                          ‘rec/client’. Indicamos el número del mandante sobre el que
activado el log de acciones de una transacción y sólo podemos
                                                                          se grabarán los logs de modificaciones. Recomiendo que
consultar este log a través de las tablas con las que interactúà la
                                                     .bl

                                                                          este paso lo haga el administrador Netweaver (responsable
transacción. También es posible que el usuario haya ejecutado
                                                                          de Basis) de vuestra empresa.
una transacción Z propia de cliente, las transacciones de cliente
no suelen tener asociado ningún log, pero sí sabemos sobre qué
                                                                      Herramientas /CCMS /Configuration /RZ10 – System profile
tablas se está accediendo.

                                                                      Resultado
                                   ww


Pues bien, en este caso también tenemos una herramienta en
SAP. Es el log de modificaciones de tablas. En principio, no suele
                                                                      Si todo ha ido bien siempre que haya una modificación, ésta
estar activado ya que penaliza el rendimiento y la memoria de la
                                                                      quedará registrada. Para consultar los cambios podemos ir al
base de datos. De hecho, SAP no recomienda su uso en tablas de
                                                                      programa RSVTPROT
aplicación, más bien solamente en tablas de customizing. Así que
si decidís activar esta funcionalidad medid muy bien las              Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP
repercusiones que tendrá.
                       /w




Ejemplo

Tenemos una tabla ZTEST sobre la cual grabamos documentos
de ventas a través de una vista de actualización. Deseamos saber
cuándo y quién realiza modificaciones sobre esta tabla. Los pasos
están perfectamente recogidos en el punto de customizing
          p:/




de SAP.

IMG: Gestión del sistema de control interno /Grabación de
modificaciones de tablas

     Abrimos el diccionario ABAP y buscamos nuestra
htt




     tabla ZTEST.

Herramientas /Workbench ABAP /Desarrollo /SE11 – Diccionario
ABAP
blogdesap.com            created using fivefilters.org




                                                                                                               m
Índices de tablas                                                  TABLES:
                                                                     mara.

                                                                   DATA: BEGIN OF t_mara OCCURS 0,




                                                                                                .co
                                                                     matnr LIKE mara-matnr,
                                                                     bismt LIKE mara-bismt,
                                                                   END OF t_mara.

                                                                   SELECT-OPTIONS:
                                                                     s_bismt FOR mara-bismt.




                                                                                sap
                                                                   START-OF-SELECTION.

                                                                     SELECT * FROM mara
                                                                       INTO CORRESPONDING FIELDS OF TABLE t_mara
                                                                       WHERE bismt IN s_bismt.




                                                                     de
                                                                   El rendimiento de un programa de este tipo se encuentra
                                                                   penalizada ya que el campo de búsqueda no es clave en la tabla.

                                                                   Solución

                                                                   Crear un índice para el campo MARA-BISMT.
                                                                og
                                                                       Entramos en la tabla de diccionario MARA.

                                                                   Herramientas /Workbench ABAP /Desarrollo /SE11 – Diccionario
                                                                   ABAP
                                                  .bl

                                                                       Marcamos el botón ‘Indices’ y “crear índice”.
                                 ww


Un índice de una base de datos, según la Wikipedia es:

“una estructura de datos que mejora la velocidad de las
operaciones, permitiendo un rápido acceso a los registros de una
tabla en una base de datos”
                                                                       Damos una codificación a nuestro índice, por ejemplo, Z1.
Se suele crear un índice sobre una tabla del diccionario ABAP
cuando en uno de nuestros programas nos vemos obligados
                      /w




a hacer búsquedas de información, pero el acceso a ésta no se
realiza de acuerdo a campos claves de dicha tabla.

Ejemplo

Imaginemos que deseamos extraer un listado de materiales de
          p:/




nuestra base de datos. Para ello debemos ir à la tabla MARA que
contiene toda la información general de materiales de nuestra          Lo identificamos con una descripción.
empresa. Lo ideal en este caso sería hacer la búsqueda poniendo
como condición de selección el campo número de material                Dejamos la opción que nos da por defecto, índice no único
(MARA-MATNR) que es el único campo clave de la tabla. Sin              en todos los sistemas de la base de datos.
htt




embargo, nuestro caso es más complejo y se nos pide hacer una
búsqueda de materiales a partir del campo número de material           Escribimos el campo por el cual vamos a indexar la base de
anterior (MARA-BISMT) en un código como el siguiente:                  datos. Es importante que uno de ellos sea siempre el campo
                                                                       mandante.
REPORT zprueba
       NO STANDARD PAGE HEADING LINE-SIZE 255.
m
                                                                         .co
     Ya podemos grabar y activar.

A partir de ahora, en principio debería mejorar el rendimiento de




                                                                    sap
nuestro programa.

Imagen inicial | Metagrrrl




                                                                    de
                                                               og
                                                   .bl
                                    ww
                      /w
         p:/
htt
blogdesap.com            created using fivefilters.org




                                                                                                      m
Webservices(I): ficheros xml                                          Llamamos à la función CALL_TRANSFORMATION que
                                                                      convierte los datos a XML.

                                                                   REPORT zpruebas NO STANDARD PAGE HEADING LINE-SIZE




                                                                                          .co
                                                                    255.
                                                                   **************************************************
                                                                   *******************************
                                                                   *Tablas
                                                                   **************************************************
                                                                   ********************************




                                                                             sap
                                                                   TABLES:
                                                                     vbap.

                                                                   **************************************************
                                                                   *******************************
                                                                   *Tablas internas
                                                                   **************************************************




                                                                    de
                                                                   *******************************
                                                                   DATA: BEGIN OF ti_vbap OCCURS 0,
                                                                     vbeln LIKE vbap-vbeln,         "Documento
                                                                     posnr LIKE vbap-posnr,         "Posición
Éste y (creo que) los dos siguientes posts del blog van a tratar
                                                                     matnr LIKE vbap-matnr,         "Material
                                                                   og
sobre comunicaciones entre sistemas mediante servicios web o 
                                                                   END OF ti_vbap.
webservices. Explicaré cómo enviar y recibir información desde
y hacia nuestro SAP, lo que comunmente llamamos interfaces.        **************************************************
Siempre partiendo de que no disponemos del módulo XI/PI de         *******************************
SAP que seguramente nos facilitaría las cosas bastante.            *Datos globales
                                                   .bl

Para empezar diré que la información que trasladaremos entre       **************************************************
plataformas la convertiremos al “lenguaje” XML y en este primer    *******************************
post voy a explicar cómo hacerlo.                                  DATA:
                                                                     g_xml TYPE string.
Transformaciones ABAP/XML y XML/ABAP
                                  ww


                                                                   **************************************************
SAP provee de dos herramientas básicas para hacer                  *******************************
transformaciones de información de ABAP a XML y de XML             ***                             SELECTION-SCREEN
a ABAP.                                                            **************************************************
                                                                   *******************************
     Utilizando la plantilla de transformación estándar de SAP.    SELECT-OPTIONS:
                                                                     s_vbeln FOR vbap-vbeln.
     Mediante la creación de transformaciones simples a través
                      /w




     de la transacción STRANS.                                     **************************************************
                                                                   *******************************
Voy a centrarme en el primer tipo haciendo un pequeño ejemplo.     *START-OF-SELECTION
Primero vamos a crear un fichero XML a partir de datos de          **************************************************
pedidos de venta extraídos de nuestro sistema. En segundo          *******************************
lugar, imaginaremos que el sistema externo nos ha devuelto esos
         p:/




                                                                   START-OF-SELECTION.
datos modificados en otro fichero XML que convertiremos
igualmente a datos ABAP.                                             SELECT * FROM vbap
                                                                       INTO CORRESPONDING FIELDS OF TABLE ti_vbap
De ABAP a XML
                                                                       WHERE vbeln IN s_vbeln.

     Crearemos un pequeño programa ABAP en nuestro editor.
htt




                                                                   **************************************************
                                                                   *******************************
Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP
                                                                   *END-OF-SELECTION
                                                                   **************************************************
     Extraemos los datos de la tabla de pedidos de posiciones de
                                                                   *******************************
     pedidos de venta VBAP.
                                                                   END-OF-SELECTION.
CALL TRANSFORMATION id SOURCE data = ti_vbap[]               *******************************
                         RESULT XML    g_xml.                  ***                             SELECTION-SCREEN
                                                                                            **
[…]                                                            **************************************************
                                                               *******************************




                                                                                                            m
      El resultado para la selección del pedido de ventas      PARAMETERS:
      1320000021                                                 p_fich TYPE string.

                                                               **************************************************




                                                                                             .co
                                                               *******************************
                                                               *START-OF-SELECTION
                                                               **************************************************
                                                               *******************************
                                                               START-OF-SELECTION.




                                                                             sap
                                                               * Aquí llenaríamos la variable g_xml con el string
                                                                xml
De XML a ABAP                                                  * [...]

      Crearemos un pequeño programa ABAP en nuestro editor.    **************************************************
                                                               *******************************
Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP   *END-OF-SELECTION




                                                                 de
                                                               **************************************************
      Subiríamos los datos a SAP. En próximos posts veremos
                                                               *******************************
      cómo hacerlo a través de webservice.
                                                               END-OF-SELECTION.

      De nuevo llamamos à la función CALL_TRANSFORMATION
                                                                 CALL TRANSFORMATION id SOURCE XML g_xml
      para convertir los datos XML a ABAP.
                                                              og
                                                                                        RESULT data = ti_vbap.

REPORT zpruebas NO STANDARD PAGE HEADING LINE-SIZE
                                                               Al final, los datos del fichero xml estarían incorporados en
 255.
                                                               nuestra tabla interna ABAP ti_vbap.
**************************************************
*******************************                                Más información
                                                    .bl

*Tablas
**************************************************             En este blog también tenéis información amplia sobre
*******************************                                transformaciones XML. Y para una documentación más extensa
                                                               también podéis consultar este documento.
**************************************************
                                                               Imagen inicial | ssinger3
                                   ww


*******************************
*Tablas internas
**************************************************
*******************************
* Tabla que contiene el xml
DATA: BEGIN OF ti_xml OCCURS 0,
  string TYPE string,
END OF ti_xml.
                       /w




* Tabla de datos ABAP
DATA: BEGIN OF ti_vbap OCCURS 0,
  vbeln LIKE vbap-vbeln,         "Documento
  posnr LIKE vbap-posnr,         "Posición
          p:/




  matnr LIKE vbap-matnr,         "Material
END OF ti_vbap.

**************************************************
*******************************
*Datos globales
htt




**************************************************
*******************************
DATA:
  g_xml TYPE string.

**************************************************
blogdesap.com           created using fivefilters.org




                                                                                                             m
Webservices (II): service                                          *"------------------------------------------------
                                                                   ----------------------

providers                                                          *"*"Interfase local




                                                                                               .co
                                                                   *" IMPORTING
                                                                   *"       VALUE(I_STRING) TYPE STRING
                                                                   *" EXPORTING
                                                                   *"       VALUE(O_RESPONSE) TYPE STRING
                                                                   *"------------------------------------------------
                                                                   ----------------------
                                                                      TABLES:




                                                                               sap
                                                                        ztiris_rec,
                                                                        ztiris_err.
                                                                      DATA:
                                                                        ti_vbap LIKE vbap OCCURS 0 WITH HEADER LINE,
                                                                        ti_errores LIKE ztiris_err OCCURS 0 WITH
                                                                    HEADER LINE.




                                                                     de
                                                                   * XML string to ABAP itab
                                                                     CALL TRANSFORMATION id SOURCE XML i_string
                                                                                             RESULT data = ti_vbap[].

                                                                   * Incorpora la información recibida a una tabla
                                                                 og
                                                                    SAP
                                                                     LOOP AT ti_vbap.
                                                                        MOVE-CORRESPONDING ti_vbap TO ztiris_rec.
                                                                        MODIFY ztiris_rec.
                                                                     ENDLOOP.
                                                  .bl

En este segundo artículo sobre webservices voy a continuar con
                                                                   * Gestión de errores
la creación de un service provider. Con esto lo que
                                                                     IF ti_vbap[] IS INITIAL.
conseguiremos es crear un enlace estable de comunicación
                                                                       ti_errores-error = 'X'.
a través del cual nuestro cliente pueda enviar información
                                                                       APPEND ti_errores. CLEAR ti_errores.
a nuestro sistema SAP. Y que a continuación, nosotros podamos
                                 ww


                                                                     ENDIF.
recoger esta información e incorporarla.
                                                                   * ABAP itab to XML string
Módulo RFC
                                                                     CALL TRANSFORMATION id SOURCE data =
En primer lugar debemos crear el módulo de funciones RFC que        ti_errores[]
contenga toda la lógica de transformación del fichero XML que                                RESULT XML   o_response.
nos llegará vía webservice.
                                                                   ENDFUNCTION.
                     /w




Herramientas /Workbench ABAP /Desarrollo /SE37 – Biblioteca
de funciones                                                       Creación del objecto

    Atributos de la función: será una funcion de acceso remoto         Definimos nuestro servicio proxy a través de la transacción
    (RFC)                                                              SE80. Desde la pestaña Enterprise Services, seleccionamos
                                                                       la opción Serv. proxy y damos nombre a nuestro servicio.
         p:/




    Parámetros de entrada (import): al menos debe contener un          Esto abrirá el wizard que guiará todo nuestro proceso.
    parámetro de entrada de tipo string con traspaso de valores.
    Este parámetro recibirá el fichero xml.                        Herramientas /Workbench ABAP /Resumen /SE80 – Object
                                                                   Navigator
    Parámetros de salida (export): no es obligatorio pero es
htt




    recomendado si queremos enviarle una respuesta del tipo
    Ok/Error de vuelta a nuestro cliente.

Éste podría ser un ejemplo de código ABAP para el RFC:

FUNCTION z_prueba_test_mf.
Configure service: por defecto, dejamos la información de
                                                               SOAP application y profile que SAP nos proporciona.

                                                               Package/request: indicamos el paquete y orden de
                                                               transporte para nuestro objeto.




                                                                                                     m
                                                               Grabamos. SAP nos muestra la siguiente ventana
                                                               informativa




                                                                                       .co
                                                               Se crea el servicio Web ZWS_PRUEBA_TEST:

                                                               Tenga en cuenta que el servicio no posee ninguna liberación
                                                               de tiempo de ejecución y por eso no puede utilizarse. Sin
                                                               embargo, esto sólo se puede crear en la configuración
                                                               WSCONFIG.




                                                                       sap
                                                               A continuación va a solicitar la transacción WSADMIN
                                                               (Servicios de administración de Web para tiempo de
                                                               ejecución SOAP) en el registro UDDI para el servicio Web.

Object type: determinamos nuestro proxy del tipo service       Finalmente, activamos nuestro servicio.
provider.
                                                           Creación del servicio




                                                             de
Service provider: crearemos nuestro service provider en
base a Existing ABAP Objects (Inside Out).                     Llamamos à la transacción SOAMANAGER. Si tienes
                                                               problemas para acceder al SOAMANAGER quizás te falte
Object type: damos nombre a nuestro servicio así como un       activar alguna configuración.
prefijo. También indicamos que utilizaremos la lógica de
                                                           og
nuestro módulo de funciones.                                   Desde la pestaña Business Administration pulsamos en Web
                                                               Service Administration.

                                                               Buscamos el servicio que hemos creado previamente.
                                             .bl
                            ww



Choose endpoint: aquí escribimos el nombre del módulo de       Lo marcamos y pulsamos Apply Selection. Inmediatamente
                                                               se nos abre una pantalla más abajo con el detalle del
                /w




funciones RFC que previamente hemos creado.
                                                               servicio.

                                                               Aquí vamos a buscar la pestaña Configurations y pulsar el
                                                               botón Create Service.
    p:/




                                                               Damos nombre al servicio en la nueva ventana que se
                                                               nos abre.
htt
SAP_BC_WEBSERVICE_CONSUMER
                                                                        o SAP_BC_WEBSERVICE_SERVICE_USER.

                                                                        También es necesario que el usuario se haya creado como
                                                                        usuario C-comunicación (pestaña Datos Logon) para que




                                                                                                               m
                                                                        éste no pueda acceder a través de SAPGUI sino solamente
                                                                        pueda conectarse por webservice.

                                                                   Datos logon del servicio




                                                                                                 .co
                                                                   Aún nos queda un paso para activar completamente nuestro
                                                                   servicio. Debemos especificar el usuario y contraseña de acceso
                                                                   a nuestro servicio a través de la transacción SICF.

                                                                   Herramientas /Gestión /Red /SICF – Actualización de árbol de
                                                                   servicio HTTP




                                                                                 sap
    Una nueva ventana se nos abre aún por debajo. De toda la
    información que aquí se nos pide, la más importante se              Buscamos nuestro servicio.
    encuentra en la pestaña Provider Security. En ésta
                                                                        Entramos en los servicios web que hemos creado
    marcamos la necesidad de utilizar un user id y password si
                                                                        ZWS_PRUEBA_SERVICIO y ZWS_PRUEBA_BINDING.
    nuestro cliente quiere enviar información a nuestro sistema
    SAP.
                                                                        En ambos indicamos que la operación de acceso será de tipo




                                                                     de
                                                                        L (secuencia de acceso alternativa).

                                                                        Damos un usuario y contraseña.
                                                                 og
                                                   .bl

    Marcamos el botón Save.

    Después de todo este proceso SAP se habrá publicado un
    enlace WSDL que ya podemos dar a nuestro cliente para
    que configure su sistema. Este enlace contiene las                  Marcamos Ejecutar operaciones de acceso todas.
                                  ww


    definiciones para que nuestro cliente se pueda conectar
    directamente a nuestro sistema. Para ver cuál es este enlace        Nos aseguramos que se encuentran todas la lista de
    vamos à la pestaña Overview y marcamos Open WSDL                    operaciones de acceso.
    document for selected binding. También se puede buscar
    desde la transacción SE80, en la definición de servicio,
    pestaña WSDL.
                      /w




                                                                   En este artículo también podéis encontrar un ejemplo de
                                                                   webservice. Y si lo preferís en este vídeo de @ivanfemia.
Creacion del usuario
         p:/




                                                                   Imagen inicial | tj scenes
Nuestro cliente se conectará a nuestro SAP para dejar la
información a través de un usuario específico que nosotros
creemos. Le debemos dar la clave y el usuario a nuestro cliente.

Herramientas /Gestión /Actualización de usuarios /SU01 –
htt




Creación de usuarios

    Es importante que el usuario que creemos tenga todas las
    autorizaciones necesarias (pestaña roles), entre ellas los
    roles que hacen referencia a servicios web como
    SAP_BC_WEBSERVICE_ADMIN,
blogdesap.com           created using fivefilters.org




                                                                                                           m
Webservices (III): service
consumer




                                                                                             .co
                                                                             sap
                                                                   de
                                                                     Select source: indicamos que el consumo lo haremos
                                                                     a través de url mediante la opción URL/HTTP Destination.

                                                                     Select URL: escribimos la url wsdl que nos ha
                                                             og
                                                                     proporcionado nuestro proveedor.

                                                                     Enter package/request: escribimos el paquete y número
                                                                     de orden.
                                                 .bl

                                                                     Grabamos el proceso y activamos.
Este post cierra (¿?) la serie sobre webservices. En este caso
vamos a ver cómo consumir un webservice desde SAP. Vamos
a llamar a un webservice externo a nuestro SAP y vamos a dejar
información sobre ese sistema externo.
                                 ww


Cliente proxy

En primer lugar debemos asegurarnos que nuestro proveedor
tenga publicado el enlace WSDL de su webservice, algo
del tipo…

http://xx.xx.xxx.xx/webservice/nombrewebservice.asmx?wsdl        Definición del puerto
                     /w




    Entramos en la transacción SE80                                  Llamamos à la transacción SOAMANAGER. Si tienes
                                                                     problemas para acceder al SOAMANAGER quizás te falte
Herramientas /Workbench ABAP /Resumen /SE80 – Object
                                                                     activar alguna configuración.
Navigator
                                                                     Desde la pestaña Business Administration pulsamos en Web
    Creamos el cliente proxy, dándole nombre en la pestaña
         p:/




                                                                     Service Administration.
    Enterprise Services, opción Clt. proxy.
                                                                     Buscamos el proxy consumer que hemos creado
                                                                     previamente. Lo marcamos y pulsamos Apply selection. Se
                                                                     nos abre una nueva ventana más abajo.
htt
error/Ok.
    Sobre la pestaña Configurations pulsamos el botón Create
    Logical Port.
                                                                            Creación del puerto lógico. La sentencia
                                                                            CREATE_OBJECT… de la plantilla abre la
    Se nos abre otra pestaña donde indicamos el nombre de
                                                                            comunicación a través del puerto lógico creado.
    nuestro puerto lógico, de nuevo nos pide la urld del wsdl




                                                                                                             m
    proveedor, el usuario y contraseña.
                                                                            Llamada al proxy. La sentencia CREATE_METHOD…
                                                                            de la plantilla se encarga de enviar la información
                                                                            a nuestro proveedor de webservice.




                                                                                               .co
                                                                  No indico el código ABAP completo, pero evidentemente esta
                                                                  plantilla hay que modificarla y adaptarla. Además antes de abrir
                                                                  la comunicación en nuestro programa ABAP debemos seleccionar
                                                                  los datos a enviar y transformarlos a xml mediante la función
                                                                  CALL_TRANSFORMATION.




                                                                                sap
                                                                  Si estás interesado en más información sobre consumo de
                                                                  webservices pulsa en este enlace.

                                                                  Y en programación orientada a objetos, tenéis un manual en la
                                                                  página de abap.es
    Si no se nos grabase el usuario y contraseña (algo que
    a veces pasa y no sé por qué), marcamos Edit y modificamos    Imagen inicial | tj scenes
    usuario y contraseña en la pestaña Consumer security que




                                                                    de
    se nos ha abierto aún más abajo.

Lógica del programa

Nos queda definir la lógica de nuestro programa, buscar los
                                                                  og
datos en nuestro sistema y enviarlos a través del proxy que
hemos creado.

    Volvemos à la transacción SE80
                                                   .bl

    Creamos el programa que contendrá la lógica.

    Mantenemos el programa visible, mientras buscamos
    nuestro proxy cliente en el árbol de la SE80.

    Arrastramos el proxy cliente desde el árbol al editor ABAP.
                                  ww


    Esto nos creará la plantilla ABAP.
                      /w
         p:/




    Esta plantilla contiene lo siguiente:

         Definición de la clase del proxy.

         Definición de la estructura del proxy (salida) donde
htt




         dejaremos el string xml que enviaremos, así como el
         usuario y contraseña.

         Estructura del proxy (entrada) donde recibiremos la
         información de respuesta del webservice de nuestro
         proveedor (si nos la da). Por ejemplo, un mensaje de
blogdesap.com




                                                                                                                 m
Log de modificaciones de                                                  Navegamos a ‘Pasar a /Opciones técnicas’.


tablas                                                                    Marcamos la opción ‘Grabar en log modificaciones de
                                                                          datos’. Nos aseguramos de que la tabla quede activa tras




                                                                                                   .co
                                                                          hacer la grabación.




                                                                                   sap
                                                                        de
                                                                  og
En varias ocasiones he recibido consultas acerca de cómo se
puede saber en SAP qué usuario ha modificado información
                                                                          Vamos al perfil de sistema y modificamos el valor
dentro de una tabla. Esta información es útil si no tenemos
                                                                          ‘rec/client’. Indicamos el número del mandante sobre el que
activado el log de acciones de una transacción y sólo podemos
                                                                          se grabarán los logs de modificaciones. Recomiendo que
consultar este log a través de las tablas con las que interactúà la
                                                     .bl

                                                                          este paso lo haga el administrador Netweaver (responsable
transacción. También es posible que el usuario haya ejecutado
                                                                          de Basis) de vuestra empresa.
una transacción Z propia de cliente, las transacciones de cliente
no suelen tener asociado ningún log, pero sí sabemos sobre qué
                                                                      Herramientas /CCMS /Configuration /RZ10 – System profile
tablas se está accediendo.

                                                                      Resultado
                                   ww


Pues bien, en este caso también tenemos una herramienta en
SAP. Es el log de modificaciones de tablas. En principio, no suele
                                                                      Si todo ha ido bien siempre que haya una modificación, ésta
estar activado ya que penaliza el rendimiento y la memoria de la
                                                                      quedará registrada. Para consultar los cambios podemos ir al
base de datos. De hecho, SAP no recomienda su uso en tablas de
                                                                      programa RSVTPROT
aplicación, más bien solamente en tablas de customizing. Así que
si decidís activar esta funcionalidad medid muy bien las              Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP
repercusiones que tendrá.
                       /w




Ejemplo

Tenemos una tabla ZTEST sobre la cual grabamos documentos
de ventas a través de una vista de actualización. Deseamos saber
cuándo y quién realiza modificaciones sobre esta tabla. Los pasos
están perfectamente recogidos en el punto de customizing
          p:/




de SAP.

IMG: Gestión del sistema de control interno /Grabación de
modificaciones de tablas

     Abrimos el diccionario ABAP y buscamos nuestra
htt




     tabla ZTEST.

Herramientas /Workbench ABAP /Desarrollo /SE11 – Diccionario
ABAP
m
                                                                      .co
                                                                  sap
Siento no poderos mostrar un resultado de ejemplo positivo. Mi
sistema no tiene el parámetro rec/client activo.

Imagen inicial | szpako




                                                                 de
                                                                 og
                                                  .bl
                                 ww
                      /w
         p:/
htt
blogdesap.com            created using fivefilters.org




                                                                                                              m
Proteger y desproteger                                              Desproteger variante


variantes de report                                                 Si nos encontramos en un caso como el anterior y necesitamos
                                                                    desproteger esta variante, por ejemplo, si el usuario ya no




                                                                                                  .co
                                                                    trabajase en la empresa, debemos proceder del siguiente modo.

                                                                        Llamamos al programa RSVARENT

                                                                    Herramientas /Workbench /Desarrollo /SE38 – Editor ABAP




                                                                                 sap
                                                                        Introducimos el nombre del programa y la variante.

                                                                             El nombre del programa corresondiente à la
                                                                             transacción VA05N lo encontramos navegando sobre la
                                                                             transacción VA05N al menú Sistema /Status /Report. El
                                                                             programa es el SD_SALES_ORDERS_VIEW.

                                                                             El nombre de la transacción lo encontramos navegando




                                                                      de
Este artículo trata de cómo crear, proteger y desproteger
                                                                             en la transacción VA05N a Pasar a /Variantes /Traeer.
variantes de reports SAP. Ya habíamos visto en un post anterior
que mediante variantes podíamos crear imágenes fijas de la
                                                                        Ejecutamos el programa. Al ejecutarlo, no nos envía ningún
pantalla de selección de reports. Ahora veremos qué debemos
                                                                        mensaje de finalización. No os preocupéis, es normal.
hacer para que una variante que hemos creado sólo pueda ser
                                                               og
modificada por nosotros mismos. Pero también veremos lo                 Volvemos à la transacción VA05N, Pasar a /Variantes
contrario, cómo modificar variantes protegidas de otros usuarios.       /Grabar como variante. Y ya podréis grabar las
                                                                        modificaciones que queráis normalmente.
Proteger una variante

Utilizaremos como ejemplo, el listado de pedidos de cliente
                                                   .bl

VA05N

    Entramos en la VA05N

    Llenamos la pantallas de selección con nuestros valores.
                                  ww


    Pasar a /Variantes /Grabar como variante.
                                                                    Como siempre, utilizad esta herramienta con cuidado.

    Damos un nombre y marcamos proteger variante.                   Imagen inicial | juhansonin
                      /w
         p:/




Con sólo estos pasos nuestra variante queda protegida y en caso
de que un usuario diferente al nuestro intente modificarla
o borrarla le aparecerá el siguiente mensaje.
htt
blogdesap.com            created using fivefilters.org




                                                                                                               m
Cómo encontrar tablas de
una transacción




                                                                                                .co
                                                                                sap
                                                                     de
                                                                  og
                                                                   Pero también tenemos que fijarnos en el valor que aparece
                                                                   a continuación de Clase tabla. Si el valor que se indica es tabla
                                                                   transparente podemos estar seguros de que es una tabla que
                                                                   almacena información, pero si se indica que la clase de tabla es
                                                                   una estructura, entonces debemos seguir buscando para
                                                   .bl

                                                                   encontrar la tabla transparente que contiene la información.
Quisiera saber qué campos y tablas utiliza este programa…
Tengo que encontrar las tablas de la base de datos donde guarda
la información esta transacción… Son preguntas que seguro que
nos hemos hecho más de una vez. Quizá, solamente para
                                  ww


preparar una query, quizá para utilizar la tabla en un listado
o quizá para comparar la información en SAP con la que tenemos
en nuestros excels. Sea cual sea la razón, en este artículo voy
a enumerar varias formas de detectar los campos y las tablas que
utilizan las transacciones de SAP.

Datos técnicos (F1-F9)
                      /w




Es quizás, la forma más rápida. Supone utilizar la ayuda propia
de los campos de las transacción SAP directamente. Lo voy          Ayudas de búsqueda o matchcodes
a mostrar en un ejemplo con la transacción VA02.
                                                                   Consiste en buscar las tablas a partir del matchcode asociado al
                                                                   campo de nuestra transacción. Por ejemplo, con la transacción
    Llamamos a nuestra transacción VA02
                                                                   VF03 seguiríamos estos pasos:
         p:/




    Nos situamos sobre el campo.
                                                                        Nos posicionamos sobre el campo.
    Apretamos la tecla F1.
                                                                        Seguimos los pasos del apartado anterior (F1-F9).
    Pulsamos el botón Datos técnicos (F9 o icono del martillo).
                                                                        Buscamos el valor que aparece a continuación de Ayuda de
htt




Nos fijamos en los datos que aparecen a continuación de Tabla           búsqueda. En este caso encontramos que el valor es VMCF.
y Nombre de campo ya que contienen precisamente la
                                                                        Hacemos doble click.
información que buscamos, la tabla que almacena la información
del campo sobre el cual nos habíamos posicionado. En este caso
                                                                        Como hay matchcodes incluidos seguimos haciendo doble
la tabla es la VBAK y el campo es el VBELN.
click para navegar a cualquiera de los matchcodes.

    Hacemos doble click sobre el valor del apartado Método de
    selección para llegar finalmente a las tablas incluidas en el
    matchcode.




                                                                                                                 m
Include TOP de programa

Si sabemos leer el código ABAP del programa podemos buscar
                                                                    Listados de tablas




                                                                                                  .co
los nombres de tablas directamente sobre el código.
                                                                    Utilizar alguno de los muchos listados que corren por internet
    Escribimos la transacción. Por ejemplo, VF03                    con la información de tablas que utiliza SAP. Podéis utilizar un
                                                                    listado de tablas de este blog, uno de mundosap, uno de la sdn,
    Seguimos los pasos del primer apartado (F1-F9).
                                                                    etc.

    Hacemos doble click sobre el nombre del programa para           Referencia de utilización




                                                                                  sap
    navegar hasta él.
                                                                    Consiste en hacer las búsqueda de forma inversa. Hasta ahora
    Buscamos en el programa un include que seguramente              empezábamos en una transacción para llegar a las tablas
    acaba con las letras _TOP.                                      y campos incluidos en la transacción. Aquí se trata de empezar
                                                                    por un campo o tabla para llegar à la transacción que los utiliza.
    Buscamos la sentencia TABLES. Tras esta sentencia
    encontraremos las tablas que utiliza el programa.               Herramientas /Workbench ABAP /Desarrollo /SE11 – Diccionario




                                                                      de
                                                                    ABAP
A veces no existe ningún include que contenga las letras _TOP.
En ese caso es suficiente con hacer una búsqueda directa de la           Escribimos la tabla de base de datos que queramos. Por
sentencia TABLES.                                                        ejemplo, la VBAK.
                                                                 og
Trace SQL                                                                Pulsamos visualizar.

Consiste en hacer una llamada à la transacción ST05.                     Marcamos el campo VBELN.

Herramientas /Workbench ABAP /Test /ST05 – Trace SQL
                                                                         Vamos al menú Utilidades /Referencia de utilización.
                                                    .bl

    Llamamos à la transacción ST05
                                                                         Marcamos utilización en programas.

    Marcamos activate trace.
                                                                    Nos mostrará la lista de programas que utilizan ese campo de
                                                                    tabla. Si sabemos cuál es el nombre del programa podemos
    En otro modo, llamamos a nuestra transacción
                                                                    seguir profundizando hasta llegar à la transacción.
    problemática, en este caso la MM02.
                                  ww


                                                                    Imagen | Andrea Prieto
    Volvemos a ST05 y marcamos deactivate trace.
                                                                    Si este artículo te ha sido de ayuda no olvides compartirlo
    Pulsamos Display Trace.                                         :-)
                      /w
         p:/




El listado que nos muestra la transacción ST05 es el conjunto de
tablas y llamadas que hemos realizado cuando hemos ejecutado
la transacción MM02. A partir de aquí debemos decidir cuál de
htt




todas las tablas que nos muestra es la nuestra. Admito que esta
forma de buscar información es complicada ya que supone
navegar entre la gran cantidad de tablas que en una sola
transacción puede llegar a llamar SAP.
blogdesap.com           created using fivefilters.org




                                                                                                    m
Documenta tus programas                                           *&
                                                                                                *


ABAP                                                                                            *




                                                                                          .co
                                                                  *& Listado de vuelos
                                                                                                  *
                                                                  **************************************************
                                                                  *******************************
                                                                  REPORT zprueba NO STANDARD PAGE HEADING LINE-SIZE
                                                                    255.
                                                                  *




                                                                            sap
                                                                  **************************************************
                                                                  *******************************
                                                                  *Tablas
                                                                  **************************************************
                                                                  *******************************
                                                                  TABLES:
                                                                     spfli.




                                                                   de
                                                                    "Itinerario de vuelos
                                                                  **************************************************
                                                                  *******************************
                                                                  *Tipos
Documentar un programa ABAP significa escribir una pequeña
                                                                og
                                                                  **************************************************
ayuda para que nuestros usuarios sepan cuál es la función del
                                                                  *******************************
programa. Es además una pequeña guía para saber qué
                                                                  TYPES:
parámetros son necesarios para la ejecución correcta del
                                                                     ty_spfli TYPE SORTED TABLE OF spfli WITH
programa y una explicación de los posibles errores que nos
                                                                    NON-UNIQUE KEY carrid connid.
podemos encontrar. No me refiero a poner pequeños
                                                  .bl

comentarios en el código ABAP sino a escribir una pequeña
                                                                  **************************************************
ayuda visible para los usuarios.
                                                                  *******************************
Con todo esto no digo que no esté bien explicar nuestras líneas   *Variables globales
de código, totalmente necesario, pero también hay que pensar en   **************************************************
dar las máximas facilidades a aquellas personas que van           *******************************
                                 ww


a trabajar diariamente con nuestros pequeños programas.           DATA:
                                                                    ti_spfli TYPE ty_spfli WITH HEADER LINE.
Este tipo de ayuda lo hemos visto más de una vez en                "Tabla interna de vuelos
transacciones y programas estándar. Tomemos por ejemplo, la
transacción FBL5N                                                 **************************************************
                                                                  ********************************
Finanzas /Gestion financiera /Deudores /Cuenta /FBL5N –
                                                                  ***                             SELECTION-SCREEN
Visualizar y modificar partidas abiertas
                                                                                                ***
                     /w




Si presionamos el icono ‘i’ de información SAP abre una pequeña   **************************************************
ventana con información adicional que el usuario puede utilizar   ********************************
para conocer el uso y funcionalidad de la transacción.            SELECT-OPTIONS:
                                                                    s_carrid      FOR spfli-carrid,
                                                                   "Compañía aérea
         p:/




                                                                    s_countr      FOR spfli-countryfr.         "País
                                                                   de salida

                                                                  **************************************************
Pasos para generar documentación en un programa ABAP              *******************************
htt




                                                                  *START-OF-SELECTION
Partiré de un pequeño programa de prueba que lista los vuelos     **************************************************
de una compañía aérea.                                            *******************************
                                                                  START-OF-SELECTION.
*&------------------------------------------------
------------------------------*                                   * Selección de vuelos
*& Report ZPRUEBA
SELECT * FROM spfli
    INTO CORRESPONDING FIELDS OF TABLE ti_spfli
    WHERE ( carrid    IN s_carrid
      AND   countryfr IN s_countr ).




                                                                                                             m
**************************************************
*******************************
*END-OF-SELECTION
**************************************************




                                                                                               .co
*******************************
END-OF-SELECTION.

* Listado

  LOOP AT ti_spfli.




                                                                               sap
    WRITE: / ti_spfli-connid,
             ti_spfli-cityfrom,                                  Un apunte final, si queréis traducir vuestra documentación
             ti_spfli-deptime.                                   a otros idiomas podéis hacerlo a través de la transacción SE63.
  ENDLOOP.                                                       Así, si el usuario se loga en otro idioma, también podrá leer la
                                                                 documentación que hayáis preparado.
Una vez tenemos el código escrito vamos a crear la
documentación del programa.                                      Herramientas /Workbench ABAP /Utilidades /Traducción /SE63 –
                                                                 Textos breves y explicativos




                                                                   de
    Desde el editor vamos a Pasar a /Documentación.
                                                                 Deberéis reccorrer el menú Traducción /Objetos ABAP /Textos
    Se nos abre un editor (SAPscript o Word según tengáis
                                                                 explicativos (documentación) /Ayuda F1 /RE Reports, gr.
    configurado vuestro sistema) con los siguientes apartados:
                                                                 funciones, BD lógicas y traducir los textos que os aparezcan.
         Purpose
                                                                 og
         Integration                                             Imagen inicial | quinn.anya

         Prerequisites                                           ¿Te ha gustado este artículo? Ayúdame a que llegue a más
         Features                                                gente compartiéndolo :-)

         Selection
                                                     .bl

         Standard_variant
         Output
         Activities
         Example
                                 ww


    Escribimos en cada apartado la información que
    corresponda. Por supuesto, no es necesario que se escriba
    información en cada apartado.
    Guardamos y activamos.
                       /w
         p:/




Resultado de la documentación
htt




    Lanzamos nuestro programa bien directamente a través del
    editor ABAP o a través de la transacción que hayamos
    decidido para él.
    Marcamos el icono ‘i’.
blogdesap.com            created using fivefilters.org




                                                                                                              m
¿Por qué los usuarios no                                               Informativo (I): se muestra como un pequeña ventana sobre

leen los mensajes de SAP?                                              la transacción.




                                                                                                .co
                                                                       Advertencia (W): pequeño texto que aparece en la barra
                                                                       inferior.

                                                                       Error (E): al igual que el mensaje de advertencia también
                                                                       aparece en la barra inferior, pero impide al usuario
                                                                       continuar con el normal funcionamiento de la transacción.




                                                                               sap
                                                                       Obliga a corregir el error antes de poder continuar.

                                                                  Para ti, crear un mensaje en un programa ABAP debe ser muy
                                                                  sencillo.

                                                                       Creamos el mensaje en la transaccion SE91.




                                                                    de
                                                                  Herramientas /Workbench ABAP /Desarrollo /Entorno de
                                                                  programación /SE91 – Mensajes

                                                                       Seleccionamos nuestra clase de mensaje, introducimos un
                                                                       nuevo número y pulsamos ‘Crear’.
                                                               og
Un mensaje es la forma que nos proporciona SAP para gestionar
información relevante dentro del sistema. Advierten o impiden
errores en el uso de la herramienta. Entonces, ¿por qué hay
tantos usuarios que hacen caso omiso de estos mensajes o que
simplemente no los leen?
                                                  .bl

¿Alguna vez te has encontrado con un usuario que te ha llamado
pidiéndote que deshagas un movimiento o una contabilización
o cualquier otra cosa? Entonces, le has preguntado ¿Por qué
hiciste ese movimiento? ¿No te leíste el mensaje de advertencia
                                 ww


sobre hacer ese movimiento? Bueno, pues yo sí que me he
encontrado con ese tipo de llamadas, y más de una vez.                 Escribimos el texto del mensaje. Guardamos.
Como en Juegos de Guerra, esa película de 1983 en la que el
protagonista no hace caso al mensaje de la máquina en una de
las escenas.

    [embedded content]
                     /w




    –Máquina: ¿Jugamos?
                                                                       Ahora introducimos el mensaje en nuestro programa ABAP.
    –Actor: ¿Qué tal si jugamos à la “Guerra global
    termonuclear”?                                                IF g_var = ‘YES’.
                                                                     MESSAGE i397(zmensajes) WITH g_var.
    –Máquina: ¿No prefiere una buena partida de ajedrez?          ENDIF.
         p:/




    –Actor: Más tarde. Ahora vamos a jugar à la “Guerra global
                                                                       Existe otra manera, escribe el mensaje directamente sin
    termonuclear?
                                                                       necesidad de introducirlo dentro de la tabla de mensajes.
La de problemas que se hubiese ahorrado el protagonista si
hubiese hecho caso al mensaje del ordenador y no hubiese          IF g_var = ‘YES’.
continuado. Por supuesto, esto es una exageración, pero              MESSAGE ‘La orden YES inicia la guerra global
htt




demuestra que los mensajes están por alguna razón.                 termonuclear. Piénsatelo bien’
                                                                       TYPE ‘I’.
Crear un mensaje en SAP
                                                                  ENDIF.
En primer lugar tienes que saber que SAP proporciona diferentes
tipos de mensaje, aunque los más habituales son:                  En cualquier caso, el resultado sería una ventana con el siguiente
mensaje…

     La orden YES inicia la guerra global termonuclear.
     Piénsatelo bien

Advertencia: no hagáis esto en casa de vuestro cliente, puede




                                                                           m
perjudicar seriamente vuestra reputación dentro de la empresa.
Aunque por otro lado, quién sabe, haciéndolo quizá el usuario
realmente se lo piensa antes de continuar ;-)




                                                                         .co
Los lamentos

Entonces, ¿Por qué si hemos escrito el mensaje el usuario no ha
seguido sus indicaciones? Bien, los motivos que personalmente
más he escuchado son:

     Tengo mucho trabajo y no tengo tiempo para ir leyendo




                                                                     sap
     todos los mensajes que da el ordenador.

     Hay tantos mensajes que ya ni me los leo, le doy a continuar
     y ya está.

     ¿Cuál es el problema? El mensaje sólo era de advertencia,
     pero me dejaba continuar. Así que he continuado.

     No me ha dado tiempo a leerlo. He ido rápido y he
     continuado sin querer. Así que no he podido leer el mensaje.

La solución                                                         de
                                                                    og
Si lo miramos desde el punto de vista la persona que trabaja cada
día con las mismas transacciones, podría darles incluso la razón.
El trabajo puede llegar a ser demasiado mecánico y los mensajes
algo que sólo están ahí para molestar. Pero no es así en
                                                      .bl

absoluto, un mensaje es información adicional y hay que leerla.

Desde mi punto de vista, lo mejor es mostrar los consecuencias
de no leer estos pequeños mensajes. Sobre todo, formar y pedir
a los usuarios que se los lean. Pero como siempre hay personas
reticentes y malas actitudes, entonces si el error generado ha
                                    ww


sido debido a no querer leer un mesaje yo opto por dejar que sea
la persona quien arregle el problema que ha generado. Puede
sonar duro, pero es mejor que permitir que los mismos
problemas se produzcan una y otra vez.

De todos modos, estas soluciones no suelen gustar a los key
users y mucho menos à la empresa. Por lo que seguramente os
van a pedir que convirtáis aquellos mensajes de tipo informativo
                       /w




(I) o advertencia (W) en mensajes de tipo error (E). Así, los
usuarios no podrán continuar. Aunque eso suponga muchas
veces que tengan que empezar otra vez la transacción, que esta
transacción acabe abruptamente (suele pasar cuando se
introduce un mensaje de error dentro de una user exit) o peor
          p:/




aún, que el trabajo del usuario se convierta todavía en más
mecánico y rutinario.

Por cierto, si no habéis visto la película Juegos de guerra os la
recomiendo, pasaréis un rato muy agradable.
htt




Imagen inicial | randomduck

¿Crees que este artículo es útil? ¿Por qué no me ayudas
a compartirlo? :-)
blogdesap.com           created using fivefilters.org




                                                                                                                 m
¿Son mis entornos
diferentes?




                                                                                               .co
                                                                 ¿Y si no es así? ¿Cuáles son las diferencias?




                                                                               sap
                                                                 El editor split screen

                                                                 Si queremos saber cuáles son las diferencias de nuestro
                                                                 desarrollo entre entornos SAP nos lo muestra en una serie de
                                                                 sencillos pasos:

                                                                 Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP




                                                                   de Desde nuestro programa navegamos al menú Utilidades
                                                                      /Más utilidades /Editor split screen

                                                                      Escribimos el nombre de nuestro programa de nuestros
                                                             og
                                                                      respectivos entornos.
Nos encontramos en nuestro entorno de desarrollo, delante de
uno de nuestros programas y no sabemos si lo que tenemos
                                                                      Marcamos el botón ‘Comparación de sistemas’, indicamos
delante coincide completamente con la versión que existe en el
                                                                      con qué entorno queremos comparar nuestro programa.
entorno productivo. Empezar a modificar un programa sin estar
                                                 .bl

seguro de ello puede convertirse en un verdadero quebradero de        Marcamos el botón ‘Visualizar’.
cabeza. Si ambos entornos no coinciden, nuestros cambios
pueden subir a productivo modificaciones inesperadas, que nos         Nos solicitará nuestro usuario y contraseña del entorno
llevan a tener que recuperar cambios y volver a reprogramar           destino. Lo escribimos.
nuestro código ABAP.
                                                                      Se nos abre una pantalla doble, arriba el programa en
                                ww


Para empezar comparar las versiones                                   nuestro entorno origen, debajo el programa en el entorno
                                                                      destino.
Lo primero que debemos comprobar son coincidencias en las
versiones. Para ello

Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP

    Nos situamos sobre nuestro programa en el entorno de
                     /w




    desarrollo y vamos al menú Utilidades /Versiones /Gestión
    de versiones. Nos apuntamos la última orden de transporte
    activa que veamos.

    Nos situamos sobre nuestro mismo programa en el entorno
         p:/




    productivo e igualmente vamos al menú Utilidades
    /Versiones /Gestión de versiones. ¿Coincide la orden de
    transporte que vemos con la orden de transporte que
    teníamos en desarrollo? Entonces, podemos saber que
    nuestros programas coinciden.
htt




                                                                      Si vamos al menú Tratar /Modo de comparación /Menú on,
                                                                      el sistema nos dirá si ambos programas son iguales.
a compartirlo? :-)




                                                                                         m
                                                                                        .co
    Si no son iguales, volvemos al menú y pulsamos Tratar
    /Modo de comparación /Diferencia siguiente. Y nos llevará al
    punto del programa donde hay diferencias.




                                                                               sap
Esto también nos sirve para detectar diferencias en módulos de
funciones:




                                                                     de
Herramientas /Workbench ABAP /Desarrollo /SE37 – Biblioteca
de funciones

Igualmente, desde el menú Utilidades /Más utilidades /Editor
split screen.
                                                                 og
E incluso para detectar diferencias en smartforms, pero en este
caso hay que realizar algunos pasos adicionales. Todo smartform
en SAP se guarda como un módulo de funciones del cual hay que
conocer el nombre.
                                                  .bl

Herramientas /Imprimir formularios /SMARTFORMS –
Smart Forms

    Entramos en nuestro smartform.

    Vamos al menú Entorno /Módulo de funciones en el entorno
                                 ww


    de desarrollo. Nos guardamos el nombre que nos ha dado.

    Vamos al menú Entorno /Módulo de funciones en el entorno
    productivo. Nos guardamos el nombre que nos ha dado.

    Vamos al editor split screen, por ejemplo, a partir de la
    SE38 e introducimos ambos módulos de funciones en sus
    correspondientes lugares. Como veis el nombre del módulo
                        /w




    de funciones que SAP que da al mismo smartform es
    diferente según el entorno. Por eso, cuando hagáis la
    comparación entre entornos siempre va a haber diferencias,
    pero tened cuidado, no siempre es debido a diferencias en el
    código sino simplemente al nombre del propio módulo de
         p:/




    funciones llamado. Por ejemplo, lo que se muestra en la
    imagen siguiente no sería una diferencia porque se refiere
    solamente al nombre del módulo de funciones dado al
    smartform en cada entorno.
htt




Imagen inicial | R0Ng

¿Crees que este artículo es útil? ¿Por qué no me ayudas
blogdesap.com            created using fivefilters.org




                                                                                                              m
Regeneración de objetos                                                Generación de objetos todos de componentes de software
                                                                       seleccionados: se da cuando se instala por primera vez el
                                                                       sistema. Al seleccionar esta opción se regenerarán todos los




                                                                                               .co
                                                                       objetos del sistema SAP.

                                                                       Regeneración después de un upgrade de sistema SAP: se da
                                                                       cuando hemos cambiado de versión de SAP y deseamos
                                                                       regenerar todos los objetos modificados en la versión.




                                                                                sap
                                                                       Generación de objetos de una orden de transporte: si hemos
                                                                       realizado una modificación de varios programas à la vez,
                                                                       agrupados en una sola orden, utilizaremos esta opción para
                                                                       regener todos los objetos incluidos dentro de la orden.

                                                                   Ejemplo




                                                                     de
                                                                   Tomemos que queremos regenerar todos los programas que
                                                                   hemos modificado e incluido en una orden de transporte.

                                                                       Llamamos à la transacción SGEN.
                                                                og
                                                                       Indicamos nuestra orden de transporte.




¿Cuántos de vosotros no habéis visto alguna vez lo siguiente?
                                                   .bl
                                  ww


La primera vez que un usuario ejecuta una transacción tras un
cambio realizado sobre dicha transacción SAP ejecuta un proceso
de regeneración. Un cambio en una transacción (y la necesidad
de regeneración) sucede cuando modificamos la parametrización          Decidimos si lo queremos hacer online o en job de fondo. En
asociada a una transacción, cuando modificamos el código ABAP          este caso, lo hago en job de fondo.
asociado a su programa, cuando hacemos un upgrade del
sistema, cuando implementamos una nota, etc. Sin embargo, una
                      /w




vez regenerada la transacción ya no volverá a aparecer este
proceso nunca más.

No soy un experto pero hasta donde yo sabía y me habían
explicado ABAP es un lenguaje de programación interpretado, no
         p:/




compilado. Así que nunca he entendido muy bien qué es lo que
hace exactamente SAP cuando dice que está compilando la
transacción. Sea como sea, SAP provee de una herramienta que
nos permite, llamémosle regenerar, en forma masiva una
transacción modificada.
htt




Casos

Transacción: SGEN
                                                                   Atención, mientras estemos realizando una regeneración de
La documentación de la propia transacción es abundante, pero       objetos no podemos hacer simultáneamente una segunda
voy a explicar solamente los casos con los que me he encontrado:   regeneración, aunque referencia a objetos distintos.
Es aconsejable hacer todas las regeneraciones en job de fondo.

Más información en la propia documentación de la transacción
SGEN y en la nota 379918

Imagen inicial | Patrick Hoesly




                                                                        m
                                                                      .co
                                                                  sap
                                                                 de
                                                                 og
                                                  .bl
                                  ww
                      /w
         p:/
htt
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012
Blog de SAP 2012

Más contenido relacionado

La actualidad más candente

A guide to functional areas and cost of sales P&L reporting in the SAP® Gener...
A guide to functional areas and cost of sales P&L reporting in the SAP® Gener...A guide to functional areas and cost of sales P&L reporting in the SAP® Gener...
A guide to functional areas and cost of sales P&L reporting in the SAP® Gener...John Jordan
 
Lo extraction part 1 sd overview
Lo extraction   part 1 sd overviewLo extraction   part 1 sd overview
Lo extraction part 1 sd overviewJNTU University
 
Power BI とは - 2020
Power BI とは - 2020Power BI とは - 2020
Power BI とは - 2020Takeshi Kagata
 
IT エンジニアのための 流し読み Windows 10 - 入門!System Center Configration Manager
IT エンジニアのための 流し読み Windows 10 - 入門!System Center Configration ManagerIT エンジニアのための 流し読み Windows 10 - 入門!System Center Configration Manager
IT エンジニアのための 流し読み Windows 10 - 入門!System Center Configration ManagerTAKUYA OHTA
 
AWS Black Belt Online Seminar 2017 Amazon Relational Database Service (Amazon...
AWS Black Belt Online Seminar 2017 Amazon Relational Database Service (Amazon...AWS Black Belt Online Seminar 2017 Amazon Relational Database Service (Amazon...
AWS Black Belt Online Seminar 2017 Amazon Relational Database Service (Amazon...Amazon Web Services Japan
 
Customer exit variables in sap
Customer exit variables in sapCustomer exit variables in sap
Customer exit variables in sapsaborhade
 
Kss4 Execute Plan Cost Splitting
Kss4 Execute Plan Cost SplittingKss4 Execute Plan Cost Splitting
Kss4 Execute Plan Cost Splittingwhocanbe1
 
SAP Transport System; Step-by-step guide from concept to practical
SAP Transport System; Step-by-step guide from concept to practicalSAP Transport System; Step-by-step guide from concept to practical
SAP Transport System; Step-by-step guide from concept to practicalNasir Gondal
 
Usage Report(利用レポート)のダウンロード・開き方
Usage Report(利用レポート)のダウンロード・開き方Usage Report(利用レポート)のダウンロード・開き方
Usage Report(利用レポート)のダウンロード・開き方Amazon Web Services Japan
 
Travel management configuration steps
Travel management configuration stepsTravel management configuration steps
Travel management configuration stepsAbhijeet Walke
 
Copa configuration
Copa configurationCopa configuration
Copa configurationMithun Roy
 
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解するdb tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解するMasayuki Ozawa
 
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報Amazon Web Services Japan
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty ServerJungWoon Lee
 
Data extraction and retraction in bpc bi
Data extraction and retraction in bpc biData extraction and retraction in bpc bi
Data extraction and retraction in bpc bivikram2355
 

La actualidad más candente (20)

A guide to functional areas and cost of sales P&L reporting in the SAP® Gener...
A guide to functional areas and cost of sales P&L reporting in the SAP® Gener...A guide to functional areas and cost of sales P&L reporting in the SAP® Gener...
A guide to functional areas and cost of sales P&L reporting in the SAP® Gener...
 
Lo extraction part 1 sd overview
Lo extraction   part 1 sd overviewLo extraction   part 1 sd overview
Lo extraction part 1 sd overview
 
Power BI とは - 2020
Power BI とは - 2020Power BI とは - 2020
Power BI とは - 2020
 
IT エンジニアのための 流し読み Windows 10 - 入門!System Center Configration Manager
IT エンジニアのための 流し読み Windows 10 - 入門!System Center Configration ManagerIT エンジニアのための 流し読み Windows 10 - 入門!System Center Configration Manager
IT エンジニアのための 流し読み Windows 10 - 入門!System Center Configration Manager
 
AWS Black Belt Online Seminar 2017 Amazon Relational Database Service (Amazon...
AWS Black Belt Online Seminar 2017 Amazon Relational Database Service (Amazon...AWS Black Belt Online Seminar 2017 Amazon Relational Database Service (Amazon...
AWS Black Belt Online Seminar 2017 Amazon Relational Database Service (Amazon...
 
HDFS vs. MapR Filesystem
HDFS vs. MapR FilesystemHDFS vs. MapR Filesystem
HDFS vs. MapR Filesystem
 
Customer exit variables in sap
Customer exit variables in sapCustomer exit variables in sap
Customer exit variables in sap
 
Kss4 Execute Plan Cost Splitting
Kss4 Execute Plan Cost SplittingKss4 Execute Plan Cost Splitting
Kss4 Execute Plan Cost Splitting
 
SAP Transport System; Step-by-step guide from concept to practical
SAP Transport System; Step-by-step guide from concept to practicalSAP Transport System; Step-by-step guide from concept to practical
SAP Transport System; Step-by-step guide from concept to practical
 
Usage Report(利用レポート)のダウンロード・開き方
Usage Report(利用レポート)のダウンロード・開き方Usage Report(利用レポート)のダウンロード・開き方
Usage Report(利用レポート)のダウンロード・開き方
 
Travel management configuration steps
Travel management configuration stepsTravel management configuration steps
Travel management configuration steps
 
Copa configuration
Copa configurationCopa configuration
Copa configuration
 
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解するdb tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
 
Accel series 2023 Spring
Accel series 2023 SpringAccel series 2023 Spring
Accel series 2023 Spring
 
Aurora
AuroraAurora
Aurora
 
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server
 
SAP BW Introduction.
SAP BW Introduction.SAP BW Introduction.
SAP BW Introduction.
 
Sap bw4 hana
Sap bw4 hanaSap bw4 hana
Sap bw4 hana
 
Data extraction and retraction in bpc bi
Data extraction and retraction in bpc biData extraction and retraction in bpc bi
Data extraction and retraction in bpc bi
 

Similar a Blog de SAP 2012

Programación de Base de Datos - Unidad 4 Representacion de la info
Programación de Base de Datos - Unidad 4 Representacion de la infoProgramación de Base de Datos - Unidad 4 Representacion de la info
Programación de Base de Datos - Unidad 4 Representacion de la infoJosé Antonio Sandoval Acosta
 
Curso Google Analytics cein
Curso Google Analytics ceinCurso Google Analytics cein
Curso Google Analytics ceinCein
 
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...Lucía Marín
 
DOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docxDOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docxNONES2
 
Cómo mejorar-la-velocidad-de-tu-web (Cámara madrid)
Cómo mejorar-la-velocidad-de-tu-web (Cámara madrid)Cómo mejorar-la-velocidad-de-tu-web (Cámara madrid)
Cómo mejorar-la-velocidad-de-tu-web (Cámara madrid)SiteGround España
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalSiteGround España
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Guillermo González
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Guillermo González
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelImanol Iza Martin
 
¿Es Posible Posicionar un Sitio Web en tan solo 15 Días? Aprende Cómo Aquí!
¿Es Posible Posicionar un Sitio Web en tan solo 15 Días? Aprende Cómo Aquí!¿Es Posible Posicionar un Sitio Web en tan solo 15 Días? Aprende Cómo Aquí!
¿Es Posible Posicionar un Sitio Web en tan solo 15 Días? Aprende Cómo Aquí!Hernan Vazquez
 
Introduccion a sharepoint framework
Introduccion a sharepoint frameworkIntroduccion a sharepoint framework
Introduccion a sharepoint frameworkLuis Valencia
 
Analítica Web Páginas Virtuales y Tracking Telefónico
Analítica Web Páginas Virtuales y Tracking TelefónicoAnalítica Web Páginas Virtuales y Tracking Telefónico
Analítica Web Páginas Virtuales y Tracking TelefónicoEduardo Sánchez González
 
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOLCURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOLDarwin Durand
 

Similar a Blog de SAP 2012 (20)

Bootcamp Javascript Online
Bootcamp Javascript OnlineBootcamp Javascript Online
Bootcamp Javascript Online
 
BlogDeSAP01
BlogDeSAP01BlogDeSAP01
BlogDeSAP01
 
Programación de Base de Datos - Unidad 4 Representacion de la info
Programación de Base de Datos - Unidad 4 Representacion de la infoProgramación de Base de Datos - Unidad 4 Representacion de la info
Programación de Base de Datos - Unidad 4 Representacion de la info
 
Curso Google Analytics cein
Curso Google Analytics ceinCurso Google Analytics cein
Curso Google Analytics cein
 
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...
Google Tag Manager: un nuevo paso en la Analítica Digital (Congreso de Zarago...
 
DOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docxDOCUMENTACION CDS Y ABAP RAP.docx
DOCUMENTACION CDS Y ABAP RAP.docx
 
Optimización OnPage avanzada
Optimización OnPage avanzadaOptimización OnPage avanzada
Optimización OnPage avanzada
 
Tema 3
Tema 3Tema 3
Tema 3
 
Cómo mejorar-la-velocidad-de-tu-web (Cámara madrid)
Cómo mejorar-la-velocidad-de-tu-web (Cámara madrid)Cómo mejorar-la-velocidad-de-tu-web (Cámara madrid)
Cómo mejorar-la-velocidad-de-tu-web (Cámara madrid)
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupal
 
SEO para Prestashop
SEO para PrestashopSEO para Prestashop
SEO para Prestashop
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016
 
Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016Buenas prácticas GeneXus - GXTour Chile 2016
Buenas prácticas GeneXus - GXTour Chile 2016
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
 
Ebook tutorialspringbootheroku
Ebook tutorialspringbootherokuEbook tutorialspringbootheroku
Ebook tutorialspringbootheroku
 
¿Es Posible Posicionar un Sitio Web en tan solo 15 Días? Aprende Cómo Aquí!
¿Es Posible Posicionar un Sitio Web en tan solo 15 Días? Aprende Cómo Aquí!¿Es Posible Posicionar un Sitio Web en tan solo 15 Días? Aprende Cómo Aquí!
¿Es Posible Posicionar un Sitio Web en tan solo 15 Días? Aprende Cómo Aquí!
 
Introduccion a sharepoint framework
Introduccion a sharepoint frameworkIntroduccion a sharepoint framework
Introduccion a sharepoint framework
 
Servicios web
Servicios webServicios web
Servicios web
 
Analítica Web Páginas Virtuales y Tracking Telefónico
Analítica Web Páginas Virtuales y Tracking TelefónicoAnalítica Web Páginas Virtuales y Tracking Telefónico
Analítica Web Páginas Virtuales y Tracking Telefónico
 
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOLCURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
 

Último

Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfapunteshistoriamarmo
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfGruberACaraballo
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOPsicoterapia Holística
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesMarisolMartinez707897
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCCarlosEduardoSosa2
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxBeatrizQuijano2
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...JAVIER SOLIS NOYOLA
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresJonathanCovena1
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 

Último (20)

Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 

Blog de SAP 2012

  • 1. om p.c esa Blogdesap gd resumen 2012 . blo ww http://www.blogdesap.com /w Customizing, ABAP y noticias p:/ Recopilación de los artículos publicados en blogdesap durante el año 2012 htt
  • 2. Puedes acceder a estos artículos y otros que voy publicando a través de om http://www.blogdesap.com http://www.facebook.com/blogdesap p.c Para seguir creciendo te agradezco que compartas este blog con tus amigos, conocidos y cualquier que esté interesado. Puedes compartir este pdf libremente bajo las condiciones de la licencia Creative Commons esa Blogdesap: resumen 2010-11 por http://www.blogdesap.com se encuentra bajo una Licencia Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported. gd Este PDF se ha generado gracias al proyecto http://fivefilters.org/ y a http://www.pdfill.com/pdf_tools_free.html blo Las imágenes que aparecen publicadas son propiedad de sus autores y aparecen publicadas aquí bajo la licencia Creative Commons que ellos mismos cedieron. A continuación se relaciona el origen de estas imágenes. http://www.flickr.com/photos/zooboing/5508849065/ http://www.flickr.com/photos/jamescridland/2272701122/ http://www.flickr.com/photos/27128437@N07/3020096760/ http://www.flickr.com/photos/dinah/2155542715/ http://www.flickr.com/photos/mikecogh/2615450243/ . http://www.flickr.com/photos/wonderlane/6696970999/ http://www.flickr.com/photos/kexino/5142774552/ ww http://www.flickr.com/photos/68235594@N02/6209901764/ http://www.flickr.com/photos/zigazou76/3621421967/ http://www.flickr.com/photos/uncut/32992478/ http://www.flickr.com/photos/suewaters/3239113361/ http://www.flickr.com/photos/uncut/32992438/ http://www.flickr.com/photos/alancleaver/2380333875/ http://es.wikipedia.org/wiki/Archivo:Andora.png http://www.flickr.com/photos/pa1nt/2517516586/ http://www.flickr.com/photos/ofernandezberrios/2719764089/ http://www.flickr.com/photos/szpako/6296123543/ /w http://www.flickr.com/photos/juhansonin/5135576565/ http://www.flickr.com/photos/j1x4r/4313734090/ http://taxcredits.net/ http://www.seniorliving.org/ http://www.flickr.com/photos/oarranzli/8020458953/in/photostream http://www.flickr.com/photos/stefg/83249642/ p:/ http://www.flickr.com/photos/andrea-prieto/6165780168/ http://www.flickr.com/photos/newtown_grafitti/5594383495/ http://www.flickr.com/photos/49889874@N05/5645164344/ http://www.flickr.com/photos/garryknight/5489575248/ http://www.flickr.com/photos/tedpercival/2127361324/ http://www.flickr.com/photos/flissphil/367608136/ http://www.flickr.com/photos/trawin/3269858710/ htt http://www.flickr.com/photos/timoelliott/6328671116/ http://www.flickr.com/photos/ecastro/2204417040/ http://www.flickr.com/photos/z287marc/3192570544/ http://www.flickr.com/photos/23024164@N06/7069248491/ http://www.flickr.com/photos/traftery/5733183289/ http://www.flickr.com/photos/bovinity/2125620107/ http://www.flickr.com/photos/cdharrison/4991886507/ http://www.flickr.com/photos/quinnanya/5797565681/
  • 4. INDICE om ABAP 1. Rangos numéricos propios 2. Índices de tablas 3. Webservices: ficheros xml 4. Webservices: service providers 5. Webservices: service consumer p.c 6. Log de modificaciones de tablas 7. Proteger y desproteger variantes 8. Encontrar tablas de transacciones 9. Documenta tus programas ABAP 10. ¿Por qué los usuarios no leen los mensajes? 11. ¿Son mis entornos diferentes? esa BC 12. Regeneración de objetos 13. Fijar color del sistema 14. Parámetros de usuario 15. Conocer los accesos y el trabajo de un usuario 16. Introduce un texto informativo en la entrada a SAP 17. Cinco formas de encontrar transacciones del customizing gd blo FI 18. Cinco razones por las que no funciona el programa de pagos MM . ww 19. Apariencia de campos del maestro de materiales 20. Creación de almacenes en materiales 21. Ayuda de búsqueda inteligente sin matchcode 22. Valor mínimo de proveedor 23. Surtido parcial de proveedor 24. Cómo bloquear la actualización del registro info 25. Comparando qué he pedido y qué me han facturado /w PM 26. Funciones de interlocutor en órdenes de mantenimiento 27. Campos nuevos en equipos p:/ SD 28. Datos adicionales en documentos de ventas htt 29. Campos de reserva en clientes 30. Configurar regiones 31. Datos incompletos en documentos de ventas 32. Verificación de pedidos de clientes duplicados 33. Flujos de documentos 34. Determinación de cuentas de ventas
  • 5. 35. Portes de transporte en ventas de material 36. Cinco razones por las que el IVA no se determina correctamente 37. Gestión de lotes en SAP 38. Qué es un cliente CPD y por qué crearlo om SAP 39. Una mirada a la nueva SCN 40. Transacciones en logística p.c 41. Transacciones en finanzas 42. Preparados para la nueva SAP GUI 7.30 43. Breve historia de SAP 44. Siete requisites para ser un buen consultor esa gd . blo ww /w p:/ htt
  • 6. blogdesap.com created using fivefilters.org m Rangos numéricos propios números disponibles son inferiores a este porcentaje. Una vez tenemos todo esto grabamos, nos aparecerá un mensaje de advertencia. Aceptamos. .co Actualización del rango Ya tenemos creado nuestro rango numérico. Ahora debemos informar nuestras numeraciones dependientes de centro. Este post trata de cómo crear objetos de rangos numéricos específicos de cliente para poder utilizar luego en nuestros Presionamos el botón “Rangos números”. sap programas SAP. Por ejemplo, queremos crear una numeración específica de nuestros empleados que guardaremos en una tabla Indicamos el centro. Z* a través de un programa Z*. Presionamos “Intervalos”. Para información más específica sobre rangos numéricos que proporciona de forma estándar SAP podéis referiros a un post +Intervalo. anterior. de Guardamos. Nos dará un mensaje advirtiendo que esta Parametrización numeración no es transportable al sistema productivo y que Transacción: SNUM deberemos reproducirla en nuestro mandante destino también. og .bl ww Objeto: damos un nombre a nuestro rango. Utilización Elemento datos objeto inferior: nuestro rango va a depender del centro de trabajo del empleado. Los empleados del Y ahora sólo falta utilizarlo en un programa que diseñemos ya centro “0310” tendrán un código que empiece por “3”; los que este objeto no está asociado de forma estándar en ninguna /w del centro “0610” tendrán código que empiece por “6”, etc. transacción SAP. Para hacerlo tenemos que llamar al objeto Aquí indicaremos pues el elemento de datos de centro directamente en nuestro programa ABAP mediante el módulo de “WERKS_D”. funciones “NUMBER_GET_NEXT“. Por ejemplo, para empleados del centro ‘0310’ sería del siguiente modo.  Indicador hasta ejercicio: si quisiéramos cambiar la CALL FUNCTION 'NUMBER_GET_NEXT' p:/ numeración de ejercicio en ejercicio, marcaríamos este campo. No es el caso de este ejemplo. EXPORTING nr_range_nr = '01' Dominio longitud número: en este campo indicamos de qué object = 'ZEMPLEADOS' longitud será la numeración. Para eso introducimos un subobject = '0310' dominio con la longitud prevista (ya sea creando un nuevo IMPORTING htt dominio ya sea utilizando uno que exista de forma estándar number = v_number en SAP). Voy a utilizar la longitud del campo “numero de EXCEPTIONS personal” estándar de SAP (dominio “PERNR”). interval_not_found = 1 number_range_not_intern = 2 Porcentaje advertencia: al llenar este campo le estamos object_not_found = 3 diciendo a SAP que nos avise si en nuestro rango los quantity_is_0 = 4
  • 7. blogdesap.com created using fivefilters.org m Log de modificaciones de Navegamos a ‘Pasar a /Opciones técnicas’. tablas Marcamos la opción ‘Grabar en log modificaciones de datos’. Nos aseguramos de que la tabla quede activa tras .co hacer la grabación. sap de og En varias ocasiones he recibido consultas acerca de cómo se puede saber en SAP qué usuario ha modificado información Vamos al perfil de sistema y modificamos el valor dentro de una tabla. Esta información es útil si no tenemos ‘rec/client’. Indicamos el número del mandante sobre el que activado el log de acciones de una transacción y sólo podemos se grabarán los logs de modificaciones. Recomiendo que consultar este log a través de las tablas con las que interactúà la .bl este paso lo haga el administrador Netweaver (responsable transacción. También es posible que el usuario haya ejecutado de Basis) de vuestra empresa. una transacción Z propia de cliente, las transacciones de cliente no suelen tener asociado ningún log, pero sí sabemos sobre qué Herramientas /CCMS /Configuration /RZ10 – System profile tablas se está accediendo. Resultado ww Pues bien, en este caso también tenemos una herramienta en SAP. Es el log de modificaciones de tablas. En principio, no suele Si todo ha ido bien siempre que haya una modificación, ésta estar activado ya que penaliza el rendimiento y la memoria de la quedará registrada. Para consultar los cambios podemos ir al base de datos. De hecho, SAP no recomienda su uso en tablas de programa RSVTPROT aplicación, más bien solamente en tablas de customizing. Así que si decidís activar esta funcionalidad medid muy bien las Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP repercusiones que tendrá. /w Ejemplo Tenemos una tabla ZTEST sobre la cual grabamos documentos de ventas a través de una vista de actualización. Deseamos saber cuándo y quién realiza modificaciones sobre esta tabla. Los pasos están perfectamente recogidos en el punto de customizing p:/ de SAP. IMG: Gestión del sistema de control interno /Grabación de modificaciones de tablas Abrimos el diccionario ABAP y buscamos nuestra htt tabla ZTEST. Herramientas /Workbench ABAP /Desarrollo /SE11 – Diccionario ABAP
  • 8. blogdesap.com created using fivefilters.org m Índices de tablas TABLES: mara. DATA: BEGIN OF t_mara OCCURS 0, .co matnr LIKE mara-matnr, bismt LIKE mara-bismt, END OF t_mara. SELECT-OPTIONS: s_bismt FOR mara-bismt. sap START-OF-SELECTION. SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE t_mara WHERE bismt IN s_bismt. de El rendimiento de un programa de este tipo se encuentra penalizada ya que el campo de búsqueda no es clave en la tabla. Solución Crear un índice para el campo MARA-BISMT. og Entramos en la tabla de diccionario MARA. Herramientas /Workbench ABAP /Desarrollo /SE11 – Diccionario ABAP .bl Marcamos el botón ‘Indices’ y “crear índice”. ww Un índice de una base de datos, según la Wikipedia es: “una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla en una base de datos” Damos una codificación a nuestro índice, por ejemplo, Z1. Se suele crear un índice sobre una tabla del diccionario ABAP cuando en uno de nuestros programas nos vemos obligados /w a hacer búsquedas de información, pero el acceso a ésta no se realiza de acuerdo a campos claves de dicha tabla. Ejemplo Imaginemos que deseamos extraer un listado de materiales de p:/ nuestra base de datos. Para ello debemos ir à la tabla MARA que contiene toda la información general de materiales de nuestra Lo identificamos con una descripción. empresa. Lo ideal en este caso sería hacer la búsqueda poniendo como condición de selección el campo número de material Dejamos la opción que nos da por defecto, índice no único (MARA-MATNR) que es el único campo clave de la tabla. Sin en todos los sistemas de la base de datos. htt embargo, nuestro caso es más complejo y se nos pide hacer una búsqueda de materiales a partir del campo número de material Escribimos el campo por el cual vamos a indexar la base de anterior (MARA-BISMT) en un código como el siguiente: datos. Es importante que uno de ellos sea siempre el campo mandante. REPORT zprueba NO STANDARD PAGE HEADING LINE-SIZE 255.
  • 9. m .co Ya podemos grabar y activar. A partir de ahora, en principio debería mejorar el rendimiento de sap nuestro programa. Imagen inicial | Metagrrrl de og .bl ww /w p:/ htt
  • 10. blogdesap.com created using fivefilters.org m Webservices(I): ficheros xml Llamamos à la función CALL_TRANSFORMATION que convierte los datos a XML. REPORT zpruebas NO STANDARD PAGE HEADING LINE-SIZE .co 255. ************************************************** ******************************* *Tablas ************************************************** ******************************** sap TABLES: vbap. ************************************************** ******************************* *Tablas internas ************************************************** de ******************************* DATA: BEGIN OF ti_vbap OCCURS 0, vbeln LIKE vbap-vbeln, "Documento posnr LIKE vbap-posnr, "Posición Éste y (creo que) los dos siguientes posts del blog van a tratar matnr LIKE vbap-matnr, "Material og sobre comunicaciones entre sistemas mediante servicios web o  END OF ti_vbap. webservices. Explicaré cómo enviar y recibir información desde y hacia nuestro SAP, lo que comunmente llamamos interfaces. ************************************************** Siempre partiendo de que no disponemos del módulo XI/PI de ******************************* SAP que seguramente nos facilitaría las cosas bastante. *Datos globales .bl Para empezar diré que la información que trasladaremos entre ************************************************** plataformas la convertiremos al “lenguaje” XML y en este primer ******************************* post voy a explicar cómo hacerlo. DATA: g_xml TYPE string. Transformaciones ABAP/XML y XML/ABAP ww ************************************************** SAP provee de dos herramientas básicas para hacer ******************************* transformaciones de información de ABAP a XML y de XML *** SELECTION-SCREEN a ABAP. ************************************************** ******************************* Utilizando la plantilla de transformación estándar de SAP. SELECT-OPTIONS: s_vbeln FOR vbap-vbeln. Mediante la creación de transformaciones simples a través /w de la transacción STRANS. ************************************************** ******************************* Voy a centrarme en el primer tipo haciendo un pequeño ejemplo. *START-OF-SELECTION Primero vamos a crear un fichero XML a partir de datos de ************************************************** pedidos de venta extraídos de nuestro sistema. En segundo ******************************* lugar, imaginaremos que el sistema externo nos ha devuelto esos p:/ START-OF-SELECTION. datos modificados en otro fichero XML que convertiremos igualmente a datos ABAP. SELECT * FROM vbap INTO CORRESPONDING FIELDS OF TABLE ti_vbap De ABAP a XML WHERE vbeln IN s_vbeln. Crearemos un pequeño programa ABAP en nuestro editor. htt ************************************************** ******************************* Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP *END-OF-SELECTION ************************************************** Extraemos los datos de la tabla de pedidos de posiciones de ******************************* pedidos de venta VBAP. END-OF-SELECTION.
  • 11. CALL TRANSFORMATION id SOURCE data = ti_vbap[] ******************************* RESULT XML g_xml. *** SELECTION-SCREEN ** […] ************************************************** ******************************* m El resultado para la selección del pedido de ventas PARAMETERS: 1320000021 p_fich TYPE string. ************************************************** .co ******************************* *START-OF-SELECTION ************************************************** ******************************* START-OF-SELECTION. sap * Aquí llenaríamos la variable g_xml con el string xml De XML a ABAP * [...] Crearemos un pequeño programa ABAP en nuestro editor. ************************************************** ******************************* Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP *END-OF-SELECTION de ************************************************** Subiríamos los datos a SAP. En próximos posts veremos ******************************* cómo hacerlo a través de webservice. END-OF-SELECTION. De nuevo llamamos à la función CALL_TRANSFORMATION CALL TRANSFORMATION id SOURCE XML g_xml para convertir los datos XML a ABAP. og RESULT data = ti_vbap. REPORT zpruebas NO STANDARD PAGE HEADING LINE-SIZE Al final, los datos del fichero xml estarían incorporados en 255. nuestra tabla interna ABAP ti_vbap. ************************************************** ******************************* Más información .bl *Tablas ************************************************** En este blog también tenéis información amplia sobre ******************************* transformaciones XML. Y para una documentación más extensa también podéis consultar este documento. ************************************************** Imagen inicial | ssinger3 ww ******************************* *Tablas internas ************************************************** ******************************* * Tabla que contiene el xml DATA: BEGIN OF ti_xml OCCURS 0, string TYPE string, END OF ti_xml. /w * Tabla de datos ABAP DATA: BEGIN OF ti_vbap OCCURS 0, vbeln LIKE vbap-vbeln, "Documento posnr LIKE vbap-posnr, "Posición p:/ matnr LIKE vbap-matnr, "Material END OF ti_vbap. ************************************************** ******************************* *Datos globales htt ************************************************** ******************************* DATA: g_xml TYPE string. **************************************************
  • 12. blogdesap.com created using fivefilters.org m Webservices (II): service *"------------------------------------------------ ---------------------- providers *"*"Interfase local .co *" IMPORTING *" VALUE(I_STRING) TYPE STRING *" EXPORTING *" VALUE(O_RESPONSE) TYPE STRING *"------------------------------------------------ ---------------------- TABLES: sap ztiris_rec, ztiris_err. DATA: ti_vbap LIKE vbap OCCURS 0 WITH HEADER LINE, ti_errores LIKE ztiris_err OCCURS 0 WITH HEADER LINE. de * XML string to ABAP itab CALL TRANSFORMATION id SOURCE XML i_string RESULT data = ti_vbap[]. * Incorpora la información recibida a una tabla og SAP LOOP AT ti_vbap. MOVE-CORRESPONDING ti_vbap TO ztiris_rec. MODIFY ztiris_rec. ENDLOOP. .bl En este segundo artículo sobre webservices voy a continuar con * Gestión de errores la creación de un service provider. Con esto lo que IF ti_vbap[] IS INITIAL. conseguiremos es crear un enlace estable de comunicación ti_errores-error = 'X'. a través del cual nuestro cliente pueda enviar información APPEND ti_errores. CLEAR ti_errores. a nuestro sistema SAP. Y que a continuación, nosotros podamos ww ENDIF. recoger esta información e incorporarla. * ABAP itab to XML string Módulo RFC CALL TRANSFORMATION id SOURCE data = En primer lugar debemos crear el módulo de funciones RFC que ti_errores[] contenga toda la lógica de transformación del fichero XML que RESULT XML o_response. nos llegará vía webservice. ENDFUNCTION. /w Herramientas /Workbench ABAP /Desarrollo /SE37 – Biblioteca de funciones Creación del objecto Atributos de la función: será una funcion de acceso remoto Definimos nuestro servicio proxy a través de la transacción (RFC) SE80. Desde la pestaña Enterprise Services, seleccionamos la opción Serv. proxy y damos nombre a nuestro servicio. p:/ Parámetros de entrada (import): al menos debe contener un Esto abrirá el wizard que guiará todo nuestro proceso. parámetro de entrada de tipo string con traspaso de valores. Este parámetro recibirá el fichero xml. Herramientas /Workbench ABAP /Resumen /SE80 – Object Navigator Parámetros de salida (export): no es obligatorio pero es htt recomendado si queremos enviarle una respuesta del tipo Ok/Error de vuelta a nuestro cliente. Éste podría ser un ejemplo de código ABAP para el RFC: FUNCTION z_prueba_test_mf.
  • 13. Configure service: por defecto, dejamos la información de SOAP application y profile que SAP nos proporciona. Package/request: indicamos el paquete y orden de transporte para nuestro objeto. m Grabamos. SAP nos muestra la siguiente ventana informativa .co Se crea el servicio Web ZWS_PRUEBA_TEST: Tenga en cuenta que el servicio no posee ninguna liberación de tiempo de ejecución y por eso no puede utilizarse. Sin embargo, esto sólo se puede crear en la configuración WSCONFIG. sap A continuación va a solicitar la transacción WSADMIN (Servicios de administración de Web para tiempo de ejecución SOAP) en el registro UDDI para el servicio Web. Object type: determinamos nuestro proxy del tipo service Finalmente, activamos nuestro servicio. provider. Creación del servicio de Service provider: crearemos nuestro service provider en base a Existing ABAP Objects (Inside Out). Llamamos à la transacción SOAMANAGER. Si tienes problemas para acceder al SOAMANAGER quizás te falte Object type: damos nombre a nuestro servicio así como un activar alguna configuración. prefijo. También indicamos que utilizaremos la lógica de og nuestro módulo de funciones. Desde la pestaña Business Administration pulsamos en Web Service Administration. Buscamos el servicio que hemos creado previamente. .bl ww Choose endpoint: aquí escribimos el nombre del módulo de Lo marcamos y pulsamos Apply Selection. Inmediatamente se nos abre una pantalla más abajo con el detalle del /w funciones RFC que previamente hemos creado. servicio. Aquí vamos a buscar la pestaña Configurations y pulsar el botón Create Service. p:/ Damos nombre al servicio en la nueva ventana que se nos abre. htt
  • 14. SAP_BC_WEBSERVICE_CONSUMER o SAP_BC_WEBSERVICE_SERVICE_USER. También es necesario que el usuario se haya creado como usuario C-comunicación (pestaña Datos Logon) para que m éste no pueda acceder a través de SAPGUI sino solamente pueda conectarse por webservice. Datos logon del servicio .co Aún nos queda un paso para activar completamente nuestro servicio. Debemos especificar el usuario y contraseña de acceso a nuestro servicio a través de la transacción SICF. Herramientas /Gestión /Red /SICF – Actualización de árbol de servicio HTTP sap Una nueva ventana se nos abre aún por debajo. De toda la información que aquí se nos pide, la más importante se Buscamos nuestro servicio. encuentra en la pestaña Provider Security. En ésta Entramos en los servicios web que hemos creado marcamos la necesidad de utilizar un user id y password si ZWS_PRUEBA_SERVICIO y ZWS_PRUEBA_BINDING. nuestro cliente quiere enviar información a nuestro sistema SAP. En ambos indicamos que la operación de acceso será de tipo de L (secuencia de acceso alternativa). Damos un usuario y contraseña. og .bl Marcamos el botón Save. Después de todo este proceso SAP se habrá publicado un enlace WSDL que ya podemos dar a nuestro cliente para que configure su sistema. Este enlace contiene las Marcamos Ejecutar operaciones de acceso todas. ww definiciones para que nuestro cliente se pueda conectar directamente a nuestro sistema. Para ver cuál es este enlace Nos aseguramos que se encuentran todas la lista de vamos à la pestaña Overview y marcamos Open WSDL operaciones de acceso. document for selected binding. También se puede buscar desde la transacción SE80, en la definición de servicio, pestaña WSDL. /w En este artículo también podéis encontrar un ejemplo de webservice. Y si lo preferís en este vídeo de @ivanfemia. Creacion del usuario p:/ Imagen inicial | tj scenes Nuestro cliente se conectará a nuestro SAP para dejar la información a través de un usuario específico que nosotros creemos. Le debemos dar la clave y el usuario a nuestro cliente. Herramientas /Gestión /Actualización de usuarios /SU01 – htt Creación de usuarios Es importante que el usuario que creemos tenga todas las autorizaciones necesarias (pestaña roles), entre ellas los roles que hacen referencia a servicios web como SAP_BC_WEBSERVICE_ADMIN,
  • 15. blogdesap.com created using fivefilters.org m Webservices (III): service consumer .co sap de Select source: indicamos que el consumo lo haremos a través de url mediante la opción URL/HTTP Destination. Select URL: escribimos la url wsdl que nos ha og proporcionado nuestro proveedor. Enter package/request: escribimos el paquete y número de orden. .bl Grabamos el proceso y activamos. Este post cierra (¿?) la serie sobre webservices. En este caso vamos a ver cómo consumir un webservice desde SAP. Vamos a llamar a un webservice externo a nuestro SAP y vamos a dejar información sobre ese sistema externo. ww Cliente proxy En primer lugar debemos asegurarnos que nuestro proveedor tenga publicado el enlace WSDL de su webservice, algo del tipo… http://xx.xx.xxx.xx/webservice/nombrewebservice.asmx?wsdl Definición del puerto /w Entramos en la transacción SE80 Llamamos à la transacción SOAMANAGER. Si tienes problemas para acceder al SOAMANAGER quizás te falte Herramientas /Workbench ABAP /Resumen /SE80 – Object activar alguna configuración. Navigator Desde la pestaña Business Administration pulsamos en Web Creamos el cliente proxy, dándole nombre en la pestaña p:/ Service Administration. Enterprise Services, opción Clt. proxy. Buscamos el proxy consumer que hemos creado previamente. Lo marcamos y pulsamos Apply selection. Se nos abre una nueva ventana más abajo. htt
  • 16. error/Ok. Sobre la pestaña Configurations pulsamos el botón Create Logical Port. Creación del puerto lógico. La sentencia CREATE_OBJECT… de la plantilla abre la Se nos abre otra pestaña donde indicamos el nombre de comunicación a través del puerto lógico creado. nuestro puerto lógico, de nuevo nos pide la urld del wsdl m proveedor, el usuario y contraseña. Llamada al proxy. La sentencia CREATE_METHOD… de la plantilla se encarga de enviar la información a nuestro proveedor de webservice. .co No indico el código ABAP completo, pero evidentemente esta plantilla hay que modificarla y adaptarla. Además antes de abrir la comunicación en nuestro programa ABAP debemos seleccionar los datos a enviar y transformarlos a xml mediante la función CALL_TRANSFORMATION. sap Si estás interesado en más información sobre consumo de webservices pulsa en este enlace. Y en programación orientada a objetos, tenéis un manual en la página de abap.es Si no se nos grabase el usuario y contraseña (algo que a veces pasa y no sé por qué), marcamos Edit y modificamos Imagen inicial | tj scenes usuario y contraseña en la pestaña Consumer security que de se nos ha abierto aún más abajo. Lógica del programa Nos queda definir la lógica de nuestro programa, buscar los og datos en nuestro sistema y enviarlos a través del proxy que hemos creado. Volvemos à la transacción SE80 .bl Creamos el programa que contendrá la lógica. Mantenemos el programa visible, mientras buscamos nuestro proxy cliente en el árbol de la SE80. Arrastramos el proxy cliente desde el árbol al editor ABAP. ww Esto nos creará la plantilla ABAP. /w p:/ Esta plantilla contiene lo siguiente: Definición de la clase del proxy. Definición de la estructura del proxy (salida) donde htt dejaremos el string xml que enviaremos, así como el usuario y contraseña. Estructura del proxy (entrada) donde recibiremos la información de respuesta del webservice de nuestro proveedor (si nos la da). Por ejemplo, un mensaje de
  • 17. blogdesap.com m Log de modificaciones de Navegamos a ‘Pasar a /Opciones técnicas’. tablas Marcamos la opción ‘Grabar en log modificaciones de datos’. Nos aseguramos de que la tabla quede activa tras .co hacer la grabación. sap de og En varias ocasiones he recibido consultas acerca de cómo se puede saber en SAP qué usuario ha modificado información Vamos al perfil de sistema y modificamos el valor dentro de una tabla. Esta información es útil si no tenemos ‘rec/client’. Indicamos el número del mandante sobre el que activado el log de acciones de una transacción y sólo podemos se grabarán los logs de modificaciones. Recomiendo que consultar este log a través de las tablas con las que interactúà la .bl este paso lo haga el administrador Netweaver (responsable transacción. También es posible que el usuario haya ejecutado de Basis) de vuestra empresa. una transacción Z propia de cliente, las transacciones de cliente no suelen tener asociado ningún log, pero sí sabemos sobre qué Herramientas /CCMS /Configuration /RZ10 – System profile tablas se está accediendo. Resultado ww Pues bien, en este caso también tenemos una herramienta en SAP. Es el log de modificaciones de tablas. En principio, no suele Si todo ha ido bien siempre que haya una modificación, ésta estar activado ya que penaliza el rendimiento y la memoria de la quedará registrada. Para consultar los cambios podemos ir al base de datos. De hecho, SAP no recomienda su uso en tablas de programa RSVTPROT aplicación, más bien solamente en tablas de customizing. Así que si decidís activar esta funcionalidad medid muy bien las Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP repercusiones que tendrá. /w Ejemplo Tenemos una tabla ZTEST sobre la cual grabamos documentos de ventas a través de una vista de actualización. Deseamos saber cuándo y quién realiza modificaciones sobre esta tabla. Los pasos están perfectamente recogidos en el punto de customizing p:/ de SAP. IMG: Gestión del sistema de control interno /Grabación de modificaciones de tablas Abrimos el diccionario ABAP y buscamos nuestra htt tabla ZTEST. Herramientas /Workbench ABAP /Desarrollo /SE11 – Diccionario ABAP
  • 18. m .co sap Siento no poderos mostrar un resultado de ejemplo positivo. Mi sistema no tiene el parámetro rec/client activo. Imagen inicial | szpako de og .bl ww /w p:/ htt
  • 19. blogdesap.com created using fivefilters.org m Proteger y desproteger Desproteger variante variantes de report Si nos encontramos en un caso como el anterior y necesitamos desproteger esta variante, por ejemplo, si el usuario ya no .co trabajase en la empresa, debemos proceder del siguiente modo. Llamamos al programa RSVARENT Herramientas /Workbench /Desarrollo /SE38 – Editor ABAP sap Introducimos el nombre del programa y la variante. El nombre del programa corresondiente à la transacción VA05N lo encontramos navegando sobre la transacción VA05N al menú Sistema /Status /Report. El programa es el SD_SALES_ORDERS_VIEW. El nombre de la transacción lo encontramos navegando de Este artículo trata de cómo crear, proteger y desproteger en la transacción VA05N a Pasar a /Variantes /Traeer. variantes de reports SAP. Ya habíamos visto en un post anterior que mediante variantes podíamos crear imágenes fijas de la Ejecutamos el programa. Al ejecutarlo, no nos envía ningún pantalla de selección de reports. Ahora veremos qué debemos mensaje de finalización. No os preocupéis, es normal. hacer para que una variante que hemos creado sólo pueda ser og modificada por nosotros mismos. Pero también veremos lo Volvemos à la transacción VA05N, Pasar a /Variantes contrario, cómo modificar variantes protegidas de otros usuarios. /Grabar como variante. Y ya podréis grabar las modificaciones que queráis normalmente. Proteger una variante Utilizaremos como ejemplo, el listado de pedidos de cliente .bl VA05N Entramos en la VA05N Llenamos la pantallas de selección con nuestros valores. ww Pasar a /Variantes /Grabar como variante. Como siempre, utilizad esta herramienta con cuidado. Damos un nombre y marcamos proteger variante. Imagen inicial | juhansonin /w p:/ Con sólo estos pasos nuestra variante queda protegida y en caso de que un usuario diferente al nuestro intente modificarla o borrarla le aparecerá el siguiente mensaje. htt
  • 20. blogdesap.com created using fivefilters.org m Cómo encontrar tablas de una transacción .co sap de og Pero también tenemos que fijarnos en el valor que aparece a continuación de Clase tabla. Si el valor que se indica es tabla transparente podemos estar seguros de que es una tabla que almacena información, pero si se indica que la clase de tabla es una estructura, entonces debemos seguir buscando para .bl encontrar la tabla transparente que contiene la información. Quisiera saber qué campos y tablas utiliza este programa… Tengo que encontrar las tablas de la base de datos donde guarda la información esta transacción… Son preguntas que seguro que nos hemos hecho más de una vez. Quizá, solamente para ww preparar una query, quizá para utilizar la tabla en un listado o quizá para comparar la información en SAP con la que tenemos en nuestros excels. Sea cual sea la razón, en este artículo voy a enumerar varias formas de detectar los campos y las tablas que utilizan las transacciones de SAP. Datos técnicos (F1-F9) /w Es quizás, la forma más rápida. Supone utilizar la ayuda propia de los campos de las transacción SAP directamente. Lo voy Ayudas de búsqueda o matchcodes a mostrar en un ejemplo con la transacción VA02. Consiste en buscar las tablas a partir del matchcode asociado al campo de nuestra transacción. Por ejemplo, con la transacción Llamamos a nuestra transacción VA02 VF03 seguiríamos estos pasos: p:/ Nos situamos sobre el campo. Nos posicionamos sobre el campo. Apretamos la tecla F1. Seguimos los pasos del apartado anterior (F1-F9). Pulsamos el botón Datos técnicos (F9 o icono del martillo). Buscamos el valor que aparece a continuación de Ayuda de htt Nos fijamos en los datos que aparecen a continuación de Tabla búsqueda. En este caso encontramos que el valor es VMCF. y Nombre de campo ya que contienen precisamente la Hacemos doble click. información que buscamos, la tabla que almacena la información del campo sobre el cual nos habíamos posicionado. En este caso Como hay matchcodes incluidos seguimos haciendo doble la tabla es la VBAK y el campo es el VBELN.
  • 21. click para navegar a cualquiera de los matchcodes. Hacemos doble click sobre el valor del apartado Método de selección para llegar finalmente a las tablas incluidas en el matchcode. m Include TOP de programa Si sabemos leer el código ABAP del programa podemos buscar Listados de tablas .co los nombres de tablas directamente sobre el código. Utilizar alguno de los muchos listados que corren por internet Escribimos la transacción. Por ejemplo, VF03 con la información de tablas que utiliza SAP. Podéis utilizar un listado de tablas de este blog, uno de mundosap, uno de la sdn, Seguimos los pasos del primer apartado (F1-F9). etc. Hacemos doble click sobre el nombre del programa para Referencia de utilización sap navegar hasta él. Consiste en hacer las búsqueda de forma inversa. Hasta ahora Buscamos en el programa un include que seguramente empezábamos en una transacción para llegar a las tablas acaba con las letras _TOP. y campos incluidos en la transacción. Aquí se trata de empezar por un campo o tabla para llegar à la transacción que los utiliza. Buscamos la sentencia TABLES. Tras esta sentencia encontraremos las tablas que utiliza el programa. Herramientas /Workbench ABAP /Desarrollo /SE11 – Diccionario de ABAP A veces no existe ningún include que contenga las letras _TOP. En ese caso es suficiente con hacer una búsqueda directa de la Escribimos la tabla de base de datos que queramos. Por sentencia TABLES. ejemplo, la VBAK. og Trace SQL Pulsamos visualizar. Consiste en hacer una llamada à la transacción ST05. Marcamos el campo VBELN. Herramientas /Workbench ABAP /Test /ST05 – Trace SQL Vamos al menú Utilidades /Referencia de utilización. .bl Llamamos à la transacción ST05 Marcamos utilización en programas. Marcamos activate trace. Nos mostrará la lista de programas que utilizan ese campo de tabla. Si sabemos cuál es el nombre del programa podemos En otro modo, llamamos a nuestra transacción seguir profundizando hasta llegar à la transacción. problemática, en este caso la MM02. ww Imagen | Andrea Prieto Volvemos a ST05 y marcamos deactivate trace. Si este artículo te ha sido de ayuda no olvides compartirlo Pulsamos Display Trace. :-) /w p:/ El listado que nos muestra la transacción ST05 es el conjunto de tablas y llamadas que hemos realizado cuando hemos ejecutado la transacción MM02. A partir de aquí debemos decidir cuál de htt todas las tablas que nos muestra es la nuestra. Admito que esta forma de buscar información es complicada ya que supone navegar entre la gran cantidad de tablas que en una sola transacción puede llegar a llamar SAP.
  • 22. blogdesap.com created using fivefilters.org m Documenta tus programas *& * ABAP * .co *& Listado de vuelos * ************************************************** ******************************* REPORT zprueba NO STANDARD PAGE HEADING LINE-SIZE 255. * sap ************************************************** ******************************* *Tablas ************************************************** ******************************* TABLES: spfli. de "Itinerario de vuelos ************************************************** ******************************* *Tipos Documentar un programa ABAP significa escribir una pequeña og ************************************************** ayuda para que nuestros usuarios sepan cuál es la función del ******************************* programa. Es además una pequeña guía para saber qué TYPES: parámetros son necesarios para la ejecución correcta del ty_spfli TYPE SORTED TABLE OF spfli WITH programa y una explicación de los posibles errores que nos NON-UNIQUE KEY carrid connid. podemos encontrar. No me refiero a poner pequeños .bl comentarios en el código ABAP sino a escribir una pequeña ************************************************** ayuda visible para los usuarios. ******************************* Con todo esto no digo que no esté bien explicar nuestras líneas *Variables globales de código, totalmente necesario, pero también hay que pensar en ************************************************** dar las máximas facilidades a aquellas personas que van ******************************* ww a trabajar diariamente con nuestros pequeños programas. DATA: ti_spfli TYPE ty_spfli WITH HEADER LINE. Este tipo de ayuda lo hemos visto más de una vez en "Tabla interna de vuelos transacciones y programas estándar. Tomemos por ejemplo, la transacción FBL5N ************************************************** ******************************** Finanzas /Gestion financiera /Deudores /Cuenta /FBL5N – *** SELECTION-SCREEN Visualizar y modificar partidas abiertas *** /w Si presionamos el icono ‘i’ de información SAP abre una pequeña ************************************************** ventana con información adicional que el usuario puede utilizar ******************************** para conocer el uso y funcionalidad de la transacción. SELECT-OPTIONS: s_carrid FOR spfli-carrid, "Compañía aérea p:/ s_countr FOR spfli-countryfr. "País de salida ************************************************** Pasos para generar documentación en un programa ABAP ******************************* htt *START-OF-SELECTION Partiré de un pequeño programa de prueba que lista los vuelos ************************************************** de una compañía aérea. ******************************* START-OF-SELECTION. *&------------------------------------------------ ------------------------------* * Selección de vuelos *& Report ZPRUEBA
  • 23. SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE ti_spfli WHERE ( carrid IN s_carrid AND countryfr IN s_countr ). m ************************************************** ******************************* *END-OF-SELECTION ************************************************** .co ******************************* END-OF-SELECTION. * Listado LOOP AT ti_spfli. sap WRITE: / ti_spfli-connid, ti_spfli-cityfrom, Un apunte final, si queréis traducir vuestra documentación ti_spfli-deptime. a otros idiomas podéis hacerlo a través de la transacción SE63. ENDLOOP. Así, si el usuario se loga en otro idioma, también podrá leer la documentación que hayáis preparado. Una vez tenemos el código escrito vamos a crear la documentación del programa. Herramientas /Workbench ABAP /Utilidades /Traducción /SE63 – Textos breves y explicativos de Desde el editor vamos a Pasar a /Documentación. Deberéis reccorrer el menú Traducción /Objetos ABAP /Textos Se nos abre un editor (SAPscript o Word según tengáis explicativos (documentación) /Ayuda F1 /RE Reports, gr. configurado vuestro sistema) con los siguientes apartados: funciones, BD lógicas y traducir los textos que os aparezcan. Purpose og Integration Imagen inicial | quinn.anya Prerequisites ¿Te ha gustado este artículo? Ayúdame a que llegue a más Features gente compartiéndolo :-) Selection .bl Standard_variant Output Activities Example ww Escribimos en cada apartado la información que corresponda. Por supuesto, no es necesario que se escriba información en cada apartado. Guardamos y activamos. /w p:/ Resultado de la documentación htt Lanzamos nuestro programa bien directamente a través del editor ABAP o a través de la transacción que hayamos decidido para él. Marcamos el icono ‘i’.
  • 24. blogdesap.com created using fivefilters.org m ¿Por qué los usuarios no Informativo (I): se muestra como un pequeña ventana sobre leen los mensajes de SAP? la transacción. .co Advertencia (W): pequeño texto que aparece en la barra inferior. Error (E): al igual que el mensaje de advertencia también aparece en la barra inferior, pero impide al usuario continuar con el normal funcionamiento de la transacción. sap Obliga a corregir el error antes de poder continuar. Para ti, crear un mensaje en un programa ABAP debe ser muy sencillo. Creamos el mensaje en la transaccion SE91. de Herramientas /Workbench ABAP /Desarrollo /Entorno de programación /SE91 – Mensajes Seleccionamos nuestra clase de mensaje, introducimos un nuevo número y pulsamos ‘Crear’. og Un mensaje es la forma que nos proporciona SAP para gestionar información relevante dentro del sistema. Advierten o impiden errores en el uso de la herramienta. Entonces, ¿por qué hay tantos usuarios que hacen caso omiso de estos mensajes o que simplemente no los leen? .bl ¿Alguna vez te has encontrado con un usuario que te ha llamado pidiéndote que deshagas un movimiento o una contabilización o cualquier otra cosa? Entonces, le has preguntado ¿Por qué hiciste ese movimiento? ¿No te leíste el mensaje de advertencia ww sobre hacer ese movimiento? Bueno, pues yo sí que me he encontrado con ese tipo de llamadas, y más de una vez. Escribimos el texto del mensaje. Guardamos. Como en Juegos de Guerra, esa película de 1983 en la que el protagonista no hace caso al mensaje de la máquina en una de las escenas. [embedded content] /w –Máquina: ¿Jugamos? Ahora introducimos el mensaje en nuestro programa ABAP. –Actor: ¿Qué tal si jugamos à la “Guerra global termonuclear”? IF g_var = ‘YES’. MESSAGE i397(zmensajes) WITH g_var. –Máquina: ¿No prefiere una buena partida de ajedrez? ENDIF. p:/ –Actor: Más tarde. Ahora vamos a jugar à la “Guerra global Existe otra manera, escribe el mensaje directamente sin termonuclear? necesidad de introducirlo dentro de la tabla de mensajes. La de problemas que se hubiese ahorrado el protagonista si hubiese hecho caso al mensaje del ordenador y no hubiese IF g_var = ‘YES’. continuado. Por supuesto, esto es una exageración, pero MESSAGE ‘La orden YES inicia la guerra global htt demuestra que los mensajes están por alguna razón. termonuclear. Piénsatelo bien’ TYPE ‘I’. Crear un mensaje en SAP ENDIF. En primer lugar tienes que saber que SAP proporciona diferentes tipos de mensaje, aunque los más habituales son: En cualquier caso, el resultado sería una ventana con el siguiente
  • 25. mensaje… La orden YES inicia la guerra global termonuclear. Piénsatelo bien Advertencia: no hagáis esto en casa de vuestro cliente, puede m perjudicar seriamente vuestra reputación dentro de la empresa. Aunque por otro lado, quién sabe, haciéndolo quizá el usuario realmente se lo piensa antes de continuar ;-) .co Los lamentos Entonces, ¿Por qué si hemos escrito el mensaje el usuario no ha seguido sus indicaciones? Bien, los motivos que personalmente más he escuchado son: Tengo mucho trabajo y no tengo tiempo para ir leyendo sap todos los mensajes que da el ordenador. Hay tantos mensajes que ya ni me los leo, le doy a continuar y ya está. ¿Cuál es el problema? El mensaje sólo era de advertencia, pero me dejaba continuar. Así que he continuado. No me ha dado tiempo a leerlo. He ido rápido y he continuado sin querer. Así que no he podido leer el mensaje. La solución de og Si lo miramos desde el punto de vista la persona que trabaja cada día con las mismas transacciones, podría darles incluso la razón. El trabajo puede llegar a ser demasiado mecánico y los mensajes algo que sólo están ahí para molestar. Pero no es así en .bl absoluto, un mensaje es información adicional y hay que leerla. Desde mi punto de vista, lo mejor es mostrar los consecuencias de no leer estos pequeños mensajes. Sobre todo, formar y pedir a los usuarios que se los lean. Pero como siempre hay personas reticentes y malas actitudes, entonces si el error generado ha ww sido debido a no querer leer un mesaje yo opto por dejar que sea la persona quien arregle el problema que ha generado. Puede sonar duro, pero es mejor que permitir que los mismos problemas se produzcan una y otra vez. De todos modos, estas soluciones no suelen gustar a los key users y mucho menos à la empresa. Por lo que seguramente os van a pedir que convirtáis aquellos mensajes de tipo informativo /w (I) o advertencia (W) en mensajes de tipo error (E). Así, los usuarios no podrán continuar. Aunque eso suponga muchas veces que tengan que empezar otra vez la transacción, que esta transacción acabe abruptamente (suele pasar cuando se introduce un mensaje de error dentro de una user exit) o peor p:/ aún, que el trabajo del usuario se convierta todavía en más mecánico y rutinario. Por cierto, si no habéis visto la película Juegos de guerra os la recomiendo, pasaréis un rato muy agradable. htt Imagen inicial | randomduck ¿Crees que este artículo es útil? ¿Por qué no me ayudas a compartirlo? :-)
  • 26. blogdesap.com created using fivefilters.org m ¿Son mis entornos diferentes? .co ¿Y si no es así? ¿Cuáles son las diferencias? sap El editor split screen Si queremos saber cuáles son las diferencias de nuestro desarrollo entre entornos SAP nos lo muestra en una serie de sencillos pasos: Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP de Desde nuestro programa navegamos al menú Utilidades /Más utilidades /Editor split screen Escribimos el nombre de nuestro programa de nuestros og respectivos entornos. Nos encontramos en nuestro entorno de desarrollo, delante de uno de nuestros programas y no sabemos si lo que tenemos Marcamos el botón ‘Comparación de sistemas’, indicamos delante coincide completamente con la versión que existe en el con qué entorno queremos comparar nuestro programa. entorno productivo. Empezar a modificar un programa sin estar .bl seguro de ello puede convertirse en un verdadero quebradero de Marcamos el botón ‘Visualizar’. cabeza. Si ambos entornos no coinciden, nuestros cambios pueden subir a productivo modificaciones inesperadas, que nos Nos solicitará nuestro usuario y contraseña del entorno llevan a tener que recuperar cambios y volver a reprogramar destino. Lo escribimos. nuestro código ABAP. Se nos abre una pantalla doble, arriba el programa en ww Para empezar comparar las versiones nuestro entorno origen, debajo el programa en el entorno destino. Lo primero que debemos comprobar son coincidencias en las versiones. Para ello Herramientas /Workbench ABAP /Desarrollo /SE38 – Editor ABAP Nos situamos sobre nuestro programa en el entorno de /w desarrollo y vamos al menú Utilidades /Versiones /Gestión de versiones. Nos apuntamos la última orden de transporte activa que veamos. Nos situamos sobre nuestro mismo programa en el entorno p:/ productivo e igualmente vamos al menú Utilidades /Versiones /Gestión de versiones. ¿Coincide la orden de transporte que vemos con la orden de transporte que teníamos en desarrollo? Entonces, podemos saber que nuestros programas coinciden. htt Si vamos al menú Tratar /Modo de comparación /Menú on, el sistema nos dirá si ambos programas son iguales.
  • 27. a compartirlo? :-) m .co Si no son iguales, volvemos al menú y pulsamos Tratar /Modo de comparación /Diferencia siguiente. Y nos llevará al punto del programa donde hay diferencias. sap Esto también nos sirve para detectar diferencias en módulos de funciones: de Herramientas /Workbench ABAP /Desarrollo /SE37 – Biblioteca de funciones Igualmente, desde el menú Utilidades /Más utilidades /Editor split screen. og E incluso para detectar diferencias en smartforms, pero en este caso hay que realizar algunos pasos adicionales. Todo smartform en SAP se guarda como un módulo de funciones del cual hay que conocer el nombre. .bl Herramientas /Imprimir formularios /SMARTFORMS – Smart Forms Entramos en nuestro smartform. Vamos al menú Entorno /Módulo de funciones en el entorno ww de desarrollo. Nos guardamos el nombre que nos ha dado. Vamos al menú Entorno /Módulo de funciones en el entorno productivo. Nos guardamos el nombre que nos ha dado. Vamos al editor split screen, por ejemplo, a partir de la SE38 e introducimos ambos módulos de funciones en sus correspondientes lugares. Como veis el nombre del módulo /w de funciones que SAP que da al mismo smartform es diferente según el entorno. Por eso, cuando hagáis la comparación entre entornos siempre va a haber diferencias, pero tened cuidado, no siempre es debido a diferencias en el código sino simplemente al nombre del propio módulo de p:/ funciones llamado. Por ejemplo, lo que se muestra en la imagen siguiente no sería una diferencia porque se refiere solamente al nombre del módulo de funciones dado al smartform en cada entorno. htt Imagen inicial | R0Ng ¿Crees que este artículo es útil? ¿Por qué no me ayudas
  • 28. blogdesap.com created using fivefilters.org m Regeneración de objetos Generación de objetos todos de componentes de software seleccionados: se da cuando se instala por primera vez el sistema. Al seleccionar esta opción se regenerarán todos los .co objetos del sistema SAP. Regeneración después de un upgrade de sistema SAP: se da cuando hemos cambiado de versión de SAP y deseamos regenerar todos los objetos modificados en la versión. sap Generación de objetos de una orden de transporte: si hemos realizado una modificación de varios programas à la vez, agrupados en una sola orden, utilizaremos esta opción para regener todos los objetos incluidos dentro de la orden. Ejemplo de Tomemos que queremos regenerar todos los programas que hemos modificado e incluido en una orden de transporte. Llamamos à la transacción SGEN. og Indicamos nuestra orden de transporte. ¿Cuántos de vosotros no habéis visto alguna vez lo siguiente? .bl ww La primera vez que un usuario ejecuta una transacción tras un cambio realizado sobre dicha transacción SAP ejecuta un proceso de regeneración. Un cambio en una transacción (y la necesidad de regeneración) sucede cuando modificamos la parametrización Decidimos si lo queremos hacer online o en job de fondo. En asociada a una transacción, cuando modificamos el código ABAP este caso, lo hago en job de fondo. asociado a su programa, cuando hacemos un upgrade del sistema, cuando implementamos una nota, etc. Sin embargo, una /w vez regenerada la transacción ya no volverá a aparecer este proceso nunca más. No soy un experto pero hasta donde yo sabía y me habían explicado ABAP es un lenguaje de programación interpretado, no p:/ compilado. Así que nunca he entendido muy bien qué es lo que hace exactamente SAP cuando dice que está compilando la transacción. Sea como sea, SAP provee de una herramienta que nos permite, llamémosle regenerar, en forma masiva una transacción modificada. htt Casos Transacción: SGEN Atención, mientras estemos realizando una regeneración de La documentación de la propia transacción es abundante, pero objetos no podemos hacer simultáneamente una segunda voy a explicar solamente los casos con los que me he encontrado: regeneración, aunque referencia a objetos distintos.
  • 29. Es aconsejable hacer todas las regeneraciones en job de fondo. Más información en la propia documentación de la transacción SGEN y en la nota 379918 Imagen inicial | Patrick Hoesly m .co sap de og .bl ww /w p:/ htt