MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 28/07/16, 14:48:43
fagarcia fagarcia is offline
Junior Member
 
Fecha de Ingreso: jul 2014
Mensajes: 4
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 .
Responder Con Cita
  #2  
Viejo 28/07/16, 15:05:59
Avatar de J e f f
J e f f J e f f is offline
Member
 
Fecha de Ingreso: nov 2007
Localización: Junín, Bs As, Argentina
Mensajes: 91

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?
Responder Con Cita
  #3  
Viejo 28/07/16, 15:29:46
fagarcia fagarcia is offline
Junior Member
 
Fecha de Ingreso: jul 2014
Mensajes: 4
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
Responder Con Cita
  #4  
Viejo 28/07/16, 20:22:58
Avatar de J e f f
J e f f J e f f is offline
Member
 
Fecha de Ingreso: nov 2007
Localización: Junín, Bs As, Argentina
Mensajes: 91

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

Saludos,
Responder Con Cita
  #5  
Viejo 28/07/16, 21:43:34
fagarcia fagarcia is offline
Junior Member
 
Fecha de Ingreso: jul 2014
Mensajes: 4
Todavia....sigue trayendo el campo en blanco.
Responder Con Cita
  #6  
Viejo 28/07/16, 22:41:27
Avatar de J e f f
J e f f J e f f is offline
Member
 
Fecha de Ingreso: nov 2007
Localización: Junín, Bs As, Argentina
Mensajes: 91

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.

Úlima edición por J e f f fecha: 28/07/16 a las 22:43:28.
Responder Con Cita
  #7  
Viejo 29/07/16, 15:03:26
fagarcia fagarcia is offline
Junior Member
 
Fecha de Ingreso: jul 2014
Mensajes: 4
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.
Responder Con Cita
  #8  
Viejo 29/07/16, 16:42:43
Avatar de J e f f
J e f f J e f f is offline
Member
 
Fecha de Ingreso: nov 2007
Localización: Junín, Bs As, Argentina
Mensajes: 91

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,
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 08:56:25.


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