批导(20210712)


Code listing for: ZMMRSK00500

Description: 



*&---------------------------------------------------------------------*
 *& Report  ZMMRSK00500
 *&
 *&**********************************************************************
 *&                                                                     *
 *&*&********************************************************************
 *& REVISION LOG                                                        *
 *&                                                                     *
 *& LOG# DATE       AUTHOR    DESCRIPTION                               *
 *& ---- ----       ------    -----------                               *
 * panjin create 202101
 *&**********************************************************************



REPORT ZMMRSK00500 MESSAGE-ID ZMMSK01.

 include ZMMRSK00500_top.
 include ZMMRSK00500_srm.
 include ZMMRSK00500_alv.
 include ZMMRSK00500_pai.
 include ZMMRSK00500_pbo.
 include ZMMRSK00500_f01.



*Text elements
 * -----------
* E01 请先选择
* T01 状态
* T02 状态信息
* T03 程序正在下载模板
* T04 模板文件:
* T05 不存在,请用TCODE:SMW0进行加载
* T06 下载失败
* T07 excel中没有数据
* T08 excel中没有数据
* T09 请选择文件路径!
* T10 File Name Get Failed
 * T11 请选择保存EXCEL文件的路径
* T12 物料主数据编码从
* T13 物料主数据编码到
* T14 类
* T15 类别
* T16 是否质检
* T17 自动转储
* T18 库位
* T19 收货
* T20 移动类型
* T21 SKH1批次管理标识
* T22 SKH1批次管理标识
* T23 备注
* T24 选择
* T25 下载EXCEL模板
* T26 查询
* T27 模板保存为EXCEL
 * T28 Excel 文件 (*.XLSX)
 * T29 物料分类模板
* T30 成功
* T31 
 * T32 
 * T33 
 * T34 
 * T35 


 *Selection texts
 * -----------
* P_FNAME         文件


*Messages
 * -----------
*
 * Message class: ZMMSK01
 *000   & & & &

 
 
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731 

Code listing for: ZMMRSK00500_TOP

Description: Include ZMMRSK00500_TOP 



*&---------------------------------------------------------------------*
 *&  包含                ZMMRSK00500_TOP
 *&---------------------------------------------------------------------*

 *&---------------------------------------------------------------------*
 *&  包括                ZFT_R_PP_019_D01
 *&---------------------------------------------------------------------*



TYPE-POOLS: slis,icon.
 TABLES:sscrfields.

 TYPES: BEGIN OF ty_data.
 include structure ZMMTSK00090.
 TYPES:
        icon(30),
        msg  TYPE  string,
        chkbox(1),
        sel(1),
         END OF ty_data.

 DATA: gt_itab TYPE TABLE OF ty_data WITH HEADER LINE,
       gt_itab_tmp TYPE TABLE OF ty_data WITH HEADER LINE.

 DATA: g_co_objid TYPE wwwdatatab-objid .
 data : g_cns_excel_scol TYPE i VALUE 1, "EXCEL START COL
             g_cns_excel_srow   TYPE i VALUE 2,      "EXCEL START ROW
             g_cns_excel_ecol   TYPE i VALUE 50,     "EXCEL END COL
             g_cns_excel_erow   TYPE i VALUE 50000.   "EXCEL END ROW

 DATA:BEGIN OF gt_iexcel OCCURS 0.
         INCLUDE STRUCTURE alsmex_tabline.
 DATA:END OF gt_iexcel.

 DATA: g_functxt TYPE smp_dyntxt,
       g_fullpath TYPE string.
 DATA: gt_fieldcat TYPE lvc_t_fcat,
       gs_fieldcat   TYPE  lvc_s_fcat,
       g_repid       TYPE  sy-repid VALUE sy-repid,
       gs_layo       TYPE  lvc_s_layo.
 SELECTION-SCREEN: FUNCTION KEY 1.

 SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t26.
 PARAMETERS:p_fname TYPE rlgrap-filename.
 SELECTION-SCREEN END OF BLOCK b2.

 
 
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731 


Code listing for: ZMMRSK00500_SRM

Description: Include ZMMRSK00500_SRM 



*&---------------------------------------------------------------------*
 *&  包含                ZMMRSK00500_SRM
 *&---------------------------------------------------------------------*


INITIALIZATION.
   g_functxt-icon_id = icon_export.
   g_functxt-icon_text = TEXT-T25. "'下载EXCEL模板'.
   g_functxt-quickinfo = TEXT-T25.  "'下载EXCEL模板'.
   sscrfields-functxt_01 = g_functxt.

 AT SELECTION-SCREEN.
   CASE sscrfields-ucomm.
     WHEN 'FC01'.
       PERFORM frm_get_filepath.
       PERFORM frm_downm.
     WHEN 'ONLI'.
       IF p_fname IS INITIAL.
         SET CURSOR FIELD 'P_FNAME'.
         MESSAGE text-t09 TYPE 'E'.
       ENDIF.
   ENDCASE.

 AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
   PERFORM frm_get_file CHANGING p_fname.

 START-OF-SELECTION.
   PERFORM frm_file_read.
   PERFORM frm_display.

 
 
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731 

Code listing for: ZMMRSK00500_PAI

Description: Include ZMMRSK00500_PAI 



*&---------------------------------------------------------------------*
 *&  包含                ZMMRSK00500_PAI
 *&---------------------------------------------------------------------*

 *&---------------------------------------------------------------------*
 *&  包括                ZFT_R_PP_019_PAI
 *&---------------------------------------------------------------------*
 *&---------------------------------------------------------------------*
 *&      Form  user_command
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *      -->IN_UCOMM     text
 *      -->IN_SELFIELD  text
 *----------------------------------------------------------------------*


FORM FRM_user_command USING PV_ucomm LIKE sy-ucomm
                          PS_selfield TYPE slis_selfield.
   PS_selfield-refresh = 'X'.
   DATA: lr_grid  TYPE REF TO cl_gui_alv_grid.
   CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
     IMPORTING
       e_grid = lr_grid.
   CALL METHOD lr_grid->check_changed_data.

   CASE PV_ucomm.
     WHEN '&SEL'.
       PERFORM frm_SELECT.
     WHEN '&DESEL'.
       PERFORM frm_DESELECT.
     WHEN '&IC1'.


*      IF in_selfield-fieldname = 'MATNR' .
 *        SET PARAMETER ID 'MAT' FIELD in_selfield-value.
 *        CALL TRANSACTION 'CS03' .
 *      ENDIF.



    WHEN '&UPLOAD'.
       PERFORM frm_upload.
   ENDCASE.
 ENDFORM. "user_command


*&---------------------------------------------------------------------*
 *&      Form  FRM_SELECT
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM FRM_SELECT .
   LOOP AT gt_itab  WHERE SEL = 'X'.
     gt_itab-chkbox = 'X'.
     MODIFY gt_itab  TRANSPORTING chkbox.
   ENDLOOP.
 ENDFORM. " FRM_SELECT


*&---------------------------------------------------------------------*
 *&      Form  FRM_DESELECT
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM FRM_DESELECT .
   LOOP AT gt_itab  WHERE SEL = 'X'.
     gt_itab-chkbox = ''.
     MODIFY gt_itab  TRANSPORTING chkbox.
   ENDLOOP.
 ENDFORM. " FRM_DESELECT


*&---------------------------------------------------------------------*
 *&      Form  FRM_UPLOAD
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM FRM_UPLOAD .
   data:lt_ZMMTSK00090 type TABLE OF ZMMTSK00090 WITH HEADER LINE.
   LOOP AT gt_itab WHERE chkbox = 'X'.
     MOVE-CORRESPONDING gt_itab to lt_ZMMTSK00090.   "
     append lt_ZMMTSK00090.  "
     CLEAR:lt_ZMMTSK00090.  "
   ENDLOOP.
   IF sy-subrc ne 0.
     MESSAGE text-e01 type 'E'.   "请先选择
    exit.
   ENDIF.

   IF lt_ZMMTSK00090[] is not INITIAL.
     MODIFY ZMMTSK00090 FROM TABLE lt_ZMMTSK00090.
     commit WORK.
   ENDIF.
   REFRESH:lt_ZMMTSK00090[].

   LOOP AT gt_itab WHERE chkbox = 'X'.
     gt_itab-icon  = ICON_GREEN_LIGHT.
     modify gt_itab.
   ENDLOOP.
   MESSAGE text-t30 type 'S'.
 ENDFORM. " FRM_UPLOAD

 
 
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731 

Code listing for: ZMMRSK00500_PBO

Description: Include ZMMRSK00500_PBO 



*&---------------------------------------------------------------------*
 *&  包含                ZMMRSK00500_PBO
 *&---------------------------------------------------------------------*

 *&---------------------------------------------------------------------*
 *&  包括                ZFT_R_PP_019_PBO
 *&---------------------------------------------------------------------*
 *&---------------------------------------------------------------------*
 *&      Form  DISPLAY
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM frm_display .
   PERFORM frm_build_fact.
   PERFORM frm_set_layout.
   PERFORM frm_display_alv.
 ENDFORM. " DISPLAY


*&---------------------------------------------------------------------*
 *&      Form  BUILD_FACT
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM frm_build_fact .
   DEFINE def_fieldcat.
     clear gs_fieldcat.
     gs_fieldcat-fieldname = &1.
     gs_fieldcat-reptext = &2.
     gs_fieldcat-edit = &3.
     gs_fieldcat-no_zero = &4.
     gs_fieldcat-fix_column(1) = &5.
     gs_fieldcat-just = &6.


**    if &1 = 'C'.
 **      gw_fieldcat-checkbox = 'X'.
 **    endif.
 *    if &1 = 'BANFN'.
 *      gw_fieldcat-hotspot = 'X'.
 *      gw_fieldcat-emphasize = 'C500'.
 *    endif.


    append gs_fieldcat to gt_fieldcat.
   END-OF-DEFINITION.
   REFRESH gt_fieldcat[].
   gs_fieldcat-fieldname = 'CHKBOX'.
   gs_fieldcat-datatype = 'CHAR'.
   gs_fieldcat-intlen = 1.
   gs_fieldcat-COLTEXT = text-t24.
   gs_fieldcat-checkbox = 'X'.
   gs_fieldcat-edit = 'X'.
   gs_fieldcat-FIX_COLUMN = 'X'.
   append gs_fieldcat to gt_fieldcat.
   CLEAR gs_fieldcat.

   def_fieldcat   'ICON'  text-T01    ''  'X'  ''  ''.
   def_fieldcat   'MATNR_FR'  text-T12    ''  'X'  ''  ''. "物料主数据编码从
  def_fieldcat   'MATNR_TO'  text-T13    ''  ''  ''  ''. "物料主数据编码到
  def_fieldcat   'KLART'  text-T14    ''  ''  ''  ''.  "类
  def_fieldcat   'CLASS'  text-T15    ''  ''  ''  ''.  "类别
  def_fieldcat   'ZSFZJ'  text-T16    ''  ''  ''  ''.  "是否质检
  def_fieldcat   'ZAUTO'  text-T17   ''  ''  ''  ''.   "自动转储
  def_fieldcat   'LGORT'  text-T18    ''  ''  ''  ''.   "库位
  def_fieldcat   'UMLGO'  text-T19    ''  ''  ''  ''.   "收货
  def_fieldcat   'BWART'  text-T20    ''  ''  ''  ''.   "移动类型
  def_fieldcat   'XCHPF_H'  text-T21    ''  ''  ''  ''.   "SKH1批次管理标识
  def_fieldcat   'XCHPF_X' text-T22   ''  ''  ''  ''.    "SKH1批次管理标识
  def_fieldcat   'ZNOTE'  text-T23    ''  ''  ''  ''.    "备注
ENDFORM. " BUILD_FACT


*&---------------------------------------------------------------------*
 *&      Form  SET_LAYOUT
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM frm_set_layout .
   gs_layo-zebra = 'X'.
   gs_layo-cwidth_opt = 'X'.
   gs_layo-box_fname      = 'SEL'.
 ENDFORM. " SET_LAYOUT


*&---------------------------------------------------------------------*
 *&      Form  DISPLAY_ALV
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM frm_display_alv .
   g_repid = sy-repid.
   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
     EXPORTING
       i_callback_pf_status_set = 'FRM_STATUS'
       i_callback_user_command  = 'FRM_USER_COMMAND'


*     i_callback_top_of_page   = 'FM_ALV_TOP'


      i_callback_program       = g_repid
       it_fieldcat_lvc          = gt_fieldcat
       is_layout_lvc            = gs_layo
     TABLES
       t_outtab                 = gt_itab[].
   IF sy-subrc <> 0.
     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
   ENDIF.
 ENDFORM. " DISPLAY_ALV



*&---------------------------------------------------------------------*
 *&      Form  set_pf_status
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *      -->RT_EXTAB   text
 *----------------------------------------------------------------------*


