SAP-EXCEL批量导入

SAP  execl批量导入实例,包括查询导入一体

tables:ztsd003,ztsd004.
DATA:GT_OUT1 type TABLE OF ztsd003,
     gs_OUT1 type ztsd003,
     GT_OUT2 type TABLE OF ztsd004,
     Gs_OUT2 type ztsd004,
gt_fieldcat   TYPE lvc_t_fcat,
     gs_layout     TYPE lvc_s_layo.
DATA:BEGIN OF RECORD OCCURS 0,
        A(50),B(50),C(20),D(20),E(20),
        F(20),G(20),H(20),I(20),J(20),
        K(20),L(20),M(20),N(20),
        O(20),P(20),Q(20),R(20),
      END OF RECORD.
SELECTION-SCREEN BEGIN OF BLOCK T1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_LNAME LIKE RLGRAP-FILENAME MODIF ID MD2,
P_DR RADIOBUTTON GROUP R1 USER-COMMAND UC DEFAULT 'X',
P_CX  RADIOBUTTON GROUP R1.
SELECTION-SCREEN END OF BLOCK T1.
SELECTION-SCREEN BEGIN OF BLOCK t2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS:s_zhyms  FOR ZTSd003-Zhyms MODIF ID MD1,
               s_zqd1    FOR ZTSd003-Zqd MODIF ID MD1,
               s_zcpfl    FOR ZTSd003-Zcpfl MODIF ID MD1,
               s_auart    FOR ZTSd003-auart MODIF ID MD1,
               s_zfhrq    FOR ZTSd003-zfhrq MODIF ID MD1
               .
SELECTION-SCREEN END OF BLOCK t2.

SELECTION-SCREEN BEGIN OF BLOCK t3 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS:s_zyf  FOR ZTSd004-Zyf MODIF ID MD3,
               s_zqd2    FOR ZTSd003-Zqd MODIF ID MD3
               .
SELECTION-SCREEN END OF BLOCK t3.
SELECTION-SCREEN BEGIN OF BLOCK T4 WITH FRAME TITLE TEXT-002.
PARAMETERS:p_1 RADIOBUTTON GROUP r2 USER-COMMAND uc DEFAULT 'X',
           p_2 RADIOBUTTON GROUP r2.
SELECTION-SCREEN END OF BLOCK T4.

INITIALIZATION.
  SET PF-STATUS 'DOWNLOAD'.
*  PERFORM FRM_INI_DATA.
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    CASE SCREEN-GROUP1.
      WHEN 'MD1'.
        IF P_CX IS NOT INITIAL AND P_1 IS NOT INITIAL.
          SCREEN-ACTIVE = '1'.
        ELSE.
          SCREEN-ACTIVE = '0'.
        ENDIF.
      WHEN 'MD2'.
        IF P_DR IS NOT INITIAL .
          SCREEN-ACTIVE = '1'.
        ELSE.
          SCREEN-ACTIVE = '0'.
        ENDIF.
      WHEN 'MD3'.
        IF P_CX IS NOT INITIAL  AND P_2 IS NOT INITIAL.
          SCREEN-ACTIVE = '1'.
        ELSE.
          SCREEN-ACTIVE = '0'.
        ENDIF.
    ENDCASE.
    MODIFY SCREEN.
  ENDLOOP.

AT SELECTION-SCREEN.
  CASE SY-UCOMM.
    WHEN 'DOWNLOAD'.
      PERFORM FRM_GER_TEMPLATE1.
    WHEN 'DOWNLOAD1'.
      PERFORM FRM_GER_TEMPLATE2.
  ENDCASE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_LNAME.

  PERFORM GET_P_LNAME.

START-OF-SELECTION.
  IF p_dr is not INITIAL.
    PERFORM FRM_IMPORT_DATA.
    "将数据整合到内表输出
    PERFORM FRM_DATA_DR.
  ELSE.
    PERFORM FRM_GET_DATA.
    PERFORM FRM_FIELDCAT_INIT.  "ALV字段定义
    PERFORM FRM_LAYOUT_INIT.    "ALV整体状态
    PERFORM FRM_GRID_DISPLAY.   "ALV输出
  ENDIF.


END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  FRM_GER_TEMPLATE1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GER_TEMPLATE1 .
  DATA:
    LO_OBJDATA          LIKE WWWDATATAB,
    LS_DESTINATION      LIKE RLGRAP-FILENAME,
    LS_OBJNAM           TYPE STRING,
    LI_RC               LIKE SY-SUBRC,
    LS_ERRTXT           TYPE STRING.
  DATA:
    P_OBJID             TYPE WWWDATATAB-OBJID,
    P_DEST              LIKE SAPB-SAPPFAD,
    L_TITLE             TYPE STRING,
    L_DFNAME            TYPE STRING,
    L_FILENAME          TYPE STRING,
    L_PATH              TYPE STRING,
    L_L_PATH            TYPE STRING.
  CLEAR L_DFNAME.
  L_DFNAME = '行业渠道销售数据'.
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    EXPORTING
      WINDOW_TITLE      = L_TITLE
      DEFAULT_EXTENSION = 'xls'
      DEFAULT_FILE_NAME = L_DFNAME
      FILE_FILTER       = '(EXCEL)'
    CHANGING
      FILENAME          = L_FILENAME
      PATH              = L_PATH
      FULLPATH          = L_L_PATH.

  LO_OBJDATA-RELID = 'MI'.
  LO_OBJDATA-OBJID = 'ZSD003'.
  LS_DESTINATION = L_L_PATH.

  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      KEY         = LO_OBJDATA
      DESTINATION = LS_DESTINATION
    IMPORTING
      RC          = LI_RC.
  IF LI_RC NE 0.
    MESSAGE '下载失败,检查输入数据及模板是否上传' TYPE 'E'.
  ENDIF.
ENDFORM.                    " FRM_GER_TEMPLATE1
*&---------------------------------------------------------------------*
*&      Form  FRM_GER_TEMPLATE2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GER_TEMPLATE2 .
  DATA:
    LO_OBJDATA          LIKE WWWDATATAB,
    LS_DESTINATION      LIKE RLGRAP-FILENAME,
    LS_OBJNAM           TYPE STRING,
    LI_RC               LIKE SY-SUBRC,
    LS_ERRTXT           TYPE STRING.
  DATA:
    P_OBJID             TYPE WWWDATATAB-OBJID,
    P_DEST              LIKE SAPB-SAPPFAD,
    L_TITLE             TYPE STRING,
    L_DFNAME            TYPE STRING,
    L_FILENAME          TYPE STRING,
    L_PATH              TYPE STRING,
    L_L_PATH            TYPE STRING.
  CLEAR L_DFNAME.
  L_DFNAME = '预算目标数据'.
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    EXPORTING
      WINDOW_TITLE      = L_TITLE
      DEFAULT_EXTENSION = 'xls'
      DEFAULT_FILE_NAME = L_DFNAME
      FILE_FILTER       = '(EXCEL)'
    CHANGING
      FILENAME          = L_FILENAME
      PATH              = L_PATH
      FULLPATH          = L_L_PATH.

  LO_OBJDATA-RELID = 'MI'.
  LO_OBJDATA-OBJID = 'ZSD004'.
  LS_DESTINATION = L_L_PATH.

  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      KEY         = LO_OBJDATA
      DESTINATION = LS_DESTINATION
    IMPORTING
      RC          = LI_RC.
  IF LI_RC NE 0.
    MESSAGE '下载失败,检查输入数据及模板是否上传' TYPE 'E'.
  ENDIF.
ENDFORM.                    " FRM_GER_TEMPLATE2
*&---------------------------------------------------------------------*
*&      Form  GET_P_LNAME
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_P_LNAME .
  CALL FUNCTION 'TB_LIMIT_WS_FILENAME_GET'
    EXPORTING
*     DEF_FILENAME     = ' '
*     DEF_PATH         = ' '
      MASK             = 'Excel files (*.XLSX)|*.XLSX|Excel files (*.XLS)|*.XLS|All Files (*.*)|*.*|'
*     MODE             = ' '
      TITLE            = TEXT-002
    IMPORTING
      FILENAME         = P_LNAME
*     PATH             =
*     FILE             =
    EXCEPTIONS
      SELECTION_CANCEL = 1
      SELECTION_ERROR  = 2
      OTHERS           = 3.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.
ENDFORM.                    " GET_P_LNAME
*&---------------------------------------------------------------------*
*&      Form  FRM_IMPORT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_IMPORT_DATA .
  IF p_1 is not INITIAL .
    "从导入表获取数据
    "校验文件是否输入正确
    IF p_lname cs '行业渠道销售数据'.
    else.
      MESSAGE '请根据所选的导入报表,导入正确的文件!' type 'S' DISPLAY LIKE 'E'.
      LEAVE LIST-PROCESSING.
    ENDIF.
    PERFORM FRM_UPLOAD_DATA USING 1 2 14 P_LNAME.
  else.
    IF p_lname cs '预算目标数据'.
    else.
      MESSAGE '请根据所选的导入报表,导入正确的文件!' type 'S' DISPLAY LIKE 'E'.
      LEAVE LIST-PROCESSING.
    ENDIF.
    "从导入表获取数据
    PERFORM FRM_UPLOAD_DATA USING 1 2 18 P_LNAME.
  ENDIF.
ENDFORM.                    " FRM_IMPORT_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_1      text
*      -->P_2      text
*      -->P_2      text
*      -->P_P_FILE  text
*----------------------------------------------------------------------*
FORM FRM_UPLOAD_DATA  USING COL TYPE I ROW TYPE I COL2 TYPE I P_FILE TYPE LOCALFILE.
  DATA: CNS_BEGIN_COL TYPE I ,           "upload的Excel的起始列
          CNS_BEGIN_ROW TYPE I  ,           "upload的Excel的起始行
          CNS_END_COL   TYPE I  ,           "upload的Excel的终止列
          CNS_END_ROW   TYPE I VALUE 20000 .  "upload的Excel的终止行
  CNS_BEGIN_COL = COL .
  CNS_BEGIN_ROW = ROW .
  CNS_END_COL = COL2 .
  DATA : WA_DATAFILE TYPE RLGRAP-FILENAME.    "Local ASCII Text File
*  data : l_intern type kcde_cells occurs 0 with header line.
  DATA : L_INTERN  LIKE TABLE OF ALSMEX_TABLINE  WITH HEADER LINE..
  DATA : L_INDEX TYPE I.
  FIELD-SYMBOLS : <FS>.
  WA_DATAFILE = P_FILE.

*  call function 'KCD_EXCEL_OLE_TO_INT_CONVERT'
  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      FILENAME                = WA_DATAFILE
      I_BEGIN_COL             = CNS_BEGIN_COL
      I_BEGIN_ROW             = CNS_BEGIN_ROW
      I_END_COL               = CNS_END_COL
      I_END_ROW               = CNS_END_ROW
    TABLES
      INTERN                  = L_INTERN[]
    EXCEPTIONS
      INCONSISTENT_PARAMETERS = 1
      UPLOAD_OLE              = 2
      OTHERS                  = 3.

  IF L_INTERN[] IS INITIAL.
    MESSAGE '导入文件没有数据,请检查!' TYPE 'S' DISPLAY LIKE 'E'..
    LEAVE LIST-PROCESSING.
  ENDIF.

  DATA : TMP_ROW TYPE I .
  TMP_ROW = 1 .
  LOOP AT L_INTERN.
    IF TMP_ROW <> L_INTERN-ROW .
      APPEND RECORD.
      CLEAR RECORD.
      TMP_ROW = L_INTERN-ROW.
    ENDIF.
    CASE L_INTERN-COL.
      WHEN 1.
        RECORD-A = L_INTERN-VALUE .
      WHEN 2.
        RECORD-B = L_INTERN-VALUE .
      WHEN 3.
        RECORD-C = L_INTERN-VALUE .
      WHEN 4.
        RECORD-D = L_INTERN-VALUE .
      WHEN 5.
        RECORD-E = L_INTERN-VALUE .
      WHEN 6.
        RECORD-F = L_INTERN-VALUE .
      WHEN 7.
        RECORD-G = L_INTERN-VALUE .
      WHEN 8.
        RECORD-H = L_INTERN-VALUE .
      WHEN 9.
        RECORD-I = L_INTERN-VALUE .
      WHEN 10.
        RECORD-J = L_INTERN-VALUE .
      WHEN 11.
        RECORD-K = L_INTERN-VALUE .
      WHEN 12.
        RECORD-L = L_INTERN-VALUE .
      WHEN 13.
        RECORD-M = L_INTERN-VALUE.
      WHEN 14.
        RECORD-N = L_INTERN-VALUE .
      WHEN 15.
        RECORD-O = L_INTERN-VALUE.
      WHEN 16.
        RECORD-P = L_INTERN-VALUE .
      WHEN 17.
        RECORD-Q = L_INTERN-VALUE.
      WHEN 18.
        RECORD-R = L_INTERN-VALUE .
    ENDCASE.
  ENDLOOP.
  APPEND RECORD.
  CLEAR RECORD.


ENDFORM.                    " FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_DATA_DR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_DATA_DR .
  data:lt_tvakt type TABLE OF tvakt,
       ls_tvakt type tvakt,
       lv_num type i,
       lv_str type string .
  SELECT * FROM tvakt into CORRESPONDING FIELDS OF TABLE lt_tvakt
    where spras = '1'.
  SORT lt_tvakt by auart.
  IF P_1 IS NOT INITIAL.
    LOOP AT RECORD.
      "判断订单类型是否存在
      lv_num = sy-tabix.
      CLEAR ls_tvakt.
      READ TABLE lt_tvakt into ls_tvakt WITH key auart = record-g BINARY SEARCH.
      IF sy-subrc <> 0.
        lv_str = 'EXCEL第'  && lv_Num && '行订单类型不存在,请核对后再导入!' .
        MESSAGE lv_str type 'S' DISPLAY LIKE 'E'.
        RETURN.
*        LEAVE LIST-PROCESSING.
      ENDIF.
      GS_OUT1-ZHYMS = RECORD-A.
      GS_OUT1-ZQD = RECORD-B.
      GS_OUT1-ZCPFL = RECORD-C.
      GS_OUT1-AUART = RECORD-g.
      GS_OUT1-ZFHRQ = RECORD-h.
      GS_OUT1-zmc = LS_TVAKT-BEZEI.
      GS_OUT1-ZSL = RECORD-d.
      GS_OUT1-ZJHJE = RECORD-e.
      GS_OUT1-ZBHSYGSR = RECORD-f.
      GS_OUT1-ZQTFL = RECORD-I.
      GS_OUT1-ZBYZD1 = RECORD-J.
      GS_OUT1-ZBYZD2 = RECORD-K.
      GS_OUT1-ZBYZD3 = RECORD-L.
      GS_OUT1-ZBYZD4 = RECORD-M.
      GS_OUT1-ZBYZD5 = RECORD-N.
      APPEND GS_OUT1 TO GT_OUT1.
      CLEAR:RECORD,GS_OUT1.
    ENDLOOP.
    MODIFY ZTSD003 FROM TABLE GT_OUT1.
    IF sy-subrc = 0.
      MESSAGE '更新表成功!' type 'S'.
      COMMIT WORK AND WAIT .
    else.
      ROLLBACK WORK .
    ENDIF.
  ELSE.
    LOOP AT RECORD.
      GS_OUT2-ZYF = RECORD-A.
      GS_OUT2-ZQD      = RECORD-B.
      GS_OUT2-ZYJSR    = RECORD-C.
      GS_OUT2-ZRNSL = RECORD-D.
      GS_OUT2-ZDNXL = RECORD-E.
      GS_OUT2-ZSNXL = RECORD-F.
      GS_OUT2-ZHY = RECORD-G.
      GS_OUT2-ZCNN = RECORD-H.
      GS_OUT2-ZRSJ = RECORD-I.
      GS_OUT2-ZZN = RECORD-J.
      GS_OUT2-ZXMX = RECORD-K.
      GS_OUT2-ZXZB = RECORD-L.
      GS_OUT2-ZQT = RECORD-M.
      GS_OUT2-ZBYZD1 = RECORD-N.
      GS_OUT2-ZBYZD2 = RECORD-O.
      GS_OUT2-ZBYZD3 = RECORD-P.
      GS_OUT2-ZBYZD4 = RECORD-Q.
      GS_OUT2-ZBYZD5 = RECORD-R.
      APPEND GS_OUT2 TO GT_OUT2.
      CLEAR:RECORD,GS_OUT2.
    ENDLOOP.
    MODIFY ZTSD004 FROM TABLE GT_OUT2.
    IF sy-subrc = 0.
      MESSAGE '更新表成功!' type 'S'.
      COMMIT WORK AND WAIT .
    else.
      ROLLBACK WORK .
    ENDIF.
  ENDIF.
