Sei sulla pagina 1di 63

*&---------------------------------------------------------------------* *& Include YFIP0181FOR *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form F_GET_FILE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_P_PATH text *----------------------------------------------------------------------*

FORM F_GET_FILE CHANGING P_P_PATH. REFRESH RETFILETABLE. CLEAR: RETRC, RETUSERACTION. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG EXPORTING MULTISELECTION = ABAP_FALSE CHANGING FILE_TABLE = RETFILETABLE RC = RETRC USER_ACTION = RETUSERACTION. READ TABLE RETFILETABLE INTO P_P_PATH INDEX 1. ENDFORM. " F_GET_FILE

*&---------------------------------------------------------------------* *& Form F_UPLOAD_TEXT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_P_FILE text *----------------------------------------------------------------------* FORM F_UPLOAD_TEXT USING P_P_FILE. * El archivo para cargar a los ganaderos que se van a excluir DATA L_FILENAME TYPE RLGRAP-FILENAME. L_FILENAME = P_P_FILE. REFRESH TI_GANEX. CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME = L_FILENAME FILETYPE = 'ASC' TABLES DATA_TAB = TI_GANEX. * IF SY-SUBRC <> 0. ** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO ** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. * ENDIF. ENDFORM. " F_UPLOAD_TEXT

*&---------------------------------------------------------------------* *& Form F_UPLOAD_FILE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_P_PATH text *----------------------------------------------------------------------* FORM F_UPLOAD_FILE USING P_PATH. DATA: V_TABIX TYPE SY-TABIX,

V_CORR V_MONTO V_DSCTO V_F_DOC V_N_CUOT CRE

TYPE TYPE TYPE TYPE TYPE TYPE

CHAR04, CHAR25, CHAR25, CHAR10, CHAR10, C LENGTH 1.

FREE: TI_REPORT,TI_PRIOR. DATA: V_RUCGLORIA TYPE YBCT_DCONSTANTE-ZVALOR. IF P_TER EQ 'X'. DATA L_FILENAME TYPE STRING. L_FILENAME = P_PATH. CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD EXPORTING FILENAME = L_FILENAME FILETYPE = 'BIN' IMPORTING FILELENGTH = INPUT_LENGTH CHANGING DATA_TAB = BINARY_TAB. CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' EXPORTING INPUT_LENGTH = INPUT_LENGTH IMPORTING BUFFER = ZIP_FILE TABLES BINARY_TAB = BINARY_TAB. CHECK NOT BINARY_TAB IS INITIAL. CREATE OBJECT IZIP. CALL METHOD IZIP->LOAD EXPORTING ZIP = ZIP_FILE. REFRESH TI_DATOS_AUX. LOOP AT IZIP->FILES INTO LS_FILES. CALL METHOD IZIP->GET EXPORTING NAME = LS_FILES-NAME IMPORTING CONTENT = LV_XSTRING. CALL METHOD CL_ABAP_CONV_IN_CE=>CREATE EXPORTING INPUT = LV_XSTRING ENCODING = 'UTF-8' REPLACEMENT = '?' IGNORE_CERR = ABAP_TRUE RECEIVING CONV = L_ADDR. TRY. CLEAR L_STRING. CALL METHOD L_ADDR->READ IMPORTING DATA = L_STRING. CATCH CX_SY_CONVERSION_CODEPAGE.

*Should ignore errors in code conversions CATCH CX_SY_CODEPAGE_CONVERTER_INIT. *Should ignore errors in code conversions CATCH CX_PARAMETER_INVALID_TYPE. CATCH CX_PARAMETER_INVALID_RANGE. ENDTRY. CLEAR WA_ROWS. REFRESH ROWS. SPLIT L_STRING AT CL_ABAP_CHAR_UTILITIES=>CR_LF INTO TABLE ROWS. CLEAR: V_TABIX, V_CORR,V_MONTO,V_DSCTO, V_F_DOC,V_N_CUOT, CRE . CRE = CL_ABAP_CONV_IN_CE=>UCCP( '0009' ). CLEAR T001. SELECT SINGLE * FROM T001 WHERE BUKRS EQ P_BUKRS. LOOP AT ROWS INTO WA_ROWS. CHECK SY-TABIX NE 1. REPLACE ALL OCCURRENCES OF '"' IN WA_ROWS WITH SPACE IN CHARACTER MODE. REPLACE ALL OCCURRENCES OF ',' IN WA_ROWS WITH SPACE IN CHARACTER MODE. CONDENSE WA_ROWS NO-GAPS. SPLIT WA_ROWS AT CRE INTO WA_DATOS_AUX-LIFNT WA_DATOS_AUX-NAME1 WA_DATO S_AUX-LIFNR WA_DATOS_AUX-GRUPO WA_DATOS_AUX-CDA V_CORR V_MONTO WA_DATOS_AUX-FACTU WA_DAT OS_AUX-DSCTO V_F_DOC V_N_CUOT. WA_DATOS_AUX-CORR WA_DATOS_AUX-MONTO WA_DATOS_AUX-F_DOC WA_DATOS_AUX-N_CUOT = = = = V_CORR. V_MONTO. V_F_DOC. V_N_CUOT.

* Vamos a completar con ceros al codigo de tercero y al ganadero CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = WA_DATOS_AUX-LIFNT IMPORTING OUTPUT = WA_DATOS_AUX-LIFNT. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = WA_DATOS_AUX-LIFNR IMPORTING OUTPUT = WA_DATOS_AUX-LIFNR. APPEND WA_DATOS_AUX TO TI_DATOS_AUX. CLEAR WA_DATOS_AUX. ENDLOOP. ENDLOOP. DELETE TI_DATOS_AUX WHERE LIFNT EQ SPACE AND LIFNR EQ SPACE. * @LF01 Inicio 11062010 IF P_REG EQ 'AQP'. *{ INSERT @001 SELECT CORREL ZVALOR INTO TABLE TI_PRIOR FROM YBCT_DCONSTANTE

WHERE PROYECTO EQ 'ACOPIO' AND BUKRS EQ P_BUKRS AND GRUPO EQ 'LIFNT' AND ESTADO EQ 'A'. *} INSERT @001 *{ DELETE @001 * SELECT ZCORRELATIVO ZVALOR * INTO TABLE TI_PRIOR * FROM ZSDDCONSTANTE * WHERE ZAPLICACION EQ 'ACOPIO' * AND ZCGRUPO EQ 'LIFNT' * AND ZESTADO EQ 'A'. *} DELETE @001 ENDIF. * Vamos a trabajar con los ganaderos que quedaron por prioridad SORT TI_PRIOR BY PRIOR. * @LF01 Fin 11062010 SORT TI_DATOS_AUX BY LIFNT LIFNR. DELETE TI_DATOS_AUX WHERE LIFNT EQ SPACE AND LIFNR EQ SPACE. * Obtenemos el RUC de Gloria *{ DELETE @001 * SELECT SINGLE ZVALOR INTO V_RUCGLORIA * FROM ZSDDCONSTANTE * WHERE ZAPLICACION = 'ACOPIO' * AND ZCGRUPO = 'RUCGLO' * AND ZCORRELATIVO = '001' * AND ZESTADO = 'A'. *} DELETE @001 *{ INSERT @001 CLEAR: T001, T001Z, V_PARTY, V_RUCGLORIA. SELECT SINGLE * FROM T001 WHERE BUKRS EQ P_BUKRS. IF T001-STCEG EQ SPACE. CONCATENATE T001-LAND1 'NIT' INTO V_PARTY SEPARATED BY '-'. SELECT SINGLE * FROM T001Z WHERE BUKRS EQ P_BUKRS AND PARTY EQ V_PARTY. IF T001Z-PAVAL NE SPACE. V_RUCGLORIA = T001Z-PAVAL. ENDIF. ELSE. V_RUCGLORIA = T001-STCEG. ENDIF. *} INSERT @001 DELETE TI_DATOS_AUX WHERE LIFNT EQ V_RUCGLORIA. * @LF01 Inicio 11062010 IF P_REG EQ 'AQP'. LOOP AT TI_PRIOR INTO WA_PRIOR. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = WA_PRIOR-LIFNT IMPORTING OUTPUT = WA_PRIOR-LIFNT. READ TABLE TI_DATOS_AUX INTO WA_DATOS_AUX WITH KEY LIFNT = WA_PRIOR-LIFNT.

CHECK SY-SUBRC EQ 0. LOOP AT TI_DATOS_AUX ASSIGNING <FS_DATOS_AUX> FROM SY-TABIX. IF <FS_DATOS_AUX>-LIFNT EQ WA_PRIOR-LIFNT. <FS_DATOS_AUX>-PRIOR = WA_PRIOR-PRIOR. ELSE. EXIT. ENDIF. ENDLOOP. ENDLOOP. ENDIF. * @LF01 Fin 11062010 DATA V_CONT TYPE CHAR02. IF NOT TI_DATOS_AUX[] IS INITIAL. SELECT BUKRS WERKS LIFNR REGION INTO TABLE TI_PARCELA FROM YPMPARCELA FOR ALL ENTRIES IN TI_DATOS_AUX WHERE BUKRS EQ P_BUKRS AND WERKS IN R_WERKS AND LIFNR EQ TI_DATOS_AUX-LIFNR. SELECT BUKRS WERKS LIFNR REGION APPENDING TABLE TI_PARCELA FROM YPMPARCELA_HISTO FOR ALL ENTRIES IN TI_DATOS_AUX WHERE BUKRS EQ P_BUKRS AND WERKS IN R_WERKS AND LIFNR EQ TI_DATOS_AUX-LIFNR. FREE: TI_DAT_DEL, TI_LFA1 . IF TI_PARCELA[] IS NOT INITIAL. SELECT L~LIFNR L~NAME1 INTO TABLE TI_LFA1 FROM LFA1 AS L INNER JOIN LFB1 AS B ON L~LIFNR = B~LIFNR FOR ALL ENTRIES IN TI_PARCELA WHERE L~LIFNR = TI_PARCELA-LIFNR AND BUKRS = TI_PARCELA-BUKRS. SELECT FROM ON FOR ALL WHERE AND L~LIFNR LFA1 AS L~LIFNR ENTRIES L~LIFNR BUKRS L~NAME1 APPENDING TABLE TI_LFA1 L INNER JOIN LFB1 AS B = B~LIFNR IN TI_DATOS_AUX = TI_DATOS_AUX-LIFNT = P_BUKRS.

TI_DAT_DEL[] = TI_DATOS_AUX[]. SORT TI_DAT_DEL BY LIFNT. DELETE ADJACENT DUPLICATES FROM TI_DAT_DEL COMPARING LIFNT. LOOP AT TI_DATOS_AUX ASSIGNING <FS_DATOS_AUX>. READ TABLE TI_GANEX INTO WA_GANEX WITH KEY LIFNR = <FS_DATOS_AUX>-LIFNR. IF SY-SUBRC EQ 0. DELETE TI_DATOS_AUX WHERE LIFNR = <FS_DATOS_AUX>-LIFNR. CONTINUE. ENDIF. CLEAR WA_REPORT. READ TABLE TI_LFA1 ASSIGNING <FS_LFA1> WITH KEY LIFNR = <FS_DATOS_AUX>-LIFNT. IF SY-SUBRC NE 0.

WA_REPORT-ICON = '@0A@'. WA_REPORT-LIFNT = <FS_DATOS_AUX>-LIFNT. CONCATENATE TEXT-033 <FS_DATOS_AUX>-LIFNT TEXT-034 INTO WA_REPORT-ME SGE SEPARATED BY SPACE. APPEND WA_REPORT TO TI_REPORT. DELETE TI_DATOS_AUX WHERE LIFNT = <FS_DATOS_AUX>-LIFNT. ENDIF. ENDLOOP. LOOP AT TI_DATOS_AUX ASSIGNING <FS_DATOS_AUX>. READ TABLE TI_LFA1 ASSIGNING <FS_LFA1> WITH KEY LIFNR = <FS_DATOS_AUX>-LIFNR. IF SY-SUBRC NE 0. DELETE TI_DATOS_AUX WHERE LIFNR = <FS_DATOS_AUX>-LIFNR. ENDIF. ENDLOOP. ELSE. V_FLAG = 'X'. MESSAGE TEXT-031 TYPE 'S'. ENDIF. ELSE. V_FLAG = 'X'. MESSAGE TEXT-030 TYPE 'S'. ENDIF. ELSEIF P_RET EQ 'X' OR P_RETSEM EQ 'X'. FREE TI_DATOS_RET. FREE TI_DATOS_SUN. CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING FILENAME = P_PATH I_BEGIN_COL = '1' I_BEGIN_ROW = '1' I_END_COL = '10' I_END_ROW = '999' TABLES INTERN = TI_EXCEL EXCEPTIONS INCONSISTENT_PARAMETERS = 1 UPLOAD_OLE = 2 OTHERS = 3. IF SY-SUBRC <> 0. CASE SY-SUBRC. WHEN '2'. MESSAGE TEXT-E01 TYPE 'I'. WHEN OTHERS. MESSAGE TEXT-E02 TYPE 'I'. ENDCASE. ENDIF. CLEAR WA_DATOS_RET. CLEAR WA_DATOS_SUN. DELETE TI_EXCEL WHERE ROW EQ '0001'. V_INDEX = 1. IF P_RET EQ 'X'. LOOP AT TI_EXCEL ASSIGNING <FS_EXCEL> .

IF <FS_EXCEL>-COL = '0001'. V_CONT = STRLEN( <FS_EXCEL>-VALUE ). ENDIF. MOVE <FS_EXCEL>-COL TO V_INDEX. ASSIGN COMPONENT V_INDEX OF STRUCTURE WA_DATOS_RET TO <FS>. REPLACE ALL OCCURRENCES OF ',' IN <FS_EXCEL>-VALUE WITH ''. MOVE <FS_EXCEL>-VALUE TO <FS>. AT END OF ROW. APPEND WA_DATOS_RET TO TI_DATOS_RET. CLEAR WA_DATOS_RET. ENDAT. ENDLOOP. ELSEIF P_RETSEM EQ 'X'. LOOP AT TI_EXCEL ASSIGNING <FS_EXCEL> . IF <FS_EXCEL>-COL = '0001'. V_CONT = STRLEN( <FS_EXCEL>-VALUE ). ENDIF. MOVE <FS_EXCEL>-COL TO V_INDEX. ASSIGN COMPONENT V_INDEX OF STRUCTURE WA_DATOS_SUN TO <FS>. REPLACE ALL OCCURRENCES OF ',' IN <FS_EXCEL>-VALUE WITH ''. MOVE <FS_EXCEL>-VALUE TO <FS>. AT END OF ROW. APPEND WA_DATOS_SUN TO TI_DATOS_SUN. CLEAR WA_DATOS_SUN. ENDAT. ENDLOOP. ENDIF. LOOP AT TI_DATOS_SUN INTO WA_DATOS_SUN. MOVE-CORRESPONDING WA_DATOS_SUN TO WA_DATOS_RET. APPEND WA_DATOS_RET TO TI_DATOS_RET. ENDLOOP. *Vamos a validar campos del documento de retenciones judiciales LOOP AT TI_DATOS_RET INTO WA_DATOS_RET. IF P_RET EQ 'X'. IF WA_DATOS_RET-LIFNT EQ SPACE. CLEAR: V_TEXTO, V_FLAG. V_FLAG = 'X'. V_TEXTO = TEXT-038. MESSAGE V_TEXTO TYPE 'S'. EXIT. ENDIF. ENDIF. IF WA_DATOS_RET-XBLNR EQ SPACE. CLEAR: V_TEXTO, V_FLAG. V_FLAG = 'X'. V_TEXTO = TEXT-039. MESSAGE V_TEXTO TYPE 'S'. EXIT. ELSEIF WA_DATOS_RET-LIFNR EQ SPACE. CLEAR: V_TEXTO, V_FLAG. V_FLAG = 'X'. V_TEXTO = TEXT-040.

MESSAGE V_TEXTO TYPE 'S'. EXIT. ELSEIF WA_DATOS_RET-MONTO EQ SPACE. CLEAR: V_TEXTO, V_FLAG. V_FLAG = 'X'. V_TEXTO = TEXT-041. MESSAGE V_TEXTO TYPE 'S'. EXIT. ENDIF. ENDLOOP. ENDIF. ENDFORM. " F_UPLOAD_FILE *&---------------------------------------------------------------------* *& Form F_PROCESO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_PROCESO . DATA: W_LIFNT V_NAME1 W_FEDOC W_FECHA W_EJERC W_CADE W_XBLNR W_TOTAL W_NAME1 W_SMONTO DATA: V_LENGTH V_DIGITS V_RETURN V_MONTO1 V_MONTO2 V_MONTO3 V_MONCHA V_TYPE. TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE LFA1-LIFNR, LFA1-NAME1, CHAR08, CHAR08, BKPF-GJAHR, CHAR16, STRING, BSEG-WRBTR, BSEG-SGTXT, CHAR20. I, I, BAPIRETURN, BAPIDMBE2, BAPIDMBE2, ACCCR-WRBTR, CHAR25,

CONSTANTS: C_BSCHD TYPE BSCHL VALUE '21', C_BSCHH TYPE BSCHL VALUE '31'. CLEAR W_COUNT. REFRESH TI_DATOX. TI_DATOX[] = TI_DATOS[]. CLEAR WA_DATOS. WA_DATOS-LIFNR = WA_DATOS_AUX-LIFNT. APPEND WA_DATOS TO TI_DATOX. W_LIFNT = WA_DATOS_AUX-LIFNT. SELECT SINGLE NAME1 INTO V_NAME1 FROM LFA1 WHERE LIFNR EQ W_LIFNT.

