点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, ...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, ...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我在工作流程中遇到信息类型更新的问题。
我实现了用于分配给工作流程任务的类方法,在该方法中,我使用了'HR_INFOTYPE_OPERATION'Fm更新信息类型。
请检查下面所附的代码。
问题是当我直接执行类方法时,信息类型已正确更新
但是当我运行整个工作流程周期时,只有内部表'it_item'的第一条记录
正在更新。
我已经尝试了所有可能的方法来实现它
*添加一些等待时间
*在方法中使用提交报告
*在方法等中使用呼叫事务。
我错过了什么吗?
请帮助我解决此问题。
-先谢谢
Sundeep。
数据:infty TYPE prelp-infty, 编号TYPE p0001-pernr, 子类型TYPE p0001-subty, objectid TYPE p0001-objps, 锁定指示器TYPE p0001-sprps, Validend TYPE TYPE p0001-endda, 有效性从TYPE p0001-begda开始, 记录号TYPE p0001-seqnr, TYPE pspar-actio操作, tclas TYPE pspar-tclas, dialog_mode TYPE c, nocommit TYPE bapi_stand-no_commit, view_identifier TYPE p0003-viekn, lw_return TYPE bapireturn1, 返回TYPE bapireturn1, lw_key TYPE bapipakey。 数据:zhcmt066a的lt_item类型表, ls_item TYPE zhcmt066a, wa_item TYPE zhcmt066a, zhcmt066a的it_item类型表, ls_pa2006 TYPE p2006, lv_lines TYPE sy-index, req_id类型zhcmt066-req_id。 呼叫方法me-> get_request 出口 im_req = im_req 输入 请求=请求。 req_id = im_req。 如果request-app_level ='FA'。 "检查批准级别 选择*从zhcmt066a 进入表lt_item 在哪里req_id = req_id AND认可='M'。 如果sy-subrc = 0。 循环至lt_item INTO ls_item。 读取表it_item使用键req_date = ls_item-req_date进入wa_item。 如果sy-subrc = 0。 wa_item-rec_hrs = wa_item-rec_hrs + ls_item-rec_hrs。 从wa_item索引sy-tabix TRANSPORTING rec_hrs修改it_item。 其他。 将ls_item附加到it_item。 万一。 清除:ls_item,wa_item。 结局。 *使用所有选定记录更新信息类型 循环到it_item INTO wa_item。 ls_pa2006-pernr =请求-pernr。 ls_pa2006-subty ='10'。 ls_pa2006-endda = wa_item-req_date。 ls_pa2006-begda = wa_item-req_date。 ls_pa2006-anzhl = wa_item-rec_hrs。 通话功能'BAPI_EMPLOYEE_ENQUEUE' 出口 数字= request-pernr 输入 返回=返回。
如果返回是初始的。 infty ='2006'。 数字= request-pernr。 子类型=" 10"。 operation ='INS'。 lockindicator ='X'。 有效性结束= wa_item-req_date。 有效性开始= wa_item-req_date。 通话功能" HR_INFOTYPE_OPERATION" 出口 infty ='2006' 数字=数字 亚型=亚型 objectid =对象ID lockindicator =锁定指示器 有效性结束=有效性结束 有效性开始=有效性开始 记录= ls_pa2006 操作=操作 tclas ='A' dialog_mode ='0' 输入 返回= lw_return 键= lw_key。 如果lw_return-id ='E'并且lw_return不是INITIAL。 消息ID return-id TYPE return-type NUMBER return-number 使用return-message_v1 return-message_v2 return-message_v3 return-message_v4。 ELSEIF lw_return是INITIAL。 提交工作。 等待最多2秒。 万一。 ELSEIF return-id ='E'并且返回不是初始的。 消息ID return-id TYPE return-type NUMBER return-number 使用return-message_v1 return-message_v2 return-message_v3 return-message_v4。 万一。 通话功能'BAPI_EMPLOYEE_DEQUEUE' 出口 数字= request-pernr 输入 return =返回。 清除:infty,wa_item,ls_pa2006,return,lw_return,子类型,
操作,锁定指示符,validityend,validationbegin。 结局。 万一。 ENDIF。
Hello Raymond,
感谢您的回应,我根据自己和Egor Malov的建议对代码进行了必要的更正,以进行更新。 我为l_return(HR_INFOTYPE_OPERATION的返回参数)添加了一些其他检查,并在ENDLOOP之前清除了所有返回参数和一些输入变量。
但是问题没有解决。 请指导我。
一周热门 更多>