Ayuda SAP

Carga Masiva Transaccion Z o desde LSMW

sap-abap
Etiquetas: #<Tag:0x00007f4dbff37320>
#1

Buenos dias.
Tenemos una transaccion Z donde se cargan anualmente por cada legajo de empleado dos filas con datos de limites de litros. Cada linea contiene el año que se ingresa.
Actualmente se genero una LSMW, asi venimos hace unos años.
Lo que necesitaria para despegarme de esto es poder generarle una nueva transaccion, don el usuario solo indique el archivo txt o xls.
Asi tambien, si existe alguna forma generica de armar cualquier lsmw con grabaciones de tx standard, me serviria para delegar tareas que tenemos asignadas en el area de Desarrollo.
gracias

#2

Probaste en abap usar /SAPDMC/LSM_OBJ_STARTER ?

type-pools: tumls.
DATA: proj TYPE  tumls_project VALUE 'ZAU_PROJECT',      
subproject TYPE  tumls_subproj VALUE 'ZAU_SUBPROJECT',      
object TYPE  tumls_objectnew VALUE 'ZAU_OBJECT'.
CALL FUNCTION '/SAPDMC/LSM_OBJ_STARTER'  
EXPORTING   
project                  = proj    
subproj                  = subproject   
object                     = object
*   X_CALLED_FROM_DXWB       = ' '
* EXCEPTIONS
*   NO_SUCH_OBJECT           = 1
*   OTHERS                   = 2        .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO*  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
1 me gusta
#3

SIDV. Ahi lo estoy probando, y me trae el formato del LSMW, Para el usuario final, deberia hacer los pasos de la generacion. Me imagine q a lo mejor hay una forma de que solo seleccione un archivo y ejecutar.

#4

Y calculo que eso habría que hacerlo en ABAP.
Los @abapers sabrán?

#5

Transacciones Z, Copias de probgramas, modificaciones, automatizacion de cargas.
si, definitivamente es abap.
Solo que no entiendo bien cual es el inconveniente :confused:

#6

Smota, gracias por responder.
Soy bastante nuevo en Abap, solo ando buscando si hay algo parecido o pasarme alguna info como para armarlo.
Gracias

#7

Entiendo que cuando crea la SE93 que llama a la LSMW, lo que obtiene es lo mismo que obtenemos nosotros (consultores sap) cuando entramos vía LSMW, y lo que desea, es que el usuario llegue a una dynpro que solo le permita subir el archivo, y ejecutar :stuck_out_tongue:

Me parece abap puro.
Lindo desafío para quienes programan.

#8

Quizá sea lindo, pero puede ser para tirarse de los pelos.
No se si el LMSW se basa en un batch input, pero si es así yo haría que la transacción Z arrancase un report z muy sencillo que sólo muestre la ruta del fichero y que al pulsar F8 lo lea y que se procese el bath input.

#9

Si se puede hacer asi, no hay drama, la idea es cargar esa tabla z,
Necesito algun ejemplo si es que hay para facilitarme un poco
gracias

#10

[CODE]
REPORT z_OTHA.
PARAMETERS: p_rut1 TYPE rlgrap-filename MEMORY ID xw1.

START-OF-SELECTION.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename             = p_rut1
      filetype             = 'BIN'
    TABLES
      data_tab             = LT_FICHERO.
  • En lt_fichero ya tienes en una tabla interna toda la información de tu fichero
  • Ahora coges el batch input y haces un loop
    LOOP AT LT_FICHERO INTO LS_FICHERO.
    PERFORM crea_batch_input USING LS_FICHERO.
    ENDLOOP.
    [/CODE]
2 me gusta
#11

