物料主数据视图选择器
使用MM02时,我们输入材料并按下Enter键,它将要求我们选择所需的“VIEW”。此弹出窗口包含可用的物料主视图,并且它们不是恒定的。有时MRP1在第12行,有时在第6行。视图的这种动态仅取决于状态(MARA-VPSTA)。
为了获取这种动态变化,我们需要了解所需视图的确切位置,例如第6行或第10行或第15行。
我们将使用FM SELECTION_VIEWS_FIND找出哪个视图将位于哪个位置。
在我们的程序中,我们将按照以下步骤操作:
1.始终选择基本数据1
2.通过执行FM SELECTION_VIEWS_FIND获取该选项卡的相应用户命令。
状态(MARA-VPSTA)包含“查看”指示器的组合。您可以在数据元素PSTAT_D的文档中找到状态指示器和视图名称的关系,或遵循此表:
视图名称 状态指示器
Work scheduling A
Accounting B
Classification C
MRP D
Purchasing E
Production resources/tools F
Costing G
Basic data K
Storage L
Forecasting P
Quality management Q
Warehouse management S
Sales V
Plant stocks X
Storage location stocks Z
在此测试BDC中,我想更新MRP类型。 MRP类型位于物料主数据的“ MRP 1”视图下。因此,我将首先选择基本数据,然后转到MRP 1视图并更新MRP类型。
*&---------------------------------------------------------------------*
*& Report ZDEMO006
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zdemo006.
PARAMETERS : p_matnr type matnr DEFAULT '140000979'.
* Material views …………………………………………….
DATA: l_vpsta LIKE t130m-pstat.
*
SELECT SINGLE vpsta
into l_vpsta
from mara
where matnr = p_matnr.
*
* Get View sequence ………………………………………….
DATA: l_bild LIKE t133a-bilds,
lt_bild LIKE mbildtab OCCURS 0 WITH HEADER LINE.
*
* Screen Sequence for Standard Industry tab pages in material master
l_bild = '21'.
*
* Get screen sequence
CALL FUNCTION 'SELECTION_VIEWS_FIND'
EXPORTING
bildsequenz = l_bild
pflegestatus = l_vpsta
TABLES
bildtab = lt_bild
EXCEPTIONS
call_wrong = 1
empty_selection = 2
others = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
cl_demo_output=>DISPLAY( lt_bild[] ).
输出结果如下: