GR量与订单交货量不一致

 由于月结,系统响应过慢,用户用MIGO 101 缴库时就强制结束掉后再次执行。

结果造成缴库的40个订单每个订单都有2个数量一样的物料凭证,但订单的交货量只等于其中的一个。

如果用102冲销,订单的交货量就为0。

接到邮件时有想过弄个报表直接去改为0的交货量。

但是老大说数据不一致的不能直接改,去发0SS找SAP解决。

于是东拜拜,西拜拜。终于找总公司把账号拿了过来。

昨天下午发了个OSS,没想到今天上午就回复了。速度倒可以。

打开一看,汗一个,直接提供了一个报表去改AFPO表的交货量。

还反复交代现在测试系统里测试,郁闷的是这种问题我怎么在测试系统里还原出来?

 

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 帮我分析一下,让你写出这样的代码,你作为顾问应该提怎么样的需求,总结一下
07-08
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值