abap 交货单过账的增强点

时间: 2024-04-27 21:20:45 浏览: 277
ABAP交货单过账的增强点包括以下几个方面: 1. 交货单的数据结构增强:可以通过添加字段、添加表格等方式扩展交货单数据结构,以满足不同业务场景的需求。 2. 过账逻辑增强:可以通过在过账过程中嵌入自定义逻辑,实现特殊的业务逻辑需求。例如,在过账前或过账后进行特定的检查或处理。 3. 报表输出增强:可以通过添加自定义的报表输出,增强交货单的报表展示功能,满足特定的业务需求。 4. 用户界面增强:可以通过添加自定义的屏幕元素或修改现有的屏幕元素,增强用户界面的交互性和易用性,提高用户体验。 需要注意的是,增强点的具体实现方式会因应用场景而异,需要根据具体情况进行设计和实现。
相关问题

abap 交货单过账的可以做增强的位置

### 回答1: 在ABAP中,交货单过账可以在以下几个位置进行增强: 1. 交货单过账前的准备操作:可以在过账前对交货单进行一些检查或修改。 2. 交货单过账期间的业务逻辑:可以在过账期间执行一些特定的业务逻辑。 3. 交货单过账后的后续操作:可以在过账后执行一些额外的操作,比如发送邮件或更新其他系统。 可以使用ABAP系统中的增强技术(比如用户扩展和实现点技术)来完成这些增强。 ### 回答2: 在SAP系统中,ABAP交货单过账可以通过增强来实现额外的功能或逻辑。以下是一些可以进行增强的位置: 1. 交货单过账的开始:可以在交货单开始过账之前添加自定义的代码逻辑,例如,检查特定字段是否满足某些条件或者执行一些需要在过账之前完成的计算。 2. 物料清单(BOM)检查:在进行交货单过账之前,可以通过增强来执行物料清单的检查。例如,检查所有子项物料的可用性或验证物料清单中的相互依赖关系。 3. 凭证生成:通过增强交货单的凭证生成过程,可以自定义凭证的内容或添加额外的凭证行项目。例如,根据特定的业务需求,自动添加某些文本或计算额外的费用项目。 4. 货物接收和检验:可以通过增强交货单的过账来实现货物接收和检验流程。例如,在过账时,检查货物的质量或执行附加的检验步骤。 5. 出库和库位管理:在交货单过账期间,可以通过增强来实现出库过程的自定义逻辑。例如,根据特定的库位策略或业务需求,自动选择合适的出库库位。 总之,ABAP交货单过账的增强位置可以在交货单开始、物料清单检查、凭证生成、货物接收和检验以及出库和库位管理等方面进行。通过增强,可以根据特定的业务需求或流程,自定义交货单过账的逻辑,以满足企业的需求。

sap 交货单 过账发货增强

### 关于 SAP 交货单过账发货的增强功能实现 #### 使用 MIGO 移动类型处理委外采购订单和交货单的关系 对于涉及外部供应商的物料管理操作,在执行 `MIGO` 的移动类型为 `541` 时,会基于输入的采购订单号完成从 ERP 到 EWM (Extended Warehouse Management) 的数据传递过程。具体来说,当在外向交货过程中使用此移动类型进行过账后,系统会在 ERP 中生成相应的外向交货文档,并将其同步到 EWM 系统中作为配送通知(Delivery Notification, DN)[^1]。 然而,默认情况下 SAP 并不会自动维护这些由委外采购活动产生的交货单与其对应的采购订单之间的关联信息。为了满足特定业务场景下的报告需求或其他分析目的,有必要通过定制化开发来补充这一缺失的功能特性——即建立并保存两者间的映射关系。 #### 应用 BADI 扩展点增强交货单创建逻辑 针对希望在创建新的销售交货单据期间(如通过事务码 `VL01N`, `VL10A` 创建新交货单或更改现有交货单)施加额外控制条件的情形,则可以考虑利用 Business Add-In (BADI) 技术来进行扩展。特别是对于那些想要修改屏幕布局或是添加验证规则的需求而言,这种方法尤为适用[^2]。 例如,可以通过重写 `MV50AFZ1` 函数模块中的用户退出(User Exit)`userexit_save_document_prepare` 或者 `userexit_save_document` 来实现在保存前后的各种自定义行为。这允许开发者根据实际应用场景灵活调整界面显示内容以及设置必要的输入约束,从而确保只有符合条件的数据才能被成功提交至后台数据库表中存储。 ```abap DATA: lv_doc_type TYPE vbeln. CALL FUNCTION 'USEREXIT_SAVE_DOCUMENT_PREPARE' EXPORTING doc_type = lv_doc_type * IMPORTING * CHANGING * TABLES ENDFUNCTION. IF sy-subrc EQ 0. " Custom logic here to add restrictions or validations before saving the document ENDIF. ``` 上述代码片段展示了如何调用用户出口函数以实施前置检查机制;如果返回状态码 (`sy-subrc`) 表明操作无误,则可以在该条件下编写进一步的具体业务逻辑,比如应用某些限制措施或者触发其他事件响应程序等。
阅读全文

相关推荐

FUNCTION /sc1/ftd_mm_migo. *"---------------------------------------------------------------------- *"*"本地接口: *"  TABLES *"      ET_RETURN STRUCTURE  /SC1/FTD_MM_BAPIRET *"      IT_INPUT STRUCTURE  /SC1/S_WIS_INPUT *"----------------------------------------------------------------------   DATA: lt_po          TYPE STANDARD TABLE OF /sc1/s_wis_input,         lt_inbound_do  TYPE STANDARD TABLE OF /sc1/s_wis_input,         lt_outbound_do TYPE STANDARD TABLE OF /sc1/s_wis_input,         lt_tl          TYPE STANDARD TABLE OF /sc1/s_wis_input,"铁笼物料做无采购订单收货         lt_ekpo        TYPE STANDARD TABLE OF ty_ekpo,         lt_return      TYPE STANDARD TABLE OF /sc1/ftd_mm_bapiret,         lt_/sc1/mm_migo_log TYPE STANDARD TABLE OF /sc1/mm_migo_log.   "拆分数据&过滤掉已经收货成功的数据   PERFORM split_data TABLES it_input       "传入参数                             lt_po          "采购订单                             lt_inbound_do  "内向交货                             lt_outbound_do "外向交货                             lt_tl          "铁笼物料                             lt_ekpo.   "采购订单收货   PERFORM action_po TABLES lt_po  lt_ekpo  lt_return lt_/sc1/mm_migo_log.   "内向交货单收货   PERFORM action_inbound_do TABLES lt_inbound_do  lt_return lt_/sc1/mm_migo_log.   "外向交货单收货   PERFORM action_outbound_do TABLES lt_outbound_do  lt_return lt_/sc1/mm_migo_log.   "铁笼物料收货   PERFORM action_tl TABLES lt_tl  lt_return lt_/sc1/mm_migo_log.   "保存日志   PERFORM save_log TABLES lt_return lt_/sc1/mm_migo_log.   "编辑消息   PERFORM edit_msg TABLES lt_return et_return . ENDFUNCTION. *----------------------------------------------------------------------* ***INCLUDE /SC1/LFTD_MM_WISF03. *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *&      Form  GET_DATA_MIO1_NEW *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *      -->P_LT_ITEM[]  text *      -->P_LS_HEAD  text *      <--P_LT_RETURN1  text *      <--P_LV_EBELN  text *      <--P_LV_VBELN  text *----------------------------------------------------------------------* FORM action_po TABLES   pt_po STRUCTURE /sc1/s_wis_input                         pt_ekpo TYPE ty_t_ekpo                         et_return STRUCTURE /sc1/ftd_mm_bapiret                         et_/sc1/mm_migo_log STRUCTURE /sc1/mm_migo_log.   DATA: lt_po_sh     TYPE STANDARD TABLE OF ty_po_sh.   DATA: ls_po_sh     TYPE ty_po_sh.   DATA: lt_ekbe      TYPE STANDARD TABLE OF ekbe,         lt_ekbe_sum  TYPE STANDARD TABLE OF ekbe,         ls_ekbe_sum  TYPE ekbe,         ls_po        TYPE /sc1/s_wis_input,         lv_menge_temp TYPE ekpo-menge,         lv_end_flg    TYPE char1,         lt_ekpo_temp  TYPE ty_t_ekpo.   DATA:ls_return TYPE /sc1/ftd_mm_bapiret .   FIELD-SYMBOLS:<ls_ekpo> TYPE ty_ekpo,                 <ls_po>   TYPE  /sc1/s_wis_input.   CHECK pt_po[] IS NOT INITIAL.   READ TABLE et_return with KEY type = 'E' TRANSPORTING NO FIELDS .   CHECK sy-subrc <> 0.   "(2)根据上一步获得的信息,获取每个项目当前待入库的剩余量;   "(2)-1:获取采购订单历史数据   IF pt_ekpo[] IS NOT INITIAL.     SELECT ebeln            ebelp            menge            shkzg       FROM ekbe       INTO CORRESPONDING FIELDS OF TABLE lt_ekbe       FOR ALL ENTRIES IN pt_ekpo[]       WHERE ebeln = pt_ekpo-ebeln         AND ebelp = pt_ekpo-ebelp.   ENDIF.   "(2)-2:计算已收货总数量   LOOP AT lt_ekbe ASSIGNING FIELD-SYMBOL(<ls_ekbe>).     IF <ls_ekbe>-shkzg = 'H'.       <ls_ekbe>-menge  = <ls_ekbe>-menge * -1.     ENDIF.     CLEAR <ls_ekbe>-shkzg.     COLLECT <ls_ekbe> INTO lt_ekbe_sum.   ENDLOOP.   "(2)-3:计算每个行项目的剩余库存   LOOP AT pt_ekpo ASSIGNING <ls_ekpo>.     READ TABLE  lt_ekbe_sum INTO ls_ekbe_sum                          WITH KEY ebeln = <ls_ekpo>-ebeln                                   ebelp = <ls_ekpo>-ebelp .     IF sy-subrc = 0."采购订单部分收货       <ls_ekpo>-menge_re =  <ls_ekpo>-menge - ls_ekbe_sum-menge.     ELSE."采购订单没有进行过收货       <ls_ekpo>-menge_re = <ls_ekpo>-menge.     ENDIF.   ENDLOOP.   "(3)(4)入库数量分配   SORT pt_po BY matnr.   LOOP AT pt_po ASSIGNING <ls_po>.     MOVE-CORRESPONDING <ls_po> TO ls_po_sh.     "先本单全收货     LOOP AT pt_ekpo ASSIGNING <ls_ekpo> WHERE matnr = <ls_po>-matnr AND ebeln = <ls_po>-vbeln.       "(本次收货数量 - 采购单剩余数量) 大于0说明采购订单剩余量不够收货用,采购订单剩余收货数量一定为0       IF ( <ls_po>-lfimg - <ls_ekpo>-menge_re ) >= 0.         <ls_ekpo>-menge_sh = <ls_ekpo>-menge_sh + <ls_ekpo>-menge_re.         "SKU入库数量         <ls_po>-lfimg = <ls_po>-lfimg - <ls_ekpo>-menge_re.         ls_po_sh-lfimg = <ls_ekpo>-menge_re."采购订单本次收货数量=采购订单剩余数量 1         <ls_ekpo>-menge_re = 0.             "采购订单剩余收货数量一定为0           2,1和2的赋值顺序不能变         ls_po_sh-ebeln = <ls_ekpo>-ebeln.         ls_po_sh-ebelp = <ls_ekpo>-ebelp.         COLLECT ls_po_sh INTO lt_po_sh.       ELSE."采购订单剩余量>本次收货量         <ls_ekpo>-menge_sh = <ls_ekpo>-menge_sh + <ls_po>-lfimg .         <ls_ekpo>-menge_re = <ls_ekpo>-menge_re - <ls_po>-lfimg.         ls_po_sh-lfimg = <ls_po>-lfimg.  "收货数量         ls_po_sh-ebeln = <ls_ekpo>-ebeln.         ls_po_sh-ebelp = <ls_ekpo>-ebelp.         COLLECT ls_po_sh INTO lt_po_sh.         <ls_po>-lfimg = 0. "待收货数量为0,结束         EXIT.       ENDIF.     ENDLOOP.     "如果本单全收货后还有剩余,则在剩下的po中同物料进行收货     IF <ls_po>-lfimg  > 0."       LOOP AT pt_ekpo ASSIGNING <ls_ekpo> WHERE matnr = <ls_po>-matnr .         IF  <ls_ekpo>-ebeln <> <ls_po>-vbeln.           IF ( <ls_po>-lfimg - <ls_ekpo>-menge_re ) >= 0.             ls_po_sh-lfimg = <ls_ekpo>-menge_re."收货数量           ELSE.             ls_po_sh-lfimg = <ls_po>-lfimg."收货数量           ENDIF.           ls_po_sh-ebeln = <ls_ekpo>-ebeln.           ls_po_sh-ebelp = <ls_ekpo>-ebelp.           COLLECT ls_po_sh INTO lt_po_sh.           "SKU入库数量           <ls_po>-lfimg = <ls_po>-lfimg - <ls_ekpo>-menge_re.           "SKU剩余入库数量           <ls_ekpo>-menge_re = <ls_ekpo>-menge_re - <ls_po>-lfimg.           IF <ls_po>-lfimg <= 0."SKU入库数量已分配完成,结束分配             EXIT.           ELSEIF <ls_po>-lfimg > 0."SKU入库数量未分配完,需要继续分配           ENDIF.         ENDIF.       ENDLOOP.     ENDIF.   ENDLOOP.   SORT pt_ekpo BY matnr.   LOOP AT pt_po INTO ls_po.     IF ls_po-lfimg > 0."没有       ls_return-uuid = ls_po-uuid.       ls_return-type = 'E'.       ls_return-message =  '库存数量不足'.       APPEND ls_return TO et_return.       DELETE  lt_po_sh WHERE matnr = ls_po-matnr.     ENDIF.   ENDLOOP.   "收货   SORT lt_po_sh BY ebeln ebelp.   PERFORM goodsmvt_create_new TABLES et_return  USING lt_po_sh.   PERFORM edit_log TABLES pt_po                           et_return                           et_/sc1/mm_migo_log. ENDFORM.                    " GET_DATA_MIO1_NEW *&---------------------------------------------------------------------* *&      Form  GOODSMVT_CREATE *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *  -->  p1        text *  <--  p2        text *----------------------------------------------------------------------* FORM goodsmvt_create  TABLES et_return STRUCTURE /sc1/ftd_mm_bapiret                       USING pt_ekpo TYPE ty_t_ekpo                            ps_po    TYPE /sc1/s_wis_input.   "BAPI_GOODSMVT_CREATE 用内表 begin   DATA lv_mblnr            TYPE mseg-mblnr.   DATA ls_goodsmvt_header  TYPE bapi2017_gm_head_01.   DATA ls_code             LIKE  bapi2017_gm_code.   DATA ls_goodsmvt_item    TYPE bapi2017_gm_item_create.   DATA lt_goodsmvt_item    TYPE STANDARD TABLE OF  bapi2017_gm_item_create.   DATA lt_return           TYPE STANDARD TABLE OF bapiret2.   DATA ls_return           TYPE bapiret2.   "BAPI_GOODSMVT_CREATE 用内表 end   DATA: ls_ekpo            TYPE ty_ekpo.   DATA: ls_et_return       TYPE /sc1/ftd_mm_bapiret.   LOOP AT pt_ekpo INTO ls_ekpo.     CLEAR ls_goodsmvt_item.     ls_goodsmvt_item-material  = ps_po-matnr.     ls_goodsmvt_item-move_type =  '101'.    "移动类型     ls_goodsmvt_item-mvt_ind   = 'B'.       "移动标识     ls_goodsmvt_item-entry_qnt = ls_ekpo-menge_sh.     ls_goodsmvt_item-entry_uom = ps_po-meins.     ls_goodsmvt_item-plant     = ps_po-werks.     ls_goodsmvt_item-stge_loc  = ps_po-lgort.     ls_goodsmvt_item-batch     = ps_po-charg.     ls_goodsmvt_item-prod_date = ps_po-hsdat."生产日期     ls_goodsmvt_item-expirydate = ps_po-vfdat."货架寿命到期日     ls_goodsmvt_item-vendrbatch = ps_po-licha."供应商批次     ls_goodsmvt_item-stck_type  = ps_po-insmk.     ls_goodsmvt_item-po_number  = ls_ekpo-ebeln.     ls_goodsmvt_item-po_item    = ls_ekpo-ebelp.     IF ls_goodsmvt_item-entry_qnt IS NOT INITIAL.       APPEND ls_goodsmvt_item TO lt_goodsmvt_item.     ENDIF.   ENDLOOP.   ls_goodsmvt_header-pstng_date  = ps_po-wadat_ist."凭证中的过帐日期   ls_goodsmvt_header-doc_date    = sy-datum."凭证中的凭证日期   ls_goodsmvt_header-pr_uname    = sy-datum.    "用户名   ls_goodsmvt_header-ref_doc_no  = ls_ekpo-ebeln.   ls_code-gm_code                = '01'.  "按照采购订单收货   CALL FUNCTION 'BAPI_GOODSMVT_CREATE'     EXPORTING       goodsmvt_header  = ls_goodsmvt_header       goodsmvt_code    = ls_code     IMPORTING       materialdocument = lv_mblnr     TABLES       goodsmvt_item    = lt_goodsmvt_item       return           = lt_return.   READ TABLE lt_return WITH KEY  type = 'E' INTO ls_return.   IF  sy-subrc = 0.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .     ls_et_return-uuid = ps_po-uuid.     ls_et_return-type = 'E'.     LOOP AT lt_return INTO ls_return WHERE type = 'E' .       CONCATENATE ls_et_return-message ls_return-message '|' INTO ls_et_return-message.     ENDLOOP.   ELSE.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'       EXPORTING         wait = 'X'.     ls_et_return-uuid = ps_po-uuid.     ls_et_return-type = 'S'.     ls_et_return-message = ps_po-vbeln && '收货成功'.   ENDIF.   APPEND ls_et_return TO et_return. ENDFORM.                    " GOODSMVT_CREATE *&---------------------------------------------------------------------* *&      Form  ACTION_INBOUND_DO *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *      -->P_LT_INBOUND_DO  text *      -->P_LT_EKPO  text *      -->P_ET_RETURN  text *----------------------------------------------------------------------* FORM action_inbound_do  TABLES pt_inbound_do STRUCTURE /sc1/s_wis_input                           et_return STRUCTURE /sc1/ftd_mm_bapiret                         et_/sc1/mm_migo_log STRUCTURE /sc1/mm_migo_log.   DATA: lt_do_temp    TYPE STANDARD TABLE OF /sc1/s_wis_input,         ls_inbound_do TYPE /sc1/s_wis_input,         lv_end_flg    TYPE char1,         lv_exec_flg   TYPE char1.   CHECK pt_inbound_do[] IS NOT INITIAL.   READ TABLE et_return with KEY type = 'E' TRANSPORTING NO FIELDS .   CHECK sy-subrc <> 0.   SORT pt_inbound_do BY vbeln posnr.   LOOP AT pt_inbound_do INTO ls_inbound_do.     APPEND ls_inbound_do TO lt_do_temp.     AT END OF vbeln.       lv_end_flg = 'X'.     ENDAT.     IF lv_end_flg = 'X'.       CLEAR: lv_end_flg,lv_exec_flg.       "如果遇出错,剩余数据不进行收货       READ TABLE et_return with KEY type = 'E' TRANSPORTING NO FIELDS.       IF sy-subrc = 0.         CLEAR: lt_do_temp.         CONTINUE.       ENDIF.       "比较接口传入的信息和系统中的内向交货单信息,行项目数或者数量不相同,则进行修改操作       PERFORM inbound_do_update TABLES  lt_do_temp et_return                                CHANGING lv_exec_flg.       "批次拆分       PERFORM inbound_do_batch_split TABLES  lt_do_temp et_return                                    CHANGING lv_exec_flg.       "拣配       PERFORM do_picking TABLES  lt_do_temp et_return                                CHANGING lv_exec_flg.       "过账       PERFORM inbound_do_confirm TABLES  lt_do_temp et_return                                CHANGING lv_exec_flg.       PERFORM edit_log TABLES lt_do_temp                               et_return                               et_/sc1/mm_migo_log.       CLEAR: lt_do_temp,lv_end_flg.     ENDIF.   ENDLOOP. ENDFORM.                    " ACTION_INBOUND_DO *&---------------------------------------------------------------------* *&      Form  ACTION_OUTBOUND_DO *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *      -->P_LT_INBOUND_DO  text *      -->P_LT_EKPO  text *      -->P_ET_RETURN  text *----------------------------------------------------------------------* FORM action_outbound_do  TABLES pt_outbound_do STRUCTURE /sc1/s_wis_input                           et_return STRUCTURE /sc1/ftd_mm_bapiret                         et_/sc1/mm_migo_log STRUCTURE /sc1/mm_migo_log.   DATA: lt_do_temp  TYPE STANDARD TABLE OF /sc1/s_wis_input,         ls_outbound_do TYPE /sc1/s_wis_input,         lv_end_flg  TYPE char1,         lv_exec_flg TYPE char1.   CHECK pt_outbound_do[] IS NOT INITIAL.   READ TABLE et_return with KEY type = 'E' TRANSPORTING NO FIELDS .   CHECK sy-subrc <> 0.   SORT pt_outbound_do BY vbeln posnr.   "从数据库表获取交货单数量并与传入数量进行对比(以传入数量为准) 在小于等于数据库交货单数量的情况下对交货单进行修改   LOOP AT pt_outbound_do INTO ls_outbound_do.     APPEND ls_outbound_do TO lt_do_temp.     AT END OF vbeln.       lv_end_flg = 'X'.     ENDAT.     IF lv_end_flg = 'X'.       CLEAR: lv_end_flg,lv_exec_flg.       READ TABLE et_return with KEY type = 'E' TRANSPORTING NO FIELDS.       IF sy-subrc = 0.         CLEAR lt_do_temp.         CONTINUE.       ENDIF.       "收货       PERFORM goodsmvt_create_outbound_do TABLES lt_do_temp et_return                                         CHANGING lv_exec_flg.       PERFORM edit_log TABLES lt_do_temp                               et_return                               et_/sc1/mm_migo_log.       CLEAR lt_do_temp.     ENDIF.   ENDLOOP. ENDFORM.                    " ACTION_INBOUND_DO *&---------------------------------------------------------------------* *&      Form  GR_INBOUND_DO *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *      -->P_LT_DO_TEMP  text *----------------------------------------------------------------------* FORM inbound_do_update   TABLES pt_inbound_do STRUCTURE /sc1/s_wis_input                                  et_return STRUCTURE /sc1/ftd_mm_bapiret                          CHANGING pv_exec_flg      TYPE c.  .   "BAPI_INB_DELIVERY_CHANGE 用变量 begin   DATA:ls_header_data TYPE bapiibdlvhdrchg.   DATA:ls_header_control TYPE bapiibdlvhdrctrlchg.   DATA:ls_delivery TYPE bapiibdlvhdrchg-deliv_numb.   DATA:lt_return  LIKE TABLE OF bapiret2 WITH HEADER LINE.   DATA:ls_return  LIKE bapiret2 .   DATA:ls_item_data TYPE bapiibdlvitemchg,        lt_item_data TYPE STANDARD TABLE OF bapiibdlvitemchg.   DATA:ls_item_control TYPE bapiibdlvitemctrlchg,        lt_item_control TYPE STANDARD TABLE OF bapiibdlvitemctrlchg.   "BAPI_INB_DELIVERY_CHANGE 用变量 end   DATA: lt_lips TYPE STANDARD TABLE OF lips,         ls_lips TYPE lips,         ls_inbound_do TYPE /sc1/s_wis_input,         ls_do   TYPE /sc1/s_wis_input,         lv_end_flg TYPE char1,         lv_msg     TYPE char255,         ls_et_return TYPE /sc1/ftd_mm_bapiret,         lt_inbound_do_temp TYPE STANDARD TABLE OF /sc1/s_wis_input,         ls_inbound_do_temp TYPE /sc1/s_wis_input.   CHECK pv_exec_flg IS  INITIAL.   LOOP AT pt_inbound_do INTO ls_inbound_do.     ls_inbound_do_temp-vbeln = ls_inbound_do-vbeln.     ls_inbound_do_temp-posnr = ls_inbound_do-posnr.     ls_inbound_do_temp-lfimg = ls_inbound_do-lfimg.     COLLECT ls_inbound_do_temp INTO lt_inbound_do_temp.   ENDLOOP.   READ TABLE pt_inbound_do INTO ls_inbound_do INDEX 1.   SELECT * FROM lips     INTO CORRESPONDING FIELDS OF TABLE lt_lips     WHERE vbeln = ls_inbound_do-vbeln.   "1.比较订单行项目数和传入信息一致(接口传入行项目3条,订单4条,修改内向交货的行项目为3条(删除未传入的行项目))   "2.比较行项目数量,同理(数量以接口传入数量为主)   LOOP AT lt_lips INTO ls_lips .     READ TABLE lt_inbound_do_temp INTO ls_inbound_do_temp WITH KEY vbeln = ls_lips-vbeln                                                          posnr = ls_lips-posnr .     IF sy-subrc = 0.       IF ls_lips-lfimg <> ls_inbound_do_temp-lfimg.         CLEAR ls_item_data.         ls_item_data-deliv_numb           =  ls_lips-vbeln. "被拆分DN号         ls_item_data-deliv_item           =  ls_lips-posnr.        "被拆分DN Item         ls_item_data-material             =  ls_lips-matnr.        "物料         ls_item_data-dlv_qty              =  ls_inbound_do_temp-lfimg.  "交货数量,         ls_item_data-dlv_qty_imunit       =  ls_inbound_do_temp-lfimg.         ls_item_data-sales_unit           =  ls_lips-vrkme.        "被拆分DN销售单位         ls_item_data-sales_unit_iso       =  ls_lips-meins.        "被拆分DN基本单位         ls_item_data-fact_unit_nom        =  ls_lips-umvkz.        "销售数量转换成SKU的分子(因子)         ls_item_data-fact_unit_denom      =  ls_lips-umvkn.        "销售数量转换为 SKU 的值(分母)         APPEND ls_item_data TO lt_item_data.         CLEAR ls_item_control.         ls_item_control-deliv_numb        = ls_lips-vbeln.         "被拆分DN号         ls_item_control-deliv_item        = ls_lips-posnr.         "被拆分DN Item         ls_item_control-chg_delqty        = 'X'.                   "数量修改标志         APPEND ls_item_control TO lt_item_control.       ENDIF.     ELSE."如果没有找到对应的行项目,则删除操作       CLEAR:ls_item_data.       ls_item_data-deliv_numb      = ls_lips-vbeln.       ls_item_data-deliv_item      = ls_lips-posnr.       ls_item_data-material        = ls_lips-matnr.       ls_item_data-batch           = ls_lips-charg.       ls_item_data-dlv_qty         = ls_lips-lfimg.       ls_item_data-dlv_qty_imunit  = '0'.       ls_item_data-hieraritem      = ls_lips-posnr.       ls_item_data-usehieritm      = 1.       ls_item_data-fact_unit_nom   = ls_lips-umvkz.       ls_item_data-fact_unit_denom = ls_lips-umvkn.       ls_item_data-base_uom        = ls_lips-meins.       ls_item_data-sales_unit      = ls_lips-vrkme.       APPEND ls_item_data TO lt_item_data.       CLEAR ls_item_data.       ls_item_control-deliv_numb = ls_lips-vbeln.       ls_item_control-deliv_item = ls_lips-posnr.       ls_item_control-del_item   = 'X'.       APPEND ls_item_control TO lt_item_control.     ENDIF.   ENDLOOP.   IF lt_item_data IS NOT INITIAL.     DATA: ls_techn_control TYPE bapidlvcontrol.     ls_header_data-deliv_numb       = ls_inbound_do-vbeln.     ls_header_control-deliv_numb    = ls_inbound_do-vbeln.     ls_delivery                     = ls_inbound_do-vbeln.     ls_techn_control-upd_ind        = 'U'.     CALL FUNCTION 'BAPI_INB_DELIVERY_CHANGE'       EXPORTING         header_data    = ls_header_data         header_control = ls_header_control         delivery       = ls_delivery         techn_control  = ls_techn_control       TABLES         item_data      = lt_item_data         item_control   = lt_item_control         return         = lt_return.     READ TABLE lt_return INTO ls_return WITH KEY  type  = 'E' .     IF sy-subrc = 0.       CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .       LOOP AT lt_return INTO ls_return WHERE type  = 'E'.         CALL FUNCTION 'MESSAGE_TEXT_BUILD'           EXPORTING             msgid               = sy-msgid             msgnr               = sy-msgno             msgv1               = sy-msgv1             msgv2               = sy-msgv2             msgv3               = sy-msgv3             msgv4               = sy-msgv4           IMPORTING             message_text_output = lv_msg.         CLEAR ls_et_return.       ENDLOOP.       ls_et_return-message = '交货单'&& ls_lips-vbeln && lv_msg.       ls_et_return-type = 'E'.       ls_et_return-uuid = ls_inbound_do-uuid.       APPEND ls_et_return TO lt_return.     ELSE.       CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'         EXPORTING           wait = 'X'.     ENDIF.   ENDIF. ENDFORM.                    " GR_INBOUND_DO *&---------------------------------------------------------------------* *&      Form  ACTION_TL *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *      -->P_LT_OUTBOUND_DO  text *      -->P_ET_RETURN  text *----------------------------------------------------------------------* FORM action_tl  TABLES pt_tl STRUCTURE /sc1/s_wis_input                           et_return STRUCTURE /sc1/ftd_mm_bapiret                         et_/sc1/mm_migo_log STRUCTURE /sc1/mm_migo_log.                    .   "BAPI_GOODSMVT_CREATE 用内表 begin   DATA lv_mblnr            TYPE mseg-mblnr.   DATA ls_goodsmvt_header  TYPE bapi2017_gm_head_01.   DATA ls_code             LIKE  bapi2017_gm_code.   DATA ls_goodsmvt_item    TYPE bapi2017_gm_item_create.   DATA lt_goodsmvt_item    TYPE STANDARD TABLE OF  bapi2017_gm_item_create.   DATA lt_return           TYPE STANDARD TABLE OF bapiret2.   DATA ls_return           TYPE bapiret2.   "BAPI_GOODSMVT_CREATE 用内表 end   DATA: ls_tl              TYPE /sc1/s_wis_input.   DATA: ls_et_return       TYPE /sc1/ftd_mm_bapiret.   CHECK pt_tl[] IS NOT INITIAL.   READ TABLE et_return with KEY type = 'E' TRANSPORTING NO FIELDS .   CHECK sy-subrc <> 0.   LOOP AT pt_tl INTO ls_tl.     CLEAR ls_goodsmvt_item.     ls_goodsmvt_item-material  = ls_tl-matnr.     ls_goodsmvt_item-move_type =  '501'.    "无采购订单的收货     ls_goodsmvt_item-mvt_ind   = ''.        "移动标识     ls_goodsmvt_item-entry_qnt = ls_tl-lfimg.     ls_goodsmvt_item-entry_uom = ls_tl-meins.     ls_goodsmvt_item-plant     = ls_tl-werks.     ls_goodsmvt_item-stge_loc  = ls_tl-lgort.     ls_goodsmvt_item-batch     = ls_tl-charg.     ls_goodsmvt_item-prod_date = ls_tl-hsdat."生产日期     ls_goodsmvt_item-expirydate = ls_tl-vfdat."货架寿命到期日     ls_goodsmvt_item-vendrbatch = ls_tl-licha."供应商批次     ls_goodsmvt_item-stck_type  = ls_tl-insmk.     IF ls_goodsmvt_item-entry_qnt IS NOT INITIAL.       APPEND ls_goodsmvt_item TO lt_goodsmvt_item.     ENDIF.   ENDLOOP.   ls_goodsmvt_header-pstng_date  = ls_tl-wadat_ist."凭证中的过帐日期   ls_goodsmvt_header-doc_date    = sy-datum."凭证中的凭证日期   ls_goodsmvt_header-pr_uname    = sy-uname.    "用户名   ls_code-gm_code                = '05'.  "其他   CALL FUNCTION 'BAPI_GOODSMVT_CREATE'     EXPORTING       goodsmvt_header  = ls_goodsmvt_header       goodsmvt_code    = ls_code     IMPORTING       materialdocument = lv_mblnr     TABLES       goodsmvt_item    = lt_goodsmvt_item       return           = lt_return.   READ TABLE lt_return WITH KEY  type = 'E' INTO ls_return.   IF  sy-subrc = 0.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .     ls_et_return-uuid = ls_tl-uuid.     ls_et_return-type = 'E'.     LOOP AT lt_return INTO ls_return WHERE type = 'E' .       CONCATENATE ls_et_return-message ls_return-message '|' INTO ls_et_return-message.     ENDLOOP.   ELSE.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'       EXPORTING         wait = 'X'.     ls_et_return-uuid = ls_tl-uuid.     ls_et_return-type = 'S'.     ls_et_return-message = ls_tl-vbeln && '收货成功'.   ENDIF.   APPEND ls_et_return TO et_return.   PERFORM edit_log TABLES pt_tl                           et_return                           et_/sc1/mm_migo_log. ENDFORM.                    " ACTION_TL *&---------------------------------------------------------------------* *&      Form  INBOUND_DO_PICKING *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *      -->P_LT_DO_TEMP  text *      -->P_ET_RETURN  text *      -->P_ENDIF  text *----------------------------------------------------------------------* FORM do_picking  TABLES pt_inbound_do STRUCTURE /sc1/s_wis_input                             et_return STRUCTURE /sc1/ftd_mm_bapiret                             CHANGING pv_exec_flg      TYPE c.  .   "BAPI用变量 begin   DATA: lt_vbpok    TYPE TABLE OF vbpok,         ls_vbpok    TYPE vbpok,         lt_prott    TYPE TABLE OF prott,         ls_prott    TYPE prott,         ls_vbkok    TYPE vbkok.   "BAPI用变量 end   DATA: lt_lips       TYPE STANDARD TABLE OF lips,         ls_lips       TYPE lips,         ls_inbound_do TYPE /sc1/s_wis_input,         lv_msg        TYPE char255,         ls_et_return  TYPE /sc1/ftd_mm_bapiret.   CHECK pv_exec_flg IS  INITIAL.   READ TABLE pt_inbound_do INTO ls_inbound_do INDEX 1.   SELECT * FROM lips     INTO CORRESPONDING FIELDS OF TABLE lt_lips     WHERE vbeln = ls_inbound_do-vbeln.   LOOP AT lt_lips INTO ls_lips.     ls_vbpok-vbeln_vl = ls_lips-vbeln.     ls_vbpok-posnr_vl = ls_lips-posnr.     ls_vbpok-vbeln    = ls_lips-vgbel.     ls_vbpok-posnn    = ls_lips-vgpos.     ls_vbpok-meins    = ls_lips-meins.     ls_vbpok-vrkme    = ls_lips-vrkme.     ls_vbpok-pikmg    = ls_lips-lfimg.     ls_vbpok-ndifm    = 0.     ls_vbpok-brgew    = ls_lips-brgew.     ls_vbpok-gewei    = ls_lips-gewei.     ls_vbpok-volum    = ls_lips-volum.     ls_vbpok-voleh    = ls_lips-voleh.     ls_vbpok-charg    = ls_lips-charg.     ls_vbpok-matnr    = ls_lips-matnr.     ls_vbpok-orpos    = 0.     APPEND ls_vbpok TO lt_vbpok.     CLEAR: ls_vbpok.   ENDLOOP.   ls_vbkok-vbeln_vl = ls_inbound_do-vbeln.   CALL FUNCTION 'SD_DELIVERY_UPDATE_PICKING'     EXPORTING       vbkok_wa      = ls_vbkok       synchron      = 'X'     TABLES       vbpok_tab     = lt_vbpok       prot          = lt_prott     EXCEPTIONS       error_message = 1.   LOOP AT lt_prott INTO ls_prott WHERE msgty CA 'EA'.     EXIT.   ENDLOOP.   IF sy-subrc <> 0.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'       EXPORTING         wait = 'X'.   ELSE.     pv_exec_flg = 'E'.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.     CALL FUNCTION 'FORMAT_MESSAGE'       EXPORTING         id        = ls_prott-msgid         no        = ls_prott-msgno         v1        = ls_prott-msgv1         v2        = ls_prott-msgv2         v3        = ls_prott-msgv3         v4        = ls_prott-msgv4       IMPORTING         msg       = lv_msg       EXCEPTIONS         not_found = 1         OTHERS    = 2.     ls_et_return-uuid    = ls_inbound_do-uuid.     ls_et_return-type    = 'E'.     ls_et_return-message = lv_msg.     APPEND ls_et_return TO et_return.   ENDIF. ENDFORM.                    " INBOUND_DO_PICKING *&---------------------------------------------------------------------* *&      Form  INBOUND_DO_CONFIRM *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *      -->P_LT_DO_TEMP  text *      -->P_ET_RETURN  text *      <--P_LV_EXEC_FLG  text *----------------------------------------------------------------------* FORM inbound_do_confirm  TABLES pt_inbound_do STRUCTURE /sc1/s_wis_input                                  et_return STRUCTURE /sc1/ftd_mm_bapiret                         CHANGING pv_exec_flg      TYPE c.   "bapi 用变量---begin   DATA: ls_header_data      TYPE bapiibdlvhdrcon,         ls_header_control   TYPE bapiibdlvhdrctrlcon,         lw_delivery         TYPE bapiobdlvhdrcon-deliv_numb,         lt_return           TYPE TABLE OF bapiret2 ,         ls_return           TYPE bapiret2.   "bapi 用变量---end   DATA: ls_inbound_do TYPE /sc1/s_wis_input,         ls_et_return  TYPE /sc1/ftd_mm_bapiret,          lv_msg       TYPE char255.   CHECK pv_exec_flg IS INITIAL.   READ TABLE pt_inbound_do INTO ls_inbound_do INDEX 1.   ls_header_data-deliv_numb     = ls_inbound_do-vbeln."交货单号.   ls_header_control-deliv_numb  = ls_inbound_do-vbeln."交货单号.   ls_header_control-post_gi_flg = 'X'   .   lw_delivery                   = ls_inbound_do-vbeln."交货单号.   CALL FUNCTION 'BAPI_INB_DELIVERY_CONFIRM_DEC'     EXPORTING       header_data    = ls_header_data       header_control = ls_header_control       delivery       = lw_delivery     TABLES       return         = lt_return.   LOOP AT lt_return INTO ls_return WHERE type CA 'EA'.     EXIT.   ENDLOOP.   IF sy-subrc <> 0.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'       EXPORTING         wait = 'X'.     ls_et_return-uuid    = ls_inbound_do-uuid.     ls_et_return-type    = 'S'.     ls_et_return-message = '收货成功'.     APPEND ls_et_return TO et_return.   ELSE.     pv_exec_flg = 'E'.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.     CALL FUNCTION 'FORMAT_MESSAGE'       EXPORTING         id        = ls_return-id         no        = ls_return-number         v1        = ls_return-message_v1         v2        = ls_return-message_v2         v3        = ls_return-message_v3         v4        = ls_return-message_v4       IMPORTING         msg       = lv_msg       EXCEPTIONS         not_found = 1         OTHERS    = 2.     ls_et_return-uuid    = ls_inbound_do-uuid.     ls_et_return-type    = 'E'.     ls_et_return-message = lv_msg.     APPEND ls_et_return TO et_return.   ENDIF. ENDFORM.                    " INBOUND_DO_CONFIRM *&---------------------------------------------------------------------* *&      Form  INBOUND_DO_CONFIRM *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *      -->P_LT_DO_TEMP  text *      -->P_ET_RETURN  text *      <--P_LV_EXEC_FLG  text *----------------------------------------------------------------------* FORM outbound_do_confirm  TABLES pt_inbound_do STRUCTURE /sc1/s_wis_input                                  et_return STRUCTURE /sc1/ftd_mm_bapiret                         CHANGING pv_exec_flg      TYPE c.   "bapi 用变量---begin   DATA: ls_header_data      TYPE bapiobdlvhdrcon,         ls_header_control   TYPE bapiobdlvhdrctrlcon,         lw_delivery         TYPE bapiobdlvhdrcon-deliv_numb,         lt_return           TYPE TABLE OF bapiret2 ,         ls_return           TYPE bapiret2.   "bapi 用变量---end   DATA: ls_inbound_do TYPE /sc1/s_wis_input,         ls_et_return  TYPE /sc1/ftd_mm_bapiret,          lv_msg       TYPE char255.   CHECK pv_exec_flg IS INITIAL.   READ TABLE pt_inbound_do INTO ls_inbound_do INDEX 1.   ls_header_data-deliv_numb     = ls_inbound_do-vbeln."交货单号.   ls_header_control-deliv_numb  = ls_inbound_do-vbeln."交货单号.   ls_header_control-post_gi_flg = 'X'   .   lw_delivery                   = ls_inbound_do-vbeln."交货单号.   CALL FUNCTION 'BAPI_OUTB_DELIVERY_CONFIRM_DEC'     EXPORTING       header_data    = ls_header_data       header_control = ls_header_control       delivery       = lw_delivery     TABLES       return         = lt_return.   LOOP AT lt_return INTO ls_return WHERE type CA 'EA'.     EXIT.   ENDLOOP.   IF sy-subrc <> 0.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'       EXPORTING         wait = 'X'.     ls_et_return-uuid    = ls_inbound_do-uuid.     ls_et_return-type    = 'S'.     ls_et_return-message = '收货成功'.     APPEND ls_et_return TO et_return.   ELSE.     pv_exec_flg = 'E'.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.     CALL FUNCTION 'FORMAT_MESSAGE'       EXPORTING         id        = ls_return-id         no        = ls_return-number         v1        = ls_return-message_v1         v2        = ls_return-message_v2         v3        = ls_return-message_v3         v4        = ls_return-message_v4       IMPORTING         msg       = lv_msg       EXCEPTIONS         not_found = 1         OTHERS    = 2.     ls_et_return-uuid    = ls_inbound_do-uuid.     ls_et_return-type    = 'E'.     ls_et_return-message = lv_msg.     APPEND ls_et_return TO et_return.   ENDIF. ENDFORM.                    " INBOUND_DO_CONFIRM *&---------------------------------------------------------------------* *&      Form  SPLIT_DATA *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *      -->P_IT_INPUT  text *      -->P_LT_PO  text *      -->P_LT_INBOUND_DO  text *      -->P_LT_OUTBOUND_DO  text *      -->P_LT_TL  text *----------------------------------------------------------------------* FORM split_data  TABLES   pt_input      STRUCTURE /sc1/s_wis_input                           pt_po          STRUCTURE /sc1/s_wis_input                           pt_inbound_do  STRUCTURE /sc1/s_wis_input                           pt_outbound_do STRUCTURE /sc1/s_wis_input                           pt_tl          STRUCTURE /sc1/s_wis_input                           pt_ekpo        TYPE ty_t_ekpo.   DATA: ls_input       TYPE /sc1/s_wis_input,         lv_new_flg     TYPE char1,         lv_action      TYPE char15,         lv_matkl       TYPE mara-matkl,         lt_/sc1/mm_migo_log TYPE STANDARD TABLE OF /sc1/mm_migo_log,         ls_/sc1/mm_migo_log TYPE /sc1/mm_migo_log.   FIELD-SYMBOLS: <ls_input> TYPE /sc1/s_wis_input.   "检查此次需要收货是否有已经处理完成的数据,已完成数据不再处理   IF pt_input[] IS NOT INITIAL.     SELECT * FROM  /sc1/mm_migo_log INTO TABLE lt_/sc1/mm_migo_log       FOR ALL ENTRIES IN pt_input       WHERE uuid = pt_input-uuid.   ENDIF.   SORT pt_input BY action vbeln posnr.   LOOP AT pt_input ASSIGNING <ls_input>.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'       EXPORTING         input  = <ls_input>-vbeln       IMPORTING         output = <ls_input>-vbeln.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'       EXPORTING         input  = <ls_input>-posnr       IMPORTING         output = <ls_input>-posnr.     CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'       EXPORTING         input        = <ls_input>-matnr       IMPORTING         output       = <ls_input>-matnr       EXCEPTIONS         length_error = 1         OTHERS       = 2.   ENDLOOP.   LOOP AT pt_input INTO ls_input.     AT NEW vbeln.       lv_new_flg = 'X'.     ENDAT.     IF lv_new_flg = 'X'.       CLEAR:lv_new_flg.       IF ls_input-action = '1'.         SELECT *           FROM ekpo           APPENDING CORRESPONDING FIELDS OF TABLE pt_ekpo           WHERE ebeln = ls_input-vbeln.         IF sy-subrc = 0.           lv_action = 'PO'.         ELSE.           lv_action = 'INBOUND_DO'.         ENDIF.       ELSEIF ls_input-action = '2'.         lv_action = 'OUTBOUND_DO'.       ENDIF.     ENDIF.     "检查此次需要收货是否有已经处理完成的数据,已完成数据不再处理     READ TABLE lt_/sc1/mm_migo_log INTO ls_/sc1/mm_migo_log with KEY uuid = ls_input-uuid.     IF sy-subrc = 0.       CONTINUE.     ENDIF.     SELECT SINGLE matkl FROM mara INTO lv_matkl       WHERE matnr = ls_input-matnr         AND matkl = 'YS000013'."铁笼     IF sy-subrc = 0.       APPEND ls_input TO pt_tl.       CONTINUE.     ENDIF.     CASE lv_action.       WHEN 'PO'.         APPEND ls_input TO pt_po.       WHEN 'INBOUND_DO'.         APPEND ls_input TO pt_inbound_do.       WHEN 'OUTBOUND_DO'.         APPEND ls_input TO pt_outbound_do.       WHEN OTHERS.     ENDCASE.   ENDLOOP. ENDFORM.                    " SPLIT_DATA *&---------------------------------------------------------------------* *&      Form  INBOUND_DO_BATCH_SPLIT *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *      -->P_LT_DO_TEMP  text *      -->P_ET_RETURN  text *      <--P_LV_EXEC_FLG  text *----------------------------------------------------------------------* FORM inbound_do_batch_split TABLES pt_inbound_do STRUCTURE /sc1/s_wis_input                                  et_return STRUCTURE /sc1/ftd_mm_bapiret                          CHANGING pv_exec_flg      TYPE c.  .   "bapi用变量begin   DATA: ls_header_data     TYPE bapiobdlvhdrchg, "Delivery header         ls_header_control  TYPE bapiobdlvhdrctrlchg, "delivery header control         lt_item_data       TYPE STANDARD TABLE OF  bapiobdlvitemchg,         ls_item_data       TYPE  bapiobdlvitemchg,         lt_item_control    TYPE STANDARD TABLE OF bapiobdlvitemctrlchg,         ls_item_control    TYPE bapiobdlvitemctrlchg,         lt_item_data_spl   TYPE STANDARD TABLE OF /spe/bapiobdlvitemchg,         ls_item_data_spl   TYPE /spe/bapiobdlvitemchg,         ls_techn_control   TYPE bapidlvcontrol,         lt_return          TYPE STANDARD TABLE OF bapiret2,         ls_return          type bapiret2.   DATA: lv_message         TYPE c LENGTH 220.   "bapi用变量end   DATA: ls_inbound_do TYPE /sc1/s_wis_input,         lt_lips            TYPE STANDARD TABLE OF lips,         ls_lips            TYPE lips,         ls_et_teturn       TYPE /sc1/ftd_mm_bapiret,         lv_vbeln_batch     TYPE lips-vbeln..   READ TABLE pt_inbound_do INTO ls_inbound_do INDEX 1.   SELECT *     FROM lips     INTO TABLE lt_lips    WHERE vbeln = ls_inbound_do-vbeln.   lv_vbeln_batch = '900000'.   LOOP AT pt_inbound_do INTO ls_inbound_do.     READ TABLE lt_lips INTO ls_lips WITH KEY vbeln = ls_inbound_do-vbeln                                              posnr = ls_inbound_do-posnr.     "批次拆分出来的新行     CLEAR: ls_item_data.     lv_vbeln_batch = lv_vbeln_batch + 1.     ls_item_data-deliv_numb = ls_inbound_do-vbeln..     ls_item_data-deliv_item =  lv_vbeln_batch.     ls_item_data-hieraritem = ls_inbound_do-posnr.        "项目层次中的高级项目-批次拆分字段     ls_item_data-usehieritm = '1'.                        "使用层次项目-批次拆分字段     ls_item_data-material   = ls_inbound_do-matnr.     ls_item_data-batch      = ls_inbound_do-charg.     ls_item_data-dlv_qty    = ls_inbound_do-lfimg.     ls_item_data-fact_unit_nom   = ls_lips-umvkz.     ls_item_data-fact_unit_denom = ls_lips-umvkn.     APPEND ls_item_data TO lt_item_data.     "批次拆分出来的新行     CLEAR: ls_item_control.     ls_item_control-deliv_numb = ls_inbound_do-vbeln.     ls_item_control-deliv_item = lv_vbeln_batch.     ls_item_control-chg_delqty = 'X'.     APPEND ls_item_control TO lt_item_control.     CLEAR: ls_item_control.     ls_item_data_spl-deliv_numb = ls_inbound_do-vbeln.     ls_item_data_spl-deliv_item = lv_vbeln_batch.     ls_item_data_spl-stge_loc   = ls_inbound_do-lgort."库存地点     APPEND ls_item_data_spl TO lt_item_data_spl.   ENDLOOP.   ls_header_data-deliv_numb    = ls_inbound_do-vbeln.   ls_header_control-deliv_numb = ls_inbound_do-vbeln.   ls_techn_control-upd_ind     = 'U'.   CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'     EXPORTING       header_data    = ls_header_data       header_control = ls_header_control       delivery       = ls_inbound_do-vbeln       techn_control  = ls_techn_control     TABLES       item_data      = lt_item_data       item_control   = lt_item_control       item_data_spl  = lt_item_data_spl       return         = lt_return.   LOOP AT lt_return INTO ls_return WHERE type CA 'EA'.     EXIT.   ENDLOOP.   IF sy-subrc <> 0.     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'       EXPORTING         wait = 'X'.   "更改库存地点   CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'     EXPORTING       header_data    = ls_header_data       header_control = ls_header_control       delivery       = ls_inbound_do-vbeln       techn_control  = ls_techn_control     TABLES       item_data      = lt_item_data       item_control   = lt_item_control       item_data_spl  = lt_item_data_spl       return         = lt_return.   ELSE.     pv_exec_flg = 'E'.     CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.     CALL FUNCTION 'FORMAT_MESSAGE'       EXPORTING         id        = ls_return-id         no        = ls_return-number         v1        = ls_return-message_v1         v2        = ls_return-message_v2         v3        = ls_return-message_v3         v4        = ls_return-message_v4       IMPORTING         msg       = lv_message       EXCEPTIONS         not_found = 1         OTHERS    = 2.     ls_et_teturn-uuid = ls_inbound_do-uuid.     ls_et_teturn-type = 'E'.     ls_et_teturn-message = lv_message.     APPEND ls_et_teturn TO et_return.   ENDIF. ENDFORM.                    " INBOUND_DO_BATCH_SPLIT 帮我分析一下,让你写出这样的代码,你作为顾问应该提怎么样的需求,总结一下

大家在看

recommend-type

matlab source code of GA for urban intersections green wave control

The code is developed when I was study for my Ph.D. degree in Tongji Universtiy. It wiil be used to solve the green wave control problem of urban intersections, wish you can understand the content of my code. CRChang
recommend-type

dmm fanza better -crx插件

语言:日本語 dmm fanza ui扩展函数,样本视频可下载 在顶部菜单上添加流行的产品(流行顺序,排名,排名等)示例视频下载辅助功能DMM Fanza Extension.目前,右键单击播放窗口并保存为名称。我做不到。通过右键单击次数秒似乎可以保存它。※ver_1.0.4小修正* ver_1.0.3对应于示例视频的播放窗口的右键单击,并保存为名称。※Ver_1.0.2 VR对应于视频的示例下载。※在ver_1.0.1菜单中添加了一个时期限量销售。菜单链接在Fanza网站的左侧排列因为链接的顺序由页面打破,因此很难理解为主要用于顶部菜单的流行产品添加链接在“示例视频的下载辅助功能”中单击产品页面上显示的下载按钮轻松提取示例视频链接并转换到下载页面如果您实际安装并打开产品页面我想我可以在使用它的同时知道它也在选项中列出。使用的注意事项也包含在选项中,因此请阅读其中一个
recommend-type

服务质量管理-NGBOSS能力架构

服务质量管理 二级能力名称 服务质量管理 二级能力编号 CMCM.5.4 概述 监测、分析和控制客户感知的服务表现 相关子能力描述 能够主动的将网络性能数据通告给前端客服人员; 能够根据按照客户价值来划分的客户群来制定特殊的SLA指标; 能够为最有价值的核心客户群进行网络优化; 对于常规的维护问题,QoS能够由网元设备自动完成,比如,对于网络故障的自恢复能力和优先客户的使用权; 能够把潜在的网络问题与客户进行主动的沟通; 能够分析所有的服务使用的质量指标; 能够根据关键的服务质量指标检测与实际的差距,提出改进建议; Service request 服务请求---请求管理。 客户的分析和报告:对关闭的请求、用户联系和相关的报告进行分析。 Marketing collateral的散发和marketing Collateral 的散发后的线索跟踪
recommend-type

AUTOSAR_MCAL_WDG.zip

This User Manual describes NXP Semiconductors AUTOSAR Watchdog ( Wdg ) for S32K14X . AUTOSAR Wdg driver configuration parameters and deviations from the specification are described in Wdg Driver chapter of this document. AUTOSAR Wdg driver requirements and APIs are described in the AUTOSAR Wdg driver software specification document.
recommend-type

基于tensorflow框架,用训练好的Vgg16模型,实现猫狗图像分类的代码.zip

人工智能-深度学习-tensorflow

最新推荐

recommend-type

spring-ai-oracle-store-1.0.0-M8.jar中文-英文对照文档.zip

1、压缩文件中包含: 中文-英文对照文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册。
recommend-type

全面掌握Oracle9i:基础教程与实践指南

Oracle9i是一款由甲骨文公司开发的关系型数据库管理系统,它在信息技术领域中占据着重要的地位。Oracle9i的“i”代表了互联网(internet),意味着它具有强大的网络功能,能够支持大规模的网络应用。该系统具有高度的数据完整性和安全性,并且其强大稳定的特点使得它成为了企业级应用的首选数据库平台。 为了全面掌握Oracle9i,本教程将从以下几个方面详细讲解: 1. Oracle9i的安装与配置:在开始学习之前,您需要了解如何在不同的操作系统上安装Oracle9i数据库,并对数据库进行基本的配置。这包括数据库实例的创建、网络配置文件的设置(如listener.ora和tnsnames.ora)以及初始参数文件的设置。 2. SQL语言基础:SQL(Structured Query Language)是用于管理和操作关系型数据库的标准语言。您需要熟悉SQL语言的基本语法,包括数据查询语言(DQL)、数据操纵语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)。 3. PL/SQL编程:PL/SQL是Oracle公司提供的过程化语言,它是SQL的扩展,增加了过程化编程的能力。学习PL/SQL可以让您编写更复杂、更高效的数据库程序,包括存储过程、函数、包和触发器等。 4. Oracle9i的数据管理:这部分内容涉及数据表的创建、修改、删除以及索引、视图、同义词、序列和分区等高级特性。 5. 数据库性能优化:为了确保数据库的高效运行,需要对数据库进行性能调优。这包括了解Oracle9i的内存管理、锁定机制、SQL语句优化和数据库设计原则等。 6. 数据库备份与恢复:为防止数据丢失或损坏,需要了解Oracle9i的备份和恢复机制。您将学习到如何使用RMAN(Recovery Manager)进行数据备份和恢复,并且熟悉数据库的逻辑备份和恢复策略。 7. 安全管理:安全管理是保护数据库不受非法访问和操作的重要环节。Oracle9i提供了丰富的安全特性,如用户权限管理、审计和加密等,您需要学习如何实施这些安全措施来保证数据库的安全性。 8. Oracle9i网络管理:由于Oracle9i对网络的特别设计,您还需要掌握如何管理Oracle网络,包括监听器的配置、网络故障的诊断等。 9. 高级特性介绍:Oracle9i提供了很多高级功能,如高级复制、流复制、高级安全性、Oracle Data Guard等,这些内容将帮助您掌握Oracle9i的高级特性,从而在面对复杂业务需求时有更多解决方案。 在学习Oracle9i教程的过程中,您将通过大量实例练习加深理解,同时也会了解到最佳实践和常见问题的解决方法。本教程的目的是让您全面掌握Oracle9i数据库管理系统的使用,并具备解决实际问题的能力,无论您是数据库管理员、开发人员还是系统分析师,本教程都将成为您提升技能的有力工具。
recommend-type