IF NOT TI_DATOX[] IS INITIAL. SELECT LIFNR BUKRS WITHT WT_SUBJCT WT_WITHCD INTO CORRESPONDING FIELDS OF TABLE TI_LFA1X FROM LFBW FOR ALL ENTRIES IN TI_DATOX WHERE LIFNR = TI_DATOX-LIFNR AND BUKRS = P_BUKRS. ENDIF. DATA: V_REG TYPE I, V_POS TYPE P DECIMALS 2, V_TIMES TYPE I, V_ROWS TYPE I, V_POS2(2) TYPE N, V_UBICACION TYPE STRING. DESCRIBE TABLE TI_DATOS LINES V_REG. IF V_REG > 998. V_POS = CEIL( V_REG / 998 ). MOVE V_POS TO V_TIMES. V_ROWS = 999. ELSE. V_TIMES = 1. ENDIF. FREE TI_DATOSY. TI_DATOSY[] = TI_DATOS[]. READ TABLE TI_T247 ASSIGNING <FS_T247> WITH KEY MNR = P_FDOC+4(2). IF SY-SUBRC = 0. CONCATENATE W_LIFNT V_INI P_PARM <FS_T247>-KTX INTO W_CADE. ENDIF. CLEAR: W_FEDOC,W_FECHA,W_EJERC. CONCATENATE P_FDOC+6(2) P_FDOC+4(2) P_FDOC+0(4) INTO W_FEDOC. CONCATENATE P_BUDAT+6(2) P_BUDAT+4(2) P_BUDAT+0(4) INTO W_FECHA . W_EJERC = P_BUDAT+0(4). CLEAR V_CONTA. DO V_TIMES TIMES . CLEAR W_COUNT. FREE TI_TERCEROS. CLEAR WA_TERCEROS. IF V_REG > 998. TI_DATOS[] = TI_DATOSY[]. DELETE TI_DATOS FROM V_ROWS . ENDIF. V_CONTA = V_CONTA + 1. CONCATENATE W_CADE V_CONTA INTO W_XBLNR. DATA FORMATO_DEC LIKE USR01-DCPFM. SELECT SINGLE DCPFM INTO FORMATO_DEC FROM USR01 WHERE BNAME = SY-UNAME. CLEAR T001. SELECT SINGLE * FROM T001

WHERE BUKRS EQ P_BUKRS. CLEAR: WA_DOCUMENTHEADER,W_OBJ_TYPE,W_OBJ_KEY,W_OBJ_SYS,V_POSICION, WA_PAYABLE,WA_CURRENCY,WA_RETURN. FREE: TI_PAYABLE, TI_CURRENCY, TI_RETURN. **** Completando la cabecera PERFORM F_DYNPRO USING: 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' *** *** *** *** *** *** *** ***

'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BKPF-BLDAT' 'BKPF-BLART' 'BKPF-BUKRS' 'BKPF-BUDAT' 'BKPF-MONAT' 'BKPF-WAERS' 'BKPF-XBLNR' 'BKPF-BKTXT' 'FS006-DOCID' = = = = = = = = 'RFBU'. SY-UNAME. W_TEXTO. P_BUKRS. P_FDOC. P_BUDAT. P_BLART. W_XBLNR.

'0100', 'RF05A-NEWKO', '/00', W_FEDOC, P_BLART, P_BUKRS, W_FECHA, P_BUDAT+4(2), "W_MONAT, T001-WAERS, W_XBLNR, W_TEXTO, '*'.

WA_DOCUMENTHEADER-BUS_ACT WA_DOCUMENTHEADER-USERNAME WA_DOCUMENTHEADER-HEADER_TXT WA_DOCUMENTHEADER-COMP_CODE WA_DOCUMENTHEADER-DOC_DATE WA_DOCUMENTHEADER-PSTNG_DATE WA_DOCUMENTHEADER-DOC_TYPE WA_DOCUMENTHEADER-REF_DOC_NO

SORT TI_DATOS BY LIFNR. CLEAR W_TOTAL. LOOP AT TI_DATOS ASSIGNING <FS_DATOS> WHERE LIFNT EQ W_LIFNT. IF <FS_DATOS>-CDA NE SPACE AND <FS_DATOS>-DSCTO NE SPACE. CONCATENATE V_NAME1 <FS_DATOS>-CDA <FS_DATOS>-DSCTO INTO W_NAME1 SEPAR ATED BY '-'. ENDIF. W_COUNT = W_COUNT + 1. V_POSICION = V_POSICION + 1. IF V_LIQCOL EQ 'X'. CLEAR: V_LENGTH, V_TYPE, V_DIGITS, V_MONTO1, V_MONTO2. DESCRIBE FIELD V_MONTO3 LENGTH V_LENGTH IN BYTE MODE TYPE V_TYPE. IF V_TYPE = 'P'. V_DIGITS = 2 * V_LENGTH - 1. ELSE. V_DIGITS = V_LENGTH. ENDIF. V_MONTO1 = <FS_DATOS>-PAGO. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' EXPORTING CURRENCY = T001-WAERS AMOUNT_EXTERNAL = V_MONTO1 "WA_DATOS_AUX-MONTO MAX_NUMBER_OF_DIGITS = V_DIGITS IMPORTING AMOUNT_INTERNAL = V_MONTO2 "WA_DATOS_AUX-MONTO RETURN = V_RETURN.

IF V_RETURN-TYPE = 'A' OR V_RETURN-TYPE = 'E'. <FS_DATOS>-PAGO = <FS_DATOS>-PAGO / 100. ELSE. <FS_DATOS>-PAGO = V_MONTO2. ENDIF. CLEAR: V_MONTO1, V_MONTO2. V_MONTO1 = <FS_DATOS>-MONTO. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' EXPORTING CURRENCY = T001-WAERS AMOUNT_EXTERNAL = V_MONTO1 "WA_DATOS_AUX-MONTO MAX_NUMBER_OF_DIGITS = V_DIGITS IMPORTING AMOUNT_INTERNAL = V_MONTO2 "WA_DATOS_AUX-MONTO RETURN = V_RETURN. IF V_RETURN-TYPE = 'A' OR V_RETURN-TYPE = 'E'. <FS_DATOS>-MONTO = <FS_DATOS>-MONTO / 100. ELSE. <FS_DATOS>-MONTO = V_MONTO2. ENDIF. ENDIF. W_TOTAL = W_TOTAL + <FS_DATOS>-PAGO. PERFORM F_DYNPRO USING: ' ' 'RF05A-NEWBS' ' ' 'RF05A-NEWKO' AT FIRST. PERFORM F_DYNPRO USING: ' ' 'BDC_SUBSCR' ' ' 'BDC_SUBSCR' ENDAT. IF W_COUNT > 1. IF V_FLAG = 'X'. CLEAR V_POS2. IF V_LIQCOL EQ SPACE. PERFORM F_DYNPRO USING: 'X' 'SAPLFWTD' ' ' 'BDC_OKCODE' ' ' 'BDC_CURSOR' '. ELSE. PERFORM F_DYNPRO USING: 'X' 'SAPLFWTD' '0100', ' ' 'BDC_OKCODE' '=GO'. LOOP AT TI_LFA1X INTO WA_LFA1X WHERE LIFNR = <FS_DATOS>-LIFNR. CLEAR V_UBICACION. V_POS2 = V_POS2 + 1. CONCATENATE 'WITH_ITEM-WT_WITHCD(' V_POS2 ')' INTO V_UBICACION . PERFORM F_DYNPRO USING: ' ' 'BDC_CURSOR' ' ' V_UBICACION ENDLOOP. ENDIF. ENDIF. ENDIF. V_UBICACION, SPACE. 'SAPMF05A', 'SAPLSEXM'. C_BSCHD, "'21', <FS_DATOS>-LIFNR.

'0100', '/ECANC', 'WITH_ITEM-WT_WITHCD(01)

CLEAR W_SMONTO. WRITE <FS_DATOS>-PAGO TO W_SMONTO CURRENCY T001-WAERS. W_SMONTO = <FS_DATOS>-PAGO. CONDENSE W_SMONTO. PERFORM F_DYNPRO USING: 'X' 'SAPMF05A' '0302', ' ' 'BDC_CURSOR' 'RF05A-NEWKO', ' ' 'BDC_OKCODE' '/00', ' ' 'BSEG-WRBTR' W_SMONTO, ' ' 'BSEG-MWSKZ' '**', ' ' 'BSEG-GSBER' W_GSBER, ' ' 'BSEG-ZFBDT' W_FEDOC, ' ' 'BSEG-ZUONR' <FS_DATOS>-FACTU, ' ' 'BSEG-SGTXT' W_NAME1.

READ TABLE TI_LFA1X ASSIGNING <FS_LFA1> WITH KEY LIFNR = <FS_DATOS>-LIFNR. IF SY-SUBRC = 0. V_FLAG = 'X'. ELSE. CLEAR V_FLAG. ENDIF. *** CLEAR WA_PAYABLE. *** WA_PAYABLE-ITEMNO_ACC = V_POSICION. *** WA_PAYABLE-VENDOR_NO = <FS_DATOS>-LIFNR. *** WA_PAYABLE-COMP_CODE = P_BUKRS. *** WA_PAYABLE-BUS_AREA = W_GSBER. *** WA_PAYABLE-ITEM_TEXT = W_NAME1. *** READ TABLE TI_LFA1X ASSIGNING <FS_LFA1> WITH KEY LIFNR = WA_PAYABLE-VEN DOR_NO. *** IF SY-SUBRC EQ 0. *** WA_PAYABLE-W_TAX_CODE = 'XX'. *** ENDIF. *** APPEND WA_PAYABLE TO TI_PAYABLE. *** *** *** *** *** *** CLEAR WA_CURRENCY. WA_CURRENCY-ITEMNO_ACC = V_POSICION. WA_CURRENCY-CURRENCY = T001-WAERS. WA_CURRENCY-AMT_DOCCUR = <FS_DATOS>-PAGO. WA_CURRENCY-DISC_BASE = <FS_DATOS>-PAGO. APPEND WA_CURRENCY TO TI_CURRENCY. CLEAR WA_TERCEROS. WA_TERCEROS-BUKRS WA_TERCEROS-GJAHR WA_TERCEROS-BLART WA_TERCEROS-BLDAT WA_TERCEROS-BUDAT WA_TERCEROS-COD_TERCE WA_TERCEROS-DMBTR WA_TERCEROS-PERIODO WA_TERCEROS-REGIO WA_TERCEROS-XBLNR WA_TERCEROS-LIFNR WA_TERCEROS-CONT WA_TERCEROS-TOTAL * IF V_LIQCOL EQ 'X'.

= = = = = = = = = = = = =

P_BUKRS. W_EJERC. "SY-DATUM+0(4). P_BLART. P_FDOC. P_BUDAT. <FS_DATOS>-LIFNT. "p_lifnr-low. <FS_DATOS>-PAGO. "W_SMONTO. P_PARM. P_REG. <FS_DATOS>-FACTU. <FS_DATOS>-LIFNR. W_COUNT. <FS_DATOS>-MONTO.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

CLEAR: V_LENGTH, V_TYPE, V_DIGITS, V_MONTO1, V_MONTO2. DESCRIBE FIELD V_MONTO3 LENGTH V_LENGTH IN BYTE MODE TYPE V_TYPE. IF V_TYPE = 'P'. V_DIGITS = 2 * V_LENGTH - 1. ELSE. V_DIGITS = V_LENGTH. ENDIF. V_MONTO1 = WA_TERCEROS-DMBTR . CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' EXPORTING CURRENCY = T001-WAERS AMOUNT_EXTERNAL = V_MONTO1 "WA_DATOS_AUX-MONTO MAX_NUMBER_OF_DIGITS = V_DIGITS IMPORTING AMOUNT_INTERNAL = V_MONTO2 "WA_DATOS_AUX-MONTO RETURN = V_RETURN. IF V_RETURN-TYPE = 'A' OR V_RETURN-TYPE = 'E'. WA_TERCEROS-DMBTR = WA_TERCEROS-DMBTR / 100. ELSE. WA_TERCEROS-DMBTR = V_MONTO2. ENDIF. CLEAR: V_MONTO1, V_MONTO2. V_MONTO1 = WA_TERCEROS-TOTAL. CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' EXPORTING CURRENCY = T001-WAERS AMOUNT_EXTERNAL = V_MONTO1 "WA_DATOS_AUX-MONTO MAX_NUMBER_OF_DIGITS = V_DIGITS IMPORTING AMOUNT_INTERNAL = V_MONTO2 "WA_DATOS_AUX-MONTO RETURN = V_RETURN. IF V_RETURN-TYPE = 'A' OR V_RETURN-TYPE = 'E'. WA_TERCEROS-TOTAL = WA_TERCEROS-TOTAL / 100. ELSE. WA_TERCEROS-TOTAL = V_MONTO2. ENDIF. ENDIF. APPEND WA_TERCEROS TO TI_TERCEROS. CLEAR W_NAME1. ENDLOOP. CLEAR W_SMONTO. WRITE W_TOTAL TO W_SMONTO CURRENCY T001-WAERS. MOVE W_TOTAL TO W_SMONTO. CONDENSE W_SMONTO. PERFORM F_DYNPRO USING: ' ' 'RF05A-NEWBS' ' ' 'RF05A-NEWKO' C_BSCHH, <FS_DATOS>-LIFNT. "p_li

fnr-low. IF V_FLAG = 'X'. CLEAR V_POS2. IF V_LIQCOL EQ SPACE. PERFORM F_DYNPRO USING: 'X' 'SAPLFWTD' ' ' 'BDC_OKCODE' ' ' 'BDC_CURSOR' ELSE.

'0100', '/ECANC', 'WITH_ITEM-WT_WITHCD(01)'.

PERFORM F_DYNPRO USING: 'X' 'SAPLFWTD' '0100', ' ' 'BDC_OKCODE' '=GO'. LOOP AT TI_LFA1X INTO WA_LFA1X WHERE LIFNR = <FS_DATOS>-LIFNR. V_POS2 = V_POS2 + 1. CONCATENATE 'WITH_ITEM-WT_WITHCD(' V_POS2 ')' INTO V_UBICACION. PERFORM F_DYNPRO USING: ' ' 'BDC_CURSOR' V_UBICACION, ' ' V_UBICACION SPACE. ENDLOOP. ENDIF. ENDIF. PERFORM F_DYNPRO USING: 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BSEG-WRBTR' 'BSEG-MWSKZ' 'BSEG-GSBER' 'BSEG-ZFBDT' 'BSEG-ZTERM' 'BSEG-ZLSPR' 'BSEG-ZUONR' 'BSEG-SGTXT' 'RF05A-NEWBS' '0302', 'BSEG-SKFBT', '=AB', W_SMONTO, '**', W_GSBER, W_FEDOC, '', '', '', V_NAME1, ''.

READ TABLE TI_LFA1X ASSIGNING <FS_LFA1> WITH KEY LIFNR = <FS_DATOS>-LIFNT. "p_lifnr-low. IF SY-SUBRC = 0. CLEAR V_POS2. IF V_LIQCOL EQ SPACE. PERFORM F_DYNPRO USING: 'X' 'SAPLFWTD' '0100', ' ' 'BDC_OKCODE' '/ECANC', ' ' 'BDC_CURSOR' 'WITH_ITEM-WT_WITHCD(01)'. ELSE. PERFORM F_DYNPRO USING: 'X' 'SAPLFWTD' '0100', ' ' 'BDC_OKCODE' '=GO'. LOOP AT TI_LFA1X INTO WA_LFA1X WHERE LIFNR = <FS_DATOS>-LIFNT. V_POS2 = V_POS2 + 1. CONCATENATE 'WITH_ITEM-WT_WITHCD(' V_POS2 ')' INTO V_UBICACION. PERFORM F_DYNPRO USING: ' ' 'BDC_CURSOR' V_UBICACION, ' ' V_UBICACION SPACE. ENDLOOP. ENDIF. ENDIF. PERFORM F_DYNPRO USING: 'X' ' ' ' ' ' ' ' ' 'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BKPF-XBLNR' 'BKPF-BKTXT' '0700', 'RF05A-NEWBS', '=BU', W_XBLNR, W_TEXTO.

PERFORM F_CALL_TRANSACTION USING W_SMONTO.

*** *** *** *** *** *** *** *** *** R_NO. *** *** *** *** *** *** *** *** *** *** *** *** ***

V_POSICION = V_POSICION + 1. CLEAR WA_PAYABLE. WA_PAYABLE-ITEMNO_ACC = V_POSICION. WA_PAYABLE-VENDOR_NO = <FS_DATOS>-LIFNT. WA_PAYABLE-COMP_CODE = P_BUKRS. WA_PAYABLE-BUS_AREA = W_GSBER. WA_PAYABLE-ITEM_TEXT = V_NAME1. READ TABLE TI_LFA1X ASSIGNING <FS_LFA1> WITH KEY LIFNR = WA_PAYABLE-VENDO IF SY-SUBRC EQ 0. WA_PAYABLE-W_TAX_CODE = 'XX'. ENDIF. APPEND WA_PAYABLE TO TI_PAYABLE. CLEAR WA_CURRENCY. WA_CURRENCY-ITEMNO_ACC = V_POSICION. WA_CURRENCY-CURRENCY = T001-WAERS. WA_CURRENCY-AMT_DOCCUR = W_TOTAL * -1. WA_CURRENCY-DISC_BASE = W_TOTAL * -1. APPEND WA_CURRENCY TO TI_CURRENCY. PERFORM F_EJECUTAR_BAPI.

