您的位置:首页 > 其它

通过bdc批量创建销售订单(多个销售订单)

2013-12-11 15:58 393 查看
report Z_VA01_BDC.

types:

  begin of ty_tab,

    header_id type i,

    po_num    type BSTKD,

    sold_to   type KUNNR,

    ship_to   type KUNNR,

    material  type MATNR,

    quantity  type char10,

  end of ty_tab.

data:

  it_tab type standard table of ty_tab,

  wa_tab type ty_tab,

  it_bdc like bdcdata occurs 0 with header line.

*** End generated data section ***

start-of-selection.

  perform upload_data.

  perform batch_data.

*&---------------------------------------------------------------------*
*&      Form  UPLOAD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form UPLOAD_DATA .

  field-symbols:<fs>.

  data:

    l_answer(1) type c,

    it_exc type alsmex_tabline occurs 0 with header line.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

    EXPORTING

      filename                      = 'C:\Users\x.zheng\Desktop\练习\va01.XLSX'

      i_begin_col                   = 1

      i_begin_row                   = 2

      i_end_col                     = 50

      i_end_row                     = 5000

    tables

      intern                        = it_exc

    EXCEPTIONS

      INCONSISTENT_PARAMETERS       = 1

      UPLOAD_OLE                    = 2

      OTHERS                        = 3

            .

  IF sy-subrc <> 0.

  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  else.

    IF it_exc[] is initial.

      CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'

        EXPORTING

          diagnosetext1        = 'No data in excel'

          textline1            = 'Please check data in excel'

          titel                = 'Confirm'

        IMPORTING

          ANSWER               = l_answer.

    else.

      sort it_exc by row col value.

      LOOP AT it_exc.

        assign component it_exc-col of structure wa_tab to <fs>.

        move it_exc-value to <fs>.

        at end of row.

          append wa_tab to it_tab.

          clear wa_tab.

        endat.

      ENDLOOP.

    ENDIF.

  ENDIF.

endform.                    " UPLOAD_DATA
form batch_data.

  clear it_bdc.

  data:

    s_kwmeng type string,

    s_mabnr  type string,

    str      type n,

    l_time type string,

    l_po type char10,

    l_sold type char10,

    l_ship type char10.

  concatenate sy-uzeit+0(2) ':' sy-uzeit+2(2) into l_time.

  LOOP AT it_tab into wa_tab.

    str = str + 1.

    s_kwmeng = 'RV45A-KWMENG(0'.

    s_mabnr = 'RV45A-MABNR(0'.

    concatenate s_kwmeng str ')' into s_kwmeng.

    concatenate s_mabnr  str ')' into s_mabnr.

    l_po   = wa_tab-po_num.

    l_sold = wa_tab-sold_to.

    l_ship = wa_tab-ship_to.

    at new header_id.

      write: / wa_tab-header_id,l_po,l_sold,l_ship.

      perform bdc_dynpro      using 'SAPMV45A' '0101'.

      perform bdc_field       using 'BDC_CURSOR'

                                    'VBAK-AUART'.

      perform bdc_field       using 'BDC_OKCODE'

                                    '/00'.

      perform bdc_field       using 'VBAK-AUART'

                                    'OR'.

      perform bdc_field       using 'VBAK-VKORG'

                                    '1000'.

      perform bdc_field       using 'VBAK-VTWEG'

                                    '10'.

      perform bdc_field       using 'VBAK-SPART'

                                    '00'.

      perform bdc_dynpro      using 'SAPMV45A' '4001'.

      perform bdc_field       using 'BDC_OKCODE'

                                    '/00'.

      perform bdc_field       using 'BDC_CURSOR'

                                    'VBKD-BSTKD'.

      perform bdc_field       using 'VBKD-BSTKD'

                                    l_po.

      perform bdc_field       using 'KUAGV-KUNNR'

                                    l_sold.

      perform bdc_field       using 'RV45A-KETDAT'

                                    '2013/12/25'.

      perform bdc_field       using 'RV45A-KPRGBZ'

                                    'D'.

      perform bdc_field       using 'VBKD-PRSDT'

                                    sy-datum.

      perform bdc_field       using 'VBKD-OIC_TIME'

                                    l_time.

    endat.

      perform bdc_dynpro      using 'SAPMV45A' '4001'.

      perform bdc_field       using 'BDC_OKCODE'

                                    '/00'.

      perform bdc_field       using 'VBKD-BSTKD'

                                    wa_tab-po_num.

      perform bdc_field       using 'KUAGV-KUNNR'

                                    wa_tab-sold_to.

      perform bdc_field       using 'KUWEV-KUNNR'

                                    wa_tab-ship_to.

      perform bdc_field       using 'RV45A-KETDAT'

                                    '2013/12/25'.

      perform bdc_field       using 'RV45A-KPRGBZ'

                                    'D'.

      perform bdc_field       using 'VBKD-PRSDT'

                                    sy-datum.

      perform bdc_field       using 'VBKD-OIC_TIME'

                                    l_time.

      perform bdc_field       using 'VBKD-ZTERM'

                                    'ZB01'.

      perform bdc_field       using 'VBKD-INCO1'

                                    'CIP'.

      perform bdc_field       using 'VBKD-INCO2'

                                    'Düsseldorf'.

      perform bdc_field       using 'BDC_CURSOR'

                                    s_kwmeng.

      perform bdc_field       using s_mabnr

                                    wa_tab-material.

      perform bdc_field       using s_kwmeng

                                    wa_tab-quantity.

    at end of header_id.

      str = 0.

      perform bdc_dynpro      using 'SAPMV45A' '4001'.

      perform bdc_field       using 'BDC_OKCODE'

                                    '=SICH'.

      perform bdc_field       using 'VBKD-BSTKD'

                                    l_po.

      perform bdc_field       using 'KUAGV-KUNNR'

                                    l_sold.

      perform bdc_field       using 'KUWEV-KUNNR'

                                    l_ship.

      perform bdc_field       using 'RV45A-KETDAT'

                                    '2013/12/25'.

      perform bdc_field       using 'RV45A-KPRGBZ'

                                    'D'.

      perform bdc_field       using 'VBKD-PRSDT'

                                    sy-datum.

      perform bdc_field       using 'VBKD-OIC_TIME'

                                    l_time.

      perform bdc_field       using 'VBKD-ZTERM'

                                    'ZB01'.

      perform bdc_field       using 'VBKD-INCO1'

                                    'CIP'.

      perform bdc_field       using 'VBKD-INCO2'

                                    'Düsseldorf'.
*      perform bdc_field       using 'BDC_CURSOR'
*                                    'RV45A-MABNR(02)'.

      CALL TRANSACTION 'VA01'

         USING  it_bdc

         MODE 'A'

         UPDATE 'S'.

      clear it_bdc[].

    endat.

  ENDLOOP.

endform.
*&---------------------------------------------------------------------*
*&      Form  BDC_DYNPRO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0067   text
*      -->P_0068   text
*----------------------------------------------------------------------*
form BDC_DYNPRO  using    program dynpro.

  clear it_bdc.

  it_bdc-program = program.

  it_bdc-dynpro  = dynpro.

  it_bdc-dynbegin = 'X'.

  append it_bdc.

endform.                    " BDC_DYNPRO
*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0072   text
*      -->P_0073   text
*----------------------------------------------------------------------*
form BDC_FIELD  using fnam fval.

  IF fval <> ' '.

    clear it_bdc.

    it_bdc-fnam = fnam.

    it_bdc-fval = fval.

    append it_bdc.

  ENDIF.

endform.                    " BDC_FIELD
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: