Bapi_requirement_change之后表未更新

2020-08-14 22:33发布

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

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


专家您好,

我是ABAP开发的新手,我有一个要求,我必须借助报告来更改MD61中的要求日期。 在我的选择屏幕中,我将要添加到现有日期的材料编号,工厂和天数。 我创建了以下报告,其中填充了bapi,但是一旦执行它,表就不会使用新数据进行更新。 我不确定是什么原因引起的,在返回表中我没有收到任何错误消息,因此我可以假定bapi已成功执行。 您能否建议我做错了什么或应该如何进行更改?

代码段:

表:MARC,pbim,pbed。

数据:GT_GRID类型参考CL_GUI_ALV_GRID,
GT_CONT类型参考CL_GUI_CUSTOM_CONTAINER。

数据:GT_FCAT类型标准LVC_S_FCAT << br> WA_FCAT类型LVC_S_FCAT。

数据:OK_CODE类型SY-UCOMM。

类型:GS_TAB的开始,
MATNR类型MATNR,
WERKS类型WERKS_D,
BDZEI BDZEI型,
BEDAE型,BedAE型,
VERSB型,VERSB型,
PBDNR型,PBDNR型,
PDATU型,PDATU型,
GS_TAB末端。


数据:GS_TAB的GT_TAB类型标准表,
GS_TAB的GV_TAB类型标准。
FIELD-SYMBOLS: GS_TAB类型。

数据:LT_RETURN类型表 BAPISSHDIN的BAPIRETURN1,
LT_REQ_CHANGE类型表。

数据:LS_REQ_CHANGE类型BAPISSHDIN。

数据:gv_newdate类型EDATU。

*常量:abap_true类型abap_bool值' '。

BLOCK块的选择屏幕开始。
参数:P_WERKS类型MARC-WERKS。
选择选项:S_MATNR用于MARC-MATNR。
参数:P_DAYS类型I. < br> BLOCK块的选择屏幕结尾。

开始选择。

选择A〜MATNR
A〜WERKS
A〜BDZEI
A〜BEDAE
A〜VERSB
A〜PBDNR
B〜PDATU
从pbim AS到A
内连接pbed AS B
在A〜BDZEI = B〜BDZEI
进入对应的场 表GT_TAB
中的位置,其中A〜WERKS = P_WERKS和
A_MATNR在S_MATNR中。

* BREAK-POINT。

在GT_TAB分配时循环。
将表GT_TAB读入索引 -PDATU。
gv_newdate = -PDATU + p_DAY S.

LS_REQ_CHANGE-DATE_TYPE ='1'。
LS_REQ_CHANGE-REQ_DATE = gv_newdate。
将LS_REQ_CHANGE附加到LT_REQ_CHANGE。

呼叫功能'BAPI_REQUIREMENTS_PORTGE' >材料= -MATNR
工厂= -WERKS
需求类型= -BEDAE
版本= -VERSB
REQMTSPLANNUMBER = -PBDNR
VERS_ACTIV ='X'
* REQUIREMENT_PARAM =
* MRP_AREA =
DO_COMMIT ='X'
UPDATE_MODE ='X'
DELETE_OLD =''
** NO_WITHDR =''
* MATERIAL_EVG =
*导入
* REQUIREMENT_ITEM_OUT =
表格
REQUIREMENTS_SCHEDULE_IN = lt_req_change
RETURN = lt_return。
* BREAK-POINT。

如果lt_return 是INITIAL。
呼叫功能'BAPI_TRANSACTION_COMMIT'
导出
等待='X'。
*
ENDIF。
ENDLOOP。
呼叫屏幕100。
包含ZSARBOSE_REFERENCE_PBO 。

包含ZSARBOSE_REFERENCE_PAI。

包含ZSARBOSE_REFERENCE_FIELDCATF01。

我们将高度赞赏您的投入。

谢谢

Sarnava

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

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


专家您好,

我是ABAP开发的新手,我有一个要求,我必须借助报告来更改MD61中的要求日期。 在我的选择屏幕中,我将要添加到现有日期的材料编号,工厂和天数。 我创建了以下报告,其中填充了bapi,但是一旦执行它,表就不会使用新数据进行更新。 我不确定是什么原因引起的,在返回表中我没有收到任何错误消息,因此我可以假定bapi已成功执行。 您能否建议我做错了什么或应该如何进行更改?

