dialog开发实例

REPORT zp_pp_001n_en.
*&---------------------------------------------------------------------*
*& 包含               ZP_PP_BZ01_TOP
*&---------------------------------------------------------------------*
TYPE-POOLS:slis,icon,vrm.

************************************************************************
*                  T A B L E S                                         *
************************************************************************
TABLES: vbak,vbap,vbkd,ztpp_pc_a01,ztpp_pc_a02.

DATA:gt_alv  TYPE TABLE OF ztpp_pc_a01 .
DATA:gs_alv  TYPE ztpp_pc_a01 .
DATA:gt_alv1 TYPE TABLE OF ztpp_pc_a01 .
DATA:gs_alv1 TYPE ztpp_pc_a01 .
DATA:gt_data TYPE TABLE OF ztpp_pc_z01 .
DATA:gs_data TYPE ztpp_pc_z01 .

TYPES:BEGIN OF ty_charg,                   "合批结构
        g_box    
TYPE c,                   "复选框
        dispo    
LIKE ztpp_pc_a01-dispo,   "MRP控制者
        pcpch    
LIKE ztpp_pc_a01-pcpch,   "批次号
        zyscz    
LIKE ztpp_pc_a01-zyscz,   "颜色材质
        zycms    
LIKE ztpp_pc_a01-zycms,   "颜色材质描述
        zwlxlno  
LIKE ztpp_pc_a01-zwlxlno, "货运路线
        zlxms    
TYPE val_text,            "货运路线描述
        zds      
LIKE ztpp_pc_a01-zds,     "是否单色
        cmdat    
LIKE ztpp_pc_a01-cmdat,   "完成日期
        pchda    
LIKE ztpp_pc_a01-pchda,   "批次号日期
        kwmeng   
LIKE ztpp_pc_a01-kwmeng,  "数量
        quaty    
TYPE p,                   "显示数量
        pcnum
(2) TYPE n,                   "批次号流水
        zgsmj    
TYPE ze_gsmj,             "柜身面积
        zbjsl    
TYPE ze_bjsl,             "板件件数
        zcjdm    
LIKE ztpp_pc_a01-zcjdm,   "车间
        zpcbc    
LIKE ztpp_pc_a01-zpcbc,   "班次
        zkzlb    
LIKE ztpp_pc_a01-zkzlb,   "类别
      
END OF ty_charg.

TYPES:BEGIN OF ty_hpmx,                    "合批明细结构
        g_box   
TYPE c,                    "复选框
        
icon    TYPE iconname,             "图标名称
        loekz   
LIKE ztpp_pc_a01-loekz,    "删除标记
        zpcph   
LIKE ztpp_pc_a01-zpcph,    "批号
        pcpch   
LIKE ztpp_pc_a01-pcpch,    "批次号
        
lines   TYPE sy-tabix,             "序号
        dispo   
LIKE ztpp_pc_a01-dispo,    "MRP控制者
        vbeln   
LIKE vbap-vbeln,           "销售订单
        posnr   
LIKE vbap-posnr,           "行项目
        kunnr   
LIKE kna1-kunnr,           "经销商
        name1   
LIKE kna1-name1,           "经销商描述
        matnr   
LIKE mara-matnr,           "物料编号
        arktx   
LIKE makt-maktx,           "物料描述
        kwmeng  
LIKE ztpp_pc_a01-kwmeng,   "数量
        quaty   
TYPE p,
        zyscz   
LIKE ztpp_pc_a01-zyscz,    "颜色材质
        zycms   
LIKE ztpp_pc_a01-zycms,    "颜色材质描述
        zwlxlno 
LIKE ztpp_pc_a01-zwlxlno,  "货运路线
        zlxms   
TYPE val_text,             "货运路线描述
        cmdat   
LIKE ztpp_pc_a01-cmdat,    "完成日期
        etdat   
LIKE ztpp_pc_a01-etdat,    "交货日期
        pchda   
LIKE ztpp_pc_a01-pchda,    "批次号日期
        zgsmj   
TYPE ze_gsmj,              "柜身面积
        zbjsl   
TYPE ze_bjsl,              "板件件数
        bstnk   
TYPE bstnk,                "PO号
        posex   
TYPE posex,                "PO行项目
        zcjdm   
TYPE ztpp_pc_a01-zcjdm,  "车间
*        zpcbc   LIKE ztpp_pc_a01-zpcbc,  "班次
      
END OF ty_hpmx.

DATA: gt_opt          TYPE STANDARD TABLE OF ty_charg,
      gt_ybz          
TYPE STANDARD TABLE OF ty_hpmx,
      gt_ybz_m        
TYPE STANDARD TABLE OF ty_hpmx,
      gt_ybz_sub      
TYPE STANDARD TABLE OF ty_hpmx,
      gt_dbz          
TYPE STANDARD TABLE OF ty_hpmx,
      gt_dbz_m        
TYPE STANDARD TABLE OF ty_hpmx,
      gt_dbz_sub      
TYPE STANDARD TABLE OF ty_hpmx,
      gt_fieldcatalog 
TYPE lvc_t_fcat,            " Field Catalog
      gt_sort         
TYPE lvc_t_sort.                     " Sorting Table

DATA: gs_opt     TYPE ty_charg,
      gs_ybz     
TYPE ty_hpmx,
      gs_ybz_sub 
TYPE ty_hpmx,
      gs_dbz     
TYPE ty_hpmx,
      gs_dbz_sub 
TYPE ty_hpmx.

DATA: splitter                  TYPE REF TO cl_dynpro_splitter,
      go_dbz                    
TYPE REF TO cl_gui_alv_grid,
      go_ybz                    
TYPE REF TO cl_gui_alv_grid,
      go_cache                  
TYPE REF TO cl_gui_alv_grid,
      gc_custom_container       
TYPE REF TO cl_gui_custom_container,
      tree1                     
TYPE REF TO cl_gui_alv_tree_simple,
      g_init                    
TYPE c,
      g_ok                      
TYPE ok_code,
      g_ldbh
(20),
      ok_code                   
TYPE sy-ucomm,
      ok_save                   
TYPE sy-ucomm,
      g_vbeln                   
TYPE char21,
      g_tree_container_name
(30) TYPE c VALUE'C1'.

"Webserviec定义
DATA: gi_proxy     TYPE REF TO zco_data_synchronization_by_cr,
      wa_arg0      
TYPE zorder_bom_produced_info,
      gi_input     
TYPE STANDARD TABLE OF zsave_order_bom_produced_info2 WITH HEADER LINE,
      gi_output    
TYPE STANDARD TABLE OF zsave_order_bom_produced_info1 WITH HEADER LINE,
      gi_exception 
TYPE REF TO cx_ai_system_fault.

************************************************************************
*                  S E L E C T I O N  S C R E E N                      *
************************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.      "屏幕
PARAMETERS:
  p_werks 
LIKE vbap-werks OBLIGATORY DEFAULT '3110',   "工厂
  p_dispo 
LIKE marc-dispo OBLIGATORY DEFAULT 'B01' .  "产线
*  p_cmdat LIKE ztpp_pc_a01-cmdat OBLIGATORY DEFAULT sy-datum.  "排产完成日期
SELECT-OPTIONS:
*                  s_zyscz FOR ztpp_pc_a01-zyscz,  "颜色材质
*                  s_zfjys FOR ztpp_pc_a01-zfjys,  "封胶颜色
*                  s_erdat FOR vbak-erdat ,  "创建日期
*                  s_etdat FOR ztpp_pc_a01-etdat, "交货日期
*                  s_vbeln FOR vbak-vbeln MATCHCODE OBJECT vmva,   "销售订单
*                  s_bstnk FOR vbak-bstnk,   "PO号
                  s_pcpch 
FOR ztpp_pc_a01-pcpch.   "订单类型
SELECTION-SCREEN: END OF BLOCK blk1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-005.

SELECTION-SCREEN COMMENT 1(50) TEXT-006.

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN: BEGIN OF SCREEN 0103 AS SUBSCREEN.

SELECT-OPTIONS: s_vbel1 FOR ztpp_pc_a01-vbeln .
SELECT-OPTIONS: s_posn1 FOR ztpp_pc_a01-posnr .
PARAMETERS: p_disp1 LIKE ztpp_pc_a01-zdispo OBLIGATORY MODIF ID m1 .

SELECTION-SCREEN:  END OF SCREEN 0103.

*----------------------------------------------------------------------*
*       CLASS cl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_event_receiver DEFINITION.
  
PUBLIC SECTION.
    
" 声明单击事件的方法
    
METHODS handle_hotspot_click
                  
FOR EVENT hotspot_click OF cl_gui_alv_grid
      
IMPORTING e_row_id e_column_id.
    
" 声明双击事件方法
    
METHODS handle_double_click
                  
FOR EVENT double_click OF cl_gui_alv_grid
      
IMPORTING e_row e_column.
    
" 声明TOOLBAR事件方法
    
METHODS handle_toolbar
                  
FOR EVENT toolbar OF cl_gui_alv_grid
      
IMPORTING e_object e_interactive.
    
" 声明USER-COMMAND 事件方法
    
METHODS handle_command
                  
FOR EVENT 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.
ENDCLASS.                    "CL_EVENT_RECEIVER DEFINITION

CREATE OBJECT splitter
  
EXPORTING
    splitter_name 
= 'SPLITTER'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dispo.
  
PERFORM frm_f4_01 .

*&---------------------------------------------------------------------*
*& Form FRM_F4_01
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_f4_01 .

  
TYPES: BEGIN OF ty_lfa1,
           dispo 
TYPE marc-dispo,
           zcxms 
TYPE c LENGTH 10,
         
END OF ty_lfa1.
  
DATA: gt_lfa1 TYPE STANDARD TABLE OF ty_lfa1 WITH HEADER LINE.
  
DATA: gs_lfa1 TYPE ty_lfa1 .

  
CLEAR gt_lfa1[].
  
CLEAR gs_lfa1.
  gs_lfa1
-dispo = 'B01' .
  gs_lfa1
-zcxms = '柜体' .
  
APPEND gs_lfa1 TO gt_lfa1 .
  
CLEAR gs_lfa1.
  gs_lfa1
-dispo = 'B02' .
  gs_lfa1
-zcxms = '柜体' .
  
APPEND gs_lfa1 TO gt_lfa1 .

  
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    
EXPORTING
      retfield        
= 'DISPO'
      dynpprog        
sy-repid
      dynpnr          
sy-dynnr
      dynprofield     
= 'P_DISPO'
      value_org       
= 'S'
    
TABLES
      value_tab       
gt_lfa1
    
EXCEPTIONS
      parameter_error 
= 1
      no_values_found 
= 2.

ENDFORM.

*----------------------------------------------------------------------*
*   INCLUDE BCALV_SIMPLE_EVENT_RECEIVER                                *
*----------------------------------------------------------------------*
class lcl_tree_event_receiver definition.

  
public section.

    
methods: on_add_hierarchy_node
              
for event on_add_hierarchy_node of cl_gui_alv_tree_simple
                    
importing grouplevel
                              index_outtab
.

endclass.

class lcl_tree_event_receiver implementation.

  
method on_add_hierarchy_node.
    
data ls_outtab_line type sflight.
    ls_outtab_line
-planetype = 'Note'. "#EC NOTEXT
    
call method tree1->set_hierarchy_data
            
exporting
                is_outtab_line 
ls_outtab_line.
  
endmethod.

endclass.

 

*----------------------------------------------------------------------*
***INCLUDE ZP_PP_BZ01_STATUS_0100O01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& MODULE STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.

  
SET PF-STATUS 'PF_0100'.

  
SET TITLEBAR 'TITLE_0100'.

  
PERFORM form_init.

ENDMODULE.

*&---------------------------------------------------------------------*
*& MODULE STATUS_0101 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0101 OUTPUT.

  
PERFORM form_init_0101.

ENDMODULE.

*&---------------------------------------------------------------------*
*& MODULE STATUS_0102 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0102 OUTPUT.
* SET PF-STATUS 'XXXXXXXX'.
* SET TITLEBAR 'XXX'.
  
PERFORM form_init_0102.

ENDMODULE.

*&---------------------------------------------------------------------*
*&      MODULE  SET_SASH
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE set_sash OUTPUT.

  splitter
->set_sash( ).

ENDMODULE.

*&---------------------------------------------------------------------*
*&      MODULE  CANCEL
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE cancel.

  
LEAVE PROGRAM .

ENDMODULE.
*&---------------------------------------------------------------------*
*&      MODULE  GET_SASH
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE get_sash INPUT.

  splitter
->get_guisash( ).

ENDMODULE.
*&---------------------------------------------------------------------*
*&      MODULE  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       USER_COMMAND
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  ok_save 
sy-ucomm .
  
CLEAR sy-ucomm .
  
CLEAR ok_code .
  
CASE  ok_save.
    
WHEN 'BACK'  .
      
LEAVE TO SCREEN 0 .
    
WHEN 'BT_01' .
      
PERFORM fom_submit .
    
WHEN 'BT_02' .
      
PERFORM fom_revocation .
    
WHEN 'BT_03' .
      
PERFORM fom_dele_save .
    
WHEN 'BT_04' .
      
PERFORM fom_get_so_data.
*      LOOP AT gt_alv INTO gs_alv.
*        gs_alv-mode = 'X' .
*        MODIFY gt_alv FROM gs_alv .
*        CLEAR gs_alv .
*      ENDLOOP.
*    WHEN 'BT_05' .
*      LOOP AT gt_alv INTO gs_alv.
*        gs_alv-mode = '' .
*        MODIFY gt_alv FROM gs_alv .
*        CLEAR gs_alv .
*      ENDLOOP.
    
WHEN OTHERS .
  
ENDCASE .

ENDMODULE.

*&---------------------------------------------------------------------*
*&      MODULE  USER_COMMAND_0102  INPUT
*&---------------------------------------------------------------------*
*       USER_COMMAND
*----------------------------------------------------------------------*
MODULE user_command_0102 INPUT.

  
CASE g_ok.

    
WHEN 'ADD'.
      
CALL METHOD go_ybz->check_changed_data.
      
CALL METHOD go_dbz->check_changed_data.
      
LOOP AT gt_dbz[] INTO gs_dbz WHERE g_box = 'X' AND loekz IS INITIAL .
        
APPEND gs_dbz TO gt_ybz .
        
CLEAR gs_dbz .
      
ENDLOOP.
      
DELETE gt_dbz WHERE g_box = 'X' .
      go_ybz
->refresh_table_display( ).
      go_dbz
->refresh_table_display( ).

    
WHEN 'DEL'.
      
CALL METHOD go_ybz->check_changed_data.
      
CALL METHOD go_dbz->check_changed_data.
      
LOOP AT gt_ybz[] INTO gs_ybz WHERE g_box = 'X' .
        
APPEND gs_ybz TO gt_dbz .
        
CLEAR gs_ybz .
      
ENDLOOP.
      
DELETE gt_ybz WHERE g_box = 'X' .
      go_ybz
->refresh_table_display( ).
      go_dbz
->refresh_table_display( ).

  
ENDCASE.

ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0103  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0103 INPUT.
  
CASE g_ok.
    
WHEN 'LOAD'.
*      PERFORM form_load.
  
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      FORM  FORM_INIT
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM form_init.

  g_init 
= 'X'.

  
CALL METHOD cl_gui_cfw=>flush.

ENDFORM.

*&---------------------------------------------------------------------*
*&      FORM  FORM_INIT_0101
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM form_init_0101.

  
IF go_ybz IS BOUND.

    
EXIT.

  
ENDIF.

  
DATA lo_container    TYPE REF TO cl_gui_splitter_container.
  
DATA lo_left         TYPE REF TO cl_gui_custom_container.
  
DATA l_fcat_cache    TYPE lvc_t_fcat.
  
DATA l_fcat_ybz      TYPE lvc_t_fcat.
  
DATA wa_layout_cache TYPE lvc_s_layo.
  
DATA wa_layout_ybz   TYPE lvc_s_layo.
  
DATA lo_event        TYPE REF TO cl_event_receiver.

  
CREATE OBJECT lo_left
    
EXPORTING
      container_name 
= 'LEFT_CON'.

  
CREATE OBJECT lo_container
    
EXPORTING
      parent  
lo_left
      
rows    = 2
      columns 
= 1.

  
CREATE OBJECT go_cache
    
EXPORTING
      i_parent 
lo_container->get_containerrow = 1 column = 1 ).
  
CREATE OBJECT go_ybz
    
EXPORTING
      i_parent 
lo_container->get_containerrow = 2 column = 1 ).

  
PERFORM form_append_field:
*    USING 'G_BOX' '选择' 4 CHANGING l_fcat_cache,
*    USING 'ZPCPH' '批号' 4 CHANGING l_fcat_cache,
    
USING 'PCPCH' '批次号' 13 CHANGING l_fcat_cache,
    
USING 'ZYSCZ' '颜色材质' 8 CHANGING l_fcat_cache,
    
USING 'ZYCMS' '颜色材质描述' 25  CHANGING l_fcat_cache,
    
USING 'ZWLXLNO' '货运路线' 6  CHANGING l_fcat_cache,
    
USING 'ZLXMS' '货运路线描述' 25  CHANGING l_fcat_cache,
    
USING 'ZDS'   '是否单色' 5  CHANGING l_fcat_cache,
    
USING 'CMDAT' '完成日期' 10  CHANGING l_fcat_cache,
    
USING 'PCHDA' '批次号日期' 10  CHANGING l_fcat_cache,
    
USING 'KWMENG' '数量' 15  CHANGING l_fcat_cache,
    
USING 'QUATY' '显示数量' 15  CHANGING l_fcat_cache,
    
