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

ALV con cabecera/posicion.

Nota de Laura:
El modulo de función es el REUSE_ALV_HIERSEQ_LIST_DISPLAY. Programa ejemplo BALVHT01.

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