<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      預留導入

      *&---------------------------------------------------------------------*
      *& Report ZPPE338
      *&---------------------------------------------------------------------*
      *&
      *&---------------------------------------------------------------------*
      REPORT ZMME118.
      TABLES:SSCRFIELDS,RESB,RKPF.
      *&---定義ALV顯示的字段列及其描述等屬性
      DATA:GT_FIELDCAT TYPE TABLE OF LVC_S_FCAT,
           GS_FIELDCAT TYPE LVC_S_FCAT,
           GS_LAYOUT   TYPE LVC_S_LAYO,
           G_REPID     LIKE SY-REPID VALUE SY-REPID.

      DEFINE INIT_FIELDCAT.
        CLEAR gs_fieldcat.
        gs_fieldcat-fieldname = &1.
        gs_fieldcat-coltext = &2.
        gs_fieldcat-ref_table = &3.
        gs_fieldcat-ref_field = &4.
        gs_fieldcat-checkbox = &5.
        gs_fieldcat-edit = &6.
        gs_fieldcat-icon = &7.
        gs_fieldcat-outputlen = &8.
        APPEND gs_fieldcat TO gt_fieldcat.
      END-OF-DEFINITION.
      TYPES:BEGIN OF TY_UPLOAD,
              MATNR  TYPE RESB-MATNR,
              WERKS  TYPE RESB-WERKS,
              BWART  TYPE RESB-BWART,
              ERFMG  TYPE STRING,
              LGORT  TYPE RESB-LGORT,
              KOSTL  TYPE RKPF-KOSTL,
              BDTER  TYPE STRING,
              LGORT1 TYPE RESB-LGORT,
              MEINS  TYPE MARA-MEINS,
            END OF TY_UPLOAD.
      DATA:GT_UPLOAD TYPE TABLE OF TY_UPLOAD,
           GS_UPLOAD TYPE TY_UPLOAD.

      TYPES:BEGIN OF TY_ALV,
              SEL          TYPE C,
              ICON         TYPE CHAR4,
              MATNR        TYPE RESB-MATNR,
              MAKTX        TYPE MAKT-MAKTX,
              WERKS        TYPE RESB-WERKS,
              BWART        TYPE RESB-BWART,
              ERFMG        TYPE RESB-ERFMG,
              MEINS        TYPE MARA-MEINS,
              UMLGO        TYPE RESB-UMLGO,
              LGORT        TYPE RESB-LGORT,
              CHARG        TYPE RESB-CHARG,
              KOSTL        TYPE RKPF-KOSTL,
              AUFNR        TYPE RESB-AUFNR,
              BDTER        TYPE DATUM,
              USNAM        TYPE RKPF-USNAM,
              RSNUM        TYPE RESB-RSNUM,
              RSPOS        TYPE RESB-RSPOS,
              LGORT1       TYPE RESB-LGORT,
              XLOEK        TYPE RESB-XLOEK,
              MESSAGE(100TYPE C,
            END OF TY_ALV.
      DATA:GT_ALV TYPE TABLE OF TY_ALV,
           GS_ALV TYPE TY_ALV.
      FIELD-SYMBOLS:<FS_ALV> TYPE TY_ALV.


      *----------選擇屏幕--------------------------------------------------------
      SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
      PARAMETERS:P_PATH  LIKE RLGRAP-FILENAME.         "文件路徑
      SELECT-OPTIONS:S_WERKS FOR RESB-WERKS,
                     S_MATNR FOR RESB-MATNR,
                     S_BWART FOR RESB-BWART,
                     S_BDTER FOR RESB-BDTER,
                     S_KOSTL FOR RKPF-KOSTL,
                     S_LGORT FOR RESB-LGORT,
                     S_USNAM FOR RKPF-USNAM DEFAULT SY-UNAME NO INTERVALS NO-EXTENSION.
      PARAMETERS:R1 RADIOBUTTON GROUP GRP1 USER-COMMAND UC1 DEFAULT 'X',
                 R2 RADIOBUTTON GROUP GRP1.
      SELECTION-SCREEN FUNCTION KEY 1.
      SELECTION-SCREEN END OF BLOCK BLK2.

      INITIALIZATION.

        SSCRFIELDS-FUNCTXT_01 '下載模板'.

      AT SELECTION-SCREEN OUTPUT.

        PERFORM FRM_CHANGE_SCREEN.

      AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.

        PERFORM FRM_BROWSER_FILE.         "選擇屏幕獲取本地EXCEL

      AT SELECTION-SCREEN.

        IF SY-UCOMM EQ 'FC01'.

          PERFORM FRM_DOWNLOAD_TEMPLATE.

        ELSEIF SY-UCOMM EQ 'ONLI'.
          IF R1 'X'.
            IF  P_PATH IS INITIAL.
              MESSAGE '請選擇導入文件' TYPE 'S' DISPLAY LIKE 'W'.
              STOP.
            ENDIF.

            PERFORM FRM_UPLOAD_DATA.

      *--------------判斷上傳模板中是否有數據------------
            IF GT_UPLOAD IS INITIAL.
              MESSAGE '上傳模板數據不能為空' TYPE 'S' DISPLAY LIKE 'E'.
              EXIT.
            ENDIF.

            PERFORM FRM_SET_DATA.

          ELSE.

            PERFORM FRM_GET_DATA.

          ENDIF.

          PERFORM FRM_DISPLAY.
        ENDIF.

      START-OF-SELECTION.
      *&---------------------------------------------------------------------*
      *& Form FRM_CHANGE_SCREEN
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_CHANGE_SCREEN .
        DATA:LV_STR TYPE STRING.
        IF R1 'X'.
          LOOP AT SCREEN.
            LV_STR SCREEN-NAME.
            SEARCH LV_STR FOR 'S_WERKS'.
            IF SY-SUBRC 0.
              SCREEN-ACTIVE    0.
              SCREEN-INVISIBLE 1.
              MODIFY SCREEN.
            ENDIF.
            SEARCH LV_STR FOR 'S_MATNR'.
            IF SY-SUBRC 0.
              SCREEN-ACTIVE    0.
              SCREEN-INVISIBLE 1.
              MODIFY SCREEN.
            ENDIF.
            SEARCH LV_STR FOR 'S_KOSTL'.
            IF SY-SUBRC 0.
              SCREEN-ACTIVE    0.
              SCREEN-INVISIBLE 1.
              MODIFY SCREEN.
            ENDIF.
            SEARCH LV_STR FOR 'S_LGORT'.
            IF SY-SUBRC 0.
              SCREEN-ACTIVE    0.
              SCREEN-INVISIBLE 1.
              MODIFY SCREEN.
            ENDIF.
            SEARCH LV_STR FOR 'S_BWART'.
            IF SY-SUBRC 0.
              SCREEN-ACTIVE    0.
              SCREEN-INVISIBLE 1.
              MODIFY SCREEN.
            ENDIF.
            SEARCH LV_STR FOR 'S_BDTER'.
            IF SY-SUBRC 0.
              SCREEN-ACTIVE    0.
              SCREEN-INVISIBLE 1.
              MODIFY SCREEN.
            ENDIF.      
      SEARCH LV_STR FOR 'S_USNAM'.      
      IF SY-SUBRC 0.        
      SCREEN-ACTIVE    0.        
      SCREEN-INVISIBLE 1.        
      MODIFY SCREEN.      
      ENDIF.      LV_STR 
      SCREEN-NAME.      
      SEARCH LV_STR FOR 'P_PATH'.      
      IF SY-SUBRC 0.        
      SCREEN-ACTIVE    1.        
      SCREEN-INVISIBLE 0.        
      MODIFY SCREEN.      
      ENDIF.    
      ENDLOOP.  
      ELSE.    
      LOOP AT SCREEN.      LV_STR 
      SCREEN-NAME.      
      SEARCH LV_STR FOR 'S_WERKS'.      
      IF SY-SUBRC 0.        
      SCREEN-ACTIVE    1.        
      SCREEN-INVISIBLE 0.        
      MODIFY SCREEN.      
      ENDIF.      
      SEARCH LV_STR FOR 'S_MATNR'.      
      IF SY-SUBRC 0.        
      SCREEN-ACTIVE    1.        
      SCREEN-INVISIBLE 0.        
      MODIFY SCREEN.      
      ENDIF.      
      SEARCH LV_STR FOR 'S_KOSTL'.      
      IF SY-SUBRC 0.        
      SCREEN-ACTIVE    1.        
      SCREEN-INVISIBLE 0.        
      MODIFY SCREEN.      
      ENDIF.      
      SEARCH LV_STR FOR 'S_LGORT'.      
      IF SY-SUBRC 0.        
      SCREEN-ACTIVE    1.        
      SCREEN-INVISIBLE 0.        
      MODIFY SCREEN.      
      ENDIF.      
      SEARCH LV_STR FOR 'S_BWART'.      
      IF SY-SUBRC 0.        
      SCREEN-ACTIVE    1.        
      SCREEN-INVISIBLE 0.        
      MODIFY SCREEN.      
      ENDIF.      
      SEARCH LV_STR FOR 'S_BDTER'.      
      IF SY-SUBRC 0.        
      SCREEN-ACTIVE    1.        
      SCREEN-INVISIBLE 0.        
      MODIFY SCREEN.      
      ENDIF.      
      SEARCH LV_STR FOR 'S_USNAM'.      
      IF SY-SUBRC 0.        
      SCREEN-ACTIVE    1.        
      SCREEN-INVISIBLE 0.        
      MODIFY SCREEN.      
      ENDIF.      LV_STR 
      SCREEN-NAME.      
      SEARCH LV_STR FOR 'P_PATH'.      
      IF SY-SUBRC 0.        
      SCREEN-ACTIVE    0.        
      SCREEN-INVISIBLE 1.        
      MODIFY SCREEN.      
      ENDIF.    
      ENDLOOP.  
      ENDIF.
      ENDFORM.
      *&---------------------------------------------------------------------*
      *& Form FRM_F4_FOR_P_FILE
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_BROWSER_FILE .  
      DATA:LV_RC   TYPE I,       LV_USER 
      TYPE I,       LT_FILE 
      TYPE FILETABLE,       LS_FILE 
      TYPE FILE_TABLE.  

      CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG    
      EXPORTING      WINDOW_TITLE            
      '選擇文件'      DEFAULT_EXTENSION       
      '.xlsx'      FILE_FILTER             
      ''    
      CHANGING      FILE_TABLE              
      = LT_FILE      RC                      
      = LV_RC      USER_ACTION             
      = LV_USER    
      EXCEPTIONS      FILE_OPEN_DIALOG_FAILED 
      1      CNTL_ERROR              
      2      ERROR_NO_GUI            
      3      NOT_SUPPORTED_BY_GUI    
      4      
      OTHERS                  5.  
      IF SY-SUBRC <> 0.    
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO               
      WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.  
      ELSE.    
      CHECK LV_RC AND LV_USER <> 9.    
      READ TABLE LT_FILE INTO LS_FILE INDEX 1.    P_PATH 
      = LS_FILE-FILENAME.  
      ENDIF.
      ENDFORM.
      *&---------------------------------------------------------------------*
      *& Form FRM_DOWNLOAD
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_DOWNLOAD_TEMPLATE.  
      DATA: L_FILENAME   TYPE STRING,        L_PATH       
      TYPE STRING,        L_FULLPATH   
      TYPE STRING,        L_DESTINATON 
      TYPE RLGRAP-FILENAME,        L_OBJID      
      TYPE W3OBJID,        L_OBJECT     
      TYPE WWWDATATAB,        L_RC         
      TYPE SY-SUBRC.  

      CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG    
      EXPORTING      WINDOW_TITLE         
      'Download Template'      DEFAULT_EXTENSION    
      '.xlsx'      DEFAULT_FILE_NAME    
      'ZMME118'      FILE_FILTER          
      ''    
      CHANGING      FILENAME             
      = L_FILENAME      PATH                 
      = L_PATH      FULLPATH             
      = L_FULLPATH    
      EXCEPTIONS      CNTL_ERROR           
      1      ERROR_NO_GUI         
      2      NOT_SUPPORTED_BY_GUI 
      3      
      OTHERS               4.  
      IF SY-SUBRC 0.    L_OBJID 
      'ZMME118'.
      *   取得存儲對象數據    
      SELECT SINGLE *      
      INTO CORRESPONDING FIELDS OF L_OBJECT      
      FROM WWWDATA     
      WHERE SRTF2 0       
      AND RELID 'MI'    
      AND OBJID = L_OBJID.    
      IF SY-SUBRC NE 0.      
      MESSAGE '下載失敗,請用事務碼:SMW0上傳相應模板' TYPE 'E'.    
      ENDIF.    L_DESTINATON 
      = L_FULLPATH.    
      CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'      
      EXPORTING        
      KEY         = L_OBJECT        DESTINATION 
      = L_DESTINATON      
      IMPORTING        RC          
      = L_RC.    
      IF L_RC NE 0.      
      MESSAGE '下載失敗,請聯系管理員' TYPE 'E'.    
      ENDIF.  
      ENDIF.
      ENDFORM.
      *&---------------------------------------------------------------------*
      *& Form FRM_UPLOAD_DATA
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_UPLOAD_DATA .  
      DATA:LO_EXCEL_READER TYPE REF TO ZIF_EXCEL_READER,       LO_EXCEL        
      TYPE REF TO ZCL_EXCEL,       LO_WORKSHEET    
      TYPE REF TO ZCL_EXCEL_WORKSHEET,       LV_HIGHEST_ROW  
      TYPE INT4,       LV_FIDNAME      
      TYPE CHAR20,       LV_CONUM
      (2)     TYPE N,       LV_COL          
      TYPE I,       LV_ROW          
      TYPE I,       LV_COL_ALPHA    
      TYPE ZEXCEL_CELL_COLUMN_ALPHA,       LV_VALUE        
      TYPE ZEXCEL_CELL_VALUE.  
      FIELD-SYMBOLS:<FS_DYN> TYPE ANY.  

      CREATE OBJECT LO_EXCEL_READER TYPE ZCL_EXCEL_READER_2007.  LO_EXCEL       
      = LO_EXCEL_READER->LOAD_FILE( P_PATH ).  LO_WORKSHEET   
      = LO_EXCEL->GET_ACTIVE_WORKSHEET).  LV_HIGHEST_ROW 
      = LO_WORKSHEET->GET_HIGHEST_ROW).  

      REFRESH:GT_UPLOAD.  LV_ROW 
      0.  
      DO.    
      CLEAR:GS_UPLOAD.    LV_ROW 
      = LV_ROW + 1.    
      IF LV_ROW GT LV_HIGHEST_ROW.      
      EXIT.    
      ENDIF.    
      IF LV_ROW 1.      
      CONTINUE.    
      ENDIF.    LV_COL 
      0.    
      DO.      
      CLEAR:LV_VALUE.      LV_COL 
      = LV_COL + 1.      LV_COL_ALPHA 
      = ZCL_EXCEL_COMMON=>CONVERT_COLUMN2ALPHA( LV_COL ).      LO_WORKSHEET
      ->GET_CELL(         
      EXPORTING           IP_COLUMN 
      = LV_COL_ALPHA           IP_ROW    
      = LV_ROW         
      IMPORTING           EP_VALUE  
      = LV_VALUE ).      
      CASE LV_COL.        
      WHEN 1.         
      " GS_UPLOAD-BDTER = ZCL_EXCEL_COMMON=>EXCEL_STRING_TO_DATE( LV_VALUE ).          GS_UPLOAD
      -BDTER = LV_VALUE .        
      WHEN 2.          GS_UPLOAD
      -BWART = LV_VALUE.        
      WHEN 3.          GS_UPLOAD
      -WERKS = LV_VALUE.        
      WHEN 4.          GS_UPLOAD
      -KOSTL = LV_VALUE.        
      WHEN 5.          GS_UPLOAD
      -LGORT1 = LV_VALUE.        
      WHEN 6.          GS_UPLOAD
      -MATNR = LV_VALUE.          
      CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'            
      EXPORTING              
      INPUT  = GS_UPLOAD-MATNR            
      IMPORTING              
      OUTPUT = GS_UPLOAD-MATNR.        

      WHEN 7.          GS_UPLOAD
      -ERFMG = LV_VALUE.        
      WHEN .          GS_UPLOAD
      -MEINS = LV_VALUE.        
      WHEN 9.          GS_UPLOAD
      -LGORT = LV_VALUE.        


      WHEN OTHERS.      
      ENDCASE.      

      IF LV_COL EQ 9.        
      EXIT.      
      ENDIF.    
      ENDDO.    
      APPEND GS_UPLOAD TO GT_UPLOAD.  
      ENDDO.
      ENDFORM.
      *&---------------------------------------------------------------------*
      *& Form FRM_DISPLAY
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_DISPLAY .  

      PERFORM FRM_SET_LAYOUT.  

      PERFORM FRM_SET_FIELDCAT.  

      PERFORM FRM_DISPLAY_OUTPUT.

      ENDFORM.
      *&---------------------------------------------------------------------*
      *& Form FRM_SET_DATA
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_SET_DATA .  
      DATA:LV_MATNR TYPE MARC-MATNR.
      *==========將excel上傳數據給到alv  
      IF GT_UPLOAD[] IS NOT INITIAL.    
      SELECT MARC~WERKS,           MARC
      ~MATNR,           MARA
      ~MEINS,           MAKT
      ~MAKTX      
      INTO TABLE @DATA(LT_MARC)      
      FROM MARC      
      LEFT JOIN MARA ON MARA~MATNR = MARC~MATNR      
      LEFT JOIN MAKT ON MAKT~MATNR = MARC~MATNR                    
      AND MAKT~SPRAS = @SY-LANGU       
      FOR ALL ENTRIES IN @GT_UPLOAD     
      WHERE MARC~MATNR = @GT_UPLOAD-MATNR    
      AND MARC~WERKS = @GT_UPLOAD-WERKS.    

      SELECT WERKS,           LGORT      

      INTO TABLE @DATA(LT_T001L)      
      FROM T001L       
      FOR ALL ENTRIES IN @GT_UPLOAD     
      WHERE WERKS = @GT_UPLOAD-WERKS    
      AND LGORT = @GT_UPLOAD-LGORT.    

      SELECT BWART      
      INTO TABLE @DATA(LT_T156)      
      FROM T156       
      FOR ALL ENTRIES IN @GT_UPLOAD    
      WHERE BWART = @GT_UPLOAD-BWART.  
      ENDIF.  

      SORT LT_MARC BY WERKS MATNR.  
      SORT LT_T001L BY WERKS LGORT.  

      LOOP AT GT_UPLOAD INTO GS_UPLOAD.    
      CLEAR:GS_ALV.    
      MOVE-CORRESPONDING GS_UPLOAD TO GS_ALV.    

      READ TABLE LT_MARC INTO DATA(LS_MARCWITH KEY WERKS = GS_ALV-WERKS                                                   MATNR 
      = GS_ALV-MATNR BINARY SEARCH.    
      IF SY-SUBRC NE 0.      GS_ALV
      -MESSAGE = GS_ALV-MESSAGE && '物料不存在' .    
      ELSE.      GS_ALV
      -MEINS = LS_MARC-MEINS.      GS_ALV
      -MAKTX = LS_MARC-MAKTX.    
      ENDIF.    

      READ TABLE LT_T001L INTO DATA(LS_T001LWITH KEY WERKS = GS_ALV-WERKS                                                     LGORT 
      = GS_ALV-LGORT BINARY SEARCH.    
      IF SY-SUBRC NE 0.      GS_ALV
      -MESSAGE = GS_ALV-MESSAGE &&  '庫存地點不存在' .    
      ENDIF.    

      READ TABLE LT_T156 INTO DATA(LS_T156WITH KEY BWART = GS_ALV-BWART.    
      IF SY-SUBRC NE 0.      GS_ALV
      -MESSAGE = GS_ALV-MESSAGE &&  '移動類型不存在' .    
      ENDIF.    

      IF GS_ALV-MESSAGE IS NOT INITIAL.      GS_ALV
      -ICON '@5C@'.    
      ENDIF.    
      APPEND GS_ALV TO GT_ALV.    
      CLEAR GS_ALV.  
      ENDLOOP.
      ENDFORM.
      *&---------------------------------------------------------------------*
      *& Form FRM_FIELDCAT
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_SET_FIELDCAT .  
      REFRESH:GT_FIELDCAT.  
      IF R1 'X'.    INIT_FIELDCAT 
      'ICON'    '標識'     '' '' '' '' '' '4'.    INIT_FIELDCAT 
      'RSNUM'   '預留'     '' '' '' '' '' '10'.    INIT_FIELDCAT 
      'MATNR'   '物料編號' '' '' '' '' '' '40'.    INIT_FIELDCAT 
      'MAKTX'   '物料描述' '' '' '' '' '' '40'.    INIT_FIELDCAT 
      'WERKS'   '工廠'     '' '' '' '' '' ''.    INIT_FIELDCAT 
      'BWART'   '移動類型' '' '' '' '' '' ''.    INIT_FIELDCAT 
      'ERFMG'   '數量'     '' '' '' '' '' ''.    INIT_FIELDCAT 
      'MEINS'   '單位'     '' '' '' '' '' ''.    INIT_FIELDCAT 
      'LGORT'   '發貨庫位' '' '' '' '' '' ''.    INIT_FIELDCAT 
      'KOSTL'   '成本中心' '' '' '' '' '' ''.    INIT_FIELDCAT 
      'BDTER'   '需求日期' '' '' '' '' '' ''.    INIT_FIELDCAT 
      'LGORT1'   '收貨或發貨庫存地點' '' '' '' '' '' ''.    INIT_FIELDCAT 
      'MESSAGE' '信息'     '' '' '' '' '' '100'.  
      ELSE.    INIT_FIELDCAT 
      'SEL'     '選擇'     '' '' 'X' 'X' '' '4'.    INIT_FIELDCAT 
      'ICON'    '標識'     '' '' '' '' '' '4'.    INIT_FIELDCAT 
      'RSNUM'   '預留'     '' '' '' '' '' '10'.    INIT_FIELDCAT 
      'RSPOS'   '預留行'   '' '' '' '' '' '10'.    INIT_FIELDCAT 
      'XLOEK'   '刪除標識' '' '' '' '' '' '4'.    INIT_FIELDCAT 
      'MATNR'   '物料編號' '' '' '' '' '' '40'.    INIT_FIELDCAT 
      'MAKTX'   '物料描述' '' '' '' '' '' '40'.    INIT_FIELDCAT 
      'WERKS'   '工廠'     '' '' '' '' '' ''.    INIT_FIELDCAT 
      'BWART'   '移動類型' '' '' '' '' '' ''.    INIT_FIELDCAT 
      'ERFMG'   '數量'     '' '' '' '' '' ''.    INIT_FIELDCAT 
      'MEINS'   '單位'     '' '' '' '' '' ''.    INIT_FIELDCAT 
      'LGORT'   '發貨庫位' '' '' '' '' '' ''.    INIT_FIELDCAT 
      'UMLGO'   '收貨庫位' '' '' '' '' '' ''.    INIT_FIELDCAT 
      'KOSTL'   '成本中心' '' '' '' '' '' ''.    INIT_FIELDCAT 
      'BDTER'   '需求日期' '' '' '' '' '' ''.    INIT_FIELDCAT 
      'USNAM'   '創建人'   '' '' '' '' '' ''.    INIT_FIELDCAT 
      'MESSAGE' '信息'     '' '' '' '' '' '100'.  
      ENDIF.
      ENDFORM.
      *&---------------------------------------------------------------------*
      *& Form FRM_LAYOUT
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_SET_LAYOUT .  GS_LAYOUT
      -ZEBRA      'X'.  GS_LAYOUT
      -CWIDTH_OPT 'X'.  GS_LAYOUT
      -SEL_MODE   'A'.
      ENDFORM.
      *&---------------------------------------------------------------------*
      *& Form FRM_OUTPUT
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_DISPLAY_OUTPUT .  
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'    
      EXPORTING      I_CALLBACK_PROGRAM       
      = SY-REPID      I_CALLBACK_PF_STATUS_SET 
      'ALV_STATUS'      I_CALLBACK_USER_COMMAND  
      'ALV_COMMAND'      IS_LAYOUT_LVC            
      = GS_LAYOUT      IT_FIELDCAT_LVC          
      = GT_FIELDCAT    
      TABLES      T_OUTTAB                 
      = GT_ALV    
      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  ALV_PF_STATUS
      *&---------------------------------------------------------------------*
      *       GUI狀態設置
      *----------------------------------------------------------------------*
      *      -->RT_EXTAB   GUI狀態設置
      *----------------------------------------------------------------------*
      FORM ALV_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.  
      IF R1 'X'.    
      APPEND 'DEL' TO RT_EXTAB.  
      ELSE.    
      APPEND 'ZSAVE1' TO RT_EXTAB.  
      ENDIF.  
      SET PF-STATUS 'STANDARD' EXCLUDING RT_EXTAB.
      ENDFORM.                    "ALV_PF_STATUS
      *&---------------------------------------------------------------------*
      *&      FORM  ALV_USER_COMMAND
      *&---------------------------------------------------------------------*
      *       ALV執行查詢后的事件響應
      *----------------------------------------------------------------------*
      *      -->R_UCOMN      響應碼
      *      -->RS_SELFIELD  當前行信息
      *----------------------------------------------------------------------*
      FORM ALV_COMMAND USING PV_UCOMM LIKE SY-UCOMM                       RS_SELFIELD 
      TYPE SLIS_SELFIELD.  
      DATA:LV_INDEX TYPE SY-TABIX.  
      DATA:GV_GRID TYPE REF TO CL_GUI_ALV_GRID .

      *--------------------刷新-------------------*  
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'    
      IMPORTING      E_GRID 
      = GV_GRID.  

      CALL METHOD GV_GRID->CHECK_CHANGED_DATA.  

      CALL METHOD GV_GRID->REFRESH_TABLE_DISPLAY.  RS_SELFIELD

      -REFRESH 'X'.  

      CASE PV_UCOMM.    
      WHEN 'ZSAVE1'.      

      PERFORM FRM_CREATE_RESERVATION.    

      WHEN 'ALL'.      

      LOOP AT GT_ALV INTO GS_ALV.        GS_ALV
      -SEL 'X'.        
      MODIFY GT_ALV FROM GS_ALV TRANSPORTING SEL..      
      ENDLOOP.    

      WHEN 'SAL'.      

      LOOP AT GT_ALV INTO GS_ALV.        GS_ALV
      -SEL ''.        
      MODIFY GT_ALV FROM GS_ALV TRANSPORTING SEL..      
      ENDLOOP.    

      WHEN 'DEL'.      

      PERFORM FRM_DELETE_RESERVATION.  

      ENDCASE.  RS_SELFIELD
      -REFRESH 'X'.
      ENDFORM.                    "ALV_USER_COMMAND
      *&---------------------------------------------------------------------*
      *& Form FRM_BAPI
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_CREATE_RESERVATION.  
      DATA:L_RSNUM TYPE BAPIRKPFC-RES_NO.  
      DATA:LT_ALV TYPE TABLE OF TY_ALV,       LS_ALV 
      LIKE LINE OF LT_ALV.  
      DATA:GS_HEADER TYPE BAPIRKPFC,       GT_ITEM   
      TYPE TABLE OF BAPIRESBC,       GS_ITEM   
      TYPE BAPIRESBC,       GT_RETURN 
      TYPE TABLE OF BAPIRETURN,       GS_RETURN 
      TYPE BAPIRETURN.  

      READ TABLE GT_ALV INTO GS_ALV WITH KEY ICON '@5C@'.  
      IF SY-SUBRC 0.    
      MESSAGE E001(00WITH '清單中有異常數據,請先處理異常數據再保存預留!'.  
      ENDIF.  LT_ALV[] 

      = GT_ALV[].  
      SORT LT_ALV BY BWART KOSTL AUFNR UMLGO BDTER LGORT1.  
      DELETE ADJACENT DUPLICATES FROM LT_ALV COMPARING BWART KOSTL AUFNR UMLGO BDTER LGORT1.  

      LOOP AT LT_ALV INTO LS_ALV.    
      CLEAR:GS_HEADER,GS_ITEM,GT_RETURN,GT_ITEM[].    GS_HEADER
      -PLANT      = LS_ALV-WERKS.    GS_HEADER
      -MOVE_TYPE  = LS_ALV-BWART.    GS_HEADER
      -COST_CTR   = LS_ALV-KOSTL.    GS_HEADER
      -RES_DATE   = LS_ALV-BDTER.
      *    gs_header-move_plant = ls_alv-werks.    GS_HEADER
      -CREATED_BY = SY-UNAME.    GS_HEADER
      -MOVE_STLOC = LS_ALV-LGORT1.    GS_HEADER
      -MOVE_PLANT = LS_ALV-WERKS.    

      LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE BWART = LS_ALV-BWART                                        
      AND KOSTL = LS_ALV-KOSTL                                        
      AND UMLGO = LS_ALV-UMLGO                                        
      AND AUFNR = LS_ALV-AUFNR                                        
      AND BDTER = LS_ALV-BDTER                                       
      AND LGORT1 = LS_ALV-LGORT1.      GS_ITEM

      -MATERIAL  = <FS_ALV>-MATNR.      GS_ITEM
      -PLANT     = <FS_ALV>-WERKS.      GS_ITEM
      -STORE_LOC = <FS_ALV>-LGORT.      GS_ITEM
      -REQ_DATE  = <FS_ALV>-BDTER.      GS_ITEM
      -UNIT      = <FS_ALV>-MEINS.      GS_ITEM
      -QUANTITY  = <FS_ALV>-ERFMG.      GS_ITEM
      -MOVEMENT  'X'.      
      APPEND GS_ITEM TO GT_ITEM.      
      CLEAR GS_ITEM.    
      ENDLOOP.    

      CLEAR L_RSNUM.    

      CALL FUNCTION 'BAPI_RESERVATION_CREATE'      
      EXPORTING        RESERVATION_HEADER 
      = GS_HEADER
      *       NO_COMMIT          =
      *       MOVEMENT_AUTO      =      
      IMPORTING        RESERVATION        
      = L_RSNUM      
      TABLES        RESERVATION_ITEMS  
      = GT_ITEM        
      RETURN             = GT_RETURN.    

      LOOP AT GT_RETURN INTO GS_RETURN WHERE TYPE 'E'                                        
      OR TYPE 'A'.      GS_ALV
      -MESSAGE = GS_RETURN-MESSAGE.    
      ENDLOOP.    

      IF SY-SUBRC EQ 0.      
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.      
      LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE BDTER = LS_ALV-BDTER                                          
      AND BWART = LS_ALV-BWART                                          
      AND UMLGO = LS_ALV-UMLGO                                          
      AND KOSTL = LS_ALV-KOSTL                                          
      AND AUFNR = LS_ALV-AUFNR                                          
      AND  LGORT1 = LS_ALV-LGORT1.        <FS_ALV>
      -MESSAGE = GS_RETURN-MESSAGE.        <FS_ALV>
      -ICON    '@5C@'.      
      ENDLOOP.    
      ELSE.      
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'        
      EXPORTING          
      WAIT 'X'.      

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'        
      EXPORTING          
      INPUT  = L_RSNUM        
      IMPORTING          
      OUTPUT = L_RSNUM.      

      LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE BDTER = LS_ALV-BDTER                                          
      AND BWART = LS_ALV-BWART                                          
      AND UMLGO = LS_ALV-UMLGO                                          
      AND KOSTL = LS_ALV-KOSTL                                          
      AND AUFNR = LS_ALV-AUFNR                                          
      AND  LGORT1 = LS_ALV-LGORT1.        <FS_ALV>
      -MESSAGE = L_RSNUM && '創建成功'.        <FS_ALV>
      -ICON    '@5B@'.        <FS_ALV>
      -RSNUM   = L_RSNUM.      
      ENDLOOP.    
      ENDIF.  
      ENDLOOP.
      ENDFORM.
      *&---------------------------------------------------------------------*
      *& Form FRM_GET_DATA
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_GET_DATA .  
      SELECT RESB~RSNUM,         RESB
      ~RSPOS,         RESB
      ~BDTER,         RKPF
      ~BWART,         RKPF
      ~KOSTL,         RKPF
      ~UMLGO,         RKPF
      ~USNAM,         RESB
      ~MATNR,         RESB
      ~WERKS,         RESB
      ~LGORT,         RESB
      ~BDMNG AS ERFMG,         RESB
      ~MEINS,         RESB
      ~XLOEK,         MAKT
      ~MAKTX    
      INTO CORRESPONDING FIELDS OF TABLE @GT_ALV    
      FROM RESB   INNER 
      JOIN RKPF ON RKPF~RSNUM = RESB~RSNUM    
      LEFT JOIN MAKT ON MAKT~MATNR = RESB~MATNR                  
      AND MAKT~SPRAS = @SY-LANGU   
      WHERE RESB~WERKS IN @S_WERKS     
      AND RESB~MATNR IN @S_MATNR     
      AND RESB~BWART IN @S_BWART     
      AND RESB~BDTER IN @S_BDTER     
      AND RKPF~KOSTL IN @S_KOSTL     
      AND RKPF~USNAM IN @S_USNAM     
      AND RESB~LGORT IN @S_LGORT.  

      SORT GT_ALV BY RSNUM RSPOS.  

      LOOP AT GT_ALV ASSIGNING <FS_ALV>.    
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'      
      EXPORTING        
      INPUT  = <FS_ALV>-RSNUM      
      IMPORTING        
      OUTPUT = <FS_ALV>-RSNUM.  
      ENDLOOP.

      ENDFORM.
      *&---------------------------------------------------------------------*
      *& Form FRM_DELETE_RESERVATION
      *&---------------------------------------------------------------------*
      *& text
      *&---------------------------------------------------------------------*
      *& -->  p1        text
      *& <--  p2        text
      *&---------------------------------------------------------------------*
      FORM FRM_DELETE_RESERVATION .  
      DATA:LT_ALV TYPE TABLE OF TY_ALV,       LS_ALV 
      LIKE LINE OF LT_ALV.  
      DATA:IT_RESERVATIONITEMS_CHANGED  TYPE TABLE OF BAPI2093_RES_ITEM_CHANGE WITH HEADER LINE,       IT_RESERVATIONITEMS_CHANGEDX 
      TYPE TABLE OF BAPI2093_RES_ITEM_CHANGEX WITH HEADER LINE,       IT_RETURN                    
      TYPE TABLE OF BAPIRET2  WITH HEADER LINE.  LT_ALV[] 

      = GT_ALV[].  
      DELETE LT_ALV WHERE SEL ''.  
      SORT LT_ALV BY RSNUM.  
      DELETE ADJACENT DUPLICATES FROM LT_ALV COMPARING RSNUM.  

      LOOP AT LT_ALV INTO LS_ALV.    
      LOOP AT GT_ALV INTO GS_ALV WHERE SEL 'X' AND RSNUM = LS_ALV-RSNUM.      IT_RESERVATIONITEMS_CHANGED
      -RES_ITEM = GS_ALV-RSPOS.      IT_RESERVATIONITEMS_CHANGED
      -DELETE_IND 'X'.      
      APPEND IT_RESERVATIONITEMS_CHANGED.      IT_RESERVATIONITEMS_CHANGEDX
      -RES_ITEM = GS_ALV-RSPOS.      IT_RESERVATIONITEMS_CHANGEDX
      -DELETE_IND 'X'.      
      APPEND IT_RESERVATIONITEMS_CHANGEDX.      
      CLEAR:IT_RESERVATIONITEMS_CHANGED,IT_RESERVATIONITEMS_CHANGEDX.    
      ENDLOOP.    

      CALL FUNCTION 'BAPI_RESERVATION_CHANGE'      
      EXPORTING        RESERVATION               
      = LS_ALV-RSNUM      
      TABLES        RESERVATIONITEMS_CHANGED  
      = IT_RESERVATIONITEMS_CHANGED        RESERVATIONITEMS_CHANGEDX 
      = IT_RESERVATIONITEMS_CHANGEDX        
      RETURN                    = IT_RETURN.    

      LOOP AT IT_RETURN WHERE TYPE 'E' OR TYPE 'A'.      LS_ALV
      -MESSAGE = IT_RETURN-MESSAGE.    
      ENDLOOP.    

      IF SY-SUBRC EQ 0.      
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.      
      LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE SEL 'X'                                          
      AND RSNUM = LS_ALV-RSNUM.        <FS_ALV>
      -MESSAGE '刪除失敗' && LS_ALV-MESSAGE.        <FS_ALV>
      -ICON    '@5C@'.      
      ENDLOOP.    
      ELSE.      
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'        
      EXPORTING          
      WAIT 'X'.      

      LOOP AT GT_ALV ASSIGNING <FS_ALV> WHERE SEL 'X'                                          
      AND RSNUM = LS_ALV-RSNUM.        <FS_ALV>
      -MESSAGE '刪除成功'.        <FS_ALV>
      -ICON    '@5B@'.      
      ENDLOOP.    
      ENDIF.  
      ENDLOOP.

      ENDFORM.
      posted @ 2022-12-06 13:26  我肉山  閱讀(105)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 18禁国产一区二区三区| 龙州县| 国产久久热这里只有精品| 精品不卡一区二区三区| 巨胸喷奶水视频www免费网站| 麻豆蜜桃av蜜臀av色欲av| 国产一区二区三区尤物视频| 国产jlzzjlzz视频免费看| 日韩人妻精品中文字幕| 玩两个丰满老熟女久久网| 国产乱子伦农村xxxx| 亚洲 制服 丝袜 无码| 久久精品第九区免费观看| 国产成人最新三级在线视频| 国产成人久久777777| 欧洲免费一区二区三区视频| 女人张开腿无遮无挡视频| 商城县| 97精品国产91久久久久久久| 色综合久久久久综合99| 久久精品国产亚洲av天海翼| 在线综合亚洲欧洲综合网站| 亚洲乱码日产精品bd在线| 亚洲香蕉网久久综合影视| 国产一区二区爽爽爽视频| 午夜毛片不卡免费观看视频| 午夜福利电影| 99在线精品国自产拍中文字幕| 亚洲 制服 丝袜 无码| 久久精品国产亚洲av高| 又大又硬又爽免费视频| 女同在线观看亚洲国产精品| 亚洲人妻精品一区二区| 无码人妻斩一区二区三区| 国产精品人成视频免费播放| 欧美精品一区二区三区在线观看| 欧美成人精品三级网站视频| 福利在线视频一区二区| 伊人久久大香线焦av综合影院| 精品国产综合成人亚洲区| 99久re热视频这里只有精品6|