tag:blogger.com,1999:blog-31051098532933012352024-02-20T08:49:12.449+01:00Soy SAPerotinez_sghttp://www.blogger.com/profile/04987769608160798927noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-3105109853293301235.post-26710848963997318072010-12-03T15:54:00.002+01:002010-12-03T16:41:57.052+01:00Convertir a PDFPara convertir un listado a PDF en la versión 4.6 disponemos de un report standard de SAP que nos convierte cualquier orden de spool en un PDF.<br /><br />El nombre del report es RSTXPDFT4.<br /><br />Y su pantalla de selección es muy sencilla, tan sólo tenemos que poner el numero de orden de spool que hayamos generado previamente y la ruta donde queremos que se baje nuestro PDF.<br /><br />Así de sencillo, así que ya sabéis, a ahorrar papel.tinez_sghttp://www.blogger.com/profile/04987769608160798927noreply@blogger.com0tag:blogger.com,1999:blog-3105109853293301235.post-53330712351019643072007-12-30T12:07:00.001+01:002008-07-28T19:05:48.458+01:00Determinación de condicionesA veces estamos parametrizando condiciones de precios, o condiciones de salida, y necesitamos que un campo "Z" que nos hemos creado nosotros sirva como criterio para la determinación de dicha condición.<br /><br />Si vamos a la parametrización estándar de dicha condición, siempre podemos elegir entre un catálogo de campos (Field Catalog) bastante amplio, que nos da mucho juego a la hora de elegir los criterios de determinación.<br /><br />¿Y qué pasa si el campo que nosotros necesitamos no está entre los disponibles del Field Catalog?<br />Pues que nos toca añadirlo. Y como suele pasar en SAP, pues para algunas condiciones si está el punto de parametrización que te permite hacerlo (en SD algunas), pero para otras no (por ejemplo output determination de MM).<br /><br />Solución, meter el campo a las bravas. Para ello tenemos que ir a la vista de actualización (SM30) de la tabla V_T681F. Y allí introducir el nuevo campo que nos hace falta. Grabas y ya lo tendrás disponible en el field catalog de la parametrización estándar.tinez_sghttp://www.blogger.com/profile/04987769608160798927noreply@blogger.com0tag:blogger.com,1999:blog-3105109853293301235.post-33520697713319064722007-12-30T12:01:00.000+01:002007-12-30T12:07:07.857+01:00Ordenes de transporte con datos de una tablaMuchas veces nos vemos en el aprieto de que unos datos de una tabla han ido a productivo y no se sabe muy bien que orden de transporte ha sido la causante del pequeño desastre.<br /><br />Pues hay una salida, hay que buscar la orden en la que han ido esos datos en SAP de la siguiente manera:<br /><br />Hacer una búsqueda de las ordenes que tengan el objeto <span style="font-family: courier new;">R3TR TABU</span> con el nombre de la tabla que estemos buscando.<br />Con el listado de ordenes que nos salgan nos vamos a la transacción <span style="font-family: courier new;">SE16</span> y buscamos en la tabla <span style="font-family: courier new;">E071K</span> con los siguientes criterios:<br /><ul><li>Request/task (<span style="font-family: courier new;">E071K-TRKORR</span>): El listado del paso anterior</li><li>Program ID (<span style="font-family: courier new;">E071K-PGMID</span>): <span style="font-family: courier new;">R3TR</span></li><li>Object type (<span style="font-family: courier new;">E071K-OBJECT</span>): <span style="font-family: courier new;">TABU</span></li><li>Table name (<span style="font-family: courier new;">E071K-OBJNAME)</span>: Nombre de la tabla</li><li>Object name (<span style="font-family: courier new;">E071K-TABKEY</span>): la clave de los datos que buscamos</li></ul>tinez_sghttp://www.blogger.com/profile/04987769608160798927noreply@blogger.com0tag:blogger.com,1999:blog-3105109853293301235.post-79768180210763024032007-10-09T16:02:00.000+01:002007-10-09T16:08:15.891+01:00F1 en un campo<span style="font-family: arial;">En SAP cuando pulsas F1 sobre alguno de los campos de una pantalla, por ejemplo numero de pedido en la transacción VA03, aparece una ventana emergente con información sobre ese campo.<br /><br />Dicha ayuda es una especie de Sapscript, que se puede definir también para los campos no estándar que se creen, para así aportar información al usuario cuando utilice dichos campos tal y como hace SAP estándar.<br /><br />Ahora, la pregunta es: ¿donde se almacena dicha información?<br />Pues ha habido suerte, dicha información se almacena en la tabla DOKTL. Una tabla transparente que contiene el contenido de esas ventanas de ayuda, línea a línea.<br /><br />Gracias a Alfonso por despertar esta duda y por auto responderse.<br /></span>tinez_sghttp://www.blogger.com/profile/04987769608160798927noreply@blogger.com1tag:blogger.com,1999:blog-3105109853293301235.post-89211626431903391552007-02-19T12:30:00.000+01:002007-02-19T12:36:53.510+01:00Función llamada en UPDATE TASKMuchas veces tenemos que comprobar en nuestro código ABAP, si nuestro programa se está ejecutando en fondo. Para ello nos valemos de la variable de sistema sy<span style="font-family:Courier New;">-</span>batch, y de este modo evitamos lanzar cuadros de diálogo cuando un programa se esta ejecutando en fondo, ya que esto provocaría la terminación inmediata de dicho programa con un DUMP breve.<br /><br />Esto es bien sabido por todos los programadores y raro es el programa que te encuentras que no controle este error; pero muy distinto es el caso de los módulos de funciones que son ejecutados en "UPDATE<span style="font-family:Courier New;"> </span>TASK", es decir, en proceso de actualización.<br /><br />Cuando se hace una llamada a un módulo de funciones de la siguiente manera:<br /><br /><div style="margin-left: 40px;"><span style="font-family:Courier New;">CALL FUNCTION funcion IN UPDATE TASK<br /><br /></span></div><span style="font-family:Verdana;">Este módulo de funciones se ejecutará cuando el programa en cuestión este actualizando, básicamente cuando se haga un COMMIT.<br /><br /><br />En estos casos tampoco está permitido hacer llamadas a cuadros de diálogo, ni llamadas a otras transacciones mediante CALL<span style="font-family:Courier New;"> </span>TRANSACTION. En caso de que dentro de una de estás funciones se haga una llamada de este tipo, el programa terminará de manera inmediata con un DUMP breve.<br /><br />Para controlar si estamos dentro de una función que haya sido llamada en <span style="font-family:Courier New;">UPDATE TASK</span>, deberemos añadir un control mediante cualquiera de las dos siguientes fórmulas:<br /><br /></span><ol><li>Comprobando que <span style="font-family:Courier New;">SY-ONCOM <> 'V'</span>.</li><li>Con la función <span style="font-family:Courier New;">TH_IN_UPDATE_TASK</span>.</li></ol><br />Por lo tanto y como norma general cada vez que creemos un módulo de funciones que vaya a ser llamado en UPDATE<span style="font-family:Courier New;"> </span>TASK, además de marcarlo como tal en los atributos de dicho módulo de funciones, deberemos comprobar cada vez que vayamos a mostrar un cuadro de diálogo, o un CALL TRANSACTION, que no se haya llamado a dicho módulo de funciones en UPDATE<span style="font-family:Courier New;"> </span>TASK. Así siempre tendremos aislados este tipo de errores.<br /><br /><span style="font-family:Verdana;"></span><span style="font-family:Courier New;"></span>tinez_sghttp://www.blogger.com/profile/04987769608160798927noreply@blogger.com0tag:blogger.com,1999:blog-3105109853293301235.post-57014402114153353642007-02-12T11:28:00.000+01:002007-02-12T12:00:20.927+01:00Fecha de vencimiento / Due date<span style="font-family:arial;">Cuando quieras calcular la fecha de vencimiento igual que hace la FBL5N hay que utilizar la siguiente función:<br /><br /><pre>call function 'DETERMINE_DUE_DATE'<br /> EXPORTING<br /> i_faede =<br /> i_gl_faede = 'X'<br /> IMPORTING<br /> e_faede =<br />EXCEPTIONS<br /> others = 1</pre><span style="font-family:arial;"><br />La determinación de la fecha de vencimiento se basa en los campos SHKZG (Indicador debe/haber), KOART (Clase de cuenta) y ZFBDT(Fecha base para cálculo del vencimiento).</span><br /></span>tinez_sghttp://www.blogger.com/profile/04987769608160798927noreply@blogger.com0