(MM)物料BOM与生产BOM对比表

物料BOM与生产BOM对比表

 

*&---------------------------------------------------------------------*
*& 包含               ZSDR013A_TOP
*&---------------------------------------------------------------------*

TABLES:vbak,vbap,vbrp,ekpo,ekko,vbrk,bkpf.

TYPE-POOLS:slis.

"定义ALV输出所需变量
DATAs_layout     TYPE slis_layout_alv,
      gt_fieldcat  TYPE slis_t_fieldcat_alv.

TYPESBEGIN OF gts_data,
        vbeln      TYPE  vbap-vbeln,  "销售凭证
        posnr      TYPE  vbap-posnr,  "销售凭证项目
        werks      TYPE  vbap-werks,  "工厂
        matnr      TYPE  vbap-matnr,  "销售料号
        kwmeng     TYPE  vbap-kwmeng"订单数
        emeng      TYPE  stko-bmeng"订单数
        matnr_wm   TYPE  vbap-matnr,  "物料BOM母件
        ojtxb_wm   TYPE  ojtxb,       "物料BOM母件描述
        idnrk_wz   TYPE  idnrk,       "物料BOM子件
        ojtxb_wz   TYPE  ojtxb,       "物料BOM子件描述
        menge_wz   TYPE  kmpmg,       "物料BOM子件子件数量
        meins_wz   TYPE  meins,       "单位
        zdbjg(15) ,                   "对比结果
        aufnr      TYPE  resb-aufnr,  "生产订单号
        baugr_sm   TYPE  resb-baugr,  "生产BOM母件
        ojtxb_sm   TYPE  ojtxb,       "生产BOM母件描述
        matnr_sz   TYPE  resb-matnr,  "生产BOM子件
        ojtxb_sz   TYPE  ojtxb,       "生产BOM子件描述
        bdmng_sz   TYPE  resb-bdmng,  "生产BOM子件子件数量
        flag(1),
       END OF gts_data.

DATAgt_data   TYPE TABLE OF gts_data WITH HEADER LINE.
DATAgt_datab  TYPE TABLE OF gts_data WITH HEADER LINE.
DATAgt_datas  TYPE TABLE OF gts_data WITH HEADER LINE.
DATAgt_data1  TYPE TABLE OF gts_data WITH HEADER LINE.
DATAgt_switch TYPE TABLE OF gts_data WITH HEADER LINE.
DATAgs_data   TYPE gts_data.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS:     p_werks  LIKE vbap-werks OBLIGATORY .   "采购订单类型
SELECT-OPTIONS:
                s_vbeln  FOR vbap-vbeln  MODIF ID c1,   "公司代码
                s_posnr  FOR vbap-posnr  MODIF ID c1.   "发票过账日期
SELECTION-SCREEN END OF BLOCK b1.

 

*&---------------------------------------------------------------------*
*& 包含               ZSDR013A_FOM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form SCREEN_SETTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM screen_setting .
*  LOOP AT SCREEN.
*    CASE screen-group1.
*      WHEN 'M1'.
*        screen-input = '0'.
*    ENDCASE.
*    MODIFY SCREEN.
*  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM fom_getdata .
  CLEAR:gt_data[].
  CLEAR:gs_data.
  "" 取销售订单数据

  SELECT  vbap~vbeln  "销售凭证
          vbap~posnr  "销售凭证项目
          vbap~werks  "工厂
          vbap~matnr  "销售料号
          vbap~kwmeng "订单数
          vbap~matnr AS matnr_wm "物料BOM母件
  INTO CORRESPONDING FIELDS OF TABLE gt_data[]
    
FROM vbap
    
WHERE vbap~werks p_werks
      
AND vbap~vbeln IN s_vbeln
      
AND vbap~posnr IN s_posnr
      
