jueves, 15 de septiembre de 2011

Primer Progama con Tablas

Aqui les dejo este programa basico para el manejo de tablas internas
No utiliza Field Symbol, es solo para mostrar el tema genericamente.

report  zgl01_helloworld.
* DECLARACION DE TIPOS
types :  begin of ty_tabla,
            matnr type matnr,
            maktx type maktx,
            werks type werks_d,
            name1 type name1,
            pstat type pstat_d,
         end of ty_tabla.
*DELCARACION DE VARIABLES PARA SELECCION DE DATOS
data :  material    type  matnr ,
        centro      type  werks_d .
*DECLARACION DE TABLAS INTERNAS
data :  it_marc    type standard table of marc ,
        it_makt    type standard table of makt ,
        it_001w    type standard table of t001w ,
        it_tabla   type ty_tabla occurs 0 .
*DECLARACION DE AREAS DE TRABAJO
data:   wa_marc   like line of it_marc ,
        wa_makt   like line of it_makt ,
        wa_001w   like line of it_001w ,
        wa_tabla  like line of it_tabla .

***********************************************************************

selection-screen begin of block pantalla   with frame title text-t01.

parameters : dato1 type pstat_d.

select-options : s_mater  for  material ,
                 s_centro    for  centro .

selection-screen end of block pantalla.


start-of-selection.

*
*  WRITE : / 'Hola Mundo' ,              " comentarios
*          'Hola Mundo' .
*
*  WRITE   :   / 'Mi datos ' ,
*              / dato1 .

  select * from marc
    into table it_marc
    where matnr in s_mater
      and werks in s_centro .

  if sy-subrc eq 0 .

    select * from makt
      into table it_makt
      for all entries in it_marc
        where matnr = it_marc-matnr
          and spras = sy-langu .


    select * from t001w
      into table it_001w
      for all entries in it_marc
        where werks eq it_marc-werks.


  endif.

  write : /,  /  'MATERIAL' , 'CENTRO''ESTATUS ACTUAL' .

  loop at  it_marc into wa_marc .

    read table it_makt into wa_makt
    with key  matnr = wa_marc-matnr.

    read table it_001w into wa_001w
    with key  werks = wa_marc-werks .

    if  wa_marc-pstat eq dato1
     or dato1 is initial .

    move :  wa_marc-matnr  to wa_tabla-matnr,
            wa_makt-maktx  to wa_tabla-maktx,
            wa_marc-werks  to wa_tabla-werks,
            wa_001w-name1  to wa_tabla-name1,
            wa_marc-pstat  to wa_tabla-pstat .



            append wa_tabla to it_tabla .
    else.

    endif.
endloop .

sort it_tabla by werks matnr descending .

loop at it_tabla into wa_tabla .
    write:  /
            wa_tabla-matnr ,
            wa_tabla-maktx ,
            wa_tabla-werks ,
            wa_tabla-name1 ,
            wa_tabla-pstat .
  endloop.




No hay comentarios:

Publicar un comentario