IF V_REG > 998. DELETE TI_DATOSY FROM 1 TO 998 . ENDIF. ENDDO. ENDFORM. " F_PROCESO

*&---------------------------------------------------------------------* *& Form F_DYNPRO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_0153 text * -->P_0154 text * -->P_0155 text *----------------------------------------------------------------------* FORM F_DYNPRO USING PI_DYNBEGIN PI_NAME PI_VALUE. CLEAR WA_BDC_TAB. IF PI_DYNBEGIN = 'X'. WA_BDC_TAB-PROGRAM = PI_NAME. WA_BDC_TAB-DYNPRO = PI_VALUE. WA_BDC_TAB-DYNBEGIN = 'X'. ELSE. WA_BDC_TAB-FNAM = PI_NAME. WA_BDC_TAB-FVAL = PI_VALUE. ENDIF. APPEND WA_BDC_TAB TO TI_BDC_TAB. ENDFORM. " F_DYNPRO

*&---------------------------------------------------------------------* *& Form F_OUTPUT *&---------------------------------------------------------------------*

* text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_OUTPUT . * Overwrite the system GUI Status, because "change company code" * button needs to be added in the application tool bar. DATA EXCLUDE TYPE RSEXFCODE OCCURS 0 WITH HEADER LINE. IF SY-DYNNR = 1000. CALL FUNCTION 'RS_SET_SELSCREEN_STATUS' EXPORTING P_STATUS = SY-PFKEY "'GUI_BUD_DEL' TABLES P_EXCLUDE = EXCLUDE EXCEPTIONS OTHERS = 1. ENDIF. *{ INSERT @001 SORT TI_PARAME. CLEAR X_FLAG. LOOP AT SCREEN. LOOP AT TI_PARAME INTO WA_PARAME. IF SCREEN-NAME CS WA_PARAME-ZVALOR. X_FLAG = 'X'. EXIT. ENDIF. CLEAR WA_PARAME. ENDLOOP. IF X_FLAG = 'X'. CLEAR X_FLAG. SCREEN-ACTIVE = 0. MODIFY SCREEN. ENDIF. ENDLOOP. *} INSERT @001 FREE LIST. NAME = 'P_PARM'. VALUE-KEY = '1'. VALUE-TEXT = TEXT-T01. APPEND VALUE TO LIST. VALUE-KEY = '2'. VALUE-TEXT = TEXT-T02. APPEND VALUE TO LIST. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING ID = NAME VALUES = LIST. LOOP AT SCREEN. IF SCREEN-GROUP1 = 'G01' . SCREEN-INPUT = '0'. MODIFY SCREEN. ENDIF. IF SCREEN-NAME = SCREEN-NAME = SCREEN-NAME = SCREEN-INPUT = MODIFY SCREEN. '%_P_HKONT_%_APP_%-TEXT' OR '%_P_HKONT_%_APP_%-OPTI_PUSH' OR 'P_HKONT-LOW'. 0.

ENDIF. IF SCREEN-GROUP1 = 'G04'. SCREEN-INVISIBLE = '1'. SCREEN-INPUT = 0. MODIFY SCREEN. ENDIF. ENDLOOP. IF P_RET = 'X'. P_BLART = 'RT'. LOOP AT SCREEN. IF SCREEN-GROUP1 = 'G02' OR SCREEN-GROUP1 = 'G03' OR SCREEN-GROUP1 = 'G05' OR SCREEN-GROUP1 = 'H01' OR SCREEN-NAME = 'P_FILE' OR SCREEN-NAME = '%_P_FILE_%_APP_%-TEXT'. SCREEN-INVISIBLE = 1. SCREEN-INPUT = 0. MODIFY SCREEN. ENDIF. ENDLOOP. ELSEIF P_TER = 'X'. P_BLART = 'DP'. LOOP AT SCREEN. IF SCREEN-GROUP1 = 'G03' OR SCREEN-GROUP1 = 'H01' . SCREEN-INVISIBLE = 1. SCREEN-INPUT = 0. MODIFY SCREEN. ENDIF. ENDLOOP. ELSEIF P_RETSEM = 'X'. P_BLART = 'RT'. LOOP AT SCREEN. IF SCREEN-GROUP1 = 'G02' OR SCREEN-GROUP1 = 'G03' OR SCREEN-GROUP1 = 'G05' OR SCREEN-NAME = 'P_FILE' OR SCREEN-NAME = '%_P_FILE_%_APP_%-TEXT' OR SCREEN-NAME = 'P_BKTXT' OR SCREEN-NAME = '%_P_BKTXT_%_APP_%-TEXT'. SCREEN-INVISIBLE = 1. SCREEN-INPUT = 0. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF. * Cargamos las regiones FREE LIST. NAME = 'P_REG'. VALUE-KEY = 'AQP'. VALUE-TEXT VALUE-KEY = 'CAJ'. VALUE-TEXT VALUE-KEY = 'LIB'. VALUE-TEXT VALUE-KEY = 'LIM'. VALUE-TEXT VALUE-KEY = 'LSM'. VALUE-TEXT

= = = = =

TEXT-T03. TEXT-T04. TEXT-T05. TEXT-T06. TEXT-T07.

APPEND APPEND APPEND APPEND APPEND

VALUE VALUE VALUE VALUE VALUE

TO TO TO TO TO

LIST. LIST. LIST. LIST. LIST.

CALL FUNCTION 'VRM_SET_VALUES' EXPORTING ID = NAME VALUES = LIST. IF P_SPAGO = 'X'. LOOP AT SCREEN. IF SCREEN-GROUP1 = 'I04'. SCREEN-INPUT = '0'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF. IF P_CPAGO = 'X'. LOOP AT SCREEN. IF SCREEN-GROUP1 = 'I03'. SCREEN-INPUT = '0'. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF. IF P_SPAGO = 'X' OR P_CPAGO = 'X'. LOOP AT SCREEN. IF SCREEN-GROUP1 = 'G04'. SCREEN-INVISIBLE = '0'. SCREEN-INPUT = 1. MODIFY SCREEN. ENDIF. ENDLOOP. ENDIF. ENDFORM. " F_OUTPUT *&---------------------------------------------------------------------* *& Form F_VALIDAR_PARAMGLOB *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_VALIDAR_PARAMGLOB . CLEAR V_FLAG. IF P_BUKRS IS INITIAL. V_FLAG = 'X'. MESSAGE TEXT-004 TYPE 'S'. ENDIF. CHECK V_FLAG IS INITIAL. IF P_RETSEM = 'X'. IF P_HKONT[] IS INITIAL. V_FLAG = 'X'. MESSAGE TEXT-T08 TYPE 'S'. ENDIF. ENDIF. CHECK V_FLAG IS INITIAL. IF P_FDOC IS INITIAL.

V_FLAG = 'X'. MESSAGE TEXT-005 TYPE 'S'. ENDIF. CHECK V_FLAG IS INITIAL. IF P_BUDAT IS INITIAL. V_FLAG = 'X'. MESSAGE TEXT-037 TYPE 'S'. ENDIF. CHECK V_FLAG IS INITIAL. IF PAR_FDEB IS INITIAL. V_FLAG = 'X'. MESSAGE TEXT-052 TYPE 'S'. ENDIF. CHECK V_FLAG IS INITIAL. IF P_TER = 'X' OR P_RET = 'X'. IF P_PATH IS INITIAL. V_FLAG = 'X'. MESSAGE TEXT-008 TYPE 'S'. ENDIF. ENDIF. CHECK V_FLAG IS INITIAL. ENDFORM. " F_VALIDAR_PARAMGLOB *&---------------------------------------------------------------------* *& Form F_OBTENER_MESG *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_<FS_ERR_BI>_MSGSPRA text * -->P_<FS_ERR_BI>_MSGID text * -->P_<FS_ERR_BI>_MSGNR text * -->P_<FS_ERR_BI>_MSGV1 text * -->P_<FS_ERR_BI>_MSGV2 text * -->P_<FS_ERR_BI>_MSGV3 text * -->P_<FS_ERR_BI>_MSGV4 text *----------------------------------------------------------------------* FORM F_OBTENER_MESG USING PI_MSGSPRA PI_MSGID PI_MSGNR PI_MSGV1 PI_MSGV2 PI_MSGV3 PI_MSGV4. SELECT SINGLE * FROM T100 INTO T100 WHERE SPRSL = PI_MSGSPRA AND ARBGB = PI_MSGID AND MSGNR = PI_MSGNR. V_TEXTO = T100-TEXT. IF V_TEXTO CS '&1'. REPLACE '&1' WITH PI_MSGV1 INTO V_TEXTO. REPLACE '&2' WITH PI_MSGV2 INTO V_TEXTO. REPLACE '&3' WITH PI_MSGV3 INTO V_TEXTO. REPLACE '&4' WITH PI_MSGV4 INTO V_TEXTO. ELSE. REPLACE '&' WITH PI_MSGV1 INTO V_TEXTO. REPLACE '&' WITH PI_MSGV2 INTO V_TEXTO. REPLACE '&' WITH PI_MSGV3 INTO V_TEXTO.

REPLACE '&' WITH PI_MSGV4 INTO V_TEXTO. ENDIF. CONDENSE V_TEXTO. ENDFORM. " F_OBTENER_MESG *&---------------------------------------------------------------------* *& Form F_VALIDAR_LIFNR *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_P_LIFNR text * -->P_0972 text * -->P_V_TEXTO text *----------------------------------------------------------------------* FORM F_VALIDAR_LIFNR USING PI_LIFNR P_OPC. CLEAR: V_CAMPO,V_TEXTO. CASE P_OPC. WHEN 'T'. V_CAMPO = TEXT-009. WHEN 'R'. V_CAMPO = TEXT-T09. WHEN 'G'. V_CAMPO = TEXT-T10. ENDCASE.

"text-010.

IF PI_LIFNR IS INITIAL. V_FLAG = 'X'. CONCATENATE TEXT-012 V_CAMPO INTO V_TEXTO SEPARATED BY SPACE. MESSAGE V_TEXTO TYPE 'S'. ELSE. SELECT SINGLE LIFNR INTO PI_LIFNR FROM LFA1 WHERE LIFNR = PI_LIFNR. IF SY-SUBRC NE 0. V_FLAG = 'X'. CONCATENATE TEXT-013 V_CAMPO PI_LIFNR TEXT-014 INTO V_TEXTO SEPARATED BY SPACE. MESSAGE V_TEXTO TYPE 'S'. ENDIF. ENDIF. ENDFORM. " F_VALIDAR_LIFNR *&---------------------------------------------------------------------* *& Form F_PROCESO_RET *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_PROCESO_RET . DATA: W_MONAT TYPE CHAR02, W_FECHA TYPE CHAR08, W_FEDOC TYPE CHAR08, W_TOTAL TYPE BSEG-WRBTR, W_SMONTO TYPE CHAR20, W_XBLNR TYPE STRING, W_NAME1 TYPE LFA1-NAME1,

W_TEXTO TYPE STRING, W_HKONT TYPE SKAT-SAKNR, "ZSDDCONSTANTE-ZVALOR, "REPLACE @001 V_TEXTO TYPE STRING. CLEAR V_FLAG. FREE: TI_ERR_BI,TI_BDC_TAB,TI_LFA1. CONCATENATE P_BUDAT+6(2) P_BUDAT+4(2) P_BUDAT+0(4) INTO W_FECHA . CONCATENATE P_FDOC+6(2) P_FDOC+4(2) P_FDOC+0(4) INTO W_FEDOC. W_MONAT = W_FECHA+2(2). W_HKONT = P_HKONT-LOW. LOOP AT TI_DATOS_RET INTO WA_DATOS_RET. FREE TI_DATOX. WA_DATOS-LIFNR = WA_DATOS_RET-LIFNT. "p_lifrt-low. APPEND WA_DATOS TO TI_DATOX. WA_DATOS-LIFNR = WA_DATOS_RET-LIFNR. "p_lifgn. APPEND WA_DATOS TO TI_DATOX. FREE TI_LFA1. SELECT LIFNR BUKRS WITHT WT_SUBJCT WT_WITHCD INTO TABLE TI_LFA1 FROM LFBW FOR ALL ENTRIES IN TI_DATOX WHERE LIFNR = TI_DATOX-LIFNR AND BUKRS = P_BUKRS. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = WA_DATOS_RET-LIFNT IMPORTING OUTPUT = WA_DATOS_RET-LIFNT. CLEAR W_NAME1. CLEAR W_XBLNR. SELECT SINGLE NAME1 INTO W_NAME1 FROM LFA1 WHERE LIFNR EQ WA_DATOS_RET-LIFNT. "IN p_lifrt. W_XBLNR = WA_DATOS_RET-XBLNR. * * * "p_xblnr .

CONCATENATE p_budat+6(2) p_budat+4(2) p_budat+0(4) INTO w_fecha . CONCATENATE p_fdoc+6(2) p_fdoc+4(2) p_fdoc+0(4) INTO w_fedoc. w_monat = w_fecha+2(2). CLEAR V_TEXTO. IF P_TER EQ 'X'. V_TEXTO = W_TEXTO. ELSE. V_TEXTO = WA_DATOS_RET-TEXTO. ENDIF. CLEAR T001. SELECT SINGLE * FROM T001 WHERE BUKRS EQ P_BUKRS. PERFORM F_DYNPRO USING: 'X' 'SAPMF05A' '0100',

' ' ' ' ' ' ' ' REPLACE@001 ' ' ' ' ' _lifgn,

' ' ' ' ' ' ' ' ' ' ' ' '

'BDC_CURSOR' 'BDC_OKCODE' 'BKPF-BLDAT' 'BKPF-BLART' 'BKPF-BUKRS' 'BKPF-BUDAT' 'BKPF-MONAT' 'BKPF-WAERS' 'BKPF-XBLNR' 'BKPF-BKTXT' 'FS006-DOCID' 'RF05A-NEWBS' 'RF05A-NEWKO'

'RF05A-NEWKO', '/00', W_FEDOC, P_BLART, P_BUKRS, W_FECHA, W_MONAT, T001-WAERS, "'PEN', " W_XBLNR, V_TEXTO, '*', '21', WA_DATOS_RET-LIFNR, "p 'SAPMF05A', 'SAPLSEXM'.

' ' 'BDC_SUBSCR' ' ' 'BDC_SUBSCR' CLEAR W_SMONTO. MOVE WA_DATOS_RET-MONTO TO W_SMONTO. MOVE p_valor TO w_smonto. CONDENSE W_SMONTO. IF P_RET EQ 'X'. PERFORM F_DYNPRO USING: 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' p_xblnr, ' ' 'BSEG-SGTXT' ' ' 'RF05A-NEWBS' ' ' 'RF05A-NEWKO' p_lifrt-low. ELSEIF P_RETSEM EQ 'X'. PERFORM F_DYNPRO USING: 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ENDIF. READ TABLE TI_LFA1 ASSIGNING <FS_LFA1> WITH KEY LIFNR = WA_DATOS_RET-LIFNR. IF SY-SUBRC = 0. PERFORM F_DYNPRO USING: 'X' 'SAPLFWTD' ' ' 'BDC_OKCODE' ' ' 'BDC_CURSOR' 'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BSEG-WRBTR' 'BSEG-MWSKZ' 'BSEG-GSBER' 'BSEG-ZFBDT' 'RF05A-NEWBS' 'RF05A-NEWKO' 'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BSEG-WRBTR' 'BSEG-MWSKZ' 'BSEG-GSBER' 'BSEG-ZFBDT' 'BSEG-ZUONR'

'0302', 'RF05A-NEWKO', '/00', W_SMONTO, '**', W_GSBER, W_FEDOC, WA_DATOS_RET-XBLNR, " W_NAME1, '31', WA_DATOS_RET-LIFNT. "

'0302', 'RF05A-NEWKO', '/00', W_SMONTO, '**', W_GSBER, W_FEDOC, '50', W_HKONT.

'0100', '/ECANC', 'WITH_ITEM-WT_WITHCD(01)

'. ENDIF. IF P_RETSEM EQ 'X'. PERFORM F_DYNPRO USING: 'X' ' ' ' ' ' ' ' ' ' ' ' ' PERFORM F_DYNPRO USING: 'X' ' ' ' ' ' ' ' ' PERFORM F_DYNPRO USING: 'X' 'SAPMF05A' ' ' 'BDC_CURSOR' ' ' 'BDC_OKCODE' ELSEIF P_RET EQ 'X'. PERFORM F_DYNPRO USING: 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BSEG-WRBTR' 'BSEG-MWSKZ' 'BSEG-GSBER' 'BSEG-ZTERM' 'BSEG-ZFBDT' 'BSEG-ZUONR' 'BSEG-SGTXT' 'RF05A-NEWBS' '0302', 'BSEG-GSBER', '=AB', W_SMONTO, '**', W_GSBER, '0001', W_FEDOC, '', W_NAME1, ''. '0330', 'BSEG-VBUND', '=AB'. 'SAPLKACB' 'BDC_CURSOR' 'BDC_OKCODE' 'COBL-GSBER' 'BDC_SUBSCR' '0002', 'COBL-GSBER', '=ENTE', W_GSBER, 'SAPLKACB'. 'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BSEG-WRBTR' 'BSEG-VALUT' 'BDC_SUBSCR' 'DKACB-FMORE' '0300', 'BSEG-WRBTR', '=ZK', W_SMONTO, W_FEDOC , 'SAPLKACB', 'X'.

