手工後臺查看PO審批時間

 方法一、

1. SE16 輸入表名CDHDR 回車

 

2.  對象價值: 即爲PO號碼

    名稱:  即用戶名

    事務: ME28

 

即可查看該 PO的日期和時間

 

 

 方法二、

ME23N打開PO, 在菜單欄中 選擇 【環境】--【擡頭修改】

 

會出現一個table,顯示訂單的修改和審批記錄

 

 方法三、

The Release dates of the PO are unfortunately not stored in SAP
but as stated above you can check the change documents in the follwowing manner:
1.Go to CDPOS table with Objectid = <PO Number>
and OBJSCTCLASS = EINKBELEG
and FNAME = FRGKE
and NEW_VALUE = <Final release code>
and get the CHANGENR from CDPOS.
2.Then go CDHDR with the CHANGENR and get the update date..

 

方法四:

 

   FORM getdata .

  " 查詢主要數據(主要數據)的SELECT語句
  SELECT ebeln bsart lifnr ekorg ekgrp frgke frgzu aedat
    INTO CORRESPONDING FIELDS OF TABLE it_result
    FROM ekko
    WHERE ebeln IN gp_ebeln
      AND bsart IN gp_bsart
      AND aedat IN gp_aedat
      AND lifnr IN gp_lifnr
      AND ekorg IN gp_ekorg
      AND ekgrp IN gp_ekgrp
      AND frgke IN gp_frgke.


  FIELD-SYMBOLS:<wa> LIKE wa_result.
  DATA: v_frgc1 LIKE t16fs-frgc1,
        v_frgc2 LIKE t16fs-frgc2,
        v_frgc3 LIKE t16fs-frgc3,
        v_frgc4 LIKE t16fs-frgc4.


  LOOP AT it_result ASSIGNING <wa>.      "會將WA的變化直接賦給 it_result, 因爲WA是一個指針

    " 依次取得其他數據
    IF gp_frgco IS NOT INITIAL" 如果輸入了frgco,則根據用戶輸入過濾數據
      CLEAR: v_frgc1, v_frgc2, v_frgc3, v_frgc4.
      SELECT SINGLE a~frgc1 a~frgc2 a~frgc3 a~frgc4 INTO (v_frgc1,v_frgc2,v_frgc3,v_frgc4)
        FROM t16fs AS a
        INNER JOIN ekko  AS b ON b~frggr = a~frggr
          AND b~frgsx = a~frgsx
          AND b~ebeln = <wa>-ebeln
        WHERE frgc1 IN gp_frgco
           OR frgc2 IN gp_frgco
           OR frgc3 IN gp_frgco
           OR frgc4 IN gp_frgco.

      IF    v_frgc1 IS INITIAL AND v_frgc2 IS INITIAL
        AND v_frgc3 IS INITIAL AND v_frgc4 IS INITIAL.
        DELETE it_result.
        CONTINUE.
      ENDIF.

    ENDIF.

    <wa>-lifnr = zgarytools=>del_fnt_zero( <wa>-lifnr ).


    "IF <wa>-frgzu IS NOT INITIAL.

    PERFORM get_frgct USING <wa>-frgzu <wa>-ebeln <wa>-bsart
                            <wa>-aedat <wa>-lifnr <wa>-ekorg
                            <wa>-ekgrp <wa>-frgke '1'
                      CHANGING <wa>-frgct1 <wa>-frgco1 <wa>-cellcolor <wa>-ztime1.

    IF <wa>-frgct1 IS NOT INITIAL.
      PERFORM get_frgct USING <wa>-frgzu <wa>-ebeln <wa>-bsart
                              <wa>-aedat <wa>-lifnr <wa>-ekorg
                              <wa>-ekgrp <wa>-frgke '2'
                        CHANGING <wa>-frgct2 <wa>-frgco2 <wa>-cellcolor <wa>-ztime2.
      IF <wa>-frgct2 IS NOT INITIAL.
        PERFORM get_frgct USING <wa>-frgzu <wa>-ebeln <wa>-bsart
                                <wa>-aedat <wa>-lifnr <wa>-ekorg
                                <wa>-ekgrp <wa>-frgke '3'
                          CHANGING <wa>-frgct3 <wa>-frgco3 <wa>-cellcolor <wa>-ztime3.
        IF <wa>-frgct3 IS NOT INITIAL.
          PERFORM get_frgct USING <wa>-frgzu <wa>-ebeln <wa>-bsart
                                  <wa>-aedat <wa>-lifnr <wa>-ekorg
                                  <wa>-ekgrp <wa>-frgke '4'
                            CHANGING <wa>-frgct4 <wa>-frgco4 <wa>-cellcolor <wa>-ztime4.
        ENDIF.
      ENDIF.
    ENDIF.
    "ENDIF.
  ENDLOOP.

  SORT it_result BY ebeln.


ENDFORM.                    " getdata

 

 *&---------------------------------------------------------------------*
*       處理審批狀態,並根據審批狀態改變單元格顏色
*----------------------------------------------------------------------*
FORM get_frgct  USING    p_frgzu  p_ebeln  p_bsart  p_aedat p_lifnr
                         p_ekorg  p_ekgrp p_frgke
                         p_spseq       " 審批次序,分別對應frgct1~4
                CHANGING p_frgct       " 審批人職位
                         p_frgco       " 審批人職位代碼
                         p_cellcolor
                         p_time. "審批時間

  DATA: v_len   TYPE i,           " Length for frgzu
        v_frgzu TYPE c,
        v_pos   TYPE i,
        v_field TYPE string,  " cell name
        v_frgc  LIKE t16fs-frgc1,
        v_sel_field TYPE string,
        v_frggr LIKE t16fs-frggr.

*** Added by selinawei 2009-12-29
  DATA: objectid LIKE cdpos-objectid,
        v_changenr LIKE cdpos-changenr,
        v_udate LIKE cdhdr-udate,         " Released Date
        v_utime LIKE cdhdr-utime,         " Released Time
        s_udate(10type c,         " Released Date
        s_utime(8type c.         " Released Time

  v_len = STRLEN( p_frgzu ).
  v_pos =  p_spseq.
  v_pos = v_pos - 1.

  CONCATENATE 'FRGCT' p_spseq INTO v_field.
  CONCATENATE 'a~frgc' p_spseq INTO v_sel_field.
  CONCATENATE v_sel_field 'a~frggr' INTO v_sel_field SEPARATED BY space.

  SELECT SINGLE (v_sel_field) INTO (v_frgc,v_frggr)
    FROM t16fs AS a
    INNER JOIN ekko  AS b ON b~frggr = a~frggr
      AND b~frgsx = a~frgsx
      AND b~ebeln = p_ebeln.


  p_frgco = v_frgc.

* Select 'Release code Description'
  SELECT SINGLE frgct INTO p_frgct
    FROM t16fd
    WHERE frggr = v_frggr
      AND frgco = v_frgc
      AND spras = sy-langu  .

  IF v_len > v_pos.
    v_frgzu = p_frgzu+v_pos(1).
    IF v_frgzu EQ 'X'.   " 有審批,設定單元格顏色
      "有審批,設定單元格顏色
      PERFORM fill_cellcolor USING v_field
                             CHANGING p_cellcolor.

      " added by selina Wei 2009-12-29
      " 通過明細表判斷那些部門已經審批
      CLEAR: it_cdpos, wa_cdpos.
      IF p_spseq = 1.
        SELECT * INTO CORRESPONDING FIELDS OF TABLE it_cdpos             " Document number
        FROM cdpos
        WHERE objectclas = 'EINKBELEG'    " Change doc. object
        AND objectid = p_ebeln                  " Object value = PO
        AND tabname = 'EKKO'
        AND fname = 'FRGZU'
        AND value_new LIKE 'X%'
        AND value_old = space.
      ELSEIF p_spseq = 2.
        SELECT * INTO CORRESPONDING FIELDS OF TABLE it_cdpos             " Document number
        FROM cdpos
        WHERE objectclas = 'EINKBELEG'    " Change doc. object
        AND objectid = p_ebeln                  " Object value = PO
        AND tabname = 'EKKO'
        AND fname = 'FRGZU'
        AND ( ( value_old = space AND value_new IN ('XX''XXX''XXXX') )
             OR ( value_old = 'X' AND value_new IN ('XX''XXX','XXXX') ) ).
      ELSEIF p_spseq = 3.
        SELECT * INTO CORRESPONDING FIELDS OF TABLE it_cdpos             " Document number
        FROM cdpos
        WHERE objectclas = 'EINKBELEG'    " Change doc. object
        AND objectid = p_ebeln                  " Object value = PO
        AND tabname = 'EKKO'
        AND fname = 'FRGZU'
        AND ( ( value_old = space AND value_new IN ('XXX''XXXX') )
             OR ( value_old = 'X' AND value_new IN ('XXX','XXXX') )
             OR ( value_old = 'XX' AND value_new IN ('XXX','XXXX') ) ).
      ELSEIF p_spseq = 4.
        SELECT * INTO CORRESPONDING FIELDS OF TABLE it_cdpos             " Document number
        FROM cdpos
        WHERE objectclas = 'EINKBELEG'    " Change doc. object
        AND objectid = p_ebeln                  " Object value = PO
        AND tabname = 'EKKO'
        AND fname = 'FRGZU'
        AND ( ( value_old = space AND value_new = 'XXXX' )
             OR ( value_old = 'X' AND value_new = 'XXXX')
             OR ( value_old = 'XX' AND value_new = 'XXXX')
             OR ( value_old = 'XXX' AND value_new = 'XXXX') ).
      ENDIF.


      " 如何兩行的新舊值一樣,去憑證號最大的號(即取最新審批時間對應的憑證號)
      SORT it_cdpos BY changenr DESCENDING.

      READ TABLE it_cdpos INTO wa_cdpos INDEX 1.
      v_changenr = wa_cdpos-changenr.

      SELECT SINGLE cdhdr~udate cdhdr~utime INTO (v_udate, v_utime)
        FROM cdhdr
        WHERE objectclas = 'EINKBELEG'
        AND objectid = p_ebeln
        AND changenr = v_changenr.


      CONCATENATE v_udate+0(4'-'  v_udate+4(2)  '-' v_udate+6(2INTO s_udate.
      CONCATENATE v_utime+0(2':' v_utime+2(2':' v_utime+4(2INTO s_utime.
      if v_udate is not INITIAL.
      CONCATENATE s_udate s_utime INTO p_time separated by space.
      endif.

    ENDIF.
  ENDIF.

ENDFORM.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章