jueves, 2 de noviembre de 2017

SHDB - VERSION 2 (ACTUALIZADO 2:45 PM)

Primero antes que todo,

fijate si en verdad el batch no te graba el =P+, entra a un material
y modifica algo de una caracteristica y prueba bajando hasta donde de verdad
debes bajar y al final no lo guardes simplemente cancelas e igual te va a quedar la grabación.












Yo hice eso con una hoja de ruta donde modifico operaciones e igual me queda grabado el =P+

                                      


**************actualización 03:03 pm ************************


***************************************
explicación aritmetica:

posicion. scroll
01 al 15 - 0
16 al 30 - 1
31 al 45 - 2
46 al 60 - 3
61 al 75 - 4

si necesito apunta a la posicion 45, 45/15, mi resto será 0 y cociente 3
pero segun la tabla vemos que solo necesito 2 scroll para llegar a la posición 45
por tanto cuando resto sea cero el cociente se le disminuira en 1.
******************************************


TODO ESTO DENTRO DE TU LOOP PARA LO CUAL DEBES LIMPIAR LAS VARIABLES QUE SE
DECLARARAN.


*      VARIABLE_CARACT TYPE I. "esta debe ser una variable tuya donde sepas que numero de caracteristica hay que grabar
*                              "ejm: grabar la descripcion de la caracteristica nro. 25


DATA:  VARIABLE_SCROLL TYPE I, "ESTA VARIABLE CONTROLARA CUANTOS SCROLL HAREMOS
       VARIABLE_POS    TYPE I, "ESTA VARIABLE INDICARA LA POSICION A LA QUE APUNTAREMOS
       VARIABLE_CONST  TYPE I VALUE 15, "ESTA VARIABLE ES LA CONSTANTE DE CUANTAS FILAS POR PANTALLA VEMOS, EN MI CASO 15
       VARIABLE_SCROLL_N(3) TYPE N, "EN ESTA VARIABLE SE IMPRIMIRA LA DEL NOMBRE SIMILAR PARA EL BATCH, YA QUE EL CONCATENATE SOLO ADMITE NUMC
       VARIABLE_POS_N(3) TYPE N, "SIMILAR A DESCRIPCION ANTERIOR,
       VARIABLE_FNAM   TYPE fnam_____4. "EN ESTA VARIABLE HAREMOS EL CONCATENATE DE LA POSICION ENTRE ( ) CON EL CAMPO DEL BATCH


LOOP AT T_MATERIALES INTO S_MATERIALES.

VARIABLE_SCROLL = VARIABLE_CARACT DIV VARIABLE_CONST.  "DIV SE USA PARA OBTENER EL COCIENTE (EN ESTE CASO EL COCIENTE ENTERO)
VARIABLE_POS = VARIABLE_CARACT MOD VARIABLE_CONST. "MOD SE USA PARA OBTENER EL RESIDUO (ENTERO)


" SI SE HACE LAS DIVISIONES IDEALES TALES COMO 15/15, 30/15, 45/15 TENDREMOS RESIDUO 0.
" SI ES ASI ENTONCES LA POSICION A APUNTAR SERÁ LA 15 Y EL SCROLL LE RESTAREMOS 1.
" PARA EL PRIMER ESCENARIO 15/15, AL SER VARIABLE_SCROLL 1 Y RESTARLE 1 SE HACE CERO POR TANTO NO HABRÍA SCROLL
" PARA EL RESTO DE CASOS DE DIVISIONES IDEALES CON RESTO CERO EL RESTARLE 1 TAMBIEN AYUDARÁ A APUNTAR LA CANTIDAD CORRECTA DE SCROLL
" PARA EL CASO DEL EJEMPLO SI QUEREMOS GRABAR LA DESCRIPCION DE CARACTERISTICA 25 Y SE NOS MUESTRA DE 15 EN 15
" SERIA, VARIABLE_POS = 25 / 15 = 10
"        VARIABLE_SCROLL = 25 / 15 = 1
" POR TANTO EN NUESTRA PANTALLA HAREMOS 1 SCROLL, APUNTANDO A LA POSICION 10 DE LA PANTALLA.


