Mostrando entradas con la etiqueta tutorial abap. Mostrar todas las entradas
Mostrando entradas con la etiqueta tutorial abap. Mostrar todas las entradas

jueves, 29 de septiembre de 2016

Pasos para hacer una búsqueda global en Webdynpro

Introducción

SAP ABAP da opción a una búsqueda global en la mayoría de sus componentes. Pero cuando llegamos a ABAP Webdynpro no hay dicha opción de búsqueda global. Entonces cuando se requiere buscar una parte de código o una variable específica el desarrollador tiene que ir manualmente por cada componente o método de la vista o ventana y buscalos. Buscar por cada uno de los componentes/vista/ventana es una tarea tediosa y un proceso que consume mucho tiempo.

Tutorial

Los pasos a seguir se detallan a continuación:
  • Ve a la transacción SE24 e introduce la clase CL_WDY_WB_NAMING_SERVICE y ejecuta. Esta es una clase estándar de SAP que se usa para para buscar la clase asociada al componente webdynpro. Ahora en la ventana del Class Builder ejecuta TEST(F8).
  • En la ventana test de la clase selecciona el botón correspondiente al método GET_CLASSNAME_FOR_COMPONENT.
     
  • En la siguiente ventana introduce el nombre de la webdynpro de la que deseas hacer la búsqueda global. La webdynpro FPM_REQUEST_DIALOG se usa como ejemplo y ejecuta.
  • El resultado de este método buscará la clase creada por SAP para el componente webdynpro (el nombre de la clase para este componente se ha generado como /1BCWDY/L2U4HZFJ4MQYUW5YG4OB).
  • Ahora usa esta clase en la SE24 y visualízala. Esta clase es un repositorio de todo el código añadido en la webdynpro. Pulsa el botón e búsqueda global.
  • Supongamos que tenemos que buscar dónde se usa el dato de la interfaz "lr_window" en la webdynpro. En la ventana de búsqueda introducimos el valor "lr_window" y ejecutamos.
  • Se muestran todas las coincidencias encontradas de "lr_window".
  • Doble click en cualquiera de las líneas donde se marca "lr_window" y nos llevará al componente/vista/método de la webydnpro donde la clave de búsqueda se usa en el código.

jueves, 25 de agosto de 2016

Cómo crear un punto de ampliación en Web Dynpro ABAP

Introducción:

En este artículo veremos paso a paso el procedimiento para crear puntos de ampliación en WD ABAP para ampliar un componente de WD estándar con código o elementos UI. Abarcaremos las siguientes cosas:

  • Crear implementación para ampliar los elementos UI estándar de WD.
  • Cómo usar la implementación  para ampliar métodos estándar en vistas/componentes. 
  • Crear vista/ventana como ampliación.
  • Borrar implementación.

Crear ampliación:

Para crear una implementación realiza los siguientes pasos:
  1. Abre el componente WD para ampliar desde la SE80.
  2. Doble click en el COMPONENTCONTROLLER.
  3. Click en el icono del menu 
  4. Pon el nombre de la ampliación en el pop-up y haz click en
  5. Guárdalo en una orden igual que en otras aplicaciones SAP.
  6. Ahora cada vez que necesites hacer cambios como ampliaciones en el componente WD. Sólo haz click en el icono del menú 
  7. Selecciona la implementación de la ampliación y haz click en el botón 


  8. Ahora se mostrará el nombre del componente seleccionado con el estatus de ampliación como en la siguiente imagen:


Ampliar Elementos UI:

La única cosa que se puede hacer en los elementos UI estándar desde el editor del layout es borrarlos como se muestra a continuación:


Después del borrado una marca  aparecerá al lado del elemento UI borrado.
Después de borrar el elemento UI, puedes crear otro elemento UI bajo la ampliación, con las mismas propiedades que el borrado, añadiendo los cambios que necesites.
Para recuperar el item borrado haz click derecho en el elemento UI en la jerarquía y haz click en "undo deletion" como se muestra a continuación:

Después de hacer estos cambios guarda la ampliación y actívala.


Ampliar métodos estándar:

