ABAP 期初庫存批量導入 demo1

&---------------------------------------------------------------------
*& Report ZMMCP005
&---------------------------------------------------------------------

  • 作者: Liv
  • 完成日期:
  • 描述: 期初庫存導入
  • 需求簡要說明:
    &---------------------------------------------------------------------
  • 版本號 日期 作者 修改描述 功能更改說明書
    &---------------------------------------------------------------------
  • 1.0 2021/11/19 Liv 程序創建
    *&
    &---------------------------------------------------------------------
    REPORT zmmcp005 MESSAGE-ID 00.

TABLES:sscrfields.
TYPE-POOLS: slis.
INCLUDE .

DEFINE append_str.
CONCATENATE &1 &2 INTO &1 SEPARATED BY ‘,’.
END-OF-DEFINITION.

DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.

*&For DOC ALV
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
it_event TYPE slis_t_event,
it_layout TYPE slis_layout_alv,
w_callback_ucomm TYPE slis_formname,
i_list_comments TYPE slis_t_listheader,
w_list_comments LIKE LINE OF i_list_comments,
i_events TYPE slis_t_event,
w_events LIKE LINE OF i_events.

*定義隱藏標準按鈕的變量
DATA: wa_excluding TYPE slis_extab,
it_excluding TYPE slis_t_extab.

DEFINE initial_field.

wa_fieldcat-ddictxt = ‘L’.
wa_fieldcat-fieldname = &1 .
wa_fieldcat-seltext_l = &2 .
wa_fieldcat-seltext_m = &2 .
wa_fieldcat-seltext_s = &2 .
wa_fieldcat-reptext_ddic = &2.
wa_fieldcat-no_zero = &3.
wa_fieldcat-key = &4.
wa_fieldcat-just = &5.
wa_fieldcat-ref_fieldname = &6.
wa_fieldcat-ref_tabname = &7.

  • IF WA_FIELDCAT-FIELDNAME = ‘Z_KPI’.
  • WA_FIELDCAT-INTLEN = 18.
    
  • ENDIF.

APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
END-OF-DEFINITION.

*DATA gt_input LIKE TABLE OF zcpfit_0600 WITH HEADER LINE. "久其報表KPI數據源配置表

DATA:BEGIN OF gt_input OCCURS 0,
zlsh TYPE i,
zhxm TYPE i,
zks , " 開始
zjs , " 結束
zmess_h(255) , " 抬頭系統消息
zmess_i(255) , " 行項目系統消息
bldat LIKE gohead-bldat , " 憑證日期
budat LIKE gohead-budat , " 過賬日期
bwart LIKE godefault_tv-bwart , " 移動類型
bktxt LIKE gohead-bktxt , " 抬頭文本
werks LIKE goitem-werks, " 工廠
name1 LIKE t001w-name1 , " 工廠名稱
lgobe LIKE goitem-lgobe , " 庫存地點
zxh(20) , " 序號
matnr LIKE goitem-matnr , " 物料
maktx LIKE goitem-maktx , " 物料描述
xchar LIKE marc-xchar , " 批次啟用標識
charg LIKE goitem-charg , " 批次
erfmg LIKE goitem-erfmg , " 數量
meins LIKE mara-meins , " 計量單位
lifnr LIKE goitem-lifnr , " 供應商
kunnr LIKE goitem-kunnr , " 客戶
dmbtr LIKE goitem-dmbtr , " 總金額
sobkz LIKE goitem-sobkz , " 特殊庫存標識
kdauf LIKE goitem-kdauf , " 銷售訂單
kdpos LIKE goitem-kdpos , " 行項目
bklas LIKE mbew-bklas , " 系統評估類
vprsv LIKE mbew-vprsv , " 系統價格控制
stprs LIKE mbew-stprs , " 系統標準單價
zprice LIKE goitem-dmbtr , " 系統計算總價
class LIKE klah-class , " 系統分類代碼

  •   zflbm(20) ,                     "  分類代碼
    
  •   mwert01      LIKE rctms-mwert , "  特性1
    
  •   mwert02      LIKE rctms-mwert , "  特性2
    
  •   mwert03      LIKE rctms-mwert , "  特性3
    
  •   mwert04      LIKE rctms-mwert , "  特性4
    
  •   mwert05      LIKE rctms-mwert , "  特性5
    
  •   mwert06      LIKE rctms-mwert , "  特性6
    
  •   mwert07      LIKE rctms-mwert , "  特性7
    
  •   mwert08      LIKE rctms-mwert , "  特性8
    
  •   mwert09      LIKE rctms-mwert , "  特性9
    
  •   mwert10      LIKE rctms-mwert , "  特性10
    
  •   mwert11      LIKE rctms-mwert , "  特性11
    
  •   mwert12      LIKE rctms-mwert , "  特性12
    
  •   mwert13      LIKE rctms-mwert , "  特性13icon         TYPE icon_d, "圖標
    
    END OF gt_input.

DATA gt_input_hd LIKE TABLE OF gt_input WITH HEADER LINE.
DATA gt_input_it LIKE TABLE OF gt_input WITH HEADER LINE.

DATA BEGIN OF iexcel OCCURS 0. " excel上載內表
INCLUDE STRUCTURE alsmex_tabline.
DATA END OF iexcel.

DATA: error TYPE REF TO cx_root,
lv_message TYPE string.

DATA: gv_message_h TYPE string,
gv_message_i TYPE string,
gv_msg_h TYPE string,
gv_msg_i TYPE string.
DATA: gv_subrc LIKE sy-subrc.

SELECTION-SCREEN FUNCTION KEY 1.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.

PARAMETERS: p_file LIKE rlgrap-filename DEFAULT ‘’ . "文件目錄.
SELECTION-SCREEN SKIP.
*
*PARAMETERS: R1 RADIOBUTTON GROUP RG1,

  •        R2 RADIOBUTTON GROUP RG1.
    

SELECTION-SCREEN: END OF BLOCK b1.

INITIALIZATION.
sscrfields-functxt_01 = ‘模板下載’.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

PERFORM get_filename.

** 權限檢查

  • PERFORM AUTHORITY_CHECK.

AT SELECTION-SCREEN.

CASE sscrfields-ucomm .
WHEN ‘FC01’.
DATA rec_objdata LIKE wwwdatatab.
rec_objdata-relid = ‘MI’.
rec_objdata-objid = ‘ZMMCP005’.
** 下載模版
CALL FUNCTION ‘DOWNLOAD_WEB_OBJECT’
EXPORTING
key = rec_objdata
destination = p_file.
WHEN OTHERS.
ENDCASE.

*-----------------------------------------------------------------------

  • START-OF-SELECTION
    *-----------------------------------------------------------------------

START-OF-SELECTION.

PERFORM read_data .
PERFORM check_data .

PERFORM initialize_fieldcat .
PERFORM build_layout .
PERFORM display_alv TABLES gt_input[].

&---------------------------------------------------------------------
*& Form READ_DATA
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------

  • –> p1 text
  • <-- p2 text
    ----------------------------------------------------------------------
    FORM read_data .

FIELD-SYMBOLS <fs_excel> LIKE LINE OF iexcel.
CLEAR: iexcel[],
iexcel.

*上載excel文件
CALL FUNCTION ‘ALSM_EXCEL_TO_INTERNAL_TABLE’
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 3
i_end_col = 50
i_end_row = 5000
TABLES
intern = iexcel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE: / 'EXCEL 上載失敗 ', p_file, sy-subrc.
STOP.
ELSE.
SORT iexcel BY row col.
ENDIF.

*excel內表中的數據放到內表中
LOOP AT iexcel ASSIGNING <fs_excel> .

  • CONDENSE <fs_excel>-value NO-GAPS.
    CASE <fs_excel>-col.
    WHEN 1. "開始
    gt_input-zks = <fs_excel>-value.
    WHEN 2. "結束
    gt_input-zjs = <fs_excel>-value.
    WHEN 4. "憑證日期
    gt_input-bldat = <fs_excel>-value.
    WHEN 5. "過賬日期
    gt_input-budat = <fs_excel>-value.
    WHEN 6. "移動類型
    gt_input-bwart = <fs_excel>-value.
    WHEN 7. "抬頭文本
    gt_input-bktxt = <fs_excel>-value.
    WHEN 8. "工廠
    gt_input-werks = <fs_excel>-value.
    WHEN 9. "庫存地點
    gt_input-lgobe = <fs_excel>-value.
    WHEN 10. "序號
    gt_input-zxh = <fs_excel>-value.
    WHEN 11. "物料
    gt_input-matnr = <fs_excel>-value.
    WHEN 12. "物料描述
    gt_input-maktx = <fs_excel>-value.
    WHEN 13. "批次
    gt_input-charg = <fs_excel>-value.
    WHEN 14. "數量
    gt_input-erfmg = <fs_excel>-value.
    WHEN 15. "計量單位
    gt_input-meins = <fs_excel>-value.
    WHEN 16. "總金額
    gt_input-dmbtr = <fs_excel>-value.
    WHEN 17. "特殊庫存標識
    gt_input-sobkz = <fs_excel>-value.
    WHEN 18. "銷售訂單
    gt_input-kdauf = <fs_excel>-value.
    WHEN 19. "行項目
    gt_input-kdpos = <fs_excel>-value.
    ENDCASE.
AT END OF row.APPEND gt_input. CLEAR gt_input.
ENDAT.

ENDLOOP.

ENDFORM. "READ_DATA

FORM check_data .

DATA:l_tabix LIKE sy-tabix.
DATA:l_start_flag,l_end_flag.
DATA:l_lsh TYPE i,l_hxm TYPE i.

LOOP AT gt_input.
IF gt_input-zks = ‘S’.
l_lsh = l_lsh + 1.
l_hxm = 1.
ELSE.
l_hxm = l_hxm + 1.
ENDIF.

gt_input-zlsh = l_lsh.
gt_input-zhxm = l_hxm.
  •  zhxm
    

    MODIFY gt_input INDEX sy-tabix.
    ENDLOOP.

    LOOP AT gt_input WHERE zks = ‘S’ .
    gt_input_hd = gt_input.
    APPEND gt_input_hd.
    ENDLOOP.

    LOOP AT gt_input.

    l_tabix = sy-tabix.

    READ TABLE gt_input_hd WITH KEY zlsh = gt_input-zlsh.

    CLEAR: gt_input-zmess_h,gt_input-zmess_i,gt_input-icon,gv_msg_h,gv_message_h,gv_msg_i,gv_message_i.

    IF gt_input-zks = ‘S’ OR gt_input-zks IS INITIAL.
    ELSE.
    gt_input-icon = icon_led_red.
    gv_msg_h = ‘憑證開始標識不為S’.
    append_str gv_message_h gv_msg_h.
    ENDIF.

    IF gt_input-zjs = ‘E’ OR gt_input-zjs IS INITIAL.
    ELSE.
    gt_input-icon = icon_led_red.
    gv_msg_h = ‘憑證結束標識不為E’.
    append_str gv_message_h gv_msg_h.
    ENDIF.

    IF gt_input-zks = ‘S’ AND l_end_flag <> ‘E’ AND l_tabix <> 1.
    gt_input-icon = icon_led_red.
    gv_msg_h = ‘上筆記錄缺少憑證結束標識E’.
    append_str gv_message_h gv_msg_h.
    ENDIF.

    IF l_end_flag = ‘E’ AND gt_input-zks <> ‘S’ .
    gt_input-icon = icon_led_red.
    gv_msg_h = ‘憑證開始標識不為S’.
    append_str gv_message_h gv_msg_h.
    ENDIF.

    CLEAR l_end_flag.

    IF gt_input-zks = ‘S’ AND gt_input-bldat IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_h = ‘憑證日期不能為空’.
    append_str gv_message_h gv_msg_h.
    ENDIF.

    IF gt_input-bldat IS NOT INITIAL AND gt_input-zks <> ‘S’ .
    gt_input-icon = icon_led_red.
    gv_msg_h = ‘憑證開始標識不為S’.
    append_str gv_message_h gv_msg_h.
    ENDIF.

    IF gt_input-zks = ‘S’ AND gt_input-budat IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_h = ‘過賬日期不能為空’.
    append_str gv_message_h gv_msg_h.
    ENDIF.

    IF gt_input-zks = ‘S’ AND gt_input-bwart IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_h = ‘移動類型不能為空’.
    append_str gv_message_h gv_msg_h.
    ENDIF.

    IF gt_input-werks IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_i = ‘工廠不能為空’.
    append_str gv_message_i gv_msg_i.
    ENDIF.

    IF gt_input-lgobe IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_i = ‘庫存地點不能為空’.
    append_str gv_message_i gv_msg_i.
    ENDIF.

    IF gt_input-zxh IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_i = ‘序號不能為空’.
    append_str gv_message_i gv_msg_i.
    ENDIF.

    IF gt_input-matnr IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_i = ‘物料不能為空’.
    append_str gv_message_i gv_msg_i.
    ENDIF.

    IF gt_input-maktx IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_i = ‘物料描述不能為空’.
    append_str gv_message_i gv_msg_i.
    ENDIF.

    IF gt_input-erfmg IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_i = ‘數量不能為空’.
    append_str gv_message_i gv_msg_i.
    ENDIF.

    IF gt_input_hd-sobkz = ‘K’ AND gt_input-lifnr IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_i = ‘供應商不能為空’.
    append_str gv_message_i gv_msg_i.
    ENDIF.

    IF gt_input_hd-sobkz = ‘W’ AND gt_input-kunnr IS INITIAL.
    gt_input-icon = icon_led_red.
    gv_msg_i = ‘客戶不能為空’.
    append_str gv_message_i gv_msg_i.
    ENDIF.

  • IF gt_input-dmbtr IS INITIAL.

  •  gt_input-icon = icon_led_red.
    
  •  gv_msg_i = '總金額不能為空'.
    
  •  append_str gv_message_i gv_msg_i.
    
  • ENDIF.