USING 'PCNUM' '批次号流水' 25  CHANGING l_fcat_cache,
    
USING 'ZGSMJ' '柜身面积' 13  CHANGING l_fcat_cache,
    
USING 'ZBJSL' '板件件数' 13  CHANGING l_fcat_cache,
    
USING 'ZCJDM' '车间' 4  CHANGING l_fcat_cache,
    
USING 'ZPCBC' '班次' 6  CHANGING l_fcat_cache,
    
USING 'ZKZLB' '类别' 6  CHANGING l_fcat_cache.

  
PERFORM form_append_field:
    
USING 'G_BOX' '选择' 4 CHANGING l_fcat_ybz,
    
USING 'DISPO' 'MRP控制者' 7 CHANGING l_fcat_ybz,
    
USING 'ZPCPH' '批号' 4 CHANGING l_fcat_ybz,
    
USING 'PCPCH' '批次号' 13 CHANGING l_fcat_ybz,
    
USING 'LINES' '序号' 4 CHANGING l_fcat_ybz,
    
USING 'VBELN' '销售订单' 12   CHANGING l_fcat_ybz,
    
USING 'POSNR' '行项目' 6 CHANGING l_fcat_ybz,
    
USING 'KUNNR' '经销商'10    CHANGING l_fcat_ybz,
    
USING 'NAME1' '经销商描述' 25     CHANGING l_fcat_ybz,
    
USING 'MATNR' '物料编号' 19  CHANGING l_fcat_ybz,
    
USING 'ARKTX' '物料描述' 25  CHANGING l_fcat_ybz,
    
USING 'KWMENG' '数量' 15     CHANGING l_fcat_ybz,
    
USING 'QUATY' '显示数量' 15  CHANGING l_fcat_ybz,
    
USING 'ZYSCZ' '颜色材质' 8   CHANGING l_fcat_ybz,
    
USING 'ZYCMS' '颜色材质描述' 25  CHANGING l_fcat_ybz,
    
USING 'ZWLXLNO' '货运路线' 6  CHANGING l_fcat_ybz,
    
USING 'ZLXMS' '货运路线描述' 25  CHANGING l_fcat_ybz,
    
USING 'CMDAT' '完成日期' 10  CHANGING l_fcat_ybz,
    
USING 'PCHDA' '批次号日期' 10  CHANGING l_fcat_ybz,
    
USING 'ZGSMJ' '柜身面积' 13  CHANGING l_fcat_ybz,
    
USING 'ZBJSL' '板件件数' 13  CHANGING l_fcat_ybz,
    
USING 'NAME1' '经销商描述' 25     CHANGING l_fcat_ybz.

  
CREATE OBJECT lo_event.
*  SET HANDLER lo_event->handle_hotspot_click  FOR go_ybz.
  
SET HANDLER lo_event->handle_double_click   FOR go_cache.
  
SET HANDLER lo_event->handle_data_changed   FOR go_ybz.
*  SET HANDLER lo_event->handle_toolbar FOR go_ybz.
*  SET HANDLER lo_event->handle_command FOR go_ybz.

  wa_layout_cache
-grid_title = '批次信息'.
  wa_layout_cache
-sel_mode   = 'A'.
*  WA_LAYOUT_CACHE-NO_TOOLBAR = 'X'.

*  LOOP AT it_tab INTO wa_tab.
*    CLEAR : wa_tab-celltab.  "不为空会报错
*    IF wa_tab-celltab IS INITIAL.
*      l_index = sy-tabix.
*      REFRESH lt_celltab.
*      ls_celltab-fieldname = 'ZCWCZD'.
*
*      IF wa_tab-zcwczi IS NOT INITIAL AND
*          wa_tab-zcxczi IS INITIAL.
*        ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
*      ELSE.
*        ls_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
*      ENDIF.
*      INSERT ls_celltab INTO TABLE lt_celltab.
*
*      INSERT LINES OF lt_celltab INTO TABLE wa_tab-celltab.
*      MODIFY it_tab FROM wa_tab INDEX l_index.
*    ENDIF.
*  ENDLOOP.
*ENDFORM.                    " FRM_INIT_STYLE_TAB

  
CALL METHOD go_cache->set_table_for_first_display
    
EXPORTING
      is_layout       
wa_layout_cache
    
CHANGING
      it_fieldcatalog 
l_fcat_cache
      it_outtab       
gt_opt[].

  wa_layout_ybz
-grid_title   = '批次明细'.
  wa_layout_ybz
-sel_mode     = 'A'.

  
CALL METHOD go_ybz->set_table_for_first_display
    
EXPORTING
      is_layout       
wa_layout_ybz
    
CHANGING
      it_fieldcatalog 
l_fcat_ybz
      it_outtab       
gt_ybz[].

ENDFORM.
*&---------------------------------------------------------------------*
*&      FORM  FORM_INIT_0102
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM form_init_0102.

  
IF go_dbz IS BOUND.
    
EXIT.
  
ENDIF.

  
DATA lo_right      TYPE REF TO cl_gui_custom_container.
  
DATA l_fcat_dbz    TYPE lvc_t_fcat.
  
DATA wa_layout_dbz TYPE lvc_s_layo.
  
DATA lo_event      TYPE REF TO cl_event_receiver.

  
CREATE OBJECT lo_right
    
EXPORTING
      container_name 
= 'RIGHT_CON'.

  
CREATE OBJECT go_dbz
    
EXPORTING
      i_parent 
lo_right.

  
PERFORM form_append_field:
    
USING 'G_BOX' '选择' 4 CHANGING l_fcat_dbz,
    
USING 'ICON'  '状态' 4 CHANGING l_fcat_dbz,
    
USING 'LOEKZ' '删除标识' 6 CHANGING l_fcat_dbz,
    
USING 'DISPO' 'MRP控制者' 7 CHANGING l_fcat_dbz,
*    USING 'PCPCH' '批次号' 13 CHANGING l_fcat_dbz,
*    USING 'LINES' '序号' 4 CHANGING l_fcat_dbz,
    
USING 'VBELN' '销售订单' 12   CHANGING l_fcat_dbz,
    
USING 'POSNR' '行项目' 6 CHANGING l_fcat_dbz,
    
USING 'KUNNR' '经销商'10    CHANGING l_fcat_dbz,
    
USING 'NAME1' '经销商描述' 25 CHANGING l_fcat_dbz,
    
USING 'MATNR' '物料编号' 19   CHANGING l_fcat_dbz,
    
USING 'ARKTX' '物料描述' 25   CHANGING l_fcat_dbz,
    
USING 'KWMENG' '数量' 15  CHANGING l_fcat_dbz,
    
USING 'QUATY' '显示数量' 15  CHANGING l_fcat_dbz,
    
USING 'ZYSCZ' '颜色材质' 8 CHANGING l_fcat_dbz,
    
USING 'ZYCMS' '颜色材质描述' 25  CHANGING l_fcat_dbz,
    
USING 'ZWLXLNO' '货运路线' 6  CHANGING l_fcat_dbz,
    
USING 'ZLXMS' '货运路线描述' 25  CHANGING l_fcat_dbz,
    
USING 'CMDAT' '完成日期' 10  CHANGING l_fcat_dbz,
    
USING 'PCHDA' '批次号日期' 10  CHANGING l_fcat_dbz,
    
USING 'ZGSMJ' '柜身面积' 13  CHANGING l_fcat_dbz,
    
USING 'ZBJSL' '板件件数' 13  CHANGING l_fcat_dbz,
    
USING 'NAME1' '经销商描述' 25     CHANGING l_fcat_dbz.

*  PERFORM FORM_DBZ_SET.
  
CREATE OBJECT lo_event.
  
SET HANDLER lo_event->handle_toolbar FOR go_dbz.
  
SET HANDLER lo_event->handle_command FOR go_dbz.

  wa_layout_dbz
-grid_title = '可选的项目容器'.
  wa_layout_dbz
-sel_mode   = 'D'.

  
CALL METHOD go_dbz->set_table_for_first_display
    
EXPORTING
      is_layout       
wa_layout_dbz
    
CHANGING
      it_fieldcatalog 
l_fcat_dbz
      it_outtab       
gt_dbz[].

ENDFORM.
*&---------------------------------------------------------------------*
*&      FORM  FORM_ADD
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM form_add.

  
DATA: lt_rows TYPE lvc_t_row,
        ls_rows 
TYPE lvc_s_row.
  
DATA: l_dbjbz TYPE ztpp_bz_001-bdjbz.
*  DATA lt_tmp TYPE TABLE OF typ_opt.

  
CALL METHOD go_dbz->get_selected_rows
    
IMPORTING
      et_index_rows 
lt_rows.

  go_dbz
->refresh_table_display( ).

  go_cache
->refresh_table_display( ).

ENDFORM.

*&---------------------------------------------------------------------*
*&      FORM  FORM_ADDALL
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM form_addall.

*  APPEND LINES OF gt_dbz TO gt_opt.

*  FREE gt_dbz.

  go_dbz
->refresh_table_display( ).

  go_cache
->refresh_table_display( ).

ENDFORM.

**&---------------------------------------------------------------------*
**&      FORM  FORM_REM
**&---------------------------------------------------------------------*
**
**----------------------------------------------------------------------*
*FORM form_rem.
*
*  DATA: lt_rows TYPE lvc_t_row,
*        ls_rows TYPE lvc_s_row.
*
*  CALL METHOD go_cache->get_selected_rows
*    IMPORTING
*      et_index_rows = lt_rows.
*
*  IF lt_rows IS INITIAL.
*
*    MESSAGE '请选择要去掉的行!' TYPE 'W'.
*    EXIT.
*
*  ENDIF.
*
*  LOOP AT lt_rows INTO ls_rows.
*
*    READ TABLE gt_opt INTO wa_opt INDEX ls_rows-index.
*
*    MOVE wa_opt TO wa_dbz.
*
*    APPEND wa_dbz TO gt_dbz.
*
*  ENDLOOP.
*
*  SORT lt_rows BY index DESCENDING.
*
*  LOOP AT lt_rows INTO ls_rows.
*
*    DELETE gt_opt INDEX ls_rows-index.
*
*  ENDLOOP.
*
*  go_dbz->refresh_table_display( ).
*
*  go_cache->refresh_table_display( ).
*
*ENDFORM.

*&---------------------------------------------------------------------*
*&      FORM  FORM_REMALL
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM form_remall.

*  APPEND LINES OF gt_opt TO gt_dbz.
*
*  FREE gt_opt.

  go_dbz
->refresh_table_display( ).

  go_cache
->refresh_table_display( ).

ENDFORM.

*&---------------------------------------------------------------------*
*&      FORM  FORM_APPEND_FIELD
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM form_append_field USING fname ftext length  CHANGING ch_fcat TYPE lvc_t_fcat.

  
DATA wa_field TYPE lvc_s_fcat.

  wa_field
-fieldname fname.

  wa_field
-coltext ftext.

  wa_field
-outputlen length.

  
IF wa_field-fieldname = 'G_BOX'.
    wa_field
-checkbox = 'X'.
    wa_field
-edit = 'X'.
  
ENDIF.

  
IF wa_field-fieldname = 'ICON'.
    wa_field
-icon = 'X'.
  
ENDIF.

  
APPEND wa_field TO ch_fcat.

ENDFORM.

*----------------------------------------------------------------------*
*       CLASS cl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_event_receiver IMPLEMENTATION.
  
" 单击事件方法的实现
  
METHOD handle_hotspot_click.
    
CONDENSE e_row_id     NO-GAPS.
    
CONDENSE e_column_id  NO-GAPS.

  
ENDMETHOD.                    "HANDLE_HOTSPOT_CLICK
  
" 双击事件方法的实现
  
METHOD handle_double_click.
    
READ TABLE gt_opt INDEX e_row-index INTO gs_opt.

*DATA:gs_alv  TYPE ztpp_pc_a01 .
*DATA:gt_alv1 TYPE TABLE OF ztpp_pc_a01 .
*
*WHERE pcpch = gs_opt-pcpch

    
CLEAR gt_alv1[] .
    
CASE p_dispo .
      
WHEN 'B01' .
        
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv1 FROM ztpp_pc_a01
          
WHERE pcpch gs_opt-pcpch
          
AND loekz = '' .
      
WHEN 'B02' .
        
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv1 FROM ztpp_pc_b01
          
WHERE pcpch gs_opt-pcpch
          
AND loekz = '' .
      
WHEN 'B03' .
        
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv1 FROM ztpp_pc_c01
          
WHERE pcpch gs_opt-pcpch
          
AND loekz = '' .
      
WHEN 'B04' .
        
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv1 FROM ztpp_pc_d01
          
WHERE pcpch gs_opt-pcpch
          
AND loekz = '' .
      
WHEN 'B05' .
        
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv1 FROM ztpp_pc_e01
          
WHERE pcpch gs_opt-pcpch
          
AND loekz = '' .
      
WHEN 'B06' .
        
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv1 FROM ztpp_pc_f01
          
WHERE pcpch gs_opt-pcpch
          
AND loekz = '' .
      
WHEN 'B07' .
        
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv1 FROM ztpp_pc_g01
          
WHERE pcpch gs_opt-pcpch
          
AND loekz = '' .
      
WHEN 'B08' .
        
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv1 FROM ztpp_pc_h01
          
WHERE pcpch gs_opt-pcpch
          
AND loekz = '' .
      
WHEN 'R01' .
        
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv1 FROM ztpp_pc_r01
          
WHERE pcpch gs_opt-pcpch
          
AND loekz = '' .
      
WHEN OTHERS.
    
ENDCASE.

    
CLEAR gt_ybz[] .
    
LOOP AT gt_alv1 INTO gs_alv1  .
      
MOVE-CORRESPONDING gs_alv1 TO gs_ybz .
      gs_ybz
-icon = icon_locked .
      
APPEND gs_ybz TO gt_ybz .
      
CLEAR gs_ybz .
      
CLEAR gs_alv1 .
    
ENDLOOP.

    go_ybz
->refresh_table_display( ).
*    go_dbz->refresh_table_display( ).
*    go_cache->refresh_table_display( ).

  
ENDMETHOD.                    "HANDLE_DOUBLE_CLICK
  
" 实现TOOLBAR事件方法
  
METHOD handle_toolbar.
    
DATA: ls_toolbar TYPE stb_button.
    
DELETE e_object->mt_toolbar WHERE function = '&PRINT_BACK'.
    
CLEAR: ls_toolbar.
    ls_toolbar
-butn_type = 3. " 分隔符
    
APPEND ls_toolbar TO e_object->mt_toolbar.
    
CLEAR: ls_toolbar.
    ls_toolbar
-function = 'BT_8'.    "功能码
    ls_toolbar
-icon = icon_incomplete.  " 图标名称
    ls_toolbar
-quickinfo = '可删除选中的项目'.   " 图标的提示信息
    ls_toolbar
-butn_type = 0.        " 0表示正常按钮
    ls_toolbar
-disabled = ''.        " X表示灰色,不可用
    ls_toolbar
-text = '删除项目'.    " 按钮上显示的文本
    
APPEND ls_toolbar TO e_object->mt_toolbar.
    
CLEAR: ls_toolbar.
    ls_toolbar
-function = 'BT_9'.    " 功能码
    ls_toolbar
-icon = icon_system_undo.  " 图标名称
    ls_toolbar
-quickinfo = '可取消删除选中的项目'.   " 图标的提示信息
    ls_toolbar
-butn_type = 0.        " 0表示正常按钮
    ls_toolbar
-disabled = ''.        " X表示灰色,不可用
    ls_toolbar
-text = '取消删除'.    " 按钮上显示的文本
    
APPEND ls_toolbar TO e_object->mt_toolbar.
  
ENDMETHOD.                    "HANDLE_TOOLBAR
  
" 实现USER-COMMAND 事件方法
  
METHOD handle_command.

    
CASE e_ucomm.
      
WHEN 'BT_8'.
        
LOOP AT gt_dbz INTO gs_dbz WHERE g_box = 'X' .
          gs_dbz
-loekz = 'X' .
          
MODIFY gt_dbz FROM gs_dbz .
          
CLEAR gs_dbz .
        
ENDLOOP.
        go_dbz
->refresh_table_display( ).
      
WHEN 'BT_9'.
        
LOOP AT gt_dbz INTO gs_dbz WHERE g_box = 'X' .
          
CLEAR gs_dbz-loekz  .
          
MODIFY gt_dbz FROM gs_dbz .
          
CLEAR gs_dbz .
        
ENDLOOP.
        go_dbz
->refresh_table_display( ).
      
WHEN OTHERS.

    
ENDCASE.
  
ENDMETHOD.                    "HANDLE_COMMAND

  
METHOD handle_data_changed.

    
DATA:
      l_it_data 
TYPE  lvc_t_modi,
      l_wa_data 
LIKE LINE OF l_it_data.

    l_it_data 
er_data_changed->mt_mod_cells.

  
ENDMETHOD.                    "handle_data_changed
ENDCLASS.                    "cl_event_receiver IMPLEMENTATION

 

*&---------------------------------------------------------------------*
*& 包含               ZP_PP_001N_EN_FOM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FOM_INITIAL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM fom_initial .
  
IF p_dispo IS NOT INITIAL.
    p_disp1 
p_dispo .
  
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_CHECK
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM fom_check .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_SELECTION_SCREEN_PAI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM fom_selection_screen_pai .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM fom_getdata .

  
CLEAR: gt_alv[] .
  
IF p_dispo = 'B01'.

    
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv FROM ztpp_pc_a01
      
WHERE werks p_werks
        
AND dispo p_dispo
        
AND pcpch IN s_pcpch .