Abre el componente/vista para ampliar y haz click en el botón  en el menú. Elije la implementación de la ampliación donde quieras ampliar el componente WD.
Para ampliar métodos estándar desplázate hacia la izquierda en la etiqueta de métodos a las columnas "pre-exit", "post-exit" y "overwrite-exit". Puedes escribir tu propio código para ejecutarlo antes/después de estos métodos en los métodos "pre-exit/post-exit" creados como ampliaciones.
Haz click sobre el botón "pre-exit" del método que quieras ampliar si quieres escribir el código antes que el código del método que se ejecuta o "post-exit" si quieres escribir el código después que el código del método que se ejecuta. 
En caso de que quieras borrar el método estándar completamente por tu código, haz click en el botón "overwrite-exit". Esto sobrescribirá el código en el método estándar con el nuevo método creado.
Para borrar los métodos pre-exit, post-exit y overwrite-exit haz click sobre cualquier método estándar y elije el botón de borrado pre-exit  , el botón de borrado post-exit  o el botón de borrado overwrite-exit . Estos borrarán el código ampliado.


Crear una vista/ventana como ampliación:

Para crear una vista como ampliación, click derecho en las vistas y selecciona "Crear como ampliación", y elije la ampliación sobre la que quieres ampliar el componente.
Parecido a crear una ventana como ampliación, click derecho en ventanas y selecciona "Crear como ampliación", y elike la ampliación sobre la que quieres ampliar el componente.


Borrar implementación de ampliación.

Para borrar una implementación de una ampliación localízala en el paquete.
Para hacer eso:

  1. Ve a la SE80.
  2. Selecciona el paquete donde se guarda la ampliación.
  3. Selecciona la implementación dentro de la carpeta como se muestra:

    Una vez borrada la implementación, los cambios hechos en la ampliación serán revertidos en el componente WD.

SAP Comunity Network












lunes, 18 de julio de 2016

Habilitar guardar preliminarmente en solicitudes de pedidos

Para habilitar el gaurdado preliminarmente se debe realizar los siguientes pasos:

- Ejecutar transacción SFW5:
Esta transacción activa Business function, en nuestro caso necesitaremos activar LOG_MM_CI_3, para ello marcamos el check y activamos:
Una vez activado aparecerá la bombilla encendida:


- Ejecutamos la transacción de customizing SPRO:
Gestión de materiales>Compras>Datos de entorno>Activar registro de forma preliminar y retener en documento de compras y marcamos el flag Asig. prev. y marca act.

Una vez hecho esto ya podremos guardar de manera preliminar en las transacciones de la ME51N / ME52N.

NOTA: Es posible que genere un DUMP CX_SY_CONVERSION_OVERFLOW, para ello debes aplicar la nota 1833227.

En caso de querer guardar preliminarmente mediante BAPI (BAPI_PR_CREATE) debemos usar los siguientes campos:

MEMORY = X
Os detallo una tabla con las diferencias estre HOLD / PARK / GUARDADO

Hold
Park
Save
AC Commitment
MM Errors
X


Not Updated
FM Errors
X
X

Not Updated
No Errors
X
X
X
Updated


MEMORYTYPE = H o P (dependiendo qué hemos elegido, si Hold o Park).

También debemos marcar en la estructura BAPIMEREQHEADERX los flags corresponidiente a lo que hayamos rellenado en la primera.

NOTA: Esta configuración no evita que se determine estrategia y se lance WF, para ello debemos implementar la nota 575387.

miércoles, 29 de junio de 2016

DUMP CONVT_NO_NUMBER

REPORT  zscript.
DATA: c_num TYPE char3 VALUE '1,2'.
DATA: amount TYPE ekpo-zzpre_asig,
      lv_pos TYPE i,
      lv_char TYPE char15.


END-OF-SELECTION.

* value definition is fixed at 2 decimal places
  REPLACE ALL OCCURRENCES OF '.' IN c_num WITH ' '.
  REPLACE ALL OCCURRENCES OF ',' IN c_num WITH '.'.
  CONDENSE c_num NO-GAPS.
  MOVE c_num TO amount.
  WRITE:/ amount.

miércoles, 15 de junio de 2016

Tablas de índice para evitar buscar en BSEG

Hemos visto a menudo muchos hilos abiertos sobre problemas en la tabla BSEG. Se invierte bastante tiempo en buscar datos directamente en la BSEG si no tenemos los campos clave apropiados. Aqui está la solución para eso. Dado que no es posible crear un índice secundario para tablas de clúster, SAP trajo el nuevo concepto llamado tablas ÍNDICE. 
Todos los documentos contables (abiertos y cerrados) se almacenan en la BKPF y BSEG y consultar estas tablas toma demasiado tiempo. Para ello SAP ha creado las tablas ÍNDICE para la BSEG que se actualizan con datos específicos basados en la clasificación y son más rapidos que la BSEG.
 Por ejemplo: documentos de clientes, documentos de vendedores, etc.

