Foro de programacion ABAP
SAP / ABAP => Programación ABAP => Mensaje iniciado por: QiQe en 02 de Septiembre de 2008, 02:31:35 pm
-
Hola a tod@s...
He seguido este foro (como invitado) durante bastante tiempo, y he aprendido muchísimo con vosotros...
Pero ahora que me he puesto manos a la obra con ABAP y SAP...
Os cuento...es un programita de carga para el Legacy (LSMW), para las hojas de ruta de PP...
Como sabreis, en la hoja de ruta se define los puestos de trabajo por el que pasa un material, y se le asignan los componentes que se consumen a las operaciones por las que va pasando.
Por lo tanto, tenemos un material 'X' con una lista de materiales, de 2 posiciones...
0010 - Material 1
0020 - material 2
Y su hoja de ruta:
0010 - Pto.trabajo 1 - se consume el Material 1
0020 - Pto.trabajo 2 - se consume el Material 2.
El problema que tengo con la SELECT, es que para cada posición de la hoja de ruta, sólo me carga el [Material 1] de la lista de materiales...
Aunque hayan mas operaciones, no me salta al siguiente material...
La select me hace lo siguiente:
0010 - Pto.trabajo 1 - se consume el Material 1
0020 - Pto.trabajo 2 - se consume el Material 1.
Lo que tengo puesto es esto:
select single IDNRK into BIPMZ-MATNR from STPO
where stlnr = BIPMZ-stlnr
AND stlkn = BIPMZ-stlkn
AND stlty = BIPMZ-stlty .
¿Hay alguna forma de que eso se haga un loop o bucle y vuelva a pasar por la siguiente posición si hubiese material? y que al volver a pasar compruebe si hay otra posición y coja ese material, no repita el primero
Tengo dentro de nada el Go Life en productivo y nos dimos cuenta del error hace poco en la formación con los usuarios...
Os agradezco cualquier tipo de ayuda
Un saludo y MIL GRACIAS
-
Hola, puedes hacer el SELECT de esta manera, me refiero haciendo un SELECT --> ENDSELECT
SELECT * FROM stpo
WHERE stlnr = bipmz-stlnr
AND stlkn = bipmz-stlkn
AND stlty = bipmz-stlty.
MOVE: stpo-idnrk TO bipmz-matnr.
APPEND bipmz.
ENDSELECT.
Un saludo.
-
No tengo acceso al sistema ahora...
Te juro que si me funciona...
Yo que sé, menos pagarte la hipoteca y ponerme a 4 patas... pídeme lo que quieras!
Ahora en 1 hora te digo algo...
MIL GRACIAS, MIL GRACIAS!!!
P.D: Estoy hasta con ansiedad :S
-
Me pide un target
A target area must be declared either explicitly with an INTO clause or
implicitly with a TABLES statement.
Le pongo esto
* Target Field: BIPMZ-MATNR
Y me dice lo mismo...
:(
-
El error que te esta dando es porque no tienes declarada la tabla BIPMZ.
Deberías declarar la tabla así, TABLES: bipmz.
De todas formas es posible que haya que hacer alguna otra cosa, si pones todo el código igual vemos exactamente en que falla.
;)
-
BIPMZ Estructura batch input asignación componentes a hoja de ruta
Fields
PLNTY Tipo de hoja de ruta
Rule : Constant
Code: BIPMZ-PLNTY = 'N'.
PLNNR Clave de grupo hojas de ruta
Source: COMPONENTES-PLNNR (Grupo hojas de ruta)
Rule : Transfer (MOVE)
Code: BIPMZ-PLNNR = COMPONENTES-PLNNR.
PLNAL Contador grupo hojas ruta
Source: COMPONENTES-PLNAL (Contador grupo hojas ruta)
Rule : Transfer (MOVE)
Code: BIPMZ-PLNAL = COMPONENTES-PLNAL.
PLNFL Secuencia
Rule : Constant
Code: BIPMZ-PLNFL = '000000'.
VORNR Número de operación
Source: COMPONENTES-VORNR (Número de operación)
Rule : Transfer (MOVE)
Code: BIPMZ-VORNR = COMPONENTES-VORNR.
STLTY Tipo de lista de materiales
Rule : Constant
Code: BIPMZ-STLTY = 'M'.
STLNR Lista de materiales
Code: " BIPMZ-STLNR = COMPONENTES-STLNR.
select single stlnr into BIPMZ-STLNR FROM MAST
WHERE MATNR = COMPONENTES-BOMAT AND
WERKS = COMPONENTES-WERKS AND
STLAL = COMPONENTES-BOMAL AND
STLAN = COMPONENTES-BOMAN.
STLAL Alternativa de la lista de materiales
Source: COMPONENTES-STLAL (Alternativa de la lista de materiales)
Rule : Transfer (MOVE)
Code: BIPMZ-STLAL = COMPONENTES-STLAL.
STLKN Número de nodos (batch input)
Code: "BIPMZ-STLKN = COMPONENTES-STLKN.
TABLES : STAS ,STPO.
" p añadida
select * "single STLKN into BIPMZ-STLKN
FROM STPO WHERE
STLNR = BIPMZ-STLNR AND
STLTY = BIPMZ-STLTY . "AND
" POSNR = STPO-STLKN. viene en el fichero de carga
" condicion añadida para obtener correctamente STLKN
select * from stas where
stlnr = BIPMZ-STLNR AND
stlty = BIPMZ-STLTY AND
stlal = BIPMZ-STLAL AND
stlkn = STPO-STLKN .
endselect .
if sy-subrc EQ 0 .
BIPMZ-STLKN = STPO-STLKN .
exit .
ENDIF.
endselect .
ZUDIV Divisor en nº entero (batch input)
ZUMS1 Medida de corte 1 (batch input)
ZUMS2 Medida de corte 2 (batch input)
ZUMS3 Medida de corte 3 (batch input)
ZUMEI Unidad de medida de corte (Batch input)
IMENG Cantidad de componente (BTCI)
IMEIN Unidad de medida de componente (batch input)
MATNR Número de material
Code: * Target Field: BIPMZ-MATNR Número de material
select single IDNRK into BIPMZ-MATNR from STPO
where stlnr = BIPMZ-stlnr
AND stlkn = BIPMZ-stlkn
AND stlty = BIPMZ-stlty . " AND stlty = 'M'.
"where stlnr = COMPONENTES-stlnr "COMPONENTES-stlkn
WERKS Centro
Source: COMPONENTES-WERKS (Centro)
Rule : Transfer (MOVE)
Code: BIPMZ-WERKS = COMPONENTES-WERKS.
BOMAT Número de material
Source: COMPONENTES-BOMAT (Número de material)
Rule : Transfer (MOVE)
Code: BIPMZ-BOMAT = COMPONENTES-BOMAT.
RGEKZ Indicador: toma retroactiva
Source: COMPONENTES-RGEKZ (Toma Retroactiva)
Rule : Transfer (MOVE)
Code: BIPMZ-RGEKZ = COMPONENTES-RGEKZ.
AUFST Nivel de la orden
Source: COMPONENTES-AUFST (Nivel de la orden)
Rule : Transfer (MOVE)
Code: BIPMZ-AUFST = COMPONENTES-AUFST.
AUFWG Camino de la orden
Source: COMPONENTES-AUFWG (Camino de la orden)
Rule : Transfer (MOVE)
Code: BIPMZ-AUFWG = COMPONENTES-AUFWG.
BOMTY Tipo de lista de materiales
Rule : Constant
Code: BIPMZ-BOMTY = 'M'.
BOMNR Lista de materiales
" BIPMZ-BOMNR = COMPONENTES-BOMNR.
select single stlnr into BIPMZ-BOMNR FROM MAST
WHERE MATNR = COMPONENTES-BOMAT AND
WERKS = COMPONENTES-WERKS AND
STLAL = COMPONENTES-BOMAL AND
STLAN = COMPONENTES-BOMAN.
BOMAL Alternativa de la lista de materiales
Source: COMPONENTES-BOMAL (Alternativa de la lista de materiales)
Rule : Transfer (MOVE)
Code: BIPMZ-BOMAL = COMPONENTES-BOMAL.
BOMAN Utilización de la lista de materiales
Source: COMPONENTES-BOMAN (Utilización de la lista de materiales)
Rule : Transfer (MOVE)
Code: BIPMZ-BOMAN = COMPONENTES-BOMAN.
*** Disculpad por la forma en que está pasteado.
Esa es la parte que me falla.
Gracias anticipadas!
-
Pues... va a ser que la SELECT de ese campo no es...
Lo que me está dando problemas es:
STLKN Número de nodos (batch input)
Lo que me está haciendo es cogerme el primer valor del nodo, que equivale a la primera posición de la lista de materiales...
Lo que no hace al pasar por el programa otra vez, es comprobar si existe otro posterior...
Ese es el problema... he debuggeado poniendole un breakpoint y he conseguido deducir eso...
¡Joder! creyendo que eso estaba bien! :@ >:(
-
RESUELTO
Gracias a los que respondieron a mi S.O.S
Un saludo