Ayuda !!!

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Edd_401
    Senior Member
    • may
    • 119

    #1

    Ayuda !!!

    Tengo la siguiente funcion, la cual ejecuta comados externos de sistema operativo. (Los que se encunetran en SM49).

    La pregunta es:

    Como hacer que la ultima parte del comando sea variable. Les comento mas.

    Se trata de enviar un archivo mediante un .exe

    el comando seria : trans -h http://xxxx.com a c:\envio -i <nombre del archivo> ......

    La parte del nombre del archivo es la que tendria que ser variable... para envia 'n' numero de archivos.

    Ojala y alguien pueda ayudarme...

    Gracias...

    CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
    EXPORTING
    COMMANDNAME = COMMAND_LIST-NAME
    TABLES
    EXEC_PROTOCOL = EXEC_PROTOCOL
    EXCEPTIONS
    NO_PERMISSION = 1
    COMMAND_NOT_FOUND = 2
    PARAMETERS_TOO_LONG = 3
    SECURITY_RISK = 4
    WRONG_CHECK_CALL_INTERFACE = 5
    PROGRAM_START_ERROR = 6
    PROGRAM_TERMINATION_ERROR = 7
    X_ERROR = 8
    PARAMETER_EXPECTED = 9
    TOO_MANY_PARAMETERS = 10
    ILLEGAL_COMMAND = 11
    WRONG_ASYNCHRONOUS_PARAMETERS = 12
    CANT_ENQ_TBTCO_ENTRY = 13
    JOBCOUNT_GENERATION_ERROR = 14
    OTHERS = 15.
    Archivos Adjuntos
    Sapero prodigio ! ! !
  • ibecerra

    #2
    hola, q tal no te compliques con comando q no conoces , te doy una solucion facil, porque tambien hago lo mismo para imprimir en impresoras especiales.
    1. Create un archivo tipo .bat ejemplo COPIAINFO.BAT
    2. Dentro del archivo bat create la sentencia que necesitas
    trans -h http://xxxx.com a c:\envio -i %1
    *ojo %1 es el parametro variable..
    3. pruebalo ejecutandolo desde el sistema operativo
    ejemplo COPIAINFO.BAT TUARCHIVO.TXT
    Si funciona por hay entonces ya estas preparado para ejecutarlo desde sap
    4. utiliza la siguiente funcion que sirve para ejecutar comandos externos en sap..
    CONCATENATE 'C:\COPIAINFO.BAT' VARIABLE INTO ARCHIVO
    SEPARATED BY SPACE.


    CALL METHOD cl_gui_frontend_services=>execute
    EXPORTING
    document = archivo
    EXCEPTIONS
    OTHERS = 1.

    Comentario

    • Edd_401
      Senior Member
      • may
      • 119

      #3
      Gracias por tu ayuda

      Precisamente estaba haciendo lo que dices....

      Solo que si es obligatorio el uso de la funcion, puesto que la funcion me devuelve un log, que sera usado por WORK FLOW....

      Te muesto lo que llevo....

      PRIMERO LLEVO EL ARCHIVO A PC (Como prueba)...

      * Method Export file to PC
      CALL METHOD r_gui->gui_download
      EXPORTING
      filename = c_file
      filetype = 'ASC'
      write_field_separator = 'X'
      CHANGING
      data_tab = it_txt[]
      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
      OTHERS = 24.
      IF sy-subrc NE 0.
      MESSAGE s166 WITH 'Error.Archivo no pudo ser generado'(e01).
      ELSE.
      MESSAGE s166 WITH 'Archivo ha sido generado'(e02) c_file.
      ENDIF.






      DESPUES CREO EL ARCHIVO .BAT



      REFRESH itab.

      CONCATENATE 'CD' w_path INTO itab-doscmd SEPARATED BY space.
      APPEND itab.

      TRANSLATE w_direc TO LOWER CASE.
      MOVE w_direc TO itab-doscmd.
      APPEND itab.
      IF NOT w_inst1 IS INITIAL.
      itab-doscmd = w_inst1.
      APPEND itab.
      ENDIF.
      IF NOT w_inst2 IS INITIAL.
      itab-doscmd = w_inst2.
      APPEND itab.
      ENDIF.

      CALL FUNCTION 'WS_DOWNLOAD'
      EXPORTING
      filename = 'C:\OPEN_ORDER.BAT'
      filetype = 'DAT'
      TABLES
      data_tab = itab
      EXCEPTIONS
      file_open_error = 1
      file_write_error = 2
      invalid_filesize = 3
      invalid_type = 4
      no_batch = 5
      unknown_error = 6
      invalid_table_width = 7
      gui_refuse_filetransfer = 8
      customer_error = 9
      OTHERS = 10.




      Y AHORA.......... Por lo que me indicas puedo ejecutar el archivo bat en la funcion correcto????
      Sapero prodigio ! ! !

      Comentario

      • ibecerra

        #4
        Asi es.. esa funcion es para ejecutar el archivo bat desde SAP

        Comentario

        • ibecerra

          #5
          perdon este metodo es para ejecuta un archivo bat , exe...
          CALL METHOD cl_gui_frontend_services=>execute
          EXPORTING
          document = archivo
          EXCEPTIONS
          OTHERS = 1.

          Comentario

          Trabajando...