学校网站建设意义有哪些方面,电商系统服务好的商家,手机有些网址打不开怎么解决,建设在线教育网站KO22可以为内部订单预先维护预算#xff0c;以便在后续成本实际产生时进行控制。 使用BAPI进行创建#xff1a;KBPP_EXTERN_UPDATE_CO
SAP note 625613中对该BAPI的使用方式有详细介绍#xff0c;使用时可进行参考。
年度预算#xff1a;e_gjahr传值、e_ges置空#xff…KO22可以为内部订单预先维护预算以便在后续成本实际产生时进行控制。 使用BAPI进行创建KBPP_EXTERN_UPDATE_CO
SAP note 625613中对该BAPI的使用方式有详细介绍使用时可进行参考。
年度预算e_gjahr传值、e_ges置空
总预算e_gjahr置空、e_ges为X。
实际使用过程中发现有一种情况用该BAPI更新不了即在分配预算之前该订单就已经产生成本这种时候前台可以正常保存但BAPI无法直接更新成功debug无果后决定使用BDC来进行实现如果有人知道通过BAPI怎么处理这种情况可以评论分享下。
DATA:lt_bpak TYPE bpak_tab,ls_bpak TYPE bpak,lt_return TYPE bapiret2_t,ls_return TYPE bapiret2.年度预算
ls_bpak-e_objnr us_item-objnr.
ls_bpak-e_gjahr us_item-gjahr.
ls_bpak-wert us_item-wtjhr.
ls_bpak-twaer us_item-twaer.
ls_bpak-e_versn .
APPEND ls_bpak TO lt_bpak.
CLEAR ls_bpak.总预算
ls_bpak-e_objnr us_item-objnr.
ls_bpak-wert us_item-wtges.
ls_bpak-twaer us_item-twaer.
ls_bpak-e_ges X.
ls_bpak-e_versn .
APPEND ls_bpak TO lt_bpak.
CLEAR ls_bpak.* 预算更新CALL FUNCTION KBPP_EXTERN_UPDATE_COEXPORTINGi_budget_activity KBUD
* I_BUDGET_ACTIV_SUP_RET
* I_BUDGET_DISTRIBUTION_ALLOWED
* I_COMMIT_DATA
* I_DELTA_AMOUNTS X
* I_ROLLUP_DATA X
* I_CHECK_PLAN_DATA X
* I_APPLICATION i_commit_all X
* IMPORTING
* E_ERRORS_FOUND TABLESit_bpak lt_bpakit_return lt_returnEXCEPTIONSno_update 1OTHERS 2.
使用BDC进行创建
使用SHDB进行录屏BDC的使用方法网上太多帖子了这里只分享下使用BDC过程中碰到的几个问题
问题1
在初次登陆系统时进入该事务代码时会出现这个弹窗让用户选择控制范围输入过之后后续再次进入该事务代码这个弹窗就不会出现了这也是使用BDC时需要注意到的点这个弹窗也需要录进去但是程序应该根据什么逻辑来决定是否需要弹窗这段录屏代码呢
理论上SAP大多数类似的标准功能都是相同的逻辑都是点选了对应的值之后使用SET PARAMER ID XXX FIELD VALUE来将用户选择的值保存到SAP SESSION中后面每次进入事务码时使用GET PARAMER ID XXX FIELD VALUE来进行获取如果获取到就不会出现这个弹窗所以我们在录屏的代码中加上对应的判断即可。 在弹窗输入框中摁下F1即可快速找到该字段对应的Parameter ID。 问题2 使用BDC时有时候一些前台的报错日志不会返回到messtab中例如下图这种报错。 解决思路就是在前台点保存之后/H进行debug一步一步跟踪看标准代码是怎么进行处理的以我这个前台报错为例最终定位到程序在CHECK_ALL子例程中进行所有检查逻辑在CHECK_LIST中将错误信息进行转换并且收集到内表 (SAPLSMSG)XMESG[] 中再以弹窗形式输出但是前台执行和BDC执行时有些地方有不太一样。 在CHECK_ALL的子例程中检查发生在函数KBPT_CHECK_BUDGET_PLAN中前台执行后如果有错误信息不会执行446行的E类型消息但BDC后台调用会执行该语句E类型的消息会直接终止掉程序所以后续的CHECK_LIST中收集错误的逻辑就没有办法去执行程序中自然也无法获取到错误消息。 后来进一步调试发现消息的收集和显示是在CHECK_LIST里面的一个函数KBPT_ERROR_LOG中完成参数MOVE_MESS决定了是否出现弹窗。 所以想要程序中捕获到这个错误信息就需要在message E 类型语句之前把对应的错误消息收集到并抛给程序最终发现只有一个位置可以用来做这件事就是在SET_ERROR_MARK中做隐式增强来进行数据抛出。 因为后续的message E语句会终止掉internal session导致调用程序中无法获取到该session中的任何数据所以只能通过EXPORT TO DATABASE的方式来共享数据。 以上即可拿到跟前台一样的错误日志数据。
KO22的BDC参考代码
*---------------------------------------------------------------------*
* Form FRM_BDC_CONTRACT_MAINTAIN
*---------------------------------------------------------------------*
* Using BDC to create contract
*---------------------------------------------------------------------*
FORM frm_bdc_contract_maintain USING ut_item TYPE zprfitintordbudget_item_inCHANGING cs_resp TYPE zprbcsrest_out.DATA:lv_kokrs TYPE tka01-kokrs,lt_index TYPE STANDARD TABLE OF string,lv_tabix TYPE n LENGTH 2,lv_year TYPE n LENGTH 4,lv_bdc_field TYPE string,lv_bdc_value_i TYPE i,lv_bdc_value_c TYPE string,lv_errmsg TYPE string,lv_objnr TYPE bp_objekt.* BDC Error logDATA:lt_mesg TYPE STANDARD TABLE OF mesg,lt_xmesg TYPE STANDARD TABLE OF smesgx.CONSTANTS:lc_wert1 TYPE string VALUE BPDY-WERT1,lc_left_brackets TYPE char1 VALUE (,lc_right_brackets TYPE char1 VALUE ).* SPA/GPA-Parameter prüfenGET PARAMETER ID CAC FIELD lv_kokrs.lv_year sy-datlo0(4) - 1.APPEND TOTAL TO lt_index.DO 5 TIMES.APPEND lv_year TO lt_index.ADD 1 TO lv_year.ENDDO.IF lv_kokrs IS INITIAL.
* Select Controller AreaPERFORM frm_bdc_dynpro USING SAPLSPO4 0300.PERFORM frm_bdc_field USING BDC_CURSORSVALD-VALUE(01).PERFORM frm_bdc_field USING BDC_OKCODEFURT.PERFORM frm_bdc_field USING SVALD-VALUE(01)ZDPS.ENDIF.* Enter OrderREAD TABLE ut_item INTO DATA(us_item) INDEX 1.PERFORM frm_bdc_dynpro USING SAPMKBUD 0300.PERFORM frm_bdc_field USING BDC_CURSORCODIA-AUFNR.PERFORM frm_bdc_field USING BDC_OKCODE/00.PERFORM frm_bdc_field USING CODIA-AUFNRus_item-aufnr.PERFORM frm_bdc_dynpro USING SAPLKBPP 0320.PERFORM frm_bdc_field USING BDC_CURSORBPDY-WERT1(01).PERFORM frm_bdc_field USING BDC_OKCODEFULL.* Full amountPERFORM frm_bdc_dynpro USING SAPLKBPP 0220.PERFORM frm_bdc_field USING BDC_CURSORBPDY-WERT1(03).PERFORM frm_bdc_field USING BDC_OKCODEPOST.LOOP AT ut_item INTO us_item.READ TABLE lt_index TRANSPORTING NO FIELDSWITH KEY table_line us_item-gjahr.IF sy-subrc 0.lv_tabix sy-tabix.lv_bdc_field lc_wert1 lc_left_brackets lv_tabix lc_right_brackets.lv_bdc_value_i us_item-wtjhr.lv_bdc_value_c lv_bdc_value_i.CONDENSE lv_bdc_value_c NO-GAPS.* Year valuePERFORM frm_bdc_field USING lv_bdc_fieldlv_bdc_value_c.ENDIF.IF us_item-wtges IS NOT INITIAL..lv_bdc_value_i us_item-wtges.lv_bdc_value_c lv_bdc_value_i.CONDENSE lv_bdc_value_c NO-GAPS.* Total valuePERFORM frm_bdc_field USING BPDY-WERT1(01)lv_bdc_value_c.ENDIF.ENDLOOP.lv_objnr us_item-objnr.CALL FUNCTION ENQUEUE_EBPTR_EXEXPORTINGobjnr lv_objnrEXCEPTIONSforeign_lock 1system_failure 2OTHERS 3.IF sy-subrc 0.
* Implement suitable error handling herecs_resp-msgty E.MESSAGE ID sy-msgidTYPE sy-msgtyNUMBER sy-msgnoWITH sy-msgv1sy-msgv2sy-msgv3sy-msgv4INTO cs_resp-msgtx.RETURN.ELSE.CALL FUNCTION DEQUEUE_EBPTR_EXEXPORTINGobjnr lv_objnr.ENDIF.TRY.CALL TRANSACTION KO22 WITH AUTHORITY-CHECK USING bdcdataMODE NUPDATE SMESSAGES INTO messtab.LOOP AT messtab INTO DATA(ls_messtab) WHERE msgtyp CA EAX.cs_resp-msgty E.EXIT.ENDLOOP.IF sy-subrc 0.cs_resp-msgty S.MESSAGE ID sy-msgidTYPE sy-msgtyNUMBER sy-msgnoWITH sy-msgv1sy-msgv2sy-msgv3sy-msgv4INTO cs_resp-msgtx.ELSE.IMPORT zprerrlog lt_xmesg FROM DATABASE indx(pr) ID ZPRMEMORY_KO22.DELETE FROM DATABASE indx(pr) ID ZPRMEMORY_KO22.LOOP AT lt_xmesg INTO DATA(ls_xmesg).MESSAGE ID ls_xmesg-arbgbTYPE ENUMBER ls_xmesg-txtnrWITH ls_xmesg-msgv1ls_xmesg-msgv2ls_xmesg-msgv3ls_xmesg-msgv4INTO lv_errmsg.CONCATENATE cs_resp-msgtx | lv_errmsg INTO cs_resp-msgtx.ENDLOOP.cs_resp-msgtx shift_left( val cs_resp-msgtx sub | ).ENDIF.CATCH cx_sy_authorization_error INTO DATA(lx_auth_check).
* Authorization missing for user when executing transactionDATA(lv_auth_check_text) lx_auth_check-get_text( ).cs_resp-msgty E.cs_resp-msgtx lv_auth_check_text.ENDTRY.CLEAR:bdcdata,bdcdata[],messtab,messtab[],lt_mesg.FREE:bdcdata[],messtab[].
ENDFORM.
文章转载自: http://www.morning.bccls.cn.gov.cn.bccls.cn http://www.morning.qswws.cn.gov.cn.qswws.cn http://www.morning.gfkb.cn.gov.cn.gfkb.cn http://www.morning.nbrdx.cn.gov.cn.nbrdx.cn http://www.morning.llyjx.cn.gov.cn.llyjx.cn http://www.morning.trqsm.cn.gov.cn.trqsm.cn http://www.morning.mbrbg.cn.gov.cn.mbrbg.cn http://www.morning.xckqs.cn.gov.cn.xckqs.cn http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn http://www.morning.kjyhh.cn.gov.cn.kjyhh.cn http://www.morning.coatingonline.com.cn.gov.cn.coatingonline.com.cn http://www.morning.pzcqz.cn.gov.cn.pzcqz.cn http://www.morning.wjhdn.cn.gov.cn.wjhdn.cn http://www.morning.kqzrt.cn.gov.cn.kqzrt.cn http://www.morning.nhrkc.cn.gov.cn.nhrkc.cn http://www.morning.mnwmj.cn.gov.cn.mnwmj.cn http://www.morning.bpmnh.cn.gov.cn.bpmnh.cn http://www.morning.kpmxn.cn.gov.cn.kpmxn.cn http://www.morning.rlcqx.cn.gov.cn.rlcqx.cn http://www.morning.hxljc.cn.gov.cn.hxljc.cn http://www.morning.lnbyk.cn.gov.cn.lnbyk.cn http://www.morning.drswd.cn.gov.cn.drswd.cn http://www.morning.fqpgf.cn.gov.cn.fqpgf.cn http://www.morning.fxpyt.cn.gov.cn.fxpyt.cn http://www.morning.chzbq.cn.gov.cn.chzbq.cn http://www.morning.yrycb.cn.gov.cn.yrycb.cn http://www.morning.dbxss.cn.gov.cn.dbxss.cn http://www.morning.bhqlj.cn.gov.cn.bhqlj.cn http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn http://www.morning.nbqwr.cn.gov.cn.nbqwr.cn http://www.morning.nzfyx.cn.gov.cn.nzfyx.cn http://www.morning.dmrjx.cn.gov.cn.dmrjx.cn http://www.morning.rswfj.cn.gov.cn.rswfj.cn http://www.morning.rwpjq.cn.gov.cn.rwpjq.cn http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn http://www.morning.rmrcc.cn.gov.cn.rmrcc.cn http://www.morning.aowuu.com.gov.cn.aowuu.com http://www.morning.snygg.cn.gov.cn.snygg.cn http://www.morning.jmnfh.cn.gov.cn.jmnfh.cn http://www.morning.srhqm.cn.gov.cn.srhqm.cn http://www.morning.btpzn.cn.gov.cn.btpzn.cn http://www.morning.bcngs.cn.gov.cn.bcngs.cn http://www.morning.jypqx.cn.gov.cn.jypqx.cn http://www.morning.gjqnn.cn.gov.cn.gjqnn.cn http://www.morning.smnxr.cn.gov.cn.smnxr.cn http://www.morning.rttp.cn.gov.cn.rttp.cn http://www.morning.xhklb.cn.gov.cn.xhklb.cn http://www.morning.fsfz.cn.gov.cn.fsfz.cn http://www.morning.gstg.cn.gov.cn.gstg.cn http://www.morning.hkswt.cn.gov.cn.hkswt.cn http://www.morning.sgcdr.com.gov.cn.sgcdr.com http://www.morning.jwsrp.cn.gov.cn.jwsrp.cn http://www.morning.bydpr.cn.gov.cn.bydpr.cn http://www.morning.wmfny.cn.gov.cn.wmfny.cn http://www.morning.kyfnh.cn.gov.cn.kyfnh.cn http://www.morning.guangda11.cn.gov.cn.guangda11.cn http://www.morning.gwjsm.cn.gov.cn.gwjsm.cn http://www.morning.zgdnd.cn.gov.cn.zgdnd.cn http://www.morning.srkqs.cn.gov.cn.srkqs.cn http://www.morning.nqdkx.cn.gov.cn.nqdkx.cn http://www.morning.bndkf.cn.gov.cn.bndkf.cn http://www.morning.dwyyf.cn.gov.cn.dwyyf.cn http://www.morning.gbfzy.cn.gov.cn.gbfzy.cn http://www.morning.fhqdb.cn.gov.cn.fhqdb.cn http://www.morning.hxwrs.cn.gov.cn.hxwrs.cn http://www.morning.wjqbr.cn.gov.cn.wjqbr.cn http://www.morning.mlffg.cn.gov.cn.mlffg.cn http://www.morning.rybr.cn.gov.cn.rybr.cn http://www.morning.tnjz.cn.gov.cn.tnjz.cn http://www.morning.xjmyq.com.gov.cn.xjmyq.com http://www.morning.fkyqm.cn.gov.cn.fkyqm.cn http://www.morning.rdlrm.cn.gov.cn.rdlrm.cn http://www.morning.hlkxb.cn.gov.cn.hlkxb.cn http://www.morning.pumali.com.gov.cn.pumali.com http://www.morning.gnwse.com.gov.cn.gnwse.com http://www.morning.tfkqc.cn.gov.cn.tfkqc.cn http://www.morning.zdsdn.cn.gov.cn.zdsdn.cn http://www.morning.dgsr.cn.gov.cn.dgsr.cn http://www.morning.xphcg.cn.gov.cn.xphcg.cn http://www.morning.wsxxq.cn.gov.cn.wsxxq.cn