Etiquetas

20111212

ABAP: Capturar resultado de pantalla en tabla interna

Permite ejecutar un programa determinado mediante SUBMIT y capturar el resultado de la salida en una tabla interna, para procesar los resultados.
**********************************************************************
* DECLARACIONES DE DATOS
**********************************************************************
TYPES:
      BEGIN OF typ_vlist, "datos relevantes del listado
                          "en pantalla (posicion relativa)
         t_saknr(8),
         spc0(2),
         t_txt20(33),       "Texto de cuenta
         spc1(1),
         t_debito(20),      "Debitos
         spc2(1),
         t_credit(20) ,      "Creditos
         spc3(6),
         t_sa_deu(20) ,      "Saldo deudor
         spc4(2),
         t_sa_cre(20) ,      "Saldo acreedor
         spc5(2),
         t_bg_deb(20) ,      "Balance general DEBE
         spc6(2),
         t_bg_cre(20) ,      "Balance general HABER
         spc7(2),
         t_er_deb(20) ,      "Estado resultado
         spc8(2),
         t_er_cre(20) ,      "Estado resultado
      END OF typ_vlist.
DATA:
      itab_list TYPE TABLE OF abaplist WITH HEADER LINE,
      vlist TYPE TABLE OF typ_vlist WITH HEADER LINE,   

**********************************************************************
* START-OF-SELECTION
**********************************************************************
    PERFORM balance_8_columnas.     "Ejecutar reporte destino
    PERFORM captura_datos_pantalla.     "Capturar los resultados
    PERFORM procesa_datos.  "Procesar la información de pantalla

*&---------------------------------------------------------------------*
*&      Form  balance_8_columnas
*&---------------------------------------------------------------------*
FORM balance_8_columnas.

  SUBMIT (g_report)
    USING SELECTION-SET variante  "variante de ejemplo
    EXPORTING LIST TO MEMORY
    AND RETURN.

ENDFORM.                    "balance_8_columnas


*&---------------------------------------------------------------------*
*&      Form  CAPTURA_DATOS_PANTALLA
*&---------------------------------------------------------------------*
FORM captura_datos_pantalla .

  CALL FUNCTION 'LIST_FROM_MEMORY'
    TABLES
      listobject = itab_list
    EXCEPTIONS
      not_found  = 1
      OTHERS     = 2.

  g_subrc = sy-subrc.

  IF g_subrc <> 0.
    MESSAGE text-e01 TYPE 'E'.
    EXIT.
  ENDIF.


  CALL FUNCTION 'LIST_TO_ASCI'
    EXPORTING
      list_index         = -1
    TABLES
      listasci           = vlist
      listobject         = itab_list
    EXCEPTIONS
      empty_list         = 1
      list_index_invalid = 2
      OTHERS             = 3.

ENDFORM.                    " CAPTURA_DATOS_PANTALLA

*&---------------------------------------------------------------------*
*&      Form  PROCESA_DATOS
*&---------------------------------------------------------------------*
FORM procesa_datos .

  REFRESH t_salida.

  LOOP AT vlist FROM g_start.
    IF NOT vlist-t_saknr CO '1234567890'.
      CONTINUE.
    ENDIF.

*... procesar datos de vlist sobre tabla salida ...

ENDFORM.                    " PROCESA_DATOS

No hay comentarios:

Publicar un comentario