READ TABLE TI_LFA1 ASSIGNING <FS_LFA1> WITH KEY LIFNR = WA_DATOS_RET-LIFNT. IF SY-SUBRC = 0. PERFORM F_DYNPRO USING: 'X' 'SAPLFWTD' ' ' 'BDC_OKCODE' ' ' 'BDC_CURSOR' )'. ENDIF. ENDIF. PERFORM F_DYNPRO USING: 'X' ' ' ' ' ' ' ' ' CLEAR WA_TERCEROS. WA_TERCEROS-BUKRS = P_BUKRS. 'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BKPF-XBLNR' 'BKPF-BKTXT'

'0100', '/ECANC', 'WITH_ITEM-WT_WITHCD(01

'0700', 'RF05A-NEWBS', '=BU', W_XBLNR, V_TEXTO.

WA_TERCEROS-GJAHR = SY-DATUM+0(4). WA_TERCEROS-BLART = P_BLART. WA_TERCEROS-BLDAT = P_FDOC. WA_TERCEROS-BUDAT = P_BUDAT. WA_TERCEROS-COD_TERCE = WA_DATOS_RET-LIFNT. WA_TERCEROS-DMBTR = W_SMONTO. WA_TERCEROS-PERIODO = P_PARM. WA_TERCEROS-REGIO = P_REG. WA_TERCEROS-TOTAL = W_SMONTO. WA_TERCEROS-LIFNR = WA_DATOS_RET-LIFNR. IF P_RET EQ 'X'. WA_TERCEROS-TIPO_RET = 'J'. ELSEIF P_RETSEM EQ 'X'. WA_TERCEROS-TIPO_RET = 'S'. ENDIF. WA_TERCEROS-XBLNR = WA_DATOS_RET-XBLNR. PERFORM F_CALL_TRANSACTION USING W_SMONTO. ENDLOOP. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * W_MONAT = W_FECHA+2(2). W_HKONT = P_HKONT-LOW. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = W_HKONT IMPORTING OUTPUT = W_HKONT. CLEAR: WA_DOCUMENTHEADER,W_OBJ_TYPE,W_OBJ_KEY,W_OBJ_SYS,V_POSICION, WA_PAYABLE,WA_CURRENCY,WA_RETURN,WA_ACCOUNT. FREE: TI_PAYABLE, TI_CURRENCY, TI_RETURN, TI_ACCOUNT. LOOP AT TI_DATOS_RET INTO WA_DATOS_RET. FREE TI_DATOX. WA_DATOS-LIFNR = WA_DATOS_RET-LIFNT. APPEND WA_DATOS TO TI_DATOX. WA_DATOS-LIFNR = WA_DATOS_RET-LIFNR. APPEND WA_DATOS TO TI_DATOX. FREE TI_LFA1. SELECT LIFNR BUKRS WITHT WT_SUBJCT WT_WITHCD INTO TABLE TI_LFA1 FROM LFBW FOR ALL ENTRIES IN TI_DATOX WHERE LIFNR = TI_DATOX-LIFNR AND BUKRS = P_BUKRS. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = WA_DATOS_RET-LIFNT IMPORTING OUTPUT = WA_DATOS_RET-LIFNT. CLEAR W_NAME1. CLEAR W_XBLNR. SELECT SINGLE NAME1 INTO W_NAME1 FROM LFA1 WHERE LIFNR EQ WA_DATOS_RET-LIFNT.

* * W_XBLNR = WA_DATOS_RET-XBLNR. * * * CLEAR V_TEXTO. * IF P_TER EQ 'X'. * V_TEXTO = W_TEXTO. * ELSE. * V_TEXTO = WA_DATOS_RET-TEXTO. * ENDIF. * * CLEAR T001. * SELECT SINGLE * * FROM T001 * WHERE BUKRS EQ P_BUKRS. * ** Completando la cabecera * CLEAR WA_DOCUMENTHEADER. * WA_DOCUMENTHEADER-BUS_ACT = 'RFBU'. * WA_DOCUMENTHEADER-USERNAME = SY-UNAME. * WA_DOCUMENTHEADER-HEADER_TXT = V_TEXTO. * WA_DOCUMENTHEADER-COMP_CODE = P_BUKRS. * WA_DOCUMENTHEADER-DOC_DATE = P_FDOC. * WA_DOCUMENTHEADER-PSTNG_DATE = P_BUDAT. * WA_DOCUMENTHEADER-DOC_TYPE = P_BLART. * WA_DOCUMENTHEADER-REF_DOC_NO = W_XBLNR. * ** Completando la primera posicion * V_POSICION = '1'. * WA_PAYABLE-ITEMNO_ACC = V_POSICION. * WA_PAYABLE-VENDOR_NO = WA_DATOS_RET-LIFNR. * WA_PAYABLE-COMP_CODE = P_BUKRS. * WA_PAYABLE-BUS_AREA = W_GSBER. * IF P_RET EQ 'X'. * WA_PAYABLE-BLINE_DATE = P_FDOC. * WA_PAYABLE-ALLOC_NMBR = WA_DATOS_RET-XBLNR. * WA_PAYABLE-ITEM_TEXT = W_NAME1. * READ TABLE TI_LFA1X ASSIGNING <FS_LFA1> WITH KEY LIFNR = WA_DATOS_RET-LIF NR. * IF SY-SUBRC EQ 0. * WA_PAYABLE-W_TAX_CODE = 'XX'. * ENDIF. * ELSEIF P_RETSEM EQ 'X'. * WA_PAYABLE-BLINE_DATE = P_FDOC. * READ TABLE TI_LFA1X ASSIGNING <FS_LFA1> WITH KEY LIFNR = WA_DATOS_RET-LIF NR. * IF SY-SUBRC EQ 0. * WA_PAYABLE-W_TAX_CODE = 'XX'. * ENDIF. * ENDIF. * APPEND WA_PAYABLE TO TI_PAYABLE. * * CLEAR WA_CURRENCY. * WA_CURRENCY-ITEMNO_ACC = V_POSICION. * WA_CURRENCY-CURRENCY = T001-WAERS. * WA_CURRENCY-AMT_DOCCUR = WA_DATOS_RET-MONTO. * WA_CURRENCY-DISC_BASE = WA_DATOS_RET-MONTO. * APPEND WA_CURRENCY TO TI_CURRENCY. * ** Completando la segunda posicion

* V_POSICION = '2'. * IF P_RET EQ 'X'. * WA_PAYABLE-ITEMNO_ACC = V_POSICION. * WA_PAYABLE-VENDOR_NO = WA_DATOS_RET-LIFNT. * WA_PAYABLE-COMP_CODE = P_BUKRS. * WA_PAYABLE-BUS_AREA = W_GSBER. * WA_PAYABLE-BLINE_DATE = P_FDOC. * WA_PAYABLE-ALLOC_NMBR = ''. * WA_PAYABLE-ITEM_TEXT = W_NAME1. * WA_PAYABLE-PMNTTRMS = '0001'. * READ TABLE TI_LFA1X ASSIGNING <FS_LFA1> WITH KEY LIFNR = WA_DATOS_RET-LIF NR. * IF SY-SUBRC EQ 0. * WA_PAYABLE-W_TAX_CODE = 'XX'. * ENDIF. * APPEND WA_PAYABLE TO TI_PAYABLE. * * ELSEIF P_RETSEM EQ 'X'. * WA_ACCOUNT-ITEMNO_ACC = V_POSICION. * WA_ACCOUNT-GL_ACCOUNT = W_HKONT. * WA_ACCOUNT-COMP_CODE = P_BUKRS. * WA_ACCOUNT-BUS_AREA = W_GSBER. * WA_ACCOUNT-VALUE_DATE = P_FDOC. * APPEND WA_ACCOUNT TO TI_ACCOUNT. * * ENDIF. * CLEAR WA_CURRENCY. * WA_CURRENCY-ITEMNO_ACC = V_POSICION. * WA_CURRENCY-CURRENCY = T001-WAERS. * WA_CURRENCY-AMT_DOCCUR = WA_DATOS_RET-MONTO * -1. * WA_CURRENCY-DISC_BASE = WA_DATOS_RET-MONTO * -1. * APPEND WA_CURRENCY TO TI_CURRENCY. * CLEAR: WA_PAYABLE, WA_ACCOUNT, WA_CURRENCY. * * CLEAR WA_TERCEROS. * WA_TERCEROS-BUKRS = P_BUKRS. * WA_TERCEROS-GJAHR = P_BUDAT+0(4). * WA_TERCEROS-BLART = P_BLART. * WA_TERCEROS-BLDAT = P_FDOC. * WA_TERCEROS-BUDAT = P_BUDAT. * WA_TERCEROS-COD_TERCE = WA_DATOS_RET-LIFNT. * WA_TERCEROS-DMBTR = WA_DATOS_RET-MONTO. "W_SMONTO. * WA_TERCEROS-PERIODO = P_PARM. * WA_TERCEROS-REGIO = P_REG. * WA_TERCEROS-TOTAL = WA_DATOS_RET-MONTO. "W_SMONTO. * WA_TERCEROS-LIFNR = WA_DATOS_RET-LIFNR. * IF P_RET EQ 'X'. * WA_TERCEROS-TIPO_RET = 'J'. * ELSEIF P_RETSEM EQ 'X'. * WA_TERCEROS-TIPO_RET = 'S'. * ENDIF. * WA_TERCEROS-XBLNR = WA_DATOS_RET-XBLNR. * * PERFORM F_EJECUTAR_BAPI. * * ENDLOOP. ENDFORM. " F_PROCESO_RET *&---------------------------------------------------------------------* *& Form F_ASIGNARVALORES

*&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_ASIGNARVALORES . *{ * * * * * *} DELETE @001 IF P_BUKRS = '10'. W_GSBER = '1011'. ELSEIF P_BUKRS = '17'. W_GSBER = '1710'. ENDIF. DELETE @001

*{ INSERT @001 SELECT SINGLE ZVALOR INTO W_GSBER FROM YBCT_DCONSTANTE WHERE PROYECTO EQ 'ACOPIO' AND BUKRS EQ P_BUKRS AND GRUPO EQ 'DIVISI' AND CORREL EQ '001' AND ESTADO EQ 'A'. *} INSERT @001 CASE P_BLART . WHEN 'DP'. W_TEXTO = GS_TXT1. "TEXT-015. WHEN 'RT'. W_TEXTO = TEXT-016. WHEN OTHERS. ENDCASE. ENDFORM. " F_ASIGNARVALORES *&---------------------------------------------------------------------* *& Form F_CALL_TRANSACTION *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_CALL_TRANSACTION USING W_SMONTO. WA_CTUPARAMS-DEFSIZE WA_CTUPARAMS-DISMODE WA_CTUPARAMS-UPDMODE WA_CTUPARAMS-RACOMMIT = = = = 'X'. P_MODO. 'S'. 'X'.

CALL TRANSACTION 'FB01' USING TI_BDC_TAB OPTIONS FROM WA_CTUPARAMS MESSAGES INTO TI_ERR_BI. LOOP AT TI_ERR_BI ASSIGNING <FS_ERR_BI>. PERFORM F_OBTENER_MESG USING <FS_ERR_BI>-MSGSPRA <FS_ERR_BI>-MSGID <FS_ERR_B I>-MSGNR <FS_ERR_BI>-MSGV1 <FS_ERR_BI>-MSGV2 <FS_ERR_BI> -MSGV3 <FS_ERR_BI>-MSGV4.

IF P_TER = 'X'. READ TABLE TI_PRIOR INTO WA_PRIOR WITH KEY LIFNT = WA_TERCEROS-COD_TERCE. IF SY-SUBRC EQ 0. WA_REPORT-PRIOR = WA_PRIOR-PRIOR. ENDIF. ENDIF. IF <FS_ERR_BI>-MSGSPRA <FS_ERR_BI>-MSGID <FS_ERR_BI>-MSGTYP <FS_ERR_BI>-MSGNR = = = = 'S' AND 'F5' AND 'S' AND '312'.

WA_TERCEROS-BELNR = <FS_ERR_BI>-MSGV1 . * De paso llenamos una tabla interna para mostrarlo al final. IF P_TER = 'X'. * wa_terceros-total = vg_total. LOOP AT TI_TERCEROS ASSIGNING <FS_TERCEROS>. <FS_TERCEROS>-BELNR = WA_TERCEROS-BELNR . * INSERT yfit_terceros FROM <fs_terceros>. ENDLOOP. INSERT YFIT_TERCEROS FROM TABLE TI_TERCEROS. COMMIT WORK AND WAIT. ELSEIF P_RET = 'X' OR P_RETSEM = 'X'. INSERT YFIT_TERCEROS FROM WA_TERCEROS. COMMIT WORK AND WAIT. ENDIF. IF P_RET = 'X' OR P_TER = 'X'. WA_REPORT-LIFNT = WA_TERCEROS-COD_TERCE. ELSEIF P_RETSEM = 'X'. SELECT SINGLE HKONT INTO WA_REPORT-HKONT FROM BSEG WHERE BUKRS EQ P_BUKRS AND BELNR EQ <FS_ERR_BI>-MSGV1 AND GJAHR EQ SY-DATUM+0(4) AND HKONT NE WA_TERCEROS-LIFNR. ENDIF. WA_REPORT-ICON = '@08@'. WA_REPORT-LIFNR = WA_TERCEROS-LIFNR. READ TABLE TI_LFA1 ASSIGNING <FS_LFA1> WITH KEY LIFNR = WA_REPORT-LIFNT. IF SY-SUBRC = 0. WA_REPORT-NAME1 = <FS_LFA1>-NAME1. ENDIF. WA_REPORT-BELNR = <FS_ERR_BI>-MSGV1. WA_REPORT-GJAHR = SY-DATUM+0(4). WA_REPORT-MESGE = V_TEXTO. APPEND WA_REPORT TO TI_REPORT. CLEAR WA_REPORT. ELSEIF <FS_ERR_BI>-MSGTYP = 'E' . IF P_RET = 'X' OR P_TER = 'X'. WA_REPORT-LIFNT = WA_TERCEROS-COD_TERCE.

"t100-text.

ENDIF. WA_REPORT-LIFNR = WA_TERCEROS-LIFNR. wa_report-belnr = <fs_err_bi>-msgv1. WA_REPORT-GJAHR = SY-DATUM+0(4). WA_REPORT-MESGE = V_TEXTO. APPEND WA_REPORT TO TI_REPORT. CLEAR WA_REPORT. ENDIF.

"t100-text.

ENDLOOP. REFRESH TI_BDC_TAB. REFRESH TI_ERR_BI. ENDFORM. " F_CALL_TRANSACTION *&---------------------------------------------------------------------* *& Form F_EVALUAR_DEUDA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_EVALUAR_DEUDA . V_BUDAT = P_BUDAT. IF TI_DATOS[] IS NOT INITIAL. VL_GJAHR = V_BUDAT+0(4). SELECT BUKRS BELNR GJAHR BUZEI LIFNR BLART WAERS XBLNR DMBTR AS DMBTK SHKZG BLDAT BSCHL GSBER ZBD1T MWSKZ ZFBDT INTO CORRESPONDING FIELDS OF TABLE GT_BSIK FROM BSIK FOR ALL ENTRIES IN TI_DATOS WHERE BUKRS EQ P_BUKRS AND GJAHR LE P_BUDAT+0(4) AND LIFNR EQ TI_DATOS-LIFNR AND BUDAT LE P_BUDAT AND NOT BLART IN R_DOCNP . IF P_BUKRS NE 'CO71'. LOOP AT GT_BSIK ASSIGNING <FS_BSIK>. CLEAR WL_FAEDE. PERFORM F_DETERMINAR_FV USING <FS_BSIK>-SHKZG 'K' <FS_BSIK>-ZFBDT <FS_BS IK>-ZBD1T <FS_BSIK>-BLDAT. IF WL_FAEDE-NETDT GT PAR_FDEB. <FS_BSIK>-CHECK = 'X'. ENDIF. ENDLOOP. DELETE GT_BSIK WHERE CHECK = 'X'. ENDIF. GT_BSIK_AUX[] = GT_BSIK[]. DELETE GT_BSIK WHERE NOT BLART IN R_CLDOCP. IF GT_BSIK[] IS NOT INITIAL. GT_BSIK[] = GT_BSIK_AUX[] . FREE GT_BSIK_AUX. CLEAR VG_INDEX. LOOP AT GT_BSIK ASSIGNING <FS_BSIK>. CLEAR W_BSIK_AUX. IF <FS_BSIK>-XBLNR IS NOT INITIAL.

VG_INDEX = SY-TABIX. VL_LENGT = STRLEN( <FS_BSIK>-XBLNR ). SUBTRACT 2 FROM VL_LENGT. IF <FS_BSIK>-XBLNR+VL_LENGT(2) EQ 'DE'. DELETE GT_BSIK INDEX VG_INDEX. ENDIF. ENDIF. CONTINUE. ENDLOOP. GT_BSIK_AUX[] = GT_BSIK[]. SORT GT_BSIK_AUX BY BUKRS LIFNR. DELETE ADJACENT DUPLICATES FROM GT_BSIK_AUX COMPARING BUKRS LIFNR. IF NOT GT_BSIK_AUX[] IS INITIAL. LOOP AT GT_BSIK_AUX ASSIGNING <FS_BSAUX>. READ TABLE TI_DATOS ASSIGNING <FS_DATOS> WITH KEY LIFNR = <FS_BSAUX>-LIFNR. IF SY-SUBRC EQ 0. MOVE <FS_DATOS>-LIFNR TO <FS_BSAUX>-KUNNR. ELSE. CONTINUE. ENDIF. ENDLOOP. SELECT BUKRS BELNR GJAHR BUZEI KUNNR BLART WAERS XBLNR ZFBDT DMBTR AS DMBTD SHKZG ZTERM BLDAT BSCHL GSBER ZBD1T MWSKZ INTO CORRESPONDING FIELDS OF TABLE GT_BSID FROM BSID FOR ALL ENTRIES IN GT_BSIK_AUX WHERE BUKRS EQ GT_BSIK_AUX-BUKRS AND BUDAT LE P_BUDAT AND BLART IN R_BLART AND GJAHR LE P_BUDAT+0(4) AND KUNNR EQ GT_BSIK_AUX-KUNNR. IF NOT GT_BSID[] IS INITIAL. LOOP AT GT_BSID ASSIGNING <FS_BSID>. CLEAR WL_FAEDE. PERFORM F_DETERMINAR_FV USING <FS_BSID>-SHKZG 'D' <FS_BSID>-ZFBDT <F S_BSID>-ZBD1T <FS_BSID>-BLDAT. IF WL_FAEDE-NETDT GT PAR_FDEB. <FS_BSID>-CHECK = 'X'. ENDIF. ENDLOOP. DELETE GT_BSID WHERE CHECK EQ TEXT-PC2. ENDIF. LOOP AT GT_BSIK_AUX ASSIGNING <FS_BSAUX>. LOOP AT GT_BSIK ASSIGNING <FS_BSIK>

