Act. en Masivo indicadores Retención Deudor XD99
Debido a la militante que se tiene con la transacción XD99 en referencia a la actualización en masivo de los indicadores de retención, se publica el siguiente Batch Input que permite realizar cambios en masa, ya sean de modificación, eliminación o adición de nuevos indicadores. Se publica únicamente la base, ya si quieren pueden generar un ALV, reporte que muestre al final el resultado, etc. pero eso ya es forma. Espero les pueda aportar, me vi en la necesidad de hacerlo de manera relámpago por la nueva reforma tributaria aquí en Colombia.
************************************************************************ * Descripción : Cambio Indicadores de Retencion Clientes * Fecha : 2017/01/17 * Autor : Luis Ehrman Gutierrez report ZACT_INDIC_DEUDORES. *Estructura del Plano *Cliente Soc. T.ret. I.ret. Act. Desde Hasta Eliminar *100000061 1000 A1 01 X 01.01.2013 01.01.9999 X *100000061 1000 A2 01 X 01.01.2013 01.01.9999 *100000061 1000 AC 01 X 01.01.2013 01.01.9999 *100000061 1000 AD 01 01.01.2013 01.01.9999 *100000061 1000 AI 01 X 01.01.2013 01.01.9999 *100000061 1000 AS 01 X 01.01.2013 01.01.9999 *100000061 1000 AT 01 X 01.01.2013 01.01.9999 *100000061 1000 AV 01 01.01.2013 01.01.9999 *&---------------------------------------------------------------------* *& Include Declaracionde Variables *&---------------------------------------------------------------------* DATA: IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA WITH HEADER LINE, IT_BDCMSGCOLL TYPE STANDARD TABLE OF BDCMSGCOLL WITH HEADER LINE, V_MODE TYPE BDCMODE, V_STATUS(120) TYPE C. DATA: BEGIN OF IT_KNBW OCCURS 100. INCLUDE STRUCTURE KNBW. DATA: END OF IT_KNBW. TYPES: BEGIN OF ST_CARGA, KUNNR TYPE KNBW-KUNNR, BUKRS TYPE KNBW-BUKRS, WITHT TYPE WITHT, "Indicador para tipo de retenciones WT_WITHCD TYPE WT_WITHCD, "INDICADOR DE RETENCIÓN WT_AGENT TYPE WT_WTAGT, "¿AUTORIZADO A AUTORRETENCIÓN DE IMPUESTOS? WT_AGTDF TYPE CHAR10, "AUTORIZADO PARA LA RETENCIÓN DE IMPUESTOS A PARTIR DE WT_AGTDT TYPE CHAR10, "AUTORIZACIÓN DE RETENCIÓN DE IMPUESTOS HASTA DELE TYPE CHAR1, END OF ST_CARGA. ** INTERNAL TABLES DEFINITION DATA: TI_CARGA TYPE STANDARD TABLE OF ST_CARGA, WA_CARGA TYPE ST_CARGA. DATA: ARCH_IN2 TYPE STRING. PARAMETERS: ARCH_IN LIKE RLGRAP-FILENAME DEFAULT 'C:\'. AT SELECTION-SCREEN ON VALUE-REQUEST FOR ARCH_IN. DATA: FNAME LIKE RLGRAP-FILENAME. * Llamar funcion de explorador para seleccionar el archivo plano CALL FUNCTION 'F4_FILENAME' IMPORTING FILE_NAME = FNAME. ARCH_IN = FNAME. ARCH_IN = FNAME. START-OF-SELECTION. PERFORM CARGA_ARCHIVO. LOOP AT TI_CARGA INTO WA_CARGA. PERFORM BATCH_XD02. ENDLOOP. *&---------------------------------------------------------------------* *& Form CARGA_ARCHIVO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM CARGA_ARCHIVO. DATA: LC_TEXTO(50). IF ARCH_IN(1) EQ '/' OR ARCH_IN(1) EQ '\'. ** OPEN FLAT FILE ** ABRE EL ARCHIVO PLANO * ECC. Descomentariar para versión 6.0 OPEN DATASET ARCH_IN IN TEXT MODE FOR INPUT ENCODING NON-UNICODE. " OPEN DATASET ARCH_IN FOR INPUT. IF SY-SUBRC NE 0. LC_TEXTO = 'Error al abrir el archivo'(M01). CALL FUNCTION 'POPUP_FOR_INTERACTION' EXPORTING HEADLINE = 'ERROR' TEXT1 = LC_TEXTO TICON = 'E' BUTTON_1 = 'Aceptar'. EXIT. ENDIF. DO. READ DATASET ARCH_IN INTO WA_CARGA. IF SY-SUBRC EQ 4. LC_TEXTO = 'No es posible transferir la inf del archivo'(M02). CALL FUNCTION 'POPUP_FOR_INTERACTION' EXPORTING HEADLINE = 'ERROR' TEXT1 = LC_TEXTO TICON = 'E' BUTTON_1 = 'Aceptar'. EXIT. ENDIF. APPEND WA_CARGA TO TI_CARGA. ENDDO. CLOSE DATASET ARCH_IN. IF SY-SUBRC EQ 0. LC_TEXTO = 'Archivo Leido'(M03). CALL FUNCTION 'POPUP_FOR_INTERACTION' EXPORTING HEADLINE = 'INFORMACION' TEXT1 = LC_TEXTO TICON = 'I' BUTTON_1 = 'Aceptar'. ENDIF. ELSE. *//STAR OF H&SSOFT-HATH - 01.05.2010. *//adici¤n de funci¤n GUI_UPLOAD para version 4.7 o mayor. IF SY-SAPRL >= '470'. ARCH_IN2 = ARCH_IN. CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = ARCH_IN2 FILETYPE = 'DAT' * HAS_FIELD_SEPARATOR = '00' TABLES DATA_TAB = TI_CARGA. ELSE. CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME = ARCH_IN FILETYPE = 'DAT' TABLES DATA_TAB = TI_CARGA. ENDIF. *//END OF H&SSOFT-HATH - 01.05.2010. IF SY-SUBRC <> 0. LC_TEXTO = 'Archivo No se puede leer'(M04). CALL FUNCTION 'POPUP_FOR_INTERACTION' EXPORTING HEADLINE = 'INFORMACION' TEXT1 = LC_TEXTO TICON = 'I' BUTTON_1 = 'Aceptar'. ENDIF. ENDIF. LOOP AT TI_CARGA INTO WA_CARGA. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = WA_CARGA-KUNNR IMPORTING OUTPUT = WA_CARGA-KUNNR. MODIFY TI_CARGA FROM WA_CARGA. ENDLOOP. ENDFORM. "carga_archivo *&---------------------------------------------------------------------* *& Include ZINDI_DEUDOR_FOR *&---------------------------------------------------------------------* FORM BDC_DYNPRO USING PROGRAM DYNPRO. CLEAR IT_BDCDATA. IT_BDCDATA-PROGRAM = PROGRAM. IT_BDCDATA-DYNPRO = DYNPRO. IT_BDCDATA-DYNBEGIN = 'X'. APPEND IT_BDCDATA. ENDFORM. " bdc_dynpro *&---------------------------------------------------------------------* *& Form bdc_field *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->FNAM text * -->FVAL text *----------------------------------------------------------------------* FORM BDC_FIELD USING FNAM FVAL. CLEAR IT_BDCDATA. IT_BDCDATA-FNAM = FNAM. IT_BDCDATA-FVAL = FVAL. APPEND IT_BDCDATA. ENDFORM. " bdc_field *&---------------------------------------------------------------------* *& Form BATCH_XD02 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM BATCH_XD02. REFRESH IT_BDCDATA. CLEAR: IT_BDCDATA. DATA: CT_OPCIONES TYPE CTU_PARAMS, PG TYPE P DECIMALS 0, V_POS1 TYPE CHAR2, V_POS2 TYPE CHAR20. LOOP AT TI_CARGA INTO WA_CARGA. REFRESH IT_KNBW. CLEAR: IT_KNBW,V_POS1,V_POS2. SELECT * INTO TABLE IT_KNBW FROM KNBW WHERE KUNNR = WA_CARGA-KUNNR "Llega del Plano AND BUKRS = WA_CARGA-BUKRS. "Llega del Plano PERFORM BDC_DYNPRO USING 'SAPMF02D' '0101'. PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RF02D-D0610'. PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'. PERFORM BDC_FIELD USING 'RF02D-KUNNR' WA_CARGA-KUNNR. "Llega del Plano PERFORM BDC_FIELD USING 'RF02D-BUKRS' WA_CARGA-BUKRS. "Llega del Plano PERFORM BDC_FIELD USING 'RF02D-D0610' 'X'. PERFORM BDC_DYNPRO USING 'SAPMF02D' '0610'. CLEAR: PG, V_POS1. "Consulta y trae de la Tabla Standar todos los indicadores de Retencio del Duedor READ TABLE IT_KNBW WITH KEY KUNNR = WA_CARGA-KUNNR BUKRS = WA_CARGA-BUKRS WITHT = WA_CARGA-WITHT. IF SY-SUBRC NE 0 AND WA_CARGA-DELE = 'X'. "Verifica primero si existe antes de borrar V_STATUS = 'El indicador que intenta borrar no existe'. ELSE. IF SY-SUBRC EQ 0. V_POS1 = SY-TABIX. "Determina en que posicion estara el indicador en el Dynpro IF V_POS1 > 7. "Segun las propiedades del standar muestra 7 posiciones PG = 8 / SY-TABIX. "Si el indicador a Modificar esta por fuera de 7 posiciones "guardamos cuantos pagedown daremos ENDIF. ELSE. "Si vamos a ingresar un nuevo indicador ingresamos aqui DESCRIBE TABLE IT_KNBW LINES V_POS1. "Validamos cuantos indicadores tiene el Deudor V_POS1 = V_POS1 + 1. "le sumanos una posicion mas a registrar. IF V_POS1 > 7. "Segun las propiedades del standar muestra 7 posiciones PG = 8 / V_POS1. "Si el indicador a Modificar esta por fuera de 7 posiciones "guardamos cuantos pagedown daremos ENDIF. ENDIF. IF PG > 0. "Determina la cantida de pagedown V_POS1 = SY-TABIX - ( PG * 7 ). "Determinara la posicion en la cual se ubicara el cursor ENDIF. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' "Se adiciona un cero a la izquierda EXPORTING INPUT = V_POS1 IMPORTING OUTPUT = V_POS1. DO PG TIMES . PERFORM BDC_FIELD USING 'BDC_OKCODE' '=P+'. "Numero de pagedown PERFORM BDC_DYNPRO USING 'SAPMF02D' '0610'. ENDDO. IF WA_CARGA-DELE = 'X'. PERFORM BDC_FIELD USING 'BDC_OKCODE' 'LDEL'. CONCATENATE 'KNBW-WITHT(' V_POS1 ')' INTO V_POS2. PERFORM BDC_FIELD USING 'BDC_CURSOR' V_POS2. ELSE. CONCATENATE 'KNBW-WITHT(' V_POS1 ')' INTO V_POS2. PERFORM BDC_FIELD USING 'BDC_CURSOR' V_POS2. PERFORM BDC_FIELD USING V_POS2 WA_CARGA-WITHT. "Llega del Plano CONCATENATE 'KNBW-WT_WITHCD(' V_POS1 ')' INTO V_POS2. PERFORM BDC_FIELD USING V_POS2 WA_CARGA-WT_WITHCD. "Llega del Plano CONCATENATE 'KNBW-WT_AGENT(' V_POS1 ')' INTO V_POS2. PERFORM BDC_FIELD USING V_POS2 WA_CARGA-WT_AGENT. "Llega del Plano CONCATENATE 'KNBW-WT_AGTDF(' V_POS1 ')' INTO V_POS2. PERFORM BDC_FIELD USING V_POS2 WA_CARGA-WT_AGTDF. "Llega del Plano CONCATENATE 'KNBW-WT_AGTDT(' V_POS1 ')' INTO V_POS2. PERFORM BDC_FIELD USING V_POS2 WA_CARGA-WT_AGTDT. "Llega del Plano ENDIF. PERFORM BDC_DYNPRO USING 'SAPMF02D' '0610'. PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPDA'. CONCATENATE 'KNBW-WITHT(' V_POS1 ')' INTO V_POS2. PERFORM BDC_FIELD USING 'BDC_CURSOR' V_POS2. CLEAR IT_BDCMSGCOLL[]. "Opciones de Parametros para hacer el llamado de la tx CT_OPCIONES-DEFSIZE = 'X'. "Omite resolicion de pantalla del usuario y maneja el standar de SAP CT_OPCIONES-DISMODE = 'N'. "V_MODE. N= No visualiza, A= Visualiza CT_OPCIONES-UPDMODE = 'S'. " Ejecuta la transacción CALL TRANSACTION 'XD02' USING IT_BDCDATA OPTIONS FROM CT_OPCIONES "Se incluyen los Parametros MESSAGES INTO IT_BDCMSGCOLL. IF SY-SUBRC EQ 0. WAIT UP TO '1' SECONDS. COMMIT WORK AND WAIT. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. ELSE. ROLLBACK WORK. ENDIF. DATA: V_LOG(120) TYPE C. LOOP AT IT_BDCMSGCOLL. "Lee e interpreta el mensaje que resulta de Batch Input CLEAR V_LOG. CALL FUNCTION 'MESSAGE_TEXT_BUILD' EXPORTING MSGID = IT_BDCMSGCOLL-MSGID MSGNR = IT_BDCMSGCOLL-MSGNR MSGV1 = IT_BDCMSGCOLL-MSGV1 MSGV2 = IT_BDCMSGCOLL-MSGV2 MSGV3 = IT_BDCMSGCOLL-MSGV3 MSGV4 = IT_BDCMSGCOLL-MSGV4 IMPORTING MESSAGE_TEXT_OUTPUT = V_LOG. IF IT_BDCMSGCOLL-MSGTYP EQ 'S'. V_STATUS = V_LOG. ELSEIF IT_BDCMSGCOLL-MSGTYP EQ 'E'. V_STATUS = V_LOG. ENDIF. ENDLOOP. ENDIF. ENDLOOP. ENDFORM. "BATCH_XD02 |
Husos Horarios son GMT. La hora en este momento es 23:37:02. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web