IF  gt_input-xchar = 'X' AND gt_input-charg IS INITIAL.gt_input-icon = icon_led_red.gv_msg_i = '批次不能為空'.append_str gv_message_i gv_msg_i.
ENDIF.
  • IF GT_INPUT-XCHAR = ‘X’ AND GT_INPUT-ZFLBM IS INITIAL .
  •  GT_INPUT-ICON = ICON_LED_RED.
    
  •  GV_MSG_I = '分類代碼不能為空'.
    
  •  APPEND_STR GV_MESSAGE_I GV_MSG_I.
    
  • ENDIF.

*********系統取值

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' "物料前導零EXPORTINGinput        = gt_input-matnrIMPORTINGoutput       = gt_input-matnrEXCEPTIONSlength_error = 1OTHERS       = 2.

*批次啟用標識
SELECT SINGLE xchar
INTO gt_input-xchar
FROM marc
WHERE matnr = gt_input-matnr
AND werks = gt_input-werks.

*工廠名稱
SELECT SINGLE name1
INTO gt_input-name1
FROM t001w
WHERE werks = gt_input-werks.

*計量單位
SELECT SINGLE meins
INTO gt_input-meins
FROM mara
WHERE matnr = gt_input-matnr.

*系統標準單價
SELECT SINGLE stprs bklas vprsv
INTO ( gt_input-stprs,gt_input-bklas,gt_input-vprsv )
FROM mbewh
WHERE matnr = gt_input-matnr
AND bwkey = gt_input-werks
AND lfgja = ‘2018’
AND lfmon = ‘12’.

  •  AND vprsv = 'S'.
    

*系統計算總價
gt_input-zprice = gt_input-erfmg * gt_input-stprs.

*系統分類代碼
IF gt_input-xchar = ‘X’.
SELECT SINGLE klah~class
INTO gt_input-class
FROM inob
INNER JOIN kssk
ON inob~cuobj = kssk~objek
INNER JOIN klah
ON kssk~clint = klah~clint
WHERE inob~obtab = ‘MARA’
AND inob~objek = gt_input-matnr.
ENDIF.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGinput  = gt_input-kdaufIMPORTINGoutput = gt_input-kdauf.

IF  gt_input-xchar IS NOT INITIAL AND gt_input-charg IS INITIAL.gt_input-icon = icon_led_red.gv_msg_i = '批次不能為空'.append_str gv_message_i gv_msg_i.
ENDIF.
  • IF GT_INPUT-XCHAR IS NOT INITIAL AND GT_INPUT-ZFLBM IS INITIAL AND R2 IS NOT INITIAL.

  •  GT_INPUT-ICON = ICON_LED_RED.
    
  •  GV_MSG_I = '分類代碼不能為空'.
    
  •  APPEND_STR GV_MESSAGE_I GV_MSG_I.
    
  • ENDIF.

  • IF GT_INPUT-CLASS <> GT_INPUT-ZFLBM AND R2 IS NOT INITIAL.

  •  GT_INPUT-ICON = ICON_LED_RED.
    
  •  GV_MSG_I = '分類代碼與系統分類代碼不一致'.
    
  •  APPEND_STR GV_MESSAGE_I GV_MSG_I.
    
  • ENDIF.


IF gv_message_h IS NOT INITIAL.gt_input-zmess_h = gv_message_h.
ENDIF.IF gv_message_i IS NOT INITIAL.gt_input-zmess_i = gv_message_i.
ENDIF.IF  gt_input-zjs = 'E'.l_end_flag = 'E'.
ENDIF.MODIFY gt_input INDEX l_tabix.

ENDLOOP.

ENDFORM.

FORM get_filename .
CALL FUNCTION ‘WS_FILENAME_GET’
EXPORTING
def_path = ‘C’
mask = ‘,Excel,.XLSX;.XLS.’
title = ‘選擇文件’
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.

IF sy-subrc <> 0 AND sy-subrc = 3.
MESSAGE ‘選擇文件出錯’ TYPE ‘I’ DISPLAY LIKE ‘E’.
STOP.
ENDIF.
ENDFORM. "GET_FILENAME

FORM build_layout .
it_layout-zebra = ‘X’.
it_layout-detail_popup = ‘X’.
it_layout-colwidth_optimize = ‘X’.
ENDFORM.

FORM initialize_fieldcat .

  • initial_field ‘ZLSH’ ‘流水號’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • initial_field ‘ZHXM’ ‘行項目’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘ICON’ ‘狀態’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘ZMESS_H’ ‘抬頭消息’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘ZMESS_I’ ‘行項目消息’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘ZKS’ ‘開始’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘ZJS’ ‘結束’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘BLDAT’ ‘憑證日期’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘BUDAT’ ‘過賬日期’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘BWART’ ‘移動類型’ ‘’ ‘’ ‘’ ‘’ ‘’.

initial_field ‘BKTXT’ ‘抬頭文本’ ‘’ ‘’ ‘’ ‘’ ‘’.

initial_field ‘ZEMNUM’ ‘工號’ ‘’ ‘’ ‘’ ‘’ ‘’.
initial_field ‘ZPRJVD’ ‘施工單位’ ‘’ ‘’ ‘’ ‘’ ‘’.

