功能展示
1.三个可拖动变换大小的屏幕
2.普通OOALV
3.带格式的邮件附件,三个表格,合并居中,单元格带框线,指定列宽。
代码如下,复制可直接激活,没有include,创建程序后还有一些其他步骤,详情见后文
*&---------------------------------------------------------------------*
*& Report ZLQT_OOALV_SPLIT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZLQT_OOALV_SPLIT.
TABLES : t001,BKPF,SSCRFIELDS." ---TODO
TYPE-POOLS:icon.
DATA: ok_code LIKE sy-ucomm.
CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA: event_receiver TYPE REF TO lcl_event_receiver.
DATA: gt_fieldcat TYPE lvc_t_fcat,
gt_fieldcat1 TYPE lvc_t_fcat,
gt_fieldcat2 TYPE lvc_t_fcat,
gt_fieldcat3 TYPE lvc_t_fcat,
gs_layout TYPE lvc_s_layo,
gs_variant TYPE disvariant,
gt_t_f4 TYPE lvc_t_f4,
GT_SELCELL TYPE LVC_T_CELL,
it_toolbar_excluding TYPE ui_functions.
DATA: stbl TYPE lvc_s_stbl. "鼠标游标位置
DATA: et_filtered TYPE lvc_t_fidx.
DATA: gv_code TYPE sy-tcode .
DATA alv_grid TYPE REF TO cl_gui_alv_grid. "后面要用到CL_GUI_ALV_GRID类中的方法
"SET_TABLE_FIRST_DISPLAY,这个方法基于实例存在,必须
"为这个类创建一个对象。在此处声明。
DATA gs_parent TYPE REF TO cl_gui_custom_container . "定义容器
DATA gt_select TYPE lvc_t_cell . "定義選中單元格方法參數
DATA gt_selrow TYPE lvc_t_row . "定義選中行方法參數
*DATA: gr_table TYPE REF TO cl_salv_table.
*DATA: lr_functions TYPE REF TO cl_salv_functions.
"$. Region 此处定义改为需要用到的定义-TODO
TYPES : BEGIN OF ty_item ,
XH TYPE C LENGTH 3,
SUM TYPE C LENGTH 3,
YUE01 TYPE C LENGTH 3,
YUE02 TYPE C LENGTH 3,
YUE03 TYPE C LENGTH 3,
YUE04 TYPE C LENGTH 3,
YUE05 TYPE C LENGTH 3,
YUE06 TYPE C LENGTH 3,
YUE07 TYPE C LENGTH 3,
YUE08 TYPE C LENGTH 3,
YUE09 TYPE C LENGTH 3,
YUE10 TYPE C LENGTH 3,
YUE11 TYPE C LENGTH 3,
YUE12 TYPE C LENGTH 3,
END OF ty_item .
DATA gt_item TYPE TABLE OF ty_item .
TYPES : BEGIN OF TY_HB1 ,
XH TYPE C LENGTH 3,
SUM TYPE C LENGTH 3,
YUE01 TYPE C LENGTH 3,
YUE02 TYPE C LENGTH 3,
YUE03 TYPE C LENGTH 3,
YUE04 TYPE C LENGTH 3,
YUE05 TYPE C LENGTH 3,
YUE06 TYPE C LENGTH 3,
YUE07 TYPE C LENGTH 3,
YUE08 TYPE C LENGTH 3,
YUE09 TYPE C LENGTH 3,
YUE10 TYPE C LENGTH 3,
YUE11 TYPE C LENGTH 3,
YUE12 TYPE C LENGTH 3,
END OF TY_HB1 .
DATA gt_HB1 TYPE TABLE OF TY_HB1 .
DATA gS_HB1 TYPE TY_HB1 .
DATA gt_HB1S TYPE TABLE OF TY_HB1 .
DATA gS_HB1S TYPE TY_HB1 .
TYPES : BEGIN OF TY_HB2 ,
XH TYPE C LENGTH 3,
SUM TYPE C LENGTH 3,
YC01 TYPE C LENGTH 3,
YC02 TYPE C LENGTH 3,
YC03 TYPE C LENGTH 3,
YC04 TYPE C LENGTH 3,
END OF TY_HB2 .
DATA gt_HB2 TYPE TABLE OF TY_HB2 .
DATA gS_HB2 TYPE TY_HB2 .
DATA gS_HB2S TYPE TY_HB2 .
TYPES : BEGIN OF TY_HB3 ,
XH TYPE C LENGTH 3,
SUM TYPE C LENGTH 3,
YUE01 TYPE C LENGTH 3,
YUE02 TYPE C LENGTH 3,
YUE03 TYPE C LENGTH 3,
YUE04 TYPE C LENGTH 3,
YUE05 TYPE C LENGTH 3,
YUE06 TYPE C LENGTH 3,
YUE07 TYPE C LENGTH 3,
YUE08 TYPE C LENGTH 3,
YUE09 TYPE C LENGTH 3,
YUE10 TYPE C LENGTH 3,
YUE11 TYPE C LENGTH 3,
YUE12 TYPE C LENGTH 3,
END OF TY_HB3 .
DATA gt_HB3 TYPE TABLE OF TY_HB3 .
DATA gS_HB3 TYPE TY_HB3 .
DATA gS_HB3S TYPE TY_HB3 .
DATA: gt_xml_table_forecast TYPE TABLE OF x255.
"拆分屏幕定义
DATA: g_doc_cont TYPE REF TO cl_gui_docking_container.
DATA: g_grid_left TYPE REF TO cl_gui_alv_grid.
DATA: g_grid_right TYPE REF TO cl_gui_alv_grid.
DATA: g_grid2 TYPE REF TO cl_gui_alv_grid.
"$. Endregion 此处定义改为需要用到的定义-TODO
*&---------------------------------------------------------------------*
*& Class LCL_EVENT_RECEIVER
*&---------------------------------------------------------------------*
* Text
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS handle_double_click FOR EVENT double_click OF cl_gui_alv_grid "定义类中的方法---双击
IMPORTING e_row e_column es_row_no. "
" "
METHODS handle_onf4 FOR EVENT onf4 OF cl_gui_alv_grid "定义类中的方法---F4帮助
IMPORTING e_fieldname es_row_no er_event_data . "
"
METHODS handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid "定义类中的方法---ALV状态栏按钮
IMPORTING e_object e_interactive . "
"
METHODS handle_user_command FOR EVENT user_command OF cl_gui_alv_grid "定义类中的方法---按钮触发方法
IMPORTING e_ucomm . "
"
METHODS handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid "定义类中的方法---数据修改时的方法
IMPORTING er_data_changed e_onf4 e_onf4_before e_onf4_after e_ucomm. "
METHODS handle_data_changed_finished FOR EVENT data_changed_finished OF cl_gui_alv_grid
IMPORTING e_modified et_good_cells.
ENDCLASS. "LCL_EVENT_RECEIVER
"$. Endregion 定义
"$. Region 选择屏幕-TODO
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS : P_ZYEAR TYPE BKPF-GJAHR DEFAULT SY-DATUM(4) .
SELECTION-SCREEN SKIP 1 .
PARAMETERS : P_MX RADIOBUTTON GROUP G1 DEFAULT 'X'. "明细数据
PARAMETERS : P_HZ1 RADIOBUTTON GROUP G1 . "责任部门与异常零件点数统计"
" PARAMETERS : P_HZ2 RADIOBUTTON GROUP G1. "责任部门与延迟天数统计汇总
" PARAMETERS : P_HZ3 RADIOBUTTON GROUP G1. "责任部门与责任人异常零件点数统计TOP10
SELECTION-SCREEN END OF BLOCK b1 .
SELECTION-SCREEN FUNCTION KEY 1. "
"$. Endregion 选择屏幕-TODO
INITIALIZATION.
stbl-row = 'X'.
stbl-col = 'X'.
SSCRFIELDS-FUNCTXT_01 = '维护邮箱'.
AT SELECTION-SCREEN.
"$. Region 权限-TODO
* SELECT T001~BUKRS FROM T001 WHERE T001~BUKRS IN @S_BUKRS INTO TABLE @DATA(GT_BUKRS) .
*
* LOOP AT GT_BUKRS INTO DATA(GS_BUKRS).
* AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
* ID 'BUKRS' FIELD GS_BUKRS-BUKRS
* ID 'ACTVT' FIELD '03'.
* IF SY-SUBRC <> 0.
* MESSAGE '您没有公司代码' && GS_BUKRS-BUKRS && '的操作权限!' TYPE 'E' .
*
* ENDIF.
*
* ENDLOOP.
"$. Endregion 权限-TODO
CASE SSCRFIELDS-UCOMM. "处理按钮命令
WHEN'FC01'.
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
ACTION = 'U'
VIEW_NAME = 'ZTMM200_MAIL'. "改成自己维护邮箱的表或者删掉在后面写死
WHEN OTHERS.
ENDCASE.
START-OF-SELECTION.
PERFORM frm_get_data.
IF P_MX = 'X'.
CALL SCREEN 9000.
ELSEIF P_HZ1 = 'X' .
CALL SCREEN 8000.
ENDIF.
"$. Region FORM
MODULE status_9000 OUTPUT.
SET PF-STATUS '9000'.
SET TITLEBAR '9000'.
DATA(gv_frist) = 'X' . "判断是不是第一次运行,自添加按钮需要刷新才能显示
PERFORM prepare_field_catalog USING 0 CHANGING gt_fieldcat.
PERFORM prepare_field_catalog USING 1 CHANGING gt_fieldcat1.
PERFORM prepare_field_catalog USING 2 CHANGING gt_fieldcat2.
PERFORM prepare_field_catalog USING 3 CHANGING gt_fieldcat3.
PERFORM prepare_layout CHANGING gs_layout.
IF P_MX = 'X'.
PERFORM frm_display_alv .
ELSEIF P_HZ1 = 'X' .
PERFORM frm_display_alv_SPLIT .
ENDIF.
IF gv_frist = 'X' AND alv_grid IS NOT INITIAL.
CALL METHOD alv_grid->refresh_table_display "增加按钮需要刷新才会显示出来,否则无法显示。
EXPORTING
is_stable = stbl.
gv_frist = '0' ."判断是否为第一次,为第一次则刷新
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.
gv_code = ok_code .
CASE ok_code.
WHEN 'BACK'.
CLEAR: gt_item.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
CLEAR: gt_item.
LEAVE TO SCREEN 0.
WHEN 'MAIL'.
PERFORM frm_process_xml_data.
PERFORM frm_send_email .
ENDCASE.
ENDMODULE.
*----------------------------------------------------------------------*
* CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_double_click.
MESSAGE '双击' TYPE 'S'. " e_row e_column es_row_no
CALL METHOD alv_grid->get_selected_cells
IMPORTING
et_cell = GT_SELCELL
.
ENDMETHOD. "HANDLE_DOUBLE_CLICK双击后触发该段代码,可接T-CODE跳转等功能
METHOD handle_onf4.
DATA: ls_modi TYPE lvc_s_modi,
lt_ret_tab TYPE TABLE OF ddshretval.
IF e_fieldname = 'REPTEXT'.
READ TABLE gt_item INDEX es_row_no-row_id ASSIGNING FIELD-SYMBOL().
* CHECK sy-subrc = 0.
IF sy-subrc = 0.
.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'DDTEXT'
value_org = 'S'
TABLES
value_tab = gt_item
return_tab = lt_ret_tab.
IF sy-subrc = 0.
READ TABLE lt_ret_tab INDEX 1 ASSIGNING FIELD-SYMBOL().
IF sy-subrc = 0.
ENDIF.
ENDIF.
er_event_data->m_event_handled = 'X'.
CALL METHOD alv_grid->refresh_table_display
EXPORTING
is_stable = stbl.
ENDIF .
ENDIF .
ENDMETHOD. "需在ALV中调用触发一般与filedcat中的 f4availabl 参数同用
METHOD handle_toolbar. "在ALV状态栏增加按钮,一般是汇总按钮,新增后的按钮可触发HANDLE_USER_COMMAND方法
DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type. "分隔符
APPEND ls_toolbar TO e_object->mt_toolbar.
" CLEAR ls_toolbar.
" MOVE 'MAIL' TO ls_toolbar-function. "功能码
" MOVE '发送邮件' TO ls_toolbar-quickinfo.
" MOVE '发送邮件' TO ls_toolbar-text. "显示名称
" MOVE ' ' TO ls_toolbar-disabled.
" APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD. "在ALV状态栏增加按钮,一般是汇总按钮
METHOD handle_user_command.
CASE e_ucomm.
WHEN 'MAIL'.
WHEN OTHERS.
ENDCASE.
CALL METHOD alv_grid->set_frontend_layout
EXPORTING
is_layout = gs_layout.
CALL METHOD alv_grid->refresh_table_display
EXPORTING
is_stable = stbl.
ENDMETHOD. "一般与HANDLE_TOOLBAR同用
METHOD handle_data_changed. "er_data_changed e_onf4 e_onf4_before e_onf4_after e_ucomm.
"用途在于检查这行是否能修改,数据是否合法
LOOP AT er_data_changed->mt_good_cells ASSIGNING FIELD-SYMBOL().
ENDLOOP .
ENDMETHOD. "数据修改后触发,一般用在数据联动修改如数量字段修改,同时联动修改金额字段
METHOD handle_data_changed_finished.
"用途在于修改后的数据联动,
DATA: ls_et_good_cell TYPE lvc_s_modi.
LOOP AT et_good_cells INTO ls_et_good_cell.
READ TABLE gt_item ASSIGNING FIELD-SYMBOL() INDEX ls_et_good_cell-row_id.
IF sy-subrc = '0'.
IF ls_et_good_cell-fieldname = 'SCRTEXT_L'.
ENDIF.
ENDIF.
ENDLOOP.
CALL METHOD alv_grid->refresh_table_display
EXPORTING
is_stable = stbl.
ENDMETHOD.
ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display_alv .
" CLEAR: gt_fieldcat,gt_fieldcat1,gt_fieldcat2,gt_fieldcat3,gs_layout,it_toolbar_excluding.
gs_variant-report = sy-repid.
gs_variant-handle = '0001'.
******实例化 容器
CREATE OBJECT gs_parent
EXPORTING
container_name = 'ALV'. " 界面中的一个CUNSTOMER CONTROL控件 用于存放类对象。
"使用这个控件把名称赋值给CONTAINER_NAME
******将alv植入到容器中
CREATE OBJECT alv_grid
EXPORTING
i_parent = gs_parent.
PERFORM toolbar_excluding_item CHANGING it_toolbar_excluding. "ALV按钮排除
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
i_save = 'A'
i_default = 'X'
is_variant = gs_variant
it_toolbar_excluding = it_toolbar_excluding
CHANGING
it_outtab = gt_item
it_fieldcatalog = gt_fieldcat.
CREATE OBJECT event_receiver. "创建事件
SET HANDLER event_receiver->handle_double_click FOR alv_grid. "双击事件
* SET HANDLER event_receiver->handle_onf4 FOR alv_grid. "F4帮助事件
SET HANDLER event_receiver->handle_toolbar FOR alv_grid. "ALV状态栏
SET HANDLER event_receiver->handle_user_command FOR alv_grid. "按钮事件
SET HANDLER event_receiver->handle_data_changed FOR alv_grid. "修改事件
SET HANDLER event_receiver->handle_data_changed_finished FOR alv_grid. "数据修改后触发事件
" gt_t_f4 = VALUE #( BASE gt_t_f4 ( fieldname = 'REPTEXT' register = 'X' getbefore = 'X' chngeafter = 'X' ) ) .
" CALL METHOD alv_grid->register_f4_for_fields "注册F4帮助事件
" EXPORTING
" it_f4 = gt_t_f4.
CALL METHOD alv_grid->register_edit_event "注册编辑事件,否则不会触发更新事件
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD alv_grid->set_frontend_layout
EXPORTING
is_layout = gs_layout.
CALL METHOD alv_grid->SET_FRONTEND_FIELDCATALOG
EXPORTING
IT_FIELDCATALOG = gt_fieldcat.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = alv_grid.
CALL METHOD cl_gui_cfw=>flush.
" IF alv_grid IS INITIAL .
" ELSE.
" CALL METHOD alv_grid->set_frontend_layout
" EXPORTING
" is_layout = gs_layout.
" CALL METHOD alv_grid->refresh_table_display
" EXPORTING
" is_stable = stbl.
" ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PREPARE_FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_FIELDCAT text
*----------------------------------------------------------------------*
FORM prepare_field_catalog USING I CHANGING p_gt_fieldcat TYPE lvc_t_fcat.
DATA ls_fcat TYPE lvc_s_fcat.
DEFINE set_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = &1. "字段
ls_fcat-outputlen = &2. "列的字符宽度
ls_fcat-key = &3. "主键
ls_fcat-edit = &4. "可编辑
ls_fcat-ref_table = &5. "参考表
ls_fcat-ref_field = &6. "参考字段
ls_fcat-icon = &7. "以圖標輸出
* ls_fcat-NO_ZERO = &8. "前导0
ls_fcat-coltext = &9. "描述
ls_fcat-f4availabl = &8.
APPEND ls_fcat TO p_gt_fieldcat.
END-OF-DEFINITION.
CLEAR :p_gt_fieldcat[],ls_fcat .
CASE I.
WHEN 0.
set_fcat 'ZSYSTEM' '' '' '' 'ZTMM200_LOG' 'ZSYSTEM' '' '' '订单发送外围系统'.
set_fcat 'EKGRP' '' '' '' 'ZTMM200_LOG' 'EKGRP' '' '' '采购组'.
set_fcat 'VERKF' '' '' '' 'ZTMM200_LOG' 'VERKF' '' '' '卖方业务伙伴订单'.
set_fcat 'TELF1' '' '' '' 'ZTMM200_LOG' 'TELF1' '' '' '订购用途'.
set_fcat 'LIFNR' '' '' '' 'ZTMM200_LOG' 'LIFNR' '' '' '供应商或债权人的帐号'.
set_fcat 'UNSEZ' '' '' '' 'ZTMM200_LOG' 'UNSEZ' '' '' '出货地'.
set_fcat 'MATNR' '' '' '' 'ZTMM200_LOG' 'MATNR' '' '' '物料编号'.
set_fcat 'MENGE' '' '' '' 'ZTMM200_LOG' 'MENGE' '' '' '采购订单数量'.
set_fcat 'ZSTATUS' '' '' '' 'ZTMM200_LOG' 'ZSTATUS' '' '' '采购状态'.
set_fcat 'WERKS' '' '' '' 'ZTMM200_LOG' 'WERKS' '' '' '工厂'.
set_fcat 'LGORT' '' '' '' 'ZTMM200_LOG' 'LGORT' '' '' '库存地点'.
set_fcat 'EEIND' '' '' '' 'ZTMM200_LOG' 'EEIND' '' '' '交货日期'.
set_fcat 'ZDATE' '' '' '' 'ZTMM200_LOG' 'ZDATE' '' '' '接口传输日期'.
set_fcat 'ZTIME' '' '' '' 'ZTMM200_LOG' 'ZTIME' '' '' '接口传输时间'.
set_fcat 'UNAME' '' '' '' 'ZTMM200_LOG' 'UNAME' '' '' '用户名'.
set_fcat 'EBELN' '' '' '' 'ZTMM200_LOG' 'EBELN' '' '' '采购凭证编号'.
set_fcat 'EBELP' '' '' '' 'ZTMM200_LOG' 'EBELP' '' '' '采购凭证的项目编号'.
set_fcat 'TEXT2' '' '' '' 'ZTMM200_LOG' 'TEXT2' '' '' '参考字段'.
set_fcat 'NAME1' '' '' '' 'ZTMM200_LOG' 'NAME1' '' '' '名称'.
set_fcat 'MAKTX' '' '' '' 'ZTMM200_LOG' 'MAKTX' '' '' '物料描述'.
set_fcat 'ZDATE1' '' '' '' 'ZTMM200_LOG' 'ZDATE1' '' '' '重处理日期'.
set_fcat 'ZTIME1' '' '' '' 'ZTMM200_LOG' 'ZTIME1' '' '' '重处理时间'.
WHEN 1.
set_fcat ' XH ' '' '' '' '' '' '' '' '序号'.
set_fcat ' ZRESD' '' '' '' '' '' '' '' '责任部门'.
set_fcat ' SUM ' '' '' '' '' '' '' '' '年度累计'.
set_fcat ' YUE01' '' '' '' '' '' '' '' '1月'.
set_fcat ' YUE02' '' '' '' '' '' '' '' '2月'.
set_fcat ' YUE03' '' '' '' '' '' '' '' '3月'.
set_fcat ' YUE04' '' '' '' '' '' '' '' '4月'.
set_fcat ' YUE05' '' '' '' '' '' '' '' '5月'.
set_fcat ' YUE06' '' '' '' '' '' '' '' '6月'.
set_fcat ' YUE07' '' '' '' '' '' '' '' '7月'.
set_fcat ' YUE08' '' '' '' '' '' '' '' '8月'.
set_fcat ' YUE09' '' '' '' '' '' '' '' '9月'.
set_fcat ' YUE10' '' '' '' '' '' '' '' '10月'.
set_fcat ' YUE11' '' '' '' '' '' '' '' '11月'.
set_fcat ' YUE12' '' '' '' '' '' '' '' '12月'.
WHEN 2.
set_fcat 'XH ' '' '' '' '' '' '' '' '序号'.
set_fcat 'ZRESD' '' '' '' '' '' '' '' '责任部门'.
set_fcat 'SUM ' '' '' '' '' '' '' '' '年度累计'.
set_fcat 'YC01 ' '' '' '' '' '' '' '' '1-3天'.
set_fcat 'YC02 ' '' '' '' '' '' '' '' '4-7天'.
set_fcat 'YC03 ' '' '' '' '' '' '' '' '8-14天'.
set_fcat 'YC04 ' '' '' '' '' '' '' '' '15天以上'.
WHEN 3.
set_fcat ' XH ' '' '' '' '' '' '' '' '序号'.
set_fcat ' ZRESD' '' '' '' '' '' '' '' '责任部门'.
set_fcat ' ZRESP' '' '' '' '' '' '' '' '责任人'.
set_fcat ' SUM ' '' '' '' '' '' '' '' '年度累计'.
set_fcat ' YUE01' '' '' '' '' '' '' '' '1月'.
set_fcat ' YUE02' '' '' '' '' '' '' '' '2月'.
set_fcat ' YUE03' '' '' '' '' '' '' '' '3月'.
set_fcat ' YUE04' '' '' '' '' '' '' '' '4月'.
set_fcat ' YUE05' '' '' '' '' '' '' '' '5月'.
set_fcat ' YUE06' '' '' '' '' '' '' '' '6月'.
set_fcat ' YUE07' '' '' '' '' '' '' '' '7月'.
set_fcat ' YUE08' '' '' '' '' '' '' '' '8月'.
set_fcat ' YUE09' '' '' '' '' '' '' '' '9月'.
set_fcat ' YUE10' '' '' '' '' '' '' '' '10月'.
set_fcat ' YUE11' '' '' '' '' '' '' '' '11月'.
set_fcat ' YUE12' '' '' '' '' '' '' '' '12月'.
WHEN OTHERS.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PREPARE_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prepare_layout CHANGING p_gs_layout TYPE lvc_s_layo.
p_gs_layout-zebra = 'X'. "斑馬紋顯示
p_gs_layout-sel_mode = 'A'. "選擇模式
p_gs_layout-cwidth_opt = 'X'. "最佳列寬
ENDFORM.
FORM toolbar_excluding_item CHANGING pt_exclude TYPE ui_functions.
DATA ls_exclude TYPE ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
APPEND ls_exclude TO pt_exclude.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_get_data .
ENDFORM.
FORM frm_display_alv_SPLIT .
IF g_doc_cont IS INITIAL.
CREATE OBJECT g_doc_cont
EXPORTING
ratio = '95'
side = cl_gui_docking_container=>dock_at_left. " 1
PERFORM frm_alv_global_splitter_object
USING g_doc_cont
CHANGING g_grid_left g_grid_right g_grid2.
ENDIF.
ENDFORM .
*&---------------------------------------------------------------------*
*& Form ALV_GLOBAL_SPLITTER_OBJECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PA_DCON text
* -->PA_TOP text
* -->PA_BOTTOM text
* -->PV_HEIGHT text
*----------------------------------------------------------------------*
FORM frm_alv_global_splitter_object USING
pv_dcont TYPE REF TO cl_gui_docking_container
CHANGING
cv_grid1 TYPE REF TO cl_gui_alv_grid
cv_grid2 TYPE REF TO cl_gui_alv_grid
cv_grid3 TYPE REF TO cl_gui_alv_grid.
DATA: lv_split TYPE REF TO cl_gui_splitter_container.
DATA: lv_split2 TYPE REF TO cl_gui_splitter_container.
*-- 分开
DATA: lv_t1 TYPE i VALUE 1.
DATA: lv_t2 TYPE i VALUE 2.
PERFORM frm_split_cont USING pv_dcont 2 1 CHANGING lv_split.
PERFORM frm_split_cont2 USING lv_split 1 1 1 2 CHANGING lv_split2.
PERFORM frm_split_set_grid USING lv_split2 1 1 1 CHANGING cv_grid1.
PERFORM frm_split_set_grid USING lv_split2 1 2 2 CHANGING cv_grid2.
PERFORM frm_split_set_grid USING lv_split 2 1 3 CHANGING cv_grid3.
lv_split->set_row_height( id = 1 height = 50 ).
lv_split2->set_column_width( id = 1 width = 50 ).
ENDFORM. "alv_splitter_object
*&---------------------------------------------------------------------*
*& Form FRM_SPLIT_CONT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_G_SPLITTER1PA_DCON text
* -->P_1 text
* -->P_2 text
*----------------------------------------------------------------------*
FORM frm_split_cont
USING pv_dco_cont TYPE REF TO cl_gui_docking_container
pv_c1 pv_c2
CHANGING pv_splitter TYPE REF TO cl_gui_splitter_container.
IF pv_dco_cont IS NOT INITIAL.
CREATE OBJECT pv_splitter
EXPORTING
parent = pv_dco_cont
rows = pv_c1
columns = pv_c2.
ENDIF.
ENDFORM. " FRM_SPLIT_CONT
*&---------------------------------------------------------------------*
*& Form frm_split_cont2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PV_SPLIT text
* -->PV_P1 text
* -->PV_P2 text
* -->PV_C1 text
* -->PV_C2 text
* <--PV_SPLITTER text
*----------------------------------------------------------------------*
FORM frm_split_cont2
USING pv_split TYPE REF TO cl_gui_splitter_container
pv_p1 pv_p2 pv_c1 pv_c2
CHANGING pv_splitter TYPE REF TO cl_gui_splitter_container.
IF pv_split IS NOT INITIAL.
CREATE OBJECT pv_splitter
EXPORTING
parent = pv_split->get_container( row = pv_p1 column = pv_p2 )
rows = pv_c1
columns = pv_c2.
ENDIF.
ENDFORM. " FRM_SPLIT_CONT
*&---------------------------------------------------------------------*
*& Form FRM_SPLIT_CONT_SET
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_G_SPLITTER1 text
* -->P_1 text
* -->P_1 text
* <--P_PA_TOP1 text
*----------------------------------------------------------------------*
FORM frm_split_set_grid
USING pv_split TYPE REF TO cl_gui_splitter_container
p_v1
p_v2
I
CHANGING cv_grid TYPE REF TO cl_gui_alv_grid.
DATA: pv_cont TYPE REF TO cl_gui_container.
CALL METHOD pv_split->get_container
EXPORTING
row = p_v1
column = p_v2
RECEIVING
container = pv_cont.
IF sy-subrc = 0.
CREATE OBJECT cv_grid "创建第一个ALV,并放在容器中
EXPORTING
i_parent = pv_cont.
CASE I.
WHEN 1.
gs_layout-GRID_TITLE = '责任部门与异常零件点数统计' .
CALL METHOD cv_grid->set_frontend_layout
EXPORTING
is_layout = gs_layout.
CALL METHOD cv_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_HB1[]
it_fieldcatalog = gt_fieldcat1[].
WHEN 2.
gs_layout-GRID_TITLE = '责任部门与延迟天数统计' .
CALL METHOD cv_grid->set_frontend_layout
EXPORTING
is_layout = gs_layout.
CALL METHOD cv_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_HB2[]
it_fieldcatalog = gt_fieldcat2[].
WHEN 3.
gs_layout-GRID_TITLE = '责任部门与责任人异常零件点数统计TOP10' .
CALL METHOD cv_grid->set_frontend_layout
EXPORTING
is_layout = gs_layout.
CALL METHOD cv_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_HB3[]
it_fieldcatalog = gt_fieldcat3[].
WHEN OTHERS.
ENDCASE.
ENDIF.
ENDFORM. " FRM_SPLIT_CONT_SET
" FRM_FORECAST_COLUMN_FORMAT
*&---------------------------------------------------------------------*
*& Form FRM_SEND_EMAIL
*&---------------------------------------------------------------------*
* 发邮件
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_send_email .
DATA:ls_solix TYPE solix,
lc_xls_type TYPE so_obj_tp VALUE 'XLS', "文件格式
lr_sender TYPE REF TO if_sender_bcs, "发送者对象
lt_binary_content TYPE solix_tab,
lv_mailto TYPE ad_smtpadr,
lt_binary TYPE solix_tab,
lv_sent_to_all TYPE os_boolean,
lt_main_text TYPE bcsy_text,
lr_send_req TYPE REF TO cl_bcs,
lr_document TYPE REF TO cl_document_bcs,
lr_recipient TYPE REF TO if_recipient_bcs,
lr_bcs_exception TYPE REF TO cx_bcs.
* - 获取发送的邮箱
"二进制文件
LOOP AT gt_xml_table_forecast INTO ls_solix-line.
APPEND ls_solix TO lt_binary.
CLEAR ls_solix.
ENDLOOP.
TRY .
"创建发送请求
lr_send_req = cl_bcs=>create_persistent( ).
"创建和设置带有附件的文档
"从带有文本的内部表创建文档对象
APPEND '邮件正文!' TO lt_main_text.
lr_document = cl_document_bcs=>create_document(
i_type = 'HTM'
i_text = lt_main_text
i_subject = '邮件标题' ).
"将电子表格作为附件添加到文档对象
lr_document->add_attachment(
i_attachment_type = lc_xls_type
i_attachment_subject = '邮件附件名称'
i_att_content_hex = lt_binary ).
"添加文档对象以发送请求
lr_send_req->set_document( lr_document ).
"取得发送者
lr_sender = cl_sapuser_bcs=>create( 'BASIS').
lr_send_req->set_sender( lr_sender ).
"添加收件人(电子邮件地址)
lv_mailto = '[email protected]'. ""测试邮箱,需要修改为自己的邮箱,不要给博客作者发邮件
"创建接收对象
lr_recipient = cl_cam_address_bcs=>create_internet_address( lv_mailto ).
"添加接收对象以发送请求
lr_send_req->add_recipient( lr_recipient ).
"立即发送
CALL METHOD lr_send_req->set_send_immediately( 'X' ).
lr_send_req->set_status_attributes( i_requested_status = 'E' i_status_mail = 'R' ).
lv_sent_to_all = lr_send_req->send( i_with_error_screen = 'X' ).
COMMIT WORK.
IF lv_sent_to_all IS INITIAL.
MESSAGE i500(sbcoms) WITH lv_mailto.
ELSE.
MESSAGE s022(so).
ENDIF.
"异常处理
CATCH cx_bcs INTO lr_bcs_exception.
MESSAGE i865(so) WITH lr_bcs_exception->error_type.
ENDTRY.
ENDFORM. " FRM_SEND_EMAIL
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_XML_DATA
*&---------------------------------------------------------------------*
* 附件xml
*----------------------------------------------------------------------*
* -->P_1 text
*----------------------------------------------------------------------*
FORM frm_process_xml_data.
DATA: l_ixml TYPE REF TO if_ixml,
l_streamfactory TYPE REF TO if_ixml_stream_factory,
l_ostream TYPE REF TO if_ixml_ostream,
l_renderer TYPE REF TO if_ixml_renderer,
l_document TYPE REF TO if_ixml_document.
DATA: l_element_root TYPE REF TO if_ixml_element,
r_element TYPE REF TO if_ixml_element,
r_worksheet TYPE REF TO if_ixml_element,
r_table TYPE REF TO if_ixml_element,
r_column TYPE REF TO if_ixml_element,
r_row TYPE REF TO if_ixml_element,
r_cell TYPE REF TO if_ixml_element,
r_data TYPE REF TO if_ixml_element,
l_xml_size TYPE i,
lv_rc TYPE i,
l_value TYPE string.
* create a ixml factory
l_ixml = cl_ixml=>create( ).
* create the DOM object model
l_document = l_ixml->create_document( ).
* create workbook
PERFORM create_workbook USING l_document r_worksheet r_table.
* column formatting
PERFORM frm_forecast_column_format USING l_document r_table.
* XML作为二进制数据流保存到内表
* creating a stream factory
l_streamfactory = l_ixml->create_stream_factory( ).
* connect internal xml table to stream factory
l_ostream = l_streamfactory->create_ostream_itable( table = gt_xml_table_forecast ).
* rendering the document
l_renderer = l_ixml->create_renderer( ostream = l_ostream document = l_document ).
lv_rc = l_renderer->render( ).
* saving the xml document
l_xml_size = l_ostream->get_num_written_raw( ).
ENDFORM. " FRM_PROCESS_XML_DATA
" FRM_PROCESS_XML_DATA
*&---------------------------------------------------------------------*
*& Form CREATE_WORKBOOK
*&---------------------------------------------------------------------*
* 新建工作区
*----------------------------------------------------------------------*
* -->P_L_DOCUMENT text
* -->P_R_WORKSHEET text
* -->P_R_TABLE text
*----------------------------------------------------------------------*
FORM create_workbook USING l_document TYPE REF TO if_ixml_document
r_worksheet TYPE REF TO if_ixml_element
r_table TYPE REF TO if_ixml_element.
DATA: l_element_root TYPE REF TO if_ixml_element,
lr_ns_attribute TYPE REF TO if_ixml_attribute,
lr_element_properties TYPE REF TO if_ixml_element,
lr_styles TYPE REF TO if_ixml_element,
lr_style TYPE REF TO if_ixml_element,
lr_border TYPE REF TO if_ixml_element,
lr_format TYPE REF TO if_ixml_element,
l_value TYPE string.
* create root node 'workbook'
l_element_root = l_document->create_simple_element( name = 'Workbook' parent = l_document ).
l_element_root->set_attribute( name = 'xmlns' value = 'urn:schemas-microsoft-com:office:spreadsheet' ).
lr_ns_attribute = l_document->create_namespace_decl( name = 'ss' prefix = 'xmlns' uri = 'urn:schemas-microsoft-com:office:spreadsheet' ).
l_element_root->set_attribute_node( lr_ns_attribute ).
lr_ns_attribute = l_document->create_namespace_decl( name = 'x' prefix = 'xmlns' uri = 'urn:schemas-microsoft-com:office:excel' ).
l_element_root->set_attribute_node( lr_ns_attribute ).
* create node for document properties
lr_element_properties = l_document->create_simple_element( name = 'TEST_REPORT' parent = l_element_root ).
l_value = sy-uname.
l_document->create_simple_element( name = 'Author' value = l_value parent = lr_element_properties ).
* Styles(类似css,可以被cell使用)
lr_styles = l_document->create_simple_element( name = 'Styles' parent = l_element_root ).
* 预定义明细格式格式:Detail
lr_style = l_document->create_simple_element( name = 'Style' parent = lr_styles ).
lr_style->set_attribute_ns( name = 'ID' prefix = 'ss' value = 'Detail' ).
"格式居中
Lr_format = l_document->create_simple_element( name = 'Alignment' parent = lr_style ).
Lr_format->set_attribute_ns( name = 'Horizontal' prefix = 'ss' value = 'Center' ).
Lr_format->set_attribute_ns( name = 'Vertical' prefix = 'ss' value = 'Center' ).
Lr_format->set_attribute_ns( name = 'WrapText' prefix = 'ss' value = '1' ).
"边框
lr_border = l_document->create_simple_element( name = 'Borders' parent = lr_style ).
lr_format = l_document->create_simple_element( name = 'Border' parent = lr_border ).
lr_format->set_attribute_ns( name = 'Position' prefix = 'ss' value = 'Bottom' ).
lr_format->set_attribute_ns( name = 'LineStyle' prefix = 'ss' value = 'Continuous' ).
lr_format->set_attribute_ns( name = 'Weight' prefix = 'ss' value = '2' ).
lr_format = l_document->create_simple_element( name = 'Border' parent = lr_border ).
lr_format->set_attribute_ns( name = 'Position' prefix = 'ss' value = 'Left' ).
lr_format->set_attribute_ns( name = 'LineStyle' prefix = 'ss' value = 'Continuous' ).
lr_format->set_attribute_ns( name = 'Weight' prefix = 'ss' value = '2' ).
lr_format = l_document->create_simple_element( name = 'Border' parent = lr_border ).
lr_format->set_attribute_ns( name = 'Position' prefix = 'ss' value = 'Top' ).
lr_format->set_attribute_ns( name = 'LineStyle' prefix = 'ss' value = 'Continuous' ).
lr_format->set_attribute_ns( name = 'Weight' prefix = 'ss' value = '2' ).
lr_format = l_document->create_simple_element( name = 'Border' parent = lr_border ).
lr_format->set_attribute_ns( name = 'Position' prefix = 'ss' value = 'Right' ).
lr_format->set_attribute_ns( name = 'LineStyle' prefix = 'ss' value = 'Continuous' ).
lr_format->set_attribute_ns( name = 'Weight' prefix = 'ss' value = '2' ).
* worksheet
r_worksheet = l_document->create_simple_element( name = 'Worksheet' parent = l_element_root ).
r_worksheet->set_attribute_ns( name = 'Name' prefix = 'ss' value = 'Sheet1' ).
* table
r_table = l_document->create_simple_element( name = 'Table' parent = r_worksheet ).
r_table->set_attribute_ns( name = 'FullColumns' prefix = 'x' value = '1' ).
r_table->set_attribute_ns( name = 'FullRows' prefix = 'x' value = '1' ).
ENDFORM. " CREATE_WORKBOOK
*&---------------------------------------------------------------------*
*& Form FRM_FORECAST_COLUMN_FORMAT
*&---------------------------------------------------------------------*
* 表头与格式设置
*----------------------------------------------------------------------*
* -->P_L_DOCUMENT text
* -->P_R_TABLE text
*----------------------------------------------------------------------*
FORM frm_forecast_column_format USING l_document TYPE REF TO if_ixml_document
r_table TYPE REF TO if_ixml_element.
DATA: l_element_root TYPE REF TO if_ixml_element,
lr_column TYPE REF TO if_ixml_element,
lr_row TYPE REF TO if_ixml_element,
lr_cell TYPE REF TO if_ixml_element,
r_format TYPE REF TO if_ixml_element,
lr_data TYPE REF TO if_ixml_element,
l_value TYPE string.
* 设定列宽
lr_column = l_document->create_simple_element( name = 'Column' parent = r_table ).
lr_column->set_attribute_ns( name = 'Width' prefix = 'ss' value = '30' ).
DO 15 TIMES.
lr_column = l_document->create_simple_element( name = 'Column' parent = r_table ).
lr_column->set_attribute_ns( name = 'Width' prefix = 'ss' value = '66' ).
ENDDO.
* 设定列名
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_cell = l_document->create_simple_element( name = 'Cell' parent = lr_row ).
lr_cell->set_attribute_ns( name = 'MergeAcross' prefix = 'ss' value = '14').
lr_cell->set_attribute_ns( name = 'StyleID' prefix = 'ss' value = 'Detail').
lr_data = l_document->create_simple_element( name = 'Data' value = '责任部门与异常零件点数统计' parent = lr_cell ).
lr_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_row->set_attribute_ns( name = 'AutoFitHeight' prefix = 'ss' value = '1' ).
DATA lv_value TYPE string.
* data table1
LOOP AT gt_fieldcat1 INTO DATA(ls_fieldcat).
lr_cell = l_document->create_simple_element( name = 'Cell' parent = lr_row ).
lv_value = ls_fieldcat-coltext.
lr_cell->set_attribute_ns( name = 'StyleID' prefix = 'ss' value = 'Detail').
lr_data = l_document->create_simple_element( name = 'Data' value = lv_value parent = lr_cell ).
lr_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).
ENDLOOP.
LOOP AT gt_HB1 ASSIGNING FIELD-SYMBOL().
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
LOOP AT gt_fieldcat1 INTO ls_fieldcat.
ASSIGN COMPONENT ls_fieldcat-fieldname OF STRUCTURE TO FIELD-SYMBOL().
lr_cell = l_document->create_simple_element( name = 'Cell' parent = lr_row ).
lv_value = .
lr_cell->set_attribute_ns( name = 'StyleID' prefix = 'ss' value = 'Detail').
lr_data = l_document->create_simple_element( name = 'Data' value = lv_value parent = lr_cell ).
lr_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).
ENDLOOP.
ENDLOOP.
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_row->set_attribute_ns( name = 'AutoFitHeight' prefix = 'ss' value = '1' ).
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_cell = l_document->create_simple_element( name = 'Cell' parent = lr_row ).
lr_cell->set_attribute_ns( name = 'MergeAcross' prefix = 'ss' value = '6').
lr_cell->set_attribute_ns( name = 'StyleID' prefix = 'ss' value = 'Detail').
lr_data = l_document->create_simple_element( name = 'Data' value = '责任部门与延迟天数统计' parent = lr_cell ).
lr_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_row->set_attribute_ns( name = 'AutoFitHeight' prefix = 'ss' value = '1' ).
* data table1
LOOP AT gt_fieldcat2 INTO ls_fieldcat.
lr_cell = l_document->create_simple_element( name = 'Cell' parent = lr_row ).
lv_value = ls_fieldcat-coltext.
lr_cell->set_attribute_ns( name = 'StyleID' prefix = 'ss' value = 'Detail').
lr_data = l_document->create_simple_element( name = 'Data' value = lv_value parent = lr_cell ).
lr_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).
ENDLOOP.
LOOP AT gt_HB2 ASSIGNING FIELD-SYMBOL() .
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
LOOP AT gt_fieldcat2 INTO ls_fieldcat.
ASSIGN COMPONENT ls_fieldcat-fieldname OF STRUCTURE TO .
lr_cell = l_document->create_simple_element( name = 'Cell' parent = lr_row ).
lv_value = .
lr_cell->set_attribute_ns( name = 'StyleID' prefix = 'ss' value = 'Detail').
lr_data = l_document->create_simple_element( name = 'Data' value = lv_value parent = lr_cell ).
lr_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).
ENDLOOP.
ENDLOOP.
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_row->set_attribute_ns( name = 'AutoFitHeight' prefix = 'ss' value = '1' ).
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_cell = l_document->create_simple_element( name = 'Cell' parent = lr_row ).
lr_cell->set_attribute_ns( name = 'MergeAcross' prefix = 'ss' value = '15').
lr_cell->set_attribute_ns( name = 'StyleID' prefix = 'ss' value = 'Detail').
lr_data = l_document->create_simple_element( name = 'Data' value = '责任部门与责任人异常零件点数统计TOP10' parent = lr_cell ).
lr_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
lr_row->set_attribute_ns( name = 'AutoFitHeight' prefix = 'ss' value = '1' ).
* data table1
LOOP AT gt_fieldcat3 INTO ls_fieldcat.
lr_cell = l_document->create_simple_element( name = 'Cell' parent = lr_row ).
lv_value = ls_fieldcat-coltext.
lr_cell->set_attribute_ns( name = 'StyleID' prefix = 'ss' value = 'Detail').
lr_data = l_document->create_simple_element( name = 'Data' value = lv_value parent = lr_cell ).
lr_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).
ENDLOOP.
LOOP AT gt_HB3 ASSIGNING FIELD-SYMBOL() .
lr_row = l_document->create_simple_element( name = 'Row' parent = r_table ).
LOOP AT gt_fieldcat3 INTO ls_fieldcat.
ASSIGN COMPONENT ls_fieldcat-fieldname OF STRUCTURE TO .
lr_cell = l_document->create_simple_element( name = 'Cell' parent = lr_row ).
lv_value = .
lr_cell->set_attribute_ns( name = 'StyleID' prefix = 'ss' value = 'Detail').
lr_data = l_document->create_simple_element( name = 'Data' value = lv_value parent = lr_cell ).
lr_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).
ENDLOOP.
ENDLOOP.
ENDFORM. " FRM_FORECAST_COLUMN_FORMAT
分别双击红框中的代码创建屏幕,按钮,标题
双击 CALL SCREEN 9000.中的9000创建9000屏幕,
元素清单给OK_CODE
双击 CALL SCREEN 8000.中的8000创建8000屏幕,分屏展示的alv不用画屏幕
双击 SET PF-STATUS '9000'.中的9000 创建按钮
双击SET TITLEBAR '9000'.中的9000创建标题
常驻CSDN有什么问题欢迎留言