.

  IF gt_data[] IS NOT INITIAL.

    DATA topmat LIKE cstmat .
    DATA dstst  LIKE csdata-xfeld .
    DATA stb    TYPE TABLE OF stpox  WITH HEADER LINE.
    DATA it_a   TYPE TABLE OF cscmat WITH HEADER LINE.
    DATA it_b   TYPE TABLE OF cscmat WITH HEADER LINE.
    DATA matcat  TYPE TABLE OF cscmat WITH HEADER LINE.
    LOOP AT gt_data[] INTO gs_data WHERE flag IS INITIAL .

      gs_data-emeng gs_data-kwmeng .
      gs_data-matnr_wm gs_data-matnr .

      DATA gl_flag TYPE c .
*-----------------------------------------------------------------
      CLEAR stb[] .
      CLEAR matcat[] .
      CLEAR topmat .
      CLEAR dstst .
      CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
        EXPORTING
           capid 'PC01' "应用程序一般为PP01
           datuv sy-datum "通常为系统的当前日期
           mtnrv gs_data-matnr_wm "要展开BOM的物料
           mehrs 'X' " x表示多层展开﹐space表示只展开第一层
           werks gs_data-werks "通常为1000
           emeng gs_data-emeng "需求数量
        IMPORTING
           topmat topmat
           dstst  
dstst
        
TABLES
           stb stb "展开的BOM存放在该内表
           matcat matcat "下面含有元件的物料存放在该内表
        EXCEPTIONS
           alt_not_found               1
           call_invalid                2
           material_not_found          3
           missing_authorization       4
           no_bom_found                5
           no_plant_data               6
           no_suitable_bom_found       7
           conversion_error            8
           OTHERS                      9
        .

      IF stb IS NOT INITIAL.
        LOOP AT stb WHERE stufe 1.
*          READ TABLE matcat WITH KEY matnr = stb-idnrk .
*          IF sy-subrc <> 0.
            gs_data-idnrk_wz stb-idnrk"物料BOM子件
*            gs_data-ojtxb_wz = stb-ojtxb. "物料BOM子件描述
            gs_data-menge_wz stb-menge"物料BOM子件子件数量
            gs_data-meins_wz stb-meins"单位
            gs_data-flag 'X'.
            gl_flag 'X'.
            APPEND gs_data TO gt_data.
*          ENDIF.
        ENDLOOP.
      ENDIF.

    DELETE matcat[] WHERE verid IS INITIAL .
    CLEAR it_a[] .
    it_a[] matcat[] .

      WHILE NOT it_a[] IS INITIAL"递归算法

        LOOP AT it_a.

          CLEAR stb[] .
          CLEAR matcat[] .
          CLEAR topmat .
          CLEAR dstst .
          CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
            EXPORTING
               capid 'PC01' "应用程序一般为PP01
               datuv sy-datum "通常为系统的当前日期
               mtnrv it_a-matnr "要展开BOM的物料
               mehrs 'X' " x表示多层展开﹐space表示只展开第一层
               werks gs_data-werks "通常为1000
               emeng gs_data-emeng "需求数量
            IMPORTING
               topmat topmat
               dstst  
dstst
            
TABLES
               stb stb "展开的BOM存放在该内表
               matcat matcat "下面含有元件的物料存放在该内表
            EXCEPTIONS
               alt_not_found               1
               call_invalid                2
               material_not_found          3
               missing_authorization       4
               no_bom_found                5
               no_plant_data               6
               no_suitable_bom_found       7
               conversion_error            8
               OTHERS                      9
            .

          IF stb IS NOT INITIAL.
            LOOP AT stb WHERE stufe 1.
*              READ TABLE matcat WITH KEY matnr = stb-idnrk .
*              IF sy-subrc <> 0.
                gs_data-matnr_wm it_a-matnr .
                gs_data-idnrk_wz stb-idnrk"物料BOM子件
*                gs_data-ojtxb_wz = stb-ojtxb. "物料BOM子件描述
                gs_data-menge_wz stb-menge"物料BOM子件子件数量
                gs_data-meins_wz stb-meins"单位
                gs_data-flag 'X'.
                APPEND gs_data TO gt_data.