Tablas índices:
BSID - Contabilidad: índice secundario para Clientes (items abiertos).
BSAD - Contabilidad: índice secundario para Clientes (items borrados).
BSIK - Contabilidad: índice secundario para Vendedores (items abiertos).
BSAK - Contabilidad: índice secundario para Vendedores (items borrados).
BSIS - Contabilidad: índice secundario para Cuentas de Mayor (items abiertos).
BSAS - Contabilidad: índice secundario para Cuentas de Mayor (items borrados).

¿Cómo recordar estas tablas?
Recuerda BS*
 3ª letra indica si el item está abierto o cerrado.
I - para items abiertos.
A - para items cerrados.
4ª letra indica la clasificación.
D - Para clientes.
K - Para vendedores.
S - Para cuentas de mayor.

 Estas tablas son algunos ejemplos que se requieren sobre todo en escenarios de tiempo real. Hay unas pocas más de tablas ÍNDICE como estas.

martes, 14 de junio de 2016

Definir customizing para asignar ID de Workflow a un mandante

Cuando creas una tarea o incluso un workflow necesitas definir un ID en el mandante (si no está ya definido) para que todos los objetos comiencen con ese ID. La tabla que contiene estos datos es la T78NR. 

Para ello ejecutamos la SPRO:
Hacemos click en Nuevo he introducimos el prefijo.

Guardar y ya todos nuestros objetos de workflow se almacenarán con esta secuencia letras(WS para workflows, TS para tareas)+prefijo(991)+número. 


Desarrollar una aplicación simple usando los pasos "Decisión de usuario" y "Mail"

Terminología básica usada en workflow:

La deficinión de workflow es el conjunto de reglas que determina la ruta que sigue el proceso. Por ejemplo, cómo se procesa una solicitud de pedido, desde el principio hasta la creación del pedido. 

Una instancia de workflow, que a menudo se refiere simplemente al workflow, es una única ejecución del workflow. Por ejemplo, el procesamiento de una única solicitud de pedido para ordenadores.

Las tareas son los pasos en el proceso, que se tienen que ejecutar por alguien o automáticamente por el software. Por ejemplo, para validar la disponibilidad de repuesto de ordenadores en la compañía.

Los agentes son las personas que procesan las tareas (vía work items). Por ejemplo, el solicitante y un miembro del departamento de compras.

El container es el lugar donde se colecta todos los datos que se usan en el workflow.

El binding es el conjunto de reglas que define qué datos se pasan a qué parte del proceso.


Construir una aplicación simple de workflow

La herramienta central para la creación, visualización y procesamiento de un workflow es el workflow builder (transacción SWDD). Con el workflow builder puedes crear todos los componentes de un workflow, incluyendo todos los containers que necesites para conseguir los datos de un paso a otro. 

Generalmente, la mayoría de workflows se inician por un evento (por ejemplo, cuando se crea un material o cuando cuando llega una nueva solicitud de pedido). Defines qué datos necesitas pasar al workflow para este evento vía binding.

Sin embargo también puedes iniciar cualquier workflow directamente. Vamos a crear un workflow simple e iniciar el workflow directamente, usando las herramientas de test.

LLama a la transacción SWDD. Cuando se llama al workflow builder por primera vez, aparece una nueva creación de workflow. En cuyo caso puedes optar a crear un nuevo workflow pulsando "Crear workflow nuevo" (ctrl + shft + F5). Aparecerá la siguiente pantalla:




La pantalla inicial de workflow tiene las siguentes partes:

  • El principio de la definición del workflow, indicado por 
  • El fin de la definición del workflow, indicado por 
  • El área en la que insertas la nueva definición del workflow se indica por
Selecciona el paso indeterminado y selecciona "Crear..." o doble click en el paso indeterminado. Ahora entre los diferentes pasos elige la Decisión de Usuario haciendo doble click sobre él.
Ahora introduce el título de la decisión "Por favor toma una decisión". Introduce también los textos de decisión como Aprobar y Rechazar. Al pulsar enter, se cargan los valores por defecto de los textos pero puedes especificar tus propios nombres si quieres. Ahora necesitamos seleccionar el agente. El agente es la persona a quien se necesita mandar el work item... Dado que estamos empezando, podríamos hardcodear el nombre de usuario. Selecciona el Usuario de la lista e introduce el nombre de usuario a quien se le envía el work item. En general, este tipo de asignación de agente no se hace. Los agentes generalmente se asignan usando expresiones, reglas de asignación de agentes u objetos de organización (job, posición, etc).

Ahora selecciona  Tomar y al gráfico. Aparecerá la siguiente pantalla:



Ahora necesitamos incluir un paso de mail para enviárselo al solicitante. Ahora selecciona la linea "Aceptar" y haz click derecho. Se muestran diferentes opciones en el menú contextual. Selecciona Crear.

