Ver Mensaje Individual
  #2  
Viejo 19/03/08, 21:58:11
salinasa salinasa is offline
Junior Member
 
Fecha de Ingreso: mar 2008
Mensajes: 1
Thumbs up

REPORT ZBI_MOMM.

TABLES: RF02K, LFA1, LFB1.

DATA: V_NOMBRE(50) TYPE C, " NOMBRE PROPUESTO PARA EL LOG FILE
V_CONTA TYPE I. " CONTADOR DE REGISTROS PROCESADOS

* Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

* ARCHIVO DE ENTRADA
DATA: BEGIN OF ITFILE OCCURS 0,
BUKRS LIKE RF02K-BUKRS,
KTOKK LIKE RF02K-KTOKK,
NAME1 LIKE LFA1-NAME1,
SORTL LIKE LFA1-SORTL,
ORT01 LIKE LFA1-ORT01,
PSTLZ LIKE LFA1-PSTLZ,
LAND1 LIKE LFA1-LAND1,
SPRAS LIKE LFA1-SPRAS,
AKONT LIKE LFB1-AKONT,
FDGRV LIKE LFB1-FDGRV,
ZTERM LIKE LFB1-ZTERM,
ZWELS LIKE LFB1-ZWELS,
REPRF LIKE LFB1-REPRF,
END OF ITFILE.

* LOG DE SALIDA
DATA: BEGIN OF ITLOG OCCURS 0,
TEXTO(100),
END OF ITLOG.


* =====================================================================
* >>> PANTALLA DE SELECCIÓN
SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-B01.
PARAMETERS:
P_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\BI TEST.txt' OBLIGATORY,
P_CARP LIKE RLGRAP-FILENAME DEFAULT 'C:\' OBLIGATORY,
P_LOGF(50) TYPE C OBLIGATORY. "TYPE STRING OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B01.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
MASK = ',*.*,*.*.'
MODE = 'O'
TITLE = ' '
IMPORTING
FILENAME = P_FILE
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_CARP.
CALL FUNCTION 'TMP_GUI_BROWSE_FOR_FOLDER'
EXPORTING
WINDOW_TITLE = 'Seleccione una carpeta'
IMPORTING
SELECTED_FOLDER = P_CARP
EXCEPTIONS
CNTL_ERROR = 1
OTHERS = 2.


AT SELECTION-SCREEN OUTPUT.
CONCATENATE 'Log_Carga_MIC_'
SY-DATUM
'_'
SY-UZEIT
'.txt'
INTO V_NOMBRE.
P_LOGF = V_NOMBRE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_LOGF'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.



START-OF-SELECTION.
PERFORM CARGAR_ARCHIVO.
IF ITFILE[] IS NOT INITIAL.
LOOP AT ITFILE.
PERFORM CARGAR_MIC.
PERFORM GUARDAR_LOG.
CLEAR BDCDATA.
REFRESH BDCDATA.
CLEAR MESSTAB.
REFRESH MESSTAB.
ENDLOOP.
IF ITLOG[] IS NOT INITIAL.
PERFORM BAJAR_LOG.
IF SY-SUBRC = 0.
MESSAGE S001(00) WITH V_CONTA ' registros procesados.'
' Revise log en ' P_LOGF.
ELSE.
MESSAGE S001(00) WITH V_CONTA ' registros procesados.'
'Error al guardar archivo log.'.
ENDIF.
ELSE.
MESSAGE S001(00) WITH V_CONTA ' registros procesados.'.
ENDIF.
ELSE.
MESSAGE S001(00) WITH 'No se encontraron registros en el'
'archivo de entrada.'.
ENDIF.
* <<< PANTALLA DE SELECCIÓN
* =====================================================================



*************************************************************************
* >>> SUBRUTINAS ********************************************************
* =====================================================================
* CARGAR_ARCHIVO
* =====================================================================
FORM CARGAR_ARCHIVO.

DATA V_FILE LIKE RLGRAP-FILENAME. " TYPE STRING.

V_FILE = P_FILE.

* CALL FUNCTION 'GUI_UPLOAD'
* EXPORTING
* FILENAME = V_FILE
* FILETYPE = 'DAT'
* TABLES
* DATA_TAB = ITFILE
* EXCEPTIONS
* FILE_OPEN_ERROR = 1
* FILE_READ_ERROR = 2
* NO_BATCH = 3
* GUI_REFUSE_FILETRANSFER = 4
* INVALID_TYPE = 5
* NO_AUTHORITY = 6
* UNKNOWN_ERROR = 7
* BAD_DATA_FORMAT = 8
* HEADER_NOT_ALLOWED = 9
* SEPARATOR_NOT_ALLOWED = 10
* HEADER_TOO_LONG = 11
* UNKNOWN_DP_ERROR = 12
* ACCESS_DENIED = 13
* DP_OUT_OF_MEMORY = 14
* DISK_FULL = 15
* DP_TIMEOUT = 16
* OTHERS = 17.
*
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.

CALL FUNCTION 'WS_UPLOAD'
EXPORTING
* CODEPAGE = ' '
FILENAME = V_FILE
FILETYPE = 'DAT'
* HEADLEN = ' '
* LINE_EXIT = ' '
* TRUNCLEN = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* DAT_D_FORMAT = ' '
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = ITFILE
* EXCEPTIONS
* CONVERSION_ERROR = 1
* FILE_OPEN_ERROR = 2
* FILE_READ_ERROR = 3
* INVALID_TYPE = 4
* NO_BATCH = 5
* UNKNOWN_ERROR = 6
* INVALID_TABLE_WIDTH = 7
* GUI_REFUSE_FILETRANSFER = 8
* CUSTOMER_ERROR = 9
* NO_AUTHORITY = 10
* OTHERS = 11
.
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. " CARGAR_ARCHIVO
* =====================================================================


