viernes, 3 de febrero de 2017

CALL FUNCTION 'CS_BOM_EXPL_MAT_V2

Envío aquí unos links donde gente comparte algunos casos y consultas para la función... tales como...
solo despliega el primer nivel, restringir a que nivel desplegar...

Aquí un usuario da ejemplo en código de como uso la función


http://www.abap.es/foro/index.php?topic=162.0

así como esta hay otra página que mas o menos intenta explicar para que sería cada campo

https://archive.sap.com/discussions/thread/38268


Ejemplo PGM Z para probar la función (leer los comentarios)

REPORT  ZRCS11001.

DATA: pm_mtnrv LIKE mara-matnr,
      pm_werks LIKE marc-werks,
      pm_stlal LIKE stko-stlal,
      pm_capid LIKE tc04-capid.
DATABEGIN OF STB OCCURS 1000.
         INCLUDE STRUCTURE STPOX.
DATAEND OF STB.


"no olvidar que en cada APPEND realizado
"linea abajo limpiar el work area en este caso el LS_RCMAT

CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
 EXPORTING
   CAPID                       = 'PP01'
   DATUV                       = sy-datum
   EMENG                       = 1
   MEHRS                       = 'X'
   MTNRV                       = pm_mtnrv
   STLAL                       = pm_stlal
   WERKS                       = pm_werks
  TABLES
    STB                         = stb.
IF SY-SUBRC <> 0.
  "Aquí si no encuentra nada debería saltarse al siguiente material
  "si estas dentro de un LOOP a materiales (ojo, loop a materiales)
  "deberás poner CONTINUE, así se saltará todo el código que viene
  "debajo y aplicar la función para el siguiente material
  "o solo poner la logica para que agregue una sola linea a tu
  "gt_rcmat
***************************************************
  "Una observación a tu LOOP AT lt_stb es que deberías ponerlo
  "dentrod de este ELSE que esta debajo ya que eso indicara
  "que se encontro un despliegue y hacerle toda la logica
  "para que cada registro se ingrese en el gt_rcmat
ELSE.
ENDIF.

Imágenes del debug y análisis...

EMENG





DEBUG PROGRAMA Z QUE LLAMA A LA FUNCIÓN



Con esto quedaría la duda sobre si la función despliega todo, se ve que en un primer momento o para la mayoría de caso salvo, nunca se sabe, excepciones.. pero con esto ya quedaría y no sería necesario llamar dentro de tu LOOP de materiales a la función más que una sola vez. así como limpias el work area luego de cada APPEND podrías probar al iniciar cada LOOP al igual que tu tabla LT_STB hacerle un refresh antes de cada llamada a la función, no vaya a ser que se quede pegado para un material... ojo con esas cosas, no esta demás darle una vuelta.

*****************************************************************************
******************************************************************
Espero haya sido de ayuda mi aporte... espero mi premio mi gran gran gran premio (ya sabes cuál como y donde, con todo completo O-R-A- ...)

Exitos y dale, si no sale algo comenta el blog o si hay roche investiga en internet sobre la función  o algún campo, si se puede! ánimos!

No olvides siempre limpiar las variables donde se debe y hacer bien las asignaciones, vas bien!

Saludos





No hay comentarios.:

Publicar un comentario