Duda con batch inout

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • ABellamy
    Member
    • dic
    • 44

    #1

    Duda con batch inout

    Hola buen dia.
    Hice un programita ejemplo para la carga de un excel en base a un batch input. pero como puedo ver o saber que es correcto?
    el programita que hice me sale con un write que le puse que dice"la cuenta se creo"
    el batch lo hice para la xk01 y luego me fui a la xk03 y aparecen los campos que capture cuando hice la grabacion.
    como o donde puedo ver que lo que puse en el excel que hice se cargo en verdad?


    Aquí mi código:

    REPORT ymmbatch
    NO STANDARD PAGE HEADING LINE-SIZE 255.
    * Quitamos este Include.
    *INCLUDE bdcrecx1.

    * Tipo de datos.
    TYPES: BEGIN OF ty_datos,
    name1 LIKE lfa1-name1, " Nombre
    sortl LIKE lfa1-sortl, " Cond. de Busq.
    ort01 LIKE lfa1-ort01, " Dirección.
    pstlz LIKE lfa1-pstlz, " C.P.
    land1 LIKE lfa1-land1, " País.
    spras LIKE lfa1-spras, " Idioma.
    END OF ty_datos.

    * 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.

    DATA: lv_filename TYPE string,
    lt_datos TYPE STANDARD TABLE OF ty_datos WITH HEADER LINE.

    * Pantalla de selección.
    PARAMETERS: pa_file LIKE ibipparms-path.
    * ibipparms = Parámetros de transferencia de datos

    * Pedir ruta y archivo.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_file.
    CALL FUNCTION 'F4_FILENAME'
    IMPORTING
    file_name = pa_file.

    START-OF-SELECTION.
    lv_filename = pa_file.

    * Función para upload.
    CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
    filename = lv_filename
    filetype = 'ASC'
    has_field_separator = ' '
    TABLES
    data_tab = lt_datos
    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.

    LOOP AT lt_datos.
    CLEAR bdcdata.
    REFRESH: bdcdata, messtab.

    * Primera pantalla.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RF02K-KTOKK'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'RF02K-KTOKK'
    'VERT'.
    * Segunda pantalla.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFA1-SPRAS'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=UPDA'.
    PERFORM bdc_field USING 'LFA1-NAME1'
    'Juan Lopez'.
    PERFORM bdc_field USING 'LFA1-SORTL'
    'AA'.
    PERFORM bdc_field USING 'LFA1-ORT01'
    'PONIETE 134'.
    PERFORM bdc_field USING 'LFA1-PSTLZ'
    '02403'.
    PERFORM bdc_field USING 'LFA1-LAND1'
    'MX'.
    PERFORM bdc_field USING 'LFA1-SPRAS'
    'ES'.
    *
    * quitamos esta.
    * PERFORM bdc_transaction USING 'XK01'.
    CALL TRANSACTION 'XK01' USING bdcdata
    MODE 'P'
    UPDATE 'S'
    MESSAGES INTO messtab.

    ENDLOOP.


    * Resultados.
    LOOP AT lt_datos.
    READ TABLE messtab WITH KEY msgtyp = 'E'. " Error.
    IF sy-subrc EQ 0.
    " Mensaje de error.
    WRITE:/ 'Error en acreedor', lt_datos-name1.
    ELSE.
    READ TABLE messtab WITH KEY msgtyp = 'S'. " Correcto.
    IF sy-subrc EQ 0.
    " Mensaje de ok.
    WRITE:/ 'Se creó la cuenta', messtab-msgv1.
    ENDIF.
    ENDIF.

    ENDLOOP.

    *----------------------------------------------------------------------*
    * Start new screen *
    *----------------------------------------------------------------------*
    FORM bdc_dynpro USING program dynpro.
    CLEAR bdcdata.
    bdcdata-program = program.
    bdcdata-dynpro = dynpro.
    bdcdata-dynbegin = 'X'.
    APPEND bdcdata.
    ENDFORM. "BDC_DYNPRO


    *----------------------------------------------------------------------*
    * Insert field *
    *----------------------------------------------------------------------*
    FORM bdc_field USING fnam fval.
    IF fval IS NOT INITIAL.
    CLEAR bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    APPEND bdcdata.
    ENDIF.
    ENDFORM. "BDC_FIELD




    Saludos.
    Es más fácil encontrar el final del arcoíris que el de un estándar SAP.
Trabajando...