* =====================================================================
* CARGAR_MIC
* =====================================================================
FORM CARGAR_MIC.

DATA: V_TCODE LIKE SY-TCODE VALUE 'FK01',
V_UPDT LIKE CTU_PARAMS-UPDMODE VALUE 'A',
"S: synchronously
"A: asynchronously
"L: local
V_MODO LIKE CTU_PARAMS-DISMODE VALUE 'N'.
"A: show all dynpros
"E: show dynpro on error only
"N: do not display dynpro

* PANTALLA 1
PERFORM bdc_dynpro USING 'SAPMF02K' '0105'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
perform bdc_field using 'RF02K-BUKRS' ITFILE-BUKRS.
perform bdc_field using 'RF02K-KTOKK' ITFILE-KTOKK.

* PANTALLA 2
PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
PERFORM bdc_field USING 'BDC_OKCODE' '=VW'.
PERFORM bdc_field USING 'LFA1-NAME1' ITFILE-NAME1.
PERFORM bdc_field USING 'LFA1-SORTL' ITFILE-SORTL.
PERFORM bdc_field USING 'LFA1-ORT01' ITFILE-ORT01.
PERFORM bdc_field USING 'LFA1-PSTLZ' ITFILE-PSTLZ.
PERFORM bdc_field USING 'LFA1-LAND1' ITFILE-LAND1.
PERFORM bdc_field USING 'LFA1-SPRAS' ITFILE-SPRAS.

* PANTALLA 3
perform bdc_dynpro using 'SAPMF02K' '0120'.
perform bdc_field using 'BDC_OKCODE' '=VW'.

* PANTALLA 4
perform bdc_dynpro using 'SAPMF02K' '0130'.
perform bdc_field using 'BDC_OKCODE' '=VW'.

* PANTALLA 5
perform bdc_dynpro using 'SAPMF02K' '0210'.
perform bdc_field using 'BDC_OKCODE' '=VW'.
perform bdc_field using 'LFB1-AKONT' ITFILE-AKONT.
perform bdc_field using 'LFB1-FDGRV' ITFILE-FDGRV.

* PANTALLA 6
PERFORM bdc_dynpro USING 'SAPMF02K' '0215'.
PERFORM bdc_field USING 'BDC_OKCODE' '=UPDA'.
PERFORM bdc_field USING 'LFB1-ZTERM' ITFILE-ZTERM.
PERFORM bdc_field USING 'LFB1-REPRF' ITFILE-REPRF.
PERFORM bdc_field USING 'LFB1-ZWELS' ITFILE-ZWELS.

CALL TRANSACTION V_TCODE USING BDCDATA
MODE V_MODO
UPDATE V_UPDT
MESSAGES INTO MESSTAB.

V_CONTA = V_CONTA + 1.

ENDFORM. " CARGAR_MIC
* =====================================================================


* =====================================================================
* GUARDAR_LOG
* =====================================================================
FORM GUARDAR_LOG.

DATA: V_TEXTO LIKE T100-TEXT,
V_MSID LIKE SY-MSGID,
V_MSGNO LIKE SY-MSGNO,
V_MSGV1 LIKE SY-MSGV1,
V_MSGV2 LIKE SY-MSGV2,
V_MSGV3 LIKE SY-MSGV3,
V_MSGV4 LIKE SY-MSGV4.

LOOP AT MESSTAB.

V_MSID = MESSTAB-MSGID.
V_MSGNO = MESSTAB-MSGNR.
V_MSGV1 = MESSTAB-MSGV1.
V_MSGV2 = MESSTAB-MSGV2.
V_MSGV3 = MESSTAB-MSGV3.
V_MSGV4 = MESSTAB-MSGV4.

CALL FUNCTION 'TB_MESSAGE_BUILD_TEXT'
EXPORTING
LANGU = SY-LANGU
MSGID = V_MSID
MSGNO = V_MSGNO
MSGV1 = V_MSGV1
MSGV2 = V_MSGV2
MSGV3 = V_MSGV3
MSGV4 = V_MSGV4
IMPORTING
TEXT = V_TEXTO.

IF SY-SUBRC = 0 AND V_TEXTO IS NOT INITIAL.
ITLOG-TEXTO = V_TEXTO.
APPEND ITLOG.
CLEAR ITLOG.
ENDIF.

ENDLOOP.

ENDFORM. " GUARDAR_LOG
* =====================================================================


* =====================================================================
* BAJAR_LOG
* =====================================================================
FORM BAJAR_LOG.


DATA: LV_VAR TYPE STRING.

CONCATENATE P_CARP '\' P_LOGF INTO P_LOGF.
LV_VAR = P_LOGF.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = LV_VAR
FILETYPE = 'DAT'
TABLES
DATA_TAB = ITLOG
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.

ENDFORM. " BAJAR_LOG
* =====================================================================


* <<< SUBRUTINAS ********************************************************
*************************************************************************




*** >> Rutinas para generar BDC ***************************************
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.

*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM.
*** << Rutinas para generar BDC ***************************************

Aqui tienes un ejemplo que realiza un batch input espero y te sirca suerte
Responder Con Cita