问题描述
我无法弄清楚为什么交易 VA05
中没有显示两个自定义字段(其输出是特定的)。
阅读以下内容之前:我没有对程序进行任何更改,因为我没有被分配到此任务。我的一位同事做了这个改动。
我遵循了 this 教程,该教程解释了如何使用自定义字段扩展 VA05
输出表。
我实际上并没有遵循本指南。我遵循本教程只是为了了解我的同事可能做了什么来实现我们的需求以及解决问题可能需要什么。
所以,正如教程所建议的,这就是应该做的简而言之:
- 转到
SE11
并搜索VBEP
数据库表,然后单击显示。 - 点击
Append Structure
- 点击
Create Append
- 插入附加名称的名称,在我的例子中是
ZZVBEP_MECC
- 插入两个字段:
ZZDELIVERYDATE
和ZZREQDELIVERYDATE
- 保存并激活
如果您现在转到 VBEP
表,您会在底部看到字段 .APPEND
,其中列 Data Element
设置为 ZZVBEP_MECC
。
现在,按照教程,包含程序 V05TZZMO
需要更改,这是我们的:
***INCLUDE V05TZZMO .
* This form is called in the include LV05TFMO.
FORM MOVE_USERFIELDS USING ZP.
CASE ZP.
WHEN 'VBAK'.
WHEN 'VBAP'.
CHECK LVBAP-PSTYV NE 'ZRAC'.
CHECK LVBAP-PSTYV NE 'ZCAC'. "Escl.acconti
MOVE LVBAP-KDMAT TO LVBMTV-ZZKDMAT.
PERFORM OFFENE_AUFTRAGSMENGE.
SELECT SINGLE * FROM VBKD WHERE VBELN = LVBAP-VBELN.
IF SUBRC = 0.
MOVE VBKD-KDGRP TO LVBMTV-ZZKDGRP.
ENDIF.
WHEN 'VBEP'.
MOVE LVBEP-ZZDELIVERYDATE TO LVBMTV-ZZDELIVERYDATE.
MOVE LVBEP-ZZREQDELIVERYDATE TO LVBMTV-ZZREQDELIVERYDATE.
ENDCASE.
ENDFORM.
然而,当我运行 VA05
时,这两个自定义字段既不存在也不在 Change Layout
屏幕中。
是否有可能是 V05TZZMO
中的代码位置不正确?查看教程的代码,我看到他们将这些语句放在 WHEN 'VBAK'
而不是 WHEN 'VBEP'
中。
此外,ENHANCEMENT 1 ZZ_SD_VBAK_VA05
不在我的代码中。
我可能遗漏了一些东西。正如我上面所说,我没有进行这些更改,所以我无法确切地说出我的同事做了什么。
解决方法
自定义文件也必须包含在结构中VBMTVZ。
问候
,终于解决了。
以下是我们为解决问题而采取的分步程序:
创建一个 Append Structure
- 转到 TCode
SE11
并打开数据库表VBMTVZ
- 点击
Append Structure...
(它在程序的工具栏中) - 或Goto > Append Structure
- 创建一个新的
Append Structure
(有一个按钮) - 输入结构的名称(在我们的例子中是
ZZVBMTVZ_MECC
- 然后创建一个新结构。输入所需的组件/字段
- 保存并激活结构。
- 注意:要检查结构是否实际附加,请返回并再次打开表
VBMTVZ
。在字段列表的末尾必须有一个名为.APPEND
的字段,其类型设置为您创建的结构的名称。在此字段之后,还有您在该结构上创建的所有字段。请参阅下图以供参考。
更改V05T
程序
现在您需要对链接到 TCode VA05
的程序进行一些更改。
要做到这一点:
- 转到 TCode
SE80
。 - 选择
Function Group
并插入V05T
作为组名。 - 打开名为
Includes
的子文件夹并查找V05TZZMO
- 以
change
模式打开此包含文件。 - 该文件应如下所示:
***INCLUDE V05TZZMO .
* This form is called in the include LV05TFMO.
FORM MOVE_USERFIELDS USING ZP.
CASE ZP.
WHEN 'VBAK'.
* header
* MOVE LVBAK-XXXXX TO LVBMTV-ZZXXXXX.
WHEN 'VBAP'.
* item
* MOVE LVBAP-XXXXX TO LVBMTV-ZZXXXXX.
WHEN 'VBEP'.
* schedule line
* MOVE LVBEP-XXXXX TO LVBMTV-ZZXXXXX.
ENDCASE.
ENDFORM.
将以下代码行添加到 WHEN 'VBEP'.
代码块。
MOVE LVBEP-name_of_your_field TO LVBMTV-name_of_your_field
您需要为您附加的每个字段添加该行。
就我而言,最终结果如下:
***INCLUDE V05TZZMO .
* This form is called in the include LV05TFMO.
FORM MOVE_USERFIELDS USING ZP.
CASE ZP.
WHEN 'VBAK'.
* header
* MOVE LVBAK-XXXXX TO LVBMTV-ZZXXXXX.
WHEN 'VBAP'.
* item
* MOVE LVBAP-XXXXX TO LVBMTV-ZZXXXXX.
WHEN 'VBEP'.
* schedule line
* MOVE LVBEP-XXXXX TO LVBMTV-ZZXXXXX.
move LVBEP-zzdeliverydate to lvbmtv-zzdeliverydate.
move LVBEP-zzreqdeliverydate to lvbmtv-zzreqdeliverydate.
ENDCASE.
ENDFORM.
保存文件并激活程序。
此时您应该能够在 TCode VA05
的输出中看到您的字段。
注意事项
为了能够更改包含程序 V05TZZMO
,您需要一个访问密钥。否则,您无法更改程序。
如果您附加的字段在激活后仍未显示,请尝试:
- 退出并重新登录或
- 使用此 TCode
/$SYNC
重置缓冲区