Ayuda SAP

Suma de valores en Table Control

Etiquetas: #<Tag:0x00007f01b643a198>

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

@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

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.

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.

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.

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.

Muchas gracias intentare con el checkbox

Seguro te funcionará, saludos estimado.