*              ENDIF.
            ENDLOOP.
          ENDIF.

          DELETE matcat[] WHERE verid IS INITIAL .
          APPEND LINES OF matcat[] TO it_b[].
          CLEAR it_a .

        ENDLOOP.
        SORT it_b BY matnr .
        DELETE ADJACENT DUPLICATES FROM it_b[] COMPARING matnr.
        it_a[] it_b[] .
        CLEAR it_b[] .

      ENDWHILE.

      IF gl_flag IS NOT INITIAL.
         gs_data-flag 'D'.
      ENDIF.

      MODIFY gt_data[] FROM gs_data .
      CLEAR  gs_data .
    ENDLOOP .

    DELETE gt_data[] WHERE flag 'D' .
*    SORT gt_data[] BY vbeln posnr werks matnr matnr_wm idnrk_wz .
*    DELETE ADJACENT DUPLICATES FROM gt_data[] COMPARING vbeln posnr werks matnr matnr_wm idnrk_wz.

    gt_switch[] gt_data[] .
    LOOP AT gt_data INTO gs_data.

*    SELECT SINGLE AUFNR INTO GS_DATA-AUFNR FROM RESB
*      WHERE KDAUF = GS_DATA-VBELN
*        AND KDPOS = GS_DATA-POSNR
*        .
*
*    IF SY-SUBRC = 0.
*      GS_DATA-BAUGR_SM = GS_DATA-MATNR .
*      SELECT SINGLE MAKTX INTO GS_DATA-OJTXB_SM FROM MAKT
*        WHERE MATNR = GS_DATA-MATNR
*          AND SPRAS = 1
*        .
*      SELECT SINGLE BAUGR INTO GS_DATA-BAUGR_SM FROM RESB
*        WHERE KDAUF = GS_DATA-VBELN
*          AND KDPOS = GS_DATA-POSNR
*          AND AUFNR = GS_DATA-AUFNR
*          AND BAUGR = GS_DATA-MATNR
*          .

      READ TABLE gt_switch WITH KEY vbeln gs_data-vbeln
                                    posnr 
gs_data-posnr
                                    werks 
gs_data-werks
                                    matnr 
gs_data-matnr
                                    idnrk_wz 
gs_data-matnr_wm .
      IF sy-subrc 0.
        gs_data-menge_wz gs_data-menge_wz * gt_switch-menge_wz .
      ENDIF.

      SELECT MAXafpo~aufnr INTO gs_data-aufnr
        
FROM afpo
        INNER 
JOIN caufv ON caufv~aufnr afpo~aufnr
        
WHERE afpo~kdauf  gs_data-vbeln
          
AND afpo~kdpos  gs_data-posnr
          
AND afpo~matnr  gs_data-matnr_wm
          
AND caufv~autyp '10'
          AND caufv~loekz ''
          .

      SELECT SINGLE
          resb~baugr AS baugr_sm
          resb
~matnr AS matnr_sz
          resb
~bdmng AS bdmng_sz
        
INTO CORRESPONDING FIELDS OF gs_data
        
FROM resb
        
WHERE resb~baugr  gs_data-matnr_wm
          
AND resb~matnr  gs_data-idnrk_wz
          
AND resb~aufnr  gs_data-aufnr
          
AND resb~xloek  ''
          .

      IF sy-subrc <> 0."废弃没有内容的生产订单号
         CLEAR gs_data-aufnr .
      ENDIF.
*      SELECT SINGLE aufnr baugr AS baugr_sm matnr AS matnr_sz bdmng AS bdmng_sz INTO CORRESPONDING FIELDS OF gs_data FROM resb
*        WHERE kdauf = gs_data-vbeln
*          AND kdpos = gs_data-posnr
*          AND baugr = gs_data-matnr_wm
*          AND matnr = gs_data-idnrk_wz
*          .
*
*      IF sy-subrc <> 0.
*        SELECT SINGLE aufnr baugr AS baugr_sm INTO CORRESPONDING FIELDS OF gs_data FROM resb
*          WHERE kdauf = gs_data-vbeln
*            AND kdpos = gs_data-posnr
*            AND baugr = gs_data-matnr_wm
*            .
*
*        IF sy-subrc <> 0 .
*          SELECT SINGLE aufnr INTO CORRESPONDING FIELDS OF gs_data FROM resb "baugr AS baugr_sm
*            WHERE kdauf = gs_data-vbeln
*              AND kdpos = gs_data-posnr
*              AND baugr = gs_data-matnr
*              .
*        ENDIF .
*
*      ENDIF.

      SELECT SINGLE maktx INTO gs_data-ojtxb_sm FROM makt
        
