对于销售订单的项目的交货工厂(VBAP-WERKS)决定是由单元FV45PF0V_VBAP-WERKS_ERMITTELN的FORM VBAP-WERKS_ERMITTELN子过程来填写的,具体怎么决定的大家一看下列的代码照抄自然就知道。
Unit name: FV45PF0V_VBAP-WERKS_ERMITTELN
*---------------------------------------------------------------------*
* FORM VBAP-WERKS_ERMITTELN *
*---------------------------------------------------------------------*
* Ermitteln des Werkes einer Position *
* Determine the work of a position
*---------------------------------------------------------------------*
FORM VBAP-WERKS_ERMITTELN.
DATA: DA_MSG TYPE C.
DATA: DA_EDATU LIKE VBEP-EDATU.
CLEAR DA_MSG.
* Während der Variantenfindung kein neues Werk ermitteln
CHECK TYPE_MATCHING IS INITIAL OR VBAP-WERKS IS INITIAL.
* Im Positionsvorschlag für eine Position kein Werk ermitteln
* Determine no work in the position proposal for a position
CHECK VBAK-VBTYP NE 'D'.
* Neue Werksermittlung bei geändertem Material
* New work determination with changed material
IF ( VBAP-MATNR NE *VBAP-MATNR OR
NOT MATNR_CHANGED IS INITIAL ) AND
TVSU-SUBAR IS INITIAL AND
WERKS_CHANGED IS INITIAL AND SVBAP-TABIX > 0 AND
( VBAP-WERKS = *VBAP-WERKS OR VBAP-WERKS = VBAPIN-WERKS ).
CLEAR: VBAP-WERKS, VBAP-BERID, VBAP-LGORT.
ENDIF.
CHECK: VBAP-WERKS = SPACE.
* 1. Werk aus der Hauptposition vorschlagen
* Work from the main position suggest
* VBAP-UEPOS=物料单结构中的上层项目
IF VBAP-UEPOS > 0 AND
VBAP-WERKS = SPACE AND
HVBAP-WERKS NE SPACE.
* Vorschlagswerk prüfen
* Proposal work examine
PERFORM VBAP-WERKS_PRUEFEN USING VBAP-POSNR
HVBAP-WERKS
SPACE
SPACE
SPACE
SY-SUBRC
SPACE.
IF SY-SUBRC EQ 0.
* Vorschlagswerk setzen
VBAP-WERKS = HVBAP-WERKS.
ENDIF.
ENDIF.
* 2. Werk aus dem eingegebenen Kopfwerk vorschlagen
* Work from the entered head work suggest
IF VBAP-WERKS = SPACE AND
RV45A-DWERK NE SPACE.
* Vorschlagswerk prüfen
PERFORM VBAP-WERKS_PRUEFEN USING VBAP-POSNR