‎2007 Mar 27 12:39 AM
Hello,
I am king of new in Alv reports and I am using the function REUSE_ALV_HIERSEQ_LIST_DISPLAY' to displya my report, but in the detail I am including several accounting journals, it is possible to make a group for each journal?
Thank you, Mary
‎2007 Mar 27 12:41 AM
REPORT ZGT_REPORTE_RE_WE.
tables: BKPF,
BSEG,
SKAT,
LFa1,
*BSEG,
EKBE,
ZGT_MIN_CECO.
TYPE-POOLS: slis.
include zgtformatos.
data: begin of Ti_RE OCCURS 0.
INCLUDE STRUCTURE BKPF.
data: END OF TI_RE.
data: begin of Ti_WE OCCURS 0.
INCLUDE STRUCTURE BKPF.
data: END OF TI_WE.
data: begin of Ti_MM01 OCCURS 0.
INCLUDE STRUCTURE EKBE.
data: END OF TI_MM01.
data: begin of Ti_BSEG_RE OCCURS 0.
DATA: EXPAND(1).
INCLUDE STRUCTURE BSEG.
data: ID(18),
TEXTO like SKAT-TXT50,
BLDAT Like BKPF-BLDAT , "fecha docto
BUDAT Like BKPF-BUDAT , "fecha contabilizacion
XBLNR Like BKPF-XBLNR , "numero referencia
MONAT Like BKPF-MONAT , "mes contable
WAERS Like BKPF-WAERS , "moneda
KURSF Like BKPF-KURSF . "tipo de cambio
data: END OF Ti_BSEG_RE.
data: begin of Ti_BSEG_WE OCCURS 0.
DATA: EXPAND(1).
INCLUDE STRUCTURE BSEG.
data: RE_BUKRS like Ti_BSEG_RE-BUKRS,
RE_BELNR like Ti_BSEG_RE-BELNR,
RE_GJAHR like Ti_BSEG_RE-GJAHR,
ID(18),
TEXTO like SKAT-TXT50,
BLDAT Like BKPF-BLDAT ,
BUDAT Like BKPF-BUDAT ,
XBLNR Like BKPF-XBLNR ,
MONAT Like BKPF-MONAT ,
WAERS Like BKPF-WAERS ,
KURSF Like BKPF-KURSF ,
CECO_MIN LIKE ZGT_MIN_CECO-CECO_MIN ,
TXT50 LIKE ZGT_MIN_CECO-TXT50.
data: END OF Ti_BSEG_WE.
data: vindex like sy-tabix,
alv_keyinfo TYPE slis_keyinfo_alv,
alv_variant LIKE disvariant,
alv_layout TYPE slis_layout_alv,
alv_repid like sy-repid,
alv_print type slis_print_alv,
programa like sy-repid,
fc_hier TYPE slis_fieldcat_alv OCCURS 0 WITH HEADER LINE,
VCOLOR(4),
AWKEY_TEMP(14),
FIELDCAT TYPE SLIS_T_FIELDCAT_ALV with header line.
*----
-
Parametros de Seleccion
*----
-
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.
PARAMETER: SO_BUKRS like BKPF-BUKRS,
GJAHR like BKPF-GJAHR DEFAULT sy-datum(4) OBLIGATORY,
BELNR like BKPF-BELNR.
SELECTION-SCREEN END OF BLOCK 1.
initialization.
sociedad so_bukrs.
START-OF-SELECTION.
perform Buscar_Datos.
PERFORM IMPRIMIR.
*&----
*
*& Form Buscar_Datos
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
*
Se extrae el encabezado de la factura, deberÃa devolver una sola linea
*
*----
*
FORM Buscar_Datos .
select * from bseg into corresponding fields of table Ti_BSEG_RE
where BUKRS = SO_BUKRS and
BELNR = BELNR and
GJAHR = GJAHR.
select single * from bkpf
where BUKRS = SO_BUKRS and
GJAHR = GJAHR and
BELNR = BELNR.
*----
*
*
Se extrae el historial del documento de MM, en donde se obtiene la
relación entre la factura y la recepción.
*
*----
*
Select * from EKBE into corresponding fields of table TI_MM01
Where BELNR = BKPF-AWKEY(10) AND
GJAHR = GJAHR.
loop at Ti_MM01.
CLEAR: AWKEY_TEMP.
CONCATENATE TI_MM01-LFBNR
TI_MM01-LFGJA into AWKEY_TEMP.
Llenamos la tabla FI de recepciones
CLEAR: BKPF.
select * from bkpf into corresponding fields of Ti_BSEG_WE
where AWKEY = AWKEY_TEMP.
check sy-subrc = 0.
append Ti_BSEG_WE.
select * from *bseg into corresponding fields of Ti_BSEG_WE
where BUKRS = TI_BSEG_WE-BUKRS and
GJAHR = TI_BSEG_WE-GJAHR and
BELNR = TI_BSEG_WE-BELNR and
EBELN = TI_MM01-EBELN and
EBELP = TI_MM01-EBELP.
Ti_BSEG_WE-re_BUKRS = TI_BSEG_WE-BUKRS.
Ti_BSEG_WE-re_BELNR = TI_BSEG_WE-BELNR.
Ti_BSEG_WE-re_GJAHR = TI_BSEG_WE-GJAHR.
concatenate SO_BUKRS
BELNR
GJAHR into Ti_BSEG_WE-ID.
append Ti_BSEG_WE.
endselect.
endselect.
endloop.
clear: vindex.
loop at Ti_BSEG_RE.
add 1 to vindex.
concatenate Ti_BSEG_RE-BUKRS
Ti_BSEG_RE-BELNR
Ti_BSEG_RE-GJAHR into Ti_BSEG_RE-ID.
modify Ti_BSEG_RE index vindex.
endloop.
************************************************************************
En esta parte se copian todas las lineas que no son de facturas por
recibir al detalle del reporte. Ejemplo linea de Impuestos
************************************************************************
loop at Ti_BSEG_RE. "where LIFNR = '' and
HKONT <> '0000200001'.
move-corresponding Ti_BSEG_RE to Ti_BSEG_WE.
concatenate Ti_BSEG_WE-BUKRS
Ti_BSEG_WE-BELNR
Ti_BSEG_WE-GJAHR into Ti_BSEG_WE-ID.
append Ti_BSEG_WE.
endloop.
delete Ti_BSEG_RE where LIFNR = ''.
delete Ti_BSEG_WE where BUZEI = ''. "HKONT = '0000200001'.
DELETE ADJACENT DUPLICATES FROM Ti_BSEG_WE
COMPARING BUKRS BELNR GJAHR BUZEI.
clear: vindex.
loop at Ti_BSEG_WE.
add 1 to vindex.
clear: SKAT.
select single TXT50 into Ti_BSEG_WE-TEXTO
from SKAT where spras = sy-langu and
SAKNR = Ti_BSEG_WE-HKONT.
if Ti_BSEG_WE-SHKZG = 'H'.
Ti_BSEG_WE-DMBTR = Ti_BSEG_WE-DMBTR * -1.
Ti_BSEG_WE-WRBTR = Ti_BSEG_WE-WRBTR * -1.
Ti_BSEG_WE-DMBT2 = Ti_BSEG_WE-DMBT2 * -1.
endif.
modify ti_bseg_WE index vindex.
endloop.
clear: vindex.
loop at Ti_BSEG_RE.
add 1 to vindex.
clear: SKAT.
select single TXT50 into Ti_BSEG_RE-TEXTO
from SKAT where spras = sy-langu and
SAKNR = Ti_BSEG_RE-HKONT.
clear: LFA1.
select single NAME1 into Ti_BSEG_RE-TEXTO
from LFA1 where lifnr = Ti_BSEG_RE-lifnr.
modify ti_bseg_RE index vindex.
endloop.
clear: vindex.
loop at Ti_BSEG_WE.
add 1 to vindex.
clear: ZGT_MIN_CECO.
Select single * into corresponding fields of TI_BSEG_WE
from ZGT_MIN_CECO
where CECO_PEP = TI_BSEG_WE-KOSTL or
CECO_PEP = TI_BSEG_WE-PROJN.
modify TI_BSEG_WE index vindex.
endloop.
ENDFORM. " Buscar_Datos
*&----
*
*& Form IMPRIMIR
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM IMPRIMIR .
PERFORM F_LAYOUT.
PERFORM C_RELACION.
PERFORM LLENAR_CATALOGO.
PROGRAMA = SY-REPID.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = PROGRAMA
i_callback_pf_status_set = 'SET_STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout = alv_layout
is_print = alv_print
it_fieldcat = fc_hier[]
i_default = 'X'
i_save = 'A'
is_variant = alv_variant
i_tabname_header = 'TI_BSEG_RE'
i_tabname_item = 'TI_BSEG_WE'
is_keyinfo = alv_keyinfo
TABLES
t_outtab_header = ti_bseg_re[]
t_outtab_item = ti_bseg_we[]
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. " IMPRIMIR
*&----
*
*& Form F_LAYOUT
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM F_LAYOUT.
alv_layout-info_fieldname = 'COLOR'.
alv_layout-coltab_fieldname = SPACE.
alv_layout-EXPAND_ALL = 'X'.
ms variables
alv_layout-no_sumchoice = SPACE.
alv_layout-colwidth_optimize = 'X'.
alv_layout-zebra = 'X'.
fin ms varialbes
alv_layout-LIGHTS_FIELDNAME = 'VBELN'.
alv_layout-LIGHTS_TABNAME = 'LIST'.
alv_layout-LIGHTS_ROLLNAME = 'VBELN'.
alv_layout-BOX_FIELDNAME = 'VBELN'.
alv_layout-BOX_TABNAME = 'LIST'.
alv_layout-EXPAND_FIELDNAME = 'EXPAND'.
ENDFORM. " F_LAYOUT
*&----
*
*& Form LLENAR_CATALOGO
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM LLENAR_CATALOGO.
Refresh: fc_hier.
*----
-
*- CABECERA
*----
-
clear: fieldcat[].
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
I_PROGRAM_NAME = sy-repid
I_INTERNAL_TABNAME = 'TI_BSEG_RE'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = sy-repid
changing
ct_fieldcat = fieldcat[].
clear: vindex.
loop at fieldcat.
add 1 to vindex.
*check vindex < 10.
move-corresponding fieldcat to FC_HIER.
FC_HIER-TABNAME = 'TI_BSEG_RE'.
if FC_HIER-fieldname = 'GJAHR' or
FC_HIER-fieldname = 'BELNR' or
FC_HIER-fieldname = 'EBELN' or
FC_HIER-fieldname = 'EBELP' or
FC_HIER-fieldname = 'LIFNR' or
FC_HIER-fieldname = 'DMBTR' or
FC_HIER-fieldname = 'WRBTR' or
FC_HIER-fieldname = 'DMBT2' or
FC_HIER-fieldname = 'HKONT' or
FC_HIER-fieldname = 'TEXTO'.
FC_HIER-no_out = ''.
else.
FC_HIER-no_out = 'X'.
endif.
if FC_HIER-fieldname = 'LIFNR' or
FC_HIER-fieldname = 'DMBTR' or
FC_HIER-fieldname = 'WRBTR' or
FC_HIER-fieldname = 'DMBT2' .
FC_HIER-row_pos = 2.
else.
FC_HIER-row_pos = 1.
endif.
APPEND FC_HIER. CLEAR: FC_HIER.
endloop.
*----
-
*- POSICION
*----
-
clear: fieldcat[].
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
I_PROGRAM_NAME = sy-repid
I_INTERNAL_TABNAME = 'TI_BSEG_WE'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = sy-repid
changing
ct_fieldcat = fieldcat[].
clear: vindex.
loop at fieldcat.
add 1 to vindex.
move-corresponding fieldcat to FC_HIER.
FC_HIER-TABNAME = 'TI_BSEG_WE'.
FC_HIER-row_pos = 1.
if FC_HIER-fieldname = 'GJAHR' or
FC_HIER-fieldname = 'BELNR' or
FC_HIER-fieldname = 'EBELN' or
FC_HIER-fieldname = 'EBELP' or
FC_HIER-fieldname = 'VALUT' or
FC_HIER-fieldname = 'LIFNR' or
FC_HIER-fieldname = 'WRBTR' or
FC_HIER-fieldname = 'DMBTR' or
FC_HIER-fieldname = 'DMBE2' or
FC_HIER-fieldname = 'PROJK' or
FC_HIER-fieldname = 'KOSTL' or
FC_HIER-fieldname = 'HKONT' or
FC_HIER-fieldname = 'TEXTO' or
FC_HIER-fieldname = 'CECO_MIN' or
FC_HIER-fieldname = 'TXT50' .
FC_HIER-no_out = ''.
else.
FC_HIER-no_out = 'X'.
endif.
APPEND FC_HIER. CLEAR: FC_HIER.
endloop.
delete FC_HIER where fieldname = 'BUKRS'.
ENDFORM. " LLENAR_CATALOGO
*&----
*
*& Form C_RELACION
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM C_RELACION.
alv_keyinfo-header01 = 'ID'.
alv_keyinfo-item01 = 'ID'.
alv_keyinfo-header01 = 'VBELN'.
alv_keyinfo-item01 = 'VBELN'.
ENDFORM. " C_RELACION
*----
*
FORM SET_STATUS *
*----
*
........ *
*----
*
--> RT_EXTAB *
*----
*
FORM SET_STATUS USING rt_extab TYPE slis_t_extab.
IF cl_mmim_auth=>level( ) IS INITIAL.
APPEND 'AUTH' TO rt_extab.
ENDIF.
IF cl_mmim_auth=>level( ) = cl_mmim_auth=>c_error.
MESSAGE s124(m7).
ENDIF.
IF detail = 'X'.
APPEND 'DETAIL' TO rt_extab.
ENDIF.
SET PF-STATUS 'STANDARD' EXCLUDING rt_extab.
ENDFORM.
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
if r_ucomm = '&IC1'.
case rs_selfield-FIELDNAME .
when 'BELNR'.
read table ti_result index rs_selfield-TABINDEX.
set parameter id 'BLN' field rs_selfield-value.
set parameter id 'BUK' field so_bukrs.
set parameter id 'AN2' field ti_result-ANLN2.
call transaction 'FB03' and skip first screen.
when 'EBELN'.
bseg-ebeln = rs_selfield-value.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = bseg-ebeln
IMPORTING
OUTPUT = bseg-ebeln.
bseg-ebelp = 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = bseg-ebelp
IMPORTING
OUTPUT = bseg-ebelp.
call function 'ME_DISPLAY_PURCHASE_DOCUMENT'
exporting
i_ebeln = bseg-ebeln
i_ebelp = bseg-ebelp
i_enjoy = 'X'
exceptions
not_found = 1
no_authority = 2
invalid_call = 3
preview_not_possible = 4
others = 5.
endcase.
endif.
endform.