WHERE BUKRS EQ <FS_BSAUX>-BUKRS AND LIFNR EQ <FS_BSAUX>-LIFNR. CASE <FS_BSIK>-SHKZG. WHEN 'H'. IF <FS_BSIK>-DMBTK GT 0. MULTIPLY <FS_BSIK>-DMBTK BY -1. ENDIF. ENDCASE. LOOP AT GT_ZSDDCONSTANTE ASSIGNING <FS_CONST> WHERE PROYECTO EQ 'ACOPIO_FI' "ZAPLICAC ION EQ 'ACOPIO_FI' AND AND BUKRS EQ P_BUKRS "INSERT @001 AND GRUPO EQ TEXT-C08 "ZCGRUPO EQ TEXT-C08 AND AND ZVALOR EQ <FS_BSIK>-BLART AND ESTADO EQ TEXT-C03. "ZESTADO EQ TEXT-C03. ADD <FS_BSIK>-DMBTK TO VG_DMBTR. ENDLOOP. ENDLOOP. MOVE VG_DMBTR TO <FS_BSAUX>-DMBTK. CLEAR VG_DMBTR. LOOP AT GT_BSID ASSIGNING <FS_BSID> WHERE BUKRS EQ <FS_BSAUX>-BUKRS AND KUNNR EQ <FS_BSAUX>-KUNNR. CASE <FS_BSID>-SHKZG. WHEN 'H'. IF <FS_BSID>-DMBTD GT 0. MULTIPLY <FS_BSID>-DMBTD BY -1. ENDIF. ENDCASE. ADD <FS_BSID>-DMBTD TO VG_DMBTR. ENDLOOP. MOVE VG_DMBTR TO <FS_BSAUX>-DMBTD. CLEAR VG_DMBTR. ENDLOOP. ENDIF. ENDIF. ENDIF. ENDFORM. " F_EVALUAR_DEUDA *&---------------------------------------------------------------------* *& Form LOAD_CONSTANTES *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM LOAD_CONSTANTES . DATA: WA_BLART LIKE LINE OF R_BLART. SELECT ZVALOR AS LOW YVALOR AS HIGH INTO CORRESPONDING FIELDS OF TABLE R_CLDO CP FROM YBCT_DCONSTANTE WHERE PROYECTO EQ C_CC_PROYECT AND BUKRS EQ P_BUKRS

AND GRUPO AND ESTADO

EQ C_CC_GRUPO EQ TEXT-C03.

LOOP AT R_CLDOCP ASSIGNING <FS_CLDOCP>. <FS_CLDOCP>-SIGN = 'I'. <FS_CLDOCP>-OPTION = 'EQ'. ENDLOOP. * Obtenemos la clase de documento que no debemos de considerar para hacer los de scuentos SELECT ZVALOR AS LOW YVALOR AS HIGH INTO CORRESPONDING FIELDS OF TABLE R_DOCN P FROM YBCT_DCONSTANTE WHERE PROYECTO EQ C_CC_PROYECT AND BUKRS EQ P_BUKRS AND GRUPO EQ C_CC_GRUPO1 AND ESTADO EQ TEXT-C03. LOOP AT R_DOCNP ASSIGNING <FS_DOCNP>. <FS_DOCNP>-SIGN = 'I'. <FS_DOCNP>-OPTION = 'EQ'. ENDLOOP. * Busca los Datos de la Tabla de Constantes. SELECT PROYECTO BUKRS GRUPO CORREL ZVALOR YVALOR ESTADO INTO TABLE GT_ZSDDCONS TANTE FROM YBCT_DCONSTANTE WHERE PROYECTO = C_CC_PROYECTO AND BUKRS = P_BUKRS AND ESTADO = TEXT-C03. IF NOT GT_ZSDDCONSTANTE[] IS INITIAL. *** Obtiene los Datos de la Tabla de Constantes para Obtener el Nombre e Datos. ** READ TABLE GT_ZSDDCONSTANTE ASSIGNING <FS_CONST> ** WITH KEY PROYECTO = 'ACOPIO_FI' "ZAPLICACION = 'ACOPIO_FI' @001 ** BUKRS = P_BUKRS "INSERT @001 ** GRUPO = 'SETDAT' "ZCGRUPO = 'SETDAT' @001 ** CORREL = '001' "ZCORRELATIVO = '001' ** ESTADO = 'A'. "ZESTADO = 'A'. ** IF SY-SUBRC EQ 0. * Obtener los dAtos del Set de Datos. SELECT PROYECTO BUKRS GRUPO CORREL ZVALOR YVALOR ESTADO INTO TABLE FROM YBCT_DCONSTANTE WHERE PROYECTO = C_CC_PROYECTO AND BUKRS = P_BUKRS AND GRUPO = 'PRIORI' AND ESTADO = TEXT-C03. SORT TI_CONST BY CORREL. "ZCORRELATIVO. "REPLACE @001 FREE R_BLART. WA_BLART-SIGN = 'I'. WA_BLART-OPTION = 'EQ'. LOOP AT TI_CONST ASSIGNING <FS_CONST>. WA_BLART-LOW = <FS_CONST>-ZVALOR. WA_BLART-HIGH = <FS_CONST>-YVALOR. APPEND WA_BLART TO R_BLART. ENDLOOP. ** ELSE. del Set d "REPLACE "REPLACE

TI_CONST

*** Si no encuentra el Set de Datos Mostrar mensaje de Error. ** MOVE TEXT-PC2 TO VS_OFF. ** MESSAGE TEXT-036 TYPE 'S'. ** ENDIF. ELSE. MOVE TEXT-PC2 TO VS_OFF. MESSAGE TEXT-036 TYPE 'S'. ENDIF. ENDFORM. " LOAD_CONSTANTES

*&---------------------------------------------------------------------* *& Form VALIDATE_PROCESS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM VALIDATE_PROCESS . DATA: VL_INDEX TYPE SY-INDEX, VG_NETO TYPE WERTV13. CLEAR: VG_INDEX, VG_TOTAL , VG_DMBTR. LOOP AT GT_BSIK_AUX ASSIGNING <FS_BSAUX>. IF <FS_BSAUX>-DMBTK LT 0. MULTIPLY <FS_BSAUX>-DMBTK BY -1. ENDIF. LOOP AT GT_ZSDDCONSTANTE ASSIGNING <FS_CONST> WHERE PROYECTO EQ 'ACOPIO_FI' AND "ZAPLICACION EQ 'ACOPIO_FI' AND "REPLACE @001 BUKRS EQ P_BUKRS AND "INSERT @001 GRUPO EQ 'PRIORI' AND "ZCGRUPO EQ 'PRIORI' AND "REPLACE @001 ESTADO EQ TEXT-C03. "ZESTADO EQ TEXT-C03. "REPLACE @001 LOOP AT GT_BSID ASSIGNING <FS_BSID> WHERE BUKRS = <FS_BSAUX>-BUKRS AND KUNNR = <FS_BSAUX>-KUNNR AND BLART = <FS_CONST>-ZVALOR. ADD 1 TO VL_INDEX. MOVE SY-TABIX TO VG_INDEX. IF VG_DMBTR LE <FS_BSAUX>-DMBTK. * * * * IF <FS_BSID>-SHKZG = 'S'. ADD <FS_BSID>-DMBTD TO VG_DMBTR. ELSE. SUBTRACT <FS_BSID>-DMBTD FROM VG_DMBTR. ENDIF. MOVE VL_INDEX TO <FS_BSID>-BUZNM. ELSE.

DELETE GT_BSID INDEX VG_INDEX. CONTINUE. ENDIF. ENDLOOP. LOOP AT GT_BSIK ASSIGNING <FS_BSIK> WHERE BUKRS = <FS_BSAUX>-BUKRS AND LIFNR = <FS_BSAUX>-LIFNR AND BLART = <FS_CONST>-ZVALOR. ADD 1 TO VL_INDEX. MOVE SY-TABIX TO VG_INDEX. IF VG_DMBTR LE <FS_BSAUX>-DMBTK. ADD <FS_BSIK>-DMBTK TO VG_DMBTR. MOVE VL_INDEX TO <FS_BSIK>-BUZNM. ELSE. DELETE GT_BSIK INDEX VG_INDEX. CONTINUE. ENDIF. ENDLOOP. ENDLOOP. VG_NETO = <FS_BSAUX>-DMBTK - VG_DMBTR. PERFORM CONVERTIR_MONTO CHANGING VG_NETO. LOOP AT TI_DATOS ASSIGNING <FS_DATOS> WHERE LIFNR = <FS_BSAUX>-LIFNR. VG_TOTAL = VG_TOTAL + <FS_DATOS>-MONTO. IF VG_NETO > 0. IF VG_NETO >= <FS_DATOS>-MONTO. <FS_DATOS>-PAGO = <FS_DATOS>-MONTO. ELSE. <FS_DATOS>-PAGO = VG_NETO. ENDIF. <FS_DATOS>-CHECK = 'X'. VG_NETO = VG_NETO - <FS_DATOS>-MONTO. ENDIF. ENDLOOP. CLEAR: VG_DMBTR,VG_NETO. ENDLOOP. DELETE TI_DATOS WHERE CHECK = ''. ENDFORM. " VALIDATE_PROCESS *&---------------------------------------------------------------------* *& Form F_OBTENER_PARAMETROS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text

