Está en la página 1de 4

*&---------------------------------------------------------------------*

*& Form print_cabecera_itab


*&---------------------------------------------------------------------*
* Imprime la cabecera para una tabla interna dada
* Se obtienen los elementos de datos y de ellos la denominación
* mediana y la descripción como tooltip
*----------------------------------------------------------------------*
* -->pi_wa_datos text
* -->pi_ancho ancho de la lista
*----------------------------------------------------------------------*
FORM print_cabecera_itab USING pi_wa_datos type ANY
pi_ancho type I.
FIELD-SYMBOLS <fs_campo>.

DATA: TD TYPE SYDES_DESC,


wa_NAME TYPE SYDES_NAMEINFO,
wa_TYPE TYPE SYDES_TYPEINFO,
lv_denom TYPE SCRTEXT_M,
lv_descr TYPE AS4TEXT,
lv_ancho TYPE I.

NEW-LINE.
ULINE AT (pi_ancho).
NEW-LINE.
FORMAT COLOR COL_HEADING INTENSIFIED.
DO.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE pi_wa_datos TO <fs_campo>.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
CLEAR TD.
DESCRIBE FIELD <fs_campo> INTO TD.
READ TABLE TD-NAMES
INTO wa_NAME
INDEX 2. " nombre del campo
* no se muestra el material
CHECK wa_NAME-NAME <> 'MATNR'.
READ TABLE TD-TYPES
INTO wa_TYPE
INDEX 1. " tipo del campo
if wa_TYPE-length > ct_ancho_col_min.
lv_ancho = wa_TYPE-length.
else.
lv_ancho = ct_ancho_col_min.
endif.

SELECT SINGLE SCRTEXT_M DDTEXT " scrtext_s


INTO (lv_denom,lv_descr)
FROM DD04T
WHERE ROLLNAME = wa_NAME-NAME
AND DDLANGUAGE = sy-langu.

WRITE AT: (1) sy-vline,


(lv_ancho) lv_denom
QUICKINFO lv_descr.
ENDDO.
WRITE AT: pi_ancho(1) sy-vline.
NEW-LINE.
ULINE AT (pi_ancho).
NEW-LINE.
FORMAT COLOR OFF.
ENDFORM. " print_cabecera_itab

*&---------------------------------------------------------------------*
*& Form print_registro_itab
*&---------------------------------------------------------------------*
* Imprime los valores de cada registro de la work area dada
*----------------------------------------------------------------------*
* -->pi_wa_datos text
* -->pi_ancho
*----------------------------------------------------------------------*
FORM print_registro_itab USING pi_wa_datos type ANY
pi_ancho type I
pi_it_critic type tp_it_critic
pi_vista type statm
pi_it_status type tp_it_status
pi_zebra type I.
FIELD-SYMBOLS: <fs_campo>.

DATA: TD TYPE SYDES_DESC,


wa_NAME TYPE SYDES_NAMEINFO,
wa_TYPE TYPE SYDES_TYPEINFO,
lv_ancho type I,
lv_critic value SPACE,
lv_blanco value SPACE.

DO.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE pi_wa_datos TO <fs_campo>.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.

CLEAR TD.
DESCRIBE FIELD <fs_campo> INTO TD.
READ TABLE TD-NAMES
INTO wa_NAME
INDEX 2. " nombre del campo
* no se muestra el material
CHECK wa_NAME-NAME <> 'MATNR'.
* se valida que si es un campo crítico
CLEAR: lv_critic,
lv_blanco.
PERFORM es_campo_critico USING wa_NAME-NAME
pi_wa_datos
pi_it_critic
pi_vista
CHANGING lv_critic
lv_blanco.
READ TABLE TD-TYPES
INTO wa_TYPE
INDEX 1. " tipo del campo
if wa_TYPE-length > ct_ancho_col_min.
lv_ancho = wa_TYPE-length.
else.
lv_ancho = ct_ancho_col_min.
endif.

WRITE AT (1) sy-vline.

* Se modifica el formato en función de si el campo debe aparecer


* o no resaltado
PERFORM obtener_formato USING wa_NAME-NAME " Nombre campo
<fs_campo> " Valor
pi_vista
pi_wa_datos
pi_zebra.

* Se imprime el campo en función de si es critico y si debe o no


* ser blanco
IF <fs_campo> IS INITIAL.
IF lv_critic = 'X'.
IF lv_blanco = 'X'.
* si es inicial, crítico y debe ser blanco
* pintamos un checked
WRITE AT (lv_ancho) ICON_CHECKED.
ELSE.
* si es inicial, crítico y no debe ser blanco
* pintamos un incomplete
WRITE AT (lv_ancho) ICON_INCOMPLETE.
ENDIF.
ELSE.
* Si no es crítico y es inicial escribimos en blanco
WRITE AT (lv_ancho) SPACE.
ENDIF.
ELSE.
IF lv_blanco = 'X'.
* Si no es inicial y debe ser blanco
* pintamos un incomplete
WRITE AT (lv_ancho) ICON_INCOMPLETE.
ELSE.
* Si no es inicial y no debe ser blanco
* pintamos su valor
WRITE AT (lv_ancho) <fs_campo>.
ENDIF.
ENDIF.

ENDDO.
WRITE AT: pi_ancho(1) sy-vline.

* Si la vista es de ventas, comercio ext, planificación, prep del


* trabajo o contabilidad se muestra para cada registro el responsable de
* la última modificación

CASE pi_vista.
WHEN ct_vista_ven.
DATA: lwa_datven TYPE tp_datven.
lwa_datven = pi_wa_datos.
PERFORM print_status_vista_ventas USING pi_it_status
lwa_datven-matnr
ct_vista_ven " 'V'
lwa_datven-vkorg
lwa_datven-vtweg.
WHEN ct_vista_com OR
ct_vista_pla OR
ct_vista_pre OR
ct_vista_con.

DATA: lwa_datcom TYPE tp_datcom.


lwa_datcom = pi_wa_datos.
PERFORM print_status_vista_centro USING pi_it_status
lwa_datcom-matnr
pi_vista
lwa_datcom-werks.

ENDCASE.
NEW-LINE.
ULINE AT (pi_ancho).
NEW-LINE.

FORMAT COLOR OFF.


ENDFORM. " print_registro_itab

También podría gustarte