BAPI_SALESORDER_CHANGE(如何更改拒绝原因)?

2020-09-02 06:54发布

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

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


嗨,

我正在使用FM" BAPI_SALESORDER_CHANGE"更改项目级别的拒绝原因。 当我运行以下代码时,它不会更改项目级别的拒绝原因。

报告ZSOCCLOSE。

数据:类似于BAPISDH1X的st_BAPISDH1X,

it_BAPIRET2类型BAPIRET2发生0,

it_BAPISDITMX类型BAPISDITMX OCCURS 0,

wa_BAPISDITMX类型BAPISDITMX,

it_BAPISDITM类型BAPISDITM OCCURS 0,

wa_BAPISDITM类型BAPISDITM。

st_BAPISDH1X-UPDATEFLAG ='U'。

wa_BAPISDITMX-ITM_NUMBER ='000100'。

wa_BAPISDITMX-UPDATEFLAG ='U'。

wa_BAPISDITMX-REASON_REJ ='X'。

APPEND wa_BAPISDITMX到它_BAPISDITMX。

wa_BAPISDITM-ITM_NUMBER ='000100'。

wa_BAPISDITM-REASON_REJ ='03'。

* wa_BAPISDITM-MATERIAL ='J5000032BLCK'。

* wa_BAPISDITM-PLANT ='1000'。

* wa_BAPISDITM-PROD_HIERA ='100012000330000003'。

将wa_BAPISDITM附加到它_BAPISDITM。

通话功能'BAPI_SALESORDER_CHANGE'

导出

SALESDOCUMENT ='0003000153'

  • ORDER_HEADER_IN =

ORDER_HEADER_INX = st_BAPISDH1X

  • 模拟=

  • BEHAVE_WHEN_ERROR =''

  • INT_NUMBER_ASSIGNMENT =''

  • LOGIC_SWITCH =

表格

RETURN = it_BAPIRET2

ORDER_ITEM_IN = it_BAPISDITM

ORDER_ITEM_INX = it_BAPISDITMX。

  • 合作伙伴=

  • PARTNERCHANGES =

  • 合作伙伴=

  • ORDER_CFGS_REF =

  • ORDER_CFGS_INST =

  • ORDER_CFGS_PART_OF =

  • ORDER_CFGS_VALUE =

  • ORDER_CFGS_BLOB =

  • ORDER_CFGS_VK =

  • ORDER_CFGS_REFINST =

  • SCHEDULE_LINES =

  • SCHEDULE_LINESX =

  • ORDER_TEXT =

  • ORDER_KEYS =

  • CONDITIONS_IN =

  • CONDITIONS_INX =

  • EXTENSIONIN =

谢谢

基山

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

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


嗨,

我正在使用FM" BAPI_SALESORDER_CHANGE"更改项目级别的拒绝原因。 当我运行以下代码时,它不会更改项目级别的拒绝原因。

报告ZSOCCLOSE。

数据:类似于BAPISDH1X的st_BAPISDH1X,

it_BAPIRET2类型BAPIRET2发生0,

it_BAPISDITMX类型BAPISDITMX OCCURS 0,

wa_BAPISDITMX类型BAPISDITMX,

it_BAPISDITM类型BAPISDITM OCCURS 0,

wa_BAPISDITM类型BAPISDITM。

st_BAPISDH1X-UPDATEFLAG ='U'。

wa_BAPISDITMX-ITM_NUMBER ='000100'。

wa_BAPISDITMX-UPDATEFLAG ='U'。

wa_BAPISDITMX-REASON_REJ ='X'。

APPEND wa_BAPISDITMX到它_BAPISDITMX。

wa_BAPISDITM-ITM_NUMBER ='000100'。

wa_BAPISDITM-REASON_REJ ='03'。

* wa_BAPISDITM-MATERIAL ='J5000032BLCK'。

* wa_BAPISDITM-PLANT ='1000'。

* wa_BAPISDITM-PROD_HIERA ='100012000330000003'。

将wa_BAPISDITM附加到它_BAPISDITM。

通话功能'BAPI_SALESORDER_CHANGE'

导出

SALESDOCUMENT ='0003000153'

  • ORDER_HEADER_IN =

