CALL BADI me->mo_badi->extend_outtab EXPORTING is_source = <line> io_target_def = lo_struc iv_document = me->mo_object->mv_doc_type CHANGING ch_target = <struc>.如何修改ch_target的值
时间: 2024-02-14 11:11:34 浏览: 29
在ABAP中,要修改BADI中的CH_TARGET参数的值,您需要实现BADI接口中的方法,并在该方法中修改CH_TARGET参数的值。以下是一个示例:
```
METHOD if_ex_mmpur_subcon_ibs~extend_outtab.
DATA: ls_source TYPE mmpur_subcon_outtab,
lo_target_def TYPE REF TO cl_abap_structdescr,
ls_target TYPE mmpur_subcon_outtab.
ls_source = is_source.
lo_target_def = io_target_def.
ls_target = ch_target.
" 在此处修改ls_target中的值
ls_target-field1 = 'new_value'.
ch_target = ls_target.
ENDMETHOD.
```
在上面的示例中,我们首先将输入参数IS_SOURCE赋值给LS_SOURCE,并将输入参数IO_TARGET_DEF赋值给LO_TARGET_DEF。然后,我们将CH_TARGET赋值给LS_TARGET,以便在其中进行修改。最后,我们修改LS_TARGET中的值,然后将其赋值回CH_TARGET参数中。
请注意,以上示例中的数据类型和字段名称仅供参考,您需要根据您的具体情况进行修改。
相关问题
ABAP badi MEOUT_BAPI_CUST 实现示例
以下是一个简单的 ABAP BADI MEOUT_BAPI_CUST 的实现示例:
1. 首先,在 SE18 中创建一个新的 BADI,命名为 MEOUT_BAPI_CUST。
2. 在 BADI 的界面上,点击“接口”选项卡,然后点击“新建”按钮创建一个新的接口方法。命名为“POST_EXIT_MATERIAL”并输入必要的输入和输出参数。
3. 在实现类中实现这个接口方法。下面是一个简单的示例:
```
METHOD IF_EX_MEOUT_BAPI_CUST~POST_EXIT_MATERIAL.
DATA: lv_matnr TYPE matnr.
lv_matnr = imatnr.
"在这里添加你的逻辑代码
ENDMETHOD.
```
4. 在逻辑代码中添加你需要执行的逻辑。在这个示例中,我们只是简单地将传入的物料号码存储到一个本地变量中。
5. 保存并激活你的 BADI 实现。
6. 在你的自定义代码中调用 BAPI_MATERIAL_SAVEDATA 函数,并将 MEOUT_BAPI_CUST 设置为扩展参数的值。
```
DATA: lt_material TYPE STANDARD TABLE OF bapimatmd WITH HEADER LINE.
lt_material-matnr = 'MATERIAL001'.
lt_material-mtart = 'FERT'.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
materialdata = lt_material
updateflag = 'U'
extensionin = meout_bapi_cust
IMPORTING
return = lt_return.
```
这样,当 BAPI_MATERIAL_SAVEDATA 函数被调用时,你的 BADI 实现中的逻辑将被执行。
MD_CHANGE_MRP_DATA没有CHANGE_BEFORE_UPDATE这个方法
很抱歉,我的回答有误。在BADI “MD_CHANGE_MRP_DATA” 中,没有名为“CHANGE_BEFORE_UPDATE”的方法。如果您想在保存MD01或MD02表格前修改数量,可以使用以下两种方法:
1. 使用BADI “MD_CHANGE_MRP_DATA” 中的方法 “CHANGE_AT_SAVE”:
在该方法中,您可以修改相关数据,并且可以使用输入参数“IM_CHANGE”,“IM_MATNR”等来访问数据。例如,您可以使用以下代码修改数量:
```
DATA: ls_mrp_data TYPE bapimrp01.
" 获取要修改的数据
ls_mrp_data = IM_CHANGE->get_data( ).
" 修改数量
ls_mrp_data-bdmng = 100.
" 将修改后的数据更新回输入参数
IM_CHANGE->set_data( ls_mrp_data ).
```
2. 修改SAP标准函数模块:“MD_STOCK_REQUIREMENTS_LIST_API”:
在该函数模块中,您可以根据需要修改相关数据。例如,您可以使用以下代码修改数量:
```
DATA: ls_mdkps TYPE mdkps.
" 获取要修改的数据
SELECT SINGLE * FROM mdkps INTO ls_mdkps
WHERE matnr = im_matnr
AND werks = im_werks
AND ...
AND ...
AND ...
.
" 修改数量
ls_mdkps-bdmng = 100.
" 更新数据
UPDATE mdkps SET bdmng = ls_mdkps-bdmng
WHERE matnr = im_matnr
AND werks = im_werks
AND ...
AND ...
AND ...
.
```
其中,IM_CHANGE和IM_MATNR是输入参数,在BADI中可以直接使用。如果您不确定如何使用BADI或函数模块,请与SAP开发人员联系以获取更多帮助。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![text/plain](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)