WHERE matnr gs_data-baugr_sm
          
AND spras 1
        .

      SELECT SINGLE maktx INTO gs_data-ojtxb_sz FROM makt
        
WHERE matnr gs_data-matnr_sz
          
AND spras 1
        .

*    ENDIF.
*BAUGR AS BAUGR_SM MATNR AS MATNR_SZ BDMNG AS BDMNG_SZ

    MODIFY gt_data FROM gs_data .
    CLEAR gs_data .
    ENDLOOP.

    LOOP AT gt_data INTO gs_data.

      SELECT SINGLE maktx INTO gs_data-ojtxb_wm FROM makt
        
WHERE matnr gs_data-matnr_wm
          
AND spras 1
          .

      SELECT SINGLE maktx INTO gs_data-ojtxb_wz FROM makt
        
WHERE matnr gs_data-idnrk_wz
          
AND spras 1
          .

*     gs_data-menge_wz = gs_data-menge_wz * gs_data-kwmeng .
      IF gs_data-kwmeng IS NOT INITIAL.
      gs_data-bdmng_sz gs_data-bdmng_sz / gs_data-kwmeng .
      ENDIF.

      READ TABLE gt_switch WITH KEY vbeln    gs_data-vbeln
                                    posnr    
gs_data-posnr
                                    werks    
gs_data-werks
                                    matnr    
gs_data-matnr
                                    matnr_wm 
gs_data-idnrk_wz
                                    
.

      IF sy-subrc 0.
          gs_data-flag 'D' .
      ENDIF.

      IF gs_data-idnrk_wz gs_data-matnr_sz.
        IF gs_data-menge_wz gs_data-bdmng_sz.
           gs_data-zdbjg '完全一致.
        ELSE .
           gs_data-zdbjg '料号一致数量不一致.
        ENDIF.
      ELSE .
           gs_data-zdbjg '完全不一致.
      ENDIF.

     MODIFY gt_data FROM gs_data .
     CLEAR gs_data .
    ENDLOOP.

    CLEAR gt_datab[] .
    gt_datab[] gt_data[] .
    SORT gt_datab[] BY vbeln posnr .
    DELETE ADJACENT DUPLICATES FROM gt_datab[] COMPARING vbeln posnr .
*    DELETE gt_datab[] WHERE matnr_wm IS INITIAL .

    CLEAR gt_datas[] .
    SELECT
      afpo~aufnr
      afpo
~kdauf AS vbeln
      afpo
~kdpos AS posnr
      afpo
~matnr AS matnr_wm
      
INTO CORRESPONDING FIELDS OF TABLE gt_datas[]
      
FROM afpo
      INNER 
JOIN caufv ON caufv~aufnr afpo~aufnr
      
FOR ALL ENTRIES IN gt_datab[]
        
WHERE afpo~kdauf  gt_datab-vbeln
          
AND afpo~kdpos  gt_datab-posnr
*          AND afpo~matnr  = gt_datab-matnr_wm
          AND afpo~dauty  '10'
          AND afpo~kdauf <> ''
          AND afpo~kdpos <> ''
          AND caufv~autyp '10'
          AND caufv~loekz ''
           .

    SORT gt_datas[] BY vbeln posnr aufnr .
*    DELETE ADJACENT DUPLICATES FROM gt_datas[] COMPARING vbeln posnr .

    IF gt_datas[] IS NOT INITIAL.

      CLEAR gt_data1[] .
      SELECT resb~aufnr
             resb
~baugr AS baugr_sm
             resb
~matnr AS matnr_sz
             resb
~bdmng AS bdmng_sz
        
INTO CORRESPONDING FIELDS OF TABLE gt_data1[]
        
FROM resb
        
FOR ALL ENTRIES IN gt_datas[]
        
WHERE aufnr gt_datas-aufnr
          
AND xloek ''
        .

     SORT gt_data1[] BY aufnr .

      LOOP AT gt_data1.

        READ TABLE gt_data WITH KEY aufnr    gt_data1-aufnr
                                    baugr_sm 
gt_data1-baugr_sm
                                    matnr_sz 
gt_data1-matnr_sz
                                    
.
        IF sy-subrc <> 0.

        SELECT SINGLE vbap~vbeln  "销售凭证
                      vbap~posnr  "销售凭证项目
                      vbap~werks  "工厂
                      vbap~matnr  "销售料号
                      vbap~kwmeng "订单数
*                      vbap~matnr AS matnr_wm "物料BOM母件
          INTO CORRESPONDING FIELDS OF gt_data1
          
FROM vbap
          INNER 
JOIN afpo ON vbap~vbeln afpo~kdauf AND vbap~posnr afpo~kdpos
          
WHERE afpo~aufnr gt_data1-aufnr .

          SELECT SINGLE maktx INTO gt_data1-ojtxb_sm FROM makt
            
WHERE matnr gt_data1-baugr_sm
              
AND spras 1
              .

          SELECT SINGLE maktx INTO gt_data1-ojtxb_sz FROM makt
            
WHERE matnr gt_data1-matnr_sz
              
AND spras 1
              .

           IF gt_data1-kwmeng IS NOT INITIAL.
             gt_data1-bdmng_sz gt_data1-bdmng_sz / gt_data1-kwmeng .
           ENDIF.

          gt_data1-zdbjg '完全不一致.
          APPEND gt_data1 TO gt_data[] .
        ENDIF.
        CLEAR gt_data1 .
      ENDLOOP.

    ENDIF.

    SORT gt_data[] BY vbeln posnr matnr matnr_wm idnrk_wz aufnr baugr_sm matnr_sz.
    DELETE ADJACENT DUPLICATES FROM gt_data[] COMPARING vbeln posnr matnr matnr_wm idnrk_wz aufnr baugr_sm matnr_sz.

*    DELETE gt_data[] WHERE flag = 'D' .
*TYPES: BEGIN OF GTS_DATA,
*        VBELN      TYPE  VBAP-VBELN,  "销售凭证
*        POSNR      TYPE  VBAP-POSNR,  "销售凭证项目
*        WERKS      TYPE  VBAP-WERKS,  "工厂
*        MATNR      TYPE  VBAP-MATNR,  "销售料号
*        KWMENG     TYPE  VBAP-KWMENG, "订单数
*        EMENG      TYPE  STKO-BMENG, "订单数
*        MATNR_WM   TYPE  VBAP-MATNR,  "物料BOM母件
*        OJTXB_WM   TYPE  OJTXB,       "物料BOM母件描述
*        IDNRK_WZ   TYPE  IDNRK,       "物料BOM子件
*        OJTXB_WZ   TYPE  OJTXB,       "物料BOM子件描述
*        MENGE_WZ   TYPE  KMPMG,       "物料BOM子件子件数量
*        MEINS_WZ   TYPE  MEINS,       "单位
*        ZDBJG(15) ,                   "对比结果
*        AUFNR      TYPE  RESB-AUFNR,  "生产订单号
*        BAUGR_SM   TYPE  RESB-BAUGR,  "生产BOM母件
*        OJTXB_SM   TYPE  OJTXB,       "生产BOM母件描述
*        MATNR_SZ   TYPE  RESB-MATNR,  "生产BOM子件
*        OJTXB_SZ   TYPE  OJTXB,       "生产BOM子件描述
*        BDMNG_SZ   TYPE  RESB-BDMNG,  "生产BOM子件子件数量
*        FLAG(1),
*       END OF GTS_DATA.
  ELSE.
    MESSAGE '没有符合条件的数据TYPE 'I'.
    STOP.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_display .
  CLEAR s_layout.
  s_layout-zebra 'X'.
  s_layout-colwidth_optimize 'X'.