ORDER_HEADER_INX = st_BAPISDH1X

  • 模拟=

  • BEHAVE_WHEN_ERROR =''

  • INT_NUMBER_ASSIGNMENT =''

  • LOGIC_SWITCH =

表格

RETURN = it_BAPIRET2

ORDER_ITEM_IN = it_BAPISDITM

ORDER_ITEM_INX = it_BAPISDITMX。

  • 合作伙伴=

  • PARTNERCHANGES =

  • 合作伙伴=

  • ORDER_CFGS_REF =

  • ORDER_CFGS_INST =

  • ORDER_CFGS_PART_OF =

  • ORDER_CFGS_VALUE =

  • ORDER_CFGS_BLOB =

  • ORDER_CFGS_VK =

  • ORDER_CFGS_REFINST =

  • SCHEDULE_LINES =

  • SCHEDULE_LINESX =

  • ORDER_TEXT =

  • ORDER_KEYS =

  • CONDITIONS_IN =

  • CONDITIONS_INX =

  • EXTENSIONIN =

谢谢

基山

付费偷看设置
发送
11条回答
太Q了
1楼 · 2020-09-02 07:21.采纳回答

检查wa_BAPISDITM-REASON_REJ是否在域级别关联任何转换出口?

aRs

shere_lin
2楼-- · 2020-09-02 07:28

Hello Geeks,

我正在使用此bapi来更新我的商品数量...。

但是bapi返回msg说tat它没有改变....

我想我可能犯了一些错误,请任何人都可以纠正它....

我在下面附加了我的代码...

*对于订单项

TYPES:开头为y_t_vbap,

vbeln TYPE vbeln_va,"销售文件

posnr TYPE posnr_va," SD文档的项目号

matnr TYPE matnr,"材料编号

zmeng TYPE dzmeng,"销售单位的目标数量

spart TYPE spart,"部门

消息TYPE BAPI_MSG,

  • kwmeng类型kwmeng,"累积订单数量

y_t_vbap结束。

TYPES:y_t_itemin TYPE bapisditm,

y_t_return TYPE bapiret2,

y_t_headerx TYPE bapisdh1x。

类型:y_t_logdata的开始

lno TYPE lineno," Lineno

字段TYPE字段名称,"字段名称

值类型lmon_fvalue,"字段值

消息类型bapi_msg,"消息

y_t_logdata的结尾。

*************************************************** **********************

  • 内部表声明

*************************************************** **********************

数据:" y_t_vbak的y_i_vbak类型标准表,

y_t_vbap的y_i_vbap类型标准表,

bapisdh1x的y_i_headerx类型标准表,

bapisditm的y_i_itemin类型标准表,

bapisditmx的y_i_iteminx类型标准表,

y_i_return y_t_return的类型标准表,

y_t_logdata的y_i_logdata类型标准表,

bapiret2的y_i_bapiret类型标准表。

*************************************************** **********************

  • 表类型声明

*************************************************** **********************

类型:y_t_vbap的y_tt_vbap类型标准表,

y_t_logdata的y_t_logdata类型标准表。

*************************************************** **********************

  • 工作区声明。

*************************************************** **********************

数据:y_wa_vbap类型y_t_vbap,

y_wa_itemin TYPE bapisditm,

y_wa_iteminx TYPE bapisditmx,

y_wa_headerx TYPE bapisdh1x,

y_wa_return类型y_t_return,

y_wa_logdata类型y_t_logdata,

y_wa_event类型slis_alv_event,

y_wa_event1类型slis_t_event,

y_wa_bapiret TYPE bapiret2。

*************************************************** **********************

  • 变量声明。

*************************************************** **********************

数据:y_i_event类型slis_t_event,

y_v_success TYPE i,"为了成功

y_v_error TYPE i,"对于错误

y_v_sno TYPE char30,

y_v_eno TYPE char30,

y_v_msg类型char100。 "错误消息

*************************************************** ***********************

  • 常量声明。

*************************************************** ************************

常量:y_k_x类型char1值'X',

y_k_u输入char1值'U',

y_k_e输入char1值'E'。

*************************************************** *************************

  • 选择屏幕布局

*************************************************** *************************

SELECTION-SCREEN:b1块的开头(带有框架标题text-001)。

