MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Ayuda en creacion de programa. (foro/showthread.php?t=76032)

fagarcia 28/07/16 13:48:43

Ayuda en creacion de programa.
 
Hola, he seguido mucho este foro con las diferentes dudas que se me han presentado y encontrado la mayoria de respuesta. En el caso actual estoy aprendiendo un poco de abap y creando un programa el cual no podido lograr resolver el problema.

Estoy tratando de realizar un programa que busque los datos y lo inserte en una tabla interna y luego de buscar los datos de la función spell_amount actualizar en la tabla interna en su campo correspondiente.

El problema esta en llenar el campo ITAB01-IMPORTE_TEXTO

Ver codigo del progama:
*&---------------------------------------------------------------------*
*& Report Z_IMPRESION_ORDEN_PAGO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Z_IMPRESION_ORDEN_PAGO.

TABLES : RBKP, LFA1, LFBK, BNKA.

DATA: monto_en_letras TYPE spell, "VARIABLES PARA FUNCIONES"
texto type string. "VARIABLES PARA FUNCIONES"

DATA: BEGIN OF ITAB01 OCCURS 0,
BELNR LIKE RBKP-BELNR , " Numero de Factura
XBLNR LIKE RBKP-XBLNR , " Referencia
RMWWR LIKE RBKP-RMWWR, " IMPORTE EN MONEDA BRUTO"
WAERS LIKE RBKP-WAERS, "MONEDA DE DOCUMENTO
ZZNUMFISC LIKE RBKP-ZZNUMFISC, " NUMERO DE COMPROBANTES FISCALES
LIFNR LIKE LFA1-LIFNR, "NO DE ACREEDOR
NAME1 LIKE LFA1-NAME1, " NOMBRE DE ACREEDOR
STCD1 LIKE LFA1-STCD1," RNC O CEDULA
ORT01 like LFA1-ORT01, " POBLACION
ORT02 LIKE LFA1-ORT02, " DISTRITO
STRAS LIKE LFA1-STRAS, "CALLE
KOINH like LFBK-KOINH, " TITULAR DE LA CUENTA
BANKN LIKE LFBK-BANKN, " CUENTA CONTABLE
BANKA LIKE BNKA-BANKA, "NOMBRE DE BANCO
ZZPERSONAFISICA LIKE BUT000-ZZPERSONAFISICA, " TIPO DE EMPRESA
TIPO_PROPIEDAD LIKE ZBP_PERSONAFISIC-TIPO_PROPIEDAD,
SOLICT LIKE LFA1-NAME1, "SOLICITADOR
APROBA LIKE LFA1-NAME1, "APROBADO
IMPORTE_TEXTO TYPE string, " IMPORTE EN VERSION TEXTO
END OF ITAB01.

DATA ITAB01_wa LIKE ITAB01.

SELECTION-SCREEN BEGIN OF BLOCK blk1.


PARAMETERS: P_FACT TYPE RBKP-BELNR OBLIGATORY,
P_EJE TYPE RBKP-GJAHR OBLIGATORY,
P_SOC TYPE RBKP-BUKRS OBLIGATORY,
P_CONC TYPE BUT000-ZZDESC_ACTIV OBLIGATORY,
P_SOLT TYPE LFA1-NAME1 OBLIGATORY,
P_APR TYPE LFA1-NAME1 OBLIGATORY.

SELECTION-SCREEN END OF BLOCK blk1.



START-OF-SELECTION.


SELECT SINGLE
RBKP~BELNR
RBKP~XBLNR
RBKP~RMWWR
RBKP~WAERS
RBKP~ZZNUMFISC
LFA1~LIFNR
LFA1~NAME1
LFA1~STCD1
LFA1~ORT01
LFA1~ORT02
LFBK~KOINH
LFBK~BANKN
BNKA~BANKA
but000~ZZPERSONAFISICA
INTO CORRESPONDING FIELDS OF ITAB01
from RBKP LEFT JOIN LFA1 ON RBKP~LIFNR = LFA1~LIFNR JOIN BUT000 ON LFA1~LIFNR = BUT000~PARTNER JOIN LFBK ON BUT000~PARTNER = LFBK~LIFNR JOIN BNKA ON BNKA~BANKL = LFBK~BANKL
WHERE RBKP~BELNR = P_FACT AND RBKP~GJAHR = P_EJE AND RBKP~BUKRS = P_SOC.


SELECT SINGLE TIPO_PROPIEDAD INTO ITAB01-TIPO_PROPIEDAD FROM ZBP_PERSONAFISIC
WHERE COD_PERSONAFISICA = ITAB01-ZZPERSONAFISICA.

CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = ITAB01-RMWWR "Importe (valor) a convertir
currency = 'X'
filler = ' '
language = sy-langu
IMPORTING
in_words = monto_en_letras. "Cantidad o importe en letras

"Ejemplo de como leer el importe en letras
concatenate monto_en_letras-word 'con'
monto_en_letras-decimal(2) '/100' " 'decimales'
into texto separated by space.


loop at itab01.
CASE ITAB01-BELNR.
WHEN P_FACT.
ITAB01-IMPORTE_TEXTO = texto.
WHEN OTHERS.
ENDCASE.
MODIFY ITAB01.
ENDLOOP.


WRITE: / 'IMPORTE' , ITAB01-RMWWR.
WRITE: / 'REFERENCIA:' , ITAB01-XBLNR.
WRITE: / 'MONEDA:' , ITAB01-WAERS.
WRITE: / 'COMPROBANTE' , ITAB01-ZZNUMFISC.
WRITE: / 'ACREEDOR' , ITAB01-LIFNR.
WRITE: / 'NOMBRE' , ITAB01-NAME1.
WRITE: / 'RNC' , ITAB01-STCD1.
WRITE: / 'DISTRITO' , ITAB01-ORT01.
WRITE: / 'POBLACION' , ITAB01-ORT02.
WRITE: / 'CALLE ' , ITAB01-STRAS.
WRITE: / 'TITULAR' , ITAB01-KOINH.
WRITE: / 'NUMERO DE CUENTA',ITAB01-BANKN.
WRITE: / 'BANCO', ITAB01-BANKA.
WRITE: / 'PERSONA FISICA', ITAB01-ZZPERSONAFISICA.
WRITE: / 'TIPO DE PROPIEDAD', ITAB01-TIPO_PROPIEDAD.
WRITE: / 'IMPORTE TEXTO: ', ITAB01-IMPORTE_TEXTO.
WRITE: / 'IMPORTE TEXTO: ', texto .

J e f f 28/07/16 14:05:59


Chequeaste que el programa pase por la setenncia del case donde haces la asignacion a ITAB01-IMPORTE_TEXTO? Si pasa por aca y hace la asignacion correctamente, no deberias tener problemas para visualizar el importe en texto.
Si no es eso, cual es el problema especificamente?

fagarcia 28/07/16 14:29:46

El pasa por el case pero el modify al campo no me funciona. :(

Puedes verificar o darme un ejemplo de ingresar los datos de una función en tabla interna para verificar que estoy haciendo mal

J e f f 28/07/16 19:22:58


El error esta en el modify! Deberia ser MODIFY TABLE itab o MODIFY TABLE itab FROM itab. Prueba con eso y dime!

Saludos,

fagarcia 28/07/16 20:43:34

Todavia....sigue trayendo el campo en blanco.

J e f f 28/07/16 21:41:27


Acabo de probar parte del codigo y con el MODIFY funciona. Estas seguro que pasa por el case y por la asignacion? Sino proba antes de hacer el LOOP llamar a la funcion

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = p_fact
IMPORTING
output = p_fact.

Como te digo, me funciono sin problemas! El codigo parece estar bien.

fagarcia 29/07/16 14:03:26

No se todavia por que no funciona el progama.

Cree otro programa de prueba para verificar y todavia no me funciona.

Favor tu ayuda para ver por que este tampoco me funciona.

REPORT zprueba.

DATA: monto_en_letras TYPE spell, "VARIABLES PARA FUNCIONES"
texto type string. "VARIABLES PARA FUNCIONES"


SELECTION-SCREEN BEGIN OF BLOCK blk1.


PARAMETERS: P_NUMERO TYPE RBKP-BELNR OBLIGATORY.


SELECTION-SCREEN END OF BLOCK blk1.


DATA: BEGIN OF ITAB01 OCCURS 0,
BELNR LIKE RBKP-BELNR ,
END OF ITAB01.


loop at itab01.
ITAB01-BELNR = '100'. "P_NUMERO'.
MODIFY TABLE itab01.
ENDLOOP.

WRITE: / 'IMPORTE TABLA' , ITAB01-BELNR.

J e f f 29/07/16 15:42:43


Ok. El prob aca es el siguiente. No tenes registros en la tabla ITAB. Deberias antes de hacer el loop insertar un registro, sino no loopea y por lo tanto no hace el modify. Fijate en el programa anterior, si el select levanta registros.

Saludos,


Husos Horarios son GMT. La hora en este momento es 16:53:04.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web