• Domingo 28 de Abril de 2024, 18:09

Autor Tema:  Otro Ejemplo  (Leído 3701 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Otro Ejemplo
« en: Sábado 22 de Enero de 2005, 16:18 »
0
Aqui hay otro ejemplo.
Blag lo explicas por favor

Código: Text
  1. REPORT ZZBGS008 .
  2. *-----------------------------------------------------------------------*
  3. * Example program: Use of FIELD-GROUPS, COLLECT, SORT, EXTRACT          *
  4. *-----------------------------------------------------------------------*
  5. TABLES: T001.
  6.  
  7. DATA: BEGIN OF RESULT OCCURS 100.
  8. DATA:   MANDT LIKE T001-MANDT,
  9.         BUKRS LIKE T001-BUKRS,
  10.         BUTXT LIKE T001-BUTXT,
  11.         ORT01 LIKE T001-ORT01,
  12.         LAND1 LIKE T001-LAND1,
  13.         WAERS LIKE T001-WAERS,
  14.         SPRAS LIKE T001-SPRAS,
  15.         KTOPL LIKE T001-KTOPL. "Bemærk at da dette felt ikke er med i
  16.                                "insert vil feltet være tomt.
  17. DATA: END OF RESULT.
  18.  
  19. FIELD-GROUPS: HEADER, DATA.
  20.   INSERT
  21.     T001-SPRAS                         " SPROGNØGLE
  22.     T001-MANDT                         " KLIENT
  23.     T001-BUKRS                         " FIRMAKODE
  24.   INTO HEADER.
  25.  
  26.   INSERT
  27.     T001-BUTXT                         "
  28.     T001-ORT01                         " BY
  29.     T001-LAND1                         " LANDENØGLE
  30.     T001-WAERS                         " VALUTANØGLE
  31.   INTO DATA.
  32.  
  33. START-OF-SELECTION.
  34.  
  35.   REFRESH RESULT.
  36.   SELECT * FROM T001.
  37.     EXTRACT DATA.
  38.   ENDSELECT.
  39.  
  40. END-OF-SELECTION.
  41.  
  42. * Når der sorteres uden angivelse af tabelnavn, bliver der automatisk
  43. * sorteret på field-groups Header. Husk at skrive en kommentar hvis du
  44. * anvender sort uden angivelse af tabelnavn.
  45.  
  46. * bemærk at der sorteres på alle ikke nummeriske felter
  47.   SORT BY T001-SPRAS T001-MANDT T001-BUKRS.
  48.  
  49. * Når der loopes uden angivelse af tabelnavn, bliver der automatisk
  50. * loopet på field-group header + data. Husk at skrive en kommentar hvis
  51. * du ikke looper uden at angive tabelnavn.
  52.   LOOP.
  53.     MOVE-CORRESPONDING T001 TO RESULT.
  54.     APPEND RESULT.
  55.   ENDLOOP.
  56.  
  57.  
  58.  

Y mas ejemplos aca y aca pero se tienen que registrar
Ojala les guste.
Chao
El pasado son solo recuerdos, el futuro son solo sueños

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Otro Ejemplo
« Respuesta #1 en: Martes 25 de Enero de 2005, 04:18 »
0
Bueno.....en realidad, nunca he tenido que utilizar ni FIELD-GROUPS, ni tampoco EXTRACT.....Y la verdad es que no les veo mucho uso.....Pero todo sea por el foro  :smartass:

Citar
REPORT ZZBGS008 . "--> Nombre del Reporte o Programa
*-----------------------------------------------------------------------------------------*
* Example program: Use of FIELD-GROUPS, COLLECT, SORT, EXTRACT          *
*-----------------------------------------------------------------------------------------*
TABLES: T001. "--> Tabla que vamos a utilizar (T001 - Sociedades)

"-->Creamos una tabla interna llamada Resultados, y que puede almacenar hasta
"-->100 Registros....
DATA: BEGIN OF RESULT OCCURS 100. 
DATA:   MANDT LIKE T001-MANDT,   "Mandate o Entorno de SAP
            BUKRS LIKE T001-BUKRS,    "Sociedad
            BUTXT LIKE T001-BUTXT,     "Dirección
            ORT01 LIKE T001-ORT01,     "Distrito
            LAND1 LIKE T001-LAND1,     "Ciudad
            WAERS LIKE T001-WAERS,   "Moneda
            SPRAS LIKE T001-SPRAS,    "Idioma 
            KTOPL LIKE T001-KTOPL.      "No me acuerdo -:(
DATA: END OF RESULT.

"-->Creamos 2 field groups, que son como tipos o estructuras, y que almacenan
"-->varios valores dentro de un solo nombre.
FIELD-GROUPS: HEADER, DATA.
"--> Con el insert, agregamos campos a nuestro field group o estructura
 INSERT
   T001-SPRAS                         "Idioma
   T001-MANDT                         "Mandante
   T001-BUKRS                         "Sociedad
 INTO HEADER.

 INSERT
   T001-BUTXT                         "Dirección
   T001-ORT01                         "Distrito
   T001-LAND1                         "Ciudad
   T001-WAERS                        "Moneda
 INTO DATA.

START-OF-SELECTION. "-->Indica que vamos a comenzar el programa

 REFRESH RESULT. "--> Limpia el contenido de la tabla interna

 SELECT * FROM T001. "Seleccionamos todos los datos de la tabla T001
-->Cuando ejecutamos el EXTRACT por primera vez, tomamos solamente
-->el primer registro y lo guardamos dentro de nuestro field group
   EXTRACT DATA.
 ENDSELECT.

END-OF-SELECTION. "-->Indica que el programa ha terminado, pero aún podemos
"-->seguir programando -:D

"-->Ordenamos los datos de la tabla T0001 primero por Idioma, luego por mandante
"-->y finalmenete por sociedad
 SORT BY T001-SPRAS T001-MANDT T001-BUKRS.

"-->Hacemos un loop...que viene a ser lo mismo que un while....
 LOOP.
"--> El move-corresponding moverá todos los datos de la tabla T001 a nuestra
"-->tabla interna Result, siempre y cuando los nombres de ambas tablas sean
"-->los mismos....
   MOVE-CORRESPONDING T001 TO RESULT.
"-->Agrega los datos al final del último registro de la tabla interna
   APPEND RESULT.
 ENDLOOP.

Saludos,

Blag  :smartass: