在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 = s_aufnr.
wa_itab[] = itab[].
endform. " GET_DATA
*&---------------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module status_0200 output.
set pf-status '0200'.
set titlebar '0200'.
lv_ctl_qty = s_menge.
if r_container is initial.
create object r_container
exporting
container_name = 'ALV_DATA'.
create object r_alv
exporting
i_parent = r_container.
perform set_layout_oo.
endif.
perform set_fieldcat_oo.
call method r_alv->set_table_for_first_display
exporting
is_layout = gs_layout
* it_toolbar_excluding = gt_toolbar
changing
it_fieldcatalog = gt_fieldcat
it_outtab = itab[].
*
* call method r_alv->refresh_table_display
* exporting
* is_stable = gs_stable.
endmodule. " STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*& Form SET_LAYOUT_OO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form set_layout_oo .
gs_layout-zebra = 'X'.
* gs_layout2-cwidth_opt = 'X'.
gs_layout-no_toolbar = 'X'.
* gs_layout-NO_ROWMOVE = 'X'.
* gs_layout-NO_HGRIDLN = 'X'.
gs_layout-no_rowmark = 'X'. " 隐藏行选择按钮
endform. " SET_LAYOUT_OO
*&---------------------------------------------------------------------*
*& Form SET_FIELDCAT_OO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form set_fieldcat_oo .
refresh gt_fieldcat.
fill_fieldcat: 'AUFNR' '' 'AFKO' 'AUFNR' '' '' 12 '' ''.
fill_fieldcat: 'PROJN' '' 'AFPO' 'PROJN' '' '' 10 '' ''.
fill_fieldcat: 'MATNR' '' 'MARA' 'MATNR' '' '' 18 '' ''.
fill_fieldcat: 'MATNR_D' 'Component' 'MARA' 'MATNR' '' '' 18 '' ''.
fill_fieldcat: 'WERKS' 'Plant' '' '' '' '' 6 '' ''.
fill_fieldcat: 'MENGE1' 'Compenent Qty' '' '' '' 'X' 17 'QUAN' 3.
fill_fieldcat: 'MENGE2' 'Assembly Qty' '' '' '' 'X' 17 'QUAN' 3.
fill_fieldcat: 'ZC' 'ZC' '' '' 'X' 'X' 6 '' ''.
endform. " SET_FIELDCAT_OO
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module user_command_0200 input.
code_ok = ok_code .
clear ok_code .
" Activate event data_changed
call method r_alv->check_changed_data.
case code_ok.
when 'BACK' or 'CANCEL' or 'EXIT'.
loop at itab.
read table wa_itab with key rspos = itab-rspos menge1 = itab-menge1 menge2 = itab-menge2.
if sy-subrc ne 0.
lv_flag = 'X'.
exit.
endif.
endloop.
if lv_flag = 'X'.
clear: lv_ans.
perform popup_info using 'The data has changed, and whether to save?'
changing lv_ans.
endif.
if lv_ans = '1'.
perform save_data_check.
endif.
clear:lv_flag.
refresh: itab,wa_itab.
leave to screen 0 .
when 'SAVE'.
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 'POPUP_TO_CONFIRM'
exporting
text_question = p_text
importing
answer = 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 = lv_total + itab-menge1 + itab-menge2.
endloop.
if lv_total ne lv_ctl_qty.
lv_control = 'X'.
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 = 'X'.
clear: lv_ans.
perform popup_info using 'The Total Qty Is not equal to Control Qty, and whether to save?'
changing lv_ans.
if lv_ans = '1'.
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 = 'X'.
itab-zctrl = 'X'.
else.
clear: itab-zctrl .
endif.
modify itab transporting zctrl.
endloop.
wa_itab[] = 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
________________ ______________________________
________________ ______________________________