2020-08-30 01:47发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 任何人都可以帮我如何在... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
任何人都可以帮我如何在BAPI_OUTB_DELIVERY_CHANGE的EXTENSION1和EXTENSION2中为zfields编码
谢谢
Nethaji。
我需要通过BAPI调用更改LIKP中的Z字段,并找到了该线程。
尽管最初的参与者可能已经找到了替代方法,但我希望这可以对其他寻求解决方案的人有所帮助。
这些是我在2013年的发现,如果我错了,请纠正我。 EXTENSION1和EXTENSION2不能用于更改LIKP Z字段。 这些本身不会做任何事情,但是可以导入到BADI IF_EX_SMOD_V50B0001〜EXIT_SAPLV50I_010(因此,在较早的版本中有相应的CMOD)。
但是,这里可用的数据是:
CS_VBKOK
CT_VBPOK
CT_VBSUPCON
EXTENSION1
EXTENSION2
因此,要更改传递标题,只能更改结构CS_VBKOK中的字段。 由于VBKOK没有任何客户附加,因此这是不可能的。 此外,BAPI BAPI_OUTB_DELIVERY_CHANGE始终仅调用WS_DELIVERY_UPDATE,因此BAPI无法对FM进行任何操作。 那么,EXTENSION1/EXTENSION2的目的是什么?
正如我所见,itu2019是一种将数据传输到BADI的便捷方法,因此您可以构建逻辑来操纵任何现有的CS_VBKOK字段。 无论如何,您可以通过内存导出/导入来完成相同的操作。
/END-BAD-NEWS
/BEGIN-GOOD-NEWS
经过反复试验,我设法使用BAPI_OUTB_DELIVERY_CHANGE更改LIKP中的Z字段。 通话之前,我将所需的内容导出到内存ID,然后导入到MV50AFZ1中,BAPI_OUTB_DELIVERY_CHANGE
请参见以下工作示例代码:
调用程序:
&----
*&报告ZTEST_BAPI_DELIVERY_CHANGE
*&
报告ztest_bapi_delivery_change。
数据:gs_bapiobdlvhdrchg类型bapiobdlvhdrchg。
数据:gs_bapiobdlvhdrctrlchg类型bapiobdlvhdrctrlchg。
数据:gs_bapidlvcontrol类型bapidlvcontrol。
data:gt_bapireturn类型的bapiret2标准表。
数据:gs_bapi返回类型为bapiret2。
数据:gs_likp类型likpvb。
数据:ld_zzhuload类型erlkz。
常量:gc_x(1)输入c值" X"。
参数:p_vbeln就像likp-vbeln。
获取相关的LIKP字段
从likp中选择*
进入gs_likp的相应字段
其中vbeln = p_vbeln。
endselect。
填充标题数据-转换为BAPI格式
调用函数" MAP2E_LIKPVB_TO_BAPIOBDLVHDRCH"
导出
likpvb = gs_likp
更改
bapiobdlvhdrchg = gs_bapiobdlvhdrchg。
设置为LIKP Z字段的字段
ld_zzhuload ='X'。
在MV50AFZ1中导入的Memory-ID
将ld_zzhuload导出到内存ID" ZZHULOAD"。
调用函数" BAPI_OUTB_DELIVERY_CHANGE"
header_data = gs_bapiobdlvhdrchg
header_control = gs_bapiobdlvhdrctrlchg
交付= gs_bapiobdlvhdrchg-deliv_numb
techn_control = gs_bapidlvcontrol
表格
return = gt_bapireturn
例外
communication_failure = 1
system_failure = 2
其他= 3。
如果gt_bapireturn []是初始的。
调用函数" BAPI_TRANSACTION_COMMIT"
等待= gc_x。
否则。
在gt_bapireturn循环到gs_bapireturn
其中type ='E'。
消息ID gs_bapireturn-id类型'S'
数字gs_bapireturn-number与
gs_bapireturn-message_v1
gs_bapireturn-message_v2
gs_bapireturn-message_v3
gs_bapireturn-message_v4。
退出。
结束循环。
endif。
MV50AFZ1,格式为USEREXIT_SAVE_DOCUMENT_PREPARE
如果xlikp-vbtyp ='J'"外向交货
和t180-trtyp ='V'。 "更改
从程序ZZZ导出的内存ID ...
从内存ID" ZZHULOAD"导入ld_zzhuload。
如果sy-subrc是初始的
而不是ld _zzhuload是初始的。
LOOP AT xlikp。
xlikp-zzhuload = ld_zzhuload。
修改xlikp运输zzhuload。
ENDLOOP。
免费的内存ID" ZZHULOAD"。
我希望有人会对此有所帮助。 显然,我对功能不承担任何责任
抱歉,格式不正确,标签无法正常工作..
最多设置5个标签!
我需要通过BAPI调用更改LIKP中的Z字段,并找到了该线程。
尽管最初的参与者可能已经找到了替代方法,但我希望这可以对其他寻求解决方案的人有所帮助。
这些是我在2013年的发现,如果我错了,请纠正我。 EXTENSION1和EXTENSION2不能用于更改LIKP Z字段。 这些本身不会做任何事情,但是可以导入到BADI IF_EX_SMOD_V50B0001〜EXIT_SAPLV50I_010(因此,在较早的版本中有相应的CMOD)。
但是,这里可用的数据是:
CS_VBKOK
CT_VBPOK
CT_VBSUPCON
EXTENSION1
EXTENSION2
因此,要更改传递标题,只能更改结构CS_VBKOK中的字段。 由于VBKOK没有任何客户附加,因此这是不可能的。 此外,BAPI BAPI_OUTB_DELIVERY_CHANGE始终仅调用WS_DELIVERY_UPDATE,因此BAPI无法对FM进行任何操作。 那么,EXTENSION1/EXTENSION2的目的是什么?
正如我所见,itu2019是一种将数据传输到BADI的便捷方法,因此您可以构建逻辑来操纵任何现有的CS_VBKOK字段。 无论如何,您可以通过内存导出/导入来完成相同的操作。
/END-BAD-NEWS
/BEGIN-GOOD-NEWS
经过反复试验,我设法使用BAPI_OUTB_DELIVERY_CHANGE更改LIKP中的Z字段。 通话之前,我将所需的内容导出到内存ID,然后导入到MV50AFZ1中,BAPI_OUTB_DELIVERY_CHANGE
请参见以下工作示例代码:
调用程序:
&----
*&报告ZTEST_BAPI_DELIVERY_CHANGE
*&
&----
*&
*&
&----
报告ztest_bapi_delivery_change。
数据:gs_bapiobdlvhdrchg类型bapiobdlvhdrchg。
数据:gs_bapiobdlvhdrctrlchg类型bapiobdlvhdrctrlchg。
数据:gs_bapidlvcontrol类型bapidlvcontrol。
data:gt_bapireturn类型的bapiret2标准表。
数据:gs_bapi返回类型为bapiret2。
数据:gs_likp类型likpvb。
数据:ld_zzhuload类型erlkz。
常量:gc_x(1)输入c值" X"。
参数:p_vbeln就像likp-vbeln。
获取相关的LIKP字段
从likp中选择*
进入gs_likp的相应字段
其中vbeln = p_vbeln。
endselect。
填充标题数据-转换为BAPI格式
调用函数" MAP2E_LIKPVB_TO_BAPIOBDLVHDRCH"
导出
likpvb = gs_likp
更改
bapiobdlvhdrchg = gs_bapiobdlvhdrchg。
设置为LIKP Z字段的字段
ld_zzhuload ='X'。
在MV50AFZ1中导入的Memory-ID
将ld_zzhuload导出到内存ID" ZZHULOAD"。
调用函数" BAPI_OUTB_DELIVERY_CHANGE"
导出
header_data = gs_bapiobdlvhdrchg
header_control = gs_bapiobdlvhdrctrlchg
交付= gs_bapiobdlvhdrchg-deliv_numb
techn_control = gs_bapidlvcontrol
表格
return = gt_bapireturn
例外
communication_failure = 1
system_failure = 2
其他= 3。
如果gt_bapireturn []是初始的。
调用函数" BAPI_TRANSACTION_COMMIT"
导出
等待= gc_x。
否则。
在gt_bapireturn循环到gs_bapireturn
其中type ='E'。
消息ID gs_bapireturn-id类型'S'
数字gs_bapireturn-number与
gs_bapireturn-message_v1
gs_bapireturn-message_v2
gs_bapireturn-message_v3
gs_bapireturn-message_v4。
退出。
结束循环。
endif。
MV50AFZ1,格式为USEREXIT_SAVE_DOCUMENT_PREPARE
数据:ld_zzhuload类型erlkz。
如果xlikp-vbtyp ='J'"外向交货
和t180-trtyp ='V'。 "更改
从程序ZZZ导出的内存ID ...
从内存ID" ZZHULOAD"导入ld_zzhuload。
如果sy-subrc是初始的
而不是ld _zzhuload是初始的。
LOOP AT xlikp。
xlikp-zzhuload = ld_zzhuload。
修改xlikp运输zzhuload。
ENDLOOP。
免费的内存ID" ZZHULOAD"。
endif。
endif。
我希望有人会对此有所帮助。 显然,我对功能不承担任何责任
抱歉,格式不正确,标签无法正常工作..
一周热门 更多>