FI_ITEMS_MASS_CHANGE 批量更新 凭证文本 (凭证被锁、一些项目没更改到的解决方法)
2013-06-24 15:18
661 查看
FI_ITEMS_MASS_CHANGE 批量更新 凭证文本,这个函数本身也是个BDC的程序 ,一行一行的去更改凭证行项目,问题是,LOOP循环批量更新的时候常发生 Item 001得到更改,Item 002 003 却没有改, 并给出错误说:凭证被锁。 起原因是原函数是异步更新的,参见原函数中的:
call transaction 'FB02' using bdcdata
mode bdcmode
update 'A'
messages into msgtab.
其中 update 'A'即是 。
在 T-code se80 中 把原函数copy一份出来,修改这里为:
call transaction 'FB02' using bdcdata
mode bdcmode
* update 'A'
update 'S'
messages into msgtab.
这就是同步更新,但是比较慢点 。
*-------一下为调用程序段-------------------------------------
*仅作参考 有待改进。
FORM MASS_CHANGE_FRM USING VALUE(PP_BELNR) VALUE(PP_BUKRS)
VALUE(PP_GJAHR) VALUE(PP_BUZEI)
VALUE(PP_SGTXT) value(PP_bschl).
data: l_irc type I,l_line type I .
* 所改字段之值
wa_bseg-sgtxt = PP_sgtxt.
it_buztab-bukrs = PP_bukrs.
it_buztab-belnr = PP_belnr.
it_buztab-gjahr = PP_gjahr.
it_buztab-buzei = PP_buzei.
it_buztab-bschl = pp_bschl. "posting key
* it_buztab-koart = 'S'. "leixing
APPEND it_buztab.
it_fldtab-fname = 'SGTXT'.
it_fldtab-aenkz = 'X'.
APPEND it_fldtab.
*CALL FUNCTION寫入銀行科目的內文
CALL FUNCTION 'Z_FI_ITEMS_MASS_CHANGE'
EXPORTING
s_bseg = wa_bseg
IMPORTING
errtab = it_errtab
TABLES
it_buztab = it_buztab
it_fldtab = it_fldtab
EXCEPTIONS
bdc_errors = 1
OTHERS = 2.
l_irc = sy-subrc .
commit WORK and wait.
IF l_irc EQ 0.
else.
CLEAR wa_errtab .
it_mess-bukrs = PP_bukrs.
it_mess-belnr = PP_belnr.
it_mess-gjahr = PP_gjahr.
it_mess-buzei = PP_buzei.
it_mess-irc = l_irc .
DESCRIBE TABLE it_errtab LINES l_line.
READ TABLE it_errtab INDEX l_line INTO wa_errtab.
*BDC消息處理.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = wa_errtab-err-msgid
msgnr = wa_errtab-err-msgnr
msgv1 = wa_errtab-err-msgv1(50)
msgv2 = wa_errtab-err-msgv2(50)
msgv3 = wa_errtab-err-msgv3(50)
msgv4 = wa_errtab-err-msgv4(50)
IMPORTING
message_text_output = l_text.
it_mess-msgtxt = l_text.
APPEND it_mess.
endif.
CLEAR:it_errtab,it_errtab[],it_buztab,it_buztab[],it_fldtab,it_fldtab[],wa_bseg.
ENDFORM .
call transaction 'FB02' using bdcdata
mode bdcmode
update 'A'
messages into msgtab.
其中 update 'A'即是 。
在 T-code se80 中 把原函数copy一份出来,修改这里为:
call transaction 'FB02' using bdcdata
mode bdcmode
* update 'A'
update 'S'
messages into msgtab.
这就是同步更新,但是比较慢点 。
*-------一下为调用程序段-------------------------------------
*仅作参考 有待改进。
FORM MASS_CHANGE_FRM USING VALUE(PP_BELNR) VALUE(PP_BUKRS)
VALUE(PP_GJAHR) VALUE(PP_BUZEI)
VALUE(PP_SGTXT) value(PP_bschl).
data: l_irc type I,l_line type I .
* 所改字段之值
wa_bseg-sgtxt = PP_sgtxt.
it_buztab-bukrs = PP_bukrs.
it_buztab-belnr = PP_belnr.
it_buztab-gjahr = PP_gjahr.
it_buztab-buzei = PP_buzei.
it_buztab-bschl = pp_bschl. "posting key
* it_buztab-koart = 'S'. "leixing
APPEND it_buztab.
it_fldtab-fname = 'SGTXT'.
it_fldtab-aenkz = 'X'.
APPEND it_fldtab.
*CALL FUNCTION寫入銀行科目的內文
CALL FUNCTION 'Z_FI_ITEMS_MASS_CHANGE'
EXPORTING
s_bseg = wa_bseg
IMPORTING
errtab = it_errtab
TABLES
it_buztab = it_buztab
it_fldtab = it_fldtab
EXCEPTIONS
bdc_errors = 1
OTHERS = 2.
l_irc = sy-subrc .
commit WORK and wait.
IF l_irc EQ 0.
else.
CLEAR wa_errtab .
it_mess-bukrs = PP_bukrs.
it_mess-belnr = PP_belnr.
it_mess-gjahr = PP_gjahr.
it_mess-buzei = PP_buzei.
it_mess-irc = l_irc .
DESCRIBE TABLE it_errtab LINES l_line.
READ TABLE it_errtab INDEX l_line INTO wa_errtab.
*BDC消息處理.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = wa_errtab-err-msgid
msgnr = wa_errtab-err-msgnr
msgv1 = wa_errtab-err-msgv1(50)
msgv2 = wa_errtab-err-msgv2(50)
msgv3 = wa_errtab-err-msgv3(50)
msgv4 = wa_errtab-err-msgv4(50)
IMPORTING
message_text_output = l_text.
it_mess-msgtxt = l_text.
APPEND it_mess.
endif.
CLEAR:it_errtab,it_errtab[],it_buztab,it_buztab[],it_fldtab,it_fldtab[],wa_bseg.
ENDFORM .
相关文章推荐
- “无法为更新定位行,一些值可能已在最后一次读取后已更改”问题的解决方法
- ADO POST时出现“无法为更新定位行,一些值可能已在最后一次读取后已更改”问题的解决方法
- SAP中批量更改凭证行项目方法
- 批量更新数据引起 DataGrid 的绘制错误及解决方法
- 今天在我导入一些安卓项目的源码的时候会出现style.xml 和MAIN.xml 等错误, 网上的方法试了各种clean各种fix等方法都是不能解决。最后去国外论坛得到解决
- 0.Ubuntu下的一些小问题的解决方法(持续更新中)
- 批量更新数据引起 DataGrid 的绘制错误及解决方法
- 使用sublime编辑器编辑eclpse跑tomcat的项目不及时更新问题的解决方法
- java web项目改名后出现一些小问题的解决方法
- cocosstudio 出现项目由更新版本编辑器产生 无法打开的解决方法
- 更改项目名或者多个项目时,发现多个"Home"匹配的Controller时,解决方法
- adaboost 算法在实现中的一些问题以及解决方法(持续更新)
- R语言︱文件读入、读出一些方法罗列(批量xlsx文件、数据库、文本txt、文件夹)
- svn更新项目后,eclipse出现红色感叹号解决方法
- 关于TSP项目中遇到的一些问题,及解决方法
- Qt2010.05 的ui文件更改后没有更新,以及解决方法
- 项目中遇到的一些小问题及解决方法
- svn更新项目后,eclipse出现红色感叹号解决方法
- eclipse中使用maven创建项目和更新项目JDK版本默认是1.5解决方法
- 项目适配iOS9遇到的一些问题及解决办法(持续更新)