REPORT Z_TEST_MM01 . TABLES SPFLI. DATA:MYLINE(1) TYPE C, NUMBER TYPE I.
START-OF-SELECTION. SKIP. ULINE AT /(95). WRITE:/ SY-VLINE,' ',SY-VLINE,(15) 'A1',sy-vline,(15)'A2', sy-vline,(15) 'A3',SY-VLINE,(15)'A4',sy-vline,(15)'A5',sy-vline. ULINE AT /(95).
*输出内容 SELECT * FROM SPFLI. WRITE:/ SY-VLINE,MYLINE AS CHECKBOX,SY-VLINE,(15)SPFLI-CARRID,SY-VLINE,(15)SPFLI-CONNID,SY-VLINE,(15)SPFLI-COUNTRYTO,SY-VLINE,(15)SPFLI-CITYFROM,SY-VLINE,(15)SPFLI-AIRPFROM,SY-VLINE. *隐藏keyword HIDE: SPFLI-CARRID,SPFLI-CONNID,SPFLI-COUNTRYTO,SPFLI-CITYFROM,SPFLI-AIRPFROM. ULINE AT /(95). *隐藏选择框 HIDE:MYLINE. ENDSELECT. *获得行数 END-OF-SELECTION. NUMBER = SY-LINNO - 1. AT LINE-SELECTION. *只输出第一页 IF sy-lsind = 1. DO NUMBER TIMES. READ LINE SY-INDEX FIELD VALUE MYLINE. *如果是checked, 输出 IF myline = 'X'. WRITE:/ SPFLI-CARRID,SPFLI-CONNID,SPFLI-COUNTRYTO,SPFLI-CITYFROM,SPFLI-AIRPFROM. ENDIF. ENDDO. ENDIF.
WHEN 'READWR' *当单击按钮时,第一列为只读,其他列读写切换 LOOP AT TBL1-CONLS INTO ACOL WHERE INDEX GT 0. IF SY-TABIX = 1. ACOL-SCREEN-INPUT = '0'. ELSE. IF ACOL-SCREEN-INPUT = '0'. ACOL-SCREEN-INPUT = '1'. ELSEIF ACOL-SCREEN-INPUT = '1'. ACOL-SCREEN-INPUT = '0'. ENDIF. MODIFY TBL1-COLS FROM ACOL INDEX SY-TABIX. ENDLOOP.
DATA: BEGIN OF itab OCCURS 0, matnr LIKE mara-matnr, ernam LIKE mara-ernam, ersda LIKE mara-ersda, labor LIKE mara-labor, END OF itab.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv, xevents TYPE slis_t_event, ls_event TYPE slis_alv_event, slis_ev_top TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: v_repid LIKE sy-repid.
START-OF-SELECTION.
v_repid = sy-repid.
SELECT matnr ernam ersda labor INTO TABLE itab FROM mara WHERE matnr IN s_matnr.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING i_list_type = 0 IMPORTING et_events = xevents EXCEPTIONS list_type_wrong = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
READ TABLE xevents WITH KEY name = slis_ev_top INTO ls_event. IF sy-subrc = 0. MOVE slis_ev_top TO ls_event-form. APPEND ls_event TO xevents. ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = v_repid i_internal_tabname = 'ITAB' * I_STRUCTURE_NAME = * I_CLIENT_NEVER_DISPLAY = 'X' i_inclname = v_repid i_bypassing_buffer = 'X' i_buffer_active = ' ' CHANGING ct_fieldcat = i_fieldcat EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
*&--------------------------------------------------------------------* *& Form top_of_page *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM TOP_OF_PAGE.
WRITE:/ 'Top of page event triggered’. WRITE:/ ‘This report gives the material details'.
DATA: BEGIN OF headertab OCCURS 0, ebeln LIKE ekko-ebeln, bstyp LIKE ekko-bstyp, bsart LIKE ekko-bsart, statu LIKE ekko-statu, END OF headertab.
DATA: BEGIN OF itemtab OCCURS 0, ebeln LIKE ekpo-ebeln, ebelp LIKE ekpo-ebelp, matnr LIKE ekpo-matnr, werks LIKE ekpo-werks, menge LIKE ekpo-menge, netpr LIKE ekpo-netpr, peinh LIKE ekpo-peinh, netwr LIKE ekpo-netwr, END OF itemtab.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv. DATA: v_repid LIKE sy-repid. DATA: g_tabname_header TYPE slis_tabname, g_tabname_item TYPE slis_tabname, gs_keyinfo TYPE slis_keyinfo_alv.
START-OF-SELECTION.
v_repid = sy-repid.
SELECT ebeln bstyp bsart statu INTO TABLE headertab FROM ekko WHERE ebeln IN s_ebeln.
IF NOT headertab[] IS INITIAL. SELECT ebeln ebelp matnr werks menge netpr peinh netwr INTO TABLE itemtab FROM ekpo FOR ALL ENTRIES IN headertab WHERE ebeln = headertab-ebeln. ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = v_repid i_internal_tabname = 'HEADERTAB' * I_STRUCTURE_NAME = * I_CLIENT_NEVER_DISPLAY = 'X' i_inclname = v_repid i_bypassing_buffer = 'X' i_buffer_active = ' ' CHANGING ct_fieldcat = i_fieldcat EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3 . IF sy-subrc <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = v_repid i_internal_tabname = 'ITEMTAB' * I_STRUCTURE_NAME = * I_CLIENT_NEVER_DISPLAY = 'X' i_inclname = v_repid i_bypassing_buffer = 'X' i_buffer_active = ' ' CHANGING ct_fieldcat = i_fieldcat EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3 . IF sy-subrc <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
DATA: BEGIN OF headertab OCCURS 0, ebeln LIKE ekko-ebeln, bstyp LIKE ekko-bstyp, bsart LIKE ekko-bsart, statu LIKE ekko-statu, END OF headertab.
DATA: BEGIN OF itemtab OCCURS 0, ebeln LIKE ekpo-ebeln, ebelp LIKE ekpo-ebelp, matnr LIKE ekpo-matnr, werks LIKE ekpo-werks, menge LIKE ekpo-menge, netpr LIKE ekpo-netpr, peinh LIKE ekpo-peinh, netwr LIKE ekpo-netwr, END OF itemtab.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv, i_fieldcat1 TYPE slis_t_fieldcat_alv.
DATA: v_repid LIKE sy-repid, v_layout TYPE slis_layout_alv, v_events TYPE slis_t_event, v_print TYPE slis_print_alv.
START-OF-SELECTION.
v_repid = sy-repid.
SELECT ebeln bstyp bsart statu INTO TABLE headertab FROM ekko WHERE ebeln IN s_ebeln. IF NOT headertab[] IS INITIAL. SELECT ebeln ebelp matnr werks menge netpr peinh netwr INTO TABLE itemtab FROM ekpo FOR ALL ENTRIES IN headertab WHERE ebeln = headertab-ebeln. ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = v_repid i_internal_tabname = 'HEADERTAB' * I_STRUCTURE_NAME = * I_CLIENT_NEVER_DISPLAY = 'X' i_inclname = v_repid i_bypassing_buffer = 'X' i_buffer_active = ' ' CHANGING ct_fieldcat = i_fieldcat EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3 . IF sy-subrc <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = v_repid i_internal_tabname = 'ITEMTAB' * I_STRUCTURE_NAME = * I_CLIENT_NEVER_DISPLAY = 'X' i_inclname = v_repid i_bypassing_buffer = 'X' i_buffer_active = ' ' CHANGING ct_fieldcat = i_fieldcat1 EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3 . IF sy-subrc <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
DATA: BEGIN OF headertab OCCURS 0, ebeln LIKE ekko-ebeln, bstyp LIKE ekko-bstyp, bsart LIKE ekko-bsart, statu LIKE ekko-statu, END OF headertab.
DATA: BEGIN OF itemtab OCCURS 0, ebeln LIKE ekpo-ebeln, ebelp LIKE ekpo-ebelp, matnr LIKE ekpo-matnr, werks LIKE ekpo-werks, menge LIKE ekpo-menge, netpr LIKE ekpo-netpr, peinh LIKE ekpo-peinh, netwr LIKE ekpo-netwr, END OF itemtab.
DATA: BEGIN OF level2 OCCURS 0, ebeln LIKE ekpo-ebeln, ebelp LIKE ekpo-ebelp, matnr LIKE ekpo-matnr, werks LIKE ekpo-werks, menge LIKE ekpo-menge, netpr LIKE ekpo-netpr, peinh LIKE ekpo-peinh, netwr LIKE ekpo-netwr, END OF level2.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv, i_fieldcat1 TYPE slis_t_fieldcat_alv.
DATA: v_repid LIKE sy-repid, v_layout TYPE slis_layout_alv, v_events TYPE slis_t_event, v_print TYPE slis_print_alv, l_fieldcat TYPE slis_fieldcat_alv.
START-OF-SELECTION.
v_repid = sy-repid.
SELECT ebeln bstyp bsart statu INTO TABLE headertab FROM ekko WHERE ebeln IN s_ebeln.
IF NOT headertab[] IS INITIAL. SELECT ebeln ebelp matnr werks menge netpr peinh netwr INTO TABLE itemtab FROM ekpo FOR ALL ENTRIES IN headertab WHERE ebeln = headertab-ebeln. ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = v_repid i_internal_tabname = 'HEADERTAB' * I_STRUCTURE_NAME = * I_CLIENT_NEVER_DISPLAY = 'X' i_inclname = v_repid i_bypassing_buffer = 'X' i_buffer_active = ' ' CHANGING ct_fieldcat = i_fieldcat EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
LOOP AT i_fieldcat INTO l_fieldcat. CASE l_fieldcat-fieldname. WHEN 'EBELN'. l_fieldcat-hotspot = 'X'. MODIFY i_fieldcat FROM l_fieldcat. ENDCASE. ENDLOOP.
*&--------------------------------------------------------------------* *& Form USER_COMMAND *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->R_UCOMM text * -->RS_SELFIELDtext *---------------------------------------------------------------------* FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
IF rs_selfield-fieldname EQ 'EBELN'.
CASE r_ucomm.
WHEN '&IC1'.
READ TABLE headertab INDEX rs_selfield-tabindex. REFRESH level2. CLEAR level2.
LOOP AT itemtab WHERE ebeln = headertab-ebeln. APPEND itemtab TO level2. ENDLOOP.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = v_repid i_internal_tabname = 'LEVEL2' * I_STRUCTURE_NAME = * I_CLIENT_NEVER_DISPLAY = 'X' i_inclname = v_repid i_bypassing_buffer = 'X' i_buffer_active = ' ' CHANGING ct_fieldcat = i_fieldcat1 EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
REPORT Z_ABAPDEMOprojload NO STANDARD PAGE HEADING LINE-SIZE 255.
* *INCLUDE Z_ABAPDEMOprojload_top. *&---------------------------------------------------------------------* *& Include Z_ABAPDEMOPROJLOAD_TOP * *&---------------------------------------------------------------------*
TABLES Z_ABAPDEMOproj.
DATA : BEGIN OF i_proj OCCURS 0, project LIKE Z_ABAPDEMOproj-project, proj_desc LIKE Z_ABAPDEMOproj-proj_desc, stdat(10) TYPE c, enddat(10) TYPE c, customer LIKE Z_ABAPDEMOproj-customer, location LIKE Z_ABAPDEMOproj-location, END OF i_proj.
DATA i_bdctab LIKE bdcdata OCCURS 0 WITH HEADER LINE. DATA messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
*INCLUDE Z_ABAPDEMOprojload_form. *&---------------------------------------------------------------------* *& Include Z_ABAPDEMOPROJLOAD_FORM * *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form insert *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM insert . *这里面的代码不是手动输入的,是通过一个录屏程序生成的,录屏程序的TR-CODE是SM35,在此你还需要 *指定一个transaction。 * perform open_group. LOOP AT i_proj. CLEAR i_bdctab[].
PERFORM bdc_dynpro USING 'Z_ABAPDEMO_D9_DIALOG' '0100'. PERFORM bdc_field USING 'BDC_CURSOR' 'Z_ABAPDEMOPROJ-PROJECT'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-PROJECT' i_proj-project. PERFORM bdc_dynpro USING 'Z_ABAPDEMO_D9_DIALOG' '0200'. PERFORM bdc_field USING 'BDC_CURSOR' 'Z_ABAPDEMOPROJ-LOCATION'. PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'. PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-PROJ_DESC' i_proj-proj_desc. PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-STDAT' i_proj-stdat. PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-ENDDAT' i_proj-enddat. PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-CUSTOMER' i_proj-customer. PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-LOCATION' i_proj-location. PERFORM bdc_dynpro USING 'SAPLSPO1' '0500'. PERFORM bdc_field USING 'BDC_OKCODE' '=OPT1'. PERFORM bdc_dynpro USING 'Z_ABAPDEMO_D9_DIALOG' '0200'. PERFORM bdc_field USING 'BDC_OKCODE' '/EEXIT'. PERFORM bdc_field USING 'BDC_CURSOR' 'LPROJID'. PERFORM transaction USING 'Z_ABAPDEMOPROJ1'.
ENDLOOP. * perform close_group.
ENDFORM. " insert *&---------------------------------------------------------------------* *& Form process *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM process .
ENDFORM. " upload *&--------------------------------------------------------------------* *& Form BDC_DYNPRO *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->PROGRAM text * -->DYNPRO text *---------------------------------------------------------------------* FORM bdc_dynpro USING program dynpro. *该子程序也是由录屏程序生成的 CLEAR i_bdctab. i_bdctab-program = program. i_bdctab-dynpro = dynpro. i_bdctab-dynbegin = 'X'. APPEND i_bdctab. ENDFORM. "BDC_DYNPRO
*&--------------------------------------------------------------------* *& Form bdc_field *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->FNAM text * -->FVAL text *---------------------------------------------------------------------* FORM bdc_field USING fnam fval. *该子程序同样由录屏程序生成 CLEAR i_bdctab. i_bdctab-fnam = fnam. i_bdctab-fval = fval. APPEND i_bdctab. ENDFORM. "DBC_FIELD *&--------------------------------------------------------------------* *& Form transaction *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->FNAM text * -->FVAL text *---------------------------------------------------------------------* FORM transaction USING tcode. *这就是调用事务类型的体现,需要主意的就是模式MODE和UPDATE。AS的组合就是显示所有log *同步更新 REFRESH messtab. CALL TRANSACTION tcode USING i_bdctab MODE 'A' UPDATE 'S' MESSAGES INTO messtab.
ENDFORM. "TRANSACTION
*Main program START-OF-SELECTION.
*upload the data from text file to internal table PERFORM upload. *process the data type. mainly used to convert date type PERFORM process. *insert the data from internal table to database table PERFORM insert.
SAP ABAP 写入EXCEL数据格式处理代码示例 REPORT ZZXLTEST001 NO STANDARD PAGE HEADING. * this report demonstrates how to send some ABAP data to an * EXCEL sheet using OLE automation. INCLUDE OLE2INCL. * handles for OLE objects DATA: H_EXCEL TYPE OLE2_OBJECT, " Excel object H_MAPL TYPE OLE2_OBJECT, " list of workbooks H_MAP TYPE OLE2_OBJECT, " workbook H_ZL TYPE OLE2_OBJECT, " cell H_F TYPE OLE2_OBJECT. " font TABLES: SPFLI. DATA H TYPE I. * table of flights DATA: IT_SPFLI LIKE SPFLI OCCURS 10 WITH HEADER LINE.
*&---------------------------------------------------------------------* *& Event START-OF-SELECTION *&---------------------------------------------------------------------* START-OF-SELECTION. * read flights SELECT * FROM SPFLI INTO TABLE IT_SPFLI UP TO 10 ROWS. * display header ULINE (61). WRITE: / SY-VLINE NO-GAP, (3) 'Flg'(001) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, (4) 'Nr'(002) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, (20) 'Von'(003) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, (20) 'Nach'(004) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, (8) 'Zeit'(005) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP. ULINE /(61). * display flights LOOP AT IT_SPFLI. WRITE: / SY-VLINE NO-GAP, IT_SPFLI-CARRID COLOR COL_KEY NO-GAP, SY-VLINE NO-GAP, IT_SPFLI-CONNID COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP, IT_SPFLI-CITYFROM COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP, IT_SPFLI-CITYTO COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP, IT_SPFLI-DEPTIME COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP. ENDLOOP. ULINE /(61). * tell user what is going on CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING * PERCENTAGE = 0 TEXT = TEXT-007 EXCEPTIONS OTHERS = 1. * start Excel CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'. * PERFORM ERR_HDL. SET PROPERTY OF H_EXCEL 'Visible' = 1. * CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'c:\kis_excel.xls' . * PERFORM ERR_HDL. * tell user what is going on CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING * PERCENTAGE = 0 TEXT = TEXT-008 EXCEPTIONS OTHERS = 1. * get list of workbooks, initially empty CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL. PERFORM ERR_HDL. * add a new workbook CALL METHOD OF H_MAPL 'Add' = H_MAP. PERFORM ERR_HDL. * tell user what is going on CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING * PERCENTAGE = 0 TEXT = TEXT-009 EXCEPTIONS OTHERS = 1. * output column headings to active Excel sheet PERFORM FILL_CELL USING 1 1 1 'Flug'(001). PERFORM FILL_CELL USING 1 2 1 'Nr'(002). PERFORM FILL_CELL USING 1 3 1 'Von'(003). PERFORM FILL_CELL USING 1 4 1 'Nach'(004). PERFORM FILL_CELL USING 1 5 1 'Zeit'(005). LOOP AT IT_SPFLI. * copy flights to active EXCEL sheet H = SY-TABIX + 1. PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID. PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID. PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM. PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO. PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME. ENDLOOP. * changes by Kishore - start * CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL. CALL METHOD OF H_EXCEL 'Worksheets' = H_MAPL." EXPORTING #1 = 2. PERFORM ERR_HDL. * add a new workbook CALL METHOD OF H_MAPL 'Add' = H_MAP EXPORTING #1 = 2. PERFORM ERR_HDL. * tell user what is going on SET PROPERTY OF H_MAP 'NAME' = 'COPY'. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING * PERCENTAGE = 0 TEXT = TEXT-009 EXCEPTIONS OTHERS = 1. * output column headings to active Excel sheet PERFORM FILL_CELL USING 1 1 1 'Flug'(001). PERFORM FILL_CELL USING 1 2 1 'Nr'(002). PERFORM FILL_CELL USING 1 3 1 'Von'(003). PERFORM FILL_CELL USING 1 4 1 'Nach'(004). PERFORM FILL_CELL USING 1 5 1 'Zeit'(005). LOOP AT IT_SPFLI. * copy flights to active EXCEL sheet H = SY-TABIX + 1. PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID. PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID. PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM. PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO. PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME. ENDLOOP. * changes by Kishore - end * disconnect from Excel * CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'C:\SKV.XLS'.
FREE OBJECT H_EXCEL. PERFORM ERR_HDL. *---------------------------------------------------------------------* * FORM FILL_CELL * *---------------------------------------------------------------------* * sets cell at coordinates i,j to value val boldtype bold * *---------------------------------------------------------------------* FORM FILL_CELL USING I J BOLD VAL. CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J. PERFORM ERR_HDL. SET PROPERTY OF H_ZL 'Value' = VAL . PERFORM ERR_HDL. GET PROPERTY OF H_ZL 'Font' = H_F. PERFORM ERR_HDL. SET PROPERTY OF H_F 'Bold' = BOLD . PERFORM ERR_HDL. ENDFORM. *&---------------------------------------------------------------------* *& Form ERR_HDL *&---------------------------------------------------------------------* * outputs OLE error if any * *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM ERR_HDL. IF SY-SUBRC <> 0. WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC. STOP. ENDIF. ENDFORM. " ERR_HDL
SAP ABAP 写入EXCEL数据格式处理代码示例 REPORT ZZXLTEST001 NO STANDARD PAGE HEADING. * this report demonstrates how to send some ABAP data to an * EXCEL sheet using OLE automation. INCLUDE OLE2INCL. * handles for OLE objects DATA: H_EXCEL TYPE OLE2_OBJECT, " Excel object H_MAPL TYPE OLE2_OBJECT, " list of workbooks H_MAP TYPE OLE2_OBJECT, " workbook H_ZL TYPE OLE2_OBJECT, " cell H_F TYPE OLE2_OBJECT. " font TABLES: SPFLI. DATA H TYPE I. * table of flights DATA: IT_SPFLI LIKE SPFLI OCCURS 10 WITH HEADER LINE.
*&---------------------------------------------------------------------* *& Event START-OF-SELECTION *&---------------------------------------------------------------------* START-OF-SELECTION. * read flights SELECT * FROM SPFLI INTO TABLE IT_SPFLI UP TO 10 ROWS. * display header ULINE (61). WRITE: / SY-VLINE NO-GAP, (3) 'Flg'(001) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, (4) 'Nr'(002) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, (20) 'Von'(003) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, (20) 'Nach'(004) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP, (8) 'Zeit'(005) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP. ULINE /(61). * display flights LOOP AT IT_SPFLI. WRITE: / SY-VLINE NO-GAP, IT_SPFLI-CARRID COLOR COL_KEY NO-GAP, SY-VLINE NO-GAP, IT_SPFLI-CONNID COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP, IT_SPFLI-CITYFROM COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP, IT_SPFLI-CITYTO COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP, IT_SPFLI-DEPTIME COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP. ENDLOOP. ULINE /(61). * tell user what is going on CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING * PERCENTAGE = 0 TEXT = TEXT-007 EXCEPTIONS OTHERS = 1. * start Excel CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'. * PERFORM ERR_HDL. SET PROPERTY OF H_EXCEL 'Visible' = 1. * CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'c:\kis_excel.xls' . * PERFORM ERR_HDL. * tell user what is going on CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING * PERCENTAGE = 0 TEXT = TEXT-008 EXCEPTIONS OTHERS = 1. * get list of workbooks, initially empty CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL. PERFORM ERR_HDL. * add a new workbook CALL METHOD OF H_MAPL 'Add' = H_MAP. PERFORM ERR_HDL. * tell user what is going on CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING * PERCENTAGE = 0 TEXT = TEXT-009 EXCEPTIONS OTHERS = 1. * output column headings to active Excel sheet PERFORM FILL_CELL USING 1 1 1 'Flug'(001). PERFORM FILL_CELL USING 1 2 1 'Nr'(002). PERFORM FILL_CELL USING 1 3 1 'Von'(003). PERFORM FILL_CELL USING 1 4 1 'Nach'(004). PERFORM FILL_CELL USING 1 5 1 'Zeit'(005). LOOP AT IT_SPFLI. * copy flights to active EXCEL sheet H = SY-TABIX + 1. PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID. PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID. PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM. PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO. PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME. ENDLOOP. * changes by Kishore - start * CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL. CALL METHOD OF H_EXCEL 'Worksheets' = H_MAPL." EXPORTING #1 = 2. PERFORM ERR_HDL. * add a new workbook CALL METHOD OF H_MAPL 'Add' = H_MAP EXPORTING #1 = 2. PERFORM ERR_HDL. * tell user what is going on SET PROPERTY OF H_MAP 'NAME' = 'COPY'. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING * PERCENTAGE = 0 TEXT = TEXT-009 EXCEPTIONS OTHERS = 1. * output column headings to active Excel sheet PERFORM FILL_CELL USING 1 1 1 'Flug'(001). PERFORM FILL_CELL USING 1 2 1 'Nr'(002). PERFORM FILL_CELL USING 1 3 1 'Von'(003). PERFORM FILL_CELL USING 1 4 1 'Nach'(004). PERFORM FILL_CELL USING 1 5 1 'Zeit'(005). LOOP AT IT_SPFLI. * copy flights to active EXCEL sheet H = SY-TABIX + 1. PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID. PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID. PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM. PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO. PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME. ENDLOOP. * changes by Kishore - end * disconnect from Excel * CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'C:\SKV.XLS'.
FREE OBJECT H_EXCEL. PERFORM ERR_HDL. *---------------------------------------------------------------------* * FORM FILL_CELL * *---------------------------------------------------------------------* * sets cell at coordinates i,j to value val boldtype bold * *---------------------------------------------------------------------* FORM FILL_CELL USING I J BOLD VAL. CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J. PERFORM ERR_HDL. SET PROPERTY OF H_ZL 'Value' = VAL . PERFORM ERR_HDL. GET PROPERTY OF H_ZL 'Font' = H_F. PERFORM ERR_HDL. SET PROPERTY OF H_F 'Bold' = BOLD . PERFORM ERR_HDL. ENDFORM. *&---------------------------------------------------------------------* *& Form ERR_HDL *&---------------------------------------------------------------------* * outputs OLE error if any * *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM ERR_HDL. IF SY-SUBRC <> 0. WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC. STOP. ENDIF. ENDFORM. " ERR_HDL
评论
REPORT Z_TEST_MM01 .
TABLES SPFLI.
SKIP.
ULINE AT /(91).
WRITE:/ SY-VLINE,(15) 'FIELD1',SY-VLINE,(15)'FIELD2',SY-VLINE,(15)'FIELD3',SY-VLINE.
ULINE AT /(91).
SELECT * FROM SPFLI.
WRITE :/ SY-VLINE,(15)SPFLI-CARRID,SY-VLINE,(15)SPFLI-CONNID,SY-VLINE,(15)SPFLI-CITYFROM,SY-VLINE.
ULINE AT /(91).
ENDSELECT.
常用的系统变量如下:
1.sy-pagno当前页号
2.SY-DATUM当前时间
3.SY-LINSZ当前报表宽度
4.SY-LINCT当前报表长度
5.SPACE空字符
6.SY-SUBRC执行状态为0,表示成功.
7.SY-UNAME 用户名
8.SY-UZEIT当前时间
9.SY-TCODE当前的事务代码
10.SY-LSIND列表索引页
11.SY-LISTI上一个列表的索引
12.SY-LILLI绝对列表中选定行的行号
13.SY-CUROW屏幕上的行
14.SY-CUCOL光标列
15.SY-CPAGE列表的当前显示页
16.SY-STARO真实行号
17.SY-LISEL选择行的内容,长度为255
18.SY-LINNO当前行
发布者 人间烟火
2007-7-17 10:15:01
FORMAT COLOR
COLOR参数:
1.COL_BACKGROUND 取决于GUI
2.COL_HEADING灰蓝
3.COL_NORMAL淡灰
4.COL_TOTAL黄
5.COL_KEY蓝绿
6.COL_POSITIVE绿
7.COL_NEGATIVE红
8.COL_GROUP紫
INTENSIFIED参数:背景颜色
INVERSE参数:是否影响前景颜色.
发布者 人间烟火
2007-7-17 10:48:27
TABLES SPFLI.
DATA:MYLINE(1) TYPE C,
NUMBER TYPE I.
START-OF-SELECTION.
SKIP.
ULINE AT /(95).
WRITE:/ SY-VLINE,' ',SY-VLINE,(15) 'A1',sy-vline,(15)'A2',
sy-vline,(15) 'A3',SY-VLINE,(15)'A4',sy-vline,(15)'A5',sy-vline.
ULINE AT /(95).
*输出内容
SELECT * FROM SPFLI.
WRITE:/ SY-VLINE,MYLINE AS CHECKBOX,SY-VLINE,(15)SPFLI-CARRID,SY-VLINE,(15)SPFLI-CONNID,SY-VLINE,(15)SPFLI-COUNTRYTO,SY-VLINE,(15)SPFLI-CITYFROM,SY-VLINE,(15)SPFLI-AIRPFROM,SY-VLINE.
*隐藏keyword
HIDE: SPFLI-CARRID,SPFLI-CONNID,SPFLI-COUNTRYTO,SPFLI-CITYFROM,SPFLI-AIRPFROM.
ULINE AT /(95).
*隐藏选择框
HIDE:MYLINE.
ENDSELECT.
*获得行数
END-OF-SELECTION.
NUMBER = SY-LINNO - 1.
AT LINE-SELECTION.
*只输出第一页
IF sy-lsind = 1.
DO NUMBER TIMES.
READ LINE SY-INDEX FIELD VALUE MYLINE.
*如果是checked, 输出
IF myline = 'X'.
WRITE:/ SPFLI-CARRID,SPFLI-CONNID,SPFLI-COUNTRYTO,SPFLI-CITYFROM,SPFLI-AIRPFROM.
ENDIF.
ENDDO.
ENDIF.
发布者 人间烟火
2007-7-17 11:05:59
*当单击按钮时,第一列为只读,其他列读写切换
LOOP AT TBL1-CONLS INTO ACOL WHERE INDEX GT 0.
IF SY-TABIX = 1.
ACOL-SCREEN-INPUT = '0'.
ELSE.
IF ACOL-SCREEN-INPUT = '0'.
ACOL-SCREEN-INPUT = '1'.
ELSEIF ACOL-SCREEN-INPUT = '1'.
ACOL-SCREEN-INPUT = '0'.
ENDIF.
MODIFY TBL1-COLS FROM ACOL INDEX SY-TABIX.
ENDLOOP.
发布者 匿名用户
2007-7-18 15:18:53
REPORT Z_TEST_MM03 .
DATA:BEGIN OF IEXCEL OCCURS 0.
INCLUDE STRUCTURE ALSMEX_TABLINE.
DATA:END OF IEXCEL.
PARAMETERS:FN1 LIKE RLGRAP-FILENAME MEMORY ID M01.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = FN1
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 100
I_END_ROW = 1000
TABLES
INTERN = IEXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
WRITE:/ 'READ FLLE ERROR',FN1.
ELSE.
LOOP AT IEXCEL.
WRITE IEXCEL-VALUE(20).
AT END OF ROW.
WRITE: /.
ENDAT.
ENDLOOP.
ENDIF.
发布者 人间烟火
2007-7-24 16:20:17
SELECT-OPTIONS: s_matnr FOR mara-matnr.
TYPE-POOLS: slis.
DATA: BEGIN OF itab OCCURS 0,
matnr LIKE mara-matnr,
ernam LIKE mara-ernam,
ersda LIKE mara-ersda,
labor LIKE mara-labor,
END OF itab.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv,
xevents TYPE slis_t_event,
ls_event TYPE slis_alv_event,
slis_ev_top TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: v_repid LIKE sy-repid.
START-OF-SELECTION.
v_repid = sy-repid.
SELECT matnr ernam ersda labor
INTO TABLE itab
FROM mara
WHERE matnr IN s_matnr.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = xevents
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE xevents WITH KEY name = slis_ev_top
INTO ls_event.
IF sy-subrc = 0.
MOVE slis_ev_top TO ls_event-form.
APPEND ls_event TO xevents.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'ITAB'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = ' '
CHANGING
ct_fieldcat = i_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
i_bypassing_buffer = 'X'
i_buffer_active = ' '
i_callback_program = v_repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_STRUCTURE_NAME =
* IS_LAYOUT =
it_fieldcat = i_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
* IS_VARIANT =
IT_EVENTS = xevents
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*&--------------------------------------------------------------------*
*& Form top_of_page
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
WRITE:/ 'Top of page event triggered’.
WRITE:/ ‘This report gives the material details'.
ENDFORM. "top_of_page
发布者 人间烟火
2007-7-25 14:50:18
DATA: v_st_variant LIKE disvariant,
v_stx_variant LIKE disvariant,
v_exit.
CONSTANTS: c_save(1) VALUE ‘A’.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
v_st_variant-report = sy_repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = v_st_variant
i_save = c_save
* it_default_fieldcat =
IMPORTING
e_exit = v_exit
es_variant = v_stx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF v_exit = space.
p_vari = v_stx_variant-variant.
ENDIF.
ENDIF.
发布者 人间烟火
2007-7-25 14:50:59
ekpo.
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.
TYPE-POOLS: slis.
DATA: BEGIN OF headertab OCCURS 0,
ebeln LIKE ekko-ebeln,
bstyp LIKE ekko-bstyp,
bsart LIKE ekko-bsart,
statu LIKE ekko-statu,
END OF headertab.
DATA: BEGIN OF itemtab OCCURS 0,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
werks LIKE ekpo-werks,
menge LIKE ekpo-menge,
netpr LIKE ekpo-netpr,
peinh LIKE ekpo-peinh,
netwr LIKE ekpo-netwr,
END OF itemtab.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv.
DATA: v_repid LIKE sy-repid.
DATA: g_tabname_header TYPE slis_tabname,
g_tabname_item TYPE slis_tabname,
gs_keyinfo TYPE slis_keyinfo_alv.
START-OF-SELECTION.
v_repid = sy-repid.
SELECT ebeln bstyp bsart statu
INTO TABLE headertab
FROM ekko
WHERE ebeln IN s_ebeln.
IF NOT headertab[] IS INITIAL.
SELECT ebeln ebelp matnr werks menge netpr peinh netwr
INTO TABLE itemtab
FROM ekpo
FOR ALL ENTRIES IN headertab
WHERE ebeln = headertab-ebeln.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'HEADERTAB'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = ' '
CHANGING
ct_fieldcat = i_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'ITEMTAB'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = ' '
CHANGING
ct_fieldcat = i_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
gs_keyinfo-header01 = 'EBELN'.
gs_keyinfo-item01 = 'EBELN'.
g_tabname_header = 'HEADERTAB'.
g_tabname_item = 'ITEMTAB'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = v_repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* IS_LAYOUT =
IT_FIELDCAT = i_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_DEFAULT = 'X'
I_SAVE = 'A'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
i_tabname_header = g_tabname_header
i_tabname_item = g_tabname_item
* I_STRUCTURE_NAME_HEADER =
* I_STRUCTURE_NAME_ITEM =
is_keyinfo = gs_keyinfo
* IS_PRINT =
* IS_REPREP_ID =
I_BYPASSING_BUFFER = 'X'
I_BUFFER_ACTIVE = ' '
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
tables
t_outtab_header = headertab
t_outtab_item = itemtab
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
发布者 人间烟火
2007-7-25 14:52:32
ekpo.
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.
TYPE-POOLS: slis.
DATA: BEGIN OF headertab OCCURS 0,
ebeln LIKE ekko-ebeln,
bstyp LIKE ekko-bstyp,
bsart LIKE ekko-bsart,
statu LIKE ekko-statu,
END OF headertab.
DATA: BEGIN OF itemtab OCCURS 0,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
werks LIKE ekpo-werks,
menge LIKE ekpo-menge,
netpr LIKE ekpo-netpr,
peinh LIKE ekpo-peinh,
netwr LIKE ekpo-netwr,
END OF itemtab.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv,
i_fieldcat1 TYPE slis_t_fieldcat_alv.
DATA: v_repid LIKE sy-repid,
v_layout TYPE slis_layout_alv,
v_events TYPE slis_t_event,
v_print TYPE slis_print_alv.
START-OF-SELECTION.
v_repid = sy-repid.
SELECT ebeln bstyp bsart statu
INTO TABLE headertab
FROM ekko
WHERE ebeln IN s_ebeln.
IF NOT headertab[] IS INITIAL.
SELECT ebeln ebelp matnr werks menge netpr peinh netwr
INTO TABLE itemtab
FROM ekpo
FOR ALL ENTRIES IN headertab
WHERE ebeln = headertab-ebeln.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'HEADERTAB'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = ' '
CHANGING
ct_fieldcat = i_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'ITEMTAB'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = ' '
CHANGING
ct_fieldcat = i_fieldcat1
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = v_repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* IT_EXCLUDING =
.
IF NOT headertab[] IS INITIAL.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = v_layout
it_fieldcat = i_fieldcat
i_tabname = 'HEADERTAB'
it_events = v_events
* IT_SORT =
* I_TEXT = ' '
TABLES
t_outtab = headertab
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
IF NOT itemtab[] IS INITIAL.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = v_layout
it_fieldcat = i_fieldcat1
i_tabname = 'ITEMTAB'
it_events = v_events
* IT_SORT =
* I_TEXT = ' '
TABLES
t_outtab = itemtab
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
IF NOT headertab[] IS INITIAL OR
NOT itemtab[] IS INITIAL.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
* I_INTERFACE_CHECK = ' '
* IS_PRINT =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
发布者 人间烟火
2007-7-25 14:53:29
TABLES : ekko,
ekpo.
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.
TYPE-POOLS: slis.
DATA: BEGIN OF headertab OCCURS 0,
ebeln LIKE ekko-ebeln,
bstyp LIKE ekko-bstyp,
bsart LIKE ekko-bsart,
statu LIKE ekko-statu,
END OF headertab.
DATA: BEGIN OF itemtab OCCURS 0,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
werks LIKE ekpo-werks,
menge LIKE ekpo-menge,
netpr LIKE ekpo-netpr,
peinh LIKE ekpo-peinh,
netwr LIKE ekpo-netwr,
END OF itemtab.
DATA: BEGIN OF level2 OCCURS 0,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
werks LIKE ekpo-werks,
menge LIKE ekpo-menge,
netpr LIKE ekpo-netpr,
peinh LIKE ekpo-peinh,
netwr LIKE ekpo-netwr,
END OF level2.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv,
i_fieldcat1 TYPE slis_t_fieldcat_alv.
DATA: v_repid LIKE sy-repid,
v_layout TYPE slis_layout_alv,
v_events TYPE slis_t_event,
v_print TYPE slis_print_alv,
l_fieldcat TYPE slis_fieldcat_alv.
START-OF-SELECTION.
v_repid = sy-repid.
SELECT ebeln bstyp bsart statu
INTO TABLE headertab
FROM ekko
WHERE ebeln IN s_ebeln.
IF NOT headertab[] IS INITIAL.
SELECT ebeln ebelp matnr werks menge netpr peinh netwr
INTO TABLE itemtab
FROM ekpo
FOR ALL ENTRIES IN headertab
WHERE ebeln = headertab-ebeln.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'HEADERTAB'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = ' '
CHANGING
ct_fieldcat = i_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT i_fieldcat INTO l_fieldcat.
CASE l_fieldcat-fieldname.
WHEN 'EBELN'.
l_fieldcat-hotspot = 'X'.
MODIFY i_fieldcat FROM l_fieldcat.
ENDCASE.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
i_bypassing_buffer = 'X'
i_buffer_active = ' '
i_callback_program = v_repid
* I_CALLBACK_PF_STATUS_SET = ' '
i_callback_user_command = 'USER_COMMAND'
* I_STRUCTURE_NAME =
* IS_LAYOUT =
it_fieldcat = i_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = headertab
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*&--------------------------------------------------------------------*
*& Form USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELDtext
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
IF rs_selfield-fieldname EQ 'EBELN'.
CASE r_ucomm.
WHEN '&IC1'.
READ TABLE headertab INDEX rs_selfield-tabindex.
REFRESH level2.
CLEAR level2.
LOOP AT itemtab WHERE ebeln = headertab-ebeln.
APPEND itemtab TO level2.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'LEVEL2'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = ' '
CHANGING
ct_fieldcat = i_fieldcat1
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
i_bypassing_buffer = 'X'
i_buffer_active = ' '
i_callback_program = v_repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND =
* I_STRUCTURE_NAME =
* IS_LAYOUT =
it_fieldcat = i_fieldcat1
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = level2
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDCASE.
ENDIF.
ENDFORM. "USER_COMMAND
发布者 人间烟火
2007-7-25 14:54:31
由于程序的长度不是非常长,所以我就不分帖描述了,在SAP R/3 4.6C IDES 测试通过,程序细节如下:
传统方法在此使用已比较少,调用事务方法比较多一点。所以这里,我就给出一个调用事务方式。功能描述我将在代码里面描述
REPORT Z_ABAPDEMOprojload
NO STANDARD PAGE HEADING LINE-SIZE 255.
*
*INCLUDE Z_ABAPDEMOprojload_top.
*&---------------------------------------------------------------------*
*& Include Z_ABAPDEMOPROJLOAD_TOP *
*&---------------------------------------------------------------------*
TABLES Z_ABAPDEMOproj.
DATA : BEGIN OF i_proj OCCURS 0,
project LIKE Z_ABAPDEMOproj-project,
proj_desc LIKE Z_ABAPDEMOproj-proj_desc,
stdat(10) TYPE c,
enddat(10) TYPE c,
customer LIKE Z_ABAPDEMOproj-customer,
location LIKE Z_ABAPDEMOproj-location,
END OF i_proj.
DATA i_bdctab LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
*INCLUDE Z_ABAPDEMOprojload_form.
*&---------------------------------------------------------------------*
*& Include Z_ABAPDEMOPROJLOAD_FORM *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form insert
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM insert .
*这里面的代码不是手动输入的,是通过一个录屏程序生成的,录屏程序的TR-CODE是SM35,在此你还需要
*指定一个transaction。
* perform open_group.
LOOP AT i_proj.
CLEAR i_bdctab[].
PERFORM bdc_dynpro USING 'Z_ABAPDEMO_D9_DIALOG' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'Z_ABAPDEMOPROJ-PROJECT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-PROJECT'
i_proj-project.
PERFORM bdc_dynpro USING 'Z_ABAPDEMO_D9_DIALOG' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'Z_ABAPDEMOPROJ-LOCATION'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SAVE'.
PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-PROJ_DESC'
i_proj-proj_desc.
PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-STDAT'
i_proj-stdat.
PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-ENDDAT'
i_proj-enddat.
PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-CUSTOMER'
i_proj-customer.
PERFORM bdc_field USING 'Z_ABAPDEMOPROJ-LOCATION'
i_proj-location.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0500'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=OPT1'.
PERFORM bdc_dynpro USING 'Z_ABAPDEMO_D9_DIALOG' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/EEXIT'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LPROJID'.
PERFORM transaction USING 'Z_ABAPDEMOPROJ1'.
ENDLOOP.
* perform close_group.
ENDFORM. " insert
*&---------------------------------------------------------------------*
*& Form process
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM process .
ENDFORM. " process
*&---------------------------------------------------------------------*
*& Form upload
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM upload .
*上传文本文件,这是一个以TAB分隔的表内容文件,它的字段以我后面的数据库表字段的顺序排列
*这里使用的是GUI_UPLOAD,还可以是WS_UPLOAD,大同小异
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'C:\Documents and Settings\xincheng24\Desktop\PROJ.TXT'
filetype = 'ASC'
has_field_separator = '#'
* HEADER_LENGTH = 0
* READ_BY_LINE = 'X'
* DAT_MODE = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* CHECK_BOM = ' '
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
data_tab = i_proj
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17
.
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. " upload
*&--------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*---------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
*该子程序也是由录屏程序生成的
CLEAR i_bdctab.
i_bdctab-program = program.
i_bdctab-dynpro = dynpro.
i_bdctab-dynbegin = 'X'.
APPEND i_bdctab.
ENDFORM. "BDC_DYNPRO
*&--------------------------------------------------------------------*
*& Form bdc_field
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*---------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
*该子程序同样由录屏程序生成
CLEAR i_bdctab.
i_bdctab-fnam = fnam.
i_bdctab-fval = fval.
APPEND i_bdctab.
ENDFORM. "DBC_FIELD
*&--------------------------------------------------------------------*
*& Form transaction
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*---------------------------------------------------------------------*
FORM transaction USING tcode.
*这就是调用事务类型的体现,需要主意的就是模式MODE和UPDATE。AS的组合就是显示所有log
*同步更新
REFRESH messtab.
CALL TRANSACTION tcode USING i_bdctab
MODE 'A'
UPDATE 'S'
MESSAGES INTO messtab.
ENDFORM. "TRANSACTION
*Main program
START-OF-SELECTION.
*upload the data from text file to internal table
PERFORM upload.
*process the data type. mainly used to convert date type
PERFORM process.
*insert the data from internal table to database table
PERFORM insert.
发布者 人间烟火
2007-7-30 19:06:45
发布者 zhengnx
2007-8-10 10:10:22
REPORT ZZXLTEST001 NO STANDARD PAGE HEADING.
* this report demonstrates how to send some ABAP data to an
* EXCEL sheet using OLE automation.
INCLUDE OLE2INCL.
* handles for OLE objects
DATA: H_EXCEL TYPE OLE2_OBJECT, " Excel object
H_MAPL TYPE OLE2_OBJECT, " list of workbooks
H_MAP TYPE OLE2_OBJECT, " workbook
H_ZL TYPE OLE2_OBJECT, " cell
H_F TYPE OLE2_OBJECT. " font
TABLES: SPFLI.
DATA H TYPE I.
* table of flights
DATA: IT_SPFLI LIKE SPFLI OCCURS 10 WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Event START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* read flights
SELECT * FROM SPFLI INTO TABLE IT_SPFLI UP TO 10 ROWS.
* display header
ULINE (61).
WRITE: / SY-VLINE NO-GAP,
(3) 'Flg'(001) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(4) 'Nr'(002) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(20) 'Von'(003) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(20) 'Nach'(004) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(8) 'Zeit'(005) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP.
ULINE /(61).
* display flights
LOOP AT IT_SPFLI.
WRITE: / SY-VLINE NO-GAP,
IT_SPFLI-CARRID COLOR COL_KEY NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-CONNID COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-CITYFROM COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-CITYTO COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-DEPTIME COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP.
ENDLOOP.
ULINE /(61).
* tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-007
EXCEPTIONS
OTHERS = 1.
* start Excel
CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
* PERFORM ERR_HDL.
SET PROPERTY OF H_EXCEL 'Visible' = 1.
* CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'c:\kis_excel.xls'
.
* PERFORM ERR_HDL.
* tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-008
EXCEPTIONS
OTHERS = 1.
* get list of workbooks, initially empty
CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
PERFORM ERR_HDL.
* add a new workbook
CALL METHOD OF H_MAPL 'Add' = H_MAP.
PERFORM ERR_HDL.
* tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-009
EXCEPTIONS
OTHERS = 1.
* output column headings to active Excel sheet
PERFORM FILL_CELL USING 1 1 1 'Flug'(001).
PERFORM FILL_CELL USING 1 2 1 'Nr'(002).
PERFORM FILL_CELL USING 1 3 1 'Von'(003).
PERFORM FILL_CELL USING 1 4 1 'Nach'(004).
PERFORM FILL_CELL USING 1 5 1 'Zeit'(005).
LOOP AT IT_SPFLI.
* copy flights to active EXCEL sheet
H = SY-TABIX + 1.
PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID.
PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID.
PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM.
PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO.
PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME.
ENDLOOP.
* changes by Kishore - start
* CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
CALL METHOD OF H_EXCEL 'Worksheets' = H_MAPL." EXPORTING #1 = 2.
PERFORM ERR_HDL.
* add a new workbook
CALL METHOD OF H_MAPL 'Add' = H_MAP EXPORTING #1 = 2.
PERFORM ERR_HDL.
* tell user what is going on
SET PROPERTY OF H_MAP 'NAME' = 'COPY'.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-009
EXCEPTIONS
OTHERS = 1.
* output column headings to active Excel sheet
PERFORM FILL_CELL USING 1 1 1 'Flug'(001).
PERFORM FILL_CELL USING 1 2 1 'Nr'(002).
PERFORM FILL_CELL USING 1 3 1 'Von'(003).
PERFORM FILL_CELL USING 1 4 1 'Nach'(004).
PERFORM FILL_CELL USING 1 5 1 'Zeit'(005).
LOOP AT IT_SPFLI.
* copy flights to active EXCEL sheet
H = SY-TABIX + 1.
PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID.
PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID.
PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM.
PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO.
PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME.
ENDLOOP.
* changes by Kishore - end
* disconnect from Excel
* CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'C:\SKV.XLS'.
FREE OBJECT H_EXCEL.
PERFORM ERR_HDL.
*---------------------------------------------------------------------*
* FORM FILL_CELL *
*---------------------------------------------------------------------*
* sets cell at coordinates i,j to value val boldtype bold *
*---------------------------------------------------------------------*
FORM FILL_CELL USING I J BOLD VAL.
CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J.
PERFORM ERR_HDL.
SET PROPERTY OF H_ZL 'Value' = VAL .
PERFORM ERR_HDL.
GET PROPERTY OF H_ZL 'Font' = H_F.
PERFORM ERR_HDL.
SET PROPERTY OF H_F 'Bold' = BOLD .
PERFORM ERR_HDL.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ERR_HDL
*&---------------------------------------------------------------------*
* outputs OLE error if any *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ERR_HDL.
IF SY-SUBRC <> 0.
WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC.
STOP.
ENDIF.
ENDFORM. " ERR_HDL
发布者 人间烟火
2007-10-13 22:58:25
REPORT ZZXLTEST001 NO STANDARD PAGE HEADING.
* this report demonstrates how to send some ABAP data to an
* EXCEL sheet using OLE automation.
INCLUDE OLE2INCL.
* handles for OLE objects
DATA: H_EXCEL TYPE OLE2_OBJECT, " Excel object
H_MAPL TYPE OLE2_OBJECT, " list of workbooks
H_MAP TYPE OLE2_OBJECT, " workbook
H_ZL TYPE OLE2_OBJECT, " cell
H_F TYPE OLE2_OBJECT. " font
TABLES: SPFLI.
DATA H TYPE I.
* table of flights
DATA: IT_SPFLI LIKE SPFLI OCCURS 10 WITH HEADER LINE.
*&---------------------------------------------------------------------*
*& Event START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* read flights
SELECT * FROM SPFLI INTO TABLE IT_SPFLI UP TO 10 ROWS.
* display header
ULINE (61).
WRITE: / SY-VLINE NO-GAP,
(3) 'Flg'(001) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(4) 'Nr'(002) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(20) 'Von'(003) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(20) 'Nach'(004) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
(8) 'Zeit'(005) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP.
ULINE /(61).
* display flights
LOOP AT IT_SPFLI.
WRITE: / SY-VLINE NO-GAP,
IT_SPFLI-CARRID COLOR COL_KEY NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-CONNID COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-CITYFROM COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-CITYTO COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
IT_SPFLI-DEPTIME COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP.
ENDLOOP.
ULINE /(61).
* tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-007
EXCEPTIONS
OTHERS = 1.
* start Excel
CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
* PERFORM ERR_HDL.
SET PROPERTY OF H_EXCEL 'Visible' = 1.
* CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'c:\kis_excel.xls'
.
* PERFORM ERR_HDL.
* tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-008
EXCEPTIONS
OTHERS = 1.
* get list of workbooks, initially empty
CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
PERFORM ERR_HDL.
* add a new workbook
CALL METHOD OF H_MAPL 'Add' = H_MAP.
PERFORM ERR_HDL.
* tell user what is going on
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-009
EXCEPTIONS
OTHERS = 1.
* output column headings to active Excel sheet
PERFORM FILL_CELL USING 1 1 1 'Flug'(001).
PERFORM FILL_CELL USING 1 2 1 'Nr'(002).
PERFORM FILL_CELL USING 1 3 1 'Von'(003).
PERFORM FILL_CELL USING 1 4 1 'Nach'(004).
PERFORM FILL_CELL USING 1 5 1 'Zeit'(005).
LOOP AT IT_SPFLI.
* copy flights to active EXCEL sheet
H = SY-TABIX + 1.
PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID.
PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID.
PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM.
PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO.
PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME.
ENDLOOP.
* changes by Kishore - start
* CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
CALL METHOD OF H_EXCEL 'Worksheets' = H_MAPL." EXPORTING #1 = 2.
PERFORM ERR_HDL.
* add a new workbook
CALL METHOD OF H_MAPL 'Add' = H_MAP EXPORTING #1 = 2.
PERFORM ERR_HDL.
* tell user what is going on
SET PROPERTY OF H_MAP 'NAME' = 'COPY'.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
TEXT = TEXT-009
EXCEPTIONS
OTHERS = 1.
* output column headings to active Excel sheet
PERFORM FILL_CELL USING 1 1 1 'Flug'(001).
PERFORM FILL_CELL USING 1 2 1 'Nr'(002).
PERFORM FILL_CELL USING 1 3 1 'Von'(003).
PERFORM FILL_CELL USING 1 4 1 'Nach'(004).
PERFORM FILL_CELL USING 1 5 1 'Zeit'(005).
LOOP AT IT_SPFLI.
* copy flights to active EXCEL sheet
H = SY-TABIX + 1.
PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID.
PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID.
PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM.
PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO.
PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME.
ENDLOOP.
* changes by Kishore - end
* disconnect from Excel
* CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'C:\SKV.XLS'.
FREE OBJECT H_EXCEL.
PERFORM ERR_HDL.
*---------------------------------------------------------------------*
* FORM FILL_CELL *
*---------------------------------------------------------------------*
* sets cell at coordinates i,j to value val boldtype bold *
*---------------------------------------------------------------------*
FORM FILL_CELL USING I J BOLD VAL.
CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J.
PERFORM ERR_HDL.
SET PROPERTY OF H_ZL 'Value' = VAL .
PERFORM ERR_HDL.
GET PROPERTY OF H_ZL 'Font' = H_F.
PERFORM ERR_HDL.
SET PROPERTY OF H_F 'Bold' = BOLD .
PERFORM ERR_HDL.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ERR_HDL
*&---------------------------------------------------------------------*
* outputs OLE error if any *
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ERR_HDL.
IF SY-SUBRC <> 0.
WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC.
STOP.
ENDIF.
ENDFORM. " ERR_HDL
发布者 人间烟火
2007-10-13 22:58:27
发布者 HELLFIRE
2007-10-24 10:43:50
top!
发布者 匿名用户
2007-10-30 23:50:44
top!
发布者 匿名用户
2007-10-30 23:50:44
top!
发布者 匿名用户
2007-10-30 23:50:45
发布者 ll95
2007-11-13 17:13:15
发布者 匿名用户
2007-12-17 15:01:37
发布者 wertyhand
2007-12-19 14:10:54
发布者 zhaoxilin
2008-3-12 16:56:54
发布者 goodwu1973
2008-8-11 18:44:30