代码段:

表:MARC,pbim,pbed。

数据:GT_GRID类型参考CL_GUI_ALV_GRID,
GT_CONT类型参考CL_GUI_CUSTOM_CONTAINER。

数据:GT_FCAT类型标准LVC_S_FCAT << br> WA_FCAT类型LVC_S_FCAT。

数据:OK_CODE类型SY-UCOMM。

类型:GS_TAB的开始,
MATNR类型MATNR,
WERKS类型WERKS_D,
BDZEI BDZEI型,
BEDAE型,BedAE型,
VERSB型,VERSB型,
PBDNR型,PBDNR型,
PDATU型,PDATU型,
GS_TAB末端。


数据:GS_TAB的GT_TAB类型标准表,
GS_TAB的GV_TAB类型标准。
FIELD-SYMBOLS: GS_TAB类型。

数据:LT_RETURN类型表 BAPISSHDIN的BAPIRETURN1,
LT_REQ_CHANGE类型表。

数据:LS_REQ_CHANGE类型BAPISSHDIN。

数据:gv_newdate类型EDATU。

*常量:abap_true类型abap_bool值' '。

BLOCK块的选择屏幕开始。
参数:P_WERKS类型MARC-WERKS。
选择选项:S_MATNR用于MARC-MATNR。
参数:P_DAYS类型I. < br> BLOCK块的选择屏幕结尾。

开始选择。

选择A〜MATNR
A〜WERKS
A〜BDZEI
A〜BEDAE
A〜VERSB
A〜PBDNR
B〜PDATU
从pbim AS到A
内连接pbed AS B
在A〜BDZEI = B〜BDZEI
进入对应的场 表GT_TAB
中的位置,其中A〜WERKS = P_WERKS和
A_MATNR在S_MATNR中。

* BREAK-POINT。

在GT_TAB分配时循环。
将表GT_TAB读入索引 -PDATU。
gv_newdate = -PDATU + p_DAY S.

LS_REQ_CHANGE-DATE_TYPE ='1'。
LS_REQ_CHANGE-REQ_DATE = gv_newdate。
将LS_REQ_CHANGE附加到LT_REQ_CHANGE。

呼叫功能'BAPI_REQUIREMENTS_PORTGE' >材料= -MATNR
工厂= -WERKS
需求类型= -BEDAE
版本= -VERSB
REQMTSPLANNUMBER = -PBDNR
VERS_ACTIV ='X'
* REQUIREMENT_PARAM =
* MRP_AREA =
DO_COMMIT ='X'
UPDATE_MODE ='X'
DELETE_OLD =''
** NO_WITHDR =''
* MATERIAL_EVG =
*导入
* REQUIREMENT_ITEM_OUT =
表格
REQUIREMENTS_SCHEDULE_IN = lt_req_change
RETURN = lt_return。
* BREAK-POINT。

如果lt_return 是INITIAL。
呼叫功能'BAPI_TRANSACTION_COMMIT'
导出
等待='X'。
*
ENDIF。
ENDLOOP。
呼叫屏幕100。
包含ZSARBOSE_REFERENCE_PBO 。

包含ZSARBOSE_REFERENCE_PAI。

包含ZSARBOSE_REFERENCE_FIELDCATF01。

我们将高度赞赏您的投入。

谢谢

Sarnava

付费偷看设置
发送
2条回答
半个程序猿
1楼-- · 2020-08-14 22:56

嗨,

如果lt_return是INITIAL,请尝试代替

。

 通话功能'BAPI_TRANSACTION_COMMIT'

 出口

 WAIT ='X'。

表示检查类型字段没有错误。

使用此代码

 IF(ls_return-type ='S'OR
                ls_return-type ='W'或
                ls_return-type ='I')或
                ls_return是INITIAL。
 *提交数据
               调用功能" BAPI_TRANSACTION_COMMIT"。
 endif。
路亽曱_Ryan
2楼-- · 2020-08-14 23:11

感谢您的回复。 我已经解决了最终表中缺少数量字段的问题,系统正在将最终数量更改为零,因此该字段在MD04中不可见。

此致

Sarnava

一周热门 更多>