SAP ERP101 interface route definition

  *&---------------------------------------------------------------------*
*&  Include           Z_MMCUST101_CN_F01
*&---------------------------------------------------------------------*

*---------------------------------------------------------------------*
*     CLASS lcl_event_alv DEFINITION
*---------------------------------------------------------------------*
CLASS lcl_event_alv DEFINITION.

  PUBLIC SECTION.
    METHODS:
      h_double_click FOR EVENT double_click OF cl_gui_alv_grid
                     IMPORTING e_row                        "#EC NEEDED
                               e_column.                    "#EC NEEDED

ENDCLASS.                                                    " LCL_EVENT_ALV DEFINITION
*---------------------------------------------------------------------*
*        Class (Implementation)  lcl_event_alv
*---------------------------------------------------------------------*
CLASS lcl_event_alv IMPLEMENTATION.

  METHOD h_double_click.
*    READ TABLE gt_user INDEX e_row-index INTO gs_user.
    IF sy-subrc EQ 0.
      PERFORM f_user_command USING '&IC1'.

    ENDIF.
  ENDMETHOD.                           " H_double_click

ENDCLASS.                              " LCL_EVENT_ALV

*&---------------------------------------------------------------------*
*&      Form  f_user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->U_UCOMM    text
*----------------------------------------------------------------------*
FORM f_user_command USING u_ucomm TYPE sy-ucomm.

  Data : lv_valid      TYPE char1.                          "#EC NEEDED
  Data : lw_data       type ZTMMCUST101_CN  .



  CASE u_ucomm.
*RC - 2008.04.07 -->
*    WHEN '&IC1'.

    WHEN c_save.

*     Verification of Changes
      CALL METHOD go_alv_grid->check_changed_data
        IMPORTING
          e_valid = lv_valid.


*     Delete table
      loop at gt_data assigning <fs_data>.
        delete table  gt_grid1 from <fs_data>.
      endloop.

      loop at gt_grid1 assigning <fs_data>.
        MOVE-CORRESPONDING   <fs_data>  to lw_data.
        delete ZTMMCUST101_CN from lw_data.
        free lw_data.
      endloop.

*     Update Modify table
      LOOP AT gt_data assigning  <fs_data>.

        MOVE-CORRESPONDING   <fs_data>  to lw_data.
        modify ZTMMCUST101_CN from lw_data.
        free lw_data.
      ENDLOOP.

      message i009(z_dev_custom_cn).

  ENDCASE.

endform.                    "f_user_command

*&---------------------------------------------------------------------*
*&      Form  select_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM select_data .

  select ztmmcust101_cn~msehi
         t006a~msehl
         ztmmcust101_cn~zcusuomcode
         ztmmcust101_cn~zconvfactor
         ztmmcust101_cn~zcusdesc
  appending corresponding fields of table gt_data
  From ZTMMCUST101_CN JOIN T006A
  ON T006A~MSEHI = ZTMMCUST101_CN~MSEHI
  and t006a~SPRAS = C_SPAR
  Where ZTMMCUST101_CN~MSEHI in so_uom.
*the first display if no any entries. by purter xie

*  IF sy-subrc NE 0.
*    MESSAGE s021.
*    SUBMIT (sy-repid) VIA SELECTION-SCREEN.
*  ENDIF.

  loop at gt_data assigning <fs_data>.

    if <fs_data>-ZCONVFACTOR = space.

      <fs_data>-ZCONVFACTOR = '1'.

    endif.

  endloop.

ENDFORM.                    " select_data
*&---------------------------------------------------------------------*
*&      Form  download_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM download_data .

  data: lv_scnt type i.                                     "#EC NEEDED

  perform create_excel.


  CALL METHOD OF gv_EXCEL 'WORKSHEETS' = gv_SHEET EXPORTING #1 = 1 .
  call method of gv_SHEET 'ACTIVATE'.
  SET PROPERTY OF gv_SHEET   'NAME'  = text-t02.
  free object gv_SHEET.
  perform fill_in_sheet1.

  lv_scnt = sy-index.
  call method of gv_EXCEL 'WORKSHEETS' = gv_SHEET.

  call method of gv_SHEET 'ADD'.

  free object gv_SHEET.   "OK
  perform fill_header_sheet2.
  perform fill_detail_sheet2.

  Perform save_workbook.