IF VARIABLE_POS = 0.

VARIABLE_POS = 15.
VARIABLE_SCROLL = VARIABLE_SCROLL - 1.

ENDIF.

WRITE VARIABLE_POS TO VARIABLE_POS_N. " PASAMOS LA VARIABLE TIPO I A UNA TIPO N PARA QUE NOS DEJE HACER EL CONCATENATE
WRITE VARIABLE_SCROLL_N TO VARIABLE_SCROLL_N. ""


IF VARIABLE_SCROLL GT 0.
DO VARIABLE_SCROLL TIMES.

bdc_field 'BDC_OKCODE' '=P+'.

ENDOO.
ENDIF.


"EN MI CASO DEBIA CAMBIAR EL CAMPO STEUS AL VALOR ZAV3 DE UNA 'X' POSICION, PARA EL EJEMPLO LA POSICION 10

CONCATENATE 'STEUS(' VARIABLE_POS ')' INTO VARIABLE_FNAM.
CONDENSE VARIABLE_FNAM.

bdc_field VARIABLE_FNAM 'ZAV3'.


"Y CONTINUAS TU BATCH, ESTO LO USARAS PARA CADA QUE EN TU BATCH VEAS HA RECONOCIDO UNA POSICIÓN ENTRE ( ).
"AHORA, EL PROBLEMA ES CUANDO TU POSICION A CAMBIAR CORRESPONDA A NUMERO DE PANTALLAS DISTINTOS
"ES DECIR, LAS DOS ULTIMAS DE LA PRIMERA PANTALLA Y POR TANTO LAS DOS PRIMERAS DE LA SEGUNDA PANTALLA
"EN ESE CASO DEBES TRATAR POSICION POR POSICION DENTRO DEL MATERIAL
"ESTE EJEMPLO ES SOLO PARA UNA POSICION YA QUE EN TU CASO ES MODIFICAR 4

ENDLOOP.





********************************************
********** Si me da el tiempo te ayudo con el resto pero te podría ir adelantando que si tienes que modificar la posicion 25, 26, 27, 28 las trates como un batch independiente cada una. por tanto en una sola grabacion modifica 1 posicion y ese mismo hará para cada material. Es engorroso pero imagina que te toca modificar las posiciones 29, 30, 31 y 32 son distintos scroll por tanto no es simplemente saber desde ue posicion y que pantalla y mandar el resto.

OSEA ALGO ASI, SI SE QUE TENGO 32 CARACTERISTICAS Y POR TANTO TENGO QUE DE ESAS 32 LAS ULTIMAS 4 LE TENGO QUE CAMBIAR EL TEXTO HAGO LO SIGUIENTE.


LOOP AT T_MATERIALES INTO S_MATERIALES.
DONDE 32 ES EL NUMERO DE CARACTERISTICAS QUE TIENES POR MATERIAL.


VARIABLE = 32 - 3.

"aqui se resta 3 y daria un valor de 29, por tanto al entrar al DO 4 TIMES,
"se consumira 29, 30, 31, 32.


DO 4 TIMES.

(AQUI APLICAS TODA LA LOGICA EXPLICADA ANTES Y ESTARIAS TRATANDO
CADA VARIABLE COMO UNA INDIVIDUAL)

y al final de cada uno, a esa variable le restas 1,

VARIABLE_CARACTERISTICA = VARIABLE_CARACTERISTICA - 1.

ENDDO.

*con esto por cada material dentro de tu reporte tendrias 4 lineas del log, pero te asegurarias
*de que se apuntaron correctamente y no te de mucho problema el tema del scroll.

ENDLOOP.



suerte, si te dan un tiempo mas seria genial.


No hay comentarios.:

Publicar un comentario