ENDFORM.                    " FRM_DATA_DR
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_ALV_DATA .

ENDFORM.                    " FRM_ALV_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA .
  IF p_1 is not INITIAL.
    SELECT
      *
      from ztsd003
      INTO CORRESPONDING FIELDS OF TABLE gt_out1
      where ZHYMS in s_zhyms
      and ZQD in s_zqd1
      and ZCPFL in s_zcpfl
      and AUART in s_auart
      AND ZFHRQ in s_zfhrq.
  else.
    SELECT
      *
      from ztsd004
      INTO CORRESPONDING FIELDS OF TABLE gt_out2
      where ZQD in s_zqd2
      and Zyf in s_zyf
      .
  ENDIF.
ENDFORM.                    " FRM_GET_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_FIELDCAT_INIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_FIELDCAT_INIT .
  IF p_1 is not INITIAL.
     PERFORM APPEND_FC_ALV USING:
     'ZHYMS'           '' ''               ' '    '行业描述'              10  '' ''  'X' '',
     'ZQD'             '' ''               ' '    '渠道(报表)'          10  '' ''  'X' '',
     'ZCPFL'           '' ''               ' '    '产品分类'              10  '' ''  'X' '',
     'AUART'           '' ''               ' '    '销售凭证类型'          10  '' ''  'X' '',
     'ZFHRQ'           '' ''               ' '    '发货日期'              10  '' ''  'X' '',
     'ZMC'             '' ''               ' '    '订单类型名称'          10  '' ''  'X' '',
     'ZSL'             '' ''               ' '    '数量'                  10  '' ''  'X' '',
     'ZJHJE'           '' ''               ' '    '交货金额'              10  '' ''  'X' '',
     'ZBHSYGSR'        '' ''               ' '    '不含税预估收入 '       10  '' ''  'X' '',
     'ZQTFL'           '' ''               ' '    '其他分类'              10  '' ''  'X' ''
     .
  else.
     PERFORM APPEND_FC_ALV USING:
     'ZYF'             '' ''               ' '    '月份'                 10  '' ''  'X' '',
     'ZQD'             '' ''               ' '    '渠道(报表)'          10  '' ''  'X' '',
     'ZYJSR'           '' ''               ' '    '业绩收入(万元)'      10  '' ''  'X' '',
     'ZRNSL'           '' ''               ' '    '产品1(万袋)'      10  '' ''  'X' '',
     'ZDNXL'           '' ''               ' '    '产品2(万袋)'      10  '' ''  'X' '',
     'ZSNXL'           '' ''               ' '    '产品3(万杯)'  10  '' ''  'X' '',
     'ZHY'             '' ''               ' '    '产品4(万箱)'          10  '' ''  'X' '',
     'ZCNN'            '' ''               ' '    '产品5(万箱)'        10  '' ''  'X' '',
     'ZRSJ'            '' ''               ' '    '产品6(万箱)'        10  '' ''  'X' '',
     'ZZN'             '' ''               ' '    '产品7(万箱)'          10  '' ''  'X' '',
     'ZXMX'            '' ''               ' '    '产品8(万箱)'        10  '' ''  'X' '',
     'ZXZB'            '' ''               ' '    '产品9(万箱)'        10  '' ''  'X' '',
     'ZQT'             '' ''               ' '    '其他(万箱)'          10  '' ''  'X' ''

     .













  ENDIF.
ENDFORM.                    " FRM_FIELDCAT_INIT
*&---------------------------------------------------------------------*
*&      Form  FRM_LAYOUT_INIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_LAYOUT_INIT .
  gs_layout-zebra             = 'X'.  "斑马线显示,颜色隔行交替显示
  gs_layout-edit              = ''.  "ALV是否可编辑,注意只对Grid模式有效,对List模式无效
  "gs_layout-window_titlebar   = ''.   "程序标题
  "gs_layout-key_hotspot       = ''.   "关键字段设为热点(超链接)
  "gs_layout-lights_fieldname  = ''.   "XX字段显示状态灯,可取值为1:RED,2:YELLOW,3:GREEN
  gs_layout-cwidth_opt = 'X'.  "ALV网格(单元格)宽度设置为自动最优化,按输出内容宽度自动调整
  "gs_layout-no_vline          = ' '.  "没有竖线,由空格代替
  gs_layout-cwidth_opt = 'X'.          "最优列宽
*  GS_LAYOUT-BOX_FNAME      = 'CBX'.             "在输出内表中定义的字段名,该字段作为checkbox,可以在输出列表中,选择多行
ENDFORM.                    " FRM_LAYOUT_INIT
*&---------------------------------------------------------------------*
*&      Form  FRM_GRID_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GRID_DISPLAY .
  DATA LT_SETTING TYPE LVC_S_GLAY.
  LT_SETTING-EDT_CLL_CB = 'X'.
  IF p_1 is not INITIAL.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
   EXPORTING
     I_CALLBACK_PROGRAM                = sy-repid         "SY-CPROG
     I_CALLBACK_PF_STATUS_SET          = 'FRM_SET_PF_STATUS'
     I_CALLBACK_USER_COMMAND           = 'FRM_USER_COMMAND'
     IS_LAYOUT_LVC                     = gs_layout
     IT_FIELDCAT_LVC                   = gt_fieldcat
     I_SAVE                            = 'A'
    TABLES
      T_OUTTAB                          = GT_OUT1
   EXCEPTIONS
     PROGRAM_ERROR                     = 1
     OTHERS                            = 2
            .
  else.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
   EXPORTING
     I_CALLBACK_PROGRAM                = sy-repid         "SY-CPROG
     I_CALLBACK_PF_STATUS_SET          = 'FRM_SET_PF_STATUS'
     I_CALLBACK_USER_COMMAND           = 'FRM_USER_COMMAND'
     IS_LAYOUT_LVC                     = gs_layout
     IT_FIELDCAT_LVC                   = gt_fieldcat
     I_SAVE                            = 'A'
    TABLES
      T_OUTTAB                          = GT_OUT2
   EXCEPTIONS
     PROGRAM_ERROR                     = 1
     OTHERS                            = 2
            .
  ENDIF.

ENDFORM.                    " FRM_GRID_DISPLAY
*&---------------------------------------------------------------------*
*&      Form  APPEND_FC_ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0722   text
*      -->P_0723   text
*      -->P_0724   text
*      -->P_10     text
*      -->P_0726   text
*      -->P_0727   text
*      -->P_0728   text
*      -->P_0729   text
*----------------------------------------------------------------------*
FORM append_fc_alv  USING   fieldname    TYPE slis_fieldcat_alv-fieldname
                            ref_fieldname TYPE slis_fieldcat_alv-ref_fieldname
                            ref_tabname   TYPE slis_fieldcat_alv-ref_tabname
                            key          TYPE slis_fieldcat_alv-key
                            reptext_ddic TYPE slis_fieldcat_alv-reptext_ddic
                            outputlen    TYPE slis_fieldcat_alv-outputlen
                            lzero        TYPE slis_fieldcat_alv-lzero
                            emphasize    TYPE slis_fieldcat_alv-emphasize
                            no_zero      TYPE slis_fieldcat_alv-no_zero
                            edit         TYPE slis_fieldcat_alv-edit.
  DATA ls_fieldcat TYPE lvc_s_fcat.
  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname     = fieldname.     "字段
  ls_fieldcat-ref_field     = ref_fieldname.     "参考字段
  ls_fieldcat-ref_table     = ref_tabname.     "参考表
  ls_fieldcat-key           = key.           "关键字段
  ls_fieldcat-coltext       = reptext_ddic.  "显示名称
  ls_fieldcat-outputlen     = outputlen.     "字段长度
  ls_fieldcat-lzero         = lzero.         "是否有前导零
  ls_fieldcat-emphasize     = emphasize.     "字段列颜色
  ls_fieldcat-no_zero       = no_zero.       "不显示多余的零
  ls_fieldcat-edit          = edit.          "编辑
  APPEND ls_fieldcat TO gt_fieldcat.
ENDFORM.                    " APPEND_FC_ALV
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_PF_STATUS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RT_EXTAB   text
*----------------------------------------------------------------------*
FORM FRM_SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'STATUS_CX'.
  SET TITLEBAR 'TITLE'.
ENDFORM.


学习自用,有问题还原指正,感谢!!!


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值