TYPE-POOLS: SLIS,VRM, SBDST, SOI.
TABLES: LIKP, KNA1,LIPS,VBAP,MARA,KONV.
DATA: GD_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: SLA TYPE SLIS_LAYOUT_ALV ,
IVARIANT LIKE DISVARIANT,
I_REPID LIKE SY-REPID .
CONSTANTS DOCUMENT_NAME(30) VALUE 'SD01'.
CONSTANTS INPLACE VALUE 'X'.
DATA: FLAG .
DATA: G_DEF_ACTIVE_SHEETNAME(50) VALUE 'Sheet1'.
DATA: CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
CONTROL TYPE REF TO I_OI_CONTAINER_CONTROL,
DOCUMENT TYPE REF TO I_OI_DOCUMENT_PROXY,
SPREADSHEET TYPE REF TO I_OI_SPREADSHEET,
ERROR TYPE REF TO I_OI_ERROR,
ERRORS TYPE REF TO I_OI_ERROR OCCURS 0 WITH HEADER LINE.
CONTROLS: EXCELDATA TYPE TABLEVIEW USING SCREEN 0100.
DATA: TABLENAME(10), OKCODE(15),
ROW(4), COLUMN(4), DATA(39).
* spreadsheet interface structures for Excel data input
DATA: RANGEITEM TYPE SOI_RANGE_ITEM.
DATA: RANGES TYPE SOI_RANGE_LIST.
DATA: EXCEL_INPUT TYPE SOI_GENERIC_TABLE.
DATA: EXCEL_INPUT_WA TYPE SOI_GENERIC_ITEM.
DATA: INITIALIZED(1), RETCODE TYPE SOI_RET_STRING.
DATA: ITEM_URL(256), ALREADY_DONE, NEWNAME(40).
DATA DOCUMENT_TYPE(80).
DATA: APP TYPE VRM_ID, APPLIST TYPE VRM_VALUES.
DATA: EXCEL(80) VALUE 'Excel.Sheet'.
DATA: LINE_COUNT TYPE I,
COLUMN_COUNT TYPE I.
DATA: BEGIN OF TABLE_LINES OCCURS 0.
INCLUDE STRUCTURE TLINE.
DATA: END OF TABLE_LINES.
DATA: G_PRODH LIKE MVKE-PRODH. "产品层次
*---------------------------------*
*data define
*---------------------------------*
DATA: BEGIN OF IT_ITAB OCCURS 0,
VKORG LIKE LIKP-VKORG,
KUNNR LIKE LIKP-KUNNR,
NAME1 LIKE KNA1-NAME1,
WADAT_IST LIKE LIKP-WADAT_IST,
MATNR LIKE LIPS-MATNR,
ARKTX LIKE LIPS-ARKTX,
* lfimg LIKE lips-lfimg,
LFIMG TYPE I ,
VBELN LIKE LIPS-VBELN,
POSNR LIKE LIPS-POSNR,
VGBEL LIKE LIPS-VGBEL,
* netpr LIKE ekpo-netpr,
NETPR TYPE P DECIMALS 5,
PEINH LIKE EKPO-PEINH,
MENGE LIKE EKPO-MENGE,
BEDAT LIKE EKKO-BEDAT,
VGPOS LIKE LIPS-VGPOS,
COB TYPE P DECIMALS 5,
SMTZ TYPE P DECIMALS 5,
COBZ TYPE P DECIMALS 5,
MENO(120) TYPE C,
FLAG TYPE C ,
END OF IT_ITAB.
DATA: BEGIN OF IT_CHART OCCURS 0 ,
NAME1 LIKE KNA1-NAME1 ,
SMTZ TYPE P DECIMALS 5 ,
END OF IT_CHART .
SELECTION-SCREEN BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_VKORG FOR LIKP-VKORG DEFAULT '8803'.
PARAMETERS:
P_LFART LIKE LIKP-LFART DEFAULT 'ZLCC' OBLIGATORY.
SELECT-OPTIONS:
S_KUNNR FOR KNA1-KUNNR,
S_WADAT FOR LIKP-WADAT_IST,
S_MATNR FOR LIPS-MATNR,
S_VBELN FOR LIKP-VBELN.
PARAMETERS : COB(10) TYPE C OBLIGATORY DEFAULT '2' .
SELECTION-SCREEN END OF BLOCK BLK01.
PARAMETERS :
P_CHART TYPE C AS CHECKBOX DEFAULT 'X' .
INITIALIZATION .
* CASE sy-tcode.
* WHEN 'ZSD14' .
* p_lfart = 'ZLCC'.
* WHEN 'ZSD15'.
* p_lfart = 'LF'.
* ENDCASE.
*
*AT SELECTION-SCREEN OUTPUT.
* IF sy-tcode <> 'SE38'.
* LOOP AT SCREEN.
* IF screen-name = 'P_LFART'.
* screen-input = '0'.
* MODIFY SCREEN.
* ENDIF.
* ENDLOOP.
* ENDIF.
*SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
*PARAMETERS:
* p_n RADIOBUTTON GROUP rad1 DEFAULT 'X' ,
* p_w RADIOBUTTON GROUP rad1 .
*SELECTION-SCREEN END OF BLOCK b2.
*-------------------------------------*
*start of selection
*-------------------------------------*
START-OF-SELECTION.
IF P_LFART <> 'ZLCC' AND P_LFART <> 'LF'.
MESSAGE I000(OO) WITH '订单类型必须为LF或者ZLCC'.
EXIT.
ENDIF.
PERFORM FRM_GET_DATA.
PERFORM FIXDATA.
PERFORM GET_CHART_DATA.
IF P_CHART = ''.
PERFORM OUTDATA.
ELSE.
CALL SCREEN 100.
ENDIF.
*----------------------------------------*
*form frm-get-data
*----------------------------------------*
FORM FRM_GET_DATA.
SELECT
LIKP~VKORG
LIKP~KUNNR
LIKP~WADAT_IST
LIKP~VBELN
LIPS~POSNR
LIPS~MATNR
LIPS~ARKTX
LIPS~LFIMG
LIPS~VGBEL
LIPS~VGPOS
KNA1~NAME1
INTO CORRESPONDING FIELDS OF TABLE IT_ITAB
FROM LIKP
INNER JOIN LIPS ON LIKP~VBELN = LIPS~VBELN
INNER JOIN KNA1 ON LIKP~KUNNR = KNA1~KUNNR
WHERE LIKP~VKORG IN S_VKORG AND
LIKP~LFART = P_LFART AND
LIKP~KUNNR IN S_KUNNR AND
LIKP~WADAT_IST IN S_WADAT AND
LIKP~VBELN IN S_VBELN.
ENDFORM. "frm_get_data
*&---------------------------------------------------------------------*
*& Form fixdata
*&---------------------------------------------------------------------*
FORM FIXDATA.
DATA: TMPVBELN LIKE VBAP-VBELN ,
TMPPOSNR LIKE VBAP-POSNR ,
TMPKNUMV LIKE VBAK-KNUMV .
LOOP AT IT_ITAB.
CLEAR G_PRODH.
CLEAR:TMPVBELN ,TMPPOSNR ,TMPKNUMV .
IF P_LFART = 'ZLCC'.
SELECT SINGLE NETPR PEINH MENGE
INTO (IT_ITAB-NETPR,IT_ITAB-PEINH,IT_ITAB-MENGE)
FROM EKPO
WHERE EKPO~EBELN = IT_ITAB-VGBEL AND
EKPO~EBELP = IT_ITAB-VGPOS+1(5).
SELECT SINGLE BEDAT INTO IT_ITAB-BEDAT
FROM EKKO
WHERE EKKO~EBELN = IT_ITAB-VGBEL.
ELSE.
SELECT SINGLE VBAK~KNUMV VBAP~VBELN VBAP~POSNR
INTO (TMPKNUMV,TMPVBELN,TMPPOSNR)
FROM VBAK INNER JOIN VBAP ON VBAK~VBELN = VBAP~VBELN
WHERE VBAK~AUART = 'ZOR1' AND
VBAP~VBELN = IT_ITAB-VGBEL AND
VBAP~POSNR = IT_ITAB-VGPOS .
IF SY-SUBRC = 0 .
SELECT SINGLE * "kbetr kumza INTO (it_itab-netpr,it_itab-peinh)
FROM KONV
WHERE KNUMV = TMPKNUMV AND
KSCHL = 'ZSMT'.
IF SY-SUBRC = 0 .
IT_ITAB-NETPR = KONV-KBETR.
IT_ITAB-PEINH = KONV-KUMZA.
ENDIF.
ELSE.
IT_ITAB-FLAG = 'D'.
ENDIF.
ENDIF.
IF IT_ITAB-PEINH <> 0.
IT_ITAB-NETPR = IT_ITAB-NETPR / IT_ITAB-PEINH.
ENDIF.
*COB单价
IT_ITAB-COB = COB.
*产品层次
SELECT SINGLE PRODH INTO G_PRODH
FROM MVKE
WHERE MATNR = IT_ITAB-MATNR AND
VKORG = IT_ITAB-VKORG.
IF G_PRODH+10(8) = '00000001'.
IT_ITAB-NETPR = IT_ITAB-NETPR - COB.
ELSE.
IT_ITAB-COB = 0 .
ENDIF.
*COB总金额
IT_ITAB-COBZ = IT_ITAB-COB * IT_ITAB-LFIMG.
*SMT总金额
IT_ITAB-SMTZ = IT_ITAB-NETPR * IT_ITAB-LFIMG.
*读取文本(贴装点数)
PERFORM READ_TEXT USING IT_ITAB-MATNR
IT_ITAB-MENO.
MODIFY IT_ITAB.
CLEAR IT_ITAB.
ENDLOOP.
DELETE IT_ITAB WHERE FLAG = 'D'.
ENDFORM. " fixdata
*&---------------------------------------------------------------------*
*& Form get_chart_data
*&---------------------------------------------------------------------*
FORM GET_CHART_DATA.
DATA: TMPCOBZ TYPE P DECIMALS 5 .
SORT IT_ITAB BY NAME1.
LOOP AT IT_ITAB.
MOVE-CORRESPONDING IT_ITAB TO IT_CHART.
COLLECT IT_CHART.
TMPCOBZ = TMPCOBZ + IT_ITAB-COBZ.
ENDLOOP.
IT_CHART-NAME1 = 'COB'.
IT_CHART-SMTZ = TMPCOBZ .
APPEND IT_CHART.
ENDFORM. " get_chart_data
*&------------------------------------------------------*
*& Form read_text
*&------------------------------------------------------*
FORM READ_TEXT USING MATNR LIKE IT_ITAB-MATNR
MEMO.
DATA: TDNAME LIKE THEAD-TDNAME.
CONCATENATE MATNR '880300' INTO TDNAME.
CLEAR MEMO.
CLEAR TABLE_LINES.
REFRESH TABLE_LINES.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = '0001'
LANGUAGE = '1'
NAME = TDNAME
OBJECT = 'MVKE'
TABLES
LINES = TABLE_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
* LOOP AT table_lines .
* CONCATENATE memo table_lines-tdline INTO memo SEPARATED BY '|' .
* ENDLOOP .
* IF memo+0(1) = '|' . SHIFT memo . ENDIF .
* CLEAR table_lines .
* REFRESH table_lines .
READ TABLE TABLE_LINES INDEX 1.
IF SY-SUBRC = 0 .
MEMO = TABLE_LINES-TDLINE .
ELSE.
MEMO = ''.
ENDIF.
ENDFORM. "READ_TEXT
*&---------------------------------------------------------------------*
*& Form outdata
*&---------------------------------------------------------------------*
FORM OUTDATA.
PERFORM FIELDCAT_INIT .
SLA-COLWIDTH_OPTIMIZE = 'X'.
I_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = I_REPID
IT_FIELDCAT = GD_FIELDCAT[]
I_SAVE = 'A'
IS_VARIANT = IVARIANT
IS_LAYOUT = SLA
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
TABLES
T_OUTTAB = IT_ITAB[].
ENDFORM. " outdata
*---------------------------------------------------------------------*
* FORM fieldcat_init *
*---------------------------------------------------------------------*
FORM FIELDCAT_INIT .
PERFORM FRM_CATLG_SET USING: 'VBELN' '交货单号',
'POSNR' '交货单项目'.
IF P_LFART = 'ZLCC'.
PERFORM FRM_CATLG_SET USING: 'VGBEL' '采购单号',
'VGPOS' '采购单项目',
'BEDAT' '采购订单日期',
'MENGE' '采购订单数量'.
ELSE.
PERFORM FRM_CATLG_SET USING: 'VGBEL' '销售单号',
'VGPOS' '销售单项目'.
ENDIF.
PERFORM FRM_CATLG_SET USING: 'KUNNR' '客户代码',
'NAME1' '客户名称',
'MATNR' '物料编号',
'ARKTX' '规格型号',
'WADAT_IST' '实际发货日期',
'LFIMG' '实际发货数量',
'MENO' '贴装点数',
'NETPR' 'SMT单价',
'SMTZ' 'SMT总金额',
'COB' 'COB单价',
'COBZ' 'COB总金额' .
ENDFORM. "fieldcat_init
*---------------------------------------------------------------------*
* FORM frm_catlg_set *
*---------------------------------------------------------------------*
FORM FRM_CATLG_SET USING P_FIELD
P_TEXT.
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
LS_FIELDCAT-FIELDNAME = P_FIELD.
LS_FIELDCAT-SELTEXT_L = P_TEXT.
APPEND LS_FIELDCAT TO GD_FIELDCAT .
CLEAR LS_FIELDCAT .
ENDFORM. "frm_catlg_set
*---------------------------------------------------------------------*
* FORM user_command *
*---------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
READ TABLE IT_ITAB INDEX RS_SELFIELD-TABINDEX.
CASE R_UCOMM.
WHEN '&IC1'. "双击
IF RS_SELFIELD-FIELDNAME = 'VBELN'.
SET PARAMETER ID 'VL' FIELD IT_ITAB-VBELN .
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN .
ELSEIF RS_SELFIELD-FIELDNAME = 'VGBEL' AND P_LFART = 'ZLCC' .
CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
EXPORTING
I_EBELN = IT_ITAB-VGBEL
EXCEPTIONS
NOT_FOUND = 1
NO_AUTHORITY = 2
INVALID_CALL = 3
PREVIEW_NOT_POSSIBLE = 4
OTHERS = 5.
ELSEIF RS_SELFIELD-FIELDNAME = 'VGBEL' AND P_LFART <> 'ZLCC' .
SET PARAMETER ID 'AUN' FIELD IT_ITAB-VGBEL .
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN .
ENDIF.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDFORM. "user_com
*&-------------------------------------------------------------------
*& Module OUTPUT_TO_EXCEL OUTPUT
*&-------------------------------------------------------------------
MODULE OUTPUT_TO_EXCEL OUTPUT.
SET PF-STATUS '100'.
IF FLAG = SPACE .
PERFORM CREATE_BASIC_OBJECTS USING '' '' '' '' DOCUMENT_NAME.
PERFORM OUTPUT_TO_EXCEL.
ENDIF.
ENDMODULE. " OUTPUT_TO_EXCEL OUTPUT
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
MODULE EXIT INPUT.
FLAG = 'X'.
CASE OKCODE.
WHEN 'TESTMAC'.
CALL METHOD DOCUMENT->EXECUTE_MACRO
EXPORTING
MACRO_STRING = '模块1.TestMac'
IMPORTING
ERROR = ERRORS.
WHEN 'STOP' .
IF NOT DOCUMENT IS INITIAL.
CALL METHOD DOCUMENT->CLOSE_DOCUMENT.
FREE DOCUMENT.
ENDIF.
IF NOT CONTROL IS INITIAL.
CALL METHOD CONTROL->DESTROY_CONTROL.
FREE CONTROL.
ENDIF.
LEAVE PROGRAM.
WHEN 'BACK' .
IF NOT DOCUMENT IS INITIAL.
CALL METHOD DOCUMENT->CLOSE_DOCUMENT.
FREE DOCUMENT.
ENDIF.
IF NOT CONTROL IS INITIAL.
CALL METHOD CONTROL->DESTROY_CONTROL.
FREE CONTROL.
ENDIF.
" LEAVE TO SCREEN 1000.
SET SCREEN 0. " quit the program
"set screen 1000.
ENDCASE.
ENDMODULE. " EXIT INPUT
*---------------------------------------------------------------------*
* FORM create_basic_objects *
*---------------------------------------------------------------------*
FORM CREATE_BASIC_OBJECTS USING P_APP_NAME
P_CLASSNAME
P_CLASSTYPE
P_OBJ_KEY
P_DOCNAME.
CHECK INITIALIZED IS INITIAL.
* first get the SAP DOI i_oi_container_control interface
CALL METHOD
C_OI_CONTAINER_CONTROL_CREATOR=>GET_CONTAINER_CONTROL
IMPORTING
CONTROL = CONTROL
ERROR = ERROR.
* check no errors occured
CALL METHOD ERROR->RAISE_MESSAGE
EXPORTING
TYPE = 'E'.
CREATE OBJECT CONTAINER
EXPORTING CONTAINER_NAME = 'CONTAINER'.
DATA L_APP_NAME(200).
IF P_APP_NAME IS INITIAL.
L_APP_NAME = 'R/3 Reporter'.
ELSE.
L_APP_NAME = P_APP_NAME.
ENDIF.
CALL METHOD CONTROL->INIT_CONTROL
EXPORTING
R3_APPLICATION_NAME = L_APP_NAME
INPLACE_ENABLED = INPLACE
INPLACE_SCROLL_DOCUMENTS = 'X'
PARENT = CONTAINER
REGISTER_ON_CLOSE_EVENT = 'X'
REGISTER_ON_CUSTOM_EVENT = 'X'
NO_FLUSH = 'X'
IMPORTING
ERROR = ERRORS.
* save error object in collection
APPEND ERRORS.
CLEAR ITEM_URL.
DATA: BDS_INSTANCE TYPE REF TO CL_BDS_DOCUMENT_SET.
DATA: DOC_SIGNATURE TYPE SBDST_SIGNATURE,
WA_DOC_SIGNATURE LIKE LINE OF DOC_SIGNATURE,
DOC_COMPONENTS TYPE SBDST_COMPONENTS,
DOC_URIS TYPE SBDST_URI,
WA_DOC_URIS LIKE LINE OF DOC_URIS.
DATA: DOC_CLASSNAME TYPE SBDST_CLASSNAME VALUE 'ZEXCEL',
DOC_CLASSTYPE TYPE SBDST_CLASSTYPE VALUE 'OT',
DOC_OBJECT_KEY TYPE SBDST_OBJECT_KEY VALUE 'ZEXCEL'.
IF NOT ( P_CLASSNAME IS INITIAL OR P_CLASSTYPE IS INITIAL
OR P_OBJ_KEY IS INITIAL ).
DOC_CLASSNAME = P_CLASSNAME.
DOC_CLASSTYPE = P_CLASSTYPE.
DOC_OBJECT_KEY = P_OBJ_KEY.
ENDIF.
WA_DOC_SIGNATURE-PROP_NAME = 'DESCRIPTION'.
APP = 'excel'.
IF APP = 'excel'. " default value.
DOCUMENT_TYPE = EXCEL.
WA_DOC_SIGNATURE-PROP_VALUE = P_DOCNAME.
ELSE.
* document_type = lotus.
* wa_doc_signature-prop_value = 'SPREAD123'.
ENDIF.
APPEND WA_DOC_SIGNATURE TO DOC_SIGNATURE.
CREATE OBJECT BDS_INSTANCE.
CALL METHOD BDS_INSTANCE->GET_INFO
EXPORTING
CLASSNAME = DOC_CLASSNAME
CLASSTYPE = DOC_CLASSTYPE
OBJECT_KEY = DOC_OBJECT_KEY
CHANGING
COMPONENTS = DOC_COMPONENTS
SIGNATURE = DOC_SIGNATURE.
CALL METHOD BDS_INSTANCE->GET_WITH_URL
EXPORTING
CLASSNAME = DOC_CLASSNAME
CLASSTYPE = DOC_CLASSTYPE
OBJECT_KEY = DOC_OBJECT_KEY
CHANGING
URIS = DOC_URIS
SIGNATURE = DOC_SIGNATURE.
FREE BDS_INSTANCE.
READ TABLE DOC_URIS INTO WA_DOC_URIS INDEX 1.
ITEM_URL = WA_DOC_URIS-URI.
* ask the SAP DOI container for a i_oi_document_proxy for Excel
CALL METHOD CONTROL->GET_DOCUMENT_PROXY
EXPORTING
DOCUMENT_TYPE = 'Excel.Sheet'
NO_FLUSH = 'X'
IMPORTING
DOCUMENT_PROXY = DOCUMENT
ERROR = ERRORS.
APPEND ERRORS.
* open a document saved in business document service.
CALL METHOD DOCUMENT->OPEN_DOCUMENT
EXPORTING
OPEN_INPLACE = INPLACE
DOCUMENT_URL = ITEM_URL.
DATA: HAS TYPE I.
CALL METHOD DOCUMENT->HAS_SPREADSHEET_INTERFACE
EXPORTING
NO_FLUSH = ''
IMPORTING
IS_AVAILABLE = HAS
ERROR = ERRORS.
APPEND ERRORS.
CALL METHOD DOCUMENT->GET_SPREADSHEET_INTERFACE
EXPORTING
NO_FLUSH = ' '
IMPORTING
SHEET_INTERFACE = SPREADSHEET
ERROR = ERRORS.
APPEND ERRORS.
* Activate sheet 1
CALL METHOD SPREADSHEET->SELECT_SHEET
EXPORTING
NAME = G_DEF_ACTIVE_SHEETNAME
NO_FLUSH = ''
IMPORTING
ERROR = ERRORS.
APPEND ERRORS.
LOOP AT ERRORS.
CALL METHOD ERRORS->RAISE_MESSAGE
EXPORTING
TYPE = 'E'.
ENDLOOP.
FREE ERRORS.
INITIALIZED = 'X'.
ENDFORM. " CREATE_BASIC_OBJECTS
*---------------------------------------------------------------------*
* FORM output_to_excel *
*---------------------------------------------------------------------*
FORM OUTPUT_TO_EXCEL.
DATA: TMPDATE(10) TYPE C.
COLUMN_COUNT = 2.
IT_CHART-NAME1 = 'Test1'.
IT_CHART-SMTZ = 20.
APPEND IT_CHART.
IT_CHART-NAME1 = 'Test2'.
IT_CHART-SMTZ = 30.
APPEND IT_CHART.
IT_CHART-NAME1 = 'Test3'.
IT_CHART-SMTZ = 40.
APPEND IT_CHART.
LOOP AT IT_CHART.
LINE_COUNT = 2.
PERFORM FILL_CELL USING LINE_COUNT
COLUMN_COUNT
IT_CHART-NAME1.
LINE_COUNT = LINE_COUNT + 1.
PERFORM FILL_CELL USING LINE_COUNT
COLUMN_COUNT
IT_CHART-SMTZ.
COLUMN_COUNT = COLUMN_COUNT + 1.
ENDLOOP.
ENDFORM. "output_to_excel
*---------------------------------------------------------------------*
* FORM fill_cell *
*---------------------------------------------------------------------*
FORM FILL_CELL USING I J VAL.
DATA: COLUMNS_NUMBER TYPE I,
ROWS_NUMBER TYPE I.
COLUMNS_NUMBER = 1.
ROWS_NUMBER = 1.
CALL METHOD SPREADSHEET->INSERT_RANGE_DIM
EXPORTING
NAME = 'cell'
NO_FLUSH = 'X'
TOP = I
LEFT = J
ROWS = ROWS_NUMBER
COLUMNS = COLUMNS_NUMBER
IMPORTING
ERROR = ERRORS.
APPEND ERRORS.
REFRESH: RANGES, EXCEL_INPUT.
RANGEITEM-NAME = 'cell'.
RANGEITEM-COLUMNS = 1.
RANGEITEM-ROWS = 1.
APPEND RANGEITEM TO RANGES.
EXCEL_INPUT_WA-COLUMN = 1.
EXCEL_INPUT_WA-ROW = 1.
EXCEL_INPUT_WA-VALUE = VAL.
APPEND EXCEL_INPUT_WA TO EXCEL_INPUT.
* set data
CALL METHOD SPREADSHEET->SET_RANGES_DATA
EXPORTING
RANGES = RANGES
CONTENTS = EXCEL_INPUT
NO_FLUSH = 'X'
IMPORTING
ERROR = ERRORS.
APPEND ERRORS.
CALL METHOD SPREADSHEET->FIT_WIDEST
EXPORTING
NAME = SPACE
NO_FLUSH = 'X'.
REFRESH: RANGES, EXCEL_INPUT.
ENDFORM. "fill_cell