OOP ALV
来源:互联网 发布:易语言qq刷屏器源码 编辑:程序博客网 时间:2024/04/30 12:05
CLASS lcl_alv_receiver DEFINITION DEFERRED.
CLASS lcl_alv_receiver DEFINITION .
PUBLIC SECTION.
METHODS: handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive.
METHODS: handle_user_command FOR EVENT before_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_f4 FOR EVENT onf4 OF cl_gui_alv_grid
IMPORTING e_fieldname es_row_no er_event_data et_bad_cells.
ENDCLASS. "lcl_event_receiver DEFINITION
CLASS lcl_alv_receiver IMPLEMENTATION.
METHOD handle_toolbar.
* 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 'TEST_1' TO ls_toolbar-function.
* MOVE ICON_CHECKED TO ls_toolbar-icon.
* MOVE 'TEST flight' TO ls_toolbar-quickinfo.
* MOVE 'testing' TO ls_toolbar-text.
* MOVE SPACE TO ls_toolbar-disabled.
* APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD.
METHOD handle_user_command.
"PERFORM handle_user_command USING E_UCOMM.
ENDMETHOD.
METHOD handle_data_changed.
PERFORM handle_data_changed USING er_data_changed.
ENDMETHOD. "handle_data_changed
METHOD handle_f4.
PERFORM handle_f4_sel USING e_fieldname es_row_no er_event_data et_bad_cells.
ENDMETHOD.
ENDCLASS. "lcl_ALV_event_receiver
FORM handle_data_changed USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol.
data: wa_mod_data TYPE lvc_s_modi.
data: L_NAME LIKE ZSHIPPER-ZSHIPNAME,
L_ADDR LIKE ZSHIPPER-ZSHIPADDR,
L_ADDR2 LIKE ZSHIPPER-ZSHIPADDR2.
CLEAR: L_NAME, L_ADDR.
if er_data_changed is not initial. "說明數據有變化
G_CHANGE = 1.
endif.
SORT er_data_changed->mt_mod_cells by row_id.
SORT GT_SHIP by ZSHIPID.
loop at er_data_changed->mt_mod_cells into wa_mod_data where fieldname = 'ZSHIP'.
if wa_mod_data-value is not initial.
translate wa_mod_data-value to upper case. "否則錄入小寫時讀不到名稱,地址
read table GT_SHIP with key zshipid = wa_mod_data-value binary search.
if sy-subrc = 0.
L_NAME = GT_SHIP-ZSHIPNAME.
L_ADDR = GT_SHIP-ZSHIPADDR.
L_ADDR2 = GT_SHIP-ZSHIPADDR2.
endif.
endif.
CALL METHOD er_data_changed->modify_cell
EXPORTING
i_row_id = wa_mod_data-row_id
i_fieldname = 'ZNAME'
i_value = L_NAME.
CALL METHOD er_data_changed->modify_cell
EXPORTING
i_row_id = wa_mod_data-row_id
i_fieldname = 'ZADDR'
i_value = L_ADDR.
CALL METHOD er_data_changed->modify_cell
EXPORTING
i_row_id = wa_mod_data-row_id
i_fieldname = 'ZADDR2'
i_value = L_ADDR2.
endloop.
ENDFORM.
FORM handle_f4_sel USING e_fieldname TYPE lvc_fname
es_row_no TYPE lvc_s_roid
er_event_data TYPE REF TO cl_alv_event_data
et_bad_cells TYPE lvc_t_modi.
DATA: BEGIN OF return_tab OCCURS 0 .
INCLUDE STRUCTURE ddshretval .
DATA: END OF return_tab.
FIELD-SYMBOLS: <lt_f4> TYPE lvc_t_modi.
DATA: ls_f4 TYPE lvc_s_modi.
* (1)ZSHIP
if e_fieldname = 'ZSHIP'.
if GT_SHIP[] is initial.
MESSAGE TEXT-E05 TYPE 'I' DISPLAY LIKE 'W'.
EXIT.
endif.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = e_fieldname
value_org = 'S'
TABLES
value_tab = GT_SHIP[]
return_tab = return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ASSIGN er_event_data->m_data->* TO <lt_f4>.
IF NOT return_tab IS INITIAL.
ls_f4-fieldname = e_fieldname.
ls_f4-row_id = es_row_no-row_id.
ls_f4-value = return_tab-fieldval.
APPEND ls_f4 TO <lt_f4>.
clear: ls_f4.
read table GT_SHIP with key ZSHIPID = return_tab-fieldval.
ls_f4-fieldname = 'ZNAME'.
ls_f4-row_id = es_row_no-row_id.
ls_f4-value = GT_SHIP-ZSHIPNAME.
APPEND ls_f4 TO <lt_f4>.
clear: ls_f4.
ls_f4-fieldname = 'ZADDR'.
ls_f4-row_id = es_row_no-row_id.
ls_f4-value = GT_SHIP-ZSHIPADDR.
APPEND ls_f4 TO <lt_f4>.
clear: ls_f4.
ENDIF .
endif.
* (2)ZBILL
data: begin of L_IN occurs 0,
vbeln like vbfa-vbeln,
end of L_IN.
if e_fieldname = 'ZBILL'.
clear: L_IN, L_IN[].
read table it_all index es_row_no-row_id.
loop at GT_INVO where vbelv = it_all-vbeln and
posnv = it_all-posnr.
L_IN-vbeln = GT_INVO-vbeln.
append L_IN.
clear L_IN.
endloop.
if L_IN[] is initial.
MESSAGE TEXT-E05 TYPE 'I' DISPLAY LIKE 'W'.
EXIT.
endif.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = e_fieldname
value_org = 'S'
TABLES
value_tab = L_IN[]
return_tab = return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ASSIGN er_event_data->m_data->* TO <lt_f4>.
IF NOT return_tab IS INITIAL.
ls_f4-fieldname = e_fieldname.
ls_f4-row_id = es_row_no-row_id.
ls_f4-value = return_tab-fieldval.
APPEND ls_f4 TO <lt_f4>.
clear: ls_f4.
ENDIF .
endif.
er_event_data->m_event_handled = 'X'. "notice: necessary
ENDFORM.
*----------------------------------------------------------------------*
DATA: CC0999 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: CCALV TYPE REF TO cl_gui_alv_grid .
DATA: g_alv_application TYPE REF TO lcl_alv_receiver.
DATA: L_LAYOUT TYPE LVC_S_LAYO.
DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
DATA: L_VARIANT TYPE DISVARIANT.
FORM EXCLUE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
DATA: LS_EXCLUDE TYPE UI_FUNC.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MAXIMUM.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MINIMUM.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SUBTOT.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SUM.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_AVERAGE.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SORT_ASC.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SORT_DSC.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_DETAIL.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_GRAPH.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_INFO.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_MB_VARIANT.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_URL_COPY_TO_CLIPBOARD.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_XXL.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_WORD_PROCESSOR.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PC_FILE.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SEND.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_TO_OFFICE.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CALL_ABC.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_HTML.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PRINT_PREV.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_VIEW_EXCEL.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_VIEW_LOTUS.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
* LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_VIEW_GRID.
* APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CHECK.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PRINT_BACK.
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_INSERT_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_COPY_ROW.
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_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_PASTE_NEW_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
ENDFORM. "exclue_tb_functions
FORM DROP_DOWN_LIST0999.
DATA: lt_dropdown TYPE lvc_t_drop,
ls_dropdown TYPE lvc_s_drop.
data: L_vendor like table of ZVENDOR049 with header line.
clear: L_vendor, L_vendor[].
* ZPRI
ls_dropdown-handle = '1'.
ls_dropdown-value = 'N'.
APPEND ls_dropdown TO lt_dropdown.
ls_dropdown-handle = '1'.
ls_dropdown-value = 'M'.
APPEND ls_dropdown TO lt_dropdown.
* LIFNR
select * into corresponding fields of table L_vendor from ZVENDOR049.
loop at L_vendor.
ls_dropdown-handle = '2'.
ls_dropdown-value = L_vendor-lifnr.
APPEND ls_dropdown TO lt_dropdown.
endloop.
*
CALL METHOD CCALV->set_drop_down_table
EXPORTING
it_drop_down = lt_dropdown.
ENDFORM.
FORM ALV_REFRESH.
CALL METHOD CCALV->check_changed_data.
CALL METHOD CCALV->refresh_table_display "All refresh
EXCEPTIONS
FINISHED = 1
OTHERS = 2 .
ENDFORM.
FORM ADD_FIELD_DES USING L_EDIT_MASK TYPE C
L_EDIT TYPE C
L_FIELDNAME TYPE C
L_TABNAME TYPE C
L_KEY TYPE C
L_CHECKBOX TYPE C
L_F4 TYPE C
L_REF_FLD TYPE C
L_REF_TAB TYPE C
L_SELTEX_L TYPE C
L_OUTPUTLEN TYPE I.
CLEAR TY_FIELDCAT.
TY_FIELDCAT-EDIT_MASK = L_EDIT_MASK.
TY_FIELDCAT-EDIT = L_EDIT.
TY_FIELDCAT-FIELDNAME = L_FIELDNAME."must upper case
TY_FIELDCAT-TABNAME = L_TABNAME. "internal table name
TY_FIELDCAT-KEY = L_KEY. "column with key-color AND frozen
TY_FIELDCAT-CHECKBOX = L_CHECKBOX. "the column is checkbox
TY_FIELDCAT-F4AVAILABL = L_F4.
TY_FIELDCAT-REF_FIELD = L_REF_FLD.
TY_FIELDCAT-REF_TABLE = L_REF_TAB.
TY_FIELDCAT-COLTEXT = L_SELTEX_L.
TY_FIELDCAT-SELTEXT = L_SELTEX_L.
TY_FIELDCAT-OUTPUTLEN = L_OUTPUTLEN.
IF L_FIELDNAME = 'ZPRI'.
TY_FIELDCAT-DRDN_HNDL = '1'.
ENDIF.
IF L_FIELDNAME = 'LIFNR'.
TY_FIELDCAT-DRDN_HNDL = '2'.
ENDIF.
if L_FIELDNAME = 'BRGEW' or L_FIELDNAME = 'NTGEW' or
L_FIELDNAME = 'OKQTY' or L_FIELDNAME = 'DNQTY'.
TY_FIELDCAT-DATATYPE = 'P'.
endif.
if L_FIELDNAME = 'ZROHS'.
TY_FIELDCAT-LOWERCASE = 'X'.
endif.
APPEND TY_FIELDCAT TO IT_FIELDCAT.
ENDFORM. "SUB_FIELD_DES
FORM ALV_FIELDCAT.
CLEAR: IT_FIELDCAT, IT_FIELDCAT[].
PERFORM ADD_FIELD_DES USING '' 'X' 'CHECK' 'IT_ALL' '' 'X' '' '' ''
TEXT-A01 4 . "Check
PERFORM ADD_FIELD_DES USING '' 'X' 'ZPDATE' 'IT_ALL' '' '' '' 'ERDAT' 'VBAK'
TEXT-A02 10. "Date
PERFORM ADD_FIELD_DES USING '' 'X' 'ZPRI' 'IT_ALL' '' '' '' '' ''
TEXT-A43 10. "Print(N/M)
PERFORM ADD_FIELD_DES USING '' 'X' 'ZBILL' 'IT_ALL' '' '' 'X' '' ''
TEXT-A24 10. "Invoice
PERFORM ADD_FIELD_DES USING '' 'X' 'ZSHIP' 'IT_ALL' '' '' 'X' '' ''
TEXT-A26 10. "shipper's ID
PERFORM ADD_FIELD_DES USING '' '' 'ZNAME' 'IT_ALL' '' '' '' '' ''
TEXT-A03 15. "shipper's name
PERFORM ADD_FIELD_DES USING '' '' 'ZADDR' 'IT_ALL' '' '' '' '' ''
TEXT-A04 20. "shipper's address
PERFORM ADD_FIELD_DES USING '' '' 'ZADDR2' 'IT_ALL' '' '' '' '' ''
TEXT-A52 20. "shipper's address 2
if P_RAD1 = 'X'.
PERFORM ADD_FIELD_DES USING '' '' 'VBELN' 'IT_ALL' '' '' '' '' ''
TEXT-A05 10. "SO No.
endif.
if P_RAD2 = 'X'.
PERFORM ADD_FIELD_DES USING '' '' 'VBELN' 'IT_ALL' '' '' '' '' ''
TEXT-A25 10. "DN No.
endif.
PERFORM ADD_FIELD_DES USING '' '' 'POSNR' 'IT_ALL' '' '' '' '' ''
TEXT-A06 4 . "DN No. 或 SO No. <item>
PERFORM ADD_FIELD_DES USING '' '' 'VGBEL' 'IT_ALL' '' '' '' '' ''
TEXT-A34 10. "SO#
PERFORM ADD_FIELD_DES USING '' '' 'AUART' 'IT_ALL' '' '' '' '' ''
TEXT-A57 4 . "Sales Document Type
PERFORM ADD_FIELD_DES USING '' '' 'KUNNR' 'IT_ALL' '' '' '' '' ''
TEXT-A07 10. "DN No. 或 SO No. <Customer>
PERFORM ADD_FIELD_DES USING '' '' 'NAME1' 'IT_ALL' '' '' '' '' ''
TEXT-A08 40. "Name1
PERFORM ADD_FIELD_DES USING '' '' 'NAME2' 'IT_ALL' '' '' '' '' ''
TEXT-A09 40. "Name2
PERFORM ADD_FIELD_DES USING '' '' 'NAME3' 'IT_ALL' '' '' '' '' ''
TEXT-A10 40. "Name3
PERFORM ADD_FIELD_DES USING '' '' 'NAME4' 'IT_ALL' '' '' '' '' ''
TEXT-A11 40. "Name4
PERFORM ADD_FIELD_DES USING '' '' 'STR_SUPPL1' 'IT_ALL' '' '' '' '' ''
TEXT-A12 40. "Address1
PERFORM ADD_FIELD_DES USING '' '' 'STR_SUPPL2' 'IT_ALL' '' '' '' '' ''
TEXT-A13 40. "Address2
PERFORM ADD_FIELD_DES USING '' '' 'STR_SUPPL3' 'IT_ALL' '' '' '' '' ''
TEXT-A14 40. "Address3
PERFORM ADD_FIELD_DES USING '' '' 'LOCATION' 'IT_ALL' '' '' '' '' ''
TEXT-A15 40. "Address4
PERFORM ADD_FIELD_DES USING '' '' 'MATNR' 'IT_ALL' '' '' '' '' ''
TEXT-A16 15. "DN No. 或 SO No. Material
PERFORM ADD_FIELD_DES USING '' '' 'MTART' 'IT_ALL' '' '' '' '' ''
TEXT-A61 4 . "Material Type
PERFORM ADD_FIELD_DES USING '' 'X' 'ARKTX' 'IT_ALL' '' '' '' '' ''
TEXT-A17 40. "DN No. 或 SO No. Material Desc
PERFORM ADD_FIELD_DES USING '' 'X' 'MAKTE' 'IT_ALL' '' '' '' '' ''
TEXT-A32 40. "material EN desc
PERFORM ADD_FIELD_DES USING '' 'X' 'MAKTZ' 'IT_ALL' '' '' '' '' ''
TEXT-A33 40. "material ZH desc
PERFORM ADD_FIELD_DES USING '' 'X' 'BSTKD' 'IT_ALL' '' '' '' '' ''
TEXT-A35 35. "Customer po number
PERFORM ADD_FIELD_DES USING '' 'X' 'KDMAT' 'IT_ALL' '' '' '' '' ''
TEXT-A18 35. "DN No. 或 SO No. Part#
if P_RAD2 = 'X'.
PERFORM ADD_FIELD_DES USING '' '' 'DNQTY' 'IT_ALL' '' '' '' 'KWMENG' 'VBAP'
TEXT-A51 13. "DN No Total qty
endif.
PERFORM ADD_FIELD_DES USING '' 'X' 'ZQTY' 'IT_ALL' '' '' '' 'KWMENG' 'VBAP'
TEXT-A19 13. "DN No. 或 SO No. Qty
PERFORM ADD_FIELD_DES USING '' 'X' 'GROES' 'IT_ALL' '' '' '' '' ''
TEXT-A20 32. "Dimensions
PERFORM ADD_FIELD_DES USING '' 'X' 'NTGEW' 'IT_ALL' '' '' '' '' ''
TEXT-A21 10. "Net Weight
PERFORM ADD_FIELD_DES USING '' 'X' 'BRGEW' 'IT_ALL' '' '' '' '' ''
TEXT-A22 12. "Gross Weight
PERFORM ADD_FIELD_DES USING '' 'X' 'GEWEI' 'IT_ALL' '' '' 'X' 'GEWEI' 'MARA'
TEXT-A36 3 . "Weight Unit
PERFORM ADD_FIELD_DES USING '' 'X' 'UMREZ' 'IT_ALL' '' '' '' '' ''
TEXT-A23 7 . "Carton
PERFORM ADD_FIELD_DES USING '' 'X' 'WAERK' 'IT_ALL' '' '' 'X' 'WAERK' 'VBAK'
TEXT-A55 5 . "SO Currency
PERFORM ADD_FIELD_DES USING '' 'X' 'MEINS' 'IT_ALL' '' '' 'X' 'MEINS' 'MARA'
TEXT-A50 3 . "Unit
PERFORM ADD_FIELD_DES USING '' 'X' 'LIFNR' 'IT_ALL' '' '' '' '' ''
TEXT-A28 10. "Vendor number
PERFORM ADD_FIELD_DES USING '' 'X' 'LAND1' 'IT_ALL' '' '' '' '' ''
TEXT-A31 3 . "Country Key
PERFORM ADD_FIELD_DES USING '' 'X' 'ZREV' 'IT_ALL' '' '' '' '' ''
TEXT-A38 10. "REV
PERFORM ADD_FIELD_DES USING '' 'X' 'ZCAV' 'IT_ALL' '' '' '' '' ''
TEXT-A39 10. "Cavity
PERFORM ADD_FIELD_DES USING '' 'X' 'ZDEXP' 'IT_ALL' '' '' '' '' ''
TEXT-A40 3 . "Date of Expiry
PERFORM ADD_FIELD_DES USING '' 'X' 'ZLAB1' 'IT_ALL' '' '' '' '' ''
TEXT-A44 60. "Remark 1
PERFORM ADD_FIELD_DES USING '' 'X' 'ZLAB2' 'IT_ALL' '' '' '' '' ''
TEXT-A45 60. "Remark 2
PERFORM ADD_FIELD_DES USING '' 'X' 'ZCKNO' 'IT_ALL' '' '' '' '' ''
TEXT-A46 20. "Checking NO.
PERFORM ADD_FIELD_DES USING '' 'X' 'ZPALL' 'IT_ALL' '' '' '' '' ''
TEXT-A47 20. "Pallets
PERFORM ADD_FIELD_DES USING '' 'X' 'CHARG' 'IT_ALL' '' '' '' '' ''
TEXT-A48 10. "Batch Number
ENDFORM.
FORM GET_GT_F4.
CLEAR: gs_f4, gt_f4, gt_f4[].
gs_f4-fieldname = 'ZSHIP'.
gs_f4-register = 'X'.
gs_f4-getbefore = 'X'.
gs_f4-chngeafter = 'X'.
INSERT gs_f4 INTO TABLE gt_f4.
gs_f4-fieldname = 'ZBILL'.
gs_f4-register = 'X'.
gs_f4-getbefore = 'X'.
gs_f4-chngeafter = 'X'.
INSERT gs_f4 INTO TABLE gt_f4.
ENDFORM.
FORM SUB_SELECT USING P_SEL.
loop at it_all.
it_all-check = P_SEL.
modify it_all.
endloop.
G_CHANGE = 1. "數據有變化
ENDFORM.
FORM CHECK_SELECT USING P_CUR_ROWS.
data: r_rows type lvc_t_row.
clear: r_rows, r_rows[].
append P_CUR_ROWS to r_rows.
CALL METHOD CCALV->set_selected_rows
EXPORTING
IT_INDEX_ROWS = r_rows
IS_KEEP_OTHER_SELECTIONS = ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_0999 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0999 OUTPUT.
DATA: rt_extab TYPE slis_t_extab.
clear: rt_extab, rt_extab[].
if P_RAD2 <> 'X'. "不是DN,則不能打放行條(成品)
APPEND 'SLIP' TO rt_extab.
APPEND 'DNBG' TO rt_extab.
else. "-P_RAD1='X' "只有SO,否則不能打放行條(樣板)
APPEND 'SLIT' TO rt_extab.
APPEND 'DNTP' TO rt_extab.
endif.
SET PF-STATUS 'ZGS0999' EXCLUDING rt_extab.
SET TITLEBAR '0999'.
IF CC0999 IS INITIAL.
CREATE OBJECT CC0999
EXPORTING
CONTAINER_NAME = 'CON999'.
CREATE OBJECT CCALV
EXPORTING
i_parent = CC0999.
create object g_alv_application.
SET HANDLER g_alv_application->handle_f4 FOR CCALV.
* SET HANDLER g_alv_application->handle_user_command FOR CCALV.
* SET HANDLER g_alv_application->handle_toolbar FOR CCALV.
SET HANDLER g_alv_application->handle_data_changed FOR CCALV.
PERFORM GET_GT_F4.
CALL METHOD CCALV->register_f4_for_fields
EXPORTING
IT_F4 = GT_F4.
PERFORM ALV_FIELDCAT.
PERFORM EXCLUE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
PERFORM DROP_DOWN_LIST0999.
L_VARIANT = SY-REPID. "Layout fo report
L_LAYOUT-CWIDTH_OPT = 'X'. "auto fix to width
CALL METHOD CCALV->set_table_for_first_display
EXPORTING
IS_VARIANT = L_VARIANT
IS_LAYOUT = L_LAYOUT
I_SAVE = 'A'
IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
CHANGING
it_outtab = IT_ALL[]
IT_FIELDCATALOG = IT_FIELDCAT[].
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = CCALV.
CALL METHOD CCALV->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
CALL METHOD CCALV->REGISTER_EDIT_EVENT
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified. "auto refresh(錄入失去焦點時)
ENDIF.
ENDMODULE. " STATUS_0999 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0999 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0999 INPUT.
data: L_CHE type c length 1.
data: l_ans type c length 1.
GG_CODE = OK_CODE. "記憶999的TCODE,總不清除
*------------------------------------------------
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
SY-UCOMM = OK_CODE.
CASE SAVE_OK.
WHEN 'BACK'.
if G_CHANGE = 1. "數據有變化時,提示用戶是否需要保存數據
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
textline1 = TEXT-P01
titel = TEXT-P02
IMPORTING
answer = l_ans.
if l_ans EQ 'J'. "yes
PERFORM ALV_REFRESH.
PERFORM SAVE_DATA.
elseif l_ans EQ 'N'. "no
FREE: CC0999, CCALV, g_alv_application.
LEAVE TO SCREEN 0.
endif.
else.
FREE: CC0999, CCALV, g_alv_application.
LEAVE TO SCREEN 0.
endif.
WHEN 'ZSEL'.
PERFORM ALV_REFRESH.
PERFORM SUB_SELECT USING 'X'.
PERFORM ALV_REFRESH.
WHEN 'ZDSE'.
PERFORM ALV_REFRESH.
PERFORM SUB_SELECT USING ''.
PERFORM ALV_REFRESH.
WHEN 'ZCHE'.
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING 'SHIP' 'INVO' ''.
WHEN 'ZSAV'.
PERFORM ALV_REFRESH.
PERFORM SAVE_DATA.
* --------------------------------------------------------
WHEN 'PACK'. "packing list sreen:100 smartforms:ZSF_CNPC_PACKLIST
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING 'SHIP' 'INVO' ''.
PERFORM PACK_LIST_DATA.
WHEN 'DNBG'. "Delivery Note (Finished Goods) screen:801 smartforms:ZSF_CNPC_DN
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' 'CUST'.
PERFORM DELIVERY_NOTE.
WHEN 'SLIP'. "(Finished Goods) slip screen:800 smartforms:ZSLIP_049
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' 'CUST'.
PERFORM GOODS_SLIP_LIST.
WHEN 'DNTP'. "Delivery Note (Template) screen:801 smartforms:ZSF_CNPC_DN
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' 'CUST'.
PERFORM CHECK_ORDER_TYPE USING L_CHE. "檢查SO TYPE是否存在控制的范圍
IF L_CHE = 'X'.
PERFORM DELIVERY_NOTE.
ENDIF.
WHEN 'SLIT'. "(Template) slip screen:800 smartforms:ZSLIP_049
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' 'CUST'.
PERFORM CHECK_ORDER_TYPE USING L_CHE. "檢查SO TYPE是否存在控制的范圍
IF L_CHE = 'X'.
PERFORM GOODS_SLIP_LIST.
ENDIF.
WHEN 'DNVT'. "Vitalink delivery note screen 802 smartforms:ZSF_VTL_DN
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' 'CUST'.
PERFORM DELIVERY_NOTE_VTL.
* --------------------------------------------------------
WHEN 'BTLB'. "Batch label(M) screen:700 smartforms:ZSF_CNPC_BTLB
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' ''.
PERFORM BATCH_M_LABEL.
WHEN 'RELB'. "Ext. carton(R) screen:400 smartforms:ZSF_CNPC_EXTRCAR
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' ''.
PERFORM GET_SHOW_DIALOG USING TEXT-P04 TEXT-P02 l_ans.
if l_ans EQ 'J'. "yes
PERFORM RELB_GET_SAVE_DATA USING 'RELB' G_PRINUM.
elseif l_ans EQ 'N'. "no
PERFORM USER_LOCKED USING G_MAXNUM G_DIGIT G_PRINUM. "next form to check g_maxnum
PERFORM EXT_RELB_CARTON USING G_MAXNUM G_DIGIT G_PRINUM. "用戶更改羅輯不嚴密,G_MAXNUM值控制有問題,作用不大
endif.
WHEN 'NELB'. "Ext. carton(N) screen:300 smartforms:ZSF_CNPC_EXTNCAR
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' ''.
PERFORM GET_SHOW_DIALOG USING TEXT-P04 TEXT-P02 l_ans.
if l_ans EQ 'J'. "yes
PERFORM NELB_GET_SAVE_DATA USING 'NELB' G_PRINUM.
elseif l_ans EQ 'N'. "no
PERFORM USER_LOCKED USING G_MAXNUM G_DIGIT G_PRINUM. "next form to check g_maxnum
PERFORM EXT_N_CARTON USING G_MAXNUM G_DIGIT G_PRINUM. "用戶更改羅輯不嚴密,G_MAXNUM值控制有問題,作用不大
endif.
* --------------------------------------------------------
WHEN 'MILB'. "inner carton(M) screen:600 smartforms:ZCNPC_MILB
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' ''.
PERFORM INNER_MILB_CARTON.
WHEN 'NILB'. "inner carton(N) screen:200 smartforms:ZSF_CNPC_INNCAR
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' ''.
PERFORM INNER_N_CARTON.
WHEN 'MCLB'. "Per Carton(M) screen:500 smartforms:ZSF_CNPC_CARTON
PERFORM ALV_REFRESH.
PERFORM CHECK_MAIN_DATA USING '' '' ''.
PERFORM USER_LOCKED USING G_MAXNUM G_DIGIT G_PRINUM. "next form to check g_maxnum
PERFORM PER_M_CARTON USING G_MAXNUM G_DIGIT G_PRINUM. "G_MAXNUM有用
"--OTHERS
* --------------------------------------------------------
ENDCASE.
CLEAR SAVE_OK.
ENDMODULE. " USER_COMMAND_0999 INPUT
- OOP ALV
- ALV
- alv
- ALV
- alv
- ABAP DIALOG開發基本技術參考(主窗體100的INCLUDE-OOP ALV技術)
- OOP
- OOP
- OOP:
- OOP
- OOP
- OOP
- OOP
- .OOP
- oop
- OOP
- OOP
- OOP
- asp.net 动态加载用户控件
- Android高手进阶教程(一)
- dll工程的调试技巧
- 趣谈23种设计模式
- SQL Server CTE
- OOP ALV
- 带你领略 Google Collections 1
- ECLIPSE IDE FOR java EE新版支持PostgreSQL、JPA2.0、JSF 2.0
- Android高手进阶教程(二)之----Android Launcher抽屉类SlidingDrawer的使用!
- 架构师给程序员的一封信
- 什么是蘑菇管理定律
- 如何动态加载母板页面
- sql 2008评估期已过有关如何长级,企业试用版到期,升级为企业版
- android编译问题