Ahora selecciona "Enviar correo electrónico" de la lista.
Ahora introduce el asunto y el cuerpo del mensaje del mail a enviar.

No cambies el contenido. Nuestro mail está destinado a las personas que lanzaron este workflow. &_WF_INITIATOR& contiene el valor de quien ejecutó el workflow. Dado que esto es un objeto test, estamos usando &_WF_INITIATOR&. Pero no usaríamos esta variable en escenarios reales. Hablaremos sobre esto en otros artículos.

Ahora selecciona  Tomar y al gráfico.
Aparece un popup pidiendo la abreviación y el nombre de esta tarea. Introduce lo mismo y presiona enter. (Si te da el error 5W023, lee el artículo Definir customizing para asignar ID de Workflow a un mandante).

Introduce el paquete local y pulsa enter.
Sigue los pasos del 5 hasta el 9 "Rechazar". Tendremos la siguiente imagen:
Pulsa Guardar para guardar la aplicación workflow. Necesitas introducir una abreviación y un nombre para tu workflow. Puedes cambiar cualquiera de estas cosas en cualquier punto. Después de guardar, se asigna un número empezando por WS, así:
Para ejecutar el workflow, actívalo usando el botón de activar.
Prueba el workflow pulsado verificar. Aparecerá la siguiente imagen:

Ahora elige Ejecutar para iniciar el workflow. Aparecerá la siguiente pantalla:


Elige entre aprobar, rechazar o mantener el work item en su inbox y tomar la decisión más adelante. Si eliges Aprobar o rechazar se enviará un mail al solicitante con el estatus de su solcitud.
En la transacción SBWP podremos ver los work item de nuestra bandeja:

Por Suresh Kumar Parvathaneni.
SAPTechnical

domingo, 12 de junio de 2016

Diferencia entre borrado lógico y físico de un work item en workflow SAP

Para entender de una manera simple, la principal diferencia entre el borrado lógico y físico es la misma diferencia entre las funcionalidades SUPRIMIR y SHIFT+SUPRIMIR respectivamente en el entorno de windows. 

Borrado lógico: Cuando ejecutas el borrado lógico, ´los work item se borrarán del inbox del agente pero no se borrará permanentemente del sistema.

La principal ventaja del borrado lógico es que podemos rastrear el agente (Responsable / Posible) de quien proviene  / quien ha ejecutado el borrado y podemos recuperar el work item borrado.

Después de borrar el work item lógicamente el estatus será CANCELLED.

He encontrado tres maneras posibles de borrar un work item lógicamente.

Primera manera, ejecutar la tx SWIA introduciendo el id del work item que quieres borrar.



Después de eso selecciona el work item, ir a menú TRATAR → Work Item → Borrar lógicamente. Una vez que has hecho esto verás que el estatus del workflow se modifica de STARTED a CANCELLED.


La segunda forma, ejecutar la tx SWIA y dar el ID del work item que quieras borrar.


Ahora verás el work item y su estatus como STARTED.


Selecciona el work item e introduce el comando "ADMC". Tan pronto como ejecutes el comando ADMC el estatus del work item cambiará a CANCELLED.

Podemos usar ADMC (Administrative Cancel) para borrar múltiples work items al mismo tiempo. Para eso sólo tienes que seleccionar múltiples work items y seguir el mismo procedimiento que se explica arriba.


La tercera manera es ejecutar la tx SWIA dando el id del work item.


Ahora doble click en el work item.


Después de eso Menu Pasar a → Visualización técnica del work item


Verás la pantalla de a continuación yendo al menú Tratar → Modificar.


Después ejecuta el paso borrar lógicamente.



Borrado físico: Cuando ejecutas el borrado físico, se borrarán los work items del inbox del agente pero también se borrarán permanentemente del sistema. Por lo que no podremos recuperar el work item.

Nota de aviso: ¡¡Nunca intentes ejecutar el borrado físico en el entorno de producción!!

Después de ejecutar el borrado físico del work item su estatus se establecerá en COMPLETED.

Hay múltiples reports con los que podemos hacer el borrado físico:
  • RSWWWIDE (borra el work items incluyendo adjuntos)
  • RSWWWIDE_TOPLEVEL (borra todos los work items dependientes)
  • RSWWHIDE (borra el historial del work item)
Ejecuta la tx SWWL, introduce el id del work item que quieras borrar permanentemente y marca el check box Borrar inmediatamente.


Luego se te preguntará si quieres borrar permanentemente o no, pulsa SI.


Finalmente el work item se borrará fisicamente.