云服务器建立多个网站,app免费下载网站地址进入,西安快速建站网络公司,免费行情软件网站下载视频案例#xff1a;将交货单数量拆分到不同批次#xff0c;一个批次下数量为1#xff0c;并进行过账。
发布时间#xff1a;20251218主要逻辑分为两个部分#xff1a;
拆分和过账#xff0c;拆分批次时必须写入存储位置#xff0c;否则过账可能会报错#xff08;eg#x…案例将交货单数量拆分到不同批次一个批次下数量为1并进行过账。发布时间20251218主要逻辑分为两个部分拆分和过账拆分批次时必须写入存储位置否则过账可能会报错eg存储地点不是为交货项目900001确定的。直接上源码复制可用REPORT zmm_rpt_538_wu5. TABLES:lips. TYPES: BEGIN OF ty_charg, charg TYPE charg, END OF ty_charg, tt_charg TYPE STANDARD TABLE OF ty_charg. DATA:lt_charg TYPE tt_charg, lt_item_data1 LIKE TABLE OF bapiobdlvitemchg. PARAMETERS:p_vbeln TYPE vbeln. SELECT-OPTIONS:r_charg FOR lips-charg NO INTERVALS. START-OF-SELECTION. LOOP AT r_charg ASSIGNING FIELD-SYMBOL(lfs_charg). APPEND VALUE #( charg lfs_charg-low ) TO lt_charg. ENDLOOP. PERFORM frm_main USING p_vbeln lt_charg. FORM frm_main USING pv_vbeln TYPE vbeln pt_charg TYPE tt_charg. DATA:lv_lgort TYPE lgort_d VALUE 9008, lv_err TYPE char1. 拆分批次数量写入库存地点 PERFORM frm_split_batch USING pv_vbeln lv_lgort pt_charg CHANGING lv_err . 拆分失败不继续过账 CHECK lv_err E. 交货过账 PERFORM frm_goods_move USING pv_vbeln. ENDFORM. FORM frm_split_batch USING pv_vbeln TYPE vbeln pv_lgort TYPE lgort_d pt_charg TYPE tt_charg CHANGING pv_err TYPE char1. DATA: ls_lips TYPE lips, ls_header_data LIKE bapiobdlvhdrchg, lt_item_control LIKE TABLE OF bapiobdlvitemctrlchg, ls_item_control LIKE bapiobdlvitemctrlchg, ls_header_control LIKE bapiobdlvhdrctrlchg, ls_item_data LIKE bapiobdlvitemchg, lt_item_data LIKE TABLE OF bapiobdlvitemchg, ls_item_spl LIKE /spe/bapiobdlvitemchg, lt_item_spl LIKE TABLE OF /spe/bapiobdlvitemchg, lt_return LIKE TABLE OF bapiret2 WITH HEADER LINE. DATA: lv_newitem TYPE posnr_vl, lv_msg TYPE string. DATA:lv_posnr TYPE posnr VALUE 000010. 本例只对一行项目进行了拆分演示一个批次数量为1如有多行需要拆分可循环所有行项目一行一行单独进行拆分 SELECT SINGLE * FROM lips WHERE vbeln pv_vbeln AND posnr 000010 INTO ls_lips. IF lines( pt_charg ) ls_lips-lfimg. pv_err E. MESSAGE 批次号数量与带拆分数不一致 TYPE S DISPLAY LIKE E. EXIT. ENDIF. lv_newitem 900000. Header ls_header_data-deliv_numb pv_vbeln. ls_header_control-deliv_numb pv_vbeln. Set Mofify flag CLEAR ls_item_control. ls_item_control-deliv_numb pv_vbeln. 被拆分交货单号 ls_item_control-deliv_item lv_posnr. 被拆分交货单行项目号 ls_item_control-chg_delqty X. 数量修改标志 APPEND ls_item_control TO lt_item_control. ls_item_data-deliv_numb ls_lips-vbeln. 交货单号 ls_item_data-deliv_item ls_lips-posnr. 交货单行项目号 ls_item_data-sales_unit ls_lips-vrkme. 销售单位 ls_item_data-sales_unit_iso ls_lips-meins. 基本单位 ls_item_data-fact_unit_nom ls_lips-umvkz. 销售数量转换成SKU的分子(因子) ls_item_data-fact_unit_denom ls_lips-umvkn. 销售数量转换为 SKU 的值分母 IF strlen( ls_lips-matnr ) 18. ls_item_data-material ls_lips-matnr. 物料号 ELSE. ls_item_data-material_external ls_lips-matnr. ls_item_data-material_long ls_lips-matnr. ENDIF. APPEND ls_item_data TO lt_item_data. APPEND ls_item_data TO lt_item_data1. CLEAR: ls_item_spl. ls_item_spl-deliv_numb ls_lips-vbeln. ls_item_spl-deliv_item ls_lips-posnr. ls_item_spl-stge_loc pv_lgort. 库存地点 APPEND ls_item_spl TO lt_item_spl. LOOP AT pt_charg ASSIGNING FIELD-SYMBOL(lfs_charg). CLEAR: ls_item_data. lv_newitem lv_newitem 1. ls_item_data-deliv_numb pv_vbeln. 交货单号 ls_item_data-deliv_item lv_newitem. 拆分后的新行项目号 IF strlen( ls_lips-matnr ) 18. ls_item_data-material ls_lips-matnr. 物料号 ELSE. ls_item_data-material_external ls_lips-matnr. ls_item_data-material_long ls_lips-matnr. ENDIF. ls_item_data-hieraritem lv_posnr. 上级行项目/被拆分的行项目 ls_item_data-batch lfs_charg-charg. 新批次号 ls_item_data-dlv_qty 1. 新Item销售单位数量都为1 ls_item_data-sales_unit ls_lips-vrkme. 新Item销售单位 ls_item_data-sales_unit_iso ls_lips-meins. 新Item基本单位 ls_item_data-fact_unit_nom ls_lips-umvkz. 销售数量转换成SKU的分子(因子) ls_item_data-fact_unit_denom ls_lips-umvkn. 销售数量转换为 SKU 的值分母 ls_item_data-usehieritm 1. 子项标记 APPEND ls_item_data TO lt_item_data. APPEND ls_item_data TO lt_item_data1. CLEAR: ls_item_spl. ls_item_spl-deliv_numb ls_lips-vbeln. ls_item_spl-deliv_item lv_newitem. ls_item_spl-stge_loc pv_lgort. 库存地点 APPEND ls_item_spl TO lt_item_spl. ENDLOOP. CALL FUNCTION BAPI_OUTB_DELIVERY_CHANGE EXPORTING header_data ls_header_data header_control ls_header_control delivery p_vbeln TABLES item_data lt_item_data item_data_spl lt_item_spl item_control lt_item_control return lt_return. IF sy-subrc 0. CALL FUNCTION BAPI_TRANSACTION_ROLLBACK. LOOP AT lt_return ASSIGNING FIELD-SYMBOL(lfs_return) WHERE type CA EAX. CALL FUNCTION MESSAGE_TEXT_BUILD EXPORTING msgid lfs_return-id msgnr lfs_return-number msgv1 lfs_return-message_v1 msgv2 lfs_return-message_v2 msgv3 lfs_return-message_v3 msgv4 lfs_return-message_v4 IMPORTING message_text_output lv_msg. MESSAGE lv_msg TYPE S DISPLAY LIKE E. EXIT. ENDLOOP. pv_err E. ELSE. CALL FUNCTION BAPI_TRANSACTION_COMMIT EXPORTING wait X. ENDIF. ENDFORM. FORM frm_goods_move USING pv_vbeln TYPE vbeln. DATA: l_vbkok TYPE vbkok, ls_vbpok TYPE vbpok, lt_vbpok TYPE STANDARD TABLE OF vbpok, lt_prott TYPE STANDARD TABLE OF prott, lv_message TYPE string. 获取交货单信息 SELECT * INTO TABLE DATA(lt_new_lips) FROM lips WHERE vbeln EQ pv_vbeln. SORT lt_new_lips BY posnr. l_vbkok-vbeln_vl pv_vbeln. -- fill this field with your delivery number l_vbkok-wabuc X. LOOP AT lt_new_lips INTO DATA(ls_new_lips) . ls_vbpok-vbeln_vl ls_new_lips-vbeln. ls_vbpok-posnr_vl ls_new_lips-posnr. ls_vbpok-vbeln ls_new_lips-vgbel. ls_vbpok-posnn ls_new_lips-vgpos. ls_vbpok-pikmg ls_new_lips-lfimg. APPEND ls_vbpok TO lt_vbpok. ENDLOOP . 交货过账 CALL FUNCTION WS_DELIVERY_UPDATE EXPORTING vbkok_wa l_vbkok synchron X no_messages_update update_picking X commit X delivery pv_vbeln nicht_sperren X TABLES vbpok_tab lt_vbpok prot lt_prott EXCEPTIONS ef_error_any_0 1 ef_error_in_item_deletion_0 2 ef_error_in_pod_update_0 3 ef_error_in_interface_0 4 ef_error_in_goods_issue_0 5 ef_error_in_final_check_0 6 ef_error_partner_update 7 ef_error_sernr_update 8 error_message 9 OTHERS 10. IF sy-subrc 0 . LOOP AT lt_prott ASSIGNING FIELD-SYMBOL(lfs_prott) WHERE msgty CA EAX.. CALL FUNCTION MESSAGE_TEXT_BUILD EXPORTING msgid lfs_prott-msgid msgnr lfs_prott-msgno msgv1 lfs_prott-msgv1 msgv2 lfs_prott-msgv2 msgv3 lfs_prott-msgv3 msgv4 lfs_prott-msgv4 IMPORTING message_text_output lv_message. ENDLOOP. ELSE. 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_message. ENDIF . MESSAGE lv_message TYPE S DISPLAY LIKE E. ENDFORM.看一下执行效果选择画面输入交货单号和批次号执行后查看交货单可以看到拆分并过账成功。