首页 > 数字化转型 > ERP > MRM_HEADER_CHECK发票预制抬头数据检查
现在SAP越来越开放了,有多种方法可以做检查,比如最直观的source code plug in,这里只记载一个传统的做法。
发票预制时检查页数、抬头文本、分配栏位不为空,如果为空则不能保存与过账,使用badi:MRM_header_check实现,如下:
SE19创建实施ZMRM_HEADER_CHECK,此步骤可在网上查询到。
代码如下,非ABAP专业,代码比较业余,请包涵:
DATA
: gt_errprot
TYPE
TABLE
OF mrm_errprot
,
gs_errprot
TYPE mrm_errprot
,
gwa_errprot
TYPE mrm_errprot
.
*根据判断条件将错误信息保存在一个内标中,以备后续显示
if I_RBKPV
-numpg
=
''
.
gwa_errprot
-msgty
=
'E'
.
gwa_errprot
-msgid
=
'MM'
.
gwa_errprot
-msgno
=
'899'
.
gwa_errprot
-msgv1
=
'请输入页数'
.
APPEND gwa_errprot
TO gt_errprot
.
*也许可以写成如下写反,懒得测了,看起来比较高深。
*
GT_ERRPROT
=
VALUE #
( BASE GT_ERRPROT
*
( msgty
=
'E'
* msgid
=
'MM'
* msgno
=
'899'
* msgv1
=
'请输入页数'
)
)
.
endif
.
if I_RBKPV
-ZUONR
=
''
.
gwa_errprot
-msgty
=
'E'
.
gwa_errprot
-msgid
=
'MM'
.
gwa_errprot
-msgno
=
'899'
.
gwa_errprot
-msgv1
=
'请输入分配'
.
APPEND gwa_errprot
TO gt_errprot
.
ENDIF
.
if I_RBKPV
-BKTXT
=
''
.
gwa_errprot
-msgty
=
'E'
.
gwa_errprot
-msgid
=
'MM'
.
gwa_errprot
-msgno
=
'899'
.
gwa_errprot
-msgv1
=
'请输入抬头文本'
.
APPEND gwa_errprot
TO gt_errprot
.
ENDIF
.
*虽然置为报错类型,但是没有逐条显示,后面会在一弹出框显示,此处防止保存、过账。
IF
NOT gt_errprot[]
IS
INITIAL
.
READ
TABLE gt_errprot
INTO gs_errprot
WITH
KEY msgty
=
'E'
.
IF sy
-subrc
=
0
.
DATA
: c_okqx
(
17
)
TYPE
c
VALUE
'(SAPLMR1M)OK-CODE'
.
FIELD-SYMBOLS
: <fs_okqx>
TYPE
ANY
.
ASSIGN
(c_okqx
)
TO <fs_okqx>
.
CASE <fs_okqx>
.
WHEN
'COMP'
OR
'BU'
.
"保存为完成或过账
READ
TABLE gt_errprot
INTO gs_errprot
WITH
KEY msgty
=
'E'
.
IF sy
-subrc
=
0
.
* 将OK code代码清空,避免有错保存.
CLEAR <fs_okqx>
.
MESSAGE
'请将必输项输入完整'
TYPE
'I'
.
"仍然有报错时提示
ENDIF
.
ENDCASE
.
ENDIF
.
endif
.
*将报错集中显示
CALL
FUNCTION
'MRM_PROT_FILL'
TABLES
t_errprot
= gt_errprot
.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9859323/viewspace-2687959/ ,如需转载,请注明出处,否则将追究法律责任。