Ver Mensaje Individual
  #2  
Viejo 25/08/15, 20:27:46
SSSS SSSS is offline
Senior Member
 
Fecha de Ingreso: mar 2009
Localización: Argentina
Mensajes: 148

Hola oscarzaid,
Lo que yo realice es por medio de una función que llama al smarform obtener el codigo de barra.
Por ejmplo la funcion se llamo:Z_SDMF_ARMA_CODIGO_DE_BARRA
dentro de la funcion entre otras cosas....
obtengo CUIT CODIGO XBLNR CAE
Te copio el codigo de la función y decile a tu programador que realice esto:

FUNCTION z_sdmf_arma_codigo_de_barra.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(EX_BUKRS) TYPE VBRK-BUKRS
*" REFERENCE(EX_FKART) TYPE VBRK-FKART
*" REFERENCE(EX_XBLNR) TYPE VBRK-XBLNR
*" REFERENCE(EX_VBELN) TYPE VBRK-VBELN
*" EXPORTING
*" REFERENCE(IM_CODBAR) TYPE ZSDES0008
*"----------------------------------------------------------------------

TYPES: BEGIN OF tyl_cae,
cae_num TYPE j_1acae-cae_num,
cae_duedate TYPE j_1acae-cae_duedate,
END OF tyl_cae.

DATA: wl_cae TYPE tyl_cae.

DATA: vl_codigo TYPE j_1aotdet-j_1aoftp,
vl_cat_doc TYPE j_1aotdet-j_1adoccls,
vl_cuit TYPE t001z-paval,
vl_codbar_aux TYPE zsdde0031,
vl_i TYPE i,
vl_i2 TYPE i,
vl_digito TYPE i,
vl_suma_par TYPE i,
vl_suma_impar TYPE i,
vl_dig TYPE c LENGTH 1.

* Recupero el CUIT de la sociedad
SELECT SINGLE paval
FROM t001z
INTO vl_cuit
WHERE bukrs = ex_bukrs
AND party = 'J1AIDN'.

* Recupero el código del documento
CALL FUNCTION 'Z_SDMF_LEE_CODIGO_DOCUMENTO'
EXPORTING
ex_fkart = ex_fkart
ex_letra = ex_xblnr+4(1)
IMPORTING
im_codigo = vl_codigo
im_cat_doc = vl_cat_doc.

* Recupero el CAE/CAEA y su vencimiento
SELECT SINGLE cae_num
cae_duedate
INTO wl_cae
FROM j_1acae
WHERE cae_ref = ex_vbeln.

CONCATENATE vl_cuit
vl_codigo
ex_xblnr(4)
wl_cae-cae_num
wl_cae-cae_duedate
INTO im_codbar-codbar.
CONDENSE im_codbar-codbar.

* Genero el código verificador
vl_codbar_aux = im_codbar-codbar.
vl_i = 1.

DO.
IF vl_codbar_aux(1) EQ ' '.
EXIT.
ENDIF.
vl_i2 = vl_i MOD 2.
IF vl_i2 EQ 0.
vl_suma_par = vl_suma_par + vl_codbar_aux(1).
ELSE.
vl_suma_impar = vl_suma_impar + vl_codbar_aux(1).
ENDIF.
SHIFT vl_codbar_aux BY 1 PLACES.
vl_i = vl_i + 1.
ENDDO.
vl_suma_impar = vl_suma_impar * 3.

vl_suma_par = vl_suma_par + vl_suma_impar.

vl_digito = vl_suma_par MOD 10.
IF vl_digito NE 0.
vl_digito = 10 - vl_digito .
vl_dig = vl_digito.
ELSE.
vl_dig = vl_digito.
ENDIF.
CONCATENATE im_codbar-codbar vl_dig INTO im_codbar-codbar_cv.
Responder Con Cita