Tema: f2code
Ver Mensaje Individual
  #2  
Viejo 20/04/07, 15:16:33
Avatar de Claudia Valdespino
Claudia Valdespino Claudia Valdespino is offline
Member
 
Fecha de Ingreso: mar 2007
Localización: Lima - Perú
Mensajes: 54
Hola Jlayana, lo que tienes que hacer para implementar el doble click en una lista es usar un USER_COMMAND como evento y ahi preguntar por el valor &IC1 que corresponde al doble click. Ahi capturas los datos del registro seleccionado y luego puedes hacer un CALL TRANSACTION pasando esos valores con SET PARAMETER ID.

Te mando un ejemplito para que te guies. El código que requieres está en el form init_event y en el form user_command


report zap_facturascompensadas message-id sabapdocu.

tables: bsak, lfa1, bkpf, zmcai, zcain.

* PARAMETROS DE SELECCION
selection-screen begin of block b1 with frame.
select-options:
bukrs for bsak-bukrs, "Sociedad
gjahr for bsak-gjahr, "Ejercicio
lifnr for bsak-lifnr, "Código proveedor
belnr for bsak-belnr default '5000000000' to '5099999999', "Nro doc
augbl for bsak-augbl, "Número de documento de compensación
augdt for bsak-augdt. "Fecha de compensación
selection-screen end of block b1.

* ALV
type-pools: slis.
data: gt_fieldcat type slis_t_fieldcat_alv with header line,
gs_layout type slis_layout_alv,
g_repid like sy-repid,
gt_events type slis_t_event.

* TABLA INTERNA DE FACTURAS COMPENSADAS PARA EL CATALOGO DE DATOS
data: begin of t_faccom occurs 0,
bukrs like bsak-bukrs, "Sociedad
belnr like bsak-belnr, "Documento SAP
gjahr like bsak-gjahr, "Ejercicio
budat like bsak-budat, "Fecha de contabilización
lifnr like bsak-lifnr, "Código proveedor
name1 like lfa1-name1, "Nombre proveedor
waers like bsak-waers, "Moneda
wrbtr like bsak-wrbtr, "Importe moneda original
dmbtr like bsak-dmbtr, "Importe moneda local
augbl like bsak-augbl, "Documento de compensación
augdt like bsak-augdt, "Fecha de compensación
blart like bsak-blart, "Tipo de documento
ncarin like zmcai-ncarin, "Carta de Instrucción
fechbco like zcain-fechbco, "Fecha actualizac.est.cheques
chect like zchek-chect, "Nº de cheque
zaldt like payr-zaldt, "Fecha de pago prevista
shkzg like bsak-shkzg, "Indicador debe/haber
end of t_faccom.

* TABLA INTERNA PARA LOS CODIGOS DE PROVEEDOR
data: begin of t_lifnr occurs 0,
lifnr like bsak-lifnr, "Código proveedor
end of t_lifnr.

* TABLA INTERNA PARA LOS NOMBRES DE PROVEEDORES
data: begin of t_lfa1 occurs 0,
lifnr like bsak-lifnr, "Código proveedor
name1 like lfa1-name1, "Nombre proveedor
end of t_lfa1.

* TABLA INTERNA PARA LOS DOCUMENTOS ANULADOS
data: begin of t_bkpf occurs 0,
bukrs like bsak-bukrs, "Sociedad
belnr like bsak-belnr, "Documento SAP
gjahr like bsak-gjahr, "Ejercicio
stblg like bkpf-stblg, "Número del doc. de anulación
stjah like bkpf-stjah, "Ejercicio del doc. de anulación
end of t_bkpf.

* TABLA PARA OBTENER LA INFORMACIÓN DEL CHEQUE
data t_payr like payr.

* INICIO
start-of-selection.
g_repid = sy-repid.
perform selec_facturas_compensadas.
perform init_fieldcat.
perform init_layout.
perform init_event.
perform report.


*&---------------------------------------------------------------------*
*& Form SELEC_FACTURAS_COMPENSADAS
*&---------------------------------------------------------------------*
form selec_facturas_compensadas .
refresh t_faccom.

* LLENA LA TABLA T_FACCOM CON DATOS DE FACTURAS COMPENSADAS DE LA BSAK
select * into corresponding fields of table t_faccom
from bsak where bukrs in bukrs and
gjahr in gjahr and
lifnr in lifnr and
belnr in belnr and
augbl in augbl and
augdt in augdt.

if sy-subrc <> 0.
message s888 with 'NO SE ENCONTRARON REGISTROS'.
stop.
endif.

sort t_faccom by bukrs belnr gjahr.

* CARGA SOLO LOS PROVEEDORES SIN REPETIRSE
loop at t_faccom.
t_lifnr-lifnr = t_faccom-lifnr.
collect t_lifnr.
clear t_faccom.
endloop.

* LLENA LA TABLA T_LFA1 CON LOS NOMBRES DE LOS PROVEEDORES
* SEGUN LOS CODIGOS DE LA T_LIFNR
select lifnr name1
from lfa1
into corresponding fields of table
t_lfa1 for all entries in t_lifnr
where lifnr = t_lifnr-lifnr.

sort t_lfa1 by lifnr.

* LLENA LA TABLA T_BKPF SEGUN LOS REGISTROS DE LA TABLA T_FACCOM
select bukrs belnr gjahr stblg stjah
from bkpf
into corresponding fields of table
t_bkpf for all entries in t_faccom
where bukrs = t_faccom-bukrs and
belnr = t_faccom-belnr and
gjahr = t_faccom-gjahr and
stblg <> ''.

sort t_bkpf by bukrs belnr gjahr.

* RECORRE LA TABLA T_BKPF Y ELIMINA DE LA TABLA T_FACCOM LOS DOCUMENTOS
* ANULADOS
loop at t_bkpf.
delete t_faccom where bukrs = t_bkpf-bukrs and
belnr = t_bkpf-belnr and
gjahr = t_bkpf-gjahr.
endloop.

perform carga_facturas_compensadas.
endform. " SELEC_FACTURAS_COMPENSADAS


*&---------------------------------------------------------------------*
*& Form CARGA_FACTURAS_COMPENSADAS
*&---------------------------------------------------------------------*
form carga_facturas_compensadas .
loop at t_faccom.
* OBTIENE EL NOMBRE DEL PROVEEDOR
read table t_lfa1 with key lifnr = t_faccom-lifnr binary search.
t_faccom-name1 = t_lfa1-name1.

* OBTIENE EL SIGNO DEL CAMPO
if t_faccom-shkzg = 'S'.
t_faccom-wrbtr = - t_faccom-wrbtr.
t_faccom-dmbtr = - t_faccom-dmbtr.
endif.

* OBTIENE LA CARTA DE INSTRUCCIÓN
clear: zmcai.
zmcai-gjahr = t_faccom-augdt(4). "Ejercicio doc. compensación
select single ncarin into t_faccom-ncarin
from zmcai
where zbukr = t_faccom-bukrs and
gjahr = zmcai-gjahr and
vblnr = t_faccom-augbl.

* OBTIENE LA CLASE DEL DOCUMENTO DE COMPENSACIÓN
select single blart into t_faccom-blart
from bsak
where bukrs = t_faccom-bukrs and
augdt = t_faccom-augdt and
belnr = t_faccom-augbl.

* OBTIENE LA FECHA DE ACTUALIZACIÓN DE ESTADOS DE CHEQUES
clear: zcain.
zcain-gjahr = t_faccom-augdt(4). "Ejercicio doc. compensación
select single fechbco into t_faccom-fechbco
from zcain
where zbukr = t_faccom-bukrs and
gjahr = zcain-gjahr and
ncarin = t_faccom-ncarin.

* OBTIENE EL NÚMERO DE CHEQUE Y LA FECHA DE PAGO PREVISTA
call function 'GET_CHECK_INFORMATION'
exporting
i_augbl = t_faccom-augbl
i_augdt = t_faccom-augdt
i_belnr = t_faccom-augbl
i_bukrs = t_faccom-bukrs
i_gjahr = t_faccom-gjahr
i_call = ''
importing
e_payr = t_payr
exceptions
not_found = 1
others = 2.

if sy-subrc = 0.
t_faccom-chect = t_payr-chect.
t_faccom-zaldt = t_payr-zaldt.
endif.

modify t_faccom.
endloop.
endform. " CARGA_FACTURAS_COMPENSADAS


*&---------------------------------------------------------------------*
*& Form INIT_FIELDCAT
*&---------------------------------------------------------------------*
form init_fieldcat .
clear gt_fieldcat.
refresh gt_fieldcat.

