Sie sind auf Seite 1von 8

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

*& Report ZSDMATERIAL_CON_CUENTA *


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

REPORT ZSDMATERIAL_CON_CUENTA NO STANDARD PAGE HEADING LINE-SIZE 280.


* Variables y constantes para trabajar con ALV.
TYPE-POOLS: slis.

CONSTANTS: formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.

DATA: fieldtab TYPE slis_t_fieldcat_alv,


heading TYPE slis_t_listheader,
layout TYPE slis_layout_alv,
events TYPE slis_t_event,
repname LIKE sy-repid,
f2code LIKE sy-ucomm VALUE '&ETA',
g_save(1) TYPE c,
g_exit(1) TYPE c,
g_variant LIKE disvariant,
gx_variant LIKE disvariant.

TABLES: MARA, MAKT, MVKE, C003, TVKMT, T687T, T023T, SKAT, C901.
DATA: descrip(40).

DATA: BEGIN OF TABLA OCCURS 0,


MATNR TYPE MATNR, "Material
MAKTX LIKE MAKT-MAKTX, "Descrip material
MTART LIKE MARA-MTART, "Tipo Material
MATKL LIKE MARA-MATKL, "Grupo Material
WGBEZ LIKE T023T-WGBEZ, "Descrip grupo material
VTWEG LIKE MVKE-VTWEG, "Canal
KTGRM LIKE C003-KTGRM, "Grupo Imputacion
vtexT LIKE T687T-VTExT, "Descrip grupo imputacion
KSCHL LIKE C003-KSCHL, "Ventas o abono
DESTI(10),
KVSL1 LIKE c003-kvsl1, "Tipo operacion
DESop LIKE T687T-VTExT, "Descrip OPERACION
SAKN1 LIKE C003-SAKn1, "Cuenta Mayor
DESCRIP(40),
SAKN2 LIKE C003-SAKN2, "Cuenta Mayor
DESCRIP2(40),
END OF TABLA.

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


PARAMETERS: KTOPL LIKE C003-KTOPL DEFAULT 'PGC',
VKORG LIKE C003-VKORG DEFAULT '1001'.

SELECTION-SCREEN: skip 1.
SELECTION-SCREEN BEGIN OF BLOCK rango3 WITH FRAME TITLE text-003.
SELECT-OPTIONS: MATNR FOR MARA-MATNR,
MTART FOR MARA-MTART.
SELECTION-SCREEN: skip 1.
select-options: VTWEG FOR MVKE-VTWEG default '00',
MATKL FOR MARA-MATKL,
KTGRM FOR C003-KTGRM,
KONTS FOR C003-sakn1.
SELECTION-SCREEN END OF BLOCK rango3.
SELECTION-SCREEN END OF BLOCK rango1.
SELECTION-SCREEN: skip 1.
SELECTION-SCREEN BEGIN OF BLOCK rango2 WITH FRAME TITLE text-002.
PARAMETERS: p_vari LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK rango2.

INITIALIZATION.
* CALL FUNCTION 'Z_PROGRAMAS_EXEC'
* EXCEPTIONS
* OTHERS = 1.
*
* AUTHORITY-CHECK OBJECT 'ZAUT_ABAP'
* ID 'BEGRU' FIELD 'ECCO'.
* IF SY-SUBRC NE 0.
* AUTHORITY-CHECK OBJECT 'ZAUT_ABAP'
* ID 'BEGRU' FIELD 'ECCB'.
* IF SY-SUBRC NE 0.
* MESSAGE E008(ZSISTEMAS) WITH 'No dispone de autorizacion para'
* 'ejecutar el programa' SY-REPID.
* ENDIF.
* ENDIF.
repname = sy-repid.
PERFORM initialize_fieldcat USING fieldtab[].
PERFORM build_eventtab USING events[].
PERFORM initialize_variant.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.


PERFORM f4_for_variant.