【数据融合技术】:甘肃土壤类型空间分析中的专业性应用

# 摘要 数据融合技术作为一种集成多源数据信息的方法,在土壤类型空间分析中发挥着关键作用。本文介绍了数据融合技术的基本概念及其理论基础,阐述了数据预处理、同步整合及冲突解决等关键技术,并详细描述了甘肃土壤类型数据准备的流程,包括数据采集、质量评估、空间化处理及融合实践准备。通过具体案例分析,展示了数据融合在土壤类型空间分布分析、土壤质量评估及土壤保护规划中的应用。同时,文
recommend-type

模糊大津法

<think>首先,用户查询是关于“模糊大津法”的,我需要理解这个术语。从引用中,我知道大津法(Otsu's method)是一种图像二值化的全局阈值算法。用户提到“模糊大津法”,这可能是大津法与模糊理论结合的一种变体。我需要基于提供的引用和自己的知识来回答。关键引用:- [^1]:讨论了大津法在图像处理中的应用,特别是二值化。- [^2]:解释了大津法的原理和实现。- [^3]:提到大津法是全局阈值算法。- [^4]:讨论了高斯模糊对大津二值化算法的影响,指出高斯模糊可以减少噪声,提高阈值计算的准确性。用户的问题是:“我想查找关于模糊大津法的技术资料或实现方法请问模糊大津法原理实现方法技术文
recommend-type

SOA服务设计原则:2007年7月版原理深入解析

由于提供的文件信息是相同的标题、描述和标签,且压缩包中仅包含一个文件,我们可以得出文件“Prentice.Hall.SOA.Principles.of.Service.Design.Jul.2007.pdf”很可能是一本关于面向服务架构(SOA)的书籍。该文件的名称和描述表明了它是一本专门讨论服务设计原则的出版物,其出版日期为2007年7月。以下是从标题和描述中提取的知识点: ### SOA设计原则 1. **服务导向架构(SOA)基础**: - SOA是一种设计原则,它将业务操作封装为可以重用的服务。 - 服务是独立的、松耦合的业务功能,可以在不同的应用程序中复用。 2. **服务设计**: - 设计优质服务对于构建成功的SOA至关重要。 - 设计过程中需要考虑到服务的粒度、服务的生命周期管理、服务接口定义等。 3. **服务重用**: - 服务设计的目的是为了重用,需要识别出业务领域中可重用的功能单元。 - 通过重用现有的服务,可以降低开发成本,缩短开发时间,并提高系统的整体效率。 4. **服务的独立性与自治性**: - 服务需要在技术上是独立的,使得它们能够自主地运行和被管理。 - 自治性意味着服务能够独立于其他服务的存在和状态进行更新和维护。 5. **服务的可组合性**: - SOA强调服务的组合性,这意味着可以通过组合不同的服务构建新的业务功能。 - 服务之间的交互应当是标准化的,以确保不同服务间的无缝通信。 6. **服务的无状态性**: - 在设计服务时,最好让服务保持无状态,以便它们可以被缓存、扩展和并行处理。 - 状态信息可以放在服务外部,比如数据库或缓存系统中。 7. **服务的可发现性**: - 设计服务时,必须考虑服务的发现机制,以便服务消费者可以找到所需的服务。 - 通常通过服务注册中心来实现服务的动态发现和绑定。 8. **服务的标准化和协议**: - 服务应该基于开放标准构建,确保不同系统和服务之间能够交互。 - 服务之间交互所使用的协议应该广泛接受,如SOAP、REST等。 9. **服务的可治理性**: - 设计服务时还需要考虑服务的管理与监控,确保服务的质量和性能。 - 需要有机制来跟踪服务使用情况、服务变更管理以及服务质量保障。 10. **服务的业务与技术视角**: - 服务设计应该同时考虑业务和技术的视角,确保服务既满足业务需求也具备技术可行性。 - 业务规则和逻辑应该与服务实现逻辑分离,以保证业务的灵活性和可维护性。 ### SOA的实施挑战与最佳实践 1. **变更管理**: - 实施SOA时需要考虑到如何管理和适应快速变更。 - 必须建立适当的变更控制流程来管理和批准服务的更改。 2. **安全性**: - 安全是SOA设计中的一个关键方面,需要确保服务交互的安全。 - 需要实现身份验证、授权、加密和审计机制以保护数据和服务。 3. **互操作性**: - 服务应设计为可与不同平台和技术实现互操作。 - 必须确保服务之间可以跨平台和语言进行通信。 4. **质量保证**: - 对服务进行持续的质量监控和改进是实施SOA不可或缺的一部分。 - 服务质量(QoS)相关的特性如性能、可靠性、可用性等都应被纳入设计考量。 5. **投资回报(ROI)和成本效益分析**: - 从经济角度评估实施SOA的合理性。 - 在设计服务时考虑长期成本节约和ROI。 根据以上知识点的总结,可以看出“Prentice.Hall.SOA.Principles.of.Service.Design.Jul.2007.pdf”这本书很可能是系统地介绍SOA设计原则和最佳实践的专业著作,对于想要深入了解SOA设计的读者来说是一本宝贵的参考资料。
recommend-type

【空间分布规律】:甘肃土壤类型与农业生产的关联性研究

# 摘要 本文对甘肃土壤类型及其在农业生产中的作用进行了系统性研究。首先概述了甘肃土壤类型的基础理论,并探讨了土壤类型与农业生产的理论联系。通过GIS技术分析,本文详细阐述了甘肃土壤的空间分布规律,并对其特征和影响因素进行了深入分析。此外,本文还研究了甘肃土壤类型对农业生产实际影响,包括不同区域土壤改良和作物种植案例,以及土壤养分、水分管理对作物生长周期和产量的具体影响。最后,提出了促进甘肃土壤与农业可持续发展的策略,包括土壤保护、退化防治对策以及土壤类型优化与农业创新的结合。本文旨在为
recommend-type

rc滤波导致相位

<think>我们参考了关于RC滤波器的多个引用,特别是引用[3]和引用[4]中提到了相位的影响。 根据引用[3]:对于一阶RC低通滤波器,相位角θ的计算公式为:θ = -arctan(ωRC),其中ω是角频率(ω=2πf),R是电阻值,C是电容值。 引用[4]也解释了相位变化的原因:电容是储能元件,信号通过电容时会有延时,导致输出信号相对于输入信号产生相位差。 因此,对于RC低通滤波器,相位差是负的,表示输出信号滞后于输入信号。滞后的角度随频率增加而增加,在截止频率处滞后45度,当频率趋近于无穷大时,滞后90度。 对于RC高通滤波器,根据引用[3]的提示(虽然没有直接给出公式),
recommend-type

FTP搜索工具:IP检测与数据库管理功能详解

FTP(File Transfer Protocol)即文件传输协议,是一种用于在网络上进行文件传输的协议,使得用户可以通过互联网与其他用户进行文件共享。FTP Search是一款专注于FTP文件搜索的工具,其工作原理和应用场景使其在处理大规模数据共享和远程文件管理方面具有一定的优势。 **属性页控件** 属性页控件是一种用户界面元素,通常用于组织多个属性或设置页面。在FTP Search工具中,属性页控件可能被用来显示和管理FTP搜索的各项参数。用户可以通过它来设置搜索的FTP服务器地址、登录凭证、搜索范围以及结果处理方式等。属性页控件可以提高用户操作的便利性,使得复杂的设置更加直观易懂。 **Ping命令** Ping命令是互联网上广泛使用的一种网络诊断工具。它通过发送ICMP(Internet Control Message Protocol)回显请求消息到指定的IP地址,并等待接收回显应答,以此来检测目标主机是否可达以及网络延迟情况。在FTP Search工具中,Ping命令被用来检测FTP服务器的存活状态,即是否在线并能够响应网络请求。 **扫描主机端口** 端口扫描是网络安全领域中的一个基本操作,它用于检测特定主机上的哪些端口是开放的、关闭的或是被过滤的。了解端口的状态可以帮助确定目标主机上运行的服务和应用程序。在FTP Search工具中,端口扫描功能可能被用于识别FTP服务器上开放的端口,从而帮助用户找到合适的途径进行文件传输。 **数据库管理** 数据库管理在数据密集型应用中扮演着关键角色。FTP Search工具中包含的数据库操作功能,如打开、添加、查询和关闭数据库,表明该工具可能被设计为与数据库系统交互,以便更好地处理搜索到的FTP文件信息。可能涉及到的数据库管理系统(DBMS)包括MySQL、Microsoft SQL Server、SQLite等,用户可以通过工具提供的数据库管理接口来进行数据的维护和检索。 **IP地址控件** IP地址控件是一种用户界面组件,它允许用户输入或选择一个IP地址。在FTP Search工具中,IP地址控件用于输入目标FTP服务器的IP地址,使工具能够定位并连接到相应的服务器。该控件可能还具备验证IP地址有效性(如是否符合IPv4标准)的功能,并且能提供下拉列表或自动完成来提升用户体验。 综上所述,FTP Search工具是一个集成了多种网络和数据库操作功能的实用工具。通过属性页控件,用户可以方便地配置和管理工具;Ping命令和端口扫描功能则有助于用户确认服务器的状态和可用性;数据库管理功能则确保用户能够有效地存储和查询FTP搜索结果;而IP地址控件则简化了用户对服务器地址的输入流程。这些功能相互配合,使得FTP Search工具在执行FTP搜索任务时更加强大、高效和用户友好。对于网络管理员、数据分析师、IT专业人员等,这类工具能够显著提升工作效率,尤其是在处理大规模的文件共享和数据检索时。
recommend-type

【制图技术】:甘肃高质量土壤分布TIF图件的成图策略

# 摘要 本文针对甘肃土壤分布数据的TIF图件制作进行了系统研究。首先概述了甘肃土壤的分布情况,接着介绍了TIF图件的基础知识,包括其格式特点、空间数据表达以及质量控制方法。随后,文中构建了成图策略的理论框架,分析了土壤分布图的信息需求与数据处理流程,并探讨了成图原则与标准。在实践操作部分,详细阐述了制图软
recommend-type

iperf命令-t最多能设置多大

<think>首先,用户的问题是:“我想了解iperf命令中-t参数的最大可设置值 请问iperf -t parameter maximum value”。这涉及到iperf工具,具体是-t参数的最大值。 从系统指令中,我需要: - 使用$...$格式处理行内数学表达式。 - 独立公式用$$...$$格式。 - 使用中文回答。 - 生成相关问题。 - 在引用的段落末尾添加引用标识。 - 回答结构清晰,逐步解决问题。 参考提供的引用: - 引用[1]: 提到iperf3用于性能测试,但不是文件传输工具,因为UDP丢包可能导致文件长度不一致。使用方式:iperf3 -s -F ./log.tx