如果增强字段在销售订单抬头(vbak)上,则要将增强字段一并append到如下四个表/结构中:

  1. VBAKKOZ
  2. VBAKKOZX
  3. BAPE_VBAK
  4. BAPE_VBAKX

在行项目(vbap)上:

  1. VBAPKOZ
  2. VBAPKOZX
  3. BAPE_VBAP
  4. BAPE_VBAPX

在运货计划行(VBEP)上:

  1. VBEPKOZ
  2. BEPKOZX
  3. BAPE_VBEP
  4. BAPE_VBEPX

下面介绍如何向bapi中extensionin参数赋值数据,具体代码如

*  接口调用日志
  DATA: LT_LOG TYPE STANDARD TABLE OF ZZT_INFLOG,
        LW_LOG TYPE ZZT_INFLOG.   DATA: ORDER_HEADER_INX LIKE BAPISDH1X,
        SCHEDULE_LINES   LIKE BAPISCHDL  OCCURS 0 WITH HEADER LINE,
        SCHEDULE_LINESX  LIKE BAPISCHDLX OCCURS 0 WITH HEADER LINE,
        ORDER_ITEM_IN    LIKE BAPISDITM  OCCURS 0 WITH HEADER LINE,
        ORDER_ITEM_INX   LIKE BAPISDITMX OCCURS 0 WITH HEADER LINE,
        RETURN           LIKE BAPIRET2   OCCURS 0 WITH HEADER LINE.   DATA: LWA_BAPE_VBAK      TYPE BAPE_VBAK,
        LWA_BAPE_VBAKX     TYPE BAPE_VBAKX,         LWA_BAPE_VBAP      TYPE BAPE_VBAP,
        LWA_BAPE_VBAPX     TYPE BAPE_VBAPX,         LWA_VALUEPART(240),
        LIT_PAREX          LIKE TABLE OF BAPIPAREX   WITH HEADER LINE.   DATA: BEGIN OF IT_TAB OCCURS 0,
          VBELN TYPE VBELN,
          POSNR TYPE POSNR,
          ETENR TYPE ETENR,
          LIFSP TYPE LIFSP_EP,
        END OF IT_TAB.   RANGES: R_VBELN FOR VBAP-VBELN,
          R_POSNR FOR VBAP-POSNR.   IF SALESDOCUMENT IS INITIAL.
    E_STATU = 'E'.
    E_MESS  = '单号为空!'.
    EXIT.
  ENDIF.   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      INPUT  = SALESDOCUMENT
    IMPORTING
      OUTPUT = SALESDOCUMENT.   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      INPUT  = SALESPOSNR
    IMPORTING
      OUTPUT = SALESPOSNR.   IF SALESDOCUMENT IS NOT INITIAL.
    R_VBELN-SIGN   = 'I'.
    R_VBELN-OPTION = 'EQ'.
    R_VBELN-LOW    = SALESDOCUMENT.
    APPEND R_VBELN.
  ENDIF.
  IF SALESPOSNR IS NOT INITIAL.
    R_POSNR-SIGN   = 'I'.
    R_POSNR-OPTION = 'EQ'.
    R_POSNR-LOW    = SALESPOSNR.
    APPEND R_POSNR.
  ENDIF. ***获得计划行号
  SELECT VBELN POSNR ETENR LIFSP
    INTO TABLE IT_TAB
    FROM VBEP
   WHERE VBELN IN R_VBELN
     AND POSNR IN R_POSNR
     AND ETENR = '0001'.   IF IT_TAB[] IS INITIAL.
    E_STATU = 'E'.
    E_MESS  = '订单项的计划行数据不存在!'.
    EXIT.
  ENDIF.   ORDER_HEADER_INX-UPDATEFLAG = 'U'.   LOOP AT IT_TAB.
    SCHEDULE_LINES-ITM_NUMBER  = IT_TAB-POSNR.
    SCHEDULE_LINES-SCHED_LINE  = IT_TAB-ETENR.
    SCHEDULE_LINES-REQ_DLV_BL  = REQ_DLV_BL.  " Q1/Q2
    IF REQ_DATE IS NOT INITIAL.
      SCHEDULE_LINES-REQ_DATE    = REQ_DATE .  "原始需求日期
    ENDIF.
    APPEND SCHEDULE_LINES.     SCHEDULE_LINESX-UPDATEFLAG  = 'U'.
    SCHEDULE_LINESX-ITM_NUMBER  = IT_TAB-POSNR.
    SCHEDULE_LINESX-SCHED_LINE  = IT_TAB-ETENR.
    SCHEDULE_LINESX-REQ_DLV_BL  = 'X'.
    IF REQ_DATE IS NOT INITIAL.
      SCHEDULE_LINESX-REQ_DATE    = 'X'.
    ENDIF.
    APPEND SCHEDULE_LINESX. *&-->增强字段
    IF FDATU IS NOT INITIAL OR IM_BHDAT IS NOT INITIAL OR IM_BHTIM IS NOT INITIAL.       CLEAR: LWA_BAPE_VBAP,LIT_PAREX.
      LWA_BAPE_VBAP-VBELN = IT_TAB-VBELN.
      LWA_BAPE_VBAP-POSNR = IT_TAB-POSNR.
      IF FDATU IS NOT INITIAL.
        LWA_BAPE_VBAP-FDATU = FDATU .
      ENDIF.
      IF IM_BHDAT IS NOT INITIAL.
        LWA_BAPE_VBAP-Q1Q2DAT = IM_BHDAT .
      ENDIF.
      IF IM_BHTIM IS NOT INITIAL.
        LWA_BAPE_VBAP-Q1Q2TIM = IM_BHTIM .
      ENDIF.       LIT_PAREX-STRUCTURE = 'BAPE_VBAP'.
      LIT_PAREX+30 = LWA_BAPE_VBAP.
      APPEND LIT_PAREX.       CLEAR: LWA_BAPE_VBAPX,LIT_PAREX.
      LWA_BAPE_VBAPX-VBELN = IT_TAB-VBELN.
      LWA_BAPE_VBAPX-POSNR = IT_TAB-POSNR.
      IF FDATU IS NOT INITIAL.
        LWA_BAPE_VBAPX-FDATU = 'X' .
      ENDIF.
      IF IM_BHDAT IS NOT INITIAL.
        LWA_BAPE_VBAPX-Q1Q2DAT = 'X' .
      ENDIF.
      IF IM_BHTIM IS NOT INITIAL.
        LWA_BAPE_VBAPX-Q1Q2TIM = 'X' .
      ENDIF.       LIT_PAREX-STRUCTURE = 'BAPE_VBAPX'.
      LIT_PAREX+30 = LWA_BAPE_VBAPX.
      APPEND LIT_PAREX.     ENDIF. *&-->日志
    CLEAR: LW_LOG.
    LW_LOG-INTTY     = 'A1'.
    LW_LOG-DIRECT    = '2'.
    LW_LOG-INFTX     = '订单计划行标记,以及备货日期更新'.
    LW_LOG-CAFUN     = 'ZRFC_SO_CHANGE'.   "调用函数
    LW_LOG-IKEY1     = REQ_DLV_BL.
    LW_LOG-IKEY2     = REQ_DATE.
    LW_LOG-IKEY3     = IM_BHDAT.
    LW_LOG-IKEY3     = FDATU.
    CONCATENATE ZAUTL IM_ZXQBL INTO LW_LOG-LOGTX.
    APPEND LW_LOG TO LT_LOG. *&-->行项目
    CLEAR: ORDER_ITEM_IN,ORDER_ITEM_INX.
    ORDER_ITEM_IN-ITM_NUMBER = IT_TAB-POSNR.
    APPEND ORDER_ITEM_IN.
    ORDER_ITEM_INX-ITM_NUMBER = IT_TAB-POSNR.
    ORDER_ITEM_INX-UPDATEFLAG = 'U'.
    APPEND ORDER_ITEM_INX.   ENDLOOP. *&-->增强字段 抬头数据
  IF ZAUTL IS NOT INITIAL OR IM_ZXQBL IS NOT INITIAL.
    CLEAR:LWA_BAPE_VBAK,LWA_BAPE_VBAKX,LWA_VALUEPART.
    LWA_BAPE_VBAK-VBELN = SALESDOCUMENT.     IF ZAUTL IS NOT INITIAL.
      LWA_BAPE_VBAK-ZAUTL = ZAUTL.  "分批标记
    ENDIF.
    IF IM_ZXQBL IS NOT INITIAL.
      LWA_BAPE_VBAK-ZXQBL = IM_ZXQBL.  "保持原始需求标记
    ENDIF.
*    lwa_valuepart         = lwa_bape_vbak.
    LIT_PAREX-STRUCTURE   = 'BAPE_VBAK'.
    LIT_PAREX+30  = LWA_BAPE_VBAK.
    
APPEND LIT_PAREX.      CLEAR:LWA_BAPE_VBAK,LWA_VALUEPART.
    LWA_BAPE_VBAKX
-VBELN = SALESDOCUMENT.      IF ZAUTL IS NOT INITIAL.
      LWA_BAPE_VBAKX
-ZAUTL = 'X'. "分批标记
    
ENDIF.
    
IF IM_ZXQBL IS NOT INITIAL.
      LWA_BAPE_VBAKX
-ZXQBL = 'X'. "保持原始需求标记
    
ENDIF.

*    lwa_valuepart         = lwa_bape_vbakx.
    LIT_PAREX
-STRUCTURE   = 'BAPE_VBAKX'.
    LIT_PAREX+30  
= LWA_BAPE_VBAKX.
    
APPEND LIT_PAREX.      CLEAR:LWA_BAPE_VBAKX,LWA_VALUEPART.    ENDIF.    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
    
EXPORTING
      SALESDOCUMENT    
= SALESDOCUMENT
      ORDER_HEADER_INX 
= ORDER_HEADER_INX
    
TABLES
      
RETURN           = RETURN
      ORDER_ITEM_IN    
= ORDER_ITEM_IN
      ORDER_ITEM_INX   
= ORDER_ITEM_INX
      SCHEDULE_LINES   
= SCHEDULE_LINES
      SCHEDULE_LINESX  
= SCHEDULE_LINESX
      EXTENSIONIN      
= LIT_PAREX[].    READ TABLE RETURN WITH KEY TYPE = 'E'.
  
IF SY-SUBRC <> 0.
    
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      
EXPORTING
        
WAIT = 'X'.     E_STATU  = 'S'.
    E_MESS  
= '更新成功!'.      "保存日期
    
IF LT_LOG[] IS NOT INITIAL.
      
CALL FUNCTION 'ZF_SAVE_LOG'
        
TABLES
          IT_LOG 
= LT_LOG.
      
IF SY-SUBRC EQ 0.
        
COMMIT WORK.
      
ENDIF.
    
ENDIF.    ELSE.
    
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    E_STATU 
= 'E'.
    E_MESS  
= RETURN-MESSAGE.
    
CLEAR: LT_LOG[].
  
ENDIF.    CLEAR: SALESDOCUMENT,
         ORDER_HEADER_INX
,
         RETURN[]
,
         SCHEDULE_LINES[]
,
         SCHEDULE_LINESX[]
. ENDFUNCTION.

