ABAP:增强篇-MIGO过账增强之CHECK方法获取行项目
MIGO中做PO过账的时候,常常需要在MB_MIGO_BADI~CHECK方法里面写代码,这个方法只有两个参数,一个行号,一个返回报错消息
因此如果需要对行项目上的值做检查,则需要获取到行项目上的数据。
通常我们可以试用在增强里面增加一个全局表属性,可以把数据在PAI/MODIFY/DELETE中修改删除,然后传递到CHECK方法。然后在通过I_LINE_ID方法读取行数据。
假如要过账的的行项目只有一个,我们还能通过值引用的方式,来获取数据
如果行项目超过一行, 在实际测试中会发现,这里获取到的行项目数据,只有能获取到MIGO界面上最后一个行项目的数据。
此时数据不准确,可能导致校验错误。
我们还可以使用值传递方法来获取这个类的数据(SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL
然后调用类里面的GET_LINE来获取行项目数据,代码如下:
DATA: lv_migo_class TYPE string VALUE '(SAPLMIGO)LCL_MIGO_GLOBALS=>KERNEL'.
DATA: lv_migo_method TYPE string VALUE 'LINE_GET'.
DATA: lv_tabix TYPE sy-tabix.
DATA ls_item TYPE goitem.
DATA: lr_exc_ref TYPE REF TO cx_sy_dyn_call_error.
FIELD-SYMBOLS <fo> TYPE any.
DATA lr_o TYPE REF TO object.
TRY.
ASSIGN (lv_migo_class) TO <fo>.
lr_o ?= <fo>.
MOVE i_line_id TO lv_tabix.
CALL METHOD lr_o->(lv_migo_method)
EXPORTING
i_line = lv_tabix
i_dependent_tables = abap_true
IMPORTING
es_goitem = ls_item.
CASE sy-subrc.
WHEN 1.
ENDCASE.
CATCH cx_sy_dyn_call_error INTO lr_exc_ref.
ENDTRY.
post SAP-Garson
原文链接:https://blog.csdn.net/weixin_41886784/article/details/124786595文章来自于网络,如果侵犯了您的权益,请联系站长删除!