initial_field ‘WERKS’ ‘工廠’ ‘’ ‘’ ‘’ ‘’ ‘’.

  • INITIAL_FIELD ‘NAME1’ ‘工廠名稱’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘LGOBE’ ‘庫存地點’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘ZXH’ ‘序號’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘MATNR’ ‘物料’ ‘X’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘MAKTX’ ‘物料描述’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘XCHAR’ ‘批次啟用標識’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘CHARG’ ‘批次’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘ERFMG’ ‘數量’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘MEINS’ ‘計量單位’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘LIFNR’ ‘供應商’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘KUNNR’ ‘客戶’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘DMBTR’ ‘總金額’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘SOBKZ’ ‘特殊庫存標識’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘KDAUF’ ‘銷售訂單’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘KDPOS’ ‘行項目’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘BKLAS’ ‘評估類’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘VPRSV’ ‘價格控制’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘STPRS’ ‘標準單價’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘ZPRICE’ ‘系統計算總價’ ‘’ ‘’ ‘’ ‘’ ‘’.
    initial_field ‘CLASS’ ‘系統分類代碼’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘ZFLBM’ ‘分類代碼’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT01’ ‘特性1’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT02’ ‘特性2’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT03’ ‘特性3’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT04’ ‘特性4’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT05’ ‘特性5’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT06’ ‘特性6’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT07’ ‘特性7’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT08’ ‘特性8’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT09’ ‘特性9’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT10’ ‘特性10’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT11’ ‘特性11’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT12’ ‘特性12’ ‘’ ‘’ ‘’ ‘’ ‘’.
  • INITIAL_FIELD ‘MWERT13’ ‘特性13’ ‘’ ‘’ ‘’ ‘’ ‘’.
    ENDFORM. " INITIALIZE_FIELDCAT

&---------------------------------------------------------------------
*& Form WRITE_BAPILOG_ALV
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------

  •  -->P_IT_DOC_RETURN  text
    

----------------------------------------------------------------------
FORM display_alv TABLES p_table STRUCTURE gt_input.

CLEAR:wa_excluding,it_excluding.

*設置要隱藏的FCODE

  • wa_excluding-fcode = ‘SAV_DATA’.
  • APPEND wa_excluding TO it_excluding.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
is_layout = it_layout
it_fieldcat = it_fieldcat

  • IT_EVENTS                = I_EVENTS
    i_callback_pf_status_set = 'SET_PF_STATUS'
    i_callback_user_command  = 'USER_COMMAND'
    i_default                = 'X'
    i_save                   = 'A'
    
    TABLES
    t_outtab = p_table
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.
    IF sy-subrc <> 0.
    MESSAGE ‘顯示錯誤.’ TYPE ‘W’.
    STOP.
    ENDIF.
    ENDFORM. " WRITE_BAPILOG_ALV

FORM set_pf_status USING rt_extab TYPE slis_t_extab.
rt_extab = it_excluding.

  • IF R1 = ‘X’.
    SET PF-STATUS ‘STANDARD’. "EXCLUDING rt_extab.
  • ELSE.
  • SET PF-STATUS ‘ST200’. "EXCLUDING rt_extab.
  • SET TITLEBAR ‘TIT100’ WITH ‘批次庫存特性信息補導入’.
  • ENDIF.
    ENDFORM. "SET_PF_STATUS

FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.

DATA: lt_params LIKE rsparams OCCURS 0 WITH HEADER LINE.
DATA:l_index TYPE i.
DATA: l_varid TYPE varid.

DATA: lr_grid TYPE REF TO cl_gui_alv_grid,
is_stable TYPE lvc_s_stbl.

CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.

CASE r_ucomm.
WHEN ‘TEST’.

  PERFORM frm_imp_data_test.CALL METHOD lr_grid->refresh_table_displayEXPORTINGis_stable = is_stable.WHEN 'IMPORT'.PERFORM frm_imp_data.
  •  CLEAR: gt_input,gt_input[].CALL METHOD lr_grid->refresh_table_displayEXPORTINGis_stable = is_stable.
    

    WHEN ‘IMPORT1’.

    PERFORM frm_imp_data_1.CALL METHOD lr_grid->refresh_table_displayEXPORTINGis_stable = is_stable.
    
  • WHEN ‘EXIT’.

  •  LEAVE PROGRAM.
    
  • WHEN ‘BACK’.

  •  LEAVE TO SCREEN 0.
    
  • WHEN ‘CANC’.

  •  LEAVE PROGRAM.
    

    WHEN OTHERS.

    ENDCASE.
    ENDFORM. "user_command

DATA:g_header LIKE bapi2017_gm_head_01.
DATA:g_mat LIKE bapi2017_gm_head_ret-mat_doc.
DATA:gt_item LIKE TABLE OF bapi2017_gm_item_create WITH HEADER LINE.
DATA:gt_ret LIKE TABLE OF bapiret2 WITH HEADER LINE.

DATA gs_bapi_te_xmkpf TYPE bapi_te_xmkpf.
DATA: gt_ext LIKE TABLE OF bapiparex WITH HEADER LINE.

DATA:txt(255) TYPE c.
DATA:code TYPE bapi2017_gm_code.

FORM frm_imp_data_test.

DATA:l_answer TYPE c.
DATA:l_subrc TYPE sy-subrc.

CLEAR: g_header,g_mat,gt_item,gt_item[],gt_ret,gt_ret[],txt,code.

IF gt_input[] IS INITIAL.
MESSAGE e001(00) WITH ‘無批導數據’.
ENDIF.

READ TABLE gt_input WITH KEY icon = icon_led_red.
IF sy-subrc = 0.
MESSAGE e001(00) WITH ‘導入數據存在錯誤’.
ENDIF.

READ TABLE gt_input INDEX 1.
IF gt_input-zmess_i IS NOT INITIAL.
MESSAGE e001(00) WITH ‘已生成物料憑證’.
ENDIF.

  • CALL FUNCTION ‘POPUP_TO_CONFIRM’

  • EXPORTING

  •  titlebar              = '提示'
    
  •  text_question         = '是否確認導入期初庫存'
    
  •  text_button_1         = '確認'
    
  •  text_button_2         = '取消'
    
  •  default_button        = '2'
    
  •  display_cancel_button = ' '
    
  •  popup_type            = 'ICON_MESSAGE_WARNING'
    
  • IMPORTING

  •  answer                = l_answer
    
  • EXCEPTIONS

  •  text_not_found        = 1
    
  •  OTHERS                = 2.
    
  • CHECK l_answer = ‘1’.
    REFRESH gt_ext.
    LOOP AT gt_input_hd.

    CLEAR:gt_input_it,gt_input_it[].
    LOOP AT gt_input WHERE zlsh = gt_input_hd-zlsh.
    gt_input_it = gt_input.
    APPEND gt_input_it.
    ENDLOOP.
    SORT gt_input_it BY zlsh zhxm.

BAPI*************
CLEAR: g_header,gt_item,gt_item[].

g_header-pstng_date = gt_input_hd-budat. " 憑證日期
g_header-doc_date   = gt_input_hd-bldat. " 過賬日期
g_header-header_txt   = gt_input_hd-bktxt. " 抬頭文本
  • "* header增強字段
  • gs_bapi_te_xmkpf-zemnum = gt_input_hd-zemnum.
  • gs_bapi_te_xmkpf-zprjvd = gt_input_hd-zprjvd.
  • gt_ext-structure = ‘BAPI_TE_XMKPF’.
  • gt_ext-valuepart1 = gs_bapi_te_xmkpf.
  • APPEND gt_ext.
  • CLEAR gt_ext.
  • CLEAR gs_bapi_te_xmkpf.
" 移動類型
IF gt_input_hd-bwart = '201' OR gt_input_hd-bwart = '202' OR gt_input_hd-bwart = '551'OR gt_input_hd-bwart = '552' OR gt_input_hd-bwart = '261' OR gt_input_hd-bwart = '262'.code = '03'.
ELSEIF gt_input_hd-bwart = '701' OR gt_input_hd-bwart = '702' OR gt_input_hd-bwart = '561' OR gt_input_hd-bwart = '562'  .code = '05'.
ELSE.code = '04'.
ENDIF.LOOP AT gt_input_it .gt_item-batch = gt_input_it-charg .     " 批次gt_item-material = gt_input_it-matnr.   " 物料gt_item-plant = gt_input_it-werks.      " 工廠gt_item-stge_loc = gt_input_it-lgobe.   " 庫存地點gt_item-move_type = gt_input_hd-bwart.  " 移動類型gt_item-entry_qnt = gt_input_it-erfmg.  " 數量gt_item-entry_uom = gt_input_it-meins.  " 計量單位gt_item-spec_stock = gt_input_it-sobkz. "特殊庫存標識gt_item-val_sales_ord = gt_input_it-kdauf. "銷售訂單gt_item-val_s_ord_item = gt_input_it-kdpos. "銷售訂單行項目
  •  gt_item-vendor = gt_input_hd-lifnr.     "供應商
    
  •  gt_item-customer = gt_input_hd-kunnr.   "客戶
    
  •  gt_item-amount_lc = gt_input_hd-zprice. " 總金額 zprice
    gt_item-amount_lc = gt_input_it-dmbtr. " 金額CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'           "供應商EXPORTINGinput  = gt_input_it-lifnrIMPORTINGoutput = gt_item-vendor.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'           "客戶EXPORTINGinput  = gt_input_it-kunnrIMPORTINGoutput = gt_item-customer.
    
  •  IF gt_input_hd-sobkz = 'W'.
    
  •    gt_item-customer = gt_input_hd-lifnr.
    
  •  ELSE.
    
  •    gt_item-vendor = gt_input_hd-lifnr.
    
  •  ENDIF.APPEND gt_item.
    CLEAR gt_item.
    
  •  stprs        LIKE mbew-stprs  , " 系統標準單價
    
  •  zprice       LIKE goitem-dmbtr ,  " 系統計算總價
    

    ENDLOOP.

    IF gt_item[] IS NOT INITIAL.
    PERFORM exec_bapi USING ‘X’
    CHANGING gt_input_hd-zmess_h
    l_subrc.
    ENDIF.

    gt_input-zmess_h = gt_input_hd-zmess_h.

    IF l_subrc = 0.
    gt_input-icon = icon_led_green.
    ELSE.
    gt_input-icon = icon_led_red.
    ENDIF.

    MODIFY gt_input TRANSPORTING zmess_h icon WHERE zlsh = gt_input_hd-zlsh
    AND zhxm = 1.

    ENDLOOP.

ENDFORM.

FORM frm_imp_data.

DATA:l_answer TYPE c.
DATA:l_subrc TYPE sy-subrc.

CLEAR: g_header,g_mat,gt_item,gt_item[],gt_ret,gt_ret[],txt,code.

IF gt_input[] IS INITIAL.
MESSAGE e001(00) WITH ‘無批導數據’.
ENDIF.

READ TABLE gt_input WITH KEY icon = icon_led_red.
IF sy-subrc = 0.
MESSAGE e001(00) WITH ‘導入數據存在錯誤’.
ENDIF.

READ TABLE gt_input WITH KEY icon = icon_led_green.
IF sy-subrc <> 0.
MESSAGE e001(00) WITH ‘未運行導入檢查’.
ENDIF.

READ TABLE gt_input INDEX 1.
IF gt_input-zmess_i IS NOT INITIAL.
MESSAGE e001(00) WITH ‘已生成物料憑證’.
ENDIF.

CALL FUNCTION ‘POPUP_TO_CONFIRM’
EXPORTING
titlebar = ‘提示’
text_question = ‘是否確認導入期初庫存’
text_button_1 = ‘確認’
text_button_2 = ‘取消’
default_button = ‘2’
display_cancel_button = ’ ’
popup_type = ‘ICON_MESSAGE_WARNING’
IMPORTING
answer = l_answer
EXCEPTIONS
text_not_found = 1
OTHERS = 2.

CHECK l_answer = ‘1’.

REFRESH gt_ext.

LOOP AT gt_input_hd.

CLEAR:gt_input_it,gt_input_it[].
LOOP AT  gt_input WHERE zlsh = gt_input_hd-zlsh.gt_input_it = gt_input.APPEND gt_input_it.
ENDLOOP.
SORT gt_input_it BY zlsh zhxm.

BAPI*************
CLEAR: g_header,gt_item,gt_item[].

g_header-pstng_date = gt_input_hd-budat. " 憑證日期
g_header-doc_date   = gt_input_hd-bldat. " 過賬日期
g_header-header_txt   = gt_input_hd-bktxt. " 抬頭文本
  • "* header增強字段

  • gs_bapi_te_xmkpf-zemnum = gt_input_hd-zemnum.

  • gs_bapi_te_xmkpf-zprjvd = gt_input_hd-zprjvd.

  • gt_ext-structure = ‘BAPI_TE_XMKPF’.

  • gt_ext-valuepart1 = gs_bapi_te_xmkpf.

  • APPEND gt_ext.

  • CLEAR gt_ext.

  • CLEAR gs_bapi_te_xmkpf.

  • G_HEADER-ZEMNUM = GT_INPUT_HD-ZEMNUM. " 工號

  •  G_HEADER-ZPRJVD   = GT_INPUT_HD-ZPRJVD. " 施工單位
    

    " 移動類型
    IF gt_input_hd-bwart = ‘201’ OR gt_input_hd-bwart = ‘202’ OR gt_input_hd-bwart = ‘551’
    OR gt_input_hd-bwart = ‘552’ OR gt_input_hd-bwart = ‘261’ OR gt_input_hd-bwart = ‘262’.
    code = ‘03’.
    ELSEIF gt_input_hd-bwart = ‘701’ OR gt_input_hd-bwart = ‘702’ OR gt_input_hd-bwart = ‘561’ OR gt_input_hd-bwart = ‘562’ .
    code = ‘05’.
    ELSE.
    code = ‘04’.
    ENDIF.

    LOOP AT gt_input_it .

    gt_item-batch = gt_input_it-charg .     " 批次
    gt_item-material = gt_input_it-matnr.   " 物料
    gt_item-plant = gt_input_it-werks.      " 工廠
    gt_item-stge_loc = gt_input_it-lgobe.   " 庫存地點
    gt_item-move_type = gt_input_hd-bwart.  " 移動類型
    gt_item-entry_qnt = gt_input_it-erfmg.  " 數量
    gt_item-entry_uom = gt_input_it-meins.  " 計量單位
    gt_item-spec_stock = gt_input_it-sobkz. "特殊庫存標識
    gt_item-val_sales_ord = gt_input_it-kdauf. "銷售訂單
    gt_item-val_s_ord_item = gt_input_it-kdpos. "銷售訂單行項目
    
  •  gt_item-vendor = gt_input_hd-lifnr.     "供應商
    
  •  gt_item-customer = gt_input_hd-kunnr.   "客戶
    
  •  gt_item-amount_lc = gt_input_hd-zprice. " 總金額 zprice
    gt_item-amount_lc = gt_input_it-dmbtr. " 金額CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'           "供應商EXPORTINGinput  = gt_input_it-lifnrIMPORTINGoutput = gt_item-vendor.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'           "客戶EXPORTINGinput  = gt_input_it-kunnrIMPORTINGoutput = gt_item-customer.
    
  •  IF gt_input_hd-sobkz = 'W'.
    
  •    gt_item-customer = gt_item-vendor.
    
  •  ELSE.
    
  •    gt_item-vendor = gt_item-customer.
    
  •  ENDIF.APPEND gt_item.
    CLEAR gt_item.
    
  •  stprs        LIKE mbew-stprs  , " 系統標準單價
    
  •  zprice       LIKE goitem-dmbtr ,  " 系統計算總價
    

    ENDLOOP.

    IF gt_item[] IS NOT INITIAL.
    PERFORM exec_bapi USING ‘’
    CHANGING gt_input_hd-zmess_i
    l_subrc.
    ENDIF.

    gt_input-zmess_h = ‘生成物料憑證’.
    gt_input-zmess_i = gt_input_hd-zmess_i.

    IF l_subrc = 0.
    gt_input-icon = icon_led_green.
    ELSE.
    gt_input-icon = icon_led_red.
    ENDIF.

    MODIFY gt_input TRANSPORTING zmess_h zmess_i icon WHERE zlsh = gt_input_hd-zlsh
    AND zhxm = 1.

    ENDLOOP.

ENDFORM.

更改物料特性BAPI變量******BEGIN

DATA: g_objek TYPE cuobn.
DATA: g_obtab TYPE tabelle.
DATA: g_klart TYPE klassenart.
DATA: g_class TYPE klasse_d.



DATA:g_objectkey LIKE bapi1003_key-object.
DATA:g_objecttable LIKE bapi1003_key-objecttable.
DATA:g_classnum LIKE bapi1003_key-classnum.
DATA:g_classtype LIKE bapi1003_key-classtype.
DATA:g_objectkey_long LIKE bapi1003_key-object_long.

DATA:gt_allocvaluesnumnew LIKE TABLE OF bapi1003_alloc_values_num WITH HEADER LINE.
DATA:gt_allocvaluescharnew LIKE TABLE OF bapi1003_alloc_values_char WITH HEADER LINE.
DATA:gt_allocvaluescurrnew LIKE TABLE OF bapi1003_alloc_values_curr WITH HEADER LINE.
DATA:gt_return LIKE TABLE OF bapiret2 WITH HEADER LINE.

更改物料特性BAPI變量******END

DATA:g_no(2) TYPE n . "當前字段
DATA g_field(50).
FIELD-SYMBOLS <fs_m>.
DATA: g_index TYPE i.

DATA g_msg TYPE string.

*特性值內表
DATA g_clint LIKE klah-clint.
DATA gt_ksml LIKE TABLE OF ksml WITH HEADER LINE.
DATA gs_cabn LIKE cabn.


FORM frm_imp_data_1 .

DATA:l_answer TYPE c.
DATA:l_subrc TYPE sy-subrc.

CLEAR: g_header,g_mat,gt_item,gt_item[],gt_ret,gt_ret[],txt,code.

IF gt_input[] IS INITIAL.
MESSAGE e001(00) WITH ‘無批導數據’.
ENDIF.

READ TABLE gt_input WITH KEY icon = icon_led_red.
IF sy-subrc = 0.
MESSAGE e001(00) WITH ‘導入數據存在錯誤’.
ENDIF.

CLEAR:gt_input_it,gt_input_it[].
LOOP AT gt_input WHERE class IS NOT INITIAL.
gt_input_it = gt_input.
APPEND gt_input_it.
ENDLOOP.

SORT gt_input_it BY zlsh zhxm.

*******更改物料特性BAPIBEGIN

LOOP AT gt_input_it.

CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT'EXPORTINGi_matnr = gt_input_it-matnr "物料編號i_charg = gt_input_it-charg "批次i_werks = gt_input_it-werks "工廠IMPORTINGe_objek = g_objek "對象名 (物料 + 批次) '000000101110001013                      Y121710003'e_obtab = g_obtab "'MCH1'e_klart = g_klart "類別種類 '023'e_class = g_class. "類別 'Z_101306_001'.

*特性類別

