PDA

Ver la Versión Completa : Alv...inspeccion De Materiales


marilinmendoza
03/06/08, 19:36:30
Hola a todos.
Tengo el siguiente codigo ( esta completo para el que quiera copiar y
pegar para probarlo)

TABLES: mapl,
makt,
plmk,
qpac,
qpcd.

TYPES: BEGIN OF ti_datos,

matnr LIKE mapl-matnr,
maktx LIKE makt-maktx,
plnty LIKE mapl-plnty,
plnnr LIKE mapl-plnnr,
code LIKE qpac-code,
codegruppe LIKE qpac-codegruppe,
verwmerkm LIKE plmk-verwmerkm,
kurztext LIKE plmk-kurztext,
toleranzob LIKE plmk-pruefeinh,
toleranzun LIKE plmk-pruefeinh,
sollwert LIKE plmk-pruefeinh,
toleranzob_text LIKE plmk-kurztext,
toleranzun_text LIKE plmk-kurztext,
sollwert_text LIKE plmk-kurztext,
katab1 LIKE plmk-katab1,

END OF ti_datos.

DATA : datos TYPE TABLE OF ti_datos WITH HEADER LINE.
DATA : code LIKE qpac-code,
kurztext LIKE plmk-kurztext.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_mate FOR mapl-matnr OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.

TYPE-POOLS: slis.

DATA: w_layout TYPE slis_layout_ alv.

DATA: i_fieldcat TYPE slis_t_fieldcat_ alv,
w_fieldcat TYPE slis_fieldcat_ alv.

DATA: i_sort TYPE TABLE OF slis_sortinfo_ alv,
w_sort TYPE slis_sortinfo_ alv.

DATA: i_events TYPE slis_t_event,
w_events TYPE slis_alv_event.

DATA: report LIKE sy-repid.

DATA: i_list_comments TYPE slis_t_listheader,
w_list_comments LIKE LINE OF i_list_comments.

DATA: w_disvariant TYPE disvariant,
w_es_variant LIKE disvariant,
w_variant_exit( 1) TYPE c.
INITIALIZATION.
report = sy-repid.

START-OF-SELECTION.

PERFORM cargar_datos .

END-OF-SELECTION.

PERFORM do_alv.

*&---------- --------- --------- --------- --------- --------- ---
-*
*& FORM cargar_datos
*&---------- --------- --------- --------- --------- --------- ---
-*
* text
*----------- --------- --------- --------- --------- --------- --
-*
* --> p1 text
* <-- p2 text
*----------- --------- --------- --------- --------- --------- --
-*
FORM cargar_datos.

SELECT matnr plnty plnnr
FROM mapl
INTO CORRESPONDING FIELDS OF TABLE datos
WHERE matnr IN s_mate AND
plnal EQ '01' AND
loekz NE 'X'.

IF sy-subrc = 0.

LOOP AT datos.

SELECT SINGLE matnr maktx
FROM makt
INTO CORRESPONDING FIELDS OF datos
WHERE matnr EQ datos-matnr AND
spras EQ 'S'.

SELECT SINGLE codegruppe code
FROM qpac
INTO (datos-codegruppe, datos-code)
WHERE bewertung = 'A'.

SELECT SINGLE verwmerkm kurztext toleranzob toleranzun sollwert
katab1
FROM plmk
INTO CORRESPONDING FIELDS OF datos
WHERE plnnr = datos-plnnr AND
plnty = datos-plnty AND
loekz NE 'X'.

MOVE datos-toleranzob TO datos-toleranzob_ text.
MOVE datos-toleranzun TO datos-toleranzun_ text.
MOVE datos-sollwert TO datos-sollwert_ text.

MODIFY datos.

ENDLOOP.

LOOP AT datos.

IF datos-katab1 EQ 'X'.

datos-toleranzob_ text = '---'.
datos-toleranzun_ text = '---'.

SELECT SINGLE code FROM qpac INTO code
WHERE codegruppe EQ datos-verwmerkm AND
bewertung EQ 'A'.

SELECT SINGLE kurztext FROM qpct INTO kurztext
WHERE code EQ code AND
codegruppe EQ datos-verwmerkm.
datos-sollwert_ text = kurztext.

MODIFY datos.

ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. " cargar_datos

*&---------- --------- --------- --------- --------- --------- ---
-*
*& Form do_alv
*&---------- --------- --------- --------- --------- --------- ---
-*
* text
*----------- --------- --------- --------- --------- --------- --
-*
* --> p1 text
* <-- p2 text
*----------- --------- --------- --------- --------- --------- --
-*
FORM do_alv .
PERFORM do_layout.
PERFORM do_fieldcat.
PERFORM do_events.
* PERFORM do_sort.
PERFORM call_alv.
ENDFORM. " do_alv