*    CLEAR gt_opt[] .
*    IF gt_alv[] IS NOT INITIAL.
*      LOOP AT gt_alv INTO gs_alv.
*        MOVE-CORRESPONDING gs_alv TO gs_opt .
*        APPEND gs_opt TO gt_opt .
*        CLEAR gs_opt .
*        CLEAR gs_alv .
*      ENDLOOP.
*    ENDIF.
*
*    SORT gt_opt[] BY pcpch .
*
*    DELETE ADJACENT DUPLICATES FROM gt_opt[] COMPARING pcpch .

  
ELSEIF p_dispo = 'B02' .

    
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv FROM ztpp_pc_b01
      
WHERE werks p_werks
        
AND dispo p_dispo
        
AND pcpch IN s_pcpch .

*    CLEAR gt_opt[] .
*    IF gt_alv[] IS NOT INITIAL.
*      LOOP AT gt_alv INTO gs_alv.
*        MOVE-CORRESPONDING gs_alv TO gs_opt .
*        APPEND gs_opt TO gt_opt .
*        CLEAR gs_opt .
*        CLEAR gs_alv .
*      ENDLOOP.
*    ENDIF.
*
*    SORT gt_opt[] BY pcpch .
*
*    DELETE ADJACENT DUPLICATES FROM gt_opt[] COMPARING pcpch .

  
ELSEIF p_dispo = 'B03' .

    
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv FROM ztpp_pc_c01
      
WHERE werks p_werks
        
AND dispo p_dispo
        
AND pcpch IN s_pcpch .

*    CLEAR gt_opt[] .
*    IF gt_alv[] IS NOT INITIAL.
*      LOOP AT gt_alv INTO gs_alv.
*        MOVE-CORRESPONDING gs_alv TO gs_opt .
*        APPEND gs_opt TO gt_opt .
*        CLEAR gs_opt .
*        CLEAR gs_alv .
*      ENDLOOP.
*    ENDIF.
*
*    SORT gt_opt[] BY pcpch .
*
*    DELETE ADJACENT DUPLICATES FROM gt_opt[] COMPARING pcpch .

  
ELSEIF p_dispo = 'B04' .

    
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv FROM ztpp_pc_d01
      
WHERE werks p_werks
        
AND dispo p_dispo
        
AND pcpch IN s_pcpch .

*    CLEAR gt_opt[] .
*    IF gt_alv[] IS NOT INITIAL.
*      LOOP AT gt_alv INTO gs_alv.
*        MOVE-CORRESPONDING gs_alv TO gs_opt .
*        APPEND gs_opt TO gt_opt .
*        CLEAR gs_opt .
*        CLEAR gs_alv .
*      ENDLOOP.
*    ENDIF.
*
*    SORT gt_opt[] BY pcpch .
*
*    DELETE ADJACENT DUPLICATES FROM gt_opt[] COMPARING pcpch .

  
ELSEIF p_dispo = 'B05' .

    
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv FROM ztpp_pc_e01
      
WHERE werks p_werks
        
AND dispo p_dispo
        
AND pcpch IN s_pcpch .

*    CLEAR gt_opt[] .
*    IF gt_alv[] IS NOT INITIAL.
*      LOOP AT gt_alv INTO gs_alv.
*        MOVE-CORRESPONDING gs_alv TO gs_opt .
*        APPEND gs_opt TO gt_opt .
*        CLEAR gs_opt .
*        CLEAR gs_alv .
*      ENDLOOP.
*    ENDIF.
*
*    SORT gt_opt[] BY pcpch .
*
*    DELETE ADJACENT DUPLICATES FROM gt_opt[] COMPARING pcpch .

  
ELSEIF p_dispo = 'B06' .

    
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv FROM ztpp_pc_f01
      
WHERE werks p_werks
        
AND dispo p_dispo
        
AND pcpch IN s_pcpch .

*    CLEAR gt_opt[] .
*    IF gt_alv[] IS NOT INITIAL.
*      LOOP AT gt_alv INTO gs_alv.
*        MOVE-CORRESPONDING gs_alv TO gs_opt .
*        APPEND gs_opt TO gt_opt .
*        CLEAR gs_opt .
*        CLEAR gs_alv .
*      ENDLOOP.
*    ENDIF.
*
*    SORT gt_opt[] BY pcpch .
*
*    DELETE ADJACENT DUPLICATES FROM gt_opt[] COMPARING pcpch .

  
ELSEIF p_dispo = 'B07' .

    
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv FROM ztpp_pc_g01
      
WHERE werks p_werks
        
AND dispo p_dispo
        
AND pcpch IN s_pcpch .

*    CLEAR gt_opt[] .
*    IF gt_alv[] IS NOT INITIAL.
*      LOOP AT gt_alv INTO gs_alv.
*        MOVE-CORRESPONDING gs_alv TO gs_opt .
*        APPEND gs_opt TO gt_opt .
*        CLEAR gs_opt .
*        CLEAR gs_alv .
*      ENDLOOP.
*    ENDIF.
*
*    SORT gt_opt[] BY pcpch .
*
*    DELETE ADJACENT DUPLICATES FROM gt_opt[] COMPARING pcpch .

  
ELSEIF p_dispo = 'B08' .

    
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv FROM ztpp_pc_h01
      
WHERE werks p_werks
        
AND dispo p_dispo
        
AND pcpch IN s_pcpch .

*    CLEAR gt_opt[] .
*    IF gt_alv[] IS NOT INITIAL.
*      LOOP AT gt_alv INTO gs_alv.
*        MOVE-CORRESPONDING gs_alv TO gs_opt .
*        APPEND gs_opt TO gt_opt .
*        CLEAR gs_opt .
*        CLEAR gs_alv .
*      ENDLOOP.
*    ENDIF.
*
*    SORT gt_opt[] BY pcpch .
*
*    DELETE ADJACENT DUPLICATES FROM gt_opt[] COMPARING pcpch .

  
ELSEIF p_dispo = 'B09' .

    
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_alv FROM ztpp_pc_r01
      
WHERE werks p_werks
        
AND dispo p_dispo
        
AND pcpch IN s_pcpch .

*    CLEAR gt_opt[] .
*    IF gt_alv[] IS NOT INITIAL.
*      LOOP AT gt_alv INTO gs_alv.
*        MOVE-CORRESPONDING gs_alv TO gs_opt .
*        APPEND gs_opt TO gt_opt .
*        CLEAR gs_opt .
*        CLEAR gs_alv .
*      ENDLOOP.
*    ENDIF.
*
*    SORT gt_opt[] BY pcpch .
*
*    DELETE ADJACENT DUPLICATES FROM gt_opt[] COMPARING pcpch .

  
ELSE .

  
ENDIF.

  
CLEAR gt_opt[] .
  
IF gt_alv[] IS NOT INITIAL.
    
LOOP AT gt_alv INTO gs_alv.
      
MOVE-CORRESPONDING gs_alv TO gs_opt .
      
APPEND gs_opt TO gt_opt .
      
CLEAR gs_opt .
      
CLEAR gs_alv .
    
ENDLOOP.
  
ENDIF.

  
SORT gt_opt[] BY pcpch .

  
DELETE ADJACENT DUPLICATES FROM gt_opt[] COMPARING pcpch .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form SCREEN_SETTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM screen_setting .
  
LOOP AT SCREEN.
    
CASE screen-group1.
      
WHEN 'M1'.
        
screen-input = '0'.
    
ENDCASE.
    
MODIFY SCREEN.
  
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GET_SO_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM fom_get_so_data .

  
CLEAR gt_data[] .
  
CLEAR gs_data .

  
SELECT INTO CORRESPONDING FIELDS OF TABLE gt_data FROM ztpp_pc_z01
    
WHERE vbeln IN s_vbel1
      
AND posnr IN s_posn1
      
AND zpczt = 'Z1' .

  
CLEAR gt_dbz[] .
  
LOOP AT gt_data INTO gs_data .
    
MOVE-CORRESPONDING gs_data TO gs_dbz .
    
APPEND gs_dbz TO gt_dbz .
    
CLEAR gs_dbz .
    
CLEAR gs_data .
  
ENDLOOP .

  go_dbz
->refresh_table_display( ).

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_DELE_ITEM
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM fom_submit  .
  
DATA: gs_ybz1 TYPE ty_hpmx.

  
CLEAR: gt_dbz_m[] .
  
CLEAR: gt_ybz_m[] .
  gt_dbz_m[] 
gt_dbz[] .
  gt_ybz_m[] 
gt_ybz[] .
*gt_dbz_sub
  
CLEAR gt_dbz_sub[] .
  
LOOP AT gt_dbz INTO gs_dbz WHERE pcpch IS NOT INITIAL.
    
APPEND gs_dbz TO gt_dbz_sub .
    gs_dbz
-icon = icon_unlocked .
    
MODIFY gt_dbz FROM gs_dbz .
    
CLEAR gs_dbz .
  
ENDLOOP.

*&---------------------------------------------------------------------*
  
CLEAR gs_ybz1 .
  
READ TABLE gt_ybz INTO gs_ybz1 INDEX 1.
  
CLEAR gt_ybz_sub[] .
  
LOOP AT gt_ybz INTO gs_ybz WHERE pcpch <> gs_ybz1-pcpch.
*        zpcph   LIKE ztpp_pc_a01-zpcph,  "批号
*        pcpch   LIKE ztpp_pc_a01-pcpch,  "批次号
    gs_ybz
-zpcph gs_ybz1-zpcph .
    gs_ybz
-pcpch gs_ybz1-pcpch .
    
APPEND gs_ybz TO gt_ybz_sub .
    
MODIFY gt_ybz FROM gs_ybz .
    
CLEAR gs_ybz .
  
ENDLOOP.

  go_ybz
->refresh_table_display( ).
  go_dbz
->refresh_table_display( ).

  
IF gt_dbz_sub[] IS INITIAL AND gt_ybz_sub[] IS INITIAL.
    
MESSAGE '您还未触发任何操作!' TYPE 'S' DISPLAY LIKE 'E' .
  
ELSE .
    
MESSAGE '操作已提交!' TYPE 'S' .
  
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_REVOCATION
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM fom_revocation .
  gt_dbz[] 
gt_dbz_m[].
  gt_ybz[] 
gt_ybz_m[].

  go_ybz
->refresh_table_display( ).
  go_dbz
->refresh_table_display( ).

  
CLEAR: gt_dbz_m[] .
  
CLEAR: gt_ybz_m[] .
  
CLEAR gt_dbz_sub[] .
  
CLEAR gt_ybz_sub[] .
  
MESSAGE '操作已取消!' TYPE 'S'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_DELE_SAVE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM fom_dele_save .
  
DATA :v_symbol_1(20) TYPE c.
  
DATA: y_answer TYPE c.  "确认保存计数
  
IF gt_dbz_sub[] IS INITIAL AND gt_ybz_sub[] IS INITIAL.
    
MESSAGE '您还未提交任何操作!' TYPE 'S' DISPLAY LIKE 'E' .
  
ELSE .

    
CALL FUNCTION 'POPUP_TO_CONFIRM'
      
EXPORTING
        
titlebar      = '确认信息'
        text_question 
= '确认保存输入信息?'
        text_button_1 
= '是'(041)
        text_button_2 
= '否'(042)
      
IMPORTING
        answer        
y_answer.
    
IF y_answer EQ '1'.

      
PERFORM frm_push_csv.

    
ELSE.
      
MESSAGE  '您选择了‘否’终止保存!' TYPE 'S' DISPLAY LIKE 'E'.
    
ENDIF.

  
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PUSH_CSV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_push_csv .
  
DATA lv_zpcph TYPE ze_pcph.
  
DATA lv_vbeln TYPE vbap-vbeln.
  
DATA lv_posnr TYPE vbap-posnr.
  
DATA lv_pcfjh TYPE ze_pcfjh.
  
DATA lv_zcjdm TYPE ze_cjdm.
  
DATA lv_pcnum(2) TYPE n.
  
DATA lv_time LIKE sy-uzeit.
  
DATA lv_chtst LIKE tzonref-tstamps.
  
DATA lv_fitst LIKE tzonref-tstamps.
  
DATA lv_tzone LIKE tzonref-tzone.
  
DATA lv_return TYPE c.
  
DATA lv_qty TYPE kwmeng.

  
CLEAR:lv_time,lv_return,lv_chtst,lv_fitst,lv_pcfjh,lv_zpcph,gi_proxy,wa_arg0,gi_exception.
  
REFRESH:gi_input,gi_output,gi_input-parameters-arg0.
*  SORT gt_dbz_sub BY zpcph kunnr vbeln posnr.

*        vbeln   LIKE vbap-vbeln,  "销售订单
*        posnr   LIKE vbap-posnr,  "行项目

*  DATA lv_vbeln TYPE vbap-vbeln.
*  DATA lv_posnr TYPE vbap-posnr.

  
IF gt_dbz_sub IS NOT INITIAL .
    
LOOP AT gt_dbz_sub INTO gs_dbz_sub.

      
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'   "前缀补零
        
EXPORTING
          
input  = gs_dbz_sub-vbeln
        
IMPORTING
          
output = gs_dbz_sub-vbeln.

      wa_arg0
-order_id              gs_dbz_sub-bstnk.  "PO#
      wa_arg0
-po_row_number         gs_dbz_sub-posex.  "PO行项目
      wa_arg0
-valid                 gs_dbz_sub-loekz.  "删除标识

      wa_arg0
-sap_order_id          gs_dbz_sub-vbeln.  "销售订单
      wa_arg0
-so_row_number         gs_dbz_sub-posnr.  "SO行项目
      wa_arg0
-node_id1              = ''.             "节点ID
      wa_arg0
-production_line       p_disp1.        "产线
      wa_arg0
-batch_id              gs_dbz_sub-pcpch.  "批次号
      wa_arg0
-work_shop             gs_dbz_sub-zcjdm.  "车间
*      wa_arg0-batch_sort_number     = lv_pcfjh.  "批次号分拣号
      wa_arg0
-plant_code            p_werks.   "工厂

      
SELECT SINGLE zfjh INTO wa_arg0-room_number FROM vbap
        
WHERE vbeln wa_arg0-sap_order_id
          
AND posnr wa_arg0-so_row_number .

      
CLEAR lv_qty.
      
SELECT SINGLE kwmeng
        
FROM vbap
        
INTO lv_qty
       
WHERE vbeln gs_dbz_sub-vbeln  "销售订单
         
AND posnr gs_dbz_sub-posnr.  "SO行项目

      wa_arg0
-qty lv_qty.

      
APPEND wa_arg0 TO gi_input-parameters-arg0.
      
CLEAR:wa_arg0,gs_dbz_sub.

    
ENDLOOP.
  
ENDIF .

  
IF gt_ybz_sub[] IS NOT INITIAL.
    
LOOP AT gt_ybz_sub[] INTO gs_ybz_sub.

      
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'   "前缀补零
        
EXPORTING
          
input  = gs_ybz_sub-vbeln
        
IMPORTING
          
output = gs_ybz_sub-vbeln.

      
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
        
EXPORTING
          
input  = gs_ybz_sub-bstnk
        
IMPORTING
          
output = gs_ybz_sub-bstnk.

      wa_arg0
-order_id              gs_ybz_sub-bstnk.  "PO#
      wa_arg0
-po_row_number         gs_ybz_sub-posex.  "PO行项目
      wa_arg0
-valid                 gs_ybz_sub-loekz.  "删除标识

      wa_arg0
-sap_order_id          gs_ybz_sub-vbeln.  "销售订单
      wa_arg0
-so_row_number         gs_ybz_sub-posnr.  "SO行项目
      wa_arg0
-node_id1              = ''.             "节点ID
      wa_arg0
-production_line       p_disp1.        "产线
      wa_arg0
-batch_id              gs_ybz_sub-pcpch.  "批次号
      wa_arg0
-work_shop             gs_ybz_sub-zcjdm.  "车间
*      wa_arg0-batch_sort_number     = lv_pcfjh.  "批次号分拣号
      wa_arg0
-plant_code            p_werks.   "工厂

      
SELECT SINGLE zfjh INTO wa_arg0-room_number FROM vbap
        
WHERE vbeln wa_arg0-sap_order_id
          
AND posnr wa_arg0-so_row_number .

      
CLEAR lv_qty.
      
SELECT SINGLE kwmeng
        
FROM vbap
        
INTO lv_qty
       
WHERE vbeln gs_ybz_sub-vbeln  "销售订单
         
AND posnr gs_ybz_sub-posnr.  "SO行项目

      wa_arg0
-qty lv_qty.

      
APPEND wa_arg0 TO gi_input-parameters-arg0.
      
CLEAR:wa_arg0,gs_ybz_sub.

    
ENDLOOP.
  
ENDIF .

