Anuncio

Colapsar
No hay anuncio todavía.

batch input sobreescribe lineas

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • batch input sobreescribe lineas

    Hola a todos!, quería pedir ayuda con un batch input. Al ejecutar el mismo sobre la transacción FB60 tengo que ingresarle 18 lineas, pero la dynpro me muestra sólo 10, cuando llega a tener que grabar el campo 11 me sobreescribe la primer linea, borrando lo que se había cargado primero. Podrían ayudarme que hacer??. Ya estuve indagando en el tema y probé creando un texto estándar, tb reinicializando el contador, pero no hay cambios. Muchas gracias!!!

  • #2
    Tienes que controlar el número de líneas que estás introduciendo y cuando introduzcas las 10 ( o la 11) hacer un avance página ( P++ creo que es el OK_CODE ) Ojo con estas cosas ya que muchas veces depende del usuario o del sistema que se vean más posiciones o menos.

    La mejor solución sería borrar el Batch input y hacerlo mediante funciones estándar de contabilización de documentos, aunque puede ser bastante costoso.

    Saludos.
    "Soy el señor Lobo, arreglo problemas"
    http://sapymas.blogspot.com/

    Comentario


    • #3
      gracias por tu respuesta

      Te agradezco tu respuesta pero no ha sido solucionado mi incoveniente haciendo lo que me indicas. Te dejo las lineas de codigo a ver si puedes echarles un vistazo para ver donde esta mi error.
      Tb quería decirte que el que me sobreescriba las lineas puedo verlo cuando hago el debugg en el perform f_z_bdc_transaction, poniendo el p_ctumode en A, lo cual no se si es correcto para hacer el chequeo. Cuando miro los campos que aparecen en pantalla son solo 10. Mil gracias! Espero puedas volver a ayudarme!

      Comentario


      • #4
        Este es el codigo

        FORM tomar_ceco_orden USING p_cont
        p_bktxt
        p_xblnr

        CHANGING "p_cont1
        p_band.

        FIELD-SYMBOLS: <fs_punt1> LIKE LINE OF gt_file,
        <fs_file> LIKE LINE OF gt_file.
        DATA lv_par TYPE string VALUE '(0'.
        DATA lv_par1 TYPE string VALUE ')'.
        DATA gs_file2 TYPE t_file.
        DATA: lv_hkont TYPE string, "VALUE 'ACGL_ITEM-HKONT',
        cont TYPE i VALUE 1,
        cont1(2) TYPE c VALUE '01', "modificado carotanus indra065
        band6 TYPE i VALUE 0, "modificado carotanus indra065
        lv_wrbtr TYPE string," VALUE 'ACGL_ITEM-WRBTR',
        lv_sgtxt TYPE string," VALUE 'ACGL_ITEM-SGTXT',
        lv_kostl TYPE string," VALUE 'ACGL_ITEM-KOSTL',
        lv_aufnr TYPE string," value 'ACGL_ITEM-AUFNR'.
        band5 TYPE string VALUE 'FALSE'.

        LOOP AT gt_file ASSIGNING <fs_file>.
        * nombre de los campos que se setearan
        lv_hkont = 'ACGL_ITEM-HKONT'.
        lv_wrbtr = 'ACGL_ITEM-WRBTR'.
        lv_sgtxt = 'ACGL_ITEM-SGTXT'.
        lv_kostl = 'ACGL_ITEM-KOSTL'.
        lv_aufnr = 'ACGL_ITEM-AUFNR'.

        IF <fs_file> IS ASSIGNED.
        *si la cabecera del texto coincide con el informado en la estructura
        *se toman los datos faltantes
        IF <fs_file>-bktxt EQ p_bktxt AND <fs_file>-band NE 'True'
        AND ( <fs_file>-xblnr EQ p_xblnr OR <fs_file>-xblnr EQ ' ').
        READ TABLE gt_file ASSIGNING <fs_punt1>"<fs_file>
        INDEX p_cont.
        IF <fs_punt1> IS ASSIGNED. "<fs_file>

        *se forman los nombres de los campos que van a ser utilizados
        CONCATENATE lv_hkont lv_par cont1 lv_par1 INTO lv_hkont.
        CONCATENATE lv_wrbtr lv_par cont1 lv_par1 INTO lv_wrbtr.
        CONCATENATE lv_sgtxt lv_par cont1 lv_par1 INTO lv_sgtxt.
        CONCATENATE lv_kostl lv_par cont1 lv_par1 INTO lv_kostl.
        CONCATENATE lv_aufnr lv_par cont1 lv_par1 INTO lv_aufnr.
        *se pasan los campos que seran cargados por la fb60

        IF band5 = 'TRUE'.


        PERFORM bdc_field USING 'BDC_OKCODE'
        'P++'.



        ENDIF.

        PERFORM bdc_field USING lv_hkont
        * <fs_file>
        <fs_punt1>-hkont."'615011101P'.
        PERFORM bdc_field USING lv_wrbtr
        * <fs_file>
        <fs_punt1>-wrbtr_item."'800'.
        PERFORM bdc_field USING lv_sgtxt
        * <fs_file>
        <fs_punt1>-sgtxt.
        * Si la orden no es vacia
        IF NOT <fs_punt1>-aufnr IS INITIAL.
        PERFORM bdc_field USING lv_aufnr
        * <fs_file>
        <fs_punt1>-aufnr.
        ELSE.
        IF NOT <fs_punt1>-kostl IS INITIAL.
        PERFORM bdc_field USING lv_kostl
        * <fs_file>
        <fs_punt1>-kostl.
        "'1010601'.
        ENDIF.
        ENDIF.

        * se limpian las variables usadas.
        CLEAR: lv_hkont, lv_wrbtr, lv_sgtxt, lv_kostl, lv_aufnr.
        p_cont = p_cont + 1.
        cont1 = cont1 + 1.

        IF p_cont = '11'.
        band5 = 'TRUE'.
        band6 = 1.

        ENDIF.

        IF band6 EQ '1'.
        cont1 = '11'.

        CLEAR band6.
        ENDIF.

        ENDIF.
        ELSE.
        *en caso de que el doc tenga mas de un ceco para imputar y la cabecera
        * de texto no sea igual se setea una bandera que controla que este dato
        * sea cargado y se informe.
        IF <fs_file>-bukrs EQ ' ' AND <fs_file>-bktxt NE p_bktxt.
        <fs_file>-band = 'T032'.
        MODIFY gt_file FROM <fs_file>.
        CONTINUE.
        ELSE.
        IF <fs_file>-bktxt EQ p_bktxt AND
        ( <fs_file>-xblnr NE p_xblnr OR <fs_file>-xblnr NE ' ' ).
        <fs_file>-band = 'T031'.
        MODIFY gt_file FROM <fs_file>.
        CONTINUE.
        ENDIF.
        ENDIF.
        * en caso de que no sea la misma cabecera se continua
        * lupeando hasta encontrar la misma.
        CONTINUE.
        ENDIF.
        ENDIF.
        ENDLOOP.
        ENDFORM. " TOMAR_CECO_ORDEN


        *Grabacion para carga automatica de valores.
        PERFORM bdc_dynpro USING 'SAPLACHD' '1000'.
        PERFORM bdc_field USING 'BDC_CURSOR'
        'BKPF-BUKRS'.
        PERFORM bdc_field USING 'BDC_OKCODE'
        '=ENTR'.
        PERFORM bdc_field USING 'BKPF-BUKRS'
        gs_file-bukrs. "'LB01'.
        PERFORM bdc_dynpro USING 'SAPMF05A' '1100'.
        PERFORM bdc_field USING 'BDC_OKCODE'
        '=PAYM'.
        PERFORM bdc_field USING 'RF05A-BUSCS'
        'R'.
        PERFORM bdc_field USING 'INVFO-ACCNT'
        gs_file-accnt. "'400002'.
        PERFORM bdc_field USING 'INVFO-BLDAT'
        gs_file-bldat."'29.07.2013'.
        PERFORM bdc_field USING 'INVFO-XBLNR'
        gs_file-xblnr."'Test Indicador'.
        PERFORM bdc_field USING 'INVFO-BUDAT'
        gs_file-budat."'31.07.2013'.
        PERFORM bdc_field USING 'INVFO-WRBTR'
        gs_file-wrbtr. "'1000'.
        PERFORM bdc_field USING 'INVFO-WAERS'
        gs_file-waers."'BRL'.

        PERFORM tomar_ceco_orden USING cont
        gs_file-bktxt
        gs_file-xblnr

        "gv_cont
        CHANGING "cont1
        band.
        PERFORM bdc_field USING 'ACGL_ITEM-AUFNR(01)'
        gs_file-aufnr."'650000084'.
        PERFORM bdc_dynpro USING 'SAPMF05A' '1100'.
        PERFORM bdc_field USING 'BDC_OKCODE'
        '/00'.
        PERFORM bdc_field USING 'BDC_CURSOR'
        'INVFO-ZLSCH'.
        PERFORM bdc_field USING 'INVFO-ZFBDT'
        gs_file-zfbdt."'29.07.2013'.
        PERFORM bdc_field USING 'INVFO-ZTERM'
        gs_file-zterm. "'BR01'.
        * PERFORM bdc_field USING 'INVFO-ZBD1T'
        * '45'.
        PERFORM bdc_field USING 'INVFO-ZLSCH'
        gs_file-zlsch."'D'.
        PERFORM bdc_dynpro USING 'SAPMF05A' '1100'.
        PERFORM bdc_field USING 'BDC_OKCODE'
        '=MORE'.
        PERFORM bdc_field USING 'BDC_CURSOR'
        'INVFO-ZLSCH'.
        PERFORM bdc_field USING 'INVFO-ZFBDT'
        gs_file-zfbdt."'31.07.2013'.
        PERFORM bdc_field USING 'INVFO-ZTERM'
        gs_file-zterm. "'BR01'.
        PERFORM bdc_field USING 'INVFO-ZLSCH'
        gs_file-zlsch."'D'.
        PERFORM bdc_field USING 'INVFO-ZLSPR'
        gs_file-zlspr."'G'.
        PERFORM bdc_dynpro USING 'SAPMF05A' '1100'.
        PERFORM bdc_field USING 'BDC_OKCODE'
        '/00'.
        PERFORM bdc_field USING 'BDC_CURSOR'
        'INVFO-BKTXT'.
        PERFORM bdc_field USING 'INVFO-BKTXT'
        gv_cont.
        "gs_file-bktxt."'FAT_LB_0000000023'.
        PERFORM bdc_dynpro USING 'SAPMF05A' '1100'.
        PERFORM bdc_field USING 'BDC_OKCODE'
        '=BS'.
        PERFORM bdc_field USING 'BDC_CURSOR'
        'INVFO-BKTXT'.
        PERFORM bdc_field USING 'INVFO-BKTXT'
        * INI - INDRA065 - 06.08.2013 16:58:21
        * Objetivo: Tenemos que contemplar el mismo caso anterior con el cont.
        "gs_file-bktxt."'FAT_LB_0000000023'.
        gv_cont.
        * FIN - INDRA065 -----------------------------------------*
        PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
        PERFORM bdc_field USING 'BDC_OKCODE'
        '=BU'.
        PERFORM f_z_bdc_transaction USING 'FB60' gv_mode 'S' cont1
        gs_file-bukrs
        lv_year
        gv_cont
        gt_opt-dismode
        gt_opt-defsize
        CHANGING p_ban.
        ENDIF.
        ENDLOOP.

        Comentario


        • #5
          Uf, mucho código para leer...

          El tema de la paginación en los BI es complicado, es probar y probar y probar. De todas formas si lo que quieres es hacer una contabilización, te recomiendo que uses las RFC estándar para contabilizar, al principio son más engorrosas pero a medio plazo mucho más fáciles de controlar y modificar.

          Prueba con la BAPI_ACC_DOCUMENT_POST
          Editado por última vez por koken; 17/02/2014, 17:10:40.
          "Soy el señor Lobo, arreglo problemas"
          http://sapymas.blogspot.com/

          Comentario

          Trabajando...
          X