*&---------- --------- --------- --------- --------- --------- ---
-*
*& Form do_layout
*&---------- --------- --------- --------- --------- --------- ---
-*
* text
*----------- --------- --------- --------- --------- --------- --
-*
* --> p1 text
* <-- p2 text
*----------- --------- --------- --------- --------- --------- --
-*
FORM do_layout .
CLEAR w_layout.
w_layout-zebra = 'X'. "striped pattern
w_layout-colwidth_ optimize = 'X'.
ENDFORM. " do_layout

*&---------- --------- --------- --------- --------- --------- ---
-*
*& Form do_fieldcat
*&---------- --------- --------- --------- --------- --------- ---
-*
* text
*----------- --------- --------- --------- --------- --------- --
-*
* --> p1 text
* <-- p2 text
*----------- --------- --------- --------- --------- --------- --
-*
FORM do_fieldcat .

REFRESH: i_fieldcat.
CLEAR w_fieldcat.

CLEAR w_fieldcat.
w_fieldcat-fieldnam e = 'MATNR'.
w_fieldcat-tabname = 'DATOS'.
w_fieldcat-seltext_ l = 'Material'.
w_fieldcat-outputle n = '12'.
w_fieldcat-no_ zero = 'X'.
APPEND w_fieldcat TO i_fieldcat.

CLEAR w_fieldcat.
w_fieldcat-fieldnam e = 'MAKTX'.
w_fieldcat-tabname = 'DATOS'.
w_fieldcat-seltext_ l = 'Descripción' .
w_fieldcat-outputle n = '50'.
APPEND w_fieldcat TO i_fieldcat.

CLEAR w_fieldcat.
w_fieldcat-fieldnam e = 'VERWMERKM'.
w_fieldcat-tabname = 'DATOS'.
w_fieldcat-seltext_ l = 'Características de Inspección'.
w_fieldcat-outputle n = '12'.
APPEND w_fieldcat TO i_fieldcat.

CLEAR w_fieldcat.
w_fieldcat-fieldnam e = 'KURZTEXT'.
w_fieldcat-tabname = 'DATOS'.
w_fieldcat-seltext_ l = 'Texto Breve de Características' .
w_fieldcat-outputle n = '50'.
APPEND w_fieldcat TO i_fieldcat.

CLEAR w_fieldcat.
w_fieldcat-fieldnam e = 'TOLERANZOB_ TEXT'.
w_fieldcat-tabname = 'DATOS'.
w_fieldcat-seltext_ l = 'Límite Superior'.
w_fieldcat-outputle n = '6'.
w_fieldcat-decimals _out = '2'.
APPEND w_fieldcat TO i_fieldcat.

CLEAR w_fieldcat.
w_fieldcat-fieldnam e = 'TOLERANZUN_ TEXT'.
w_fieldcat-tabname = 'DATOS'.
w_fieldcat-seltext_ l = 'Límite Inferior'.
w_fieldcat-outputle n = '6'.
w_fieldcat-decimals _out = '2'.
APPEND w_fieldcat TO i_fieldcat.

CLEAR w_fieldcat.
w_fieldcat-fieldnam e = 'SOLLWERT_TEXT' .
w_fieldcat-tabname = 'DATOS'.
w_fieldcat-seltext_ l = 'Valor Teórico'.
w_fieldcat-outputle n = '12'.
w_fieldcat-decimals _out = '2'.
APPEND w_fieldcat TO i_fieldcat.

ENDFORM. " do_fieldcat

*&---------- --------- --------- --------- --------- --------- ---
-*
*& Form do_events
*&---------- --------- --------- --------- --------- --------- ---
-*
* text
*----------- --------- --------- --------- --------- --------- --
-*
* --> p1 text
* <-- p2 text
*----------- --------- --------- --------- --------- --------- --
-*
FORM do_events .
REFRESH i_events.

CALL FUNCTION 'REUSE_ALV_EVENTS_ GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = i_events
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.

CLEAR w_events.
READ TABLE i_events INTO w_events WITH KEY name =
slis_ev_top_ of_page.

IF sy-subrc = 0.
MOVE 'MI_TOP_OF_PAGE' TO w_events-form.
MODIFY i_events FROM w_events INDEX sy-tabix.
ENDIF.

ENDFORM. "do_events*

*&---------- --------- --------- --------- --------- --------- ---
-
*
*& Form do_sort
*&---------- --------- --------- --------- --------- --------- ---
-
*
* text
*----------- --------- --------- --------- --------- --------- --
-
*
* --> p1 text
* <-- p2 text
*----------- --------- --------- --------- --------- --------- --
-
*
FORM do_sort .
CLEAR w_sort.
REFRESH i_sort.

