{"id":183,"date":"2012-11-11T14:49:05","date_gmt":"2012-11-11T13:49:05","guid":{"rendered":"http:\/\/dev.qualilogy.com\/es\/?p=183"},"modified":"2013-01-05T14:49:46","modified_gmt":"2013-01-05T13:49:46","slug":"sonar-abap-lo-que-debes-saber","status":"publish","type":"post","link":"http:\/\/qualilogy.com\/es\/sonar-abap-lo-que-debes-saber\/","title":{"rendered":"Sonar ABAP &#8211; Lo que debes saber"},"content":{"rendered":"<p><a href=\"http:\/\/vicken.deviantart.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-2581\" title=\"Qualilogy Sonar&amp;ABAP\" src=\"http:\/\/qualilogy.com\/wp-content\/uploads\/2012\/11\/QualilogyAbap21.jpg\" alt=\"\" width=\"342\" height=\"150\" \/><\/a>Despu\u00e9s de empezar,  en <a title=\"Sonar Abap\" href=\"http:\/\/qualilogy.com\/es\/sonar-y-abap\" target=\"_blank\">el post anterior<\/a>, esta serie sobre an\u00e1lisis de c\u00f3digo ABAP, con la ayuda de Walter, Director de Calidad de Vision IT y especialista en entornos SAP, vamos a ver hoy lo que se necesita saber para la implantaci\u00f3n de un proceso de an\u00e1lisis de c\u00f3digo ABAP con Sonar. <!--more--><\/p>\n<p>Como probablemente sab\u00e9is, ABAP (Advanced Business Application Programming) es el lenguaje de programaci\u00f3n de SAP, un software ERP nacido en los a\u00f1os 80, que ha conocido ya diferentes versiones. Las que se encuentran m\u00e1s a menudo actualmente son SAP R3, 4.0 hasta 6.0, o ECC5 y ECC6. Hay tambi\u00e9n una versi\u00f3n Netweaver para desarrollar aplicaciones tipo Web, y una extensi\u00f3n Orientada a Objetos &#8211; ABAP Objects \u2013 pero su uso no est\u00e1 a\u00fan muy extendido.<\/p>\n<p>SAP en s\u00ed mismo es un n\u00facleo de diferentes m\u00f3dulos llamados \u2018areas\u2019 correspondientes de diferentes conjuntos de funcionalidades y tablas para diferentes tipos de gesti\u00f3n: finanzas, ventas, recursos humanos, compras, etc.<br \/>\nAhora, como cada empresa tiene su propio modelo de negocio y sistema de gesti\u00f3n usando esos diferentes dominios, hay que poder adaptar o customizar el ERP. Es decir, recoger datos y tratamientos del n\u00facleo SAP, y adaptarlos al negocio de la empresa a trav\u00e9s de pantallas, informes, datos, etc.<\/p>\n<p>Este es el objetivo de ABAP y a lo que se dedican los desarrolladores ABAP. No es un lenguaje dif\u00edcil de leer, si conoces ya programaci\u00f3n y SQL, claro. Pertenece al grupo de los llamados 4GL o Lenguajes de Cuarta Generaci\u00f3n y se acerca m\u00e1s a Cobol que a Java. Solamente, tiene una organizaci\u00f3n no del todo usual y un vocabulario propio, que a veces puede confundirte, pero esencialmente, es lo que hay que saber y que vamos a tratar de ver en este post.<\/p>\n<h3><strong>El Workbench SAP<\/strong><\/h3>\n<p>SAP no es \u00fanicamente un ERP, un software con sus propias pantallas, tratamientos y estructuras de datos, sino que es tambi\u00e9n un entorno de ejecuci\u00f3n del software y un entorno de desarrollo de los programas personalizados.<\/p>\n<p>La primera cosa que se debe saber, es que un programador no va a instalar un IDE tipo Eclipse con un compilador ABAP en su m\u00e1quina: \u00e9l se conecta a un servidor SAP y trabaja con el Workbench (literalmente \u2018taller de trabajo\u2019 o \u2018banco de trabajo\u2019) para crear un programa, una pantalla, acceder al diccionario de SAP para acceder a objetos del n\u00facleo SAP, etc. Y todo se guarda en el Workbench, nada de ficheros ni de directorios (aunque si hay ciertas maneras de organizar el c\u00f3digo).<\/p>\n<p>El acceso a este Workbench se hace a trav\u00e9s de transacciones. Por ejemplo, para editar un programa existente, hay que ir al ABAP Editor en el Workbench y entrar el c\u00f3digo de la transacci\u00f3n (SE38 en nuestro caso) para acceder a una pantalla donde se puede entrar en m\u00e1s detalles respecto al programa que quieres modificar. Pues, no es una interfaz gr\u00e1fica y un desarrollador ABAP no solamente tiene que saber programar, sino que tambi\u00e9n tiene que saber navegar en el Workbench.<\/p>\n<p>Lo que significa que nosotros, para poder analizar c\u00f3digo ABAP, tendremos que extraerlo del Workbench. Esto no es un problema y lo veremos en un post ulterior.<br \/>\nOtra cosa, es que a veces, hay que prestar atenci\u00f3n al uso de la palabra \u2018transacci\u00f3n\u2019. No solamente todo lo que se hace en el workbench necesita un c\u00f3digo de transacci\u00f3n. Tambi\u00e9n un usuario no va a utilizar un programa sino acceder a este a trav\u00e9s de una transacci\u00f3n.<\/p>\n<p>Supongamos que estoy hablando con un consultor o un administrador SAP, respecto a un m\u00f3dulo de c\u00f3digo y le pregunto qu\u00e9 tipo de transacciones hay dentro, para poder dar un nombre a este m\u00f3dulo en un an\u00e1lisis y en el dashboard. Y claro que estoy hablando de transacci\u00f3n funcional \u2013 creaci\u00f3n de un cliente, impresi\u00f3n de una factura, etc. \u2013 y ellos entienden \u2018transacci\u00f3n SAP\u2019, y eso puede provocar un malentendido, para no decir cara de consternaci\u00f3n (ya que no es dif\u00edcil si eres un franc\u00e9s perdido en Madrid).<br \/>\nYa he mencionado que el vocabulario es un poco particular. Tampoco, no es como hablar el idioma Klingon (se trata de SAP, no de Star Trek).<\/p>\n<h3><strong>Areas SAP<\/strong><\/h3>\n<p>Otro punto importante que conocer, porque vamos a tener unas preguntas respecto a eso en el pr\u00f3ximo post: las \u00e1reas o m\u00f3dulos SAP ERP. Ya hemos visto que se compone de diferentes m\u00f3dulos o areas funcionales o servidores SAP. Los m\u00e1s conocidos son FICO (Financial &amp; Controlling), HR (Human Resources), o SD (Sales &amp; Distribution) y PP (Production Planning).<\/p>\n<p>Claro que todos esos m\u00f3dulos hablan entre ellos: una factura en SD pasar\u00e1 en un cuenta de FICO, pero son m\u00f3dulos bastante complejos, que necesitan un conocimiento funcional bastante especializado, adem\u00e1s no todos los equipos trabajan en las mismas \u00e1reas SAP, y por eso a veces no usan el mismo servidor SAP. Esto puede llegar a ser un problema, porque no vas a hablar de, por ejemplo, la aplicaci\u00f3n de \u2018compras\u2019 sino de FI, CO, AM (Asset Management), MM (Material Management) por el sub-modulo Inventory Management, etc. Ah, hay tambi\u00e9n un QM para Quality Management, para el control de calidad de los productos en fabrica.<\/p>\n<p>Esto es importante porque, como tenemos que hacer una extracci\u00f3n del c\u00f3digo ABAP desde un servidor:<\/p>\n<ul>\n<li>Si hay diferentes servidores, podemos necesitar m\u00e1s de una \u00fanica extracci\u00f3n.<\/li>\n<li>El c\u00f3digo estar\u00e1 siempre organizado por \u00e1reas SAP. Es decir, en nivel m\u00e1s alto en el dashboard Sonar ser\u00e1 una area FI, CO, HR, etc.<\/li>\n<\/ul>\n<h3><strong>Objetos SAP<\/strong><\/h3>\n<p>No vamos a hablar demasiado de los tipos de objetos ABAP porque eso lo veremos m\u00e1s en detalle cuando empezemos los an\u00e1lisis. Ahora, cuando vais a encontrar los ABAPers para ver c\u00f3mo poner en marcha un proceso de an\u00e1lisis de c\u00f3digo ABAP, ellos pueden preguntar cuales son los objetos que se pueden analizar o no, as\u00ed que vamos a hacer una breve descripci\u00f3n de unos elementos de c\u00f3digo ABAP que podr\u00edan parecer un poco confuso:<\/p>\n<ul>\n<li>Class: aunque existe un ABAP objeto, una clase se refiere a un paquete, es decir un conjunto de ficheros que implementan una funcionalidad (o un proceso t\u00e9cnico). Puedes hablar de paquete o package para evitar cualquier malentendido, pero hay que saber que una clase ABAP no ser\u00e1 el equivalente de una clase Java.<\/li>\n<li>Report \/ Module pool: un programa es b\u00e1sicamente una interfaz que permite a un usuario introducir unos datos para producir un informe, o una serie m\u00e1s compleja de procesos (normalmente reutilizables) para interactuar con un usuario, llamado \u2018Module pool\u2019 o \u2018Function pool\u2019.<\/li>\n<li>Form: no es una pantalla sino un sub-programa llamado desde un PERFORM.<\/li>\n<li>Include: lo mismo que en otros lenguajes, un tratamiento que se puede llamar (para inclusi\u00f3n) desde un programa, como el Copy de Cobol.<\/li>\n<\/ul>\n<p><em>Walter: En tu equipo de calidad, \u00bftienes personas que vienen del mundo J2EE \u2013 o que no vienen del mundo SAP \u2013 y que analizan c\u00f3digo ABAP? \u00bfHa sido dif\u00edcil adaptarse a este nuevo mundo para ellos? \u00bfCu\u00e1l es el nivel de esfuerzo, es decir, se necesita mucho tiempo para adaptarse?<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>La pregunta que haces es importante, pero requiere un matiz: a la hora de analizar c\u00f3digo, hay que tener en cuenta dos tareas fundamentales, aunque no son las \u00fanicas tareas de un an\u00e1lisis (por ejemplo, ya has mencionado la actividad de extracci\u00f3n). Estas dos tareas diferenciadas son: la ejecuci\u00f3n del an\u00e1lisis y la interpretaci\u00f3n de resultados. <\/em><\/p>\n<p style=\"margin-left: 25px\"><em>La adaptaci\u00f3n necesaria de una persona que no viene del mundo ABAP para la ejecuci\u00f3n del an\u00e1lisis ABAP es sencilla; casi bastan uno o dos d\u00edas, como mucho, dependiendo si ha usado la misma herramienta con otra tecnolog\u00eda o es nueva para \u00e9l. <\/em><\/p>\n<p style=\"margin-left: 25px\"><em>Sin embargo la tarea de interpretar los resultados de los an\u00e1lisis normalmente requiere un conocimiento m\u00e1s profundo de la tecnolog\u00eda o lenguaje, en este caso ABAP, que se puede adquirir con el apoyo de un experto en una o dos semanas.<br \/>\nPor ejemplo, en qu\u00e9 circunstancias la sentencia considerada muy pr\u00e1ctica MOVE CORRESPONDING TO puede dar problemas de truncamiento de informaci\u00f3n y por tanto de fiabilidad. Necesito que alguien con buenos conocimientos ABAP, me explique eso al menos una vez y lo deje documentado, para que alguien proc\u00e9dete de otra tecnolog\u00eda, pueda interpretar un an\u00e1lisis que se\u00f1ala un imcumplimiento de una buena pr\u00e1ctica.<br \/>\n<\/em><\/p>\n<p style=\"margin-left: 25px\"><em>As\u00ed, nuestros equipos de an\u00e1lisis de c\u00f3digo est\u00e1n formados por expertos en las diferentes tecnolog\u00edas que analizamos (ABSP, Java, PL\/SQL, .Net, etc.).<br \/>\nHay otras actividades, como la creaci\u00f3n de nuevas reglas o m\u00e9tricas en una herramienta, que requieren profundo conocimiento del procedimiento de creaci\u00f3n (incorporamos personas con este perfil a nuestro equipos) y tambi\u00e9n de la tecnolog\u00eda en cuesti\u00f3n.<br \/>\n<\/em><\/p>\n<p>Gracias Walter. En los pr\u00f3ximos art\u00edculos, veremos cu\u00e1les son las preguntas que hacer para organizar las an\u00e1lisis y la extracci\u00f3n del c\u00f3digo ABAP.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Despu\u00e9s de empezar, en el post anterior, esta serie sobre an\u00e1lisis de c\u00f3digo ABAP, con la ayuda de Walter, Director de Calidad de Vision IT y especialista en entornos SAP, vamos a ver hoy lo que se necesita saber para la implantaci\u00f3n de un proceso de an\u00e1lisis de c\u00f3digo ABAP con Sonar.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-183","post","type-post","status-publish","format-standard","hentry","category-sonar-abap"],"_links":{"self":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/183"}],"collection":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/comments?post=183"}],"version-history":[{"count":1,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/183\/revisions"}],"predecessor-version":[{"id":184,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/posts\/183\/revisions\/184"}],"wp:attachment":[{"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/media?parent=183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/categories?post=183"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qualilogy.com\/es\/wp-json\/wp\/v2\/tags?post=183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}