Ayuda SAP

Suma de valores en Table Control

sap-abap
Etiquetas: #<Tag:0x00007f4dba4d3f78>
#1

Hola expertos, tengo un table control donde quiero hacer la suma de los valores al hacer click en los botones que aparecen en la imagen

#2

@mkultra Hola buenos dias:
A tu pregunta, te explico si es una trasaccion estandar se tendria que buscar una Exit o en su defecto un enhancement, dentro de uno de estos mencionados se ingresa la validacion para que sume todo los campos de Importe ML y los lance en un pop Up o tedrias que indicar donde quisieras que se muestre dicha suma.

Para el caso de un reporte Zeta, solo es activar el evento onclick o double-click dentro del codigo abap para poder hacer la suma y mostrar resultado.

Espero te ayude.

Saludos cordiales.

3 me gusta
#3

Buenas,

Es importante si lo quieres cuando esté marcado o con el simple hecho que se le de click.
En todo caso debes controlar los eventos que menciona el amigo @Jhohan_Erick. A mi parecer lo mejor es que controles con un campo MARK que si está marcado acumule esos valores.
Controla bien tu PAI y PBO.

Saludos.

#5

Aun sin poder resolver lo ya mencionado amigos aqui les dejo el codigo se agradece las criticas constructivas.

PROGRAM Z_REGCOBRANZA.

TABLES: ZFI_PAGOS_FDV.
TABLES: ZFI_PAGOS_FDVD.

CONTROLS TC200 TYPE TABLEVIEW USING SCREEN 200.
CONTROLS TC201 TYPE TABLEVIEW USING SCREEN 200.

"ESTRUCTURA PARA EL TABLE CONTROL 1
DATA: OK_CODE TYPE SY-UCOMM.

DATA: IT_ZFI_PAGOS_FDV TYPE TABLE OF ZFI_PAGOS_FDV,
WA_ZFI_PAGOS_FDV TYPE ZFI_PAGOS_FDV,
x(1) TYPE C.

"ESTRUCTURA PARA EL TABLE CONTROL 2
DATA: IT_ZFI_PAGOS_FDVD TYPE TABLE OF ZFI_PAGOS_FDVD,
WA_ZFI_PAGOS_FDVD TYPE ZFI_PAGOS_FDVD,
IND TYPE BCD,
VALOR TYPE BCD,
MARK2 TYPE C VALUE ‘X’.

*Muestra datos en table control 1
MODULE FILL_DATA1 OUTPUT.
IF SY-STEPL EQ 1.
TC200-LINES = TC200-TOP_LINE + SY-LOOPC - 1.
ENDIF.
MOVE-CORRESPONDING WA_ZFI_PAGOS_FDV TO ZFI_PAGOS_FDV.

ENDMODULE.

*TABLA CONTROL 1
MODULE GET_DATA1 OUTPUT.

SELECT
BUKRS
PAYCODE
METCODE
PAYAMOUNT
PCLAMOUNT
PAYDATE
PAYMETHODNUMBER
COLREFERENCE1
FROM ZFI_PAGOS_FDV INTO CORRESPONDING FIELDS OF TABLE IT_ZFI_PAGOS_FDV
WHERE CUSCODE EQ ZFI_PAGOS_FDV-CUSCODE AND BUKRS EQ ZFI_PAGOS_FDV-BUKRS.
ENDMODULE.

MODULE FILL_DATA2 OUTPUT.
IF SY-STEPL EQ 1.
TC201-LINES = TC201-TOP_LINE + SY-LOOPC - 1.
ENDIF.

MOVE-CORRESPONDING WA_ZFI_PAGOS_FDVD TO ZFI_PAGOS_FDVD.
ENDMODULE.

"TABLA CONTROL 2
MODULE GET_DATA2 OUTPUT.
SELECT
BUKRS
BELNR
DOCCODE
FECHA_DOC
FECHA_VENC
PAYAMOUNT
FROM ZFI_PAGOS_FDVD INTO CORRESPONDING FIELDS OF TABLE IT_ZFI_PAGOS_FDVD
WHERE CUSCODE EQ ZFI_PAGOS_FDV-CUSCODE AND BUKRS EQ ZFI_PAGOS_FDV-BUKRS.

ENDMODULE.

MODULE READ_TABLE INPUT.

*LEE LA TABLA CON EL CAMPO DE IMPORTE ML
IF IND IS NOT INITIAL.

READ TABLE IT_ZFI_PAGOS_FDVD INTO WA_ZFI_PAGOS_FDVD WITH KEY IND.
WA_ZFI_PAGOS_FDVD-PAYAMOUNT = ZFI_PAGOS_FDVD-PAYAMOUNT.
MOVE WA_ZFI_PAGOS_FDVD-PAYAMOUNT TO VALOR.
MOVE VALOR TO ZFI_PAGOS_FDV-PAYAMOUNT.

ENDIF.

ENDMODULE.

MODULE READ_TABLE OUTPUT.

LOOP AT IT_ZFI_PAGOS_FDVD INTO WA_ZFI_PAGOS_FDVD.
WHILE mark2 = ‘X’.
VALOR = VALOR + 1.
BREAK-POINT.
AT END OF PAYAMOUNT.
SUM.

  • MOVE-CORRESPONDING VALOR to WA_ZFI_PAGOS_FDV-PAYAMOUNT.
  • CLEAR VALOR.
    ENDAT.

ENDWHILE.
ENDLOOP.

  • BREAK-POINT.

ENDMODULE.

#6

Este es el flujo logico

PROCESS BEFORE OUTPUT.

  • MODULE STATUS_0200.
    MODULE GET_DATA1.
    MODULE GET_DATA2.
    MODULE READ_TABLE.

LOOP AT IT_ZFI_PAGOS_FDV INTO WA_ZFI_PAGOS_FDV WITH CONTROL TC200.
MODULE FILL_DATA1.
ENDLOOP.

LOOP AT IT_ZFI_PAGOS_FDVD INTO WA_ZFI_PAGOS_FDVD WITH CONTROL TC201.
MODULE FILL_DATA2.
ENDLOOP.

PROCESS AFTER INPUT.

LOOP AT IT_ZFI_PAGOS_FDV.
MODULE GET_DATA1.
MODULE FILL_DATA1.
MODULE READ_TABLE.

ENDLOOP.

LOOP AT IT_ZFI_PAGOS_FDVD.
MODULE GET_DATA2.
MODULE FILL_DATA2.
MODULE READ_TABLE.

ENDLOOP.

MODULE USER_COMMAND_0200.

#7

Hola @mkultra, lo que cuando haces click en el pulsador veo que no levanta el evento.
Yo veo dos posibilidades:

  1. Conviertes ese pulsador en CHECKBOX y a ese le agregas código de función.
  2. Agregar un botón para que ejecutes tu rutina de sumado de los campos marcados.

Saludos.
Si gustas contactarme ajac9426 skype.

#8

Muchas gracias intentare con el checkbox

#9

Seguro te funcionará, saludos estimado.