PDA

Ver la Versión Completa : Dudas y problema


danieldl
22/03/06, 12:18:17
Estimados amigos, quien me podria explicar las diferencias entre DATA / TYPES / TYPE-POOLS.

Consulta tengo un pgm de MM donde por intermedio de un archivo plano se ingresan las altas y modificacion de materiales a los diferentes legacy de la cia. ahora bien , lo que me estan pidiendo es hacer que el mismo se ejecute en forma batch cada vez que exista el evento de alta o modificacion.
Viendo que el pgm tiene una pantalla de parametros como puedo obviar esto para que siga adelante cuando se pide de una forma o en su defecto se ejecute normalmente, todo esto sin copiar el pgm, etc, etc.

tracer
22/03/06, 13:53:15
Hola danieldl,

Te explico las diferencias entre DATA / TYPES / TYPE-POOLS.

1. Primero tenemos DATA, que sirve para declarar una variable.

Ej: DATA cont TYPE I. --> declaramos la veriable "cont" del tipo Integer

2. Podemos definirnos un tipo de variable con TYPES del estilo:

Ej: TYPES city type spfli-cityfrom. --> Definimos un tipo de variable como del tipo spfli-cityfrom

DATA wa_city TYPE city. --> Declaramos la variable wa_city del tipo city.

Es decir con TYPES definimos tipos de variables, para luego declarar variables de este tipo.

3. TYPE-POOL <pool>.


Después de esta instrucción viene un grupo de definiciones de tipos de variables de este estilo:TYPE-POOL hktst.


TYPES: BEGIN OF hktst_typ1,
col1(10) TYPE c,
col2 TYPE i,
END OF hktst_typ1.

TYPES hktst_typ2 TYPE p DECIMALS 2.

CONSTANTS hktst_eleven TYPE i VALUE 11.
Todas las definiciones de tipos de variables empiezan por el nombre del pool de tipos "hktst" seguidos de un guión bajo "_". Estas sentencias te permiten usar esos tipos de variables y constantes definidas dentro de un grupo en todo tu programa, de forma que insertando estas lines en un include, luego en tu programa principal puedes usar estas definiciones.
TYPE-POOLS hktst.


DATA: dat1 TYPE hktst_typ1,
dat2 TYPE hktst_typ2 VALUE '1.23'.

WRITE: dat2, / hktst_eleven.
La salida sería:



1,23
11

Por otra parte contestándote a tu consulta, lo primero de todo es no definirte estos parámetros como obligatorios dentro del programa ya que sino no se ejecutará al no informar estos campos.

PARAMETERS P_GJAHR LIKE BKPF-GJAHR OBLIGATORY --> Sin el OBLIGATORY

Luego por código, puedes controlar si la llamada se realizó en fondo o no con la variable de sistema SY-BATCH que tomará el valor 'X' si se ejecuta el programa en fondo.

IF SY-BATCH = 'X '.
....
ENDIF.

Espero que te sea de utilidad, si necesitas alguna aclaración coméntanos.

Un saludo :D .

danieldl
22/03/06, 20:18:20
muchisimas gracias, lo voy a probar y te comento, gracias tambien por la aclaracion.....