*  LOOP AT gi_hpmx INTO wa_hpmx WHERE pcpch IS NOT INITIAL.
*    "分拣号
*    IF lv_vbeln IS INITIAL AND lv_posnr IS INITIAL.
*      lv_pcfjh = 1.
*      lv_vbeln = wa_hpmx-vbeln .
*      lv_posnr = wa_hpmx-posnr .
*    ENDIF.
*
*    IF lv_vbeln NE wa_hpmx-vbeln OR lv_posnr NE wa_hpmx-posnr.
*      lv_pcfjh = 1.
*      lv_vbeln = wa_hpmx-vbeln .
*      lv_posnr = wa_hpmx-posnr .
*    ENDIF.
*
*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'   "前缀补零
*      EXPORTING
*        input  = wa_hpmx-vbeln
*      IMPORTING
*        output = wa_hpmx-vbeln.
*
*    CLEAR wa_out.
*    READ TABLE gi_out INTO wa_out WITH KEY vbeln = wa_hpmx-vbeln posnr = wa_hpmx-posnr.
*    wa_arg0-order_id              = wa_out-bstnk.  "PO#
*    wa_arg0-po_row_number         = wa_out-posex.  "PO行项目
*    wa_arg0-valid                 = wa_out-loekz.  "删除标识
*
*    READ TABLE gi_charg WITH KEY zpcph = wa_hpmx-zpcph.
*
*    wa_arg0-sap_order_id          = wa_hpmx-vbeln.  "销售订单
*    wa_arg0-so_row_number         = wa_hpmx-posnr.  "SO行项目
*    wa_arg0-node_id1              = ''.             "节点ID
*    wa_arg0-production_line       = p_dispo.        "产线
*    wa_arg0-batch_id              = gi_charg-pcpch. "批次号
*    wa_arg0-work_shop             = gi_charg-zcjdm. "车间
*    wa_arg0-batch_sort_number     = lv_pcfjh.       "批次号分拣号
*    wa_arg0-plant_code            = p_werks.        "工厂
*
*    SELECT SINGLE zfjh INTO wa_arg0-room_number FROM vbap
*      WHERE vbeln = wa_arg0-sap_order_id
*        AND posnr = wa_arg0-so_row_number .
*
**   wa_arg0-room_number           = p_werks.   "房间号
**    wa_arg0-color_code            = gi_charg-yys.  "主颜色
**    wa_arg0-color_desc            = gi_charg-yysms.  "主颜色描述
**    wa_arg0-box_code              = gi_charg-ypmkx.  "主框型
**    wa_arg0-box_desc              = gi_charg-ykxms.  "主框型描述
*
*    "批次号日期
*    CONVERT DATE gi_charg-pchda TIME '000000' INTO TIME STAMP lv_chtst TIME ZONE lv_tzone.
*    "完成日期.
*    CONVERT DATE gi_charg-cmdat TIME '000000' INTO TIME STAMP lv_fitst TIME ZONE lv_tzone.
*    wa_arg0-batch_date            = lv_chtst.  "批次号日期
*    wa_arg0-finish_time           = lv_fitst.  "完成日期.
*
*    "产线描述
*    SELECT SINGLE dsnam
*      FROM t024d
*      INTO wa_arg0-production_line_desc
*     WHERE werks = p_werks
*       AND dispo = p_dispo.
*
*    "车间描述
*    SELECT SINGLE zcjms
*      FROM ztpp_pc_a02
*      INTO wa_arg0-work_shop_desc
*     WHERE werks = p_werks
*       AND zcjdm = gi_charg-zcjdm.
*
*    "取销售订单行项目数量
*    CLEAR lv_qty.
*    SELECT SINGLE kwmeng
*      FROM vbap
*      INTO lv_qty
*     WHERE vbeln = wa_hpmx-vbeln  "销售订单
*       AND posnr = wa_hpmx-posnr.  "SO行项目
*
*    wa_arg0-qty = lv_qty.
*
*    APPEND wa_arg0 TO gi_input-parameters-arg0.
*    CLEAR:wa_arg0,wa_hpmx.
*    ADD 1 TO lv_pcfjh.
*  ENDLOOP.

  
TRY.
      
CREATE OBJECT gi_proxy.
      gi_proxy
->save_order_bom_produced_info(
        
EXPORTING
          
input = gi_input
        
IMPORTING
          
output = gi_output ).

      lv_return 
gi_output-parameters-return.

    
CATCH cx_ai_system_fault INTO gi_exception.
*      WRITE gi_exception->errortext.
  
ENDTRY.

  
IF lv_return = 1.
    
PERFORM frm_save_data.
  
ELSE.
    
MESSAGE  'CSV推送到CRM失败,保存失败,请联系管理员!' TYPE 'S' DISPLAY LIKE 'E'.
  
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SAVE_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_save_data .
  
CASE p_disp1.
    
WHEN 'B01'.

      
IF gt_dbz_sub IS NOT INITIAL.
        
LOOP AT gt_dbz_sub INTO gs_dbz_sub.

          
IF gs_dbz_sub-loekz IS INITIAL.
            
DELETE FROM ztpp_pc_a01 WHERE vbeln gs_dbz_sub-vbeln
                          
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET gspbs = ''WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
          
ELSE.
            
DELETE FROM ztpp_pc_a01 WHERE vbeln gs_dbz_sub-vbeln
                          
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET gspbs = '' loekz = 'X' WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.

*                UPDATE ztpp_pc_a01 SET loekz = 'X'WHERE vbeln = gs_dbz_sub-vbeln
*                                                   AND posnr = gs_dbz_sub-posnr .
*                IF sy-subrc = 0.
*                  COMMIT WORK .
*                ENDIF.
          
ENDIF.

          
CLEAR gs_dbz_sub .
        
ENDLOOP.
      
ENDIF.

    
WHEN 'B02'.

      
IF gt_dbz_sub IS NOT INITIAL.
        
LOOP AT gt_dbz_sub INTO gs_dbz_sub.

          
IF gs_dbz_sub-loekz IS INITIAL.
            
DELETE FROM ztpp_pc_b01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET ympbs = ''WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
          
ELSE.

            
DELETE FROM ztpp_pc_b01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET ympbs = '' loekz = 'X'WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.

*                UPDATE ztpp_pc_b01 SET loekz = 'X'WHERE vbeln = gs_dbz_sub-vbeln
*                                                   AND posnr = gs_dbz_sub-posnr .
*                IF sy-subrc = 0.
*                  COMMIT WORK .
*                ENDIF.
          
ENDIF.

          
CLEAR gs_dbz_sub .
        
ENDLOOP.
      
ENDIF.

    
WHEN 'B03'.

      
IF gt_dbz_sub IS NOT INITIAL.
        
LOOP AT gt_dbz_sub INTO gs_dbz_sub.

          
IF gs_dbz_sub-loekz IS INITIAL.
            
DELETE FROM ztpp_pc_c01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET mkpbs = ''WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
          
ELSE.
            
DELETE FROM ztpp_pc_c01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET mkpbs = ''loekz = 'X'WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.

*                UPDATE ztpp_pc_c01 SET loekz = 'X'WHERE vbeln = gs_dbz_sub-vbeln
*                                                   AND posnr = gs_dbz_sub-posnr .
*                IF sy-subrc = 0.
*                  COMMIT WORK .
*                ENDIF.
          
ENDIF.

          
CLEAR gs_dbz_sub .
        
ENDLOOP.
      
ENDIF.

    
WHEN 'B04'.

      
IF
        gt_dbz_sub 
IS NOT INITIAL.
        
LOOP AT gt_dbz_sub INTO gs_dbz_sub.

          
IF gs_dbz_sub-loekz IS INITIAL.
            
DELETE FROM ztpp_pc_d01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET lkpbs = ''WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
          
ELSE.
            
DELETE FROM ztpp_pc_d01 WHERE vbeln gs_dbz_sub-vbeln
                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET lkpbs = '' loekz = 'X'WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.

*                UPDATE ztpp_pc_d01 SET loekz = 'X'WHERE vbeln = gs_dbz_sub-vbeln
*                                                   AND posnr = gs_dbz_sub-posnr .
*                IF sy-subrc = 0.
*                  COMMIT WORK .
*                ENDIF.
          
ENDIF.

          
CLEAR gs_dbz_sub .
        
ENDLOOP.
      
ENDIF.

    
WHEN 'B05'.

      
IF gt_dbz_sub IS NOT INITIAL.
        
LOOP AT gt_dbz_sub INTO gs_dbz_sub.

          
IF gs_dbz_sub-loekz IS INITIAL.
            
DELETE FROM ztpp_pc_e01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET xspbs = ''WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
          
ELSE.
            
DELETE FROM ztpp_pc_e01 WHERE vbeln gs_dbz_sub-vbeln
                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET xspbs = ''loekz = 'X'WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.

*                UPDATE ztpp_pc_e01 SET loekz = 'X'WHERE vbeln = gs_dbz_sub-vbeln
*                                                   AND posnr = gs_dbz_sub-posnr .
*                IF sy-subrc = 0.
*                  COMMIT WORK .
*                ENDIF.
          
ENDIF.

          
CLEAR gs_dbz_sub .
        
ENDLOOP.
      
ENDIF.

    
WHEN 'B06'.

      
IF gt_dbz_sub IS NOT INITIAL.
        
LOOP AT gt_dbz_sub INTO gs_dbz_sub.

          
IF gs_dbz_sub-loekz IS INITIAL.
            
DELETE FROM ztpp_pc_f01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET bbpbs = ''WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
          
ELSE.
            
DELETE FROM ztpp_pc_f01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET bbpbs = ''loekz = 'X'WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.

*                UPDATE ztpp_pc_f01 SET loekz = 'X' WHERE vbeln = gs_dbz_sub-vbeln
*                                                               AND posnr = gs_dbz_sub-posnr .
*                IF sy-subrc = 0.
*                  COMMIT WORK .
*                ENDIF.
          
ENDIF.

          
CLEAR gs_dbz_sub .
        