AT SELECTION-SCREEN.
PERFORM pai_of_selection_screen.

END-OF-SELECTION.
* Selecciono de la tabla MBEW donde se definen las categorias valorac.
REFRESH TABLA.
CLEAR TABLA.
SELECT * FROM MVKE
WHERE MATNR IN MATNR
AND VKORG = VKORG
AND VTWEG in VTWEG.

CHECK MVKE-KTGRM IN KTGRM.


SELECT SINGLE * FROM MARA WHERE MATNR = MVKE-MATNR.
CHECK MARA-MTART IN MTART.
CHECK MARA-MATKL IN MATKL.
* Recupero la descripcion del material
CLEAR MAKT.
SELECT SINGLE * FROM MAKT WHERE SPRAS = 'S' and MATNR = MVKE-MATNR.
* Recupero la descripcion del grupo de material
CLEAR T023T.
SELECT SINGLE * FROM T023T WHERE SPRAS = 'S'
AND MATKL = MARA-MATKL.
* Recupero la descripcion del grupo de imputacion
SELECT SINGLE * FROM TVKMT
WHERE SPRAS = 'S'
AND KTGRM = MVKE-KTGRM.

* Recupero de las tablas de parametrizacin la determinacin de cuentas.


SELECT * FROM C901
WHERE KAPPL = 'V'
AND ( KSCHL = 'KOFI' or kschl = 'KOFK' )
AND KTOPL = KTOPL
* AND VKORG = VKORG
AND KTGRM = mvke-ktgrm.
* Recupero descripcion de la operacion.
CLEAR T687T.
SELECT SINGLE * FROM T687T
WHERE SPRAS = 'S'
AND KAPPL = 'V'
AND KVSL1 = C901-kvsl1.

CLEAR TABLA.
TABLA-MATNR = MVKE-MATNR. "Material
TABLA-MAKTX = MAKT-MAKTX.
TABLA-MTART = MARA-MTART.
TABLA-MATKL = MARA-MATKL.
TABLA-WGBEZ = T023T-WGBEZ.
TABLA-VTWEG = MVKE-VTWEG. "Canal
TABLA-KTGRM = MVKE-KTGRM. "Grupo Imputacion
TABLA-VTEXT = TVKMT-VTEXT. "Descrip grupo imputacion
TABLA-KSCHL = C901-KSCHL. "Ventas o abono
if c901-kschl = 'KOFI'.
tabla-desti = 'Ventas'.
elseif c003-kschl = 'KOFK'.
tabla-desti = 'Costes'.
endif.
TABLA-KVSL1 = c901-kvsl1. "Tipo operacion
tabla-desop = T687T-VTEXT. "Descrip tipo operacion

TABLA-SAKN1 = C901-SAKn1. "Cuenta Mayor


* Validacion para restringir por cuenta de mayor.
CHECK TABLA-SAKN1 IN KONTS.
SELECT SINGLE TXT20 into tabla-descrip FROM SKAT
WHERE SPRAS = 'S'
AND KTOPL = KTOPL
AND SAKNR = tabla-sakn1.
TABLA-SAKN2 = C901-SAKN2. "Cuenta Mayor
clear skat.
SELECT SINGLE TXT20 into tabla-descrip2 FROM SKAT
WHERE SPRAS = 'S'
AND KTOPL = KTOPL
AND SAKNR = tabla-sakn2.
APPEND TABLA.
ENDSELECT.
ENDSELECT.

PERFORM build_layout USING layout.


PERFORM write_output.

************************************************************************
* Funciones comunes para las ALV. Independientes de la estructura a vis.
************************************************************************
FORM build_eventtab USING p_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_events.
READ TABLE p_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE formname_top_of_page TO ls_event-form.
APPEND ls_event TO p_events.
ENDIF.
ENDFORM. " BUILD_EVENTTAB