*----------------------------------------------------------------------* FORM F_OBTENER_PARAMETROS . DATA: WA_HKONT LIKE LINE OF P_HKONT. CLEAR V_ZVALOR. DELETE @001 SELECT SINGLE ZVALOR INTO V_ZVALOR FROM ZSDDCONSTANTE WHERE ZAPLICACION = 'ACOPIO' AND ZCGRUPO = 'PERIOD' AND ZCORRELATIVO = '001' AND ZESTADO = 'A'. DELETE @001 INSERT @001 SELECT SINGLE ZVALOR INTO V_ZVALOR FROM YBCT_DCONSTANTE WHERE PROYECTO EQ 'ACOPIO' AND BUKRS EQ P_BUKRS AND GRUPO EQ 'PERIOD' AND CORREL EQ '001' AND ESTADO EQ 'A'. CONDENSE V_ZVALOR. *} INSERT @001 *{ * * * * * * *} *{ CASE P_PARM. WHEN '1'. CLEAR V_TXT. CONCATENATE SY-DATUM+0(4) SY-DATUM+4(2) V_ZVALOR INTO V_TXT. MOVE V_TXT TO V_DATUM. WHEN '2'. CLEAR V_TXT. IF SY-DATUM+6(2) > V_ZVALOR. V_DATUM = SY-DATUM. ELSE. V_MES = SY-DATUM+4(2). IF V_MES = '01'. V_MES = '12'. V_ANHO = SY-DATUM+0(4) - 1. ELSE. V_MES = V_MES - 1. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = V_MES IMPORTING OUTPUT = V_MES. V_ANHO = SY-DATUM+0(4). ENDIF. CONCATENATE V_ANHO V_MES '01' INTO V_FECHA. V_DATUM = V_FECHA. ENDIF. PERFORM F_CALCULAR_LASTDAY USING V_DATUM CHANGING V_DIA. CLEAR V_TXT. CONCATENATE V_DATUM+0(4) V_DATUM+4(2) V_DIA+6(2) INTO V_TXT. MOVE V_TXT TO V_DATUM. ENDCASE. P_FDOC = V_DATUM.

FREE P_HKONT. CLEAR WA_HKONT. WA_HKONT-SIGN = 'I'. WA_HKONT-OPTION = 'EQ'. *{ DELETE @001 * SELECT SINGLE ZVALOR AS LOW * INTO WA_HKONT-LOW * FROM ZSDDCONSTANTE * WHERE ZAPLICACION = 'ACOPIO' * AND ZCGRUPO = 'RETSEM'. *} DELETE @001 *{ INSERT @001 SELECT SINGLE ZVALOR AS LOW INTO WA_HKONT-LOW FROM YBCT_DCONSTANTE WHERE PROYECTO EQ 'ACOPIO' AND BUKRS EQ P_BUKRS AND GRUPO EQ 'RETSEM' AND CORREL EQ '001' AND ESTADO EQ 'A'. *} INSERT @001 APPEND WA_HKONT TO P_HKONT. ENDFORM. " F_OBTENER_PARAMETROS *&---------------------------------------------------------------------* *& Form F_CALCULAR_LASTDAY *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_V_DATUM text * <--P_V_DIA text *----------------------------------------------------------------------* FORM F_CALCULAR_LASTDAY USING PI_FECHA CHANGING PO_DIA. CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' EXPORTING DAY_IN = PI_FECHA IMPORTING LAST_DAY_OF_MONTH = PO_DIA EXCEPTIONS DAY_IN_NO_DATE = 1 OTHERS = 2. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. " F_CALCULAR_LASTDAY *&---------------------------------------------------------------------* *& Form F_LISTAR_DATOS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_LISTAR_DATOS . PERFORM F_CONSULTAS.

TI_TERCEROX[] = TI_TERCEROS[]. IF TI_TERCEROS[] IS NOT INITIAL. DELETE TI_TERCEROX WHERE DOCPAGO IS NOT INITIAL. IF TI_TERCEROX[] IS NOT INITIAL. SORT TI_TERCEROX BY BUKRS LIFNR BELNR GJAHR. DELETE ADJACENT DUPLICATES FROM TI_TERCEROX COMPARING BUKRS LIFNR BELNR G JAHR. SELECT BUKRS LIFNR AUGDT AUGBL GJAHR BELNR BUDAT BLDAT DMBTR AUGGJ INTO TABLE TI_BSAK FROM BSAK FOR ALL ENTRIES IN TI_TERCEROX WHERE BUKRS = TI_TERCEROX-BUKRS AND LIFNR = TI_TERCEROX-LIFNR AND BELNR = TI_TERCEROX-BELNR AND GJAHR = TI_TERCEROX-GJAHR. LOOP AT TI_TERCEROX ASSIGNING <FS_TERCEROS>. READ TABLE TI_BSAK ASSIGNING <FS_BSAK> WITH KEY LIFNR = <FS_TERCEROS>-LIFNR BELNR = <FS_TERCEROS>-BELNR GJAHR = <FS_TERCEROS>-GJAHR. IF SY-SUBRC = 0. IF <FS_BSAK>-AUGBL IS NOT INITIAL. UPDATE YFIT_TERCEROS SET DOCPAGO = <FS_BSAK>-AUGBL AUGGJ = <FS_BSAK>-AUGGJ AUGDT = <FS_BSAK>-AUGDT WHERE BUKRS = <FS_TERCEROS>-BUKRS AND BELNR = <FS_TERCEROS>-BELNR AND GJAHR = <FS_TERCEROS>-GJAHR. COMMIT WORK AND WAIT. ENDIF. ENDIF. ENDLOOP. ENDIF. PERFORM F_CONSULTAS. IF P_SPAGO = 'X'. DELETE TI_TERCEROS WHERE DOCPAGO IS NOT INITIAL. ELSE. DELETE TI_TERCEROS WHERE DOCPAGO IS INITIAL. ENDIF. IF TI_TERCEROS[] IS NOT INITIAL. SELECT BUKRS BELNR GJAHR INTO TABLE TI_BKPF FROM BKPF FOR ALL ENTRIES IN TI_TERCEROS WHERE BUKRS = TI_TERCEROS-BUKRS AND BELNR = TI_TERCEROS-BELNR AND GJAHR = TI_TERCEROS-GJAHR AND STBLG NE ''. CLEAR T001. SELECT SINGLE * FROM T001 WHERE BUKRS EQ P_BUKRS. LOOP AT TI_TERCEROS ASSIGNING <FS_TERCEROS>. READ TABLE TI_BKPF ASSIGNING <FS_BKPF> WITH KEY BUKRS = <FS_TERCEROS>-BUKRS

BELNR = <FS_TERCEROS>-BELNR GJAHR = <FS_TERCEROS>-GJAHR. IF SY-SUBRC = 0. <FS_TERCEROS>-FLAG = 'X'. ENDIF. <FS_TERCEROS>-WAERS = T001-WAERS. * * * PERFORM CONVERTIR_MONTO_COMP CHANGING <FS_TERCEROS>-DMBTR. PERFORM CONVERTIR_MONTO_COMP CHANGING <FS_TERCEROS>-TOTAL. ENDLOOP. DELETE TI_TERCEROS WHERE FLAG = 'X'. IF TI_TERCEROS[] IS NOT INITIAL. CALL SCREEN 0100. ENDIF. ELSE. MESSAGE TEXT-026 TYPE 'S'. ENDIF. ELSE. MESSAGE TEXT-026 TYPE 'S'. ENDIF.

ENDFORM. " F_LISTAR_DATOS *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'PF0100'. SET TITLEBAR 'TI0100'. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module M_SHOW_REPORT OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE M_SHOW_REPORT OUTPUT. IF GO_ALVGRID IS INITIAL. CREATE OBJECT GO_CCONTAINER EXPORTING CONTAINER_NAME = CC_0100 EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4 LIFETIME_DYNPRO_DYNPRO_LINK = 5 OTHERS = 6. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. CREATE OBJECT GO_ALVGRID EXPORTING I_PARENT = GO_CCONTAINER.

PERFORM F_COMPLETAR_DATOS. PERFORM F_FIELDCAT. CREATE OBJECT GO_EVENT. SET HANDLER GO_EVENT->HANDLE_TOOLBAR FOR GO_ALVGRID. SET HANDLER GO_EVENT->HANDLE_USER_COMMAND FOR GO_ALVGRID. SET HANDLER GO_EVENT->HANDLE_HOTSPOT_CLICK FOR GO_ALVGRID. CALL METHOD GO_ALVGRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING IS_LAYOUT = GS_LAYOUT CHANGING IT_OUTTAB = TI_TERCEROS IT_FIELDCATALOG = TI_FIELDCAT. ELSE. CALL METHOD GO_ALVGRID->REFRESH_TABLE_DISPLAY. ENDIF. CALL METHOD CL_GUI_CONTROL=>SET_FOCUS EXPORTING CONTROL = GO_ALVGRID. ENDMODULE. " M_SHOW_REPORT OUTPUT *&---------------------------------------------------------------------* *& Form F_FIELDCAT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_FIELDCAT . CLEAR GS_LAYOUT. GS_LAYOUT-COL_OPT = 'X'. GS_LAYOUT-ZEBRA = 'X'. FREE TI_FIELDCAT. IF P_TER = 'X'. GM_MACRO1 'YFIT_TERCEROS' 'COD_TERCE' TEXT-018 'COD_TERCE' '' '' '' ''. ELSEIF P_RET = 'X'. GM_MACRO1 'YFIT_TERCEROS' 'COD_TERCE' TEXT-019 'COD_TERCE' '' '' '' ''. ELSEIF P_RETSEM = 'X'. GM_MACRO1 'YFIT_TERCEROS' 'COD_TERCE' TEXT-027 'COD_TERCE' '' '' '' ''. ENDIF. GM_MACRO1 '' '' TEXT-T11 'NAME1T' '' '' '' ''. GM_MACRO1 'YFIT_TERCEROS' 'LIFNR' TEXT-028 'LIFNR' '' '' '' ''. GM_MACRO1 '' '' TEXT-T12 'NAME1G' '' '' '' ''. GM_MACRO1 'YFIT_TERCEROS' 'BELNR' TEXT-020 'BELNR' '' '' '' ''. GM_MACRO1 'YFIT_TERCEROS' 'BLDAT' TEXT-021 'BLDAT' '' '' '' ''. GM_MACRO1 'YFIT_TERCEROS' 'BUDAT' TEXT-022 'BUDAT' '' '' '' ''. GM_MACRO1 '' '' TEXT-T13 'XBLNR' '' '' '' ''. GM_MACRO1 'BSEG' '' TEXT-051 'WAERS' '' '' '' ''. GM_MACRO1 '' '' TEXT-024 'TOTAL' '' '' 'X' 'WAERS'. "YFIT_TERCERO S TOTAL GM_MACRO1 '' '' TEXT-025 'DMBTR' '' '' 'X' 'WAERS'. "DMBTR ENDFORM. " F_FIELDCAT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------*

* text *----------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT. CASE V_UCOMM100. WHEN 'BACK' OR 'EXIT' OR 'CANCEL'. SET SCREEN 0. LEAVE SCREEN. ENDCASE. ENDMODULE. " USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* *& Form F_PROCESO_RETSEM *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* *FORM f_proceso_retsem . * * DATA: w_monat TYPE char02, * w_fecha TYPE char08, * w_fedoc TYPE char08, * w_total TYPE bseg-wrbtr, * w_smonto TYPE char20, * w_xblnr TYPE string, * w_name1 TYPE lfa1-name1, * w_texto TYPE string, * w_count TYPE i, * w_hkont TYPE zsddconstante-zvalor. * * CLEAR v_flag. * FREE: ti_err_bi,ti_bdc_tab,ti_lfa1. * * SELECT lifnr bukrs witht wt_subjct wt_withcd * INTO TABLE ti_lfa1 * FROM lfbw * WHERE lifnr = p_lifgn * AND bukrs = p_bukrs. * * w_hkont = p_hkont-low. * * CONDENSE w_hkont. * * w_xblnr = p_xblnr. * * CONCATENATE p_budat+6(2) p_budat+4(2) p_budat+0(4) INTO w_fecha . * CONCATENATE p_fdoc+6(2) p_fdoc+4(2) p_fdoc+0(4) INTO w_fedoc. * w_monat = w_fecha+2(2). * * PERFORM f_dynpro USING: * 'X' 'SAPMF05A' '0100', * ' ' 'BDC_CURSOR' 'RF05A-NEWKO', * ' ' 'BDC_OKCODE' '/00', * ' ' 'BKPF-BLDAT' w_fedoc, * ' ' 'BKPF-BLART' p_blart, * ' ' 'BKPF-BUKRS' p_bukrs, * ' ' 'BKPF-BUDAT' w_fecha, * ' ' 'BKPF-MONAT' w_monat, * ' ' 'BKPF-WAERS' 'PEN', * ' ' 'BKPF-XBLNR' p_xblnr,

* * * * * * * * MOVE p_valor TO w_smonto. * CONDENSE w_smonto. * * PERFORM f_dynpro USING: * * * * * * * * * * * READ TABLE ti_lfa1 ASSIGNING * WITH KEY lifnr = p_lifgn. * IF sy-subrc = 0. * PERFORM f_dynpro USING: * * * (01)'. * ENDIF. * PERFORM f_dynpro USING: * * * * * * * * * PERFORM f_dynpro USING: * * * * * * * PERFORM f_dynpro USING: * * * * * PERFORM f_dynpro USING: * * * * * * * CLEAR wa_terceros. * wa_terceros-bukrs = p_bukrs.

' ' ' ' ' '

' ' ' ' ' '

'BKPF-BKTXT' 'FS006-DOCID' 'RF05A-NEWBS' 'RF05A-NEWKO' 'BDC_SUBSCR' 'BDC_SUBSCR'

p_bktxt, '*', '21', p_lifgn, 'SAPMF05A', 'SAPLSEXM'.

'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '

'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BSEG-WRBTR' 'BSEG-MWSKZ' 'BSEG-GSBER' 'BSEG-ZFBDT' 'RF05A-NEWBS' 'RF05A-NEWKO'

'0302', 'RF05A-NEWKO', '/00', w_smonto, '**', w_gsber, w_fedoc, '50', w_hkont.

<fs_lfa1>

'X' 'SAPLFWTD' ' ' 'BDC_OKCODE' ' ' 'BDC_CURSOR'

'0100', '/ECANC', 'WITH_ITEM-WT_WITHCD

'X' ' ' ' ' ' ' ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' '

'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BSEG-WRBTR' 'BSEG-VALUT' 'BDC_SUBSCR' 'DKACB-FMORE' 'SAPLKACB' 'BDC_CURSOR' 'BDC_OKCODE' 'COBL-GSBER' 'BDC_SUBSCR'

'0300', 'BSEG-WRBTR', '=ZK', w_smonto, w_fedoc , 'SAPLKACB', 'X'. '0002', 'COBL-GSBER', '=ENTE', w_gsber, 'SAPLKACB'. '0330', 'BSEG-VBUND', '=AB'. '0700', 'RF05A-NEWBS', '=BU', p_xblnr, p_bktxt .

'X' 'SAPMF05A' ' ' 'BDC_CURSOR' ' ' 'BDC_OKCODE' 'X' ' ' ' ' ' ' ' ' 'SAPMF05A' 'BDC_CURSOR' 'BDC_OKCODE' 'BKPF-XBLNR' 'BKPF-BKTXT'

* wa_terceros-gjahr = sy-datum+0(4). * wa_terceros-blart = p_blart. * wa_terceros-bldat = p_fdoc. * wa_terceros-budat = p_budat. * wa_terceros-cod_terce = p_hkont-low. * wa_terceros-dmbtr = w_smonto. * wa_terceros-periodo = p_parm. * wa_terceros-regio = p_reg. * wa_terceros-total = w_smonto. * wa_terceros-lifnr = p_lifgn. * wa_terceros-tipo_ret = 'S'. * wa_terceros-xblnr = p_xblnr. * * PERFORM f_call_transaction USING w_smonto. * * * * *ENDFORM. " F_PROCESO_RETSEM *&---------------------------------------------------------------------* *& Form F_CONSULTAS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_CONSULTAS . DATA: R_BLDAT TYPE RANGE OF BKPF-BLDAT, WA_BLDAT LIKE LINE OF R_BLDAT . WA_BLDAT-SIGN = 'I'. WA_BLDAT-OPTION = 'BT'. CONCATENATE S_ANHO S_MES '01' INTO WA_BLDAT-LOW. PERFORM F_CALCULAR_LASTDAY USING WA_BLDAT-LOW CHANGING WA_BLDAT-HIGH. APPEND WA_BLDAT TO R_BLDAT. IF P_MEN = 'X'. IF P_TER = 'X'. SELECT * INTO TABLE TI_TERCEROS FROM YFIT_TERCEROS WHERE BUKRS = P_BUKRS AND LIFNR IN P_LIFRT "@LF01 AND REGIO = P_REG AND BLART = P_BLART AND COD_TERCE IN P_LIFNR AND BLDAT IN R_BLDAT. ELSEIF P_RET = 'X'. SELECT * INTO TABLE TI_TERCEROS FROM YFIT_TERCEROS WHERE BUKRS = P_BUKRS AND LIFNR IN P_LIFRT AND REGIO = P_REG AND BLART = P_BLART AND COD_TERCE IN P_LIFNR AND BLDAT IN R_BLDAT. ELSEIF P_RETSEM = 'X'. SELECT * INTO TABLE TI_TERCEROS

"@LF01 " p_lifrt "@LF01

FROM YFIT_TERCEROS WHERE BUKRS = P_BUKRS AND LIFNR IN P_LIFRT AND REGIO = P_REG AND BLART = P_BLART AND COD_TERCE IN P_LIFNR AND BLDAT IN R_BLDAT. ENDIF. ENDIF. IF P_QUIN = 'X'. IF P_TER = 'X'. SELECT * INTO TABLE TI_TERCEROS FROM YFIT_TERCEROS WHERE BUKRS = P_BUKRS AND LIFNR IN P_LIFRT AND PERIODO = P_PARM AND REGIO = P_REG AND BLART = P_BLART AND COD_TERCE IN P_LIFNR AND BLDAT IN R_BLDAT. ELSEIF P_RET = 'X'. SELECT * INTO TABLE TI_TERCEROS FROM YFIT_TERCEROS WHERE BUKRS = P_BUKRS AND LIFNR IN P_LIFRT AND PERIODO = P_PARM AND REGIO = P_REG AND BLART = P_BLART AND COD_TERCE IN P_LIFNR AND BLDAT IN R_BLDAT. ELSEIF P_RETSEM = 'X'. SELECT * INTO TABLE TI_TERCEROS FROM YFIT_TERCEROS WHERE BUKRS = P_BUKRS AND LIFNR IN P_LIFRT AND PERIODO = P_PARM AND REGIO = P_REG AND BLART = P_BLART AND COD_TERCE IN P_LIFNR AND BLDAT IN R_BLDAT. ENDIF. ENDIF.

"p_hkont "@LF01

"@LF01

"@LF01

" p_lifrt "@LF01

"@LF01

"p_hkont "@LF01

ENDFORM. " F_CONSULTAS *&---------------------------------------------------------------------* *& Form agregar_boton *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->E_OBJECT text *----------------------------------------------------------------------* FORM AGREGAR_BOTON USING E_OBJECT TYPE REF TO CL_ALV_EVENT_TOOLBAR_SET. PERFORM F_ADD_BOTON USING 'DOWN' ICON_XLS '' TEXT-T14 E_OBJECT. IF P_TER EQ 'X'.

PERFORM F_ADD_BOTON USING 'DETAIL' ICON_VIEWER_OPTICAL_ARCHIVE '' TEXT-T15 E_OBJECT. ENDIF. ENDFORM. " AGREGAR_BOTON

*&---------------------------------------------------------------------* *& Form f_add_boton *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->PI_FUNCTION text * -->P_ICON text * -->PI_TEXT text * -->P_QUICKINFO text * -->E_OBJECT text *----------------------------------------------------------------------* FORM F_ADD_BOTON USING PI_FUNCTION P_ICON PI_TEXT P_QUICKINFO E_OBJECT TYPE REF TO CL_ALV_EVENT_TOOLBAR_SET. DATA: V_TOOLBAR TYPE STB_BUTTON. CLEAR V_TOOLBAR. MOVE 3 TO V_TOOLBAR-BUTN_TYPE. APPEND V_TOOLBAR TO E_OBJECT->MT_TOOLBAR. CLEAR V_TOOLBAR. MOVE: PI_FUNCTION P_ICON PI_TEXT P_QUICKINFO SPACE APPEND V_TOOLBAR ENDFORM. TO TO TO TO TO TO V_TOOLBAR-FUNCTION, V_TOOLBAR-ICON, V_TOOLBAR-TEXT, V_TOOLBAR-QUICKINFO, V_TOOLBAR-DISABLED. E_OBJECT->MT_TOOLBAR. " F_ADD_BOTON

*&---------------------------------------------------------------------* *& Form user_command_oo *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_E_UCOMM text *----------------------------------------------------------------------* FORM USER_COMMAND_OO USING P_E_UCOMM. CASE P_E_UCOMM. WHEN 'DOWN'. PERFORM F_DOWNLOAD. WHEN 'DETAIL'. * PERFORM f_init_objexcel. PERFORM F_DOWNLOAD_SHEET. ENDCASE. ENDFORM. " USER_COMMAND_OO *&---------------------------------------------------------------------* *& Form f_download *&---------------------------------------------------------------------*

* text *----------------------------------------------------------------------* FORM F_DOWNLOAD . DATA: W_FILENAME W_PATH W_FULLPATH V_FILE_FILTER W_MONTO W_MONTOS W_RUC W_LINES W_PAGO TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE STRING, STRING, STRING, STRING, P, STRING, STRING, I, BSEG-DMBTR.

TYPES: BEGIN OF TY_EXCEL, COD_PROVEEDOR TYPE LFA1-LIFNR, NOMBRE TYPE LFA1-NAME1, IMPORTE_PAGAR TYPE STRING, END OF TY_EXCEL. TYPES: BEGIN OF TY_EXCELX, COD_PROVEEDOR TYPE LFA1-LIFNR, NOMBRE TYPE LFA1-NAME1, IMPORTE_PAGAR TYPE BSEG-DMBTR, END OF TY_EXCELX. TYPES: BEGIN OF TY_EXCEL_RS, CTA_MAYOR TYPE BSEG-HKONT, IMPORTE_PAGAR TYPE STRING, END OF TY_EXCEL_RS. TYPES: BEGIN OF TY_EXCEL_RSX, CTA_MAYOR TYPE BSEG-HKONT, IMPORTE_PAGAR TYPE BSEG-DMBTR, END OF TY_EXCEL_RSX. DATA: TI_EXCEL TI_EXCELX TI_RTSEM TI_RTSEX DATA: WA_EXCEL WA_SEM WA_EXCELX WA_SEMX V_BMTCO TYPE TYPE TYPE TYPE LIKE LIKE LIKE LIKE TYPE STANDARD STANDARD STANDARD STANDARD LINE OF LINE OF LINE OF LINE OF CHAR16. TABLE TABLE TABLE TABLE OF OF OF OF TY_EXCEL, TY_EXCELX, TY_EXCEL_RS, TY_EXCEL_RSX.

TI_EXCEL, TI_RTSEM, TI_EXCELX, TI_RTSEX,

FIELD-SYMBOLS: <FS_EXCELX> LIKE LINE OF TI_EXCELX , <FS_RTSEX> LIKE LINE OF TI_RTSEX. FREE :TI_EXCEL,TI_RTSEM,TI_EXCELX,TI_RTSEX. V_FILE_FILTER = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL. IF P_TER = P_RET = IF P_TER DELETE ELSE. DELETE 'X' OR 'X'. = 'X'. TI_TERCEROS WHERE BLART NE 'DP'. TI_TERCEROS WHERE BLART NE 'RT'

AND TIPO_RET NE 'J'. ENDIF. WA_EXCEL-COD_PROVEEDOR = TEXT-T16. WA_EXCEL-NOMBRE = TEXT-T17. WA_EXCEL-IMPORTE_PAGAR = TEXT-T18. APPEND WA_EXCEL TO TI_EXCEL. LOOP AT TI_TERCEROS ASSIGNING <FS_TERCEROS>. WA_EXCELX-COD_PROVEEDOR = <FS_TERCEROS>-COD_TERCE. SELECT SINGLE NAME1 INTO WA_EXCELX-NOMBRE FROM LFA1 WHERE LIFNR = <FS_TERCEROS>-COD_TERCE. MOVE <FS_TERCEROS>-DMBTR TO WA_EXCELX-IMPORTE_PAGAR . COLLECT WA_EXCELX INTO TI_EXCELX. ENDLOOP. LOOP AT TI_EXCELX ASSIGNING <FS_EXCELX>. WRITE <FS_EXCELX>-IMPORTE_PAGAR TO V_BMTCO CURRENCY T001-WAERS. IF FORMATO_DEC = 'X'. CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS' EXPORTING DMZEI = '.' DTYPE = 'CURR' EFELD = V_BMTCO IMP_DECIMALS = 2 IMPORTING ERROR = P_ERROR IFELD = V_BMTCO. ELSE. CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS' EXPORTING DMZEI = ',' DTYPE = 'CURR' EFELD = V_BMTCO IMP_DECIMALS = 2 IMPORTING ERROR = P_ERROR IFELD = V_BMTCO. ENDIF. <FS_EXCELX>-IMPORTE_PAGAR = V_BMTCO. MOVE-CORRESPONDING <FS_EXCELX> TO WA_EXCEL. APPEND WA_EXCEL TO TI_EXCEL. ENDLOOP. IF TI_EXCEL[] IS NOT INITIAL. DESCRIBE TABLE TI_EXCEL LINES W_LINES. DATA V_TEXTO19 TYPE STRING. V_TEXTO19 = TEXT-T19. IF W_LINES > 1. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG EXPORTING WINDOW_TITLE = V_TEXTO19 DEFAULT_EXTENSION = 'XLS' FILE_FILTER = V_FILE_FILTER CHANGING FILENAME = W_FILENAME PATH = W_PATH

FULLPATH

= W_FULLPATH.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD EXPORTING FILENAME = W_FULLPATH WRITE_FIELD_SEPARATOR = 'X' CHANGING DATA_TAB = TI_EXCEL EXCEPTIONS FILE_WRITE_ERROR = 1 NO_BATCH = 2 GUI_REFUSE_FILETRANSFER = 3 INVALID_TYPE = 4 NO_AUTHORITY = 5 UNKNOWN_ERROR = 6 HEADER_NOT_ALLOWED = 7 SEPARATOR_NOT_ALLOWED = 8 FILESIZE_NOT_ALLOWED = 9 HEADER_TOO_LONG = 10 DP_ERROR_CREATE = 11 DP_ERROR_SEND = 12 DP_ERROR_WRITE = 13 UNKNOWN_DP_ERROR = 14 ACCESS_DENIED = 15 DP_OUT_OF_MEMORY = 16 DISK_FULL = 17 DP_TIMEOUT = 18 FILE_NOT_FOUND = 19 DATAPROVIDER_EXCEPTION = 20 CONTROL_FLUSH_ERROR = 21 OTHERS = 22. IF SY-SUBRC = 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ELSE. MESSAGE TEXT-T20 TYPE 'S'. ENDIF. ENDIF. ELSEIF P_RETSEM = 'X'. DELETE TI_TERCEROS WHERE BLART NE 'RT' AND TIPO_RET NE 'S'. * WA_SEM-CTA_MAYOR = TEXT-T21. wa_excel-nombre = 'Descripcin'. WA_SEM-IMPORTE_PAGAR = TEXT-T22. APPEND WA_SEM TO TI_RTSEM. LOOP AT TI_TERCEROS ASSIGNING <FS_TERCEROS>. WA_SEMX-CTA_MAYOR = <FS_TERCEROS>-COD_TERCE. MOVE <FS_TERCEROS>-DMBTR TO WA_SEMX-IMPORTE_PAGAR . COLLECT WA_SEMX INTO TI_RTSEX. ENDLOOP. LOOP AT TI_RTSEX ASSIGNING <FS_RTSEX>. MOVE-CORRESPONDING <FS_RTSEX> TO WA_SEM. APPEND WA_SEM TO TI_RTSEM. ENDLOOP.

IF TI_RTSEM[] IS NOT INITIAL. DESCRIBE TABLE TI_RTSEM LINES W_LINES. IF W_LINES > 1. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG EXPORTING WINDOW_TITLE = V_TEXTO19 DEFAULT_EXTENSION = 'XLS' FILE_FILTER = V_FILE_FILTER CHANGING FILENAME = W_FILENAME PATH = W_PATH FULLPATH = W_FULLPATH. CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD EXPORTING FILENAME = W_FULLPATH WRITE_FIELD_SEPARATOR = 'X' CHANGING DATA_TAB = TI_RTSEM EXCEPTIONS FILE_WRITE_ERROR = 1 NO_BATCH = 2 GUI_REFUSE_FILETRANSFER = 3 INVALID_TYPE = 4 NO_AUTHORITY = 5 UNKNOWN_ERROR = 6 HEADER_NOT_ALLOWED = 7 SEPARATOR_NOT_ALLOWED = 8 FILESIZE_NOT_ALLOWED = 9 HEADER_TOO_LONG = 10 DP_ERROR_CREATE = 11 DP_ERROR_SEND = 12 DP_ERROR_WRITE = 13 UNKNOWN_DP_ERROR = 14 ACCESS_DENIED = 15 DP_OUT_OF_MEMORY = 16 DISK_FULL = 17 DP_TIMEOUT = 18 FILE_NOT_FOUND = 19 DATAPROVIDER_EXCEPTION = 20 CONTROL_FLUSH_ERROR = 21 OTHERS = 22. IF SY-SUBRC = 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ELSE. MESSAGE TEXT-T23 TYPE 'S'. ENDIF. ENDIF. ENDIF. ENDFORM.

"f_download

*&---------------------------------------------------------------------* *& Form F_DOWNLOAD_SHEET

*&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_DOWNLOAD_SHEET . DATA: FILENAME PATH FULLPATH FILE TYPE TYPE TYPE TYPE STRING, STRING, STRING, RLGRAP-FILENAME.

DELETE TI_TERCEROS WHERE BLART NE 'DP'. REFRESH TI_TERC_EXCEL. LOOP AT TI_TERCEROS ASSIGNING <FS_TERCEROS>. APPEND INITIAL LINE TO TI_TERC_EXCEL ASSIGNING <FS_TERC_EXCEL>. MOVE-CORRESPONDING <FS_TERCEROS> TO <FS_TERC_EXCEL>. ENDLOOP. SORT TI_TERC_EXCEL BY COD_TERCE DESCENDING LIFNR GJAHR BELNR ASCENDING. * tell user what is going on CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING * PERCENTAGE = 0 TEXT = TEXT-033 EXCEPTIONS OTHERS = 1. * start Excel CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'. * PERFORM ERR_HDL. SET PROPERTY OF H_EXCEL 'Visible' = 0. CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL. PERFORM ERR_HDL. DATA: V_COUNT V_CADENA V_IMPCO V_TOTCO TYPE TYPE TYPE TYPE I, CHAR20, CHAR16, CHAR16.

LOOP AT TI_TERC_EXCEL ASSIGNING <FS_TERC_EXCEL>. WRITE <FS_TERC_EXCEL>-TOTAL TO V_TOTCO CURRENCY T001-WAERS. WRITE <FS_TERC_EXCEL>-DMBTR TO V_IMPCO CURRENCY T001-WAERS. IF FORMATO_DEC = 'X'. CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS' EXPORTING DMZEI = '.' DTYPE = 'CURR' EFELD = V_TOTCO IMP_DECIMALS = 2 IMPORTING * ERROR = P_ERROR IFELD = V_TOTCO. CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS' EXPORTING

DMZEI DTYPE EFELD IMP_DECIMALS IMPORTING ERROR IFELD ELSE.

= = = =

'.' 'CURR' V_IMPCO 2

= P_ERROR = V_IMPCO.

CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS' EXPORTING DMZEI = ',' DTYPE = 'CURR' EFELD = V_TOTCO IMP_DECIMALS = 2 IMPORTING ERROR = P_ERROR IFELD = V_TOTCO. CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS' EXPORTING DMZEI = ',' DTYPE = 'CURR' EFELD = V_IMPCO IMP_DECIMALS = 2 IMPORTING ERROR = P_ERROR IFELD = V_IMPCO. ENDIF. <FS_TERC_EXCEL>-TOTAL = V_TOTCO. <FS_TERC_EXCEL>-DMBTR = V_IMPCO. CLEAR: V_TOTCO, V_IMPCO.

IF SY-TABIX EQ 1. * add a new workbook CALL METHOD OF H_MAPL 'Add' = H_MAP. PERFORM ERR_HDL. V_CADENA = TEXT-T26. GET PROPERTY OF H_EXCEL 'ActiveSheet' = E_ACTIVESHEET. SET PROPERTY OF E_ACTIVESHEET 'Name' = V_CADENA. ENDIF. AT NEW COD_TERCE. V_COUNT = 0. CALL METHOD OF H_EXCEL 'Worksheets' = H_MAPL." EXPORTIN G #1 = 2. CALL METHOD OF H_MAPL 'Add' = H_MAP. PERFORM ERR_HDL. V_CADENA = <FS_TERC_EXCEL>-COD_TERCE. SET PROPERTY OF H_MAP 'NAME' = V_CADENA. * output column headings to active Excel sheet V_COUNT = V_COUNT + 1. PERFORM FILL_CELL USING V_COUNT 1 1 <FS_TERC_EXCEL>-COD_TERCE. PERFORM FILL_CELL USING V_COUNT 2 1 <FS_TERC_EXCEL>-NAME1T. V_COUNT = V_COUNT + 1. PERFORM FILL_CELL USING V_COUNT 1 1 TEXT-T28. PERFORM FILL_CELL USING V_COUNT 2 1 TEXT-T29.

PERFORM PERFORM PERFORM PERFORM PERFORM PERFORM ENDAT.

FILL_CELL FILL_CELL FILL_CELL FILL_CELL FILL_CELL FILL_CELL

USING USING USING USING USING USING

V_COUNT V_COUNT V_COUNT V_COUNT V_COUNT V_COUNT

3 4 5 6 7 8

1 1 1 1 1 1

TEXT-T30. TEXT-T31. TEXT-T32. TEXT-T33. TEXT-T34. TEXT-T35.

* copy los contenidos V_COUNT = V_COUNT PERFORM FILL_CELL PERFORM FILL_CELL PERFORM FILL_CELL PERFORM FILL_CELL PERFORM FILL_CELL PERFORM FILL_CELL PERFORM FILL_CELL PERFORM FILL_CELL ENDLOOP.

de los terceros to + 1. USING V_COUNT 1 0 USING V_COUNT 2 0 USING V_COUNT 3 0 USING V_COUNT 4 0 USING V_COUNT 5 0 USING V_COUNT 6 0 USING V_COUNT 7 0 USING V_COUNT 8 0

active EXCEL sheet <FS_TERC_EXCEL>-LIFNR. <FS_TERC_EXCEL>-NAME1G. <FS_TERC_EXCEL>-BELNR. <FS_TERC_EXCEL>-BLDAT. <FS_TERC_EXCEL>-BUDAT. <FS_TERC_EXCEL>-XBLNR. <FS_TERC_EXCEL>-TOTAL. <FS_TERC_EXCEL>-DMBTR.

* DATA V_TEXTO20 TYPE STRING. * V_TEXTO20 = TEXT-T36. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG EXPORTING WINDOW_TITLE = 'Select archivo' DEFAULT_EXTENSION = 'xls' FILE_FILTER = '*.xls' CHANGING FILENAME = FILENAME PATH = PATH FULLPATH = FULLPATH. IF SY-SUBRC EQ 0. FILE = FULLPATH. ENDIF. SET PROPERTY OF H_EXCEL 'Visible' = 1. * DATA V_TEXTO21 TYPE STRING. * V_TEXTO21 = TEXT-T37. CALL METHOD OF H_EXCEL 'SAVEAS' EXPORTING #1 = 'C:\rescate\hola.xls'. "V_TEXTO21."file. CALL METHOD OF H_EXCEL 'close'. CALL METHOD OF H_MAPL 'QUIT'. FREE OBJECT H_MAPL. FREE OBJECT H_EXCEL. ENDFORM. " F_DOWNLOAD_SHEET

"V_TEXTO20

*&---------------------------------------------------------------------* *& Form f_hotspot *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->PI_COLUMN_ID text * -->PI_ROW_ID text

*----------------------------------------------------------------------* FORM F_HOTSPOT USING PI_COLUMN_ID PI_ROW_ID. * read table ti_rbkp assigning <fs_rbkp> * index pi_row_id. * if sy-subrc = 0. * case pi_column_id. * when 'DOCFI'. * set parameter id: 'BLN' field <fs_rbkp>-docfi, * 'BUK' field <fs_rbkp>-bukrs, * 'GJR' field <fs_rbkp>-gjahr. * call transaction 'FB03' and skip first screen. * when 'DOCDE'. * set parameter id: 'BLN' field <fs_rbkp>-docde, * 'BUK' field <fs_rbkp>-bukrs, * 'GJR' field <fs_rbkp>-gjahr. * call transaction 'FB03' and skip first screen. * endcase. * endif. ENDFORM. "f_hotspot *&---------------------------------------------------------------------* *& Form F_COMPLETAR_DATOS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM F_COMPLETAR_DATOS. TYPES: BEGIN OF TY_LFA1X, LIFNR TYPE LFA1-LIFNR, NAME1 TYPE LFA1-NAME1, END OF TY_LFA1X. DATA: TI_LFA1X TYPE STANDARD TABLE OF TY_LFA1X. FIELD-SYMBOLS:<FS_LFA1X> LIKE LINE OF TI_LFA1X . TI_TERCEROX[] = TI_TERCEROS[]. SORT TI_TERCEROX BY LIFNR. DELETE ADJACENT DUPLICATES FROM TI_TERCEROX . SELECT LIFNR NAME1 INTO TABLE TI_LFA1X FROM LFA1 FOR ALL ENTRIES IN TI_TERCEROX WHERE LIFNR = TI_TERCEROX-LIFNR. TI_TERCEROX[] = TI_TERCEROS[]. SORT TI_TERCEROX BY COD_TERCE. DELETE ADJACENT DUPLICATES FROM TI_TERCEROX . SELECT LIFNR NAME1 APPENDING TABLE TI_LFA1X FROM LFA1 FOR ALL ENTRIES IN TI_TERCEROX WHERE LIFNR = TI_TERCEROX-COD_TERCE. LOOP AT TI_TERCEROS ASSIGNING <FS_TERCEROS>. READ TABLE TI_LFA1X ASSIGNING <FS_LFA1X> WITH KEY LIFNR = <FS_TERCEROS>-COD_TERCE. IF SY-SUBRC = 0. <FS_TERCEROS>-NAME1T = <FS_LFA1X>-NAME1. ENDIF. READ TABLE TI_LFA1X ASSIGNING <FS_LFA1X>

WITH KEY LIFNR = <FS_TERCEROS>-LIFNR. IF SY-SUBRC = 0. <FS_TERCEROS>-NAME1G = <FS_LFA1X>-NAME1. ENDIF. ENDLOOP. ENDFORM. "F_COMPLETAR_DATOS *&---------------------------------------------------------------------* *& Form F_OBTENER_CENTROS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_OBTENER_CENTROS . IF P_REG = 'LSM'. P_REG = 'SMA'. ENDIF. *{ * * * * * * * * * * *} DELETE @001 SELECT ZVALOR AS LOW INTO CORRESPONDING FIELDS OF TABLE R_WERKS FROM ZSDDCONSTANTE WHERE ZAPLICACION = 'ACOPIO' AND ZCGRUPO = 'CENTRO' AND YVALOR = P_REG AND ZESTADO = 'A'. LOOP AT R_WERKS ASSIGNING <FS_WERKS> . <FS_WERKS>-SIGN = 'I'. <FS_WERKS>-OPTION = 'EQ'. ENDLOOP. DELETE @001

*{ INSERT @001 SELECT ZVALOR AS LOW FROM YBCT_DCONSTANTE INTO CORRESPONDING FIELDS OF TABLE R_WERKS WHERE PROYECTO EQ 'ACOPIO' AND BUKRS EQ P_BUKRS AND GRUPO EQ 'CENTRO' AND ESTADO EQ 'A'. R_WERKS-SIGN = 'I'. R_WERKS-OPTION = 'EQ'. MODIFY R_WERKS TRANSPORTING SIGN OPTION WHERE NOT LOW IS INITIAL. *} INSERT @001 CALL FUNCTION 'MONTH_NAMES_GET' EXPORTING LANGUAGE = SY-LANGU TABLES MONTH_NAMES = TI_T247 EXCEPTIONS MONTH_NAMES_NOT_FOUND = 1 OTHERS = 2. V_INI = P_REG+0(1). IF P_REG = 'LIB'. V_INI = 'T'. ENDIF.

ENDFORM. " F_OBTENER_CENTROS *&---------------------------------------------------------------------* *& Form MOSTRAR_REPORTE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_MOSTRAR_REPORTE. DATA: LWA_FIELDCAT TYPE LVC_S_FCAT, PT_FIELDCAT TYPE LVC_T_FCAT, GP_LAYOUT TYPE LVC_S_LAYO. DEFINE ADD_FIELD. CLEAR LWA_FIELDCAT. LWA_FIELDCAT-COL_POS LWA_FIELDCAT-FIELDNAME LWA_FIELDCAT-REPTEXT LWA_FIELDCAT-OUTPUTLEN LWA_FIELDCAT-DATATYPE APPEND LWA_FIELDCAT TO END-OF-DEFINITION. IF P_TER EQ ADD_FIELD ADD_FIELD ADD_FIELD ADD_FIELD ADD_FIELD 'X'. 1 'ICON' 2 'LIFNT' 3 'NAME1' 4 'BELNR' 5 'MESGE'

= &1. = &2. = &3. = &4. = &5. PT_FIELDCAT.

TEXT-T38 TEXT-T39 TEXT-T40 TEXT-T41 TEXT-T42 TEXT-T39 TEXT-T43 TEXT-T41 TEXT-T42

8 30 40 20 30 30 30 20 30

'CHAR08'. 'CHAR30'. 'CHAR40'. 'CHAR20'. 'CHAR30'. 'CHAR30'. 'CHAR30'. 'CHAR20'. 'CHAR30'.

ELSEIF P_RET = 'X'. ADD_FIELD 1 'LIFNT' ADD_FIELD 2 'LIFNR' ADD_FIELD 3 'BELNR' ADD_FIELD 4 'MESGE'

ELSEIF P_RETSEM = 'X'. ADD_FIELD 1 'LIFNR' TEXT-T43 30 'CHAR30'. ADD_FIELD 2 'BELNR' TEXT-T41 20 'CHAR20'. ADD_FIELD 3 'MESGE' TEXT-T42 30 'CHAR30'. ENDIF. GP_LAYOUT-ZEBRA = 'X'. GP_LAYOUT-CWIDTH_OPT = 'X'. "colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING I_GRID_TITLE = V_TEXTO3 I_CALLBACK_PROGRAM = SY-REPID I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND' IS_LAYOUT_LVC = GP_LAYOUT IT_FIELDCAT_LVC = PT_FIELDCAT[] I_SAVE = 'X' TABLES T_OUTTAB = TI_REPORT EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. " MOSTRAR_REPORTE

*-------------------------------------------------------------* FORM F_USER_COMMAND Process Call Back Events (Begin) *-------------------------------------------------------------FORM F_USER_COMMAND USING UCOMM LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD. CASE UCOMM. WHEN '&IC1'. READ TABLE TI_REPORT INTO WA_REPORT INDEX SELFIELD-TABINDEX. IF SY-SUBRC EQ 0. IF WA_REPORT-BELNR NE SPACE AND WA_REPORT-GJAHR NE SPACE. * Doble Clic para Documento Contable SET PARAMETER ID 'BLN' FIELD WA_REPORT-BELNR. SET PARAMETER ID 'BUK' FIELD P_BUKRS. SET PARAMETER ID 'GJR' FIELD WA_REPORT-GJAHR. CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. ENDIF. ENDIF. ENDCASE. ENDFORM. "ALV_USER_COMMAND *---------------------------------------------------------------------* * FORM FILL_CELL * *---------------------------------------------------------------------* * sets cell at coordinates i,j to value val boldtype bold * *---------------------------------------------------------------------* FORM FILL_CELL USING I J BOLD VAL. CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J. * PERFORM err_hdl. SET PROPERTY OF H_ZL 'Value' = VAL . * PERFORM err_hdl. GET PROPERTY OF H_ZL 'Font' = H_F. * PERFORM err_hdl. SET PROPERTY OF H_F 'Bold' = BOLD. * PERFORM err_hdl. ENDFORM. "FILL_CELL

*&---------------------------------------------------------------------* *& Form ERR_HDL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM ERR_HDL . IF SY-SUBRC <> 0.

WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC. STOP. ENDIF. ENDFORM. " ERR_HDL

*&---------------------------------------------------------------------* *& Form F_INIT_OBJEXCEL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F_INIT_OBJEXCEL. DATA: L_EXCEL1(50) W_LEN V_ARCHPC V_NOMBRE L_USER TYPE TYPE TYPE LIKE TYPE C, I, RLGRAP-FILENAME, RLGRAP-FILENAME, STRING.

DATA: L_ARCHIVO TYPE STRING, L_PATH TYPE STRING, L_FILENAME TYPE STRING, L_FILE_FILTER TYPE STRING, ERROR_EXCEL(1) TYPE C, FILE_SEPARATOR TYPE C VALUE '\' . DATA: BEGIN OF T_MODELO_XLS1 OCCURS 0, REGISTRO TYPE X, END OF T_MODELO_XLS1. * Asignamos la direccin donde se encuentra la plantilla CONCATENATE '\\' SY-HOST '\Tmp\YFIP0181.xls' INTO GC_ARCHUX. * GC_ARCHUX = 'C:\Users\ADELAIDA\Desktop\YFIP0181.xls'. * Obtiene la plantilla del servidor OPEN DATASET GC_ARCHUX FOR INPUT IN BINARY MODE. IF SY-SUBRC EQ 0. DO. READ DATASET GC_ARCHUX INTO T_MODELO_XLS1. IF SY-SUBRC <> 0. EXIT. ENDIF. APPEND T_MODELO_XLS1. ENDDO. CLOSE DATASET GC_ARCHUX. ENDIF. * No se pudo conseguir el modelo -> msg error IF T_MODELO_XLS1[] IS INITIAL. MESSAGE E008(ZHRMSG) WITH TEXT-E01. ENDIF. * CALL FUNCTION 'GUI_GET_DESKTOP_INFO' * EXPORTING * TYPE = '11' * CHANGING

RETURN = L_USER.

* Propone escritorio CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_DESKTOP_DIRECTORY CHANGING DESKTOP_DIRECTORY = L_USER. CALL METHOD CL_GUI_CFW=>FLUSH EXCEPTIONS CNTL_SYSTEM_ERROR = 1 CNTL_ERROR = 2 OTHERS = 3. CONCATENATE L_USER '\' INTO L_PATH. CONCATENATE SY-TCODE SY-DATUM SY-UZEIT INTO V_NOMBRE SEPARATED BY '_'. CONCATENATE V_NOMBRE '.xls' INTO V_NOMBRE. DESCRIBE TABLE T_MODELO_XLS1 LINES SY-TABIX. MOVE V_NOMBRE TO L_ARCHIVO. DATA V_TEXTO21 TYPE STRING. V_TEXTO21 = TEXT-T47. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG EXPORTING WINDOW_TITLE = V_TEXTO21 DEFAULT_FILE_NAME = L_ARCHIVO INITIAL_DIRECTORY = L_PATH FILE_FILTER = L_FILE_FILTER CHANGING FILENAME = L_FILENAME PATH = L_PATH FULLPATH = L_ARCHIVO. IF L_FILENAME IS INITIAL. ERROR_EXCEL = 'X'. CLEAR GP_FILE. ELSE. CLEAR: ERROR_EXCEL. GP_FILE = L_ARCHIVO. ENDIF. CHECK ERROR_EXCEL NE 'X'. DESCRIBE TABLE T_MODELO_XLS1 LINES SY-TABIX. TRANSLATE GP_FILE TO UPPER CASE. SEARCH GP_FILE FOR '.XLS'. IF SY-SUBRC NE 0. CONCATENATE GP_FILE '.XLS' INTO GP_FILE. ENDIF. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING BIN_FILESIZE = FILENAME = FILETYPE = TABLES DATA_TAB = EXCEPTIONS FILE_WRITE_ERROR = NO_BATCH =

SY-TABIX GP_FILE 'BIN' T_MODELO_XLS1 1 2

GUI_REFUSE_FILETRANSFER = 3 INVALID_TYPE = 4 OTHERS = 5. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. " F_INIT_OBJEXCEL *&---------------------------------------------------------------------* *& Form COMP_CODE_INIT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_P_BUKRS text *----------------------------------------------------------------------* FORM COMP_CODE_INIT CHANGING C_CCODE TYPE BUKRS. IF C_CCODE IS INITIAL. GET PARAMETER ID 'BUK' FIELD C_CCODE. ENDIF. IF NOT C_CCODE IS INITIAL. CALL FUNCTION 'FI_COMPANY_CODE_CHECK' EXPORTING I_BUKRS = C_CCODE EXCEPTIONS COMPANY_CODE = 1 OTHERS = 2. IF SY-SUBRC NE 0. CLEAR C_CCODE. ENDIF. ENDIF. IF NOT C_CCODE IS INITIAL. CALL FUNCTION 'DOCHEADER_AUTHORITY_CHECK' EXPORTING I_BUKRS = C_CCODE I_BLART = SPACE I_BRGRU = SPACE EXCEPTIONS ERROR_MESSAGE = 99. IF SY-SUBRC EQ 99. MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO WITH SY-MSGV1. CLEAR C_CCODE. ENDIF. ENDIF. IF C_CCODE IS INITIAL. CALL FUNCTION 'DOCHEADER_COMP_CODE_WITH_POPUP' EXPORTING I_BUKRS = C_CCODE IMPORTING E_BUKRS = C_CCODE EXCEPTIONS CANCELED = 1 OTHERS = 2. IF SY-SUBRC <> 0.

MESSAGE E666(FI). EXIT. ENDIF. SET PARAMETER ID 'BUK' FIELD C_CCODE. ENDIF. ENDFORM. " COMP_CODE_INIT

*&---------------------------------------------------------------------* *& Form LABEL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_P_BUKRS text * <--P_V_TEXTO1 text *----------------------------------------------------------------------* FORM LABEL USING PI_BUKRS TYPE BUKRS CHANGING PO_TEXTO1 TYPE STRING. CHECK PI_BUKRS NE SPACE. CLEAR PO_TEXTO1. SELECT SINGLE YVALOR INTO PO_TEXTO1 FROM YBCT_DCONSTANTE WHERE PROYECTO = 'ACOPIO' AND BUKRS = PI_BUKRS AND GRUPO = 'LABEL' AND CORREL = '009' AND ESTADO = 'A'. ENDFORM. " LABEL *&---------------------------------------------------------------------* *& Form F_EJECUTAR_BAPI *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_WA_DOCUMENTHEADER text * -->P_TI_ACCOUNT text * -->P_TI_PAYABLE text * -->P_TI_CURRENCY text *----------------------------------------------------------------------* FORM F_EJECUTAR_BAPI. CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK' EXPORTING DOCUMENTHEADER = WA_DOCUMENTHEADER TABLES ACCOUNTGL = TI_ACCOUNT ACCOUNTPAYABLE = TI_PAYABLE CURRENCYAMOUNT = TI_CURRENCY RETURN = TI_RETURN. READ TABLE TI_RETURN INTO WA_RETURN WITH KEY TYPE = 'E'. IF SY-SUBRC NE 0. CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST' EXPORTING DOCUMENTHEADER = WA_DOCUMENTHEADER IMPORTING OBJ_TYPE = W_OBJ_TYPE OBJ_KEY = W_OBJ_KEY OBJ_SYS = W_OBJ_SYS TABLES

ACCOUNTGL ACCOUNTPAYABLE CURRENCYAMOUNT RETURN

= = = =

TI_ACCOUNT TI_PAYABLE TI_CURRENCY TI_RETURN.

READ TABLE TI_RETURN INTO WA_RETURN WITH KEY TYPE = 'E'. IF SY-SUBRC NE 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. * IMPORTING * RETURN =. WA_TERCEROS-BELNR = W_OBJ_KEY+0(10). WA_TERCEROS_AUX-BELNR = W_OBJ_KEY+0(10). IF P_TER EQ 'X'. READ TABLE TI_PRIOR INTO WA_PRIOR WITH KEY LIFNT = WA_TERCEROS-COD_TERCE. IF SY-SUBRC EQ 0. WA_REPORT-PRIOR = WA_PRIOR-PRIOR. ENDIF. MODIFY TI_TERCEROS FROM WA_TERCEROS_AUX TRANSPORTING BELNR WHERE COD_TERCE = <FS_DATOS>-LIFNT. INSERT YFIT_TERCEROS FROM TABLE TI_TERCEROS. COMMIT WORK AND WAIT. ELSEIF P_RET = 'X' OR P_RETSEM = 'X'. INSERT YFIT_TERCEROS FROM WA_TERCEROS. COMMIT WORK AND WAIT. ENDIF. IF P_RET = 'X' OR P_TER = 'X'. WA_REPORT-LIFNT = WA_TERCEROS-COD_TERCE. ELSEIF P_RETSEM = 'X'. SELECT SINGLE HKONT INTO WA_REPORT-HKONT FROM BSEG WHERE BUKRS EQ P_BUKRS AND BELNR EQ W_OBJ_KEY+0(10) AND GJAHR EQ P_BUDAT+0(4) AND HKONT NE WA_TERCEROS-LIFNR. ENDIF. WA_REPORT-ICON = '@08@'. WA_REPORT-LIFNR = WA_TERCEROS-LIFNR. READ TABLE TI_LFA1 ASSIGNING <FS_LFA1> WITH KEY LIFNR = WA_REPORT-LIFNT. IF SY-SUBRC = 0. WA_REPORT-NAME1 = <FS_LFA1>-NAME1. ENDIF. DATA V_TEXTO TYPE STRING. V_TEXTO = TEXT-050. REPLACE '&1' WITH W_OBJ_KEY+0(10) INTO V_TEXTO. REPLACE '&2' WITH P_BUKRS INTO V_TEXTO. WA_REPORT-BELNR = W_OBJ_KEY+0(10). WA_REPORT-GJAHR = P_BUDAT+0(4). WA_REPORT-MESGE = V_TEXTO. APPEND WA_REPORT TO TI_REPORT. CLEAR WA_REPORT. ELSE.

"t100-text.

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. CLEAR WA_RETURN. READ TABLE TI_RETURN INTO WA_RETURN INDEX 2. IF P_RET = 'X' OR P_TER = 'X'. WA_REPORT-LIFNT = WA_TERCEROS-COD_TERCE. ENDIF. WA_REPORT-LIFNR = WA_TERCEROS-LIFNR. WA_REPORT-GJAHR = P_BUDAT+0(4). WA_REPORT-MESGE = WA_RETURN-MESSAGE. APPEND WA_REPORT TO TI_REPORT. CLEAR WA_REPORT. ENDIF. ENDIF.

"t100-text.

CLEAR: WA_RETURN,WA_REPORT,WA_DOCUMENTHEADER,W_OBJ_TYPE,W_OBJ_KEY,W_OBJ_SYS. REFRESH: TI_ACCOUNT, TI_PAYABLE,TI_CURRENCY,TI_RETURN. ENDFORM. " F_EJECUTAR_BAPI *&---------------------------------------------------------------------* *& Form F_DETERMINAR_FV *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_<FS_BSIK>_SHKZG text * -->P_3101 text * -->P_<FS_BSIK>_ZFBDT text * -->P_<FS_BSIK>_ZBD1T text * -->P_<FS_BSIK>_BLDAT text *----------------------------------------------------------------------* FORM F_DETERMINAR_FV USING P_SHKZG P_KOART P_ZFBDT P_ZBD1T P_BLDAT. MOVE: P_SHKZG P_KOART P_ZFBDT P_ZBD1T P_BLDAT TO TO TO TO TO WL_FAEDE-SHKZG, WL_FAEDE-KOART, WL_FAEDE-ZFBDT, WL_FAEDE-ZBD1T, WL_FAEDE-BLDAT.

CALL FUNCTION 'DETERMINE_DUE_DATE' EXPORTING I_FAEDE = WL_FAEDE I_GL_FAEDE = TEXT-PC2 IMPORTING E_FAEDE = WL_FAEDE EXCEPTIONS ACCOUNT_TYPE_NOT_SUPPORTED = 1 OTHERS = 2. ENDFORM. " F_DETERMINAR_FV *&---------------------------------------------------------------------* *& Form CONVERTIR_MONTO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------*

* -->P_VG_NETO text *----------------------------------------------------------------------* FORM CONVERTIR_MONTO CHANGING P_VG_NETO TYPE WERTV13. DATA V_MONTO(25) TYPE C. CLEAR T001. SELECT SINGLE * FROM T001 WHERE BUKRS EQ P_BUKRS. DATA FORMATO_DEC LIKE USR01-DCPFM. SELECT SINGLE DCPFM INTO FORMATO_DEC FROM USR01 WHERE BNAME = SY-UNAME. WRITE P_VG_NETO TO V_MONTO CURRENCY T001-WAERS. IF FORMATO_DEC = 'X'. CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS' EXPORTING DMZEI = '.' DTYPE = 'CURR' EFELD = V_MONTO IMP_DECIMALS = 2 IMPORTING * ERROR = P_ERROR IFELD = V_MONTO. ELSE. CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS' EXPORTING DMZEI = ',' DTYPE = 'CURR' EFELD = V_MONTO IMP_DECIMALS = 2 IMPORTING * ERROR = P_ERROR IFELD = V_MONTO. ENDIF. P_VG_NETO = V_MONTO. ENDFORM. " CONVERTIR_MONTO

*&---------------------------------------------------------------------* *& Form CONVERTIR_MONTO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_VG_NETO text *----------------------------------------------------------------------* FORM CONVERTIR_MONTO_COMP CHANGING P_VG_NETO TYPE DMBTR. DATA V_MONTO(25) TYPE C. CLEAR T001. SELECT SINGLE * FROM T001 WHERE BUKRS EQ P_BUKRS.

DATA FORMATO_DEC LIKE USR01-DCPFM. SELECT SINGLE DCPFM INTO FORMATO_DEC FROM USR01 WHERE BNAME = SY-UNAME. WRITE P_VG_NETO TO V_MONTO CURRENCY T001-WAERS. IF FORMATO_DEC = 'X'. CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS' EXPORTING DMZEI = '.' DTYPE = 'CURR' EFELD = V_MONTO IMP_DECIMALS = 2 IMPORTING * ERROR = P_ERROR IFELD = V_MONTO. ELSE. CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS' EXPORTING DMZEI = ',' DTYPE = 'CURR' EFELD = V_MONTO IMP_DECIMALS = 2 IMPORTING * ERROR = P_ERROR IFELD = V_MONTO. ENDIF. P_VG_NETO = V_MONTO. ENDFORM. " CONVERTIR_MONTO_COMP

Potrebbero piacerti anche