call transaction con batch

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • budista1
    Senior Member
    • sep
    • 154

    #1

    call transaction con batch

    Hola,

    estaba haciendo un call transaction con batch previo que va dentro de una función. Veo que va bien al principio, navega a la pantalla y mete los datos pero no ejecuta el f8.
    A ver si alguien me puede decir la linia que falta en esté código:
    algo tipo así ,creo:
    i_bdc_data-fval = '/EE'.



    Os paso el código, GRACIAS DE ANTEMANO!!

    *Llenamos la tabla
    refresh i_bdc_data.
    i_bdc_data-program = 'ZN140061'.
    i_bdc_data-dynpro = '1000'.
    i_bdc_data-dynbegin = 'X'.
    append i_bdc_data. clear i_bdc_data.

    i_bdc_data-fnam = 'P_NUDRM'.
    *obj = P_NUDRM.
    i_bdc_data-fval = p_nudrm.
    append i_bdc_data. clear i_bdc_data.

    i_bdc_data-fnam = 'P_CODOP'.
    *obj = P_CODOP.
    i_bdc_data-fval = p_drmcodop.
    append i_bdc_data. clear i_bdc_data.

    i_bdc_data-fnam = 'P_SBCOD'.
    *obj = P_SBCOD.
    i_bdc_data-fval = p_drmsbcod.
    append i_bdc_data. clear i_bdc_data.

    i_bdc_data-fval = '/EE'.
    append i_bdc_data. clear i_bdc_data.

    opt-dismode = 'E'.

    call transaction 'ZNG8' using i_bdc_data
    mode 'A'
    update 'S'.
  • Tu amo
    Member
    • oct
    • 40

    #2
    ¿Es un reporte?
    ¿Si solo ejecutas la pantalla de seleccion porque mejor no usas la instruccion submit report?

    Comentario

    • budista1
      Senior Member
      • sep
      • 154

      #3
      call transaction

      En el diseño me ha dicho que lo haga con un call transaction. Está dentro de una función,no un report, solo me queda el pequeño detalle que comenté....

      Comentario

      • tiggerhippie
        Junior Member
        • jul
        • 5

        #4
        Buenas!!

        Cómo has generado el código del batch input? Lo has realizado con la sm35?

        Comentario

        • kiboqac
          Member
          • mar
          • 55

          #5
          Te falta el OK_CODE; en el ultimo append te falta esto:

          i_bdc_data-fnam = 'BDC_OKCODE'.
          i_bdc_data-fval = '/EE'.
          append i_bdc_data. clear i_bdc_data.
          Kibo

          Comentario

          • budista1
            Senior Member
            • sep
            • 154

            #6
            gracias pero..

            Gracias compañero

            pero este tema del ok_code que comentas ya lo resolví.
            En efecto ahora navega y hace el ok,
            pero no se actualizan datos en la base de datos :-(

            ¿Alguién conoce el motivo?


            Saludos abaperos

            Comentario

            • jarabas
              Senior Member
              • ene
              • 109

              #7
              Has probado con un "COMMIT WORK." o con la función BAPI_TRANSACTION_COMMIT despues de la llamada a la transacción?

              Apuntar que deberías comprobar los mensajes de vuelta de la transacción, para controlar posibles errores, aunque con esa tabla y todo, algun batch input te la puede jugar y no devolver error cuando si lo hubo.

              La instrucción te quedaría así:
              DATA: it_messages TYPE STANDARD TABLE OF bdcmsgcoll.

              call transaction 'ZNG8' using i_bdc_data
              MESSAGES INTO it_messages
              mode 'A'
              update 'S'.

              y para recuperar el texto explicativo de cada mensaje, ya que sino pueden sonar a chino, sería de la siguiente manera:

              data: lw_msgid LIKE sy-msgid,
              lw_msgno LIKE sy-msgno,
              lw_msgv1 LIKE sy-msgv1,
              lw_msgv2 LIKE sy-msgv2,
              lw_msgv3 LIKE sy-msgv3,
              lw_msgv4 LIKE sy-msgv4.

              LOOP AT it_messages INTO gw_messages.

              MOVE-CORRESPONDING gw_messages TO gw_mensajes.

              lw_msgid = gw_mensajes-msgid.
              lw_msgno = gw_mensajes-msgnr.
              lw_msgv1 = gw_mensajes-msgv1.
              lw_msgv2 = gw_mensajes-msgv2.
              lw_msgv3 = gw_mensajes-msgv3.
              lw_msgv4 = gw_mensajes-msgv4.

              CALL FUNCTION '/SAPTRX/GET_MESSAGE_TEXT'
              EXPORTING
              msgid = lw_msgid
              msgno = lw_msgno
              msgv1 = lw_msgv1
              msgv2 = lw_msgv2
              msgv3 = lw_msgv3
              msgv4 = lw_msgv4
              IMPORTING
              messagetext = lw_respon
              EXCEPTIONS
              no_message_retrieved = 1
              OTHERS = 2.

              MOVE: lw_respon TO gw_mensajes-msgv1.

              APPEND gw_mensajes TO it_mensajes.
              ENDLOOP.


              Saludos. Espero te sirva
              Editado por última vez por jarabas; 25/01/2011, 09:40:17.

              Comentario

              • budista1
                Senior Member
                • sep
                • 154

                #8
                merci

                Hola compañero,

                agradezco mucho tu información.
                Hice la gestión de los mensajes de una forma parecida a la tuya.
                Aunque de momento solo me puse a mirar los mensajes por debuger.
                Ahora entiendo que tengo que procesarlos y meterlos en una tabla de LOG,
                verdad?


                Saludos abaperos!

                Comentario

                • jarabas
                  Senior Member
                  • ene
                  • 109

                  #9
                  Deberías mostrar los errores, yo por experiencia digo que los batch son un poco "puñeteros", puede que no te devuelva un E y si haya sucedido un error.

                  Por cierto con lo que te puse ya te actualiza la base de datos?

                  Saludos.

                  Comentario

                  Trabajando...