#1
|
|||
|
|||
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 . |
#2
|
||||
|
||||
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? |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
El error esta en el modify! Deberia ser MODIFY TABLE itab o MODIFY TABLE itab FROM itab. Prueba con eso y dime! Saludos, |
#5
|
|||
|
|||
Todavia....sigue trayendo el campo en blanco.
|
#6
|
||||
|
||||
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 21:43:28. |
#7
|
|||
|
|||
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. |
#8
|
||||
|
||||
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, |
Herramientas | Buscar en Tema |
Desplegado | |
|
|