ABAP客户批量导入前端

*&---------------------------------------------------------------------*
*& Report ZMMR005
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zmmr005.
*----------------------------------------------------------------------*
* <1.1-声明 包含程序> INCLUDE PROGRAMS                                  *
*----------------------------------------------------------------------*
***********《所有全局变量、类都写在  DEFINE INCLUDE 程序中》**************
INCLUDE zmmr005_define.
***********《所有查询条件都写在     SEL INCLUDE 程序中》*****************
INCLUDE zmmr005_sel.
***********《所有逻辑代码都写在     F0* INCLUDE 程序中》*****************
INCLUDE zmmr005_f01.

************************************************************************
*             <第二部分---声明 过程:即事件>  PROCESSING                *
************************************************************************
*----------------------------------------------------------------------*
* <2.1-用于程序的初始化,在显示选择屏前触发,>                           *
* INITIAL PROCESS BEFORE THE STANDARD SELECTION SCREEN IS CALLED       *
*----------------------------------------------------------------------*
INITIALIZATION.
  "初始化处理
  PERFORM frm_intial.
*----------------------------------------------------------------------*
* <2.2-选择屏幕事件>                                                    *
* EVENTS THAT OCCUR WHILE THE SELECTION SCREEN IS BING PROCESSED       *
*----------------------------------------------------------------------*
* 所有选择屏幕数据传送到程序中之后触发的事件
AT SELECTION-SCREEN.
  PERFORM frm_sscr_pai.

*选择屏幕PBO事件,在显示选择屏幕前触发
AT SELECTION-SCREEN OUTPUT.


* 当对SELECT-OPTIONS变量有多值输入时
*AT SELECTION-SCREEN ON END OF S_MATKL.


* 当选择屏幕的BLOCK向程序传递值时触发{如点击执行,点击多选弹出其它窗口)
*AT SELECTION-SCREEN ON BLOCK  bl01.


* 按指定字段按F4触发
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    PERFORM frm_f4_file CHANGING p_file.

* 按指定字段按F1触发
*AT SELECTION-SCREEN ON HELP-REQUEST FOR S_MATKL.


* 当选择屏幕的RADIOBUTTON GROUP向程序传递值时触发
*AT SELECTION-SCREEN ON RADIOBUTTON GROUP RG1.


* 触发了 FUNCTIONS BACK, EXIT, OR CANCEL
AT SELECTION-SCREEN ON EXIT-COMMAND.


*----------------------------------------------------------------------*
* <2.3-在选择屏幕被处理后触发的事件,程序默认的开始事件>                  *
* EVENT OCCURS AFTER THE SELECTION SCREEN HAS BEEN PROCESSED           *
*----------------------------------------------------------------------*
START-OF-SELECTION.

  "权限检查
  PERFORM frm_authority_check.
  "输入数据合法性检查
  PERFORM frm_validate_check.
  "获取数据
  PERFORM frm_get_data.
  "处理数据
  PERFORM frm_process_data.
  "调用屏幕
  PERFORM frm_call_screen.

*----------------------------------------------------------------------*
* <2.4-最后被触发的事件>                                                *
* THE LAST OF THE EVENTS CALLED BY THE RUNTIME ENVIRONMENT TO OCCUR    *
*----------------------------------------------------------------------*
END-OF-SELECTION.
  "展示数据
  PERFORM frm_show_data.
  "保存数据
  PERFORM frm_save_data.
  "清空所有全局变量
  PERFORM frm_clear_global_data.

*&---------------------------------------------------------------------*
*& 包含               ZMMR005_DEFINE
*&---------------------------------------------------------------------*
*--------------------------------------------------------------------*
*& Tables Declaration
*--------------------------------------------------------------------*
TABLES: sscrfields.

*--------------------------------------------------------------------*
*& Constants Declaration
*--------------------------------------------------------------------*
CONSTANTS: gc_light_red    TYPE c VALUE '1', " For ALV
           gc_light_yellow TYPE c VALUE '2',
           gc_light_green  TYPE c VALUE '3'.

