Ver Mensaje Individual
  #2  
Viejo 22/03/06, 12:53:15
Avatar de tracer
tracer tracer is offline
Administrator
 
Fecha de Ingreso: feb 2006
Localización: España (Madrid)
Mensajes: 503
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 .
__________________
Si precisas una mano, recuerda que yo tengo dos.
Responder Con Cita