J3RFLVMOBVEDH 俄罗斯报表自定义字段增强

作者:ABAP三叔 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图
J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图

前言

J3RFLVMOBVEDH俄罗斯报表,这个报表是FI/MM模块使用频率非常高的一个报表,而物料主数据经常会存在增加自定义字段的情况。

本文就以取MARA表的自定义字段为例,介绍 J3RFLVMOBVEDH 报表的增强方法。

需求描述

在MARA表中增加的自定义字段有“品牌”、“系列”、“大类”、“小类”、“年份”、“季节”、“渠道”六个字段,这六个字段也只是存的KEY值,描述在另外的对照表中

。见下图

J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图
J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图

现在需要在 J3RFLVMOBVEDH 报表中取出物料对应的这六个字段的描述。

增强实现

1.创建结构体 zsmara_ txt ,用来存放六个字段的描述。

J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图
J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图

2\. SE11在J_3RMOBVEDH_TOTAL结构结尾附加zsmara_txt结构

J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图
J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图

3.使用Eclipse打开类CL_J_3RMOBVEDH_MAIN的CALCULATE_TURNOVERS方法,在下图所示处增加代码。

J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图
J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图

4\.

SE24打开类CL_J_3RMOBVEDH_BADI的IF_J_3RMOBVEDH_BADI~CALCULATE_TURNOVERS方法,在结尾处创建隐式增强,代码如下:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Class CL_J_3RMOBVEDH_BADI, Interface IF_J_3RMOBVEDH_BADI, Method CALCULATE_TURNOVERS, End A*$*$-Start: (1)---------------------------------------------------------------------------------$*$*ENHANCEMENT 1  ZENH_J_3RMOBVEDH.    "active version

IF totals[] IS NOT INITIAL. SELECT a~matnr, zbrand, zseries, zmat_cate, zsm_cate, zyear, zseason, zchannel FROM mara AS a JOIN @totals AS b ON a~matnr = b~matnr INTO TABLE @DATA(lt_mara). SORT lt_mara BY matnr.* 码表:渠道/季节/年份 SELECT fieldname, ddkey, ddtext INTO TABLE @DATA(lt_ztmm015a) FROM ztmm015a WHERE ( fieldname = 'ZCHANNEL' OR fieldname = 'ZSEASON' OR fieldname = 'ZYEAR' ) AND langu = @sy-langu.*品牌/系列 SELECT * INTO TABLE @DATA(lt_ztmd001b) FROM ztmd001b. SORT lt_ztmd001b BY zbrand zseries.*大类/小类 SELECT * INTO TABLE @DATA(lt_ztmd001c) FROM ztmd001c. SORT lt_ztmd001c BY zmat_cate zsm_cate. LOOP AT totals ASSIGNING FIELD-SYMBOL(<fs_total>). READ TABLE lt_mara INTO DATA(ls_mara) WITH KEY matnr = <fs_total>-matnr BINARY SEARCH. CHECK sy-subrc = 0. IF ls_mara-zbrand IS NOT INITIAL. READ TABLE lt_ztmd001b INTO DATA(ls_ztmd001b) WITH KEY zbrand = ls_mara-zbrand BINARY SEARCH. <fs_total>-zbrand_txt = COND #( WHEN sy-subrc = 0 THEN ls_ztmd001b-zbrand_txt ELSE ls_mara-zbrand ). ENDIF. IF ls_mara-zseries IS NOT INITIAL. READ TABLE lt_ztmd001b INTO ls_ztmd001b WITH KEY zbrand = ls_mara-zbrand zseries = ls_mara-zseries BINARY SEARCH. <fs_total>-zseries_txt = COND #( WHEN sy-subrc = 0 THEN ls_ztmd001b-zseries_txt ELSE ls_mara-zseries ). ENDIF. IF ls_mara-zmat_cate IS NOT INITIAL. READ TABLE lt_ztmd001c INTO DATA(ls_ztmd001c) WITH KEY zmat_cate = ls_mara-zmat_cate BINARY SEARCH. <fs_total>-zmat_cate_txt = COND #( WHEN sy-subrc = 0 THEN ls_ztmd001c-zmat_cate_txt ELSE ls_mara-zmat_cate ). ENDIF. IF ls_mara-zsm_cate IS NOT INITIAL. READ TABLE lt_ztmd001c INTO ls_ztmd001c WITH KEY zmat_cate = ls_mara-zmat_cate zsm_cate = ls_mara-zsm_cate BINARY SEARCH. <fs_total>-zsm_cate_txt = COND #( WHEN sy-subrc = 0 THEN ls_ztmd001c-zsm_cate_txt ELSE ls_mara-zsm_cate ). ENDIF. IF ls_mara-zchannel IS NOT INITIAL. READ TABLE lt_ztmm015a INTO DATA(ls_ztmm015a) WITH KEY fieldname = 'ZCHANNEL' ddkey = ls_mara-zchannel. <fs_total>-zchannel_txt = COND #( WHEN sy-subrc = 0 THEN ls_ztmm015a-ddtext ELSE ls_mara-zchannel ). ENDIF. IF ls_mara-zseason IS NOT INITIAL. READ TABLE lt_ztmm015a INTO ls_ztmm015a WITH KEY fieldname = 'ZSEASON' ddkey = ls_mara-zseason. <fs_total>-zseason_txt = COND #( WHEN sy-subrc = 0 THEN ls_ztmm015a-ddtext ELSE ls_mara-zseason ). ENDIF. IF ls_mara-zyear IS NOT INITIAL. READ TABLE lt_ztmm015a INTO ls_ztmm015a WITH KEY fieldname = 'ZYEAR' ddkey = ls_mara-zyear. <fs_total>-zyear_txt = COND #( WHEN sy-subrc = 0 THEN ls_ztmm015a-ddtext ELSE ls_mara-zyear ). ENDIF. ENDLOOP.ENDIF.ENDENHANCEMENT.*$*$-End: (1)---------------------------------------------------------------------------------$*$*

效果展示

J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图
J3RFLVMOBVEDH 俄罗斯报表自定义字段增强 - 封面图

总结

J3RFLVMOBVEDH增强总体来看,不是很难,不过由于是用AMDP来取数的,因而需要借助eclipse

ADT来修改。朋友们可根据自己实际需求,调整字段和取值逻辑即可。

ABAP三叔

关于作者:ABAP三叔

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「J3RFLVMOBVEDH俄罗斯报表自定义字段增强.md」整理生成,仅用于内部技术分享与学习交流。