Función para obtener OF (provisionales, borradas, etc..) dado un material

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Driau
    Senior Member
    • ago
    • 235

    #1

    Función para obtener OF (provisionales, borradas, etc..) dado un material

    Hola a todos,

    me gustaría saber si existe en SAP alguna funcón en plan "CALL FUNCTION" que me permita saber dada una materia prima en que OF interviene.

    Tipo: La materia prima con codigo 4000 se usa en la OF 10005039.

    Alguna idea????

    Gracias!
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola, hice algo parecido aver segui estos pasos

    1. Ubicar el producto final que esta involucrando a la materia prima
    2. Recuperar las OF y OP de la CAUFV y PLAF

    AKi va el codigo:
    La tabla interna gt_matnr_werks contiene las materias primas y su centro respectivo, ahi consulto a la tabla STPO y MAST donde se involucra la lista de materiales, puesto q ese dato es importante para saber a partir de que materias primas se forma el producto final, el campo idnrk me representa a las MP y el campo matnr al producto final

    Código:
      IF NOT gt_matnr_werks[] IS INITIAL.
        SELECT st~ausch st~idnrk st~meins st~menge st~stlnr
               ms~matnr ms~stlan ms~stlnr ms~werks
               mc~bstma mc~bstmi mc~fevor
               mc~matnr AS mcmatnr
               mc~werks AS mswerks
        INTO CORRESPONDING FIELDS OF TABLE gt_pt_bulk
        FROM stpo AS st
        INNER JOIN mast AS ms ON  st~stlnr = ms~stlnr
        INNER JOIN marc AS mc ON  ms~matnr = mc~matnr
                              AND ms~werks = mc~werks
        FOR ALL ENTRIES IN gt_matnr_werks
        WHERE st~idnrk = gt_matnr_werks-matnr
          AND ms~werks = gt_matnr_werks-werks.
    
        LOOP AT gt_pt_bulk INTO w_pt_bulk.
          SELECT SINGLE maktx INTO w_pt_bulk-idtxt FROM makt
          WHERE matnr EQ w_pt_bulk-idnrk
            AND spras EQ sy-langu.
          SELECT SINGLE maktx INTO w_pt_bulk-maktx FROM makt
          WHERE matnr EQ w_pt_bulk-matnr
            AND spras EQ sy-langu.
          MODIFY gt_pt_bulk FROM w_pt_bulk.
        ENDLOOP.
        CLEAR: gt_matnr_werks, gt_matnr_werks[].
      ENDIF.
    Luego lo demas es sencillo, pues solo es consultar a la CAUFV por el campo matnr (producto final) (caufv-plnbez = matnr) y tbm a la PLAF para las ordenes previsionales (PLAF)

    Código:
      SELECT aufnr plnbez gamng gmein gltrp rsnum
        INTO TABLE lt_caufv
          FROM caufv
            FOR ALL ENTRIES IN gt_pt_bulk
              WHERE a~autyp  EQ '10'     "Ordenes de Fabricacion
                AND a~werks  EQ gt_pt_bulk-werks
                AND a~plnbez EQ gt_pt_bulk-matnr
                AND a~loekz  EQ space.
    Código:
      SELECT plnum matnr plwrk gsmng meins pedtr rsnum lgort sbnum
        INTO TABLE lt_plaf
          FROM plaf
            FOR ALL ENTRIES IN gt_pt_bulk
              WHERE matnr = gt_pt_bulk-matnr
                AND plwrk = gt_pt_bulk-werks
                AND umskz = space.
    Espero te haya podido ayudar ^^
    David Carballido Córdova

    Comentario

    Trabajando...