ENDFORM.                    " download_data

*---------------------------------------------------------------------*
*       FORM USER_COMMAND                                             *
*---------------------------------------------------------------------*
*FORM user_command USING u_ucomm     TYPE syucomm
*                        us_selfield TYPE slis_selfield.     "#EC NEEDED
*
*  CASE u_ucomm.
*
*    when others.
*
*  ENDCASE.
*
*ENDFORM.                               " USER_COMMAND
*&---------------------------------------------------------------------*
*&      Form  create_excel
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_excel .

  CREATE OBJECT gv_EXCEL 'EXCEL.APPLICATION'.

  if sy-subrc ne 0.
*RC - 2008.04.07 -->
*    write: / 'No EXCEL creation possible'.
*    stop.
    WRITE: / text-m01.
    EXIT.
  endif.

  set property of gv_EXCEL 'DisplayAlerts' = 0.

  CALL METHOD OF gv_EXCEL 'WORKBOOKS' = gv_WORKBOOK.

  SET PROPERTY OF gv_EXCEL 'VISIBLE' = 0.

*  Create worksheet
  set property of gv_EXCEL 'SheetsInNewWorkbook' = 1.
  call method of gv_WORKBOOK 'ADD'.

ENDFORM.                    " create_excel
*&---------------------------------------------------------------------*
*&      Form  fill_header_sheet2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fill_header_sheet2 .

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'A1'.
  SET PROPERTY OF gv_CELL  'VALUE' = text-H01.
  free object gv_CELL.

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'B1'.
  SET PROPERTY OF gv_CELL    'VALUE' =  text-H02.
  free object gv_CELL.


  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'C1'.
  SET PROPERTY OF gv_CELL   'VALUE' = text-H03.
  free object gv_CELL.

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'D1'.
  SET PROPERTY OF gv_CELL   'VALUE' = text-H04.
  free object gv_CELL.

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'E1'.
  SET PROPERTY OF gv_CELL   'VALUE' = text-H05.
  free object gv_CELL.

ENDFORM.                    " fill_header_sheet2
*&---------------------------------------------------------------------*
*&      Form  fill_detail_sheet2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fill_detail_sheet2 .

  data: lc_row type i.
  field-symbols : <fs_grid> type ty_alv_structure.

  loop at gt_data assigning <fs_grid> .
    lc_row = SY-TABIX + 1.
*    unpack lc_row to val+12(4).
    CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 1.
    SET PROPERTY OF gv_CELL1   'VALUE' = <fs_grid>-MSEHI.
    free object gv_CELL1.
    CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 2.
    SET PROPERTY OF gv_CELL1 'VALUE'  =   <fs_grid>-MSEHL .
    free object gv_CELL1.

    CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 3.
    SET PROPERTY OF gv_CELL1 'NumberFormat' = '@'.
    SET PROPERTY OF gv_CELL1   'VALUE' = <fs_grid>-ZCUSUOMCODE .
    free object gv_CELL1.

    CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 4.
    SET PROPERTY OF gv_CELL1   'VALUE' = <fs_grid>-ZCONVFACTOR.
    free object gv_CELL1.

    CALL METHOD OF gv_EXCEL 'CELLS' = gv_CELL1 EXPORTING #1 = lc_row #2 = 5.
    SET PROPERTY OF gv_CELL1   'VALUE' = <fs_grid>-ZCUSDESC.
    free object gv_CELL1.

  endloop.

  CALL METHOD OF gv_EXCEL 'Columns' = gv_COLUMN.
  CALL METHOD OF gv_COLUMN 'Autofit'.
  free object gv_COLUMN.

  free object gv_int.
  free object gv_CELL.
  free object: gv_CELL1.
  free object gv_RANGE.
  free object: gv_COLUMN, gv_ROW.


ENDFORM.                    " fill_detail_sheet2
*&---------------------------------------------------------------------*
*&      Form  fill_in_sheet1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fill_in_sheet1 .


