#1
|
|||
|
|||
f2code
Hola a todos, alguien me puede dar una idea un enlace de lectura, en donde se indique como se implementa el doble click o f2 en un lista, de tal forma que pueda abrir otra pantalla y mostrar mas información.
Gracias por su ayuda ! Javier |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
hola, me ha parecido muy interesante tu report,,,
lo he querido probar y me da error en las tablas zcain y zmcai como lo puedo solucionar? |
#4
|
|||
|
|||
hola.
Al ser tablas Z supongo que en tu sistema no existiran con lo que o te las tendras que crear o tendras que dejar de usarlas en el REPORT. un saludo. |
#5
|
||||
|
||||
Efectivamente, esas tablas no existen en tu sistema. Lo que puedes hacer es probar un reporte con tablas estandar... y darle doble click para que te llame a un detalle.
__________________
Saludos, Claudia V. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|