点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,专家
我需要在并行处理模式下使用BAPI_PLANNEDORDER_CREATE的帮助。
通话后我可以看到计划的订单号,但是提交无法正常工作。
请帮忙。
调用功能'BAPI_PLANNEDORDER_CREATE'
开始新任务lv_task
目标'NONE'
在任务结束时执行set_function1_done
***************************************************
*************************************************** *************************
*类型和类型池*
************ ****************************************************** **********
类型:ty_data的开始,
pasch像t460c-pasch,"计划订单类型
plscn像plaf-plscn,"计划版本
matnr像plaf -matnr,"计划材料
plwrk LIKE plaf-plwrk,"计划工厂
pwwrk LIKE plaf-pwwrk,"计划订单的生产工厂
gsmng LIKE plaf-gsmng,"计划总订单量
avmng LIKE plaf-avmng,"固定数量的生产废料
psttr LIKE plaf-psttr,"计划开始的订单开始日期
pedtr LIKE plaf-pedtr,"计划的订单结束日期
pertr LIKE plaf-pertr,"计划订单的计划开业日期
umskz LIKE plaf-umskz,"计划订单的转换指标
auffx LIKE plaf-auffx,"计划订单数据的固化指标
verid LIKE plaf- verid,"生产版本
term1类似于tcx00-term1。" 提前期调度
类型:ty_data的结尾。
类型:ty_log的开头,
description(300),
错误。
类型:ty_log的结尾。
< br>类型:ty_pv_data的开始,
matnr像mkal-matnr,
werks像mkal-werks,
verid像mkal-verid,
bdatu像mkal-bdatu,
adatu像mkal -adatu,
mksp,类似于mkal-mksp,
ty_pv_data的结尾。
类型:tyt_pv_data ty_pv_data的类型表。
******** ****************************************************** ************
*常量*
***************************** ***********************************************
常量:c_x值 'X',
c_i值'I',
c_bt(2)值'BT',
c_sep值'-',
c_s值'S',
c_e值'E ',
c_61(2)值'61',
c_010(3)值'010',
c_1像mkal-mksp值'1',
完成值'X'。 >
*********************************************** *********************************
*内部表*
*********** ************************************************** ****************
数据:
与HEADER LINE相似的HEADERDATA BAPIPLAF_I1 OCCURS 0,与
HEADER LINE相似的api_headerdata LIKE bapiplaf_i1 OCCURS 0与HEADER LINE相似,
pit_headerdata bapiplaf_i1出现0,并且带有标题行,
"带有标题行的it_data类型标准表ty_data,
""带有标题行的ty_data类型标准表ty_data,
pit_data类型zdata,
it_log类型标准表 带有标题行的ty_log。
"带有标题行的ty_log类型标准表。
********************** ******************************************************
*数据声明*
******************************************** ************************************
范围:r_qa_valid FOR sy-datum,
r_pv_valid FOR sy- 基准面。
数据:wa_headerdata类似于bapiplaf_i1,
lt_return类似于bapireturn1的带有表头行的表,
lt_commit_return类似于bapiret2的带有表头线的表,
l_plannedorder类似于bapi_pld l_qty_aux(17),
lv_task TYPE char10,< br> functioncall1类型char10。
数据:lt_comdata与带有标题行的bapi_pldordcomp_i1类似表。
*为Bapi
准备标题数据,将其循环到it_data到pit_data中。
清除pit_headerdata。
*转换物料编号
调用功能'CONVERSION_EXIT_ALPHA_INPUT'
导出
输入= pit_data-matnr
导入
输出= pit_headerdata-material。
< br> pit_headerdata-pldord_profile = pit_data-pasch。
pit_headerdata-plng_scenario_lt = pit_data-plscn。
pit_headerdata-plan_plant = pit_data-plwrk。
pit_headerdata-prod_plant = pit_to-plt
pit_headerdata-fixed_scrap_qty = pit_data-avmng。
pit_headerdata-order_start_date = pit_data-psttr。
pit_headerdata-order_fin_date = pit_data-pedtr。
pit_headerdata = tr。 > pit_headerdata-conversion_ind = pit_data-umskz。
pit_headerdata-firming_ind = pit_data-auffx。
pit_headerdata-version = pit_data -verid。
pit_headerdata-det_schedule = pit_data-term1。
pit_headerdata-STGE_LOC = pit_data-lgort。
pit_headerdata-MRP_AREA = pit_data-berid。
pit_headerdata-USE_COLL_UPD。
APPEND pit_headerdata。
ENDLOOP。
循环AT pit_headerdata INTO wa_headerdata。
* wa_headerdata-USE_COLL_UPD ='X'。
*
* at LAST。
* wa_headerdata-LAST_ORDER ='X'。
* ENDAT。
刷新lt_comdata。
清除lt_comdata。
l_qty_aux = wa_headerdata-total_plord_qty。
"将wa_headerdata-material移动到lt_comdata-material。
APPEND lt_comdata。
lv_task = sy-tabix。
*创建计划订单
通话功能'BAPI_PLANNEDORDER_CREATE'< br>开始新任务lv_task
" FUNC1'
目标'NONE'
在任务结束时执行set_function1_done
EXPORTING
headerdata = wa_headerdata
*导入< br> *返回= lt_return
*计划订单= l_plannedorder
表格
componentsdata = COMPONENTSDATA。
*记录 eive剩余的异步答复
等到functioncall1 =完成。
IF lt_return-type ne c_e。
" lt_return-type = c_s或lt_return-type ='I'。
*如果创建成功运行,则commit
CALL FUNCTION'BAPI_TRANSACTION_COMMIT'
IMPORTING
return = lt_commit_return。
CALL FUNCTION'DEQUEUE_ALL'。
。
*准备 日志
清除:pit_log。
CONCATENATE:
" lt_return-message c_sep text-007
" wa_headerdata-material c_sep text-008
" wa_headerdata-plan_plant c_sep text-009
" l_qty_aux
l_plannedorder'成功创建'
INTO pit_log-描述按空格分隔。
追加pit_log。
ELSE。
清除:pit_log。
CONCATENATE text-007 wa_headerdata-material c_sep text-008
wa_headerdata-plan_plant c_sep text-009 l_qty_aux
text-010 lt_return-message
插入到pit_log-描述中,用空格分隔。
将c_x移动到pit_log-err。
APPEND pit_log。
ENDIF。
清除wa_headerdata。
ENDLOOP。
>
嗨,阿米特,
尝试以这种方式工作
1。 创建一个附加了RFC选项的新功能模块( sap-se37-z-rfc.png ) 然后像下面这样打电话。
通话功能'Z_NEW_RFC'
开始新任务...
目的地空间
...
表格
it_headerdata = ...
...
2。 在新的RFC中调用BAPI_PLANNEDORDER_CREATE ...
呼叫功能'BAPI_PLANNEDORDER_CREATE'
导出
headerdata = ...
导入
return = ...
计划订单= ...
表格
componentsdata = ...
...
* BAPI成功返回
WAIT ='X'的呼叫功能'BAPI_TRANSACTION_COMMIT'。
...
此致
嗨,阿米特,你明白了吗?
如果相应的连接(sm59)正常运行,则建议向SAP BASIS解释此问题。
SAP BASIS可以查看相应的RFC和工作流程配置文件参数。
示例:SAP事务RSPFPAR( rfc-profile-parameter.png )。
此致
我认为您的提交正在影响报表LUW,而不是并行模式启动了BAPI。
检查文档 https://help.sap.com/doc/abapdocu_751_index_htm/ 7.51/zh-CN/abapcall_function_starting.htm
您可以看到DESTINATION插件创建了一个新的Session/LUW,这里是有意义的部分
尝试将两个BAPI(创建一个和提交一个)包装到Z. RFC函数中,并在并行任务中调用它。
正如我在原始答案中所说的,BAPI_PLANNEDORDER_CREATE 和BAPI_TRANSACTION_COMMIT必须位于同一LUW中,您不能在并行任务中调用BAPI_PLANNEDORDER_CREATE,而在主流程中不能具有BAPI_TRANSACTION_COMMIT。
或者您在JAVA端并行化Z..RFC调用,或者在第二个Z..RFC中同时包含两个BAPI,因此在主Z ...中,您可以在并行任务中调用第二个Z...。/p>
我很好奇您要创建多少个"大量"数据的计划订单。
通话功能'BAPI_TRANSACTION_COMMIT'
导出< br> WAIT ='X'
BAPI提交使用"等待"选项。
添加wait ='X'无效。
一周热门 更多>