quinta-feira, 27 de setembro de 2012

Colorindo campos no Relatório WRITE

*  Bom dia Abapers sedentos de conhecimento, irei passar para vocês como
* deixar o texto de exibição colorido, não é muito a cara de quem trabalha
* com SAP de deixar as coisas coloridas, os alemães são muito serios, mas
* as vezes algum cliente quer deixar alguns campinhos de cor diferente para
* enxergar melhor, bem aqui vai, ... Lembrando que esse tipo de coloração é
* para relatórios em modo Write, o que pra mim já eh meio obsoleto, pois
* hoje fazemos relatórios no formato ALV, mas muitas vezes eu precisei dar
* manutenção em relatórios Write, e conhecimento nunca é demais neh.
REPORT z_format_color_write.

TABLES :
  sflight.

DATA :
  it_sflight TYPE TABLE OF sflight,
  st_sflight TYPE sflight
  .

DATA col TYPE i VALUE 0.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS :
  s_carrid FOR sflight-carrid,
  s_connid FOR sflight-connid
  .
SELECTION-SCREEN END OF BLOCK   b1 .



START-OF-SELECTION.

  PERFORM f_selection.

 
PERFORM f_trata_dados.

*  Aqui tem o exemplo dado pela própria SAP, que abrange todos os efeitos
* e todas as cores, achei legal mostrar isso também.

 
DO 8 TIMES.
    col = sy-index - 1.
    FORMAT COLOR = col.
    WRITE: /  col              COLOR OFF,
             'INTENSIFIED ON'  INTENSIFIED ON,
             'INTENSIFIED OFF' INTENSIFIED OFF,
             'INVERSE ON'      INVERSE ON.
  ENDDO.


*&---------------------------------------------------------------------*
*&      Form  F_SELECTION
*&---------------------------------------------------------------------*
FORM f_selection .

  SELECT carrid
         connid
         fldate
         price
    FROM sflight
    INTO CORRESPONDING FIELDS OF TABLE it_sflight
    WHERE carrid IN s_carrid
      AND connid IN s_connid
    .

ENDFORM.                    " F_SELECTION

*&---------------------------------------------------------------------*
*&      Form  F_TRATA_DADOS
*&---------------------------------------------------------------------*
FORM f_trata_dados .
* Cor verde
  FORMAT COLOR = 5.

*  Verifica se a tabela está vazia e depois trabalha registro por registro,
* tratando o formato das cores conforme o valor do campo Price.
 
IF it_sflight IS NOT INITIAL.

    LOOP AT it_sflight INTO st_sflight.

      write : /, st_sflight-carrid,
                 st_sflight-connid,
                 st_sflight-fldate.

      IF st_sflight-price < 1000.
        WRITE st_sflight-price INTENSIFIED on.
      else.
        WRITE st_sflight-price INVERSE on.
      ENDIF.

    ENDLOOP.

  ENDIF.

ENDFORM.                    " F_TRATA_DADOS

4 comentários:

  1. Obrigado Mauro !!!!
    Estou começando como ABAP e o seu blog tem sido o melhor para buscar conhecimento!
    Pessoas como voce fazem a diferença ! Quando eu for um bom ABAP vou fazer o mesmo, pois sei da dificuldade de começar.

    ResponderExcluir