la creacion del batch input por la shdb?
seria lo que va en “crea_batch_input”

  perform open_group.

  perform bdc_dynpro      using 'SAPLZTSD_BONIFICA' '0001'.
  perform bdc_field       using 'BDC_CURSOR'
                                'VIM_POSITION_INFO'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=NEWL'.
  perform bdc_dynpro      using 'SAPLZTSD_BONIFICA' '0001'.
  perform bdc_field       using 'BDC_CURSOR'
                                'ZTSD_BONIFICA-ZBONIF2_PORC(01)'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/00'.
  perform bdc_field       using 'ZTSD_BONIFICA-KUNNR(01)'
                                '493000'.
  perform bdc_field       using 'ZTSD_BONIFICA-EXTWG(01)'
                                '01'.
  perform bdc_field       using 'ZTSD_BONIFICA-GJAHR(01)'
                                '2017'.
  perform bdc_field       using 'ZTSD_BONIFICA-ZTOTAL_BONIF(01)'
                                '140'.
  perform bdc_field       using 'ZTSD_BONIFICA-ZSALDO_BONIF(01)'
                                '140'.
  perform bdc_field       using 'ZTSD_BONIFICA-ZBONIF1_TOPE(01)'
                                '20'.
  perform bdc_field       using 'ZTSD_BONIFICA-ZBONIF1_PORC(01)'
                                '60'.
  perform bdc_field       using 'ZTSD_BONIFICA-ZSALDO_BONIF_1(01)'
                                '120'.
  perform bdc_field       using 'ZTSD_BONIFICA-ZBONIF2_TOPE(01)'
                                '120'.
  perform bdc_field       using 'ZTSD_BONIFICA-ZBONIF2_PORC(01)'
                                '34.43'.
  perform bdc_dynpro      using 'SAPLZTSD_BONIFICA' '0001'.
  perform bdc_field       using 'BDC_CURSOR'
                                'ZTSD_BONIFICA-KUNNR(02)'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=SAVE'.
  perform bdc_dynpro      using 'SAPLZTSD_BONIFICA' '0001'.
  perform bdc_field       using 'BDC_CURSOR'
                                'ZTSD_BONIFICA-KUNNR(02)'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=BACK'.
  perform bdc_dynpro      using 'SAPLZTSD_BONIFICA' '0001'.
  perform bdc_field       using 'BDC_CURSOR'
                                'ZTSD_BONIFICA-KUNNR(01)'.
  perform bdc_field       using 'BDC_OKCODE'
                                '=BACK'.
  perform bdc_transaction using 'ZSD003'.

  perform close_group.
#12

No soy programador pero hacerte una transacción Z que tire del LSMW es sencillo. Poco tiempo de programación. Lo haría en un fichero excel como plantilla

#13

Justamente, esa es la transacción para realizar una grabación. Luego coges el código y lo pones en tu report tal como indicas en el post 11

#14

Estuve armando el programa, y me da el siguiente error

Segun entiendo en el path del archivo, probe con txt y xlsx.

#15

Hola,

Prueba declarando P_RUT1 type string, tal cual como lo tiene la funcion GUI_UPLOAD, de manera de evitar ese dump.

Saludos.

#16

Ahi paso OK, gracias.
Veo como continua, porq me genero muchos batchimput de un solo registro repetido.
Despues confirmo como voy

Me esta levantando informacion rara

Estoy debugueando, pero no encuentro q es…

Como que la tabla interna ya tiene mal esos valores.

#17

Desde luego tiene unos caracteres muy extraños, ¿Cómo se ha creado el fichero txt? Quizá tengas que cambiar el codepage de la gui_upload.

1 me gusta
#18

Hola Otha_Pampas

Yo que tú, no lo hiciera tan complicado. En lo personal yo solo utilizo la grabación hecha por la SHDB y eso lo pego en ABAP y lo manipulo a mi antojo, pero generar el programa desde la grabación, eso no lo hago porque da muchos problemas con eso de abrir grupo, cerrarlos etc. Te recomiendo q cargues la data desde un excel y que hagas tu propio programa Z sin generarlo desde la grabación, solamente copia lo que grabaste en la SHDB y molificado a tu antojo

Saludos

2 me gusta
#19

Que tal @otha_pampas creo entender lo que necesitas, yo he trabajado estos temas con batch input y todo genial. te dejo un tutorial que compartí en su momento, quizás sea de tu ayuda.

2 me gusta
#20

Hola @otha_pampas,
De acuerdo a mi experiencia por lo general el crear LSMWs se hace para evitar los procesos operativos repetitivos o que sean de gran volumen el hacerlo manualmante ya sea por temas de tiempo del proceso o para ganar tiempo por si requieren una tx Z y este en proceso de desarrollo ya que podria demorar dependiendo de las politicas de desarollo que tengan y bueno tambien te comento que si es posible hacer grabaciones LSMW de tx standar aunque me parece que no de todas.

La generacion de LSMW es sencilla y lo que podrian hacer para ello es:

  • Generar un proyecto en LSMW y dependiendo de lo que el usuario vaya hacer crear un objeto diferente, claro el proyecto es para clasificar la transacion a usar y el subproyecto y objeto por proceso de haber alguna variante del uso de la transaccion.
  • Solicitar al usuario el paso a paso de la operacion que realizaria para un registro de manera manual lo cual con eso generarian la grabacion en un ambiente de calidad por si se presenta fallos en el proceso de grabacion.
1 me gusta