FORM frm_status USING ps_extab TYPE slis_t_extab.
   SET PF-STATUS '0100' EXCLUDING ps_extab.
 ENDFORM. "set_pf_status


*&---------------------------------------------------------------------*
 *&      Form  READ_YCL
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM frm_read_ycl .
   DATA:lv_col TYPE i.
   FIELD-SYMBOLS:<l_field> type any.

   LOOP AT gt_iexcel.
     CASE gt_iexcel-col.
       WHEN '0001'.
         IF strlen( gt_iexcel-value ) <= 16.
           CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
             EXPORTING
               input  = gt_iexcel-value
             IMPORTING
               output = gt_itab-MATNR_FR.
         ELSE.
           gt_itab-MATNR_FR = gt_iexcel-value.
         ENDIF.

       WHEN '0002'.
         IF strlen( gt_iexcel-value ) <= 16.
           CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
             EXPORTING
               input  = gt_iexcel-value
             IMPORTING
               output = gt_itab-MATNR_TO.
         ELSE.
           gt_itab-MATNR_TO = gt_iexcel-value.
         ENDIF.
       WHEN OTHERS.
         CONDENSE gt_iexcel-value NO-GAPS.
         TRANSLATE gt_iexcel-value TO UPPER CASE.

         lv_col = gt_iexcel-col + 1.
         ASSIGN COMPONENT lv_col OF STRUCTURE gt_itab TO <l_field>.
         IF sy-subrc = 0.
           TRY.
               <l_field> = gt_iexcel-value.
             CATCH cx_sy_conversion_no_number."非数值
          ENDTRY.
         ENDIF.
     ENDCASE.

     AT END OF row.


*      if sy-subrc ne 0.
 *        gt_itab-msg = '此组件在此工厂不存在 '.
 *        gt_itab-ICON = '@0A@'.
 *      endif.


      gt_itab-CHKBOX = 'X'.
       APPEND  gt_itab.
       CLEAR: gt_itab.
     ENDAT.
   ENDLOOP.
 ENDFORM. " READ_YCL

 
 
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731 

Code listing for: ZMMRSK00500_F01

Description: Include ZMMRSK00500_F01 



*&---------------------------------------------------------------------*
 *&  包含                ZMMRSK00500_F01
 *&---------------------------------------------------------------------*

 *&---------------------------------------------------------------------*
 *&  包括                ZFT_R_PP_019_F01
 *&---------------------------------------------------------------------*
 *&---------------------------------------------------------------------*
 *&      Form  FM_GET_FILE
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *      <--P_P_FNAME  text
 *----------------------------------------------------------------------*


FORM frm_get_file CHANGING CV_fname.
   DATA: l_work_rc          TYPE i.          "Return Code
   DATA: l_lstr_filter    TYPE string.
   DATA: lt_ltb_file_table   TYPE filetable,
         ls_lwk_file_table  TYPE filename.

   CONCATENATE 'Excel 2007-2019(*.XLSX)|*.XLSX|' 'Excel(*.XLSX)|*.XLSX'
          INTO l_lstr_filter.
   CALL METHOD cl_gui_frontend_services=>file_open_dialog
     EXPORTING
       window_title            = 'Select the file '


*     DEFAULT_EXTENSION       =


      default_filename        = ''
       file_filter             = l_lstr_filter
       initial_directory       = 'C:'


*     MULTISELECTION          =
 *     WITH_ENCODING           =


    CHANGING
       file_table              = lt_ltb_file_table
       rc                      = l_work_rc


*     USER_ACTION             =
 *     FILE_ENCODING           =


    EXCEPTIONS
       file_open_dialog_failed = 1
       cntl_error              = 2
       error_no_gui            = 3
       not_supported_by_gui    = 4
       OTHERS                  = 5.
   IF sy-subrc = 0.
     LOOP AT lt_ltb_file_table INTO ls_lwk_file_table.
       MOVE ls_lwk_file_table TO CV_fname.
       EXIT.
     ENDLOOP.
   ELSE.
     MESSAGE text-t10 TYPE 'E'.
   ENDIF.
 ENDFORM. " FM_GET_FILE


*&---------------------------------------------------------------------*
 *&      Form  FM_GET_FILEPATH
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM frm_get_filepath .
   DATA:L_window_title TYPE STRING,
        L_file_filter TYPE STRING,
        l_filename TYPE string,
          l_path TYPE string,
          l_fullpath TYPE string,
           l_title TYPE string.

   g_co_objid = 'ZMMRSK00500'.

   L_WINDOW_TITLE = text-t27.
   L_file_filter = text-t28 .
   L_TITLE = text-t29.

   CALL METHOD cl_gui_frontend_services=>file_save_dialog
     EXPORTING
       window_title         = L_window_title  " '模板保存为EXCEL' "text-t27 "'模板保存为EXCEL'
       default_extension    = 'xlsx'
       default_file_name    = l_title


*     file_filter          = '.xls'


      file_filter          = l_file_filter  "'Excel 文件 (*.XLSX)'  "text-t28  " 'Excel 文件 (*.XLS)'
       initial_directory    = 'C:/'


*     DEFAULT_FILE_NAME    = p_filename


    CHANGING
       filename             = l_filename
       path                 = l_path
       fullpath             = g_fullpath
     EXCEPTIONS
       cntl_error           = 1
       error_no_gui         = 2
       not_supported_by_gui = 3
       OTHERS               = 4.
   IF sy-subrc <> 0.
     STOP.
   ENDIF.
   IF g_fullpath IS INITIAL.
     MESSAGE text-t11 TYPE 'E'.
   ENDIF.
 ENDFORM. " FM_GET_FILEPATH


*&---------------------------------------------------------------------*
 *&      Form  FM_DOWNM
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM frm_downm .
   DATA:  ls_indcatortxt TYPE string,
          l_filename TYPE sapb-sappfad.
   DATA: lo_objdata LIKE wwwdatatab,
         lo_mime LIKE w3mime,
         ls_destination LIKE rlgrap-filename,
         ls_objnam TYPE string,
         l_rc LIKE sy-subrc,
         ls_errtxt TYPE string.

   l_filename = g_fullpath.
   ls_indcatortxt = text-t03. "'程序正在下载模板'.
   CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
     EXPORTING
       percentage = 0
       text       = ls_indcatortxt.
   CONCATENATE g_co_objid '.XLSX' INTO ls_objnam.
   CONDENSE ls_objnam NO-GAPS.
   SELECT SINGLE relid objid FROM wwwdata
     INTO CORRESPONDING FIELDS OF lo_objdata
     WHERE srtf2    = 0
       AND relid    = 'MI'
       AND objid    = g_co_objid.
   IF sy-subrc NE 0 OR lo_objdata-objid EQ space.
     CONCATENATE text-t04 ls_objnam text-t05 INTO ls_errtxt.
     MESSAGE E000(ZMMSK01) WITH ls_errtxt.
   ENDIF.
   ls_destination   = g_fullpath.
   CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
     EXPORTING
       key         = lo_objdata
       destination = ls_destination
     IMPORTING
       rc          = l_rc.
   IF l_rc NE 0.
     CONCATENATE text-t04 ls_objnam text-t06 INTO ls_errtxt.
     MESSAGE e000(ZMMSK01) with ls_errtxt.
   ENDIF.
 ENDFORM. " FM_DOWNM


*&---------------------------------------------------------------------*
 *&      Form  FM_FILE_READ
 *&---------------------------------------------------------------------*
 *       text
 *----------------------------------------------------------------------*
 *  -->  p1        text
 *  <--  p2        text
 *----------------------------------------------------------------------*


FORM frm_file_read .
   CLEAR: gt_iexcel,   "
          gt_iexcel[], "
          gt_itab.  "

   call function 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
     EXPORTING
       filename                = p_fname
       i_begin_col             = g_cns_excel_scol
       i_begin_row             = g_cns_excel_srow
       i_end_col               = g_cns_excel_ecol
       i_end_row               = g_cns_excel_erow
     TABLES
       intern                  = gt_iexcel
     EXCEPTIONS
       inconsistent_parameters = 1
       upload_ole              = 2
       OTHERS                  = 3.
   IF sy-subrc <> 0.
     MESSAGE text-t07 TYPE 'E'.
     EXIT.
   ENDIF.
   SORT gt_iexcel BY row col.
   CLEAR gt_itab.

   PERFORM frm_read_ycl.

   IF gt_itab[] IS INITIAL.
     MESSAGE text-t08  TYPE 'E'.
     EXIT.
   ELSE.
   ENDIF.

 ENDFORM. " FM_FILE_READ

 
 
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2021. Sap Release 731 

猜你喜欢

转载自blog.csdn.net/lianxiangpanjin/article/details/118684788
今日推荐