20171104 DOI Excel 导出

Posted Rainystuday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20171104 DOI Excel 导出相关的知识,希望对你有一定的参考价值。

1. OAOR 创建模板,

Class name:SOFFICEINTEGRATION
Class type:  OT
Object key:  ZZCSDRP_0030

 

2.双击表模板创建Excel 模板,

3.上传成功后可以看到模板,

 双击可以显示模板

 

注意点:关键字可以不写

!!!注意关键字 = 文件名

 

二、示例

1. 取数据,

2.ALV显示

3. 选中行进行导出 

 

 

 

*&---------------------------------------------------------------------*
*& Program Name         <程序名称>: ZZCSDRP_0029
*& Purpose              <程序用途>: 出口商业发票   导出
*& Project Name         <项目名称>: ZC
*& Created by           <创 建 人>: ibm-caixiang
*& Created on           <创建日期>: 20171013
*& Functional Consultant<功能顾问>: ibm-wugz
*& Description          <功能描述>: Function Desc.
*&---------------------------------------------------------------------*
*              Modification Log<程序修改日志>
*<日期>        <开发者>     <功能顾问>            <修改描述>
* 20171103     ibm-caixiang ibm-xuj              ETDK900085
*&
*&---------------------------------------------------------------------*
REPORT  ZZCSDRP_0030 NO STANDARD PAGE HEADING
                     MESSAGE-ID ZZCSD001.

*----------------------------------------------------------------------*
*   type-pools define(定义使用到的类型池)
*----------------------------------------------------------------------
TYPE-POOLS:SLIS"ALV使用到的类库
           TRUXS,
           ICON.

*----------------------------------------------------------------------
*                          TABLES/Structure
*----------------------------------------------------------------------
TABLES:VBAK"销售订单抬头表
       ADRC"地址表
       VBKD"销售业务数据表
       VBAP"销售订单项目表
       KNA1"客户数据表
       MAKT"物料描述

*----------------------------------------------------------------------
*内表定义
*----------------------------------------------------------------------
TYPES:BEGIN OF TY_ALV,
**display fields
        VBELN    LIKE VBAK-VBELN"销售订单
        VTWEG    LIKE VBAK-VTWEG"分销渠道
        VTWEGTXT TYPE STRING,
        VKGRP    LIKE VBAK-VKGRP"销售组
        VKGRPTXT TYPE STRING,
        KUNNR    LIKE VBAK-KUNNR"售达方
        NAME1    LIKE KNA1-NAME1"售达方名称
        LAND1    LIKE KNA1-LAND1"国家
        LANDX    LIKE T005T-LANDX"国名

**head data
        VKBUR    LIKE VBAK-VKBUR,
        VKBURTXT TYPE STRING,
        WERKS    LIKE VBAP-WERKS,
        LGORT    LIKE VBAP-LGORT,

        VKORG    LIKE VBAK-VKORG"销售组织
        VKORGTXT TYPE STRING,     "公司名称
        VKORGEN  TYPE STRING,     "英文公司名称
        TELF1    LIKE KNA1-TELF1"电话
        TELFX    LIKE KNA1-TELFX"传真
        ADDRESS  TYPE STRING,       "地址
        BSTKD    LIKE VBKD-BSTKD,   "发票号
        ZZCDHXXH LIKE VBAK-ZZCDHXXH"订单号
        ZSHADR   LIKE VBAK-ZSHADR,  "地址
        ZSHNAME  LIKE VBAK-ZSHNAME"中茶-收货人
        ZSHTEL   LIKE VBAK-ZSHTEL,  "中茶-收货电话
        INCO2    LIKE VBKD-INCO2,   "FROM
        INCO1    LIKE VBKD-INCO2,   "FROM
        ERDAT    LIKE VBAK-ERDAT,
        AUART    LIKE VBAK-AUART,
        ZZCMT    LIKE VBAK-ZZCMT,
        WAERK    LIKE VBAK-WAERK,
        ZZYWY    LIKE VBAK-ZZYWY,
        ZSL      TYPE STRING,
        ZJE      TYPE STRING,
        ZTJ      TYPE STRING,
        ZJZ      TYPE STRING,
        ZMZ      TYPE STRING,
        ZSLEN    TYPE STRING,
        ZJEEN    TYPE STRING,
        XM_EN    TYPE STRING,
        XM_ZH    TYPE STRING,
