Cálculo del Dígito Verificador del CDC

28 06 2023

En Facturación Electrónica de Paraguay, a fin de mantener una única identificación para cada documento electrónico, la SET implementó el código de control o CDC.
El completo glosario, lo pueden ubicar en el siguiente link a partir de la página 214:
https://ekuatia.set.gov.py/portal/rest/jcr/repository/collaboration/sites/ekuatia/documents/documentacion/documentacion-tecnica/Manual%20T%C3%A9cnico%20Versi%C3%B3n%20150.pdf?version=2


Básicamente el CDC es la concatenación de 11 campos:



Código ABAP para la obtención del Dígito Verificador del CDC en Módulo 11:

DATA: 
lv_cdc(43)       TYPE c, «Primeros diez campos
lv_dv_cdc        TYPE c, «Dígito Verificador
lv_cdc_final(44) TYPE c. «CDC completo (los once campos concatenados)


* 1ro – Hay que concatenar los primeros 10 campos del CDC en una variable de 43 caracteres.
CONCATENATE campo1 campo2 campo3 campo4 campo5 campo6 campo7 campo8 campo9 campo10 into lv_cdc.


* 2do – Pasar esa variable de 43 caracteres al siguiente PERFORM que devuelve como resultado el Dígito Verificador en Módulo 11
PERFORM calcula_dv_del_cdc USING     lv_cdc
                              CHANGING lv_dv_cdc.

*&———————————————————————*
*&      Form  CALCULA_DV_DEL_CDC
*&———————————————————————*
FORM calcula_dv_del_cdc  USING     fw_cdc    TYPE char43
                          CHANGING fw_dv_cdc TYPE char1.
  DATA: lv_cdc    TYPE char43,
        lv_veces  TYPE i,
        lv_factor TYPE i,
        lv_suma   TYPE i,
        lv_pos    TYPE i.

  lv_cdc = fw_cdc.
  CONDENSE lv_cdc NO-GAPS.
  lv_veces = strlen( lv_cdc ).

  lv_factor = 2.
  CLEAR lv_suma.
  lv_pos = lv_veces – 1.

  DO lv_veces TIMES.
    lv_suma = lv_suma + ( lv_cdc+lv_pos(1) * lv_factor ).
    lv_pos = lv_pos – 1.
    lv_factor = lv_factor + 1.
    IF lv_factor > 11.
      lv_factor = 2.
    ENDIF.
  ENDDO.

  lv_factor = lv_suma MOD 11.

  IF lv_factor > 1.
    lv_factor = 11 – lv_factor.
    fw_dv_cdc = lv_factor.

  ELSE.
    fw_dv_cdc = ‘0’.
  ENDIF.

ENDFORM.                    » CALCULA_DV_DEL_CDC

* 3ro – Finalmente se arma el CDC completo (los once campos concatenados):
  CONCATENATE lv_cdc lv_dv_cdc INTO lv_cdc_final.


Technorati tags: sdn blogger





ALV Grid Editable – Campo que admita texto en Minúsculas y Mayúsculas

24 01 2022

Para que un campo de un ALV Grid sea editable y además permita texto tanto en mayúscula como también minúscula. Es necesario agregar en el FIELDCATALOG la opción de LOWERCASE

Pero además es necesario que el campo editable esté referenciado a un elemento de dato cuyo dominio acepte texto en minúsculas:


Technorati tags: sdn blogger





Agregar una “Ayuda de búsqueda” a un campo de una transacción estándar

16 06 2017

En este ejemplo vamos a agregar una “Ayuda de búsqueda” en el campo estándar “AFNAM” (Solicitante) para las transacciones ME21N/ME22N/ME23N (Pedido de compra).
image
Pero los pasos a seguir son los mismos para cualquier otra transacción.

 

Debemos determinar la estructura y el campo que vamos a modificar.
Para eso en la transacción ME21N/ME22N/ME23N nos posicionamos en el campo "Solicitante", presionamos F1… y click en "Información técnica":
image

 

Paso seguido vamos a la transacción SE11 para ver la estructura obtenida en el paso anterior (MEPO1211).
image
Y hacemos doble click en la estructura “MEPO1211_DATA”.

 

A continuación creamos una “Estructura de inclusión”.
image

Por ejemplo ZHELPAFNAM
image
Y apretamos el botón “Appending On”.

 

Luego hay que ir a la solapa “Ayuda p./Verif.entr”, posicionar el cursor en el campo AFNAM y click en el botón “Ay.búsq.”.
image
Completar con el “Nombre de la tabla” (MEPO1211_DATA) y el “Nombre del campo” (AFNAM).

Guardamos y activamos la estructura de ZHELPAFNAM.

 

Finalmente sólo resta volver a la estructura anterior (MEPO1211_DATA). Y desde la solapa “Ayuda p./Verif.entr” hay que agregar la ayuda que queramos que tenga el campo AFNAM.
image

En este caso se agregó una ayuda Z creada especialmente… pero podría haber sido una ayuda estándar.

Espero que les sirva!


Technorati tags: