UB单修改

FUNCTION Z_SD_UB_CHANGE.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(IM_EBELN) TYPE  EBELN
*"     REFERENCE(IM_TYPE) TYPE  CHAR4
*"     REFERENCE(IM_BUDAT) TYPE  BUDAT DEFAULT SY-DATUM
*"  TABLES
*"      IT_ITEM STRUCTURE  ZSDS0025
*"      IT_RETURN STRUCTURE  BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------
***********************************************************************
*  Function <Z_SD_UB_CHANGE>
************************************************************************
*
*  作者:            DZHANGHUI
*  完成日期:        2014/12/31
*  描述:            UB单返写 发货
************************************************************************
*  版本号 日期   作者   修改描述 功能更改说明书
************************************************************************
*  1.  YYYY/MM/DD author  Read dataset from app. Server @001
************************************************************************
  DATA : LV_EBELN    TYPE BAPIMEPOHEADER-PO_NUMBER,
         LV_ITEM     LIKE GS_POITEM-PO_ITEM,
         LV_WERKS    LIKE GS_POITEM-PLANT,
         LV_SUPPL    LIKE GS_POITEM-SUPPL_STLOC,
         LV_CAT      LIKE GS_POITEM-ITEM_CAT,
         LV_VAL_TYPE LIKE GS_POITEM-VAL_TYPE,
         LV_BWTTY    LIKE MARC-BWTTY.         "评估类别

  DATA : LS_ITEM TYPE ZSDS0025.

  LV_EBELN = IM_EBELN.

  REFRESH : GT_POITEM,GT_POITEMX,
            GT_POSCHEDULE,GT_POSCHEDULEX.

* 获取PO的Detail
  CALL FUNCTION ‘BAPI_PO_GETDETAIL1‘
    EXPORTING
      PURCHASEORDER = LV_EBELN
    TABLES
      POITEM        = GT_POITEM.

*  IF IM_TYPE = ‘SJ‘."素金
*   删除原来的行项目
  LOOP AT GT_POITEM INTO GS_POITEM.
    IF ( GS_POITEM-BATCH IS INITIAL OR GS_POITEM-BATCH  EQ GS_POITEM-MATERIAL ) AND
        GS_POITEM-DELETE_IND IS INITIAL.
      GS_POITEM-DELETE_IND = ‘D‘.
      MODIFY GT_POITEM FROM GS_POITEM INDEX SY-TABIX TRANSPORTING DELETE_IND.

      GS_POITEMX-PO_ITEM = GS_POITEM-PO_ITEM.
      GS_POITEMX-DELETE_IND = ‘X‘.
      APPEND GS_POITEMX TO GT_POITEMX.
    ENDIF.

    LV_ITEM = GS_POITEM-PO_ITEM.
    LV_WERKS = GS_POITEM-PLANT.
    LV_SUPPL = GS_POITEM-SUPPL_STLOC.
    LV_CAT   = GS_POITEM-ITEM_CAT.
    LV_VAL_TYPE   = GS_POITEM-VAL_TYPE.
  ENDLOOP.

*   获取工厂 项目类型
  IF SY-SUBRC NE 0.
    READ TABLE GT_POITEM INTO GS_POITEM INDEX 1.
    LV_ITEM = GS_POITEM-PO_ITEM.
    LV_WERKS = GS_POITEM-PLANT.
    LV_SUPPL = GS_POITEM-SUPPL_STLOC.
    LV_CAT   = GS_POITEM-ITEM_CAT.
    LV_VAL_TYPE   = GS_POITEM-VAL_TYPE.
  ENDIF.

*   新增需要发货的行项目
  LOOP AT IT_ITEM INTO LS_ITEM.
*   检查不存在相同物料和批次的行项目
    READ TABLE GT_POITEM INTO GS_POITEM WITH KEY MATERIAL = LS_ITEM-ZSPKH BATCH = LS_ITEM-ZSPPC DELETE_IND = ‘‘.
    CHECK SY-SUBRC NE 0.

    ADD 10 TO LV_ITEM.

    CLEAR GS_POITEM.
    GS_POITEM-PO_ITEM     = LV_ITEM.
    GS_POITEM-MATERIAL    = LS_ITEM-ZSPKH.
    GS_POITEM-PLANT       = LV_WERKS.
    GS_POITEM-BATCH       = LS_ITEM-ZSPPC.
    GS_POITEM-SUPPL_STLOC = LV_SUPPL.
    GS_POITEM-QUANTITY    = LS_ITEM-ZSPJH.
    GS_POITEM-ITEM_CAT    = LV_CAT.
*     检查物料是否启用评估类别
    PERFORM FRM_CHECK_VALUE_TYPE USING    LV_WERKS LS_ITEM-ZSPKH
                                 CHANGING LV_BWTTY.
*     评估类型
    IF LV_BWTTY EQ ‘X‘.
      GS_POITEM-VAL_TYPE    = LS_ITEM-ZSPPC.
    ENDIF.

    APPEND GS_POITEM TO GT_POITEM.

    CLEAR GS_POITEMX.
    GS_POITEMX-PO_ITEM     = LV_ITEM.
    GS_POITEMX-MATERIAL    = ‘X‘.
    GS_POITEMX-PLANT       = ‘X‘.
    GS_POITEMX-BATCH       = ‘X‘.
    GS_POITEMX-SUPPL_STLOC = ‘X‘.
    GS_POITEMX-QUANTITY    = ‘X‘.
    GS_POITEMX-ITEM_CAT    = ‘X‘.
    IF LV_BWTTY EQ ‘X‘.
      GS_POITEMX-VAL_TYPE    = ‘X‘.
    ENDIF.
    APPEND GS_POITEMX TO GT_POITEMX.

*   更新计划行
    CLEAR GS_POSCHEDULE.
    GS_POSCHEDULE-PO_ITEM = LV_ITEM.
    GS_POSCHEDULE-SCHED_LINE = 1.
    GS_POSCHEDULE-DELIVERY_DATE = IM_BUDAT.
    APPEND GS_POSCHEDULE TO GT_POSCHEDULE.

    CLEAR GS_POSCHEDULEX.
    GS_POSCHEDULEX-PO_ITEM = LV_ITEM.
    GS_POSCHEDULEX-SCHED_LINE = 1.
    GS_POSCHEDULEX-DELIVERY_DATE = ‘X‘.
    APPEND GS_POSCHEDULEX TO GT_POSCHEDULEX.
  ENDLOOP.
*  ELSEIF IM_TYPE = ‘XQ‘."镶嵌
*    LOOP AT IT_ITEM INTO LS_ITEM.
**     检查是否存在相同的物料和批次,若存在则不需返写
*      READ TABLE GT_POITEM INTO GS_POITEM WITH KEY MATERIAL = LS_ITEM-ZSPKH
*                                                   BATCH    = LS_ITEM-ZSPPC.
*      CHECK SY-SUBRC NE 0.
*
**     查找无批次的行项目 - 返写批次信息
*      READ TABLE GT_POITEM INTO GS_POITEM WITH KEY MATERIAL = LS_ITEM-ZSPKH
*                                                   BATCH    = ‘‘.
*      IF SY-SUBRC EQ 0.
*        GS_POITEM-BATCH = LS_ITEM-ZSPPC.
*        GS_POITEM-QUANTITY = LS_ITEM-ZSPJH.
*        MODIFY GT_POITEM FROM GS_POITEM INDEX SY-TABIX TRANSPORTING BATCH.
*
*        GS_POITEMX-PO_ITEM = GS_POITEM-PO_ITEM.
*        GS_POITEMX-BATCH = ‘X‘.
*        GS_POITEMX-QUANTITY = ‘X‘.
*        APPEND GS_POITEMX TO GT_POITEMX.
*      ENDIF.
*    ENDLOOP.
*  ENDIF.
  CHECK GT_POITEM IS NOT INITIAL.

* 修改订单
  CALL FUNCTION ‘BAPI_PO_CHANGE‘
    EXPORTING
      PURCHASEORDER = LV_EBELN
    TABLES
      RETURN        = GT_RETURN
      POITEM        = GT_POITEM
      POITEMX       = GT_POITEMX
      POSCHEDULE    = GT_POSCHEDULE
      POSCHEDULEX   = GT_POSCHEDULEX.

  LOOP AT GT_RETURN INTO GS_RETURN WHERE TYPE = ‘X‘ OR
                                         TYPE = ‘A‘ OR
                                         TYPE = ‘E‘.
    EXIT.
  ENDLOOP.

  IF SY-SUBRC EQ 0.
    CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK‘.
  ELSE.
    CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘
      EXPORTING
        WAIT = ‘X‘.
  ENDIF.

  IT_RETURN[] = GT_RETURN.
ENDFUNCTION.
FORM FRM_CHECK_VALUE_TYPE  USING    P_WERKS
                                    P_MATNR
                           CHANGING P_BWTTY.
  CLEAR P_BWTTY.

  SELECT SINGLE BWTTY INTO P_BWTTY
    FROM MARC
    WHERE WERKS = P_WERKS
      AND MATNR = P_MATNR.
ENDFORM.                    " FRM_CHECK_VALUE_TYPE
时间: 2024-12-31 19:07:24

UB单修改的相关文章

关于表单修改

今天的任务主要是修改表单的提交,由于任务未完成就总结下犯的错误 1.由于受到昨天将数据填入表单的"启发",今天理所应当的觉得修改表单所要传给PHP的数据也可以这样处理,结果没考虑到它们存在着本质上的区别,表单的修改数据的传输是用户填入的,而不是简单的target获取. 2.在错误之中,将事件委托的处理函数加在另一个事件委托的里面,以为事件处理可以共用,这个错误和昨天犯得将table元素放在form容器里面类似吧. 今天就到这吧,等明天找到解决方法了再来具体的修改提交方法补全.

Shopnc 版权修改及招商入驻提交表单修改

最近在研究shopnc商城系统,偶尔蛋疼的在研究前端用户体验,果不其然,发现用户转入驻为商家环节异常复杂,系统原始目地是好的.但对于用户商家来说,提供如此复杂详细的资料,确实有些不妥,好吧,解决问题先,看我怎么把它干掉. 吐槽一下:已有几个月的时间没有接触代码这块,起初修改起来有些吃不消,完全没有思路,甚至简单的注释标签都使用错误了.以前对shopex商城系统相对比较了解,知道每个文件存在的路径,同样是PHP语言开发的,所以路径上相差不会太大,这个标准确实让程序员省事了不少. 一.如何修改sho

spring mvc表单修改提交

实际应用中,列表中的单条记录的修改,可能需要传很多对象参数到后台服务器,Spring MVC表单标签<form:> 提供了一种简洁的提交方式. 1 <form id="form1" class="form-horizontal chukong_form" method="post" 2 action="${ctx}/channel/sdkversion/postedit.do"> 3 <form:

Django form表单修改数据

form: #!/usr/bin/env python #coding:utf8 from django.forms import Form,ModelForm import models class CourseModelForm(ModelForm): class Meta: model = models.Course exclude = () def __init__(self,*args,**kwargs): super(CourseModelForm,self).__init__(*a

提交form表单---修改密码 ajax、jQuery

<form id ="password" method="post"> <table > <tr> <td>原密码:</td> <td><input type="password" class="easyui-validatebox" required="required" name="oldPassw"/&g

ExtJs如何判断form表单是否被修改过详解

1.Extjs表单提交主要有三种方式: 1, EXT的form表单ajax提交(默认提交方式)      相对单独的ajax提交来说优点在于能省略写参数数组 ,form.getForm().submit 3.EXT的ajax提交,Ext.Ajax.request 2.EXT表单的非ajax提交 在我看来:采用第1,2种都很方便,关键是Ext.Ajax.request传递给后台是一个字符串形式的,需要Jason解析 2.记录代码问题: 1 SaveStudentDetails:function(b

ThinkPHP讲解(七)——修改删除

修改数据 方式一:数组方式,直接将数据库里需要修改的内容进行修改 function Update() { //1.数组方式 $model=D("Info"); $attr=array( "Code"=>"p001", "Name"=>"张三", "Sex"=>true, "Nation"=>"n001", "Bir

datagrid 添加、修改、删除(转载)

原链接:JQueryEasyUI学习笔记(十)datagrid 添加.修改.删除 基于datagrid框架的删除.添加与修改: 主要是批量删除,双击表单修改.选中行修改,增加行修改,再有就是扩展editor的方法,无需废话,直接上代码,代码中的注释写的很详细: <script type="text/javascript" charst="utf-8">var editFlag = undefined;//设置一个编辑标记 //因为layout框架指向hr

第 一 百 天上课 PHP TP框架 数据库修改和删除

修改的三种方式 //造数组的方式修改 public function xiugai1() { $db=D('yonghu'); $attr=array ( 'zhanghao'=>001, //主键值需要与数据库相同 'mima'=>123, 'mingzi'=>'刘大', 'xingbie'=>'男', 'shengri'=>'1990-07-09', 'shijian'=>'2016-6-16 14:09:30', 'shengfen'=>'用户', 'zhu