w_sort-spos = '1'.
w_sort-fieldname = 'MATNR'.
w_sort-tabname = 'DATOS'.
w_sort-up = 'X'.
w_sort-subtot = 'X'.

APPEND w_sort TO i_sort.

ENDFORM. " do_sort

*&---------- --------- --------- --------- --------- --------- ---
-*
*& Form call_alv
*&---------- --------- --------- --------- --------- --------- ---
-*
* text
*----------- --------- --------- --------- --------- --------- --
-*
* --> p1 text
* <-- p2 text
*----------- --------- --------- --------- --------- --------- --
-*
FORM call_alv .
CALL FUNCTION 'REUSE_ALV_GRID_ DISPLAY'
EXPORTING
* I_INTERFACE_ CHECK = ' '
* I_BYPASSING_ BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = report
* I_CALLBACK_PF_ STATUS_SET = ' '
* I_CALLBACK_USER_ COMMAND = ' '
* I_CALLBACK_TOP_ OF_PAGE = ' '
* I_CALLBACK_HTML_ TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_ END_OF_LIST = ' '
* I_STRUCTURE_ NAME =
* I_BACKGROUND_ ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = w_layout
it_fieldcat = i_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
it_sort = i_sort
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'X'
* is_variant = w_es_variant
it_events = i_events
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_ COLUMN = 0
* I_SCREEN_START_ LINE = 0
* I_SCREEN_END_ COLUMN = 0
* I_SCREEN_END_ LINE = 0
* I_HTML_HEIGHT_ TOP = 0
* I_HTML_HEIGHT_ END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_ BY_CALLER =
* ES_EXIT_CAUSED_ BY_USER =
TABLES
t_outtab = datos
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM. " call_alv

**&--------- --------- --------- --------- --------- --------- ----
--
**
**& Form mi_top_of_page
**&--------- --------- --------- --------- --------- --------- ----
--
**
** text
**---------- --------- --------- --------- --------- --------- ---
--
**
** --> p1 text
** <-- p2 text
**---------- --------- --------- --------- --------- --------- ---
--
**

FORM mi_top_of_page.

DATA: fecha(10),
fecha1(10),
w_bztxt LIKE t171t-bztxt,
w_zovta(35),
w_vtext LIKE tvkot-vtext,
w_orvta(35),
w_cadis(35).

CLEAR: i_list_comments[ ].

w_list_comments- typ = 'H'. "H=Header, S=Selection, A=Action
w_list_comments- key = ''.
w_list_comments- info = 'MOLDEADOS ANDINOS, C.A. (MOLANCA)'.
APPEND w_list_comments TO i_list_comments.

w_list_comments- typ = 'H'. "H=Header, S=Selection, A=Action
w_list_comments- key = ''.
w_list_comments- info = 'Caractarísticas de Inspección por Material'.
APPEND w_list_comments TO i_list_comments.

w_list_comments- typ = 'S'. "H=Header, S=Selection, A=Action
w_list_comments- key = 'Usuario: '.
w_list_comments- info = sy-uname.
APPEND w_list_comments TO i_list_comments.

WRITE sy-datum TO fecha.

w_list_comments- typ = 'S'. "H=Header, S=Selection, A=Action
w_list_comments- key = 'Fecha: '.
w_list_comments- info = fecha.
APPEND w_list_comments TO i_list_comments.

w_list_comments- typ = 'S'. "H=Header, S=Selection, A=Action
w_list_comments- key = 'Página: '.
w_list_comments- info = sy-pagno.
APPEND w_list_comments TO i_list_comments.

CALL FUNCTION 'REUSE_ALV_COMMENTA RY_WRITE'
EXPORTING
* i_logo = ' '
it_list_commentary = i_list_comments.

ENDFORM. "mi_top_of_page

*&---------- --------- --------- --------- --------- --------- ---
-*
*& Form validate_variant
*&---------- --------- --------- --------- --------- --------- ---
-*
* text
*----------- --------- --------- --------- --------- --------- --
-*
* --> p1 text
* <-- p2 text
*----------- --------- --------- --------- --------- --------- --
-*
*FORM validate_variant .

*ENDFORM.

El problema que tengo es que no me muestra el detalle del material
52000021 o se repite el material 42000012 y asi.

Debe salir la caracteristica de inspeccion TER-PESO TER-ALTU
TER-PMEC y SAL-VISU . el codigo hace que salga solo la primera
y la ultima y no las dos del medio.

Y por ultimo el texto breve de caracteristica se lo trae incorrectamente, es decir se trae uno pero no es el que pide el usuario.

Por fa , Auxilio, alguien que me ayude