销售订单增强字段 bapi更新的更多相关文章

  1. SAP销售订单屏幕字段控制隐藏,必输等

    1.T-CODE:shd0 创建变式  , 点击确认按钮后,SAP进入下一个屏幕,然后重复上面的操作,直到所有屏幕已完成设置. 如果后续屏幕不需要设置,可点击“退出并保存”按钮.保存后,进入下图所示页 ...

  2. SAP MM 销售订单库存与普通库存之间相互转换过账后对于EBEWH以及MBEWH表的更新

    SAP MM 销售订单库存与普通库存之间相互转换过账后对于EBEWH以及MBEWH表的更新 1,DEMO数据 物料号:1300009995 工厂:2160 销售订单号/item号:0010097627 ...

  3. 如何用代码填充S/4HANA销售订单行项目的数量字段

    我的任务是用代码生成S/4HANA销售订单(Sales Order)的行项目,并且填充对应的quantity(数量)值. 最开始我用了下面的代码,把quantity的值写入item字段target_q ...

  4. 销售订单、外向交货单、交货 bapi

    转自[http://www.cnblogs.com/elegantok/archive/2009/10/18/1585398.html]***********SALES ORDER INPUT CRE ...

  5. 【ABAP系列】SAP 销售订单的行项目里条件的增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...

  6. 【ABAP系列】SAP VA02修改销售订单的BAPI举例

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP VA02修改销售订单的B ...

  7. SAP四代增强实现:销售订单复制项目文本时不需要显示文本框和回车

    最近接收到一个业务需求,在SAP依据销售订单复制时,如果订单里面的项目有多个文本,系统就会显示复制的文本框处理,让用户选择是否复制,这个就让销售很不舒服,如果有几十个项目,每个项目有几个文本,那就就要 ...

  8. VA01销售订单批导问题解决

    1业务场景 事务代码:VA01创建销售订单,VA02修改销售订单 可以通过BAPI_SALESORDER_CREATEFROMDAT2批量创建 可以通过BAPI_SALESORDER_CHANGE批量 ...

  9. 销售订单(SO)-API-更新销售订单

    更新销售订单和创建销售订单差不多,调用的API相同,只是传入的时候标识不一样:operation := oe_globals.g_opr_update 示例代码如下: PROCEDURE update ...

随机推荐

  1. jQuery 基础学习

    jQuery 可以按照网站进行查看 http://jquery.cuishifeng.cn/ jQuery 模块  <=>类库 DOM/BOM/JavaScript的类库 一 查找元素 j ...

  2. ylb:SQL 表的高级查询-多表连接和子查询

    ylbtech-SQL Server: SQL Server-表的高级查询-多表连接和子查询 SQL Server 表的高级查询-多表连接和子查询. 1,ylb:表的高级查询-多表连接和子查询 返回顶 ...

  3. 立体3D方式 【转】

    目前为止,至少有四种普遍使用的立体3D传输格式,分别称为frame sequential(帧连续),frame packing(帧封装),side-by-side(并排),以及checkerboard ...

  4. 自主研发异步通信框架Minma(支持长连接和短连接)

    Minma是英文Minma Is Not Mina的简称 该框架采用Java NIO的核心技术,实现了基于事件驱动的多线程异步通信框架,支持常见的长连接(腾讯QQ)和短连接(http通信) 对于开发人 ...

  5. STL源代码分析--第二级空间配置器

    本文解说SGI STL空间配置器的第二级配置器. 相比第一级配置器,第二级配置器多了一些机制,避免小额区块造成内存的碎片.不不过碎片的问题,配置时的额外负担也是一个大问题.由于区块越小,额外负担所占的 ...

  6. javascript回调函数,闭包作用域,call,apply函数解决this的作用域问题

    在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...

  7. [BLE--Link Layer]物理信道

    简述 有线通信,是用电缆直接连接.然后分距离的长短.有些会须要载入波,信号也可能会经过不同的调制方式调制. 无线通信也是一样,仅仅是信号的传输是通过射频了,通过在某一频段.对无线信道进行调制,将数据发 ...

  8. SVN 服务端、客户端安装及配置、导入导出项目

    http://blog.csdn.net/xcy13638760/article/details/12994923 http://www.cnblogs.com/armyfai/p/3985660.h ...

  9. 如何修改eclipse的默认字符集和修改中文乱码

    转载,以供以后学习.谢谢 有时候 java代码,导入eclipse中会出现 乱码的问题,通过修改字符集就可以解决. 看下面图片演示过程. 发表在 使用教程 | 标签为 eclipse, 乱码 | 留下 ...

  10. Iconfot阿里妈妈-css高级应用

    矢量图标替换教程 首先进入:http://www.iconfont.cn/ 搜索你分类的关键字---然后加入购物车 加入购物车之后,下载到本地用浏览器打开demo.html 把a class=“原来样 ...