*       装船名   手工输入
*       航期    手工输入
*       TO    手工输入
*       ZDYCS    LIKE ZTZC_PRINT-ZDYCS,
        BOX      TYPE C,
        LIN      TYPE SY-TABIX,
      END OF TY_ALV.
DATA: GT_ALV   TYPE STANDARD TABLE OF TY_ALV,
      GS_ALV   TYPE TY_ALV,
      WA_PRINT TYPE TY_ALV.

DATABEGIN OF GS_ITEM,
* VBELN
        VBELN  LIKE VBAK-VBELN"销售订单
        POSNR  LIKE VBAP-POSNR,
        MATNR  LIKE VBAP-MATNR,
        ARKTX  LIKE VBAP-ARKTX"品名
        VRKME  LIKE VBAP-VRKME,
        KWMENG LIKE VBAP-KWMENG"数量
        ZZCSJH LIKE VBAP-ZZCSJH"批次号
        VOLUM  LIKE VBAP-VOLUM"体积
        NTGEW  LIKE VBAP-NTGEW"净重
        BRGEW  LIKE VBAP-BRGEW"毛重
        KZWI1  LIKE VBAP-KZWI1,
        NETPR  TYPE CHAR10,
        LGORT  LIKE VBAP-LGORT,
        CHARG  LIKE VBAP-CHARG,
        WERKS  LIKE VBAP-WERKS,
        ZDW    TYPE CHAR10,
        ZPC    TYPE RESB-BDMNG,

      END OF GS_ITEM.
DATA: GT_ITEM LIKE TABLE OF GS_ITEM.

FIELD-SYMBOLS: <FS_ALV>  LIKE LINE OF GT_ALV,
               <FS_ITEM> LIKE LINE OF GT_ITEM.


*----------------------------------------------------------------------
* for DOI
*----------------------------------------------------------------------
DATA:GDF_PATH     TYPE STRING"add by shikai.liao
     GDF_FILENAME TYPE STRING,
     GDF_FULLPATH TYPE STRING.
DATA:L_IREF_SPREADSHEET TYPE REF TO I_OI_SPREADSHEET.



**全局变量
DATA: G_ERR(1),
      G_LINES  TYPE SY-TABIX,
      G_TABIX  TYPE SY-TABIX.
**ALV参数定义
DATA: GT_FCAT TYPE LVC_T_FCAT,
      GS_FCAT TYPE LVC_S_FCAT.
DATA: GS_STYL TYPE LVC_S_STYL,
      GT_STYL TYPE LVC_T_STYL.
DATA: GS_SCOL TYPE LVC_S_SCOL,
      GT_SCOL TYPE LVC_T_SCOL.
DATA: G_REPID   TYPE SY-REPID,
      GS_LAYOUT TYPE LVC_S_LAYO.
DATA: GS_S_GLAY TYPE LVC_S_GLAY."可编辑单元格时回调
DATA: G_GRID  TYPE REF TO CL_GUI_ALV_GRID.

**常量定义
CONSTANTS:C_ERR(1TYPE VALUE \'X\',
          C_OK(1)  TYPE VALUE \'S\'.

*======================================================================
*选择屏幕
*======================================================================
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.

PARAMETERS:     P_VKORG LIKE VBAK-VKORG,
                P_VTWEG LIKE VBAK-VTWEG OBLIGATORY DEFAULT \'30\'"是否不显示
SELECT-OPTIONS: S_VBELN FOR  VBAK-VBELN,
                S_AUART FOR  VBAK-AUART,
                S_KUNNR FOR  VBAK-KUNNR,"客户编号
                S_ERDAT FOR  VBAK-ERDAT."订单创建日期
*PARAMETERS:    P_PRINT TYPE C AS CHECKBOX DEFAULT \'X\'.

SELECTION-SCREEN END OF BLOCK BLK1.

SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
PARAMETERS:  P_PC RADIOBUTTON GROUP RAD1 DEFAULT \'X\',
             P_MT RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN END OF BLOCK BLK2.


*----------------------------------------------------------------------
*程序初始化
*----------------------------------------------------------------------
INITIALIZATION.
* 初始化数据
  PERFORM FRM_INITIAL.

*----------------------------------------------------------------------
*权限检查事件
*----------------------------------------------------------------------
AT SELECTION-SCREEN.
* 权限检查部分
  PERFORM FRM_CHECK_AUTHOR.

*======================================================================
*                          MAIN PROGRAM
*======================================================================
*主程序逻辑
*----------------------------------------------------------------------
START-OF-SELECTION.
**查数据
  PERFORM FRM_GET_DATA.
  CHECK G_ERR EQ SPACE.
  PERFORM FRM_ALV_DISPLAY.

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

**
**
**
*8

  IF S_ERDAT[] IS INITIAL.
    S_ERDAT(3\'IEQ\'.
    S_ERDAT-LOW = SY-DATUM+0(6) && \'01\'.
    CALL FUNCTION \'DATE_GET_MONTH_LASTDAY\'       
EXPORTING         I_DATE 
= SY-DATUM       
IMPORTING         E_DATE 
= S_ERDAT-HIGH.     
APPEND S_ERDAT.   
ENDIF.   

LOOP AT SCREEN.
**分销渠道不允许输入     
IF SCREEN-NAME \'P_VTWEG\'.       
SCREEN-INPUT 0.     
ENDIF.     
MODIFY SCREEN.   
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_CHECK_AUTHOR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_CHECK_AUTHOR .
**检查销售组织权限   
AUTHORITY-CHECK OBJECT \'V_VBAK_VKO\'            
ID \'VKORG\' FIELD P_VKORG            
ID \'VTWEG\' FIELD P_VTWEG            
ID \'SPART\' DUMMY            
ID \'ACTVT\' FIELD \'03\'.   
IF SY-SUBRC <> 0.     
MESSAGE E002 WITH P_VKORG.   
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA .   
DATA:LT_ALV LIKE GT_ALV,        LS_ALV 
LIKE LINE OF LT_ALV.   
DATA:LT_TVAKT LIKE TABLE OF TVAKT,        LS_TVAKT 
LIKE LINE OF LT_TVAKT.   
DATA:LT_KNA1 LIKE TABLE OF KNA1,        LS_KNA1 
LIKE LINE OF LT_KNA1.   
DATA:LT_TVKBT LIKE TABLE OF TVKBT,        LS_TVKBT 
LIKE LINE OF LT_TVKBT.   
DATA:LT_TVGRT LIKE TABLE OF TVGRT,        LS_TVGRT 
LIKE LINE OF LT_TVGRT.   
DATA:LS_TXTID  LIKE THEAD-TDID,        LS_NAME   
LIKE THEAD-TDNAME,        LS_OBJECT 
LIKE THEAD-TDOBJECT.   
DATA:LT_ADRP LIKE TABLE OF ADRP,        LS_ADRP 
LIKE LINE OF LT_ADRP.   
DATA:LS_SUR21 LIKE USR21.   
DATA: LT_TVKOT LIKE TABLE OF TVKOT,         LS_TVKOT 
LIKE LINE OF LT_TVKOT.   
DATA: LT_T005T LIKE TABLE OF T005T,         LS_T005T 
LIKE LINE OF LT_T005T.   
DATA: LT_T052U LIKE TABLE OF T052U,         LS_T052U 
LIKE LINE OF LT_T052U.   
DATA: LT_T005U LIKE TABLE OF T005U,         LS_T005U 
LIKE T005U.   
DATA: LT_TVTWT LIKE TABLE OF TVTWT,         LS_TVTWT 
LIKE TVTWT.   
DATA: LS_TVKO LIKE TVKO,         LS_ADRC 
LIKE ADRC.   


SELECT DISTINCT          A
~VBELN          A
~AUART          A
~KUNNR          A
~VKBUR          A
~VKGRP          A
~VKORG          A
~ERDAT          A
~ZZCMT          A
~WAERK          A
~ZZYWY          A
~ZZCDHXXH          A
~VTWEG         
"客户地址(收件信息)          A
~ZSHADR          A
~ZSHNAME          A
~ZSHTEL          B

~BSTKD          B
~INCO1          B
~INCO2          B
~ZTERM     
INTO CORRESPONDING FIELDS OF TABLE GT_ALV     
FROM VBAK AS A     
JOIN VBKD AS B       
ON A~VBELN EQ B~VBELN    
WHERE A~VKORG = P_VKORG      
AND A~VTWEG EQ P_VTWEG      
AND A~VBELN IN S_VBELN      
AND A~AUART IN S_AUART      
AND A~KUNNR IN S_KUNNR      
AND A~ERDAT IN S_ERDAT.

**销售部门   
SELECT VKBUR BEZEI     
INTO CORRESPONDING FIELDS OF TABLE LT_TVKBT     
FROM TVKBT    
WHERE SPRAS = SY-LANGU.
**销售组 描述-VBAK-VKGRP 【TVGRT-VKGRP】   
SELECT VKGRP BEZEI     
INTO CORRESPONDING FIELDS OF TABLE LT_TVGRT     
FROM TVGRT    
WHERE SPRAS EQ SY-LANGU.
**取分销渠道   
SELECT VTWEG VTEXT     
INTO CORRESPONDING FIELDS OF TABLE LT_TVTWT     
FROM TVTWT    
WHERE SPRAS EQ SY-LANGU      
AND VTWEG = P_VTWEG.
**销售组织描述 【TVKOT】   
SELECT  SPRAS           VKORG           VTEXT     


INTO CORRESPONDING FIELDS OF TABLE LT_TVKOT     
FROM TVKOT    
WHERE VKORG = P_VKORG.

**   
SELECT SINGLE VKORG ADRNR     
INTO CORRESPONDING FIELDS OF LS_TVKO     
FROM TVKO    
WHERE VKORG = P_VKORG.   

SELECT SINGLE ADDRNUMBER                 DATE_FROM                 NATION DATE_TO



TITLE NAME1 NAME2 NAME3 NAME4 NAME_TEXT     





INTO CORRESPONDING FIELDS OF LS_ADRC     
FROM ADRC    
WHERE ADDRNUMBER = LS_TVKO-ADRNR      
AND DATE_FROM < SY-DATUM      
AND DATE_TO > SY-DATUM.


**取客户名称 KUNNR-NAME1   LT_ALV 
= GT_ALV.   
SORT LT_ALV BY KUNNR.   
DELETE ADJACENT DUPLICATES FROM LT_ALV COMPARING KUNNR.   
IF LT_ALV IS NOT INITIAL.     
SELECT KUNNR NAME1 NAME2            TELF1 TELFX
"电话,传真            LAND1 REGIO ORT01 ZZQXMC STRAS       

INTO CORRESPONDING FIELDS OF TABLE LT_KNA1       
FROM KNA1       
FOR ALL ENTRIES IN LT_ALV      
WHERE KUNNR = LT_ALV-KUNNR.     
SORT LT_KNA1 BY KUNNR.   
ENDIF.   


IF LT_KNA1 IS NOT INITIAL.     
SELECT LAND1  BLAND BEZEI       
INTO CORRESPONDING FIELDS OF TABLE LT_T005U       
FROM T005U        
FOR ALL ENTRIES IN LT_KNA1      
WHERE SPRAS = SY-LANGU        
AND LAND1   = LT_KNA1-LAND1        
AND BLAND  = LT_KNA1-REGIO.   
ENDIF.   

IF  LT_KNA1 IS NOT INITIAL.
**取国名     
SELECT LAND1 LANDX       
INTO CORRESPONDING FIELDS OF TABLE LT_T005T       
FROM T005T        
FOR ALL ENTRIES IN LT_KNA1      
WHERE SPRAS = SY-LANGU        
AND LAND1 = LT_KNA1-LAND1.     
SORT LT_T005T BY LAND1.   
ENDIF.

**取付款方式描述T052U   
SELECT ZTERM ZTAGG TEXT1     
INTO CORRESPONDING FIELDS OF TABLE LT_T052U     
FROM T052U    
WHERE SPRAS = SY-LANGU.



**DATA processing   
LOOP AT GT_ALV ASSIGNING <FS_ALV>.

*  READ TABLE LT_KNA1 INTO LS_KNA1.

**取销售办事处描述 TVKBT-VKBUR     
READ TABLE LT_TVKBT INTO LS_TVKBT WITH KEY VKBUR = <FS_ALV>-VKBUR.     
IF SY-SUBRC EQ 0.       <FS_ALV>
-VKBURTXT = LS_TVKBT-BEZEI.     
ENDIF.

**分销渠道     
READ TABLE LT_TVTWT INTO LS_TVTWT WITH KEY VTWEG = <FS_ALV>-VTWEG.     
IF SY-SUBRC EQ 0.       <FS_ALV>
-VTWEGTXT = LS_TVTWT-VTEXT.     
ENDIF.
**销售组     
READ TABLE LT_TVGRT INTO LS_TVGRT WITH KEY VKGRP = <FS_ALV>-VKGRP.     
IF SY-SUBRC EQ 0.       <FS_ALV>
-VKGRPTXT = LS_TVGRT-BEZEI.     
ENDIF.
**销售组织     
READ TABLE LT_TVKOT INTO LS_TVKOT WITH KEY VKORG = <FS_ALV>-VKORG                                                SPRAS 
\'ZH\'.     
IF SY-SUBRC EQ 0.       <FS_ALV>
-VKORGTXT = LS_TVKOT-VTEXT.     
ENDIF.     
READ TABLE LT_TVKOT INTO LS_TVKOT WITH KEY VKORG = <FS_ALV>-VKORG                                                SPRAS 
\'EN\'.     
IF SY-SUBRC EQ 0.       <FS_ALV>
-VKORGEN = LS_TVKOT-VTEXT.     
ENDIF.

**库存地点     
SELECT SINGLE WERKS LGORT       
INTO ( <FS_ALV>-WERKS,<FS_ALV>-LGORT )       
FROM VBAP      
WHERE VBELN = <FS_ALV>-VBELN        
AND POSNR \'000010\'.

**地址     
CONCATENATE <FS_ALV>-ZSHADR  <FS_ALV>-ZSHNAME  <FS_ALV>-ZSHTEL INTO <FS_ALV>-ZSHADR SEPARATED BY SPACE.
**客户名称     
READ TABLE LT_KNA1 INTO LS_KNA1 WITH KEY KUNNR = <FS_ALV>-KUNNR.     
IF SY-SUBRC EQ 0.       <FS_ALV>
-NAME1 = LS_KNA1-NAME1 && LS_KNA1-NAME2.       <FS_ALV>
-TELF1 = LS_KNA1-TELF1.       <FS_ALV>
-TELFX = LS_KNA1-TELFX.       <FS_ALV>
-ADDRESS  = LS_KNA1-STRAS.
**国名       <FS_ALV>
-LAND1 = LS_KNA1-LAND1.       <FS_ALV>
-LANDX = LS_KNA1-ORT01.
**取客户收货地址       
IF <FS_ALV>-ZSHADR EQ SPACE.         
READ TABLE LT_T005U INTO LS_T005U WITH KEY LAND1 = LS_KNA1-LAND1                                                    BLAND 
= LS_KNA1-REGIO.         
IF LS_KNA1-ORT01 \'市辖区\'.           <FS_ALV>
-ZSHADR = LS_T005U-BEZEI && LS_KNA1-ZZQXMC && LS_KNA1-STRAS.         
ELSE.           <FS_ALV>
-ZSHADR = LS_T005U-BEZEI && LS_KNA1-ORT01 && LS_KNA1-ZZQXMC && LS_KNA1-STRAS.         
ENDIF.       
ENDIF.     
ENDIF.     

CONCATENATE <FS_ALV>-inco1 <FS_ALV>-INCO2 INTO <FS_ALV>-INCO2 SEPARATED BY space.   

ENDLOOP.   G_LINES 


LINES( GT_ALV ).   
IF G_LINES EQ 0.     G_ERR 
\'X\'.     
MESSAGE S004 DISPLAY LIKE \'E\'.   
ELSE.     
MESSAGE S006 WITH G_LINES.   
ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_ALV_DISPLAY .   
DEFINE GD_FIELDCAT.     
CLEAR:GS_FCAT.     GS_FCAT
SAP 下载EXCEL DOI使用OLE功能(DOI获取OLE对象)

ABAP系列SAP ABAP DOI展示EXCEL或WORD

(原创)带模板的DOI输出EXCEL

ABAP DOI 下载SMW0的EXCEL和WORD模板

20171104早python爬虫之username,password登陆

20171104xlVBA各人各科进退