备注:此ALV包含指示灯,颜色,点击事件,相同F4,不同F4,相同下拉框,不同下拉框,
此代码包含点击SEND按钮触发事件,可以先屏蔽,如想学习XML跟内表相互转换,请点击这里
目录
1:创建程序
1.1:SE38创建一个程序ZWZ_FM_ALV1
定义4个包含程序
INCLUDE zwz_fm_alv1_top. *用于定义参数
INCLUDE zwz_fm_alv1_sel. *用于定义屏幕筛选条件
INCLUDE zwz_fm_alv1_class. *用于定义各种事件
INCLUDE zwz_fm_alv1_from. *用于定义各种方法
status1000
1.2: 定义zwz_fm_alv1_top
TYPE-POOLS: slis,icon.
TABLES:ekko,ekpo.
TYPES : BEGIN OF ty_alvshow,
ebeln TYPE ebeln,
bukrs TYPE bukrs,
bsart TYPE esart,
loekz TYPE eloek,
statu TYPE estak,
aedat TYPE erdat,
ernam TYPE ernam,
ebelp TYPE ebelp,
matnr TYPE matnr,
menge TYPE bstmg,
meins TYPE meins,
test TYPE ernam,
test2 TYPE ernam,
dd_handle TYPE int4, "不同下拉框
dd_handle2 TYPE int4, "相同下拉框
f4 TYPE ernam, "不同F4
f4_2 TYPE ernam, "相同F4
cellcolor TYPE lvc_t_scol, "单元格颜色定义
rowcolor TYPE char4, "控制行颜色
light TYPE char01,"指示灯
box TYPE char01,"是否选择此行数据
click TYPE char10,
END OF ty_alvshow.
FIELD-SYMBOLS : <fs_alvshow> TYPE ty_alvshow.
DATA : lt_alvshow TYPE TABLE OF ty_alvshow,
ls_alvshow TYPE ty_alvshow,
ls_handle TYPE int4.
DATA:lt_ztwz_table001 TYPE TABLE OF ztwz_table001,
ls_ztwz_table001 TYPE ztwz_table001.
DATA:ls_layout_lvc TYPE lvc_s_layo,
lt_fcat_lvc TYPE lvc_t_fcat,
ls_fcat_lvc TYPE lvc_s_fcat,
ls_event TYPE slis_alv_event,
lt_event TYPE slis_t_event,
lt_ddval TYPE lvc_t_drop, "下拉框
ls_ddval TYPE lvc_s_drop, "下拉框
lt_f4 TYPE lvc_t_f4,
ls_f4 TYPE lvc_s_f4,
lc_grid TYPE REF TO cl_gui_alv_grid,
ls_stbl TYPE lvc_s_stbl,
ls_color TYPE lvc_s_scol. "颜色定义.
1.3:定义ZWZ_FM_ALV1_SEL
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE TEXT-t01.
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln,
s_bukrs FOR ekko-bukrs,
s_aedat FOR ekko-aedat.
SELECTION-SCREEN END OF BLOCK block1.
START-OF-SELECTION.
*取数据
PERFORM frm_get_data.
*ALV展示
PERFORM frm_display_alv.
1.4:定义ZWZ_FM_ALV1_CLASS
CLASS lcl_event_receiver DEFINITION."alv显示f4和双击事件定义
PUBLIC SECTION.
METHODS : handle_f4
FOR EVENT onf4 OF cl_gui_alv_grid
IMPORTING e_fieldname
es_row_no
er_event_data
et_bad_cells,
catch_doubleclick
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no ,
handle_data_changed_finished
FOR EVENT data_changed_finished OF cl_gui_alv_grid
IMPORTING e_modified et_good_cells,
handle_cell_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING
e_row_id
e_column_id
es_row_no.
ENDCLASS. "lcl_event_receiver DEFINITION
CLASS lcl_event_receiver IMPLEMENTATION.
*搜索帮助
METHOD handle_f4.
PERFORM f4 USING e_fieldname
es_row_no
er_event_data
et_bad_cells.
ENDMETHOD. "handle_f4
*双击事件
METHOD catch_doubleclick.
PERFORM atdoubleclick USING e_row
e_column
es_row_no.
ENDMETHOD. "catch_doubleclick
*单击事件
METHOD handle_cell_click.
PERFORM handle_cell_click USING
e_row_id
e_column_id
es_row_no.
ENDMETHOD.
*修改后触发事件
METHOD handle_data_changed_finished.
PERFORM handle_data_changed_finished TABLES et_good_cells USING e_modified.
ENDMETHOD. "HANDLE_DATA_CHANGED
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
DATA:lc_event_receiver TYPE REF TO lcl_event_receiver.
1.5:定义ZWZ_FM_ALV1_FROM
*&---------------------------------------------------------------------*
*& 包含 ZWZ_FM_ALV1_FROM
*&---------------------------------------------------------------------*
DEFINE set_fieldcat.
CLEAR ls_fcat_lvc .
ls_fcat_lvc-fieldname = &1."内表的字段
ls_fcat_lvc-outputlen = &2."输出长度
ls_fcat_lvc-scrtext_l = &3."在ALV里面显示的名字
ls_fcat_lvc-just = &4."水平对齐方式,L左对齐,R右对齐。
ls_fcat_lvc-no_zero = &5."去除前导零
ls_fcat_lvc-edit = &6."是否可编辑
*下拉框
IF ls_fcat_lvc-fieldname = 'TEST'.
ls_fcat_lvc-drdn_field = 'DD_HANDLE'.
ELSEIF ls_fcat_lvc-fieldname = 'TEST2'.
ls_fcat_lvc-drdn_field = 'DD_HANDLE2'.
*搜索帮助
ELSEIF ls_fcat_lvc-fieldname = 'F4' OR ls_fcat_lvc-fieldname = 'F4_2'.
ls_fcat_lvc-f4availabl = 'X'. "检索帮助设置
* ls_fcat_lvc-ref_table = 'XXXXX'. "检索帮助设置
* ls_fcat_lvc-REF_FIELD = 'XXXXX'. "检索帮助设置
*列单一颜色
ELSEIF ls_fcat_lvc-fieldname = 'EBELN'.
ls_fcat_lvc-emphasize = 'C610'.
*要定义小数位3,否则编辑会自动缩小1000倍
ELSEIF ls_fcat_lvc-fieldname = 'MENGE'.
ls_fcat_lvc-decimals = '3'.
ls_fcat_lvc-datatype = 'QUAN'.
*设置单击属性
ELSEIF ls_fcat_lvc-fieldname = 'CLICK'.
ls_fcat_lvc-seltext = 'CLICK'.
ls_fcat_lvc-hotspot = 'X'.
ELSEIF ls_fcat_lvc-fieldname = 'BSART'.
ls_fcat_lvc-seltext = 'BSART'.
ls_fcat_lvc-hotspot = 'X'.
ENDIF.
APPEND ls_fcat_lvc TO lt_fcat_lvc .
END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_get_data .
SELECT
k~ebeln
k~bukrs
k~bsart
k~loekz
k~statu
k~aedat
k~ernam
p~ebelp
p~matnr
p~menge
p~meins
INTO CORRESPONDING FIELDS OF TABLE lt_alvshow
FROM ekko AS k
INNER JOIN ekpo AS p
ON p~ebeln = k~ebeln
WHERE k~ebeln IN s_ebeln
AND k~aedat IN s_aedat
AND k~bukrs IN s_bukrs.
LOOP AT lt_alvshow ASSIGNING <fs_alvshow> .
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = 'ICON_DISPLAY'
info = 'PDF'
IMPORTING
result = <fs_alvshow>-click
EXCEPTIONS
OTHERS = 0.
<fs_alvshow>-light = '2'.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_display_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display_alv .
PERFORM set_fieldcat.
PERFORM set_event.
PERFORM creat_dropdown_values."下拉框
PERFORM set_color."条件颜色设置
PERFORM show_alv.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form set_fieldcat
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM set_fieldcat .
set_fieldcat : 'EBELN' '' '采购订单' '' '' '',
'EBELP' '' '订单行号' '' '' '',
'BUKRS' '' '公司代码' '' '' '',
'BSART' '' '订单类型' '' '' '',
'LOEKZ' '' '删除标识' '' '' '',
'STATU' '' '订单状态' '' '' '',
'AEDAT' '' '创建日期' '' '' '',
'ERNAM' '' '创建人' '' '' '',
'MATNR' '' '物料号' '' '' '',
'MENGE' '13' '数量' '' '' 'X ',
'MEINS' '' '单位' '' '' '',
'TEST' '' '不同下拉框' '' '' 'X ',
'TEST2' '' '相同下拉框' '' '' 'X ',
'F4' '' '不同F4' '' '' 'X ',
'F4_2' '' '相同F4 ' '' '' 'X ',
'CLICK' '' '点击 ' '' '' ' '.
CLEAR:ls_layout_lvc.
ls_layout_lvc-zebra = 'X'.
ls_layout_lvc-cwidth_opt = 'X'.
ls_layout_lvc-ctab_fname = 'CELLCOLOR'. "ctab_fname单元格条件颜色控制设置
ls_layout_lvc-info_fname = 'ROWCOLOR'. "info_fname控制行颜色
ls_layout_lvc-box_fname = 'BOX'. "是否选择此行数据
ls_layout_lvc-excp_fname = 'LIGHT'. "指示灯
ENDFORM.
*&---------------------------------------------------------------------*
*& Form show_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM show_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
is_layout_lvc = ls_layout_lvc
it_fieldcat_lvc = lt_fcat_lvc
i_save = 'A'
it_events = lt_event
i_callback_pf_status_set = 'SET_STATUS1000'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'FRM_TOP_OF_PAGE'
TABLES
t_outtab = lt_alvshow
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.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form set_event
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM set_event .
ls_event-name = 'CALLER_EXIT'.
ls_event-form = 'CALLER_EXIT'.
APPEND ls_event TO lt_event.
CLEAR:ls_event.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form set_status1000
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM set_status1000 USING pt_extab TYPE slis_t_extab..
SET PF-STATUS 'STATUS1000'.
SET TITLEBAR 'TITLE1000'.
ENDFORM.
FORM frm_top_of_page.
DATA:lt_header TYPE slis_t_listheader,
ls_header TYPE slis_listheader.
REFRESH:lt_header.
CLEAR:ls_header.
ls_header-typ = 'H'.
ls_header-info = '采购订单详细报表'.
APPEND ls_header TO lt_header.
CLEAR:ls_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = lt_header
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form f4
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> E_FIELDNAME
*& --> ES_ROW_NO
*& --> ER_EVENT_DATA
*& --> ET_BAD_CELLS
*&---------------------------------------------------------------------*
FORM f4 USING p_e_fieldname
p_es_row_no TYPE lvc_s_roid
p_er_event_data TYPE REF TO cl_alv_event_data
p_et_bad_cells.
DATA:lt_ztwz_table001 TYPE TABLE OF ztwz_table001.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval,
ls_return TYPE ddshretval.
IF p_e_fieldname = 'F4'.
READ TABLE lt_alvshow INTO ls_alvshow INDEX p_es_row_no-row_id.
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_ztwz_table001
FROM ztwz_table001
WHERE ernam = ls_alvshow-ernam.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MANDT' "这个参数为帮助表中返回到ALV的字段的参数
value_org = 'S'
dynpprog = sy-repid "当前程序,不写会有问题
dynpnr = sy-dynnr "当前屏幕,不写会有问题
TABLES
value_tab = lt_ztwz_table001
* FIELD_TAB =
return_tab = lt_return
* DYNPFLD_MAPPING =
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF sy-subrc = 0.
READ TABLE lt_return INTO ls_return INDEX 1.
ls_alvshow-f4 = ls_return-fieldval.
MODIFY lt_alvshow FROM ls_alvshow INDEX p_es_row_no-row_id TRANSPORTING f4.
PERFORM refresh.
ENDIF.
p_er_event_data->m_event_handled = 'X'.
ELSEIF p_e_fieldname = 'F4_2'.
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_ztwz_table001
FROM ztwz_table001.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MANDT' "这个参数为帮助表中返回到ALV的字段的参数
value_org = 'S'
dynpprog = sy-repid "当前程序,不写会有问题
dynpnr = sy-dynnr "当前屏幕,不写会有问题
TABLES
value_tab = lt_ztwz_table001
* FIELD_TAB =
return_tab = lt_return
* DYNPFLD_MAPPING =
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
READ TABLE lt_alvshow INTO ls_alvshow INDEX p_es_row_no-row_id.
IF sy-subrc = 0.
READ TABLE lt_return INTO ls_return INDEX 1.
ls_alvshow-f4_2 = ls_return-fieldval.
MODIFY lt_alvshow FROM ls_alvshow INDEX p_es_row_no-row_id TRANSPORTING f4_2.
PERFORM refresh.
ENDIF.
p_er_event_data->m_event_handled = 'X'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form atdoubleclick
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> E_ROW
*& --> E_COLUMN
*& --> ES_ROW_NO
*&---------------------------------------------------------------------*
FORM atdoubleclick USING p_e_row
p_e_column
p_es_row_no TYPE lvc_s_roid.
READ TABLE lt_alvshow INTO ls_alvshow INDEX p_es_row_no-row_id.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form handle_data_changed
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM handle_data_changed_finished TABLES et_good_cells USING e_modified.
DATA:ls_cells TYPE lvc_s_modi.
LOOP AT et_good_cells INTO ls_cells.
READ TABLE lt_alvshow INTO ls_alvshow INDEX ls_cells-row_id.
ENDLOOP.
ENDFORM.
FORM caller_exit USING e_grid TYPE slis_data_caller_exit.
" USING I_EXTAB TYPE SLIS_T_EXTAB .
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* EXPORTING
* IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
* ET_EXCLUDING =
* E_REPID =
* E_CALLBACK_PROGRAM =
* E_CALLBACK_ROUTINE =
e_grid = lc_grid
* ET_FIELDCAT_LVC =
* ER_TRACE =
* E_FLG_NO_HTML =
* ES_LAYOUT_KKBLO =
* ES_SEL_HIDE =
* ET_EVENT_EXIT =
* ER_FORM_TOL =
* ER_FORM_EOL =
.
*设置F4搜索帮助
ls_f4-fieldname = 'F4'. "窗口时间参数(需要定义F4帮助按钮的字段)
ls_f4-register = 'X'.
ls_f4-getbefore = 'X'.
ls_f4-chngeafter = 'X'.
APPEND ls_f4 TO lt_f4.
CLEAR:ls_f4.
ls_f4-fieldname = 'F4_2'. "窗口时间参数(需要定义F4帮助按钮的字段)
ls_f4-register = 'X'.
ls_f4-getbefore = 'X'.
ls_f4-chngeafter = 'X'.
APPEND ls_f4 TO lt_f4.
CALL METHOD lc_grid->register_f4_for_fields
EXPORTING
it_f4 = lt_f4.
*设置下拉框
CALL METHOD lc_grid->set_drop_down_table
EXPORTING
it_drop_down = lt_ddval.
* 设置enter事件
CALL METHOD lc_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter
EXCEPTIONS
error = 1
OTHERS = 2.
" SET PF-STATUS 'STATUS' EXCLUDING I_EXTAB.
CREATE OBJECT lc_event_receiver.
SET HANDLER lc_event_receiver->handle_data_changed_finished FOR lc_grid.
SET HANDLER lc_event_receiver->catch_doubleclick FOR lc_grid.
SET HANDLER lc_event_receiver->handle_cell_click FOR lc_grid.
SET HANDLER lc_event_receiver->handle_f4 FOR lc_grid.
ENDFORM. "FM_BUTTON
*&---------------------------------------------------------------------*
*& Form creat_dropdown_values
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM creat_dropdown_values .
CLEAR:ls_handle.
ls_handle = 10.
LOOP AT lt_alvshow ASSIGNING <fs_alvshow>.
*不同下拉框
ls_handle = ls_handle + 1.
<fs_alvshow>-dd_handle = ls_handle.
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_ztwz_table001
FROM ztwz_table001
WHERE ernam = <fs_alvshow>-ernam .
LOOP AT lt_ztwz_table001 INTO ls_ztwz_table001.
ls_ddval-handle = ls_handle.
ls_ddval-value = ls_ztwz_table001-test.
APPEND ls_ddval TO lt_ddval.
ENDLOOP.
*相同下拉框
<fs_alvshow>-dd_handle2 = '1'.
ls_ddval-handle = '1'.
ls_ddval-value = 'test1'.
APPEND ls_ddval TO lt_ddval.
ls_ddval-handle = '1'.
ls_ddval-value = 'test2'.
APPEND ls_ddval TO lt_ddval.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form refresh
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM refresh .
ls_stbl-row = 'X'." 基于行的稳定刷新
ls_stbl-col = 'X'." 基于列稳定刷新
CALL METHOD lc_grid->refresh_table_display
EXPORTING
is_stable = ls_stbl.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form set_color
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM set_color .
LOOP AT lt_alvshow ASSIGNING <fs_alvshow>.
*单元格颜色
IF <fs_alvshow>-ernam = 'XX004'.
CLEAR:ls_color.
ls_color-fname = 'ERNAM'.
ls_color-color-col = '6'.
ls_color-color-int = '1'.
ls_color-color-inv = '1'.
APPEND ls_color TO <fs_alvshow>-cellcolor.
ELSEIF <fs_alvshow>-ernam = 'KF771'.
CLEAR:ls_color.
ls_color-fname = 'ERNAM'.
ls_color-color-col = '4'.
ls_color-color-int = '1'.
ls_color-color-inv = '1'.
APPEND ls_color TO <fs_alvshow>-cellcolor.
*行颜色
<fs_alvshow>-rowcolor = 'C711'.
ENDIF.
ENDLOOP.
ENDFORM.
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN 'SEND'.
DATA:ls_type TYPE char01,
lt_ztmm_kf614_po1 TYPE TABLE OF zsmm_kf614_po1,
ls_zsmm_kf614_po1 TYPE zsmm_kf614_po1,
ls_zsmm_kf614_xml1 TYPE zsmm_kf614_xml1.
DATA:lv_instring TYPE string,
lv_outstring TYPE string.
DATA:lo_error TYPE REF TO cx_transformation_error,
lv_transerrorstring TYPE string.
LOOP AT lt_alvshow INTO ls_alvshow WHERE box = 'X'.
MOVE-CORRESPONDING ls_alvshow TO ls_zsmm_kf614_po1.
APPEND ls_zsmm_kf614_po1 TO lt_ztmm_kf614_po1.
CLEAR:ls_zsmm_kf614_po1,ls_alvshow.
ENDLOOP.
*-------------------------------构建表-------------------------------------*
ls_zsmm_kf614_xml1-items = lt_ztmm_kf614_po1.
ls_zsmm_kf614_xml1-date = sy-datum.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object = 'ZDX'
ignore_buffer = 'X'
IMPORTING
number = ls_zsmm_kf614_xml1-number
EXCEPTIONS
interval_not_found = 1
number_range_not_intern = 2
object_not_found = 3
quantity_is_0 = 4
quantity_is_not_1 = 5
interval_overflow = 6
buffer_overflow = 7
OTHERS = 8.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
*-------------------------------END构建表-------------------------------------*
*表转换为XML
TRY.
CALL TRANSFORMATION zstrans_kf614_xml1
SOURCE order = ls_zsmm_kf614_xml1
RESULT XML lv_instring
OPTIONS xml_header = 'no'.
CATCH cx_transformation_error INTO lo_error.
lv_transerrorstring = lo_error->get_text( ).
ENDTRY.
SHIFT lv_instring BY 1 PLACES.
CONCATENATE '<?xml version="1.0" encoding="UTF-8"?>' lv_instring INTO lv_instring.
**调用类
*
* DATA:lo_proxy TYPE REF TO zcl_spoxyco_zfm_614_send_poxml,
* lo_sys_error TYPE REF TO cx_ai_system_fault,
* lo_app_error TYPE REF TO cx_ai_application_fault,
* ls_request TYPE zcl_spoxyzfm_614_send_poxml,
* ls_response TYPE zcl_spoxyzfm_614_send_poxmlres.
* DATA:lv_proxysyserror TYPE string,
* lv_proxyapperror TYPE string.
*
* TRY.
*
* CREATE OBJECT lo_proxy
* EXPORTING
* logical_port_name = 'LP01'.
*
* CATCH cx_ai_system_fault INTO lo_sys_error .
* lv_proxysyserror = lo_sys_error->get_text( ) .
* ENDTRY.
*
* ls_request-inputxml = lv_instring.
*
*
* TRY.
* CALL METHOD lo_proxy->zfm_614_send_poxml
* EXPORTING
* input = ls_request
* IMPORTING
* output = ls_response.
* CATCH cx_ai_system_fault INTO lo_sys_error .
* lv_proxysyserror = lo_sys_error->get_text( ) .
* ENDTRY.
*调用方法
CALL FUNCTION 'ZFM_614_SEND_POXML'
EXPORTING
inputxml = lv_instring
IMPORTING
outputxml = lv_outstring.
LOOP AT lt_alvshow ASSIGNING <fs_alvshow> WHERE box = 'X'.
<fs_alvshow>-light = '3'.
ENDLOOP.
PERFORM refresh.
WHEN OTHERS.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form handle_cell_click
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> E_ROW_ID
*& --> E_COLUMN_ID
*& --> ES_ROW_N
*&---------------------------------------------------------------------*
FORM handle_cell_click USING p_e_row_id
p_e_column_id
p_es_row_no TYPE lvc_s_roid.
READ TABLE lt_alvshow INTO ls_alvshow INDEX p_es_row_no-row_id.
DATA lo_alv TYPE REF TO cl_salv_table.
DATA: lo_functions TYPE REF TO cl_salv_functions_list.
DATA: lo_columns TYPE REF TO cl_salv_columns.
DATA: lo_display TYPE REF TO cl_salv_display_settings.
*单击显示ALV
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = lt_alvshow ).
CATCH cx_salv_msg.
ENDTRY.
lo_columns = lo_alv->get_columns( ). "获取对象
lo_columns->set_optimize( 'X' ). "设置行宽自适应
lo_functions = lo_alv->get_functions( ).
lo_functions->set_all( 'X' ).
lo_display = lo_alv->get_display_settings( ). "获取对象 "
lo_display->set_list_header( 'AA' ). "设置GUI抬头文本
IF lo_alv IS BOUND.
lo_alv->set_screen_popup(
start_column = 10
end_column = 110
start_line = 4
end_line = 14 ).
lo_alv->display( ).
ENDIF.
ENDFORM.