*---------------------------------------------------------------------*
* FORM TOP_OF_PAGE *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = heading.
ENDFORM. "TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form INITIALIZE_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM initialize_variant.
g_save = 'A'.
CLEAR g_variant.
g_variant-report = repname.
gx_variant = g_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = gx_variant-variant.
ENDIF.
ENDFORM. " INITIALIZE_VARIANT

*&---------------------------------------------------------------------*
*& Form F4_FOR_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f4_for_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save = g_save
IMPORTING
e_exit = g_exit
es_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF g_exit = space.
p_vari = gx_variant-variant.
ENDIF.
ENDIF.
ENDFORM. " F4_FOR_VARIANT

*&---------------------------------------------------------------------*
*& Form PAI_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM pai_of_selection_screen.
*
IF NOT p_vari IS INITIAL.
MOVE g_variant TO gx_variant.
MOVE p_vari TO gx_variant-variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant.
g_variant = gx_variant.
ELSE.
PERFORM initialize_variant.
ENDIF.
ENDFORM. " PAI_OF_SELECTION_SCREEN

*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LAYOUT text *
*----------------------------------------------------------------------*
FORM build_layout USING p_layout TYPE slis_layout_alv.
p_layout-f2code = f2code.
p_layout-zebra = 'X'.
p_layout-detail_popup = 'X'.
p_layout-no_keyfix = 'X'.
ENDFORM. " BUILD_LAYOUT

*&---------------------------------------------------------------------*
*& Form WRITE_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM write_output.
DATA: l_fieldcat TYPE slis_fieldcat_alv.

refresh fieldtab.
PERFORM initialize_fieldcat using fieldtab.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repname
it_fieldcat = fieldtab
i_save = g_save
is_variant = g_variant
TABLES
t_outtab = tabla.

IF sy-subrc <> 0.
WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_LIST_DISPLAY'.
ENDIF.
ENDFORM. " WRITE_OUTPUT

*&---------------------------------------------------------------------*
*& Form INITIALIZE_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FIELDTAB[] text *
*----------------------------------------------------------------------*
FORM initialize_fieldcat USING p_fieldtab TYPE slis_t_fieldcat_alv.

DATA: l_fieldcat TYPE slis_fieldcat_alv.


* fixed columns (obligatory)
CLEAR l_fieldcat.
l_fieldcat-fieldname = 'MATNR'.
l_fieldcat-col_pos = 1.
l_fieldcat-seltext_m = 'Material'.
l_fieldcat-seltext_s = 'Material'.
l_fieldcat-seltext_l = 'Material'.
l_fieldcat-no_zero = 'X'.
l_fieldcat-outputlen = 8.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'MAKTX'.
l_fieldcat-col_pos = 2.
l_fieldcat-seltext_m = 'Desc.Material'.
l_fieldcat-seltext_s = 'Desc.Material'.
l_fieldcat-seltext_l = 'Desc-Material'.
l_fieldcat-outputlen = 25.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'MTART'.
l_fieldcat-col_pos = 3.
l_fieldcat-seltext_m = 'Tipo M.'.
l_fieldcat-seltext_s = 'Tipo M.'.
l_fieldcat-seltext_l = 'Tipo M.'.
l_fieldcat-outputlen = 7.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'MATKL'.
l_fieldcat-col_pos = 4.
l_fieldcat-seltext_m = 'Grupo M.'.
l_fieldcat-seltext_s = 'Grupo M.'.
l_fieldcat-seltext_l = 'Grupo M.'.
l_fieldcat-outputlen = 7.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'WGBEZ'.
l_fieldcat-col_pos = 5.
l_fieldcat-seltext_m = 'Desc.Grupo M.'.
l_fieldcat-seltext_s = 'Desc.Grupo M.'.
l_fieldcat-seltext_l = 'Desc.Grupo M.'.
l_fieldcat-outputlen = 15.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'VTWEG'.
l_fieldcat-col_pos = 6.
l_fieldcat-seltext_m = 'Canal'.
l_fieldcat-seltext_s = 'Canal'.
l_fieldcat-seltext_l = 'Canal'.
l_fieldcat-outputlen = 5.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'KTGRM'. "Grupo Imputacion
l_fieldcat-col_pos = 7.
l_fieldcat-seltext_m = 'Gr.Imput.'.
l_fieldcat-seltext_s = 'Gr.Imput.'.
l_fieldcat-seltext_l = 'Gr.Imput.'.
l_fieldcat-outputlen = 8.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'VTEXT'. "Descrip Grupo Imputacion
l_fieldcat-seltext_m = 'Desc.Gr.Imput'.
l_fieldcat-seltext_s = 'Desc.Gr.Imput'.
l_fieldcat-seltext_l = 'Desc.Gr.Imput'.
l_fieldcat-col_pos = 8.
l_fieldcat-outputlen = 12.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'KSCHL'. "Ventas o Abono
l_fieldcat-seltext_m = 'Tipo Vta'.
l_fieldcat-seltext_s = 'Tipo Vta'.
l_fieldcat-seltext_l = 'Tipo Vta'.
l_fieldcat-col_pos = 9.
l_fieldcat-outputlen = 8.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'DESTI'.
l_fieldcat-col_pos = 10.
l_fieldcat-seltext_m = 'Desc.Tipo Vta'.
l_fieldcat-seltext_s = 'Desc.Tipo Vta'.
l_fieldcat-seltext_l = 'Desc.Tipo Vta'.
l_fieldcat-outputlen = 12.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'KVSL1'. "Tipo Operacion: ingresos,reduc.
l_fieldcat-seltext_m = 'Tipo Oper'.
l_fieldcat-seltext_s = 'Tipo Oper'.
l_fieldcat-seltext_l = 'Tipo Oper'.
l_fieldcat-col_pos = 11.
l_fieldcat-outputlen = 8.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'DESOP'.
l_fieldcat-seltext_m = 'Desc.Tipo Oper'.
l_fieldcat-seltext_s = 'Desc.Tipo Oper'.
l_fieldcat-seltext_l = 'Desc.Tipo Oper'.
l_fieldcat-col_pos = 12.
l_fieldcat-outputlen = 12.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'SAKN1'.
l_fieldcat-col_pos = 13.
l_fieldcat-no_zero = 'X'.
l_fieldcat-seltext_m = 'Cuenta'.
l_fieldcat-seltext_s = 'Cuenta'.
l_fieldcat-seltext_l = 'Cuenta'.
l_fieldcat-outputlen = 10.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'DESCRIP'.
l_fieldcat-col_pos = 14.
l_fieldcat-seltext_m = 'Desc.Cuenta'.
l_fieldcat-seltext_s = 'Desc.Cuenta'.
l_fieldcat-seltext_l = 'Desc.Cuenta'.
l_fieldcat-outputlen = 20.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'SAKN2'.
l_fieldcat-col_pos = 15.
l_fieldcat-no_zero = 'X'.
l_fieldcat-seltext_m = 'Cuenta2'.
l_fieldcat-seltext_s = 'Cuenta2'.
l_fieldcat-seltext_l = 'Cuenta2'.
l_fieldcat-outputlen = 10.
APPEND l_fieldcat TO p_fieldtab.

CLEAR l_fieldcat.
l_fieldcat-fieldname = 'DESCRIP2'.
l_fieldcat-col_pos = 16.
l_fieldcat-seltext_m = 'Desc.Cuenta2'.
l_fieldcat-seltext_s = 'Desc.Cuenta2'.
l_fieldcat-seltext_l = 'Desc.Cuenta2'.
l_fieldcat-outputlen = 20.
APPEND l_fieldcat TO p_fieldtab.

ENDFORM. " INITIALIZE_FIELDCAT

Das könnte Ihnen auch gefallen