viernes, 7 de septiembre de 2012

Error en Smartform por no existir imagen de la SE78.


Problema: tengo un smartform y en ella una imagen. La imagen las subo con la SE78, son BMAP, BCOL. El problema lo tengo en que el nombre es dinámico w_milogo y si no hemos subido la imagen con la SE78 el formulario no sale y da error. ¿Cómo evitarlo?
Buscando por internet he visto que la tabla donde se guardan los atributos  básicos de la imagen es en stxbitmaps, por lo tanto es tan sencillo como ver si existe el valor en esta tabla.

SELECT SINGLE tdname FROM  stxbitmaps
  INTO (w_milogo)
       WHERE  tdobject  = 'GRAPHICS'
       AND    tdname    = w_milogo
       AND    tdid      = 'BMAP'
       AND    tdbtype   = 'BCOL'.
*
IF sy-subrc IS NOT INITIAL.
  CLEAR w_milogo.
ENDIF.
Finalmente  en las condiciones de la imagen del Smartform ponemos que w_milogo no es igual a INITIAL, y evitamos el error.

jueves, 26 de julio de 2012

Transacción COR6N en Batch Input (BDC) no para en error.

Situación:

Cambio de versión, de la 500 a la 605.

Problema:

Teníamos un programa Z que realizaba una serie de impresiones y finalmente llamaba con un
    CALL TRANSACTION ‘COR6N’    USING bdcdata
                     
MODE     ‘E’
                     
MESSAGES INTO errortab
                     
UPDATE   ‘S’.
En el caso de existir un error la COR6N se para tanto en la versión 5 como en la 6:
[01]
Pero en la versión 6 al ejecutar por Batch Input en el programa Z en modo prueba de errores no se quedaba parado en la pantalla que lista los errores y nos permite solventarlos.
No sólo eso si no que nos insertaba valores que podíamos ver en la COGI.  Después de buscar notas oss, que se aplicaban para este tipo de errores pero que no eran necesarias porque ya son recogidas por la versión estábamos algo desesperados, porque el problema no tenia sentido.
Finalmente gracias a la sugerencia de JM Renedo, hemos jugado con las opciones del call transaction aunque no habíamos cambiado nada, la solución:

DATA: w_ctu_params LIKE ctu_params.
    w_ctu_params-updmode = 'S'.     w_ctu_params-dismode = 'E'.     w_ctu_params-nobinpt = 'X'.
CALL TRANSACTION tcode    USING bdcdata OPTIONS FROM _ctu_paramsMESSAGES INTO errortab.
De esta forma si que se nos para en el error y permite al usuario solventarlo. Es como si le dijésemos que no es batch input.

viernes, 29 de junio de 2012

Repetir etiquetas o impresión en un Smartform.


En un par de clientes he tenido que imprimir etiquetas y que se repitiesen varias. Si uso el campo para copias del smartform lo envía varias veces y si estamos usando la impresora de Windows es un rollo porque le pedirá varias veces la confirmación al usuario, tantas veces como copias.
Al final lo he resuelto con un loop dentro de la ventana main, con una estructura con el tamaño de la etiqueta. Para hacer el loop me he creado una tabla por que no he sabido hacer un loop sin tabla, igual otro me dice como hacerlo, pero yo lo he resuelto así:

1     Atributos formulario.

En salida ponemos DINA3 aunque usemos etiquetas más pequeñas, parece que si no hace el salto de página y va rescribiendo encima.

2     Interfase formulario.

COPIAS                  TYPE   TDSFCOPIES, con valor propuesta 1.

3     Definiciones Globales.

3.1   Tipos


TYPES: BEGIN OF ty_copia,
       num TYPE tdsfcopies,
END OF ty_copia.

TYPES: ty_tabla_copia TYPE TABLE OF ty_copia.

3.2   Datos Glob.

WA_T_BULTOS         TYPE   TY_BULTO

3.3   Rutinas Form.

FORM copias_t_set TABLES pt_copias TYPE ty_tabla_copia
                  USING p_copias TYPE ty_copia-num.

  DATA: w_contador TYPE ty_copia-num,
      wa_copias LIKE LINE OF pt_copias.

  WHILE w_contador < p_copias.
    w_contador = w_contador + 1.
    wa_copias-num = w_contador.
    APPEND wa_copias TO pt_copias.
  ENDWHILE.
*BREAK-POINT.
ENDFORM.

3.4   Inicialización.

* Tabla copias.
perform copias_t_set
                  tables g_t_copias
                     using copias.

4     Páginas y ventanas.

Definimos la ventana, y dentro hacemos el loop a la tabla g_t_copias. Dentro definimos la estructura de la etiqueta. 

jueves, 28 de junio de 2012

martes, 5 de junio de 2012

Textos en IDOC ORDER de entrada. E1EDKT1 y E1EDPT1.

Otra vez gracias a Laura. Debía decirle a la empresa que nos envían los IDOC's de ORDERS como nos deben llenar el segmento de textos. Entramos con la VA03 en un pedido. Para cabecera vamos a los textos y hacemos clic sobre el pergamino:

Aquí tenemos la información que tiene que estar en el segmento de cabecera:

Cabecera:
                E1EDKT1
TDID                      0001. Es Cl.txt.
TSSPRAS_ISO      ES.Es el idioma en el que queremos se guarde. Español.
TDOBJECT           VBBK. Es Objeto.
El resto de campos vacíos. Hay otro campo de idioma, pero es mejor dejarlo vacío, SAP ya realizará la conversión.

Análogamente para posición, iríamos al texto de posición. Sólo que no hay objeto.

Posición:
                E1EDPT1
TDID                      0001
TSSPRAS_ISO      ES
El otro campo vacío

viernes, 25 de mayo de 2012

Fichero inicio del SAP GUI 7.20: ini file.

En la versión del SAP GUI 7.20 el fichero de inicio con las rutas de las conexiones y otras opciones de configuración para el SAP Logon está en
C:\Documents and Settings\<USUARIO_WINDOWS>\Datos de programa\SAP\Common el fichero es saplogon.ini.

jueves, 24 de mayo de 2012

Mensaje de error 0034: Se ha presentado el error de tiempo de ejcución MESSAGE_TYPE_X

Después de una copia de la base de datos de productivo a test he ejecutado la entrada de IDOCs de pedido ORDERS, con el siguiente error:

Se ha presentado el error de tiempo de ejcución MESSAGE_TYPE_X .    Nº mensaje: 00341Diagnóstico    Textos de errores para batch input
    Este texto no será visualizado.
    Sólo reserva-espacio
Actividades en el sistema    ninguna
Procedimiento    ninguno

Solución.

Después de algunas vueltas por google e internet y mirar las notas 734364 y 984177, que no he aplicado. He hablado otra vez con Laura, hemos mirado la ST22. Había un problema con la sociedad PA que nuestras consultoras Lidia y Carol lo han solucionado, ya que faltaba regenerar algunos datos de esta sociedad.