使用BAPI_SHIPMENT_CHANGE更新装运阶段时出现问题

2020-09-13 06:26发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我需要在"执行结束"日期和时间选项卡中更新装运的阶段。

对于此问题,我正在使用bapi BAPI_SHIPMENT_CHANGE,如下所示:

gv_shp_hdr-shipment_num = l_vttk-tknum。
gv_hdract-shipment_num ='X'。
gv_hdract-status_shpmnt_end ='C'。
gv_shp_hdr-status_shpmnt_end ='X'。

选择*
从vttp
插入表li_vttp
tknum = p_tknum
AND vbeln = p_vbeln。

*搜索货运的阶段(
刷新:li_vtts。
从vtts中选择*

到表li_vtts
中,tknum = p_tknum。

在li_vttp处循环播放。
从vtsp中选择*

附加表li_vtsp
其中tknum = p_tknum
和tpnum = li_vttp-tpnum。

在li_vtsp处循环播放。
l_st_dline-stage_seq = li_vtsp-tsnum。
l_st_dline-time_type ='STLENADT'。
l_st_dline-time_stamp_utc = l_time_utc ..
l_st_dline-时区=。
附加l_st_dline到it_stagedeadline。
l_st_act-stage_seq ='C'。
l_st_act-time_type ='C'。
l_st_act-time_stamp_utc ='C'。
l_st_act-time_zone ='C '。
将l_st_act附加到it_stagedeadlineaction。
使用键tsnum = li_vtsp-tsnum读取表li_vtts。
如果sy-subrc =0。
l_st_data-stage_cat = li_vtts-tstyp。
l_st_data- org_addr = li_vtts-adrna。
l_st_data-org_point = li_vtts-knota。
l_st_data-org_shipp_dpmnt = li_vtts-vstel。
l_st_data-org_plant = li_vtts-werka。
l_st_data =
l_st_data-org_suppl = li_vtts-lifna。
ENDIF。
l_st_data-stage_seq = li_vtsp-tsnum。
APPEND l_st_data到it_stagedata。
l_st_data_act-stage_cat ='C'。
-stage_seq ='X'。
附加l_st_data_act至it_stagedataaction。
ENDLOOP。

ENDLOOP。

[....]

调用功能'BAPI_SHIPMENT_CHANGE'
导出
headerdata = gv_shp_hdr
headerdataaction = gv_hdract
表格
* headerdeadline = it_shp_hdr_dline
* headerdeadlineaction = it_hdr_dline_action > * ITEMDATAACTION =
stagedata = it_stagedata
stagedataaction = it_stagedataaction
stagedeadline = it_stagedeadline
stagedeadlineaction = it_stagedeadlineaction
return = it_logfile。

此时我在一个包含LV56I_BAPIF03的转储中,格式为FILL_STG_DATA_CHANGE:

循环到it_stg_dline_action,并放入ls_stg_dline_action
,其中stage_seq = is_stg-stage_seq
AND time_type = gc_chg_delete。

此时,IT_STG_DLINE_ACTION是这样的:

但是SAP试图在内部表中以IS_STG-STAGE_SEG ='0001'(字段为Numc4)查找某些内容。

所以我得到了这个转储:

无法将" C"解释为数字。

我知道C不是数字,但是IT_STG_DLINE_ACTION-STAGE_SEQ类型仅允许A/C/D。

我不知道如何解决这个问题。 有什么建议吗?

提前谢谢!

玛丽亚

(62.9 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我需要在"执行结束"日期和时间选项卡中更新装运的阶段。

对于此问题,我正在使用bapi BAPI_SHIPMENT_CHANGE,如下所示:

gv_shp_hdr-shipment_num = l_vttk-tknum。
gv_hdract-shipment_num ='X'。
gv_hdract-status_shpmnt_end ='C'。
gv_shp_hdr-status_shpmnt_end ='X'。

选择*
从vttp
插入表li_vttp
tknum = p_tknum
AND vbeln = p_vbeln。

*搜索货运的阶段(
刷新:li_vtts。
从vtts中选择*

到表li_vtts
中,tknum = p_tknum。

在li_vttp处循环播放。
从vtsp中选择*

附加表li_vtsp
其中tknum = p_tknum
和tpnum = li_vttp-tpnum。

在li_vtsp处循环播放。
l_st_dline-stage_seq = li_vtsp-tsnum。
l_st_dline-time_type ='STLENADT'。
l_st_dline-time_stamp_utc = l_time_utc ..
l_st_dline-时区=。
附加l_st_dline到it_stagedeadline。
l_st_act-stage_seq ='C'。
l_st_act-time_type ='C'。
l_st_act-time_stamp_utc ='C'。
l_st_act-time_zone ='C '。
将l_st_act附加到it_stagedeadlineaction。
使用键tsnum = li_vtsp-tsnum读取表li_vtts。
如果sy-subrc =0。
l_st_data-stage_cat = li_vtts-tstyp。
l_st_data- org_addr = li_vtts-adrna。
l_st_data-org_point = li_vtts-knota。
l_st_data-org_shipp_dpmnt = li_vtts-vstel。
l_st_data-org_plant = li_vtts-werka。
l_st_data =
l_st_data-org_suppl = li_vtts-lifna。
ENDIF。
l_st_data-stage_seq = li_vtsp-tsnum。
APPEND l_st_data到it_stagedata。
l_st_data_act-stage_cat ='C'。
-stage_seq ='X'。
附加l_st_data_act至it_stagedataaction。
ENDLOOP。

ENDLOOP。

[....]

调用功能'BAPI_SHIPMENT_CHANGE'
导出
headerdata = gv_shp_hdr
headerdataaction = gv_hdract
表格
* headerdeadline = it_shp_hdr_dline
* headerdeadlineaction = it_hdr_dline_action > * ITEMDATAACTION =
stagedata = it_stagedata
stagedataaction = it_stagedataaction
stagedeadline = it_stagedeadline
stagedeadlineaction = it_stagedeadlineaction
return = it_logfile。

此时我在一个包含LV56I_BAPIF03的转储中,格式为FILL_STG_DATA_CHANGE:

循环到it_stg_dline_action,并放入ls_stg_dline_action
,其中stage_seq = is_stg-stage_seq
AND time_type = gc_chg_delete。

此时,IT_STG_DLINE_ACTION是这样的:

但是SAP试图在内部表中以IS_STG-STAGE_SEG ='0001'(字段为Numc4)查找某些内容。

所以我得到了这个转储:

无法将" C"解释为数字。

我知道C不是数字,但是IT_STG_DLINE_ACTION-STAGE_SEQ类型仅允许A/C/D。

我不知道如何解决这个问题。 有什么建议吗?

提前谢谢!

玛丽亚

(62.9 kB)
付费偷看设置
发送
3条回答
落灬小鱼
1楼-- · 2020-09-13 06:32

嗨,玛丽亚,

是的,错误是正确的:如何将Stage数据与Stage Action关联起来?

通过Stage_seq,它标识了阶段项(值vtsp-tsnum):您传递了'C'

 l_st_act-stage_seq ='C'。  " <<<<<<<<<错误的行
 l_st_act-time_type ='C'。
 l_st_act-time_stamp_utc ='C'。
 l_st_act-time_zone ='C'。
 附加l_st_act到it_stagedeadlineaction。


用错误的行替换

 l_st_act-stage_seq = li_vtsp-tsnum。
shere_lin
2楼-- · 2020-09-13 06:46

Simone为您提供了正确的答案,在BAPI调用中,始终有用于数据的结构(或表)和用于指示应更新数据的标志的结构(或表)。 这允许在需要时使用空值进行更新。 因此,您必须将数据放在第一个数据中,并在第二个数据中标记" X"。

在使用BAPI一段时间后,这将成为一种反射,并且您将不再搜索;- )

槿木_熙
3楼-- · 2020-09-13 06:31

谢谢Simone !! 我会试试看。

现在我正在尝试FM RV_SHIPMENT_UPDATE而不是BAPI_SHIPMENT_CHANGE,因为它似乎更易于使用...

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答