`
touchinsert
  • 浏览: 1328936 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SD--关于销售订单的VBAP-WERKS决定代码摘抄分析

阅读更多

对于销售订单的项目的交货工厂(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
RV45A-DWERK
SPACE
SPACE
SPACE
SY-SUBRC
SPACE.
IF SY-SUBRC EQ 0.
* Vorschlagswerk setzen
VBAP-WERKS = RV45A-DWERK.
ELSE.
DA_MSG = CHARX.
ENDIF.
ENDIF.
* 3. Werk aus dem Infosatz vorschlagen
* Work from the information record suggest
* KNMT=客户-物料信息记录数据表
* TCODE VD51
IF VBAP-WERKS = SPACE.
PERFORM RV_CUSTOMER_MATERIAL_READ USING SY-SUBRC.
IF SY-SUBRC = 0 AND NOT KNMT-WERKS IS INITIAL.
PERFORM VBAP-WERKS_PRUEFEN USING VBAP-POSNR
KNMT-WERKS
SPACE
SPACE
SPACE
SY-SUBRC
SPACE.
IF SY-SUBRC EQ 0.
* Vorschlagswerk setzen
VBAP-WERKS = KNMT-WERKS.
ENDIF.
ENDIF.
ENDIF.
* 3.a Werk aus Kunde/Warengruppe/Datum/Artikel vorschlagen (Retail)
* Work from customer/category of commodities/date/articles suggest (Retail)
IF VBAP-WERKS = SPACE.
IF VBEP-EDATU IS INITIAL.
DA_EDATU = VBAK-VDATU.
ELSE.
DA_EDATU = VBEP-EDATU.
ENDIF.
CALL FUNCTION 'LOCATION_ISS_PLANT_DETERMINE'
EXPORTING
I_KUNNR = VBAK-KUNNR
I_MATKL = MAAPV-MATKL
I_VALID_DATE = DA_EDATU
I_MATNR = VBAP-MATNR
IMPORTING
O_ISSUING_PLANT = VBAP-WERKS
EXCEPTIONS
INVALID_PLANT = 1
PLANT_NOT_FOUND = 2
LIEFERWERK_NO_ENTRIES = 3
NO_VALID_ISSUING_PLANT = 4
ARTICEL_NOT_CONTINUED = 5
NO_ISSUING_PLANT_FOUND = 6
OTHERS = 7.
IF VBAP-WERKS NE SPACE.
* Vorschlagswerk prüfen
PERFORM VBAP-WERKS_PRUEFEN USING VBAP-POSNR
VBAP-WERKS
SPACE
SPACE
SPACE
SY-SUBRC
SPACE.
IF SY-SUBRC NE 0.
* Vorschlagswerk zurücksetzen
CLEAR VBAP-WERKS.
ENDIF.
ENDIF.
ENDIF.
* 4. Werk aus dem Warenempfänger vorschlagen
* Work from the consignee suggest
* KUWEV=客户主文件记录送达方总览
* 注意 KUWEV-DWERK数据有'KNVV_SINGLE_READ'函数读取销售视图来填写,参见代码二
PERFORM KUWEV_SELECT_POSITION(SAPMV45A) USING VBAP-POSNR
SPACE
VBAP-SPART
CHARX
CHANGING SY-SUBRC.
IF KUWEV-DWERK NE SPACE AND VBAP-WERKS = SPACE.
* Vorschlagswerk prüfen
*关于VBAP-WERKS_PRUEFEN子例程的运行操作参见代码三,只有该例程监测正确才会填写VBAP-WERKS字段
PERFORM VBAP-WERKS_PRUEFEN USING VBAP-POSNR
KUWEV-DWERK
SPACE
SPACE
SPACE
SY-SUBRC
SPACE.
IF SY-SUBRC EQ 0.
* Vorschlagswerk setzen
VBAP-WERKS = KUWEV-DWERK.
ENDIF.
ENDIF.
* 5. Werk aus dem Material vorschlagen
* Work from the material suggest
* MAAPV=物料主记录视图: 销售屏幕1,参见后面的代码四
* 注意 MAAPV-DWERK数据有'MVKE_SINGLE_READ'函数读取销售视图来填写
IF MAAPV-DWERK NE SPACE AND VBAP-WERKS = SPACE.
* Vorschlagswerk prüfen
PERFORM VBAP-WERKS_PRUEFEN USING VBAP-POSNR
MAAPV-DWERK
SPACE
SPACE
SPACE
SY-SUBRC
SPACE.
IF SY-SUBRC EQ 0.
* Vorschlagswerk setzen
VBAP-WERKS = MAAPV-DWERK.
ENDIF.
ENDIF.
* 6. Werk aus *VBAP-Werks füllen.
IF NOT *VBAP-WERKS IS INITIAL AND VBAP-WERKS IS INITIAL.
* Vorschlagswerk prüfen
PERFORM VBAP-WERKS_PRUEFEN USING VBAP-POSNR
*VBAP-WERKS
SPACE
SPACE
SPACE
SY-SUBRC
SPACE.
IF SY-SUBRC EQ 0.
* Vorschlagswerk setzen
VBAP-WERKS = *VBAP-WERKS.
ENDIF.
ENDIF.
IF NOT DA_MSG IS INITIAL.
IF V4231_SHOWN IS INITIAL.
* Das Material &1 ist im Werk &2 nicht vorhanden
* 工厂 &2 中不存在物料 &1。新工厂:&3
PERFORM MESSAGE_VARIABEL(SAPFV45L)
USING 'V4' '231'
SPACE CHARX
VBAP-MATNR RV45A-DWERK VBAP-WERKS SPACE.
V4231_SHOWN = CHARX.
ENDIF.
ENDIF.
ENDFORM.

*代码二 单元:LV05EF1Q
*---------------------------------------------------------------------*
* FORM LESEN_KUWEV_KNVV_01 *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM LESEN_KUWEV_KNVV_01.
DATA: CUST_FUNC_ACTIVE TYPE XFLAG.
PERFORM READ_KNVV_KNVV_D1_00.
IF RCODE EQ 4.
* USER-EXIT if no KNVV was found
CALL FUNCTION 'MODX_FUNCTION_ACTIVE_CHECK'
EXPORTING
CPROGNAME = 'SAPLV09A'
FUNCNUMBER = '002'
IMPORTING
ACTIVE = CUST_FUNC_ACTIVE
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
* Customer Function 002 is active, execute it
IF SY-SUBRC = 0 AND CUST_FUNC_ACTIVE = 'X'.

CALL FUNCTION 'EXIT_SAPLV09A_002'
EXPORTING
FIF_PARVW = VTCOM-PARVW
FIF_NRART = 'KU'
FIF_PARTNER = VTCOM-KUNNR
FIF_VBTYP = VTCOM-VBTYP
FIF_VBOBJ = VTCOM-VBOBJ
FIF_VKORG = VTCOM-VKORG
FIF_VTWEG = VTCOM-VTWEG
FIF_SPART = VTCOM-SPART
FIF_PROCESSMODE = GV_PROCESSMODE.
ENDIF.
IF VTCOM-MSGKZ = ' '.
MESSAGE E210 WITH VTCOM-KUNNR
VTCOM-VKORG
VTCOM-VTWEG
VTCOM-SPART
RAISING NO_KNVV.
CHECK 1 = 2.

ENDIF.
ENDIF.
*销售视图填写工厂
PERFORM MOVE_LKNVV_TO_KUWEV.
IF NOT VTCOM-DEAR6 IS INITIAL.
KUWEV-KUNNR = VTCOM-KUNNR.
ENDIF.
INCLUDE V05EZZWE.
ENDFORM. "LESEN_KUWEV_KNVV_01

代码三
:检查TVKWZ是否存在(机构单位: 每个销售机构允许的工厂数)
:检查MARC
代码位置:LMG22FSQ的子过程FORM SELECT_SINGLE
MARC PREPARE 0 SELECT WHERE "MANDT" = :A0 AND "MATNR" = :A1 AND "WERKS" = :A2
MARC OPEN 0 SELECT WHERE "MANDT" = '800' AND "MATNR" = '00057047' AND "WERKS" = '3101'
:检查MLAN 物料的税分类
代码位置:LMATLF28的子过程 LESEN_MLAN
MLAN PREPARE 0 SELECT WHERE "MANDT" = :A0 AND "MATNR" = :A1 AND "ALAND" = :A2
MLAN OPEN 0 SELECT WHERE "MANDT" = '800' AND "MATNR" = '00057047' AND "ALAND" = 'CN'
:检查KNVI 客户基本税指示符
代码位置:在KNVI_GENERIC_READ_LAND函数里
KNVI PREPARE 0 SELECT WHERE "MANDT" = :A0 AND "KUNNR" = :A1
KNVI OPEN 0 SELECT WHERE "MANDT" = '800' AND "KUNNR" = '0010506537'

代码四:参见单元:LMATLF31
*--------------------------------------------
* LESEN_MAPOV
*--------------------------------------------
FORM LESEN_MAPOV .
MTCOR-RMAPOV = X.
PERFORM LESEN_MARA."该代码会调用MARA_SINGLE_READ函数来读取物料数据
IF SY-SUBRC = 0.
PERFORM LESEN_MVKE. "该代码会调用MVKE_SINGLE_READ函数来读取物料销售视图数据
ENDIF.
IF SY-SUBRC = 0.
PERFORM LESEN_MAKT.
ENDIF.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING MARA TO MAPOV.
MOVE-CORRESPONDING MVKE TO MAPOV.
MAPOV-ZIEME = MVKE-VRKME.
MAPOV-ARKTX = MAKT-MAKTX.
MOVE-CORRESPONDING MAKT TO MAPOV.
ENDIF.
IF SY-SUBRC NE 0.
CLEAR MAPOV .
ENDIF.
IF SY-SUBRC = 0.
CLEAR MTCOR-RMAPOV .
ENDIF.
IF MAPOV-LVORM NE SPACE.
MTCOR-LVORM = MAPOV-LVORM .
ENDIF.
ENDFORM.


分享到:
评论

相关推荐

    se16-成本估算编号为空vbap-KALNR.docx

    - **用户报告**:用户报告了在处理销售订单150017635时遇到的问题,即销售订单中类别为KLN的行项目无法显示成本估算编号(VBAP-KALNR),而类别为TAN的行项目则能够显示。 - **初步调查**:技术支持团队登录到TZQ/...

    DBP-SD-HX_功能说明书_创建发货单增强与OA接口_XXXX0121 V0[1]1.docx

    - `VBAP-KWMENG`:销售订单行项目的数量。 - `VBFA-RFMNG`:发货数量。 #### 九、单元测试场景 1. **权限检查**:验证只有业务员才能创建对应的发货单。 2. **发货日期检查**:测试发货日期超过合同有效期的情况...

    销售订单状态查询报表query过程

    销售订单状态查询报表QUERY过程是SAP系统中用于监控和管理销售订单状态的关键流程之一,这一过程涉及到多个数据表和字段的复杂关联,旨在提供全面的销售订单信息,包括订单状态、交货情况等,以支持企业的销售管理和...

    SAP SD模块主表关系详解

    根据提供的标题、描述以及部分内文,我们可以详细探讨SAP SD模块中的主要表格及其相互间的关系,特别是关于销售订单(Sales Order)、交货(Delivery)与开票凭证(Billing Document)这三个关键业务流程中的表格...

    LO Extraction - Part 1 SD Overview.pdf

    - **VBAP**:销售订单项目表 - **LIPS**:发货单据表 - **VF01**:开票 - **VF02**:发票更改 - **VBRK**:发票头部表 - **VBUK**:发票项目表 #### 交易 SD模块中涉及的典型交易包括: - **VA01**:创建销售订单...

    SAP_sd_tables_reference

    - **应用场景**:监控销售订单状态的变化,以及进行流程分析。 4. **VBBE - Sales Requirements: Individual Records** - **概述**:存储特定销售需求的记录,例如客户的特殊要求或条件。 - **应用场景**:当...

    SAP SD第二课

    - **项目产品组字段**:决定项目的产品组取自物料主记录还是销售单据项的抬头数据。 - **屏幕顺序**、**显示标准**和**概览屏幕的功能代码**:控制销售单据的界面显示方式。 - **事务组**:控制数据更新的方式。 ...

    vbap:Ville Pulkki的VBAP和定义扬声器-由Christophe B更新和改编

    您可以将该项目的C ++和H文件与合并最新的二进制文件包含在Binaries文件夹中,该文件夹包含Windows和OSX的对象,与Max 8兼容您可以在此处使用vbap找到M4L端口: ://maxforlive.com/library/device/5187/vbap-...

    矢量基幅平移库:矢量基幅平移 (VBAP) 和声音空间化变体的实现。-matlab开发

    # 矢量基幅平移库#### 一个紧凑的库,实现了矢量基幅度平移 (VBAP) 方法和声音空间化的变体。 --- > Archontis Politis,2015 > 芬兰阿尔托大学信号处理与声学系> archontis.politis@aalto.fi --- 这个Matlab / ...

    sap表结构工具 MM FI PS.zip

    - `VBAP`: 销售订单行项目 - `VTWV`: 价格条件记录 - `VOCRJ`: 发货主记录 - `VORM`: 发货行项目 2. **物料管理(MM)表**:MM模块用于管理库存和采购流程,其表结构包括: - `MARA`: 物料主数据通用部分 - `...

    SAP 各模块常用表

    - `VBAP`:销售订单行项目,包含订单中的具体产品信息。 - `VKOR`:客户订单处理表,记录订单状态和处理历史。 4. **生产计划模块 (PP - Production Planning)**: 生产计划管理生产活动。相关表有: - `MARL`:...

    如何利用BAPI_SALESORDER_CHANGE修改vbak增强字段

    在本案例中,我们需要利用BAPI_SALESORDER_CHANGE来修改销售订单(Sales Order,简称SO)的抬头增强字段。这个需求在实际项目中常见,因为企业往往需要自定义一些标准字段来满足特定的业务需求。 首先,我们要了解...

    MM,SD,PP,FI,CO等几个模块常用的table ABAP SAP

    在SAP系统中,MM(物料管理)、SD(销售与分销)、PP(生产计划)、FI(财务会计)、CO(成本控制)等模块是企业资源规划(ERP)中的关键组成部分,它们各自承载着不同的业务功能,同时也共享着一个复杂且集成的数据...

    BAPI创建SO.doc

    在上面的代码示例中,我们首先检查报价和销售订单是否存在,然后将报价和销售订单的数据复制到相应的内部表中。最后,我们使用BAPI_SALESORDER_CREATEFROMDAT2接口创建新的销售订单,并将结果返回到相应的内部表中。...

    SAP各模块表关系

    - **VBAP**:销售订单项。 - **VBKD**:销售业务数据。 - **VBUP**:销售订单项状态。 - **VBEP**:销售订单交货计划行。 - **EBKN**:采购申请。 - **EBAN**:采购订单头部。 - **EKKO**:采购订单头部。 - **EKPO*...

    VBA-Web-master.zip

    - **数据分析**:从Web API获取数据,如金融市场数据、天气预报等,进行分析和报告。 - **自动化报表**:定时从外部系统抓取数据,自动生成Excel报表。 - **集成应用**:与企业内部或第三方服务进行集成,如CRM系统...

    matlab开发-矢量基振幅平面库

    在"polarch-Vector-Base-Amplitude-Panning-a44abd2"这个压缩包中,很可能包含了实现VBAP算法的MATLAB源代码。这个库可能包含以下组件: 1. `VBAP.m`: 主函数,实现VBAP算法的核心逻辑。 2. `calculate_weights.m`:...

    ALV完成功能代码实现

    - `VBAP`: 销售订单行项目表 - `SLIPS`: 销售订单项目表 - `LIKP`: 销售订单表头数据 - `ZTRUCKINFO`: 自定义卡车信息表 - `ZDISTRIBUTION`: 自定义分配表 - `ZRECORD`: 自定义记录表 通过这些表格,可以构建出一个...

    matlab数组排序代码-Vector-Base-Amplitude-Panning:一个紧凑的库,实现了矢量基础幅值平移(VBAP)方法和变

    matlab排序代码矢量基幅平移库 一个紧凑的库,可实现矢量基础幅值平移(VBAP)方法和变体以实现声音空间化。 Archontis Politis,2015年 芬兰阿尔托大学信号处理与声学系 这个Matlab / Octave库是在我在芬兰阿尔托...

Global site tag (gtag.js) - Google Analytics