在ALV修改column
*&---------------------------------------------------------------------*
*& Progarm : ZPPR032D Author : Jimmy Wong
*& Created : 11 Apr 2013 App : PP
*& Title : Change Production Order WIP by Inventory
*& Description : Change Production Order WIP by Inventory
*&---------------------------------------------------------------------*
*& Version Author Date description
*& Jimmy 11 Apr 2013 the first version
*& the last update time 2013.04.11 16:00
*&---------------------------------------------------------------------*
report zppr032d.
tables: aufk,mara.
data: ok_code like sy-ucomm,
code_ok like sy-ucomm.
data: lv_ctl_qty like zpp032b-menge1.
data: lv_ans type c.
data: lv_flag type c,
lv_control type c.
data: r_container type ref to cl_gui_custom_container,
r_alv type ref to cl_gui_alv_grid,
gs_stable type lvc_s_stbl.
data: gs_layout type lvc_s_layo,
gt_fieldcat type lvc_t_fcat,
xfc type lvc_s_fcat .
define fill_fieldcat.
clear xfc.
xfc-fieldname = &1.
xfc-reptext = &2.
xfc-coltext = &2.
xfc-scrtext_l = &2.
xfc-scrtext_m = &2.
xfc-scrtext_s = &2.
xfc-ref_table = &3.
xfc-ref_field = &4.
xfc-checkbox = &5.
xfc-edit = &6.
xfc-outputlen = &7.
xfc-datatype = &8.
xfc-decimals = &9.
append xfc to gt_fieldcat.
end-of-definition.
data: itab like table of zpp032b with header line.
data: wa_itab like table of zpp032b with header line.
selection-screen begin of block 1 with frame title text-001.
parameters : s_aufnr like aufk-aufnr obligatory.
parameters : s_menge like zpp032b-menge1 .
selection-screen end of block 1.
start-of-selection.
perform get_data.
if itab[] is initial.
message i003(zmm).
exit.
endif.
end-of-selection.
call screen 0200.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_data .
select *
into corresponding fields of table itab
from zpp032b
where aufnr &#61; s_aufnr.
wa_itab[] &#61; itab[].
endform. " GET_DATA
*&---------------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module status_0200 output.
set pf-status &#39;0200&#39;.
set titlebar &#39;0200&#39;.
lv_ctl_qty &#61; s_menge.
if r_container is initial.
create object r_container
exporting
container_name &#61; &#39;ALV_DATA&#39;.
create object r_alv
exporting
i_parent &#61; r_container.
perform set_layout_oo.
endif.
perform set_fieldcat_oo.
call method r_alv->set_table_for_first_display
exporting
is_layout &#61; gs_layout
* it_toolbar_excluding &#61; gt_toolbar
changing
it_fieldcatalog &#61; gt_fieldcat
it_outtab &#61; itab[].
*
* call method r_alv->refresh_table_display
* exporting
* is_stable &#61; gs_stable.
endmodule. " STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*& Form SET_LAYOUT_OO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form set_layout_oo .
gs_layout-zebra &#61; &#39;X&#39;.
* gs_layout2-cwidth_opt &#61; &#39;X&#39;.
gs_layout-no_toolbar &#61; &#39;X&#39;.
* gs_layout-NO_ROWMOVE &#61; &#39;X&#39;.
* gs_layout-NO_HGRIDLN &#61; &#39;X&#39;.
gs_layout-no_rowmark &#61; &#39;X&#39;. " 隐藏行选择按钮
endform. " SET_LAYOUT_OO
*&---------------------------------------------------------------------*
*& Form SET_FIELDCAT_OO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form set_fieldcat_oo .
refresh gt_fieldcat.
fill_fieldcat: &#39;AUFNR&#39; &#39;&#39; &#39;AFKO&#39; &#39;AUFNR&#39; &#39;&#39; &#39;&#39; 12 &#39;&#39; &#39;&#39;.
fill_fieldcat: &#39;PROJN&#39; &#39;&#39; &#39;AFPO&#39; &#39;PROJN&#39; &#39;&#39; &#39;&#39; 10 &#39;&#39; &#39;&#39;.
fill_fieldcat: &#39;MATNR&#39; &#39;&#39; &#39;MARA&#39; &#39;MATNR&#39; &#39;&#39; &#39;&#39; 18 &#39;&#39; &#39;&#39;.
fill_fieldcat: &#39;MATNR_D&#39; &#39;Component&#39; &#39;MARA&#39; &#39;MATNR&#39; &#39;&#39; &#39;&#39; 18 &#39;&#39; &#39;&#39;.
fill_fieldcat: &#39;WERKS&#39; &#39;Plant&#39; &#39;&#39; &#39;&#39; &#39;&#39; &#39;&#39; 6 &#39;&#39; &#39;&#39;.
fill_fieldcat: &#39;MENGE1&#39; &#39;Compenent Qty&#39; &#39;&#39; &#39;&#39; &#39;&#39; &#39;X&#39; 17 &#39;QUAN&#39; 3.
fill_fieldcat: &#39;MENGE2&#39; &#39;Assembly Qty&#39; &#39;&#39; &#39;&#39; &#39;&#39; &#39;X&#39; 17 &#39;QUAN&#39; 3.
fill_fieldcat: &#39;ZC&#39; &#39;ZC&#39; &#39;&#39; &#39;&#39; &#39;X&#39; &#39;X&#39; 6 &#39;&#39; &#39;&#39;.
endform. " SET_FIELDCAT_OO
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module user_command_0200 input.
code_ok &#61; ok_code .
clear ok_code .
" Activate event data_changed
call method r_alv->check_changed_data.
case code_ok.
when &#39;BACK&#39; or &#39;CANCEL&#39; or &#39;EXIT&#39;.
loop at itab.
read table wa_itab with key rspos &#61; itab-rspos menge1 &#61; itab-menge1 menge2 &#61; itab-menge2.
if sy-subrc ne 0.
lv_flag &#61; &#39;X&#39;.
exit.
endif.
endloop.
if lv_flag &#61; &#39;X&#39;.
clear: lv_ans.
perform popup_info using &#39;The data has changed, and whether to save?&#39;
changing lv_ans.
endif.
if lv_ans &#61; &#39;1&#39;.
perform save_data_check.
endif.
clear:lv_flag.
refresh: itab,wa_itab.
leave to screen 0 .
when &#39;SAVE&#39;.
perform save_data_check.
endcase.
endmodule. " USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
*& Form POPUP_Info
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_TEXT text
* -->P_ANS text
*----------------------------------------------------------------------*
form popup_info using p_text
changing p_ans.
call function &#39;POPUP_TO_CONFIRM&#39;
exporting
text_question &#61; p_text
importing
answer &#61; p_ans.
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. "POPUP_Info
*&---------------------------------------------------------------------*
*& Form SAVE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form check_control_qty.
data: lv_total like zpp032b-menge1.
clear:lv_control.
loop at itab.
lv_total &#61; lv_total &#43; itab-menge1 &#43; itab-menge2.
endloop.
if lv_total ne lv_ctl_qty.
lv_control &#61; &#39;X&#39;.
endif.
endform. "check_control_qty
*&---------------------------------------------------------------------*
*& Form SAVE_DATA_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form save_data_check .
perform check_control_qty.
if lv_control &#61; &#39;X&#39;.
clear: lv_ans.
perform popup_info using &#39;The Total Qty Is not equal to Control Qty, and whether to save?&#39;
changing lv_ans.
if lv_ans &#61; &#39;1&#39;.
perform save_data.
endif.
else.
perform save_data.
endif.
endform. " SAVE_DATA_CHECK
*&---------------------------------------------------------------------*
*& Form save_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form save_data .
clear:wa_itab[],wa_itab.
loop at itab.
if lv_control &#61; &#39;X&#39;.
itab-zctrl &#61; &#39;X&#39;.
else.
clear: itab-zctrl .
endif.
modify itab transporting zctrl.
endloop.
wa_itab[] &#61; itab[].
modify zpp032b from table itab[].
clear:lv_control.
endform. " SAVE_DATA
MANDT MANDT
AUFNR AUFNR
RSPOS RSPOS
MATNR MATNR
MATNR_D MATNR
WERKS WERKS_D
PROJN PS_PSP_ELE
VERPR VERPR
PEINH PEINH
MENGE1 BDMNG
MENGE2 MENGE_D
MEINS MEINS
ZCTRL CHAR1
ZC CHAR1
________________ ______________________________
________________ ______________________________