CONSTANTS: gc_columns      TYPE i VALUE 42.  " Excel 上载的列数

TYPES: BEGIN OF gty_biz_data,
*         znum        TYPE string, "供应商
         partner     TYPE string, "
         name_org1   TYPE string, "
         bu_sort1    TYPE string, "
         ktokd       TYPE string, "
         prctr       TYPE string, "
         ltext       TYPE string, "
         khinr       TYPE string, "
         datab       TYPE string, "
         datbi       TYPE string, "
         verak       TYPE string, "
         name_org2   TYPE string, "
         zparvw1     TYPE string, "
         zktonr1     TYPE string, "
         street      TYPE string, "
         langu       TYPE string, "
         land1       TYPE string, "
         regio       TYPE string, "
         ort01       TYPE string, "
         zcsdi       TYPE string, "
         bzirk       TYPE string, "
         found_dat   TYPE string, "
         liquid_dat  TYPE string, "
         zmj         TYPE string, "
         zpplb       TYPE string, "
         bpkind      TYPE string, "
         zqdbs       TYPE string, "
         zdpdj       TYPE string, "
         zdpwzlx     TYPE string, "
         zsqlx       TYPE string, "
         zqdlx       TYPE string, "
         zdpxxlx     TYPE string, "
         zyzlx       TYPE string, "
         taxnumxl    TYPE string, "
         zjjms       TYPE string, "
         zdlhs       TYPE string, "
         taxkd       TYPE string, "
         znsdjsj     TYPE string, "
         zparvw2     TYPE string, "
         zktonr2     TYPE string, "
         zhebh       TYPE string, "
         akont       TYPE string, "
         kalks       TYPE string. "
TYPES: END OF gty_biz_data.

TYPES: BEGIN OF gty_excel.                   "
    INCLUDE TYPE gty_biz_data.
TYPES: END OF gty_excel.

TYPES: BEGIN OF gty_out.                   "
    INCLUDE TYPE gty_biz_data.
    TYPES:
   doc_no TYPE char10,                     " 放在第一个字段,后面会用 at end of 语法
   light     TYPE c,
   ztype1    TYPE c,
   aufnr     TYPE coas-aufnr,
   ztype2    TYPE c,
   ztype3    TYPE c,
   message   TYPE bapi_msg.
TYPES: END OF gty_out.

DATA: gs_layout   TYPE lvc_s_layo,
      gt_fieldcat TYPE lvc_t_fcat,
      gt_out      TYPE TABLE OF gty_out,
      gt_event    TYPE slis_t_event,
      go_alv_grid TYPE REF TO cl_gui_alv_grid.

*&---------------------------------------------------------------------*
*& 包含               ZMMR005_SEL
*&---------------------------------------------------------------------*
*--------------------------------------------------------------------*
*& Selection Screen
*--------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_file  TYPE rlgrap-filename MODIF ID upd.

SELECTION-SCREEN PUSHBUTTON /1(20) TEXT-002 USER-COMMAND download MODIF ID upd.
SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE TEXT-003.
*selection-screen comment /5(79) g_line1 .
SELECTION-SCREEN COMMENT /1(79) g_line2 .
SELECTION-SCREEN COMMENT /1(79) g_line3 .
SELECTION-SCREEN COMMENT /1(79) g_line6 .
SELECTION-SCREEN COMMENT /1(79) g_line7 .
SELECTION-SCREEN COMMENT /1(79) g_line8 .
SELECTION-SCREEN COMMENT /1(79) g_line9 .
SELECTION-SCREEN COMMENT /1(79) g_line10.
SELECTION-SCREEN COMMENT /1(79) g_line11.
SELECTION-SCREEN END OF BLOCK b3.

*&---------------------------------------------------------------------*
*& 包含               ZMMR005_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form frm_authority_check
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_authority_check .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_validate_check
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_validate_check .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_data .

  IF p_file IS INITIAL.
    MESSAGE '文件路径不能为空!'(010) TYPE 'S' DISPLAY LIKE 'E'.  " text-s02: 文件路径不能为空!
    RETURN.
  ENDIF.
  PERFORM frm_data_upload.