*  s_layout-box_fieldname    = 'BOX'.
  PERFORM frm_fill_field .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      is_layout                s_layout
      it_fieldcat              
gt_fieldcat
      i_callback_program       
sy-repid
      i_callback_pf_status_set 
'PF_STATUS_SET'
*     i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
      i_callback_user_command  'USER_COMMAND'
    TABLES
      t_outtab                 gt_data[].
ENDFORM.

FORM frm_fill_field .
  DATA:  wa_fieldcat TYPE slis_fieldcat_alv.
  DEFINE fill_field.
    wa_fieldcat-fieldname &1.
    wa_fieldcat-seltext_l &2.
*    wa_fieldcat-checkbox  = &3.
*     wa_fieldcat-edit    =  &4.

    IF wa_fieldcat-fieldname 'MATNR' OR wa_fieldcat-fieldname 'MATNR_WM'
       OR wa_fieldcat-fieldname 'IDNRK_WZ' OR wa_fieldcat-fieldname 'BAUGR_SM'
       OR wa_fieldcat-fieldname 'MATNR_SZ'.

       wa_fieldcat-ref_tabname   'VBAP'.
       wa_fieldcat-ref_fieldname 'MATNR'.

    ENDIF.

    IF wa_fieldcat-fieldname 'OJTXB_WM' OR wa_fieldcat-fieldname 'OJTXB_WZ'
       OR wa_fieldcat-fieldname 'OJTXB_SM' OR wa_fieldcat-fieldname 'OJTXB_SZ' .

       wa_fieldcat-ref_tabname   'MAKT'.
       wa_fieldcat-ref_fieldname 'MAKTX'.

    ENDIF.

    APPEND wa_fieldcat TO gt_fieldcat.
    CLEAR wa_fieldcat.
  END-OF-DEFINITION.
  fill_field :
        'VBELN'    '销售凭证',
        'POSNR'    '销售凭证项目',
        'WERKS'    '工厂',
        'MATNR'    '销售料号',
        'KWMENG'   '订单数',
        'MATNR_WM' '物料BOM母件',
        'OJTXB_WM' '物料BOM母件描述',
        'IDNRK_WZ' '物料BOM子件',
        'OJTXB_WZ' '物料BOM子件描述',
        'MENGE_WZ' '物料BOM子件子件数量',
        'MEINS_WZ' '单位',
        'ZDBJG'    '对比结果',
        'AUFNR'    '生产订单号',
        'BAUGR_SM' '生产BOM母件',
        'OJTXB_SM' '生产BOM母件描述',
        'MATNR_SZ' '生产BOM子件',
        'OJTXB_SZ' '生产BOM子件描述',
        'BDMNG_SZ' '生产BOM子件子件数量'.
ENDFORM.

FORM pf_status_set USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.

FORM user_command USING i_ucomm LIKE sy-ucomm
                    is_selfield 
TYPE slis_selfield.
  DATAref TYPE REF TO cl_gui_alv_grid.
  DATA lv_stable TYPE lvc_s_stbl.   "刷新稳定性
  RANGESl_werks FOR t001w-werks.
  RANGESl_matnr FOR mara-matnr.
  DATA:l_bukrs TYPE t001k-bukrs.

  lv_stable-row '1'.
  lv_stable-col '1'.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid ref.
  CALL METHOD ref->check_changed_data.

  CASE i_ucomm.
    WHEN 'DEL_DJ'.
  ENDCASE.

  CALL METHOD ref->refresh_table_display
    
EXPORTING
      is_stable lv_stable.

ENDFORM.

 

INITIALIZATION .

AT SELECTION-SCREEN OUTPUT.
  PERFORM screen_setting.

START-OF-SELECTION.
  PERFORM fom_getdata .
  PERFORM frm_display.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值