g_objectkey = g_objek.   "對象名 (物料 + 批次)
g_objecttable = g_obtab. "'MCH1'
g_classnum = g_class.    ""類別
g_classtype = g_klart.   "類別種類
g_objectkey_long = g_objek."對象名 (物料 + 批次)SELECT SINGLE clintINTO g_clintFROM klahWHERE klart = g_classtypeAND class = g_classnum.IF sy-subrc = 0.SELECT *INTO TABLE gt_ksmlFROM ksmlWHERE clint = g_clint.
ENDIF.SORT gt_ksml BY clint posnr.LOOP AT gt_ksml WHERE posnr <= 13.SELECT SINGLE *INTO gs_cabnFROM cabnWHERE atinn =  gt_ksml-imerk.g_index = sy-tabix.g_no = g_index.CONCATENATE 'GT_INPUT_IT-MWERT' g_no INTO g_field.ASSIGN (g_field) TO <fs_m>.IF gs_cabn-atfor =  'NUM'.IF <fs_m> IS ASSIGNED.gt_allocvaluesnumnew-charact = gs_cabn-atnam. "'ZDY_YJ_SI'gt_allocvaluesnumnew-value_from = <fs_m>.APPEND gt_allocvaluesnumnew.ENDIF.ELSEIF gs_cabn-atfor = 'CHAR'.gt_allocvaluescharnew-charact = gs_cabn-atnam. "'ZDY_YJ_SI'gt_allocvaluescharnew-value_char = <fs_m>.gt_allocvaluescharnew-value_neutral = <fs_m>.gt_allocvaluescharnew-value_char_long = <fs_m>.gt_allocvaluescharnew-value_neutral_long = <fs_m>.APPEND gt_allocvaluescharnew.ENDIF.ENDLOOP.

CALL FUNCTION 'BAPI_OBJCL_CHANGE'EXPORTINGobjectkey          = g_objectkeyobjecttable        = g_objecttableclassnum           = g_classnumclasstype          = g_classtype
  •   STATUS             = '1'
    
  •   STANDARDCLASS      =
    
  •   CHANGENUMBER       =
    
  •   KEYDATE            = SY-DATUM
    
  •   NO_DEFAULT_VALUES  = ' '
    
  •   KEEP_SAME_DEFAULTS = ' 'objectkey_long     = g_objectkey_long
    
  • IMPORTING

  •   CLASSIF_STATUS     =
    TABLESallocvaluesnumnew  = gt_allocvaluesnumnew[]allocvaluescharnew = gt_allocvaluescharnew[]allocvaluescurrnew = gt_allocvaluescurrnew[]return             = gt_return[].
    

    READ TABLE gt_return WITH KEY type = ‘E’.

    IF sy-subrc = 0.

    CLEAR g_msg.LOOP AT gt_return.CONCATENATE g_msggt_return-idgt_return-message_v1gt_return-message_v2gt_return-message_v3gt_return-message_v4gt_return-messageINTO g_msg SEPARATED BY ','.CONDENSE g_msg NO-GAPS.
    ENDLOOP.gt_input-zmess_h = '錯誤'.
    gt_input-zmess_i = g_msg.
    gt_input-icon = icon_led_red.
    

    ELSE .

    gt_input-icon = icon_led_green.
    gt_input-zmess_h = '成功'.
    COMMIT WORK AND WAIT.
    

    ENDIF.

    MODIFY gt_input TRANSPORTING zmess_h zmess_i icon WHERE zlsh = gt_input_it-zlsh
    AND zhxm = gt_input_it-zhxm.

*******更改物料特性BAPIEND
ENDLOOP.

ENDFORM.

&---------------------------------------------------------------------
*& Form EXEC_BAPI
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------
FORM exec_bapi USING p_test
CHANGING p_msg
p_subrc.

CALL FUNCTION ‘BAPI_GOODSMVT_CREATE’
EXPORTING
goodsmvt_header = g_header
goodsmvt_code = code
testrun = p_test

  • GOODSMVT_REF_EWM =
    

    IMPORTING

  • GOODSMVT_HEADRET =
    materialdocument = g_mat
    
  • MATDOCUMENTYEAR  =
    

    TABLES
    goodsmvt_item = gt_item[]

  • GOODSMVT_SERIALNUMBER   =
    return           = gt_ret[]
    
  • GOODSMVT_SERV_PART_DATA =
    extensionin      = gt_ext.
    

    READ TABLE gt_ret WITH KEY type = ‘E’.

    IF sy-subrc = 0.

    LOOP AT gt_ret.
    CONCATENATE p_msg
    gt_ret-id
    gt_ret-message_v1
    gt_ret-message_v2
    gt_ret-message_v3
    gt_ret-message_v4
    gt_ret-message
    INTO p_msg SEPARATED BY ‘,’.
    ENDLOOP.

    p_subrc = 1.

    ELSE .

    IF p_test = ‘X’.
    p_msg = ‘測試成功’.
    ELSE.
    p_msg = g_mat.
    COMMIT WORK AND WAIT.
    ENDIF.
    p_subrc = 0.
    ENDIF.

ENDFORM . "EXEC_BAPI

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38981.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38981.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38981.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uni-app 面容、指紋識別插件(uni-face-login)

面容、指紋識別插件(uni-face-login) 介紹 人臉指紋登錄授權&#xff0c;可以使用手機自帶的人臉、指紋進行生物識別&#xff0c;進而判斷是否機主本人&#xff0c;從而進行授權驗證&#xff0c;適配安卓、iOS、鴻蒙設備 猛戳這里去插件市場看看 使用 該插件支持鴻蒙、安卓…

UE4/5C++多線程插件制作(二十一、使用)

目錄 DemoPawn.h DemoPawn.cpp 會出現的bug 插件 相關的插件制作在上一節已經完成了。 具體的使用方式在第0章已經寫了,get之后去綁定即可。 而后筆者做了一個接口,具體的綁定方式也就在這個接口里面。 接下來最重要的是進行使用,對此我做了一個與藍圖相關的接口,里…

TypeScript教程(一)簡介與安裝

一、簡介 TypeScript 是 JavaScript 的一個超集&#xff0c;擴展了JavaScript的語法&#xff0c;因此現有的JavaScript可與TypeScript一起工作無需修改&#xff0c;支持 ECMAScript 6 標準&#xff08;ES6 教程&#xff09;。 語言特性&#xff1a; 1.類型批注和編譯時類型檢…

怎么學習AJAX相關技術? - 易智編譯EaseEditing

學習AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;相關技術可以讓你實現網頁的異步數據交互&#xff0c;提升用戶體驗。以下是一些學習AJAX技術的步驟和資源&#xff1a; HTML、CSS和JavaScript基礎&#xff1a; 首先&#xff0c;確保你已經掌握了基本的HTML…