ENDLOOP.
      
ENDIF.

    
WHEN 'B07'.

      
IF gt_dbz_sub IS NOT INITIAL.
        
LOOP AT gt_dbz_sub INTO gs_dbz_sub.

          
IF gs_dbz_sub-loekz IS INITIAL.
            
DELETE FROM ztpp_pc_g01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET zspbs = ''WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
          
ELSE.
            
DELETE FROM ztpp_pc_g01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET zspbs = ''loekz = 'X'WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
*                UPDATE ztpp_pc_g01 SET loekz = 'X'WHERE vbeln = gs_dbz_sub-vbeln
*                                                   AND posnr = gs_dbz_sub-posnr .
*                IF sy-subrc = 0.
*                  COMMIT WORK .
*                ENDIF.
          
ENDIF.

          
CLEAR gs_dbz_sub .
        
ENDLOOP.
      
ENDIF.

    
WHEN 'B08'.

      
IF gt_dbz_sub IS NOT INITIAL.
        
LOOP AT gt_dbz_sub INTO gs_dbz_sub.

          
IF gs_dbz_sub-loekz IS INITIAL.
            
DELETE FROM ztpp_pc_h01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET wjpbs = ''WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
          
ELSE.
            
DELETE FROM ztpp_pc_h01 WHERE vbeln gs_dbz_sub-vbeln
                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET wjpbs = '' loekz = 'X'WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.

*                UPDATE ztpp_pc_h01 SET loekz = 'X'WHERE vbeln = gs_dbz_sub-vbeln
*                                                   AND posnr = gs_dbz_sub-posnr .
*                IF sy-subrc = 0.
*                  COMMIT WORK .
*                ENDIF.
          
ENDIF.

          
CLEAR gs_dbz_sub .
        
ENDLOOP.
      
ENDIF.

    
WHEN 'R01'.

      
IF gt_dbz_sub IS NOT INITIAL.
        
LOOP AT gt_dbz_sub INTO gs_dbz_sub.

          
IF gs_dbz_sub-loekz IS INITIAL.
            
DELETE FROM ztpp_pc_r01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET gspbs = ''WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
          
ELSE.

            
DELETE FROM ztpp_pc_r01 WHERE vbeln gs_dbz_sub-vbeln
                                      
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.
            
UPDATE ztpp_pc_z01 SET gspbs = ''loekz = 'X'WHERE vbeln gs_dbz_sub-vbeln
                                               
AND posnr gs_dbz_sub-posnr .
            
IF sy-subrc = 0.
              
COMMIT WORK .
            
ENDIF.

*                UPDATE ztpp_pc_r01 SET loekz = 'X'WHERE vbeln = gs_dbz_sub-vbeln
*                                                   AND posnr = gs_dbz_sub-posnr .
*                IF sy-subrc = 0.
*                  COMMIT WORK .
*                ENDIF.
          
ENDIF.

          
CLEAR gs_dbz_sub .
        
ENDLOOP.
      
ENDIF.

    
WHEN OTHERS.
  
ENDCASE.

  
DATA gs_pp_pc_z01 TYPE ztpp_pc_z01 .
  
DATA gs_pp_pc_a01 TYPE ztpp_pc_a01 .
  
DATA gs_pp_pc_b01 TYPE ztpp_pc_b01 .
  
DATA gs_pp_pc_c01 TYPE ztpp_pc_c01 .
  
DATA gs_pp_pc_d01 TYPE ztpp_pc_d01 .
  
DATA gs_pp_pc_e01 TYPE ztpp_pc_e01 .
  
DATA gs_pp_pc_f01 TYPE ztpp_pc_f01 .
  
DATA gs_pp_pc_g01 TYPE ztpp_pc_g01 .
  
DATA gs_pp_pc_h01 TYPE ztpp_pc_h01 .
  
DATA gs_pp_pc_r01 TYPE ztpp_pc_r01 .

  
IF gt_ybz_sub[] IS NOT INITIAL.
    
LOOP AT gt_ybz_sub[] INTO gs_ybz_sub.

      
SELECT SINGLE INTO CORRESPONDING FIELDS OF gs_pp_pc_z01 FROM ztpp_pc_z01
          
WHERE vbeln gs_ybz_sub-vbeln
           
AND  posnr gs_ybz_sub-posnr .

      
CASE p_disp1.
        
WHEN 'B01'.
          
MOVE-CORRESPONDING gs_ybz_sub TO gs_pp_pc_a01 .
          gs_pp_pc_a01
-zpcph gs_ybz_sub-zpcph .
          gs_pp_pc_a01
-pcpch gs_ybz_sub-pcpch .
          
MODIFY ztpp_pc_a01 FROM gs_pp_pc_a01 .
        
WHEN 'B02'.
          
MOVE-CORRESPONDING gs_ybz_sub TO gs_pp_pc_b01 .
          gs_pp_pc_b01
-zpcph gs_ybz_sub-zpcph .
          gs_pp_pc_b01
-pcpch gs_ybz_sub-pcpch .
          
MODIFY ztpp_pc_b01 FROM gs_pp_pc_b01 .
        
WHEN 'B03'.
          
MOVE-CORRESPONDING gs_ybz_sub TO gs_pp_pc_c01 .
          gs_pp_pc_c01
-zpcph gs_ybz_sub-zpcph .
          gs_pp_pc_c01
-pcpch gs_ybz_sub-pcpch .
          
MODIFY ztpp_pc_c01 FROM gs_pp_pc_c01 .
        
WHEN 'B04'.
          
MOVE-CORRESPONDING gs_ybz_sub TO gs_pp_pc_d01 .
          gs_pp_pc_d01
-zpcph gs_ybz_sub-zpcph .
          gs_pp_pc_d01
-pcpch gs_ybz_sub-pcpch .
          
MODIFY ztpp_pc_d01 FROM gs_pp_pc_d01 .
        
WHEN 'B05'.
          
MOVE-CORRESPONDING gs_ybz_sub TO gs_pp_pc_e01 .
          gs_pp_pc_e01
-zpcph gs_ybz_sub-zpcph .
          gs_pp_pc_e01
-pcpch gs_ybz_sub-pcpch .
          
MODIFY ztpp_pc_e01 FROM gs_pp_pc_e01 .
        
WHEN 'B06'.
          
MOVE-CORRESPONDING gs_ybz_sub TO gs_pp_pc_f01 .
          gs_pp_pc_f01
-zpcph gs_ybz_sub-zpcph .
          gs_pp_pc_f01
-pcpch gs_ybz_sub-pcpch .
          
MODIFY ztpp_pc_f01 FROM gs_pp_pc_f01 .
        
WHEN 'B07'.
          
MOVE-CORRESPONDING gs_ybz_sub TO gs_pp_pc_g01 .
          gs_pp_pc_g01
-zpcph gs_ybz_sub-zpcph .
          gs_pp_pc_g01
-pcpch gs_ybz_sub-pcpch .
          
MODIFY ztpp_pc_g01 FROM gs_pp_pc_g01 .
        
WHEN 'B08'.
          
MOVE-CORRESPONDING gs_ybz_sub TO gs_pp_pc_h01 .
          gs_pp_pc_h01
-zpcph gs_ybz_sub-zpcph .
          gs_pp_pc_h01
-pcpch gs_ybz_sub-pcpch .
          
MODIFY ztpp_pc_h01 FROM gs_pp_pc_h01 .
        
WHEN 'R01'.
          
MOVE-CORRESPONDING gs_ybz_sub TO gs_pp_pc_r01 .
          gs_pp_pc_r01
-zpcph gs_ybz_sub-zpcph .
          gs_pp_pc_r01
-pcpch gs_ybz_sub-pcpch .
          
MODIFY ztpp_pc_r01 FROM gs_pp_pc_r01 .
        
WHEN OTHERS.
      
ENDCASE.

      
IF sy-subrc = 0.
        
COMMIT WORK .
      
ENDIF.
      
CLEAR gs_pp_pc_a01 .
      
CLEAR gs_pp_pc_z01 .
      
CLEAR gs_ybz_sub .
    
ENDLOOP.
  
ENDIF.

  
CLEAR gt_dbz[].
  
CLEAR gt_ybz[].
  go_ybz
->refresh_table_display( ).
  go_dbz
->refresh_table_display( ).
  
MESSAGE  '已保存!' TYPE 'S' .
ENDFORM .

INITIALIZATION .

AT SELECTION-SCREEN OUTPUT.
  
PERFORM screen_setting.

AT SELECTION-SCREEN .
  
PERFORM fom_check .
  
PERFORM fom_selection_screen_pai .

START-OF-SELECTION.
  
PERFORM fom_initial .                                                         "事件
  
PERFORM fom_getdata .                                                         "取得项目信息
  
CALL SCREEN 100.

相关屏幕:

链接:https://pan.baidu.com/s/1mhSEw5M 密码:rmkx

显示效果:



猜你喜欢

转载自blog.csdn.net/Sundam/article/details/78981132