gt_fieldcat-fieldname = 'BUKRS'.
gt_fieldcat-ref_tabname = 'BSAK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Sociedad'.
gt_fieldcat-outputlen = '9'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'BELNR'.
gt_fieldcat-ref_tabname = 'BSAK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Documento'.
gt_fieldcat-outputlen = '11'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'BUDAT'.
gt_fieldcat-ref_tabname = 'BSAK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Fe.Contab.'.
gt_fieldcat-outputlen = '11'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'LIFNR'.
gt_fieldcat-ref_tabname = 'BSIK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Proveedor'.
gt_fieldcat-outputlen = '11'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'NAME1'.
gt_fieldcat-ref_tabname = 'LFA1'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Descripción'.
gt_fieldcat-outputlen = '40'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'WAERS'.
gt_fieldcat-ref_tabname = 'BSAK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Moneda'.
gt_fieldcat-outputlen = '7'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'WRBTR'.
gt_fieldcat-ref_tabname = 'BSAK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Importe MO'.
gt_fieldcat-outputlen = '11'.
gt_fieldcat-cfieldname = 'WAERS'.
gt_fieldcat-ctabname = 'T_FACCOM'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'DMBTR'.
gt_fieldcat-ref_tabname = 'BSAK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Importe ML'.
gt_fieldcat-outputlen = '11'.
gt_fieldcat-cfieldname = 'WAERS'.
gt_fieldcat-ctabname = 'T_FACCOM'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'AUGBL'.
gt_fieldcat-ref_tabname = 'BSAK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Doc.compensa'.
gt_fieldcat-outputlen = '13'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'AUGDT'.
gt_fieldcat-ref_tabname = 'BSAK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Fec.compensa'.
gt_fieldcat-outputlen = '13'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'BLART'.
gt_fieldcat-ref_tabname = 'BSAK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Clase'.
gt_fieldcat-outputlen = '6'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'NCARIN'.
gt_fieldcat-ref_tabname = 'ZMCAI'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Carta Instruc'.
gt_fieldcat-outputlen = '14'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'FECHBCO'.
gt_fieldcat-ref_tabname = 'ZCAIN'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Fecha de envío'.
gt_fieldcat-outputlen = '15'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'CHECT'.
gt_fieldcat-ref_tabname = 'ZCHEK'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Cheque'.
gt_fieldcat-outputlen = '9'.
append gt_fieldcat.
clear: gt_fieldcat.

gt_fieldcat-fieldname = 'ZALDT'.
gt_fieldcat-ref_tabname = 'PAYR'.
gt_fieldcat-tabname = 'T_FACCOM'.
gt_fieldcat-seltext_l = 'Fec.pago prevista'.
gt_fieldcat-outputlen = '18'.
append gt_fieldcat.
clear: gt_fieldcat.
endform. " INIT_FIELDCAT


*&---------------------------------------------------------------------*
*& Form INIT_LAYOUT
*&---------------------------------------------------------------------*
form init_layout .
gs_layout-zebra = 'X'.
endform. " INIT_LAYOUT


*&---------------------------------------------------------------------*
*& Form INIT_EVENT
*&---------------------------------------------------------------------*
form init_event .
data: c_formname_top_of_page type slis_formname value 'TOP_PAGE',
event type slis_alv_event.

event-name = slis_ev_top_of_page.
event-form = 'TOP_PAGE'.
append event to gt_events.

event-name = slis_ev_user_command.
event-form = 'USER_COMMAND'.
append event to gt_events.
endform. " INIT_EVENT


*&---------------------------------------------------------------------*
*& Form TOP_PAGE
*&---------------------------------------------------------------------*
form top_page.
write:/ sy-repid, 197(8) text-001, 207(10) sy-datum. "Fecha
write:/ sy-uname, 197(8) text-002, 207(8) sy-uzeit. "Hora
write:/100(21) text-004, 197(8) text-003, 207(1) sy-pagno. "Pagina
skip 1.
endform. "TOP_PAGE


*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when '&IC1'. "Doble Click
* Se lee la entrada seleccionada de la tabla T_FACCOM
read table t_faccom index rs_selfield-tabindex.
if sy-subrc = 0.
if rs_selfield-fieldname = 'BELNR'. "Documento SAP
set parameter id 'BLN' field t_faccom-belnr.
elseif rs_selfield-fieldname = 'AUGBL'. "Documento compensación
set parameter id 'BLN' field t_faccom-augbl.
endif.
set parameter id 'BUK' field t_faccom-bukrs.
set parameter id 'GJR' field t_faccom-gjahr.
call transaction 'FB03' and skip first screen.
endif.
endcase.
endform. "USER_COMMAND


*&---------------------------------------------------------------------*
*& Form REPORT
*&---------------------------------------------------------------------*
form report .
* CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
i_callback_program = g_repid
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
it_events = gt_events
tables
t_outtab = t_faccom
exceptions
program_error = 1
others = 2.
endform. " REPORT
__________________
Saludos,

Claudia V.
Responder Con Cita