*ROW1
  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'A1'.
  SET PROPERTY OF gv_CELL   'VALUE' = text-r01.
  free object gv_CELL.

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'B1'.
  SET PROPERTY OF gv_CELL   'VALUE' = text-r02.
  free object gv_CELL.

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'C1'.
  SET PROPERTY OF gv_CELL   'VALUE' = text-r03.
  free object gv_CELL.

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'D1'.
  SET PROPERTY OF gv_CELL   'VALUE' = text-r04.
  free object gv_CELL.

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'E1'.
  SET PROPERTY OF gv_CELL   'VALUE' = text-r05.
  free object gv_CELL.

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #1 = 'F1'.
  SET PROPERTY OF gv_CELL   'VALUE' = text-r06.
  free object gv_CELL.

*ROW 2
  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'A2'.
  SET PROPERTY OF gv_CELL   'VALUE' = text-r21.
  free object gv_CELL.

  CONCATENATE  sy-datum(4'/' sy-datum+4(2'/' sy-datum+6(2)  into gv_date .

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'B2'.
  SET PROPERTY OF gv_CELL 'NumberFormat' = 'yyyy/mm/dd'.
  SET PROPERTY OF gv_CELL 'VALUE' = gv_date.
  free object gv_CELL.



  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'C2'.
  SET PROPERTY OF gv_CELL   'VALUE' = sy-timlo.
  free object gv_CELL.

  CALL METHOD OF gv_EXCEL 'RANGE' = gv_CELL EXPORTING #2 = 'D2'.
  SET PROPERTY OF gv_CELL   'VALUE' = '4'.
  free object gv_CELL.

  CALL METHOD OF gv_EXCEL 'Columns' = gv_COLUMN.
  CALL METHOD OF gv_COLUMN 'Autofit'.
  free object gv_COLUMN.

  free object gv_int.
  free object gv_CELL.
  free object: gv_CELL1.
  free object gv_RANGE.
  free object: gv_COLUMN, gv_ROW.

ENDFORM.                    " fill_in_sheet1
*&---------------------------------------------------------------------*
*&      Form  save_workbook
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM save_workbook .

  get property of gv_EXCEL 'ActiveSheet' = gv_SHEET.
  free object gv_SHEET.
  free object gv_WORKBOOK.

  GET PROPERTY OF gv_EXCEL 'ActiveWorkbook' = gv_WORKBOOK.
  call method of gv_WORKBOOK 'SAVEAS'
    EXPORTING
      #1 = P_FILE1
      #2 = 1.
  call method of gv_WORKBOOK 'CLOSE'.
  call method of gv_EXCEL 'QUIT'.

  free object gv_SHEET.
  free object gv_WORKBOOK.
  free object gv_EXCEL.

ENDFORM.                    " save_workbook
*&---------------------------------------------------------------------*
*&      Form  create_and_init_alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_and_init_alv .

* Macro definition
*  DEFINE l_m_fieldcat.
*    add 1 to ls_alv_cat-col_pos.
*    ls_alv_cat-fieldname  = &1.
*    ls_alv_cat-ref_table  = &2.
*    ls_alv_cat-edit       = &3.
*    ls_alv_cat-COLTEXT  = &4.
*    ls_alv_cat-selddictxt   = 'M'.
*    append ls_alv_cat to lt_alv_cat.
*  END-OF-DEFINITION.

* replace the macros by Purter xie 15-April-2008
  Data: lw_alv_cat type LVC_S_FCAT.

  DATA:
    ls_variant      TYPE disvariant,
    lt_sort         TYPE lvc_t_sort,
*   ls_sort         TYPE lvc_s_sort,
    lt_alv_cat      TYPE lvc_t_fcat,
*    ls_alv_cat      TYPE lvc_s_fcat,
    ls_alv_lay      TYPE lvc_s_layo,
    ls_print        TYPE lvc_s_prnt,
    lv_offline       TYPE char1,
    lt_toolbar_excl TYPE ui_functions.

  CALL METHOD cl_gui_alv_grid=>offline
    RECEIVING
      e_offline = lv_offline.

  IF lv_offline EQ 0.
    CREATE OBJECT go_container
      EXPORTING
        extension                   = 2000
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        OTHERS                      = 6.
    IF sy-subrc NE 0.
* RC - 2008.04.07 -->
*      MESSAGE e208(00) WITH 'The control could not be created'.
      MESSAGE e208(00WITH text-m02.
    ENDIF.
  ENDIF.

* Create an instance of alv control
  CREATE OBJECT go_alv_grid
    EXPORTING
      i_parent = go_container.

** Build field catalog and sort table
  if p_langu = 'E'.
*  l_m_fieldcat 'MSEHI'  'T006A' 'X' text-E01.
*  l_m_fieldcat 'MSEHL'  '' '' text-E02.
*  l_m_fieldcat  'ZCUSUOMCODE'  '' 'X' text-E03.
*  l_m_fieldcat 'ZCONVFACTOR'  'ZTMMCUST101_CN' 'X' text-E04.
*  l_m_fieldcat 'ZCUSDESC' '' 'X' text-E05.

* replace the macros by Purter xie 15-April-2008
    lw_alv_cat-col_pos = 1.
    lw_alv_cat-fieldname = 'MSEHI'.
    lw_alv_cat-ref_table = 'T006A'.
    lw_alv_cat-edit = 'X'.
    lw_alv_cat-COLTEXT = text-E01.
    lw_alv_cat-selddictxt = 'M'.
    append lw_alv_cat to lt_alv_cat.
    clear lw_alv_cat.

    lw_alv_cat-col_pos = 2.
    lw_alv_cat-fieldname = 'MSEHL'.
    lw_alv_cat-ref_table = ''.
    lw_alv_cat-edit = ''.
    lw_alv_cat-COLTEXT = text-E02.
    lw_alv_cat-selddictxt = 'M'.
    append lw_alv_cat to lt_alv_cat.
    clear lw_alv_cat.

    lw_alv_cat-col_pos = 3.
    lw_alv_cat-fieldname = 'ZCUSUOMCODE'.
    lw_alv_cat-ref_table = ''.
    lw_alv_cat-edit = 'X'.
    lw_alv_cat-COLTEXT = text-E03.
    lw_alv_cat-selddictxt = 'M'.
    append lw_alv_cat to lt_alv_cat.
    clear lw_alv_cat.

    lw_alv_cat-col_pos = 4.
    lw_alv_cat-fieldname = 'ZCONVFACTOR'.
    lw_alv_cat-ref_table = 'ZTMMCUST101_CN'.
    lw_alv_cat-edit = 'X'.
    lw_alv_cat-COLTEXT = text-E04.
    lw_alv_cat-selddictxt = 'M'.
    append lw_alv_cat to lt_alv_cat.
    clear lw_alv_cat.

    lw_alv_cat-col_pos = 5.
    lw_alv_cat-fieldname = 'ZCUSDESC'.
    lw_alv_cat-ref_table = ''.
    lw_alv_cat-edit = 'X'.
    lw_alv_cat-COLTEXT = text-E05.
    lw_alv_cat-selddictxt = 'M'.
    append lw_alv_cat to lt_alv_cat.
    clear lw_alv_cat.

  else.
*  l_m_fieldcat 'MSEHI'  'T006A' 'X' text-H01..
*  l_m_fieldcat 'MSEHL'  '' '' text-H02.
*  l_m_fieldcat  'ZCUSUOMCODE'  '' 'X' text-H03.
*  l_m_fieldcat 'ZCONVFACTOR'  'ZTMMCUST101_CN' 'X' text-H04.
*  l_m_fieldcat 'ZCUSDESC' '' 'X' text-H05.

* replace the macros by Purter xie 15-April-2008
    lw_alv_cat-col_pos = 1.
    lw_alv_cat-fieldname = 'MSEHI'.
    lw_alv_cat-ref_table = 'T006A'.
    lw_alv_cat-edit = 'X'.
    lw_alv_cat-COLTEXT = text-H01.
    lw_alv_cat-selddictxt = 'M'.
    append lw_alv_cat to lt_alv_cat.
    clear lw_alv_cat.

    lw_alv_cat-col_pos = 2.
    lw_alv_cat-fieldname = 'MSEHL'.
    lw_alv_cat-ref_table = ''.
    lw_alv_cat-edit = ''.
    lw_alv_cat-COLTEXT = text-H02.
    lw_alv_cat-selddictxt = 'M'.
    append lw_alv_cat to lt_alv_cat.
    clear lw_alv_cat.

    lw_alv_cat-col_pos = 3.
    lw_alv_cat-fieldname = 'ZCUSUOMCODE'.
    lw_alv_cat-ref_table = ''.
    lw_alv_cat-edit = 'X'.
    lw_alv_cat-COLTEXT = text-H03.
    lw_alv_cat-selddictxt = 'M'.
    append lw_alv_cat to lt_alv_cat.
    clear lw_alv_cat.

    lw_alv_cat-col_pos = 4.
    lw_alv_cat-fieldname = 'ZCONVFACTOR'.
    lw_alv_cat-ref_table = 'ZTMMCUST101_CN'.
    lw_alv_cat-edit = 'X'.
    lw_alv_cat-COLTEXT = text-H04.
    lw_alv_cat-selddictxt = 'M'.
    append lw_alv_cat to lt_alv_cat.
    clear lw_alv_cat.

    lw_alv_cat-col_pos = 5.
    lw_alv_cat-fieldname = 'ZCUSDESC'.
    lw_alv_cat-ref_table = ''.
    lw_alv_cat-edit = 'X'.
    lw_alv_cat-COLTEXT = text-H05.
    lw_alv_cat-selddictxt = 'M'.
    append lw_alv_cat to lt_alv_cat.
    clear lw_alv_cat.
  endif.

* Layout
  CLEAR ls_alv_lay.
* ls_alv_lay-zebra      = c_x.
  ls_alv_lay-cwidth_opt = c_x.

  IF lv_offline EQ 0.
*   Exclude toolbar functions
    APPEND cl_gui_alv_grid=>mc_fc_detail         TO lt_toolbar_excl.
    APPEND cl_gui_alv_grid=>mc_fc_info           TO lt_toolbar_excl.
    APPEND cl_gui_alv_grid=>mc_fc_graph          TO lt_toolbar_excl.
    APPEND cl_gui_alv_grid=>mc_fc_view_crystal   TO lt_toolbar_excl.
    APPEND cl_gui_alv_grid=>mc_fc_loc_delete_row TO lt_toolbar_excl.
*    APPEND cl_gui_alv_grid=>mc_fc_loc_append_row TO lt_toolbar_excl.
*    APPEND cl_gui_alv_grid=>mc_fc_loc_insert_row TO lt_toolbar_excl.
*    APPEND cl_gui_alv_grid=>mc_fc_loc_copy_row   TO lt_toolbar_excl.
*    APPEND cl_gui_alv_grid=>mc_fc_loc_undo       TO lt_toolbar_excl.
*    APPEND cl_gui_alv_grid=>mc_fc_check          TO lt_toolbar_excl.
*    APPEND cl_gui_alv_grid=>mc_fc_refresh        TO lt_toolbar_excl.

    CREATE OBJECT go_event_alv.

    SET HANDLER go_event_alv->h_double_click
            FOR go_alv_grid.

  ENDIF.

  ls_variant-report = sy-cprog.

* Display
  CALL METHOD go_alv_grid->set_table_for_first_display
    EXPORTING
      is_variant           = ls_variant
      is_layout            = ls_alv_lay
      is_print             = ls_print
      i_save               = 'A'
      it_toolbar_excluding = lt_toolbar_excl
    CHANGING
      it_sort              = lt_sort
      it_outtab            = gt_data[]
      it_fieldcatalog      = lt_alv_cat.


* set edit enabled cells ready for input
  CALL METHOD go_alv_grid->set_ready_for_input
    EXPORTING
      i_ready_for_input = 1.

ENDFORM.                    " create_and_init_alv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值