手工后台查看PO审批时间
今天一同事问了如何看到PO的审批时间和进度;就去google一下
方法一、
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(10) type c, " Released Date
s_utime(8) type 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(2) INTO s_udate.
CONCATENATE v_utime+0(2) ':' v_utime+2(2) ':' v_utime+4(2) INTO s_utime.
if v_udate is not INITIAL.
CONCATENATE s_udate s_utime INTO p_time separated by space.
endif.
ENDIF.
ENDIF.
ENDFORM.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本