惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

博客园 - zhumk

Kindle DX/2最低程度中文化 ABAP:更新供应商Email地址 How to search for BAdIs IP41 - 维护计划中的日期和周期 如何升级Mac Mini(二代)内存 Kindle Collection编辑器 Kindle 汉化终结版 ABAP:密码输入框 SAP相关下载链接 ABAP:在Dynpro屏幕中使用Selection Screen ALV popup based on classic style REUSE_ALV_POPUP_TO_SELECT function module ABAP: 如何让ALV Tree的注册事件在屏幕PAI之后触发 ABAP: Search Help for Date ABAP:运行中修改Table Control控件状态 BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40 第三部分 BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40 第二部分 BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40 第一部分 ABAP:WBS Element下层预算向上层汇总 DynDNS免费动态域名解析
BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40 第四部分
zhumk · 2011-03-05 · via 博客园 - zhumk

前面介绍使用Function Module:KBPP_EXTERN_UPDATE_CO进行CJ41时,可能出现概算不能完全更新的问题,提示概算比已有的概算小等等,其他几篇博文也提到该问题,总之,想要一次更新全部的概算,成功的机会不大。

分析问题原因,如果我需要将一个WBS节点的概算调大,如果你不从该WBS的上层先加大概算,那么直接修改就会报错,反之如果需要将一个WBS节点的概算调整小,那么应该从根节点向上层次逐层修改,可是,如果出现有的层次调整变大,有的变小,那么就复杂了。

有没有简单的办法呢?经过调试,其实即使报错,也有部分节点更新成功,使用同一组数据,多执行几次,就全部修改完了。所以为了简化程序,将同一组数据多次调用该函数,发现有错误就再次调用,完全没有错误,就停止执行。执行的次数,同你的数据中WBS有几层,示例代码如下:


   sort lt_wbs by stufe.

   loop at lt_wbs into ls_wbs.

     clear lt_bpak.
     select single objnr into lt_bpak-e_objnr
       from prps
       where pspnr ls_wbs-pspnr.

     lt_bpak-e_vorga 'KSTP'.
     lt_bpak-e_versn '000'.
     lt_bpak-twaer   cns_waers.
     lt_bpak-wert    ls_wbs-zgssum.
     append lt_bpak.
   endloop.

   "循环调用BAPI,次数与项目层次数量相同
   data:l_times type i.
   datal_flag type c.

   sort lt_wbs by stufe descending.
   read table lt_wbs into ls_wbs index 1.
   l_times ls_wbs-stufe.

   do l_times times.

     refresh lt_return[].

     call function 'KBPP_EXTERN_UPDATE_CO'
      exporting
        i_budget_activity            'KSTP'
*       I_BUDGET_ACTIV_SUP_RET       = ' '
*       I_COMMIT_DATA                = ' '
        i_delta_amounts              '' "X表示追加,空表示替代
        i_rollup_data                '' "X表示向顶层汇总
*       I_CHECK_PLAN_DATA            = ''
*       I_APPLICATION                =
        i_commit_all                 'X'
*     IMPORTING
*       E_ERRORS_FOUND               =
       tables
         it_bpak                      lt_bpak
         it_return                    lt_return
       exceptions
         no_update                    1
         others                       2
               .
     clear l_flag.
     loop at lt_return where type 'E'.
       l_flag 'X'.
     endloop.

     if l_flag is initial.
       exit.  "若没有错误,退出循环
     endif.

   enddo.

   loop at lt_return where type 'E'.
     l_flag 'X'.
     exit.
*     message E000 with '项目概算更新失败:' LT_RETURN-MESSAGE.
   endloop.

   if l_flag is initial.
     commit work.
     message s000 with '项目' p_pspid '概算更新成功。'.
   else.
     rollback work.

  endif.