选择屏幕:行的开头。

SELECTION-SCREEN:评论3(18)text-003。

参数:y_p_vbln类型vbak-vbeln强制。

选择屏幕:行尾。

选择屏幕:b1块的结尾。

*************************************************** *************************

  • 选择开始。

*************************************************** *************************

开始选择。

  • 写:text-002。

*************************************************** *************************

  • 选择结束。

*************************************************** *************************

选择结束。

SELECT vbeln

posnr

matnr

zmeng

斯巴达

来自vbap

插入表y_i_vbap

vbeln = y_p_vbln。

将y_i_vbap循环到y_wa_vbap。

y_wa_vbap-zmeng = 2 + y_wa_vbap-zmeng。

从y_wa_vbap索引sy-tabix修改y_i_vbap。

ENDLOOP。

使用y_i_vbap执行y_f_update。

&----


*&y_f_update表格

&----


  • 增加BAPI数据并运行BAPI

----


使用y_p_vbap类型y_tt_vbap形式y_f_update。

清除:y_i_headerx,y_i_iteminx,y_i_iteminx,

y_i_turn,y_i_bapiret。

刷新:y_i_itemin,y_i_iteminx,y_i_return和y_i_bapiret。

将y_i_vbap循环到y_wa_vbap。

将y_wa_vbap-zmeng移动到y_wa_itemin-target_qty。

将y_wa_vbap-posnr移动到y_wa_itemin-itm_number。

APPEND y_wa_itemin到y_i_itemin。

ENDLOOP。

*更新Bapi行程表

y_wa_headerx-updateflag = y_k_u。

APPEND y_wa_headerx到y_i_headerx。

将y_i_vbap循环到y_wa_vbap。

y_wa_iteminx-itm_number = y_wa_vbap-posnr。

y_wa_iteminx-target_qty = y_k_x。

y_wa_iteminx-updateflag = y_k_u。

APPEND y_wa_iteminx到y_i_iteminx。

ENDLOOP。

通话功能'BAPI_SALESORDER_CHANGE'

导出

salesdocument = y_wa_vbap-vbeln

order_header_inx = y_wa_headerx

表格

return = y_i_return

order_item_in = y_i_itemin

order_item_inx = y_i_iteminx。

调用功能'BAPI_TRANSACTION_COMMIT'。

清除y_i_vbap。

如果y_i_return不是初始值。

环回y_i_return INTO y_wa_return,其中TYPE = y_k_e。

将y_wa_return消息移至y_wa_vbap消息。

将y_wa_vbap附加到y_i_vbap。

y_v_success = y_v_success +1。

ENDLOOP。

ENDIF。

y_wa_event-name ='TOP_OF_PAGE'。

y_wa_event-form ='Y_FD_TOP_OF_LIST'。

APPEND y_wa_event到y_i_event。

清除y_wa_event。

通话功能'ALV_LIST_DISPLAY'

导出

i_callback_program = sy-repid

i_tabtypename1 ='Y_T_VBAP'

it_events1 = y_i_event []

表格

t_outtab1 = y_i_vbap []

例外情况

program_error = 1

maximum_of_appends_reached = 2

其他= 3。

IF sy-subrc <> 0。

消息ID sy-msgid类型'S'编号sy-msgno

与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

ENDFORM。 " y_f_vbap

&----


*&表格Y_FD_TOP_OF_LIST

&----


----


形成y_fd_top_of_list。

移动:y_v_success到y_v_sno,

y_v_error至y_v_eno。

CONCATENATE text-002 y_v_sno'/'y_v_eno INTO y_v_msg分隔符

空间。

压缩y_v_msg。

写/y_v_msg。

跳过1。

ENDFORM。 " Y_FD_TOP_OF_LIST

小灯塔
3楼-- · 2020-09-02 07:31

嗨,

做一件事...

转到VA02。给定销售订单号。

检查是否可以手动输入拒绝代码的原因

谢谢

Naren

软件心理学工程师
4楼-- · 2020-09-02 07:20

嗨,

在BAPI上有运气吗?

谢谢

kishan

宇峰Kouji
5楼-- · 2020-09-02 07:31

嗨,

您在返回的内部表中是否收到任何消息。

谢谢

纳仁

一周热门 更多>