En el siguiente ejemplo se requiere filtrar sólo las cuentas contables de Caja y Banco, que vienen a ser las cuentas 1200000000 a 1299999999 para el país Perú.
El código debe quedar así:
INITIALIZATION.
* PARA OBTENER LAS CUENTAS CONTABLES PARA EL LIBRO
PERFORM CONSTANTE_RANGO : USING 'CTA_0010' CHANGING LR_SAKNR_12.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_SAKNR-LOW.
PERFORM CTAS_GLOBAL.
PERFORM DISPLAY_F4_HKONT CHANGING S_SAKNR-LOW.
Para ello debemos realizar lo siguiente:
1. Cómo se manejarán constantes, estas se deben de manejar a nivel de la tabla de constantes, por lo tanto se crear la tabla de constantes y luego se registra la constantes según el caso:
2. Luego se cargar la constantes en el programa:
PERFORM CONSTANTE_RANGO : USING 'CTA_0010' CHANGING LR_SAKNR_12.
donde CTA_'CTA_0010'' es el nombre del campo y LR_SAKNR_12 es el rango a quien se le pasarán las cuentas de la tabla de constantes.
FORM CONSTANTE_RANGO USING PI_FIELD TYPE ZPLEFIE_FLDNM
CHANGING PO_RANGE TYPE TABLE.
REFRESH: PO_RANGE.
SELECT SIGNO AS SIGN
OPCION AS OPTION
VALOR1 AS LOW
VALOR2 AS HIGH
INTO TABLE PO_RANGE
FROM ZPLEFITCONST
WHERE PROGRAMA EQ 'ZPLEFIR0302' "<- Este es el nombre del programa
AND CAMPO EQ PI_FIELD.
ENDFORM.
3. Hacemos un select a la tabla de cuentas con los filtros:
FORM CTAS_GLOBAL .
CHECK LINES( GTD_HKONT ) = 0.
" Obtenemos el plan de cuentas
SELECT SINGLE KTOPL INTO GS_KTOPL FROM T001
WHERE BUKRS = P_BUKRS.
" Obtenemos la lista de cuentas
SELECT SAKNR TXT50 INTO TABLE GTD_HKONT FROM SKAT
WHERE SPRAS = SY-LANGU " idioma
AND KTOPL = GS_KTOPL " <- Plan de cuentas
AND SAKNR IN LR_SAKNR_12. "<- Rango de cuentas
ENDFORM. " CTAS_GLOBAL
4. Por última agregamos la rutina con la lógica del matchcode:
FORM DISPLAY_F4_HKONT CHANGING PO_HKONT.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'SAKNR'
WINDOW_TITLE = 'Cuenta Contable'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = GTD_HKONT
RETURN_TAB = GTD_MATCH
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
READ TABLE GTD_MATCH INDEX 1.
IF SY-SUBRC = 0.
MOVE GTD_MATCH-FIELDVAL TO PO_HKONT.
ENDIF.
ENDIF.
ENDFORM.