【Redis】Redis三種集群模式-主從、哨兵、集群各自架構的優點和缺點對比

文章目錄 前言1. 單機模式2. 主從架構3. 哨兵4. 集群模式總結 前言 如果Redis的讀寫請求量很大&#xff0c;那么單個實例很有可能承擔不了這么大的請求量&#xff0c;如何提高Redis的性能呢&#xff1f;你也許已經想到了&#xff0c;可以部署多個副本節點&#xff0c;業務采用…

Android系統-進程-Binder1-概述

目錄 引言&#xff1a; 一次拷貝 Binder一次通信過程 應用啟動中的binder交互 C/S模式&#xff1a; Binder COMMAND BWR數據結構&#xff1a; 引言&#xff1a; Android的binder是從openbinder發展過來的。包括了binder驅動&#xff0c;Native層&#xff0c;Java層。用…

光耦繼電器:實現電氣隔離的卓越選擇

光耦繼電器是一種常用的電子元件&#xff0c;用于實現電氣隔離和信號傳輸。在工業控制、自動化系統和電力電子等領域&#xff0c;光耦繼電器具有獨特的特點和優勢。本文將從可靠性、隔離性、響應速度和適應性等方面對光耦繼電器的特點進行概述。 光耦繼電器是一種典型的固態繼電…

Mysql內儲存JSON字符串,根據條件進行查詢(包含多層級復雜JSON查詢)

1.模糊查詢json類型字段 存儲的數據格式&#xff08;字段名 people_json&#xff09;&#xff1a; {“name”: “zhangsan”, “age”: “13”, “gender”: “男”} 代碼如下&#xff08;示例&#xff09;&#xff1a; select * from table_name where people_json->$.n…

部署工業物聯網可以選擇哪些通信方案?

部署工業物聯網有諸多意義&#xff0c;諸如提升生產效率&#xff0c;降低管理成本&#xff0c;保障生產品質穩定&#xff0c;應對長期從業勞動力變化趨勢等。針對不同行業、場景&#xff0c;工業物聯網需要選擇不同的通信方案&#xff0c;以達到成本和效益的最佳平衡。本篇就簡…

安全頭響應頭(三)?X-Content-Type-Options

一 X-Content-Type-Options響應頭 說明&#xff1a;先寫個框架,后續補充 思考&#xff1a;請求類型是 "style" 和 "script" 是什么意思? script標簽 style StyleSheet JavaScript MIME type 文件擴展和Content-Type的映射關系 場景&#xff1a; 一個…

Mybatis 源碼 ∞ :雜七雜八

文章目錄 一、前言二、TypeHandler三、KeyGenerator四、Plugin1 Interceptor2 org.apache.ibatis.plugin.Plugin3. 調用場景 五、Mybatis 嵌套映射 BUG1. 示例2. 原因3. 解決方案 六、discriminator 標簽七、其他1. RowBounds2. ResultHandler3. MapKey 一、前言 Mybatis 官網…

mysql主從復制搭建(一主一從)

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言MySQL復制過程分為三部&#xff1a; 一、準備工作二、配置>主庫Master三、配置>從庫SlaveSlave_IO_Running: YesSlave_SQL_Running: Yes 四、測試至此&am…

8 | 美國航班數據分析

"在現代快節奏的生活中,航空旅行已經成為人們出行的重要方式之一。然而,航班的準時性一直以來都是旅客和航空公司關注的焦點。無論是商務出差還是休閑度假,乘客們都希望能夠在既定的時間內安全、準時地到達目的地。而對于航空公司而言,準點運營不僅關乎乘客體驗,還涉…

TCP的相關性質

文章目錄 流量控制擁塞控制擁塞窗口 延遲應答捎帶應答面向字節流粘包問題TCP的異常 流量控制 由于接收端處理數據的速度是有限的&#xff0c;如果發送端發的太快&#xff0c;那么接收端的緩沖區就可能會滿。此時如果發送端還發數據&#xff0c;就會出現丟包現象&#xff0c;并…

輕量級自動化測試框架WebZ

一、什么是WebZ WebZ是我用Python寫的“關鍵字驅動”的自動化測試框架&#xff0c;基于WebDriver。 設計該框架的初衷是&#xff1a;用自動化測試讓測試人員從一些簡單卻重復的測試中解放出來。之所以用“關鍵字驅動”模式是因為我覺得這樣能讓測試人員&#xff08;測試執行人員…

【Sklearn】基于線性判別法的數據分類預測(Excel可直接替換數據)

【Sklearn】基于線性判別法的數據分類預測(Excel可直接替換數據) 1.模型原理2.模型參數3.文件結構4.Excel數據5.下載地址6.完整代碼7.運行結果1.模型原理 線性判別分析(Linear Discriminant Analysis,簡稱LDA)是一種經典的模式識別和分類方法,它的目標是找到一個投影,將…

Linux系列講解 —— FTP協議的應用

簡單介紹一下FTP文件傳輸協議在linux系統中的應用。 目錄 0. 基本概念1. FTP Server1.1 安裝FTP Server1.2 FTP Server開啟和關閉1.3 查看FTP Server是否開啟1.4 FTP服務器配置 2. FTP Client2.1 lftp2.2 ftp2.3 sftp2.4 文件資源管理器集成的ftp和sftp 3. ftp常用命令 0. 基本…

IDE的下載和使用

IDE 文章目錄 IDEJETBRAIN JETBRAIN 官網下載對應的ide 激活方式 dxm的電腦已經把這個腳本下載下來了&#xff0c;腳本是macjihuo 以后就不用買了

Neo4j之SET基礎

在 Neo4j 中&#xff0c;SET 語句用于更新節點或關系的屬性。它允許你修改節點或關系的屬性值&#xff0c;可以單獨使用&#xff0c;也可以與其他查詢語句&#xff08;如 MATCH、CREATE、MERGE 等&#xff09;一起使用。以下是一些使用 SET 語句的常見例子&#xff0c;以及它們…

深入源碼分析kubernetes informer機制(四)DeltaFIFO

[閱讀指南] 這是該系列第四篇 基于kubernetes 1.27 stage版本 為了方便閱讀&#xff0c;后續所有代碼均省略了錯誤處理及與關注邏輯無關的部分。 文章目錄 client-go中的存儲結構DeltaFIFOdelta索引 keyqueue push操作delta push 去重 queue pop操作 總結 client-go中的存儲結構…