*  PERFORM frm_data_display.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_process_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_process_data .

  DATA:ls_input   TYPE zmt_fi002_erp_req,
       lv_msgid   TYPE sxmsmguid,
       ls_output  TYPE zmt_fi002_erp_rsp,
       es_message TYPE zcms0001.

  LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<lfs_output>).
    MOVE-CORRESPONDING <lfs_output> TO ls_input-mt_fi002_erp_req-header.
    ls_input-mt_fi002_erp_req-zsystem = 'PL'.

    CALL FUNCTION 'ZFM_FI002_CUSTOMER'
      EXPORTING
        is_input         = ls_input
        iv_msgid         = lv_msgid
     IMPORTING
       es_output         = ls_output
       es_message        = es_message.

  READ TABLE ls_output-mt_fi002_erp_rsp-line_of_ret_msg INTO DATA(ls_msg) INDEX 1.
  IF sy-subrc = 0.
    <lfs_output>-ztype1  = ls_msg-ztype1.
    <lfs_output>-aufnr   = ls_msg-aufnr.
    <lfs_output>-ztype2  = ls_msg-ztype2.
    <lfs_output>-ztype3  = ls_msg-ztype3.
    <lfs_output>-message = ls_msg-message.
  ENDIF.
    IF es_message-msgty = 'S'.
      <lfs_output>-light = gc_light_green.
    ELSE.
      <lfs_output>-light = gc_light_red.
    ENDIF.
  ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_call_screen
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_call_screen .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_show_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_show_data .

  DATA: lv_title TYPE lvc_title.

  PERFORM frm_alv_fieldcat_build CHANGING gt_fieldcat.
  PERFORM frm_alv_layout_build.
  PERFORM frm_alv_event_build.
  PERFORM frm_alv_grid_title CHANGING lv_title.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
*     I_INTERFACE_CHECK  = ' '
*     I_BYPASSING_BUFFER =
*     I_BUFFER_ACTIVE    =
      i_callback_program = sy-repid
*     I_CALLBACK_PF_STATUS_SET          = ' '
*     I_CALLBACK_USER_COMMAND = 'FRM_ALV_USER_COMMAND'
*     I_CALLBACK_TOP_OF_PAGE  = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME   =
*     I_BACKGROUND_ID    = ' '
      i_grid_title       = lv_title
*     I_GRID_SETTINGS    =
      is_layout_lvc      = gs_layout
      it_fieldcat_lvc    = gt_fieldcat
*     IT_EXCLUDING       =
*     IT_SPECIAL_GROUPS_LVC   =
*     IT_SORT_LVC        =
*     IT_FILTER_LVC      =
*     IT_HYPERLINK       =
*     IS_SEL_HIDE        =
*     I_DEFAULT          = 'X'
*     I_SAVE             = ' '
*     IS_VARIANT         =
*     IT_EVENTS          =
*     IT_EVENT_EXIT      =
*     IS_PRINT_LVC       =
*     IS_REPREP_ID_LVC   =
*     I_SCREEN_START_COLUMN   = 0
*     I_SCREEN_START_LINE     = 0
*     I_SCREEN_END_COLUMN     = 0
*     I_SCREEN_END_LINE  = 0
*     I_HTML_HEIGHT_TOP  =
*     I_HTML_HEIGHT_END  =
*     IT_ALV_GRAPHICS    =
*     IT_EXCEPT_QINFO_LVC     =
*     IR_SALV_FULLSCREEN_ADAPTER        =
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER =
*     ES_EXIT_CAUSED_BY_USER  =
    TABLES
      t_outtab           = gt_out
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_save_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_save_data .



ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_clear_global_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_clear_global_data .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_intial
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_intial .

  g_line2   = '【程序目的】'(004).
  g_line3   = '    提供客户Excel批量导入功能'(005).
  g_line6   = '【注意事项】'(006).
  g_line7   = '    a) 请不要在运行程序的同时修改数据包文件,否则会造成数据读取错误'(007).
  g_line8   = '    b) 请确保对文件中的BP有操作权限'(008).
  g_line9   = '    c) 模板下载可以改变文件路径或者文件名称,但是不可以改变文件名称的后缀'(009).

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_sscr_pai
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_sscr_pai .

  IF sscrfields-ucomm EQ 'DOWNLOAD'.
    PERFORM frm_download_template.
  ENDIF.



ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_f4_file
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- P_FILE
*&---------------------------------------------------------------------*
FORM frm_f4_file  CHANGING pv_file.

 DATA: lt_file        TYPE filetable,
        ls_file        LIKE LINE OF lt_file,
        lv_rc          TYPE i,
        lv_user_action TYPE i,
        lv_file_filter TYPE string.

  CONCATENATE 'Excel (*.xls;*.xlsx)|*.xls;*.xlsx'
              '|'
              'All Files (*.*)|*.*'
              INTO lv_file_filter.


  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
*     window_title            =
*     default_extension       =
*     default_filename        =
      file_filter             = lv_file_filter
*     with_encoding           =
*     initial_directory       =
*     multiselection          =
    CHANGING
      file_table              = lt_file
      rc                      = lv_rc
      user_action             = lv_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.
    MESSAGE 'File Open failed' TYPE 'E'.      " File Open failed
  ENDIF.

  IF lv_user_action EQ cl_gui_frontend_services=>action_cancel.
    MESSAGE 'User Canceled Action' TYPE 'S'.  " User Canceled Action
    RETURN.
  ENDIF.

  READ TABLE lt_file INTO ls_file INDEX 1.
  IF sy-subrc = 0.
    pv_file  = ls_file-filename.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_download_template
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_download_template .

DATA: ls_key       TYPE wwwdatatab,
      lv_file_path TYPE rlgrap-filename,
      lv_rc        TYPE sy-subrc,
      lv_cancel    TYPE flag.

  PERFORM frm_f4_file_save CHANGING lv_cancel lv_file_path.

  SELECT SINGLE
    relid,
    objid
    FROM wwwdata
    INTO CORRESPONDING FIELDS OF @ls_key
   WHERE srtf2 = 0
     AND objid = 'ZMMR005'                       "导入模板时输入的对象名称
     AND relid = 'MI'.

  IF lv_cancel EQ 'X' .
    MESSAGE '用户取消了操作!'(011) TYPE 'S'.  " text-s01: 用户取消了操作
    RETURN.
  ENDIF.

  IF lv_file_path IS INITIAL.
    MESSAGE '文件路径不能为空!'(012) TYPE 'S'.  " text-s02: 文件路径不能为空!
    RETURN.
  ENDIF.



  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      key           = ls_key
      destination   = lv_file_path
    IMPORTING
      rc            = lv_rc
    EXCEPTIONS
      error_message = 1.          " 捕捉异常  202003301009 20200721
*   CHANGING
*     TEMP        =
  .
  IF lv_rc <> 0 OR sy-subrc <> 0..
    MESSAGE '模板下载失败'(013) TYPE 'S' DISPLAY LIKE 'E'. " text-e02: 模板下载失败
  ENDIF.

ENDFORM.                    "download_template

*---------------------------------------------------------------------*
* Description: the purpose of this subroutine
*---------------------------------------------------------------------*
FORM frm_f4_file_save CHANGING ch_cancel    TYPE flag
                                ch_file_path TYPE rlgrap-filename.

  DATA: lv_file_name         TYPE string,
        lv_path              TYPE string,
        lv_fullpath          TYPE string,
        lv_file_filter       TYPE string,
        lv_user_action       TYPE i,
        lv_default_file_name TYPE string.

  lv_default_file_name = '供应商导入模板.xlsx'.
  CONCATENATE 'Excel (*.xls;*.xlsx)|*.xls;*.xlsx'
              '|'
              'All Files (*.*)|*.*'
              INTO lv_file_filter.

  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
*     window_title              =
*     default_extension         =
      default_file_name         = lv_default_file_name
*     with_encoding             =
      file_filter               = lv_file_filter
*     initial_directory         =
*     prompt_on_overwrite       = 'X'
    CHANGING
      filename                  = lv_file_name
      path                      = lv_path
      fullpath                  = lv_fullpath
      user_action               = lv_user_action
    EXCEPTIONS                           "ADD BY BGY_LIUJ 20190424
      cntl_error                = 1
      error_no_gui              = 2
      not_supported_by_gui      = 3
      invalid_default_file_name = 4
      OTHERS                    = 5.

  IF sy-subrc <> 0.
  ELSE.
  ENDIF.

  IF lv_user_action = cl_gui_frontend_services=>action_cancel.
    ch_cancel = 'X'.
  ELSE.
    ch_file_path = lv_fullpath.
  ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_data_upload
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_data_upload .

 DATA: lt_data TYPE STANDARD TABLE OF alsmex_tabline,
       ls_data TYPE alsmex_tabline.

  DATA:  ls_excel  TYPE gty_excel,
         ls_output TYPE gty_out.

  DATA: lv_row_id TYPE i.

  FIELD-SYMBOLS: <lfs_value> TYPE any.
**提示处理
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      text = '数据处理中,请等待...'(014).

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = p_file
      i_begin_col             = 1
      i_begin_row             = 2
      i_end_col               = gc_columns
      i_end_row               = 9999
    TABLES
      intern                  = lt_data
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.
  IF sy-subrc <> 0.
* Implement suitable error handling here
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  LOOP AT lt_data INTO ls_data.
    ASSIGN COMPONENT ls_data-col OF STRUCTURE ls_excel TO <lfs_value>.
    IF sy-subrc = 0.
      <lfs_value> = ls_data-value.
    ENDIF.
    AT END OF row.
      lv_row_id = lv_row_id + 1.
      MOVE-CORRESPONDING ls_excel TO ls_output.
      ls_output-doc_no  = lv_row_id.
      APPEND ls_output TO gt_out.

      CLEAR: ls_excel,ls_output.
    ENDAT.
  ENDLOOP.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_alv_fieldcat_build
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- GT_FIELDCAT
*&---------------------------------------------------------------------*
FORM frm_alv_fieldcat_build  CHANGING ct_fieldcat  TYPE lvc_t_fcat.

  CLEAR ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'DOC_NO     '        '编号'(015)   CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'MESSAGE    '        '消息文本'(016)   CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'LIGHT      '        '消息灯'(017)       CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'PARTNER    '        '供应商编码'(018) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZTYPE3     '        '供应商创建状态'(019) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'PRCTR      '        '利润中心编码'(020) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZTYPE1     '        '利润中心创建状态'(021) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'AUFNR      '        '内部订单号'(022) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZTYPE2     '        '内部订单创建状态'(023) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'NAME_ORG1  '        '门店编码'(024) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'BU_SORT1   '        '门店简称'(025) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'KTOKD      '        '账户组'(026) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'LTEXT      '        '利润中心描述'(027) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'KHINR      '        '利润中心组'(028) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'DATAB      '        '开始生效日期'(029) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'DATBI      '        '有效期截止日期'(030) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'VERAK      '        '利润中心负责人'(031) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'NAME_ORG2  '        '法人全称'(032) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZPARVW1    '        '合作伙伴功能'(033) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZKTONR1    '        '所属公司'(034) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'STREET     '        '地址'(035) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'LANGU      '        '语言'(036) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'LAND1      '        '国家'(037) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'REGIO      '        '省份'(038) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ORT01      '        '城市'(039) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZCSDI      '        '城市等级'(040) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'BZIRK      '        '销售地区(预留)'(041) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'FOUND_DAT  '        '成立日期'(042) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'LIQUID_DAT '        '清算日期'(043) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZMJ        '        '面积M2'(044) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZPPLB      '        '品牌类别'(045) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'BPKIND     '        '合作伙伴类型'(046) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZQDBS      '        '渠道标识'(047) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZDPDJ      '        '店铺等级'(048) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZDPWZLX    '        '店铺位置类型'(049) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZSQLX      '        '商圈类型'(050) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZQDLX      '        '店铺渠道类型'(051) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZDPXXLX    '        '店铺形象类型'(052) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZYZLX      '        '业主类型'(053) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'TAXNUMXL   '        '税号'(054) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZJJMS      '        '加价模式'(055) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZDLHS      '        '是否独立核算'(056) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'TAXKD      '        '税分类'(057) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZNSDJSJ    '        '一般纳税人登记时间'(058) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZPARVW2    '        '合作伙伴功能'(059) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZKTONR2    '        '合作伙伴编码'(060) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'ZHEBH      '        '合同编号'(061) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'AKONT      '        '统驭科目'(062) CHANGING ct_fieldcat.
  PERFORM frm_alv_fieldcat_fill USING   'KALKS      '        '定价过程'(063) CHANGING ct_fieldcat.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_alv_layout_build
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_alv_layout_build .

  gs_layout-zebra         = abap_true.
  gs_layout-cwidth_opt    = abap_true.
  gs_layout-smalltitle    = abap_true.
*  gs_layout-sel_mode      = ''.
  gs_layout-excp_fname    = 'LIGHT'.
*  gs_layout-stylefname    = ''.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_alv_event_build
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_alv_event_build .

  DATA: ls_event  LIKE LINE OF gt_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
*   EXPORTING
*     I_LIST_TYPE           = 0
    IMPORTING
      et_events       = gt_event
    EXCEPTIONS
      list_type_wrong = 1
      OTHERS          = 2.
  IF sy-subrc <> 0.
* Implement suitable error handling here
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  LOOP AT gt_event INTO ls_event.
    IF ls_event-name EQ slis_ev_caller_exit_at_start.
      ls_event-form = 'FRM_ALV_CALLER_EXIT'.
    ENDIF.

    MODIFY gt_event FROM ls_event.
  ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  alv_caller_exit
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_alv_caller_exit USING is_caller_exit TYPE slis_data_caller_exit.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
*   EXPORTING
*     IR_SALV_FULLSCREEN_ADAPTER       =
    IMPORTING
*     ET_EXCLUDING                     =
*     E_REPID                          =
*     E_CALLBACK_PROGRAM               =
*     E_CALLBACK_ROUTINE               =
      e_grid = go_alv_grid
*     ET_FIELDCAT_LVC                  =
*     ER_TRACE                         =
*     E_FLG_NO_HTML                    =
*     ES_LAYOUT_KKBLO                  =
*     ES_SEL_HIDE                      =
*     ET_EVENT_EXIT                    =
*     ER_FORM_TOL                      =
*     ER_FORM_EOL                      =
    .

ENDFORM.                    "alv_caller_exit
*&---------------------------------------------------------------------*
*& Form frm_alv_grid_title
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- LV_TITLE
*&---------------------------------------------------------------------*
FORM frm_alv_grid_title  CHANGING ch_alv_grid_title TYPE lvc_title.
  DATA: lv_lines        TYPE i,
        lv_lines_string TYPE string.

  IF gt_out IS NOT INITIAL.
    lv_lines = lines( gt_out ).
  ENDIF.

  lv_lines_string = lv_lines.

  ch_alv_grid_title = '条目数:'(064) && lv_lines_string.
  CONDENSE ch_alv_grid_title.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_alv_fieldcat_fill
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> P_
*&      --> P_
*&      --> P_
*&      <-- CT_FIELDCAT
*&---------------------------------------------------------------------*
FORM frm_alv_fieldcat_fill  USING
                             fieldname    TYPE lvc_s_fcat-fieldname
                             reptext      TYPE lvc_s_fcat-reptext
                    CHANGING ct_fieldcat  TYPE lvc_t_fcat.

  DATA: ls_fieldcat TYPE lvc_s_fcat.

  ls_fieldcat-fieldname = to_upper( fieldname ).
  ls_fieldcat-reptext   = reptext.
  APPEND ls_fieldcat TO ct_fieldcat.


ENDFORM.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值