ITPub博客

首页 > Linux操作系统 > Linux操作系统 > alv00

alv00

原创 Linux操作系统 作者:hzq2010 时间:2011-05-03 09:22:19 0 删除 编辑

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } INCLUDE zmaintain_top.
INCLUDE zmaintain_alv.
INCLUDE zmaintain_frm.
*---------------------------------------------------------------------*
*AT SELECTION-SCREEN
*---------------------------------------------------------------------*
* PAI
*OB PHOEBUS
AT SELECTION-SCREEN.
  PERFORM sub_check_input.
  IF p_query = 'X'.
    AUTHORITY-CHECK OBJECT 'V_KNA1_VKO'
            ID 'VKORG' FIELD p_vkorg.
    IF sy-subrc <> 0.
      MESSAGE s208(00WITH text-aut.
      STOP.
    ENDIF.
  ENDIF.
*OE PHOEBUS
*&---------------------------------------------------------------------*
* INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
*&---------------------------------------------------------------------*
* START OF SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM build_fieldcat.
  PERFORM read_table_data.
  IF p_query = 'X'.
    CALL SCREEN 0100.
  ELSE.
    PERFORM sub_new.
  ENDIF.

 

 

zMAINTAIN_TOP

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S52 { color: #0000FF; } TABLES:zsd_d3_001,vbrk,vbrp,marc,kna1,vbkd,vbak.
*&---------------------------------------------------------------------*
* DATA DEFINE
*&---------------------------------------------------------------------*
RANGES:r_flag FOR zsd_d3_001-dflag.
TYPESBEGIN OF t_s_list,
        posnr LIKE zsd_d3_001-posnr,
        kunnr LIKE kna1-kunnr,
        name1 LIKE kna1-name1,
        matnr LIKE marc-matnr,
        maktx LIKE makt-maktx,
        kdmat LIKE vbap-kdmat,
        menge LIKE zsd_d3_001-menge,
        kbetr LIKE zsd_d3_001-kbetr,
        dmbtr LIKE zsd_d3_001-dmbtr,
        waers LIKE mseg-waers,
*        bstkd like vbkd-bstkd,
        vkorg LIKE vbrp-vkorg_auft,
        vtweg LIKE vbrk-vtweg,
        sbi LIKE zsd_d3_001-sbi,
        vbeln LIKE vbrk-vbeln,
        budat LIKE sy-datum,
        bldat LIKE sy-datum,
        remark(40),
        ernam LIKE zsd_d3_001-ernam,
        aenam LIKE zsd_d3_001-aenam,
        aedat LIKE sy-datum ,
        dflag,
      END OF t_s_list.

DATA:it_data TYPE STANDARD TABLE OF t_s_list WITH HEADER LINE.
DATA:it_new TYPE STANDARD TABLE OF t_s_list WITH HEADER LINE.
DATA:it_delt TYPE STANDARD TABLE OF t_s_list WITH HEADER LINE.
DATA:wa LIKE zsd_d3_001.
*&---------------------------------------------------------------------*
* SELECTION SCREEN
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF BLOCK b11 WITH FRAME TITLE text-002.
PARAMETERS:p_query RADIOBUTTON GROUP rad1.
SELECTION-SCREEN BEGIN OF BLOCK b12 WITH FRAME TITLE text-004.
SELECT-OPTIONS:s_bldat FOR zsd_d3_001-bldat,
               s_kunnr FOR kna1-kunnr NO-EXTENSION NO INTERVALS ,
               s_matnr FOR marc-matnr NO-EXTENSION NO INTERVALS ,
               s_ernam FOR vbak-ernam OBLIGATORY.
*OB PHOEBUS
PARAMETERS     p_vkorg LIKE vbrp-vkorg_auft OBLIGATORY.
*OE PHOEBUS
SELECTION-SCREEN END OF BLOCK b12.
PARAMETERS:p_creat RADIOBUTTON GROUP rad1.
SELECTION-SCREEN END OF BLOCK b11.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
PARAMETERS:p_dflag1 RADIOBUTTON GROUP radi,
           p_dflag2 RADIOBUTTON GROUP radi,
           p_dflag3 RADIOBUTTON GROUP radi.
SELECTION-SCREEN END OF BLOCK b3.

 

z_alv

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } type-pools: rsds,slis.
include .
type-pools: vrm.
data: name  type vrm_id,
      list  type vrm_values,
      value like line of list.
data: is_x030l  type x030l,
      it_dfies  type table of dfies,
      is_dfies  type dfies,
      it_fdiff  type table of field_dif,
      is_fdiff  type field_dif.
data: w_selid   type rsdynsel-selid,
      it_tables type table of rsdstabs,
      is_tables type rsdstabs,
      it_fields type table of rsdsfields,
      it_expr   type rsds_texpr,
      it_ranges type rsds_trange,
      it_where  type rsds_twhere,
      is_where  type rsds_where,
      w_active  type i.
data: it_content type ref to data,
      it_delete  type ref to data,
      it_modif   type ref to data.
*      it_fcat    TYPE lvc_t_fcat.
data: w_okcode   type sy-ucomm,
      g_flag type c value 'X',
      flag_change value 'X'.
field-symbols:  type standard table,
                type standard table,
                type standard table.
field-symbols:  type any table,
                 type any,
                type any.
data:flag_err.
**********************************************
data: go_alv       type ref to cl_gui_alv_grid,
      go_new       type ref to cl_gui_alv_grid,
      lt_fcat      type lvc_t_fcat,
      ls_fcat      like line of lt_fcat,
      ls_layout    type lvc_s_layo,
      lt_excl_func type ui_functions,
      ls_excl_func type ui_func,
      ld_count type i,
*DROP DOWN TABLE
      lt_dropdown type lvc_t_drop,
      ls_dropdown type lvc_s_drop,
*F4 TABLE
      lt_f4 type lvc_t_f4,
      ls_f4 type lvc_s_f4.
data:lin type i,
     p_modi type lvc_s_modi,
     lt_modi type lvc_t_modi,
     inserted_rows type lvc_t_moce,
     deleted_rows type lvc_t_moce,
     deleted_rows1 type lvc_s_moce,
     mt_protocol type lvc_t_msg1,
     cflag,
     dflag.
data:toolbar_excluding type ui_functions.
* data for event handling
data: gs_f4 type lvc_s_f4,
      gt_f4 type lvc_t_f4.
data: it_fcat type slis_t_fieldcat_alv,
      is_fcat like line of it_fcat.
data: it_fieldcat type lvc_t_fcat,
      it_fieldcat_new type lvc_t_fcat,
      is_fieldcat like line of it_fieldcat.

*---------------------------------------------------------------------*
*       CLASS LCL_ALV_EVENT_RECEIVER DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class lcl_alv_event_receiver definition.
  public section.
    data: my_grid type ref to cl_gui_alv_grid.
    methods:
      handle_toolbar
       for event toolbar of cl_gui_alv_grid
           importing e_object e_interactive.
    methods: check_input
               changing ir_data_changed
                    type ref to cl_alv_changed_data_protocol.

    methods:
      handle_onf4
        for event onf4 of cl_gui_alv_grid
        importing sender
                 e_fieldname
                 e_fieldvalue
                 es_row_no
                 er_event_data
                 et_bad_cells
                 e_display,
                 handle_data_changed for event
                    data_changed of cl_gui_alv_grid
       importing e_onf4
                 e_onf4_before
                 e_onf4_after
                 er_data_changed
                 sender.


    methods:
      handle_double_click
        for event double_click of cl_gui_alv_grid
        importing e_row
                  e_column.
    methods:
      handle_user_command
        for event user_command of cl_gui_alv_grid
            importing e_ucomm.
*
  private section.
    types: ddshretval_table type table of ddshretval.
    class-methods: my_f4
          importing sender         type ref to cl_gui_alv_grid
                    et_bad_cells   type lvc_t_modi
                    es_row_no      type lvc_s_roid
                    er_event_data  type ref to cl_alv_event_data
                    e_display      type c
                    e_fieldname    type lvc_fname
          exporting lt_f4          type ddshretval_table.
endclass.                    "LCL_ALV_EVENT_RECEIVER DEFINITION
*---------------------------------------------------------------------*
*       CLASS LCL_ALV_EVENT_new DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class lcl_alv_event_new definition.
  public section.
    methods:
      handle_toolbar
       for event toolbar of cl_gui_alv_grid
           importing e_object e_interactive.
    methods:
      handle_onf4
        for event onf4 of cl_gui_alv_grid
        importing sender
                 e_fieldname
                 e_fieldvalue
                 es_row_no
                 er_event_data
                 et_bad_cells
                 e_display,
                 handle_data_changed for event
                    data_changed of cl_gui_alv_grid
       importing e_onf4
                 e_onf4_before
                 e_onf4_after
                 er_data_changed
                 sender.
    methods:
      handle_double_click
        for event double_click of cl_gui_alv_grid
        importing e_row
                  e_column.
    methods:
      handle_user_command
        for event user_command of cl_gui_alv_grid
            importing e_ucomm.

  private section.
    types: ddshretval_table type table of ddshretval.
    class-methods: my_f4
          importing sender         type ref to cl_gui_alv_grid
                    et_bad_cells   type lvc_t_modi
                    es_row_no      type lvc_s_roid
                    er_event_data  type ref to cl_alv_event_data
                    e_display      type c
                    e_fieldname    type lvc_fname
          exporting lt_f4          type ddshretval_table.


endclass.                    "LCL_ALV_EVENT_RECEIVER DEFINITION
*&---------------------------------------------------------------------*
*&       CLASS (IMPLEMENTATION)  LCL_ALV_EVENT_RECEIVER
*&---------------------------------------------------------------------*
*        TEXT
*----------------------------------------------------------------------*
class lcl_alv_event_receiver implementation.
  method handle_toolbar.
    data: ls_toolbar  type stb_button.
* append a separator to normal toolbar
    clear ls_toolbar.
    move 3 to ls_toolbar-butn_type.
    append ls_toolbar to e_object->mt_toolbar.
* append icons to toolbar
    if flag_change = ''.
      clear ls_toolbar.
      move 'DISP' to ls_toolbar-function.
      move '显示'(111to ls_toolbar-quickinfo.
      move icon_display to ls_toolbar-icon.
      move '显示'(112to ls_toolbar-text.
      move ' ' to ls_toolbar-disabled.
      append ls_toolbar to e_object->mt_toolbar.
      clear ls_toolbar.
      move 'NEW' to ls_toolbar-function.
      move '新建'(111to ls_toolbar-quickinfo.
      move icon_create to ls_toolbar-icon.
      move '新建'(112to ls_toolbar-text.
      move ' ' to ls_toolbar-disabled.
      append ls_toolbar to e_object->mt_toolbar.
      clear ls_toolbar.

      move 'COPY' to ls_toolbar-function.
      move '拷贝'(111to ls_toolbar-quickinfo.
      move icon_system_copy to ls_toolbar-icon.
      move '拷贝'(112to ls_toolbar-text.
      move ' ' to ls_toolbar-disabled.
      append ls_toolbar to e_object->mt_toolbar.
      clear ls_toolbar.

      move 'DELE' to ls_toolbar-function.
      move '删除标记'(111to ls_toolbar-quickinfo.
      move icon_delete to ls_toolbar-icon.
      move '删除标记'(112to ls_toolbar-text.
      move ' ' to ls_toolbar-disabled.
      append ls_toolbar to e_object->mt_toolbar.
      clear ls_toolbar.

      move 'SAVE' to ls_toolbar-function.
      move '保存'(111to ls_toolbar-quickinfo.
      move icon_system_save to ls_toolbar-icon.
      move '保存'(112to ls_toolbar-text.
      move ' ' to ls_toolbar-disabled.
      append ls_toolbar to e_object->mt_toolbar.
    else.
      clear ls_toolbar.
      move 'CHAN' to ls_toolbar-function.
      move '修改'(111to ls_toolbar-quickinfo.
      move icon_change to ls_toolbar-icon.
      move '修改'(112to ls_toolbar-text.
      move ' ' to ls_toolbar-disabled.
      append ls_toolbar to e_object->mt_toolbar.
    endif.
  endmethod.

  method handle_data_changed.
    if e_onf4_before <> 'X'.
      perform sub_processchg
               using er_data_changed.
    endif.
    call method go_alv->refresh_table_display.
    call method cl_gui_cfw=>flush.
  endmethod.                    "HANDLE_DATA_CHANGED

  method handle_onf4.
  endmethod"HANDLE_ONF4
  method check_input.
  endmethod.
  method handle_user_command.
    data: lt_rows type lvc_t_row,
          i       type i,
          l_ferr  type c.          "error flag
    case e_ucomm.
      when 'DELE'.
        call method go_alv->get_selected_rows
                 importing et_index_rows = lt_rows.
        check not lt_rows[] is initial.
        call method cl_gui_cfw=>flush.
        if sy-subrc ne 0.
          call function 'POPUP_TO_INFORM'
               exporting
                    titel = 'INFORMATION'
                    txt2  = sy-subrc
                    txt1  = 'Error in Flush'(500).
        else.
          perform sub_delete tables lt_rows.
        endif.
        call method go_alv->refresh_table_display.
        call method cl_gui_cfw=>flush.

      when 'SAVE'.
        perform command_save.
        call method go_alv->refresh_table_display.
        call method cl_gui_cfw=>flush.

      when 'CHAN'.
        flag_change = ''.
        set titlebar 'CHAN' with text-t01.
        perform sub_change.
        call method go_alv->refresh_table_display.
        call method cl_gui_cfw=>flush.

      when 'DISP'.
        flag_change = 'X'.
        set titlebar 'DISP' with text-t00.
        perform sub_disp.
        call method go_alv->refresh_table_display.
        call method cl_gui_cfw=>flush.

      when 'NEW'.
        perform sub_new.
        call method go_alv->refresh_table_display.
        call method cl_gui_cfw=>flush.
      when 'COPY'.
        call method go_alv->get_selected_rows
                 importing et_index_rows = lt_rows.
        check not lt_rows[] is initial.
        call method cl_gui_cfw=>flush.
        if sy-subrc ne 0.
          call function 'POPUP_TO_INFORM'
               exporting
                    titel = 'INFORMATION'
                    txt2  = sy-subrc
                    txt1  = 'Error in Flush'(500).
        else.
          perform sub_copy tables lt_rows.
          call method go_alv->refresh_table_display.
          call method cl_gui_cfw=>flush.

        endif.
*        CALL METHOD GO_NEW->REFRESH_TABLE_DISPLAY.
*        CALL METHOD CL_GUI_CFW=>FLUSH.
    endcase.
  endmethod.
  method handle_double_click.
  endmethod.
  method my_f4.
  endmethod.
endclass.                    "LCL_ALV_EVENT_RECEIVER IMPLEMENTATION
*---------------------------------------------------------------------*
*       CLASS LCL_ALV_EVENT_new IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class lcl_alv_event_new implementation.
  method handle_toolbar.
    data: ls_toolbar  type stb_button.
* append a separator to normal toolbar
    clear ls_toolbar.
    move 3 to ls_toolbar-butn_type.
    append ls_toolbar to e_object->mt_toolbar.

    clear ls_toolbar.
    move 'DELE' to ls_toolbar-function.
    move '删除标记'(111to ls_toolbar-quickinfo.
    move icon_delete to ls_toolbar-icon.
    move '删除标记'(112to ls_toolbar-text.
    move ' ' to ls_toolbar-disabled.
    append ls_toolbar to e_object->mt_toolbar.
    clear ls_toolbar.

    move 'SAVE' to ls_toolbar-function.
    move '保存'(111to ls_toolbar-quickinfo.
    move icon_system_save to ls_toolbar-icon.
    move '保存'(112to ls_toolbar-text.
    move ' ' to ls_toolbar-disabled.
    append ls_toolbar to e_object->mt_toolbar.
  endmethod.
  method handle_onf4.
  endmethod"HANDLE_ONF4
  method handle_user_command.
    data: lt_rows type lvc_t_row,
          i       type i,
          l_ferr  type c.          "error flag
    case e_ucomm.
      when 'DELE'.
        call method go_new->get_selected_rows
                 importing et_index_rows = lt_rows.
        call method cl_gui_cfw=>flush.
        if sy-subrc ne 0.
          call function 'POPUP_TO_INFORM'
               exporting
                    titel = 'INFORMATION'
                    txt2  = sy-subrc
                    txt1  = 'Error in Flush'(500).
        else.
          perform sub_delete tables lt_rows.

        endif.
        call method go_new->refresh_table_display.
        call method cl_gui_cfw=>flush.

      when 'SAVE'.
        call method go_new->get_selected_rows
                 importing et_index_rows = lt_rows.
        call method cl_gui_cfw=>flush.
        if sy-subrc ne 0.
          call function 'POPUP_TO_INFORM'
               exporting
                    titel = 'INFORMATION'
                    txt2  = sy-subrc
                    txt1  = 'Error in Flush'(500).
        else.
          perform command_save_new.
        endif.
*        call method go_new->refresh_table_display.
*        call method cl_gui_cfw=>flush.
    endcase.
  endmethod.
  method my_f4.
  endmethod.
  method handle_data_changed.
    if e_onf4_before <> 'X'.
      perform sub_processchg
               using er_data_changed.
    endif.
    call method go_new->refresh_table_display.
    call method cl_gui_cfw=>flush.
  endmethod.                    "HANDLE_DATA_CHANGED
  method handle_double_click.
  endmethod.
endclass.                    "LCL_ALV_EVENT_RECEIVER IMPLEMENTATION
data: gt_error type c.
data: go_alv_event_receiver type ref to lcl_alv_event_receiver.
data: go_alv_event_new type ref to lcl_alv_event_new.

 

 

 

 

  SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } FORM build_fieldcat.
  DATA: lt_fcat TYPE slis_t_fieldcat_alv.
  DATA: tab(10TYPE c,
        ld_count TYPE i.
  DATA : col_pos TYPE i VALUE 0.
  DATA:ls_fcat      LIKE LINE OF it_fieldcat.
  CLEAR ld_count.
  REFRESH:it_fcat.
  DEFINE def_add.
    clear ls_fcat.
    add 1 to ld_count.
    ls_fcat-fieldname = &1.
    ls_fcat-ref_field = &2.
    ls_fcat-ref_table = &3.
    ls_fcat-f4availabl = &4.
    ls_fcat-just      = &5.
    ls_fcat-scrtext_s = &6.
    ls_fcat-scrtext_m = &6.
    ls_fcat-scrtext_l = &6.
    ls_fcat-txt_field = &6.
    ls_fcat-outputlen = &7.
*    ls_fcat-do_sum    = &8.
*    ls_fcat-datatype  = &9.
    ls_fcat-edit      = &8.
    ls_fcat-col_pos = ld_count.
    append ls_fcat to it_fieldcat.
  END-OF-DEFINITION.
  def_add 'MATNR' 'MATNR' 'MARA' 'X' '' '物料号' '8' ''.
  def_add 'MAKTX' 'MAKTX' 'MAKT' '' '' '物料描述' '25' ''.
  def_add 'VKORG' 'VKORG_AUFT' 'VBRP' 'X' '' '销售组织' '8' ''.
  def_add 'VTWEG' 'VTWEG' 'VBRK' 'X' '' '分销渠道' '8' ''.
  def_add 'KUNNR' 'KUNNR' 'ZSD_D3_001' 'X' '' '客户代码' '10' ''.
  def_add 'NAME1' 'NAME1' 'KNA1' space '' '客户名称' '25' ''.
  def_add 'KDMAT' 'KDMAT' 'VBAP' 'X' '' '客户料号' '25' ''.
  def_add 'WAERS' 'WAERS' 'MSEG' 'X' '' '货币' '5' ''.
  def_add 'MENGE' 'MENGE' 'ZSD_D3_001' '' '' '消耗数量' '13' ''.
  def_add 'KBETR' 'KBETR' 'ZSD_D3_001' '' '' '单价' '19' ''.
  def_add 'DMBTR' 'DMBTR' 'ZSD_D3_001' '' '' '总金额' '19' ''.
  def_add 'SBI' 'SBI' 'ZSD_D3_001'     '' '' 'SBI' '12' ''.
  def_add 'BUDAT' 'BUDAT' 'ZSD_D3_001' 'X' '' '消耗日期' '10' ''.
  def_add 'BLDAT' 'BLDAT' 'ZSD_D3_001' 'X' '' '输入日期' '10' ''.
  def_add 'ERNAM' '' '' 'X' '' '记录创建者' '12' ''.
  def_add 'AENAM' '' '' 'X' '' '最后一次修改者' '12' ''.
  def_add 'AEDAT' '' '' 'X' '' '最近修改日期' '8' ''.


  def_add 'REMARK' '' '' space '' '备注' '30' ''.
  def_add 'DFLAG' '' '' space '' '删除标记' '4' ''.
ENDFORM.                    " build_fieldcat
*&---------------------------------------------------------------------*
*&      Form  READ_TABLE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM read_table_data.
  IF p_dflag1 = 'X'.
    r_flag-sign = 'I'.
    r_flag-option = 'EQ'.
    r_flag-low    = ''.
    APPEND r_flag.
  ELSEIF p_dflag2 = 'X'.
    r_flag-sign = 'I'.
    r_flag-option = 'EQ'.
    r_flag-low    = 'X'.
    APPEND r_flag.
  ELSE.
    r_flag-sign = 'I'.
    r_flag-option = 'BT'.
    r_flag-low    = ''.
    r_flag-high   = 'X'.
    APPEND r_flag.
  ENDIF.
  IF p_query = 'X'.
    SELECT
      zsd_d3_001~posnr
      zsd_d3_001~kunnr
      zsd_d3_001~matnr
      zsd_d3_001~kdmat
      zsd_d3_001~vkorg
      zsd_d3_001~vtweg
      zsd_d3_001~menge
      zsd_d3_001~kbetr
      zsd_d3_001~dmbtr
      zsd_d3_001~waers
      zsd_d3_001~budat
      zsd_d3_001~bldat
      zsd_d3_001~remark
      zsd_d3_001~sbi
      zsd_d3_001~dflag
      zsd_d3_001~ernam
      zsd_d3_001~aenam
      zsd_d3_001~aedat
    INTO CORRESPONDING FIELDS OF TABLE it_data
      FROM zsd_d3_001 INNER JOIN kna1
      ON zsd_d3_001~kunnr = kna1~kunnr
      WHERE zsd_d3_001~kunnr IN s_kunnr
        AND zsd_d3_001~matnr IN s_matnr
        and zsd_d3_001~ernam IN s_ernam
        AND budat IN s_bldat
        AND vkorg = p_vkorg
        AND dflag IN r_flag.
    LOOP AT it_data.
      SELECT SINGLE maktx INTO it_data-maktx
        FROM makt
        WHERE matnr = it_data-matnr
          AND spras = sy-langu.
      IF sy-subrc <> 0.
        SELECT SINGLE maktx INTO it_data-maktx
          FROM makt
          WHERE matnr = it_data-matnr.
      ENDIF.
      MODIFY it_data.
      CLEAR it_data.
    ENDLOOP.
    SORT it_data BY matnr kdmat budat bldat.
  ENDIF.

ENDFORM.                    " READ_TABLE_DATA
*---------------------------------------------------------------------*
*       FORM CREAT_ALV_CONTROL                                        *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  CTNAME                                                        *
*---------------------------------------------------------------------*
FORM creat_alv_control
     USING ctname TYPE char20.
  DATA: lo_container TYPE REF TO cl_gui_custom_container.
  IF go_alv IS INITIAL.
    CREATE OBJECT lo_container
      EXPORTING container_name = ctname.
    CLASS cl_gui_alv_grid DEFINITION LOAD.
    CREATE OBJECT go_alv
      EXPORTING
        i_parent      = lo_container
        i_appl_events = space.
  ENDIF.
ENDFORM.                    " CREAT_ALV_CONTROL_VENDOR

*---------------------------------------------------------------------*
*       FORM SET_DISPLAY                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM set_display.
  DATA ls_exclude TYPE ui_func.

  DATA: gs_variant TYPE disvariant. "for parameter IS_VARIANT
  CLEAR:toolbar_excluding.
  g_flag = 'X'.
  PERFORM excluding_build TABLES toolbar_excluding.
  gs_variant-report = sy-repid.
  ls_layout-sel_mode = 'A'.
*  ls_layout-cwidth_opt = 'X'.
  CALL METHOD  go_alv->set_table_for_first_display
         EXPORTING
*           i_structure_name        = 'ZSD_D3_001'
           is_layout               = ls_layout
           is_variant              = gs_variant
           i_save                  = 'A'
           i_default               = 'X'
           it_toolbar_excluding    = toolbar_excluding
         CHANGING  it_outtab        = it_data[]
                   it_fieldcatalog  =  it_fieldcat[].

* set f4 help
  CALL METHOD go_alv->register_f4_for_fields
    EXPORTING
      it_f4 = gt_f4.

* SET HANDLER OF EVENT
  IF go_alv_event_receiver IS INITIAL.
    CREATE OBJECT go_alv_event_receiver.
  ENDIF.
  SET HANDLER go_alv_event_receiver->handle_user_command
      FOR go_alv.
  SET HANDLER go_alv_event_receiver->handle_toolbar
      FOR go_alv.
  SET HANDLER go_alv_event_receiver->handle_double_click
      FOR go_alv.
  SET HANDLER go_alv_event_receiver->handle_data_changed
      FOR go_alv.
  SET HANDLER go_alv_event_receiver->handle_onf4
     FOR go_alv.
  CALL METHOD go_alv->set_toolbar_interactive.
  CALL METHOD go_alv->register_edit_event
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_enter.
  CALL METHOD cl_gui_control=>set_focus    "设置焦点在grid 上
    EXPORTING
      control = go_alv .
  CALL METHOD go_alv->refresh_table_display.
  CALL METHOD cl_gui_cfw=>flush.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM EXCLUDING_BUILD                                          *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  RT_EXCLUDING                                                  *
*---------------------------------------------------------------------*
FORM excluding_build
                     TABLES rt_excluding TYPE ui_functions.
  DATA ls_exclude TYPE ui_func.

  IF g_flag = 'X'.
    ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
    APPEND ls_exclude TO rt_excluding.
    ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
    APPEND ls_exclude TO rt_excluding.

    ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
    APPEND ls_exclude TO rt_excluding.
    ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
    APPEND ls_exclude TO rt_excluding.
    ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
    APPEND ls_exclude TO rt_excluding.
    ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
    APPEND ls_exclude TO rt_excluding.
    ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
    APPEND ls_exclude TO rt_excluding.
    ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
    APPEND ls_exclude TO rt_excluding.
  ENDIF.
ENDFORM.                    "EXCLUDING_BUILD
*&---------------------------------------------------------------------*
*&      Module  STATUS_0200  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0200 OUTPUT.
  SET PF-STATUS '200'.
  SET TITLEBAR '200' WITH text-t02.
  IF go_new IS INITIAL.
    PERFORM creat_alv_control_200
       USING 'ALV_GRID_200'.
    PERFORM build_alv_new_field.
    PERFORM sub_new_disp.
  ELSE.
    PERFORM build_alv_new_field.
    PERFORM sub_new_disp.
  ENDIF.
ENDMODULE.                 " STATUS_0200  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  PAI_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE pai_0100 INPUT.
  gt_error = space.

  IF NOT go_alv IS INITIAL.
*    call method go_alv->check_changed_data.
  ENDIF.

*  CASE SY-UCOMM.
*    WHEN 'SAVE'.
*      PERFORM COMMAND_SAVE.
*  ENDCASE.

ENDMODULE.                 " PAI_0100  INPUT
*---------------------------------------------------------------------*
*       FORM COMMAND_SAVE                                             *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM command_save.
  DATA: flag(1TYPE c,
        cnt TYPE i,
        answer.
  DATA:temp LIKE TABLE OF zsd_d3_001 WITH HEADER LINE.
  PERFORM check_data TABLES it_data CHANGING flag.
  PERFORM lock_table CHANGING flag.
  IF it_data[] IS INITIAL.
    flag = 'X'.
    CALL FUNCTION 'POPUP_TO_INFORM'
         EXPORTING
              titel = 'INFORMATION'
              txt1  = '没有需要'
              txt2  = '保存的数据!'(500).

  ENDIF.
  CHECK flag = ''.

  CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
       EXPORTING
            defaultoption  = 'Y'
            textline1      =  text-m03
*            TEXTLINE2      = GV_TEXT2
            titel          =  text-m00
            start_column   = 25
            start_row      = 6
            cancel_display = 'X'
       IMPORTING
            answer         = answer.
  CHECK answer = 'J'.
  PERFORM count_table_data CHANGING cnt.
  LOOP AT it_data.
    CHECK NOT it_data-posnr IS INITIAL.
    MOVE-CORRESPONDING it_data TO temp.
    temp-mandt = sy-mandt.
    APPEND temp.
    CLEAR temp.
  ENDLOOP.
  MODIFY zsd_d3_001 FROM TABLE temp.
  IF sy-subrc = 0.
    PERFORM unlock_table.
    MESSAGE s001(00WITH text-m04.
    cflag = ''.
  ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM COMMAND_SAVE_NEW                                         *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM command_save_new.
  DATA: flag(1TYPE c,
         cnt TYPE i,
         answer.
  DATA:temp LIKE TABLE OF zsd_d3_001 WITH HEADER LINE.
  DELETE it_new WHERE kunnr IS initial OR
                      matnr IS initial.

  PERFORM check_data TABLES it_new CHANGING flag.
  IF it_new[] IS INITIAL.
    flag = 'X'.
    CALL FUNCTION 'POPUP_TO_INFORM'
         EXPORTING
              titel = 'INFORMATION'
              txt1  = '没有需要'
              txt2  = '保存的数据!'(500).

  ENDIF.
  CHECK flag = ''.
  CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
       EXPORTING
            defaultoption  = 'Y'
            textline1      =  text-m03
*            TEXTLINE2      = GV_TEXT2
            titel          =  text-m00
            start_column   = 25
            start_row      = 6
            cancel_display = 'X'
       IMPORTING
            answer         = answer.
  CHECK answer = 'J'.
  PERFORM count_table_data CHANGING cnt.
  LOOP AT it_new.
    MOVE-CORRESPONDING it_new TO temp.
    temp-mandt = sy-mandt.
    IF temp-posnr IS INITIAL.
      cnt = cnt + 1.
      temp-posnr = cnt.
      it_new-posnr = temp-posnr.
    ENDIF.
    MODIFY it_new.
    APPEND temp.
    CLEAR temp.
  ENDLOOP.
  MODIFY zsd_d3_001 FROM TABLE temp.
  IF sy-subrc = 0.
    MESSAGE s001(00WITH text-m04.
    cflag = ''.
  ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM SUB_DELETE_NEW                                           *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  LT_ROWS                                                       *
*---------------------------------------------------------------------*
FORM sub_delete TABLES lt_rows STRUCTURE lvc_s_row.
  DATA:l_flag,
       answer.
  DATA:wa LIKE it_data.
  DATA:temp LIKE TABLE OF zsd_d3_001 WITH HEADER LINE.
  CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
       EXPORTING
            defaultoption  = 'Y'
            textline1      = text-m01
*            TEXTLINE2      = GV_TEXT2
            titel          = text-m00
            start_column   = 25
            start_row      = 6
            cancel_display = 'X'
       IMPORTING
            answer         = answer.
  CHECK answer = 'J'.

  LOOP AT lt_rows.
    CHECK lt_rows-rowtype IS INITIAL.
    READ TABLE it_data INTO wa INDEX lt_rows-index.
    CHECK sy-subrc = 0 AND wa-posnr <> ''.
    MOVE-CORRESPONDING wa TO temp.
    temp-dflag = 'X'.
    temp-aenam = sy-uname.
    temp-aedat = sy-datum.

    APPEND temp.
  ENDLOOP.
  MODIFY zsd_d3_001 FROM TABLE temp.
  IF sy-subrc = 0.
    COMMIT WORK.
    LOOP AT temp.
      DELETE it_data WHERE posnr = temp-posnr.
    ENDLOOP.
    MESSAGE s001(00WITH text-m02.
  ELSE.
    ROLLBACK WORK.
    MESSAGE s001(00WITH text-m03.
  ENDIF.

ENDFORM.                    " sub_DELETE

*&---------------------------------------------------------------------*
*&      Form  SUB_CHANGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_change.
  REFRESH it_fieldcat.
  DATA: tab(10TYPE c,
        ld_count TYPE i.
  DATA : col_pos TYPE i VALUE 0.
  DATA:ls_fcat      LIKE LINE OF it_fieldcat.
  CLEAR ld_count.
  DEFINE def_add.
    clear ls_fcat.
    add 1 to ld_count.
    ls_fcat-fieldname = &1.
    ls_fcat-ref_field = &2.
    ls_fcat-ref_table = &3.
    ls_fcat-f4availabl = &4.
    ls_fcat-just      = &5.
    ls_fcat-scrtext_s = &6.
    ls_fcat-scrtext_m = &6.
    ls_fcat-scrtext_l = &6.
    ls_fcat-outputlen = &7.
*    ls_fcat-do_sum    = &8.
*    ls_fcat-datatype  = &9.
    ls_fcat-edit      = &8.
    ls_fcat-col_pos = ld_count.
    append ls_fcat to it_fieldcat.
  END-OF-DEFINITION.
  def_add 'MATNR' 'MATNR' 'MARA' 'X' '' '物料号' '8' ''.
  def_add 'MAKTX' 'MAKTX' 'MAKT' space '' '物料描述' '25' ''.
  def_add 'VKORG' 'VKORG_AUFT' 'VBRP' 'X' '' '销售组织' '4' ''.
  def_add 'VTWEG' 'VTWEG' 'VBRK' 'X' '' '分销渠道' '8' ''.
  def_add 'KUNNR' 'KUNNR' 'ZSD_D3_001' 'X' '' '客户代码' '10' ''.
  def_add 'NAME1' 'NAME1' 'KNA1' space '' '客户名称' '25' ''.
  def_add 'KDMAT' 'KDMAT' 'VBAP' 'X' '' '客户料号' '25' ''.
  def_add 'WAERS' 'WAERS' 'MSEG' 'X' '' '货币' '5' 'X'.
  def_add 'MENGE' 'MENGE' 'ZSD_D3_001' space '' '消耗数量' '13' 'X'.
  def_add 'KBETR' 'KBETR' 'ZSD_D3_001' space '' '单价' '19' 'X'.
  def_add 'DMBTR' 'DMBTR' 'ZSD_D3_001' space '' '总金额' '19' 'X'.
  def_add 'SBI' 'SBI' 'ZSD_D3_001' space '' 'SBI' '12' 'X'.
  def_add 'BUDAT' 'BUDAT' 'ZSD_D3_001' 'X' '' '消耗日期' '10' 'X'.
  def_add 'BLDAT' 'BLDAT' 'ZSD_D3_001' 'X' '' '输入日期' '10' 'X'.
  def_add 'ERNAM' '' '' 'X' '' '记录创建者' '12' ''.
  def_add 'AENAM' '' '' 'X' '' '最后一次修改者' '12' ''.
  def_add 'AEDAT' '' '' 'X' '' '最近修改日期' '8' ''.

  def_add 'REMARK' '' '' space '' '备注' '30' 'X'.
  def_add 'DFLAG' '' '' space '' '删除标记' '4' ''.

  PERFORM sub_change_disp.
ENDFORM.                    " SUB_CHANGE
*&---------------------------------------------------------------------*
*&      Form  SUB_CHANGE_DISP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_change_disp.
  DATA ls_exclude TYPE ui_func.

  DATA: gs_variant TYPE disvariant. "for parameter IS_VARIANT
  g_flag = 'X'.
  CLEAR toolbar_excluding.
  PERFORM excluding_build TABLES toolbar_excluding.
*  perform get_add_data.

  gs_variant-report = sy-repid.
  ls_layout-sel_mode = 'A'.
*  ls_layout-cwidth_opt = 'X'.
  CALL METHOD  go_alv->set_table_for_first_display
         EXPORTING
*           i_structure_name        = 'ZSD_D3_001'
           is_layout               = ls_layout
           is_variant              = gs_variant
           i_save                  = 'A'
           i_default               = 'X'
           it_toolbar_excluding    = toolbar_excluding
         CHANGING  it_outtab        = it_data[]
                   it_fieldcatalog  =  it_fieldcat[].

* SET HANDLER OF EVENT
  IF go_alv_event_receiver IS INITIAL.
    CREATE OBJECT go_alv_event_receiver.
  ENDIF.
  SET HANDLER go_alv_event_receiver->handle_user_command
      FOR go_alv.
  SET HANDLER go_alv_event_receiver->handle_toolbar
      FOR go_alv.
  SET HANDLER go_alv_event_receiver->handle_double_click
      FOR go_alv.
  SET HANDLER go_alv_event_receiver->handle_data_changed
      FOR go_alv.
  SET HANDLER go_alv_event_receiver->handle_onf4
      FOR go_alv.
  CALL METHOD go_alv->set_toolbar_interactive.

  CALL METHOD go_alv->register_edit_event
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_enter.
  CALL METHOD cl_gui_control=>set_focus    "设置焦点在grid 上
    EXPORTING
      control = go_alv .


ENDFORM.                    " SUB_CHANGE_DISP
*&---------------------------------------------------------------------*
*&      Form  SUB_NEW
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_new.
  REFRESH it_new.
  CLEAR it_new.
  DO 25 TIMES.
    APPEND it_new.
  ENDDO.
  CALL SCREEN 200.
ENDFORM.                    " SUB_NEW
*&---------------------------------------------------------------------*
*&      Form  SUB_NEW_DISP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_new_disp.
  DATA ls_exclude TYPE ui_func.

  DATA: gs_variant TYPE disvariant. "for parameter IS_VARIANT
  g_flag = ''.
  REFRESH toolbar_excluding.
  PERFORM excluding_build TABLES toolbar_excluding.


  gs_variant-report = sy-repid.
  ls_layout-sel_mode = 'A'.
*  ls_layout-cwidth_opt = 'X'.
  CALL METHOD  go_new->set_table_for_first_display
         EXPORTING
*           i_structure_name        = 'ZSD_D3_001'
           is_layout               = ls_layout
           is_variant              = gs_variant
           i_save                  = 'A'
           i_default               = 'X'
           it_toolbar_excluding    = toolbar_excluding
         CHANGING  it_outtab        = it_new[]
                   it_fieldcatalog  =  it_fieldcat_new[].

* SET HANDLER OF EVENT
  IF go_alv_event_new IS INITIAL.
    CREATE OBJECT go_alv_event_new.
  ENDIF.
* set f4 help
  CALL METHOD go_new->register_f4_for_fields
    EXPORTING
      it_f4 = gt_f4.

* SET HANDLER OF EVENT
  IF  go_alv_event_new IS INITIAL.
    CREATE OBJECT go_alv_event_new.
  ENDIF.
  SET HANDLER go_alv_event_new->handle_user_command
      FOR go_new.
  SET HANDLER go_alv_event_new->handle_toolbar
      FOR go_new.
  SET HANDLER go_alv_event_new->handle_double_click
      FOR go_new.
  SET HANDLER go_alv_event_new->handle_data_changed
      FOR go_new.
  SET HANDLER go_alv_event_new->handle_onf4
      FOR go_new.
  CALL METHOD go_new->set_toolbar_interactive.


  CALL METHOD go_new->register_edit_event
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_enter.

*  call method go_alv->set_ready_for_input "处于非编辑状态
*  exporting
*    i_ready_for_input = 1.
  CALL METHOD cl_gui_control=>set_focus    "设置焦点在grid 上
    EXPORTING
      control = go_new.


ENDFORM.                    " SUB_NEW_DISP
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0200 INPUT.
  CASE sy-ucomm.
    WHEN 'BACK'.
      CALL SCREEN 100.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*&      Form  SUB_COPY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_copy TABLES lt_rows STRUCTURE lvc_s_row.
  DATA:wa LIKE it_data.
  CHECK NOT lt_rows[] IS INITIAL.
  REFRESH it_new.

  LOOP AT lt_rows.
    CHECK lt_rows-rowtype IS INITIAL.
    READ TABLE it_data INTO wa INDEX lt_rows-index.
    CLEAR wa-posnr.
    APPEND wa TO it_new.
    CLEAR wa.
  ENDLOOP.
  CALL SCREEN 200.

ENDFORM.                    " SUB_COPY
*&---------------------------------------------------------------------*
*&      Form  SUB_DISP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_disp.
  REFRESH it_fieldcat.
  DATA: tab(10TYPE c,
        ld_count TYPE i.
  DATA : col_pos TYPE i VALUE 0.
  DATA:ls_fcat      LIKE LINE OF it_fieldcat.
  CLEAR ld_count.
  DEFINE def_add.
    clear ls_fcat.
    add 1 to ld_count.
    ls_fcat-fieldname = &1.
    ls_fcat-ref_field = &2.
    ls_fcat-ref_table = &3.
    ls_fcat-f4availabl = &4.
    ls_fcat-just      = &5.
    ls_fcat-scrtext_m = &6.
    ls_fcat-outputlen = &7.
*    ls_fcat-do_sum    = &8.
*    ls_fcat-datatype  = &9.
    ls_fcat-edit      = &8.
    ls_fcat-col_pos = ld_count.
    append ls_fcat to it_fieldcat.
  END-OF-DEFINITION.
  def_add 'MATNR' 'MATNR' 'MARA' 'X' '' '物料号' '8' ''.
  def_add 'MAKTX' 'MAKTX' 'MAKT' space '' '物料描述' '25' ''.
  def_add 'VKORG' 'VKORG_AUFT' 'VBRP' 'X' '' '销售组织' '4' ''.
  def_add 'VTWEG' 'VTWEG' 'VBRK' 'X' '' '分销渠道' '8' ''.
  def_add 'KUNNR' 'KUNNR' 'ZSD_D3_001' 'X' '' '客户代码' '10' ''.
  def_add 'NAME1' 'NAME1' 'KNA1' space '' '客户名称' '25' ''.
  def_add 'KDMAT' 'KDMAT' 'VBAP' 'X' '' '客户料号' '25' ''.
  def_add 'WAERS' 'WAERS' 'MSEG' space '' '货币' '5' ''.
  def_add 'MENGE' 'MENGE' 'ZSD_D3_001' space '' '消耗数量' '13' ''.
  def_add 'KBETR' 'KBETR' 'ZSD_D3_001' space '' '单价' '19' ''.
  def_add 'DMBTR' 'DMBTR' 'ZSD_D3_001' space '' '总金额' '19' ''.
  def_add 'SBI' 'SBI' 'ZSD_D3_001' space '' 'SBI' '12' ''.
  def_add 'BUDAT' 'BUDAT' 'ZSD_D3_001' 'X' '' '消耗日期' '10' ''.
  def_add 'BLDAT' 'BLDAT' 'ZSD_D3_001' 'X' '' '输入日期' '10' ''.
  def_add 'REMARK' '' '' space '' '备注' '30' ''.
  def_add 'DFLAG' '' '' space '' '删除标记' '4' ''.
  PERFORM sub_change_disp.

ENDFORM.                    " SUB_DISP
*&---------------------------------------------------------------------*
*&      Module  PAI_0200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE pai_0200 INPUT.

  IF NOT go_new IS INITIAL.
*    call method go_new->check_changed_data.
  ENDIF.
  CASE sy-ucomm.
    WHEN 'SSVA'.
*       PERFORM CHECK_DATA TABLES IT_NEW.
*       PERFORM COMMAND_SAVE_NEW.
  ENDCASE.

ENDMODULE.                 " PAI_0200  INPUT
*---------------------------------------------------------------------*
*       MODULE STATUS_0100 OUTPUT                                     *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS '100'.
  IF flag_change = 'X'.
    SET TITLEBAR 'DISP' WITH text-t00.
  ELSE.
    SET TITLEBAR 'CHAN' WITH text-t01.
  ENDIF.
  IF go_alv IS INITIAL.
    PERFORM creat_alv_control
       USING 'ALV_GRID'.
*      PERFORM BUILD_ALV_FIELD.
    PERFORM set_display.

  ELSE.
    PERFORM set_display.
  ENDIF.


ENDMODULE.                 " STATUS_0100  OUTPUT
*---------------------------------------------------------------------*
*       FORM CREAT_ALV_CONTROL_200                                    *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  CTNAME                                                        *
*---------------------------------------------------------------------*
FORM creat_alv_control_200 USING ctname TYPE char20.

  DATA: lo_container TYPE REF TO cl_gui_custom_container.
  DATA: lo_succs TYPE REF TO cl_gui_container,
        lo_result TYPE REF TO cl_gui_container.

  IF go_new IS INITIAL.
    CREATE OBJECT lo_container
      EXPORTING container_name = ctname.


    CLASS cl_gui_alv_grid DEFINITION LOAD.

    CREATE OBJECT go_new
      EXPORTING
        i_parent      = lo_container
        i_appl_events = space.

  ENDIF.

ENDFORM.                    " CREAT_ALV_CONTROL_200
*&---------------------------------------------------------------------*
*&      Form  BUILD_ALV_new_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_alv_new_field.
  DATA: tab(10TYPE c,
        ld_count TYPE i.
  DATA : col_pos TYPE i VALUE 0.
  DATA:ls_fcat      LIKE LINE OF it_fieldcat.
  CLEAR ld_count.
  REFRESH:it_fcat.
  DEFINE def_add.
    clear ls_fcat.
    add 1 to ld_count.
    ls_fcat-fieldname = &1.
    ls_fcat-ref_field = &2.
    ls_fcat-ref_table = &3.
    ls_fcat-f4availabl = &4.
    ls_fcat-just      = &5.
    ls_fcat-scrtext_m = &6.
    ls_fcat-scrtext_l = &6.
    ls_fcat-scrtext_s = &6.
    ls_fcat-outputlen = &7.
*    ls_fcat-do_sum    = &8.
*    ls_fcat-datatype  = &9.
    ls_fcat-edit      = &8.
    ls_fcat-col_pos = ld_count.
    append ls_fcat to it_fieldcat_new.
  END-OF-DEFINITION.
  REFRESH it_fieldcat_new.
  def_add 'MATNR' 'MATNR' 'MARA' 'X' '' '物料号' '8' 'X'.
  def_add 'MAKTX' 'MAKTX' 'MAKT' space '' '物料描述' '25' ''.
  def_add 'VKORG' 'VKORG_AUFT' 'VBRP' 'X' '' '销售组织' '8' 'X'.
  def_add 'VTWEG' 'VTWEG' 'VBRK' 'X' '' '分销渠道' '8' 'X'.
  def_add 'KUNNR' 'KUNNR' 'ZSD_D3_001' 'X' '' '客户代码' '10' 'X'.
  def_add 'NAME1' 'NAME1' 'KNA1' space '' '客户名称' '25' ''.
  def_add 'KDMAT' 'KDMAT' 'VBAP' 'X' '' '客户料号' '25' ''.
  def_add 'WAERS' 'WAERS' 'MSEG' 'X' '' '货币' '5' 'X'.
  def_add 'MENGE' 'MENGE' 'ZSD_D3_001' space '' '消耗数量' '13' 'X'.
  def_add 'KBETR' 'KBETR' 'ZSD_D3_001' space '' '单价' '19' 'X'.
  def_add 'DMBTR' 'DMBTR' 'ZSD_D3_001' space '' '总金额' '19' 'X'.
  def_add 'SBI' 'SBI' 'ZSD_D3_001' space '' 'SBI' '12' 'X'.
  def_add 'BUDAT' 'BUDAT' 'ZSD_D3_001' 'X' '' '消耗日期' '10' 'X'.
  def_add 'BLDAT' 'BLDAT' 'ZSD_D3_001' 'X' '' '输入日期' '10' 'X'.
  def_add 'ERNAM' '' '' 'X' '' '记录创建者' '12' ''.
  def_add 'AENAM' '' '' 'X' '' '最后一次修改者' '12' ''.
  def_add 'AEDAT' '' '' 'X' '' '最近修改日期' '8' ''.
  def_add 'REMARK' '' '' space '' '备注' '30' 'X'.

ENDFORM.                    " BUILD_ALV_new_FIELD
*&---------------------------------------------------------------------*
*&      Module  EXIT_200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit_200 INPUT.
  DATA:answer.
  IF cflag = 'X'.
    CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
       EXPORTING
            defaultoption  = 'N'
            textline1      = text-m08
*            TEXTLINE2      = GV_TEXT2
            titel          = text-m00
            start_column   = 25
            start_row      = 6
            cancel_display = 'X'
       IMPORTING
            answer         = answer.
    CHECK answer = 'J'.
  ENDIF.
  DELETE it_new WHERE posnr IS initial.
  APPEND LINES OF it_new TO it_data.
  DELETE it_data WHERE kunnr IS initial.
  LEAVE TO SCREEN 0.
*  call screen 100.
ENDMODULE.                 " EXIT_200  INPUT
*&---------------------------------------------------------------------*
*&      Form  count_Table_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_CNT  text
*----------------------------------------------------------------------*
FORM count_table_data CHANGING p_cnt.
  SELECT COUNT( * ) INTO p_cnt
    FROM zsd_d3_001.
ENDFORM.                    " count_Table_data
*&---------------------------------------------------------------------*
*&      Form  get_add_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_add_data.
  APPEND LINES OF it_new TO it_data.
ENDFORM.                    " get_add_data
*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.
  LEAVE TO SCREEN 0.
ENDMODULE.                 " EXIT  INPUT
*&---------------------------------------------------------------------*
*&      Form  SUB_PROCESSCHG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_ER_DATA_CHANGED  text
*----------------------------------------------------------------------*
FORM sub_processchg
     USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol.

  DATA:lin TYPE i,
       p_modi TYPE lvc_s_modi,
       lt_modi TYPE lvc_t_modi,
       p_calday LIKE sy-datum,
*        MOD_ROWS TYPE REF_TO_DATA,
       inserted_rows TYPE lvc_t_moce,
       deleted_rows TYPE lvc_t_moce,
       deleted_rows1 TYPE lvc_s_moce,
       mt_protocol TYPE lvc_t_msg1,
       lv_answer(1).
  DATA:wa LIKE it_data.
  DATA:str1(50),
       str2(50),
       str3(50).

  lt_modi = er_data_changed->mt_mod_cells.
  inserted_rows = er_data_changed->mt_inserted_rows. "COPY ROWS
  deleted_rows = er_data_changed->mt_deleted_rows. "DELETE ROWS
  mt_protocol = er_data_changed->mt_protocol. "PROTOCOL MSG
  DESCRIBE TABLE mt_protocol LINES lin. "PROTOCOL MESSAGE
  IF NOT lt_modi[] IS INITIAL OR
     NOT inserted_rows[] IS INITIAL OR
     NOT deleted_rows[] IS INITIAL OR
     NOT mt_protocol[] IS INITIAL.
    cflag = 'X'.
  ENDIF.

  LOOP AT lt_modi INTO p_modi.
    CHECK p_modi-value <> ''.

    IF p_creat = 'X'.

      CALL METHOD er_data_changed->get_cell_value
                EXPORTING
                  i_row_id    = p_modi-row_id
                  i_fieldname = 'ERNAM'
                IMPORTING
                  e_value     = wa-ernam.
      CALL METHOD er_data_changed->modify_cell
        EXPORTING
          i_row_id    = p_modi-row_id
          i_fieldname = 'ERNAM'
          i_value     = sy-uname.
    ELSE.

      CALL METHOD er_data_changed->modify_cell
           EXPORTING
             i_row_id    = p_modi-row_id
             i_fieldname = 'AENAM'
             i_value     = sy-uname.

      CALL METHOD er_data_changed->get_cell_value
                EXPORTING
                  i_row_id    = p_modi-row_id
                  i_fieldname = 'AENAM'
                IMPORTING
                  e_value     = wa-aenam.


      CALL METHOD er_data_changed->modify_cell
           EXPORTING
             i_row_id    = p_modi-row_id
             i_fieldname = 'AEDAT'
             i_value     = sy-datum.

      CALL METHOD er_data_changed->get_cell_value
                EXPORTING
                  i_row_id    = p_modi-row_id
                  i_fieldname = 'AEDAT'
                IMPORTING
                  e_value     = wa-aedat.
    ENDIF.

    IF p_modi-fieldname = 'MATNR'.
      CALL METHOD er_data_changed->get_cell_value
                  EXPORTING
                    i_row_id    = p_modi-row_id
                    i_fieldname = 'MATNR'
                  IMPORTING
                    e_value     = wa-matnr.
      PERFORM sub_conversion_exit_alpha_inpu CHANGING wa-matnr.
      SELECT SINGLE maktx INTO wa-maktx
        FROM makt
        WHERE matnr = wa-matnr.
      IF sy-subrc = 0.
        CALL METHOD er_data_changed->modify_cell
          EXPORTING
            i_row_id    = p_modi-row_id
            i_fieldname = 'MAKTX'
            i_value     = wa-maktx.
        CALL METHOD er_data_changed->get_cell_value
                  EXPORTING
                    i_row_id    = p_modi-row_id
                    i_fieldname = 'BLDAT'
                  IMPORTING
                    e_value     = wa-bldat.
        IF wa-bldat IS INITIAL.
          CALL METHOD er_data_changed->modify_cell
          EXPORTING
            i_row_id    = p_modi-row_id
            i_fieldname = 'BLDAT'
            i_value     = sy-datum.
        ENDIF.
      ELSE.
        CALL METHOD er_data_changed->add_protocol_entry
           EXPORTING
             i_msgid     = '00'
             i_msgno     = '001'
             i_msgty     = 'E'
             i_msgv1     = p_modi-value
             i_msgv2     = '不存在'
*              I_MSGV3     =
             i_fieldname = p_modi-fieldname
             i_row_id    = p_modi-row_id.
      ENDIF.
    ELSEIF p_modi-fieldname = 'VKORG'.
      CALL METHOD er_data_changed->get_cell_value
                  EXPORTING
                    i_row_id    = p_modi-row_id
                    i_fieldname = 'VKORG'
                  IMPORTING
                    e_value     = wa-vkorg.
      SELECT SINGLE vkorg INTO wa-vkorg
        FROM tvko
        WHERE vkorg = wa-vkorg.
      IF sy-subrc <> 0.
        CALL METHOD er_data_changed->add_protocol_entry
          EXPORTING
            i_msgid     = '00'
            i_msgno     = '001'
            i_msgty     = 'E'
            i_msgv1     = p_modi-value
            i_msgv2     = '不存在'
*              I_MSGV3     =
            i_fieldname = p_modi-fieldname
            i_row_id    = p_modi-row_id.
*OB PHOEBUS
      ELSE.
        AUTHORITY-CHECK OBJECT 'V_KNA1_VKO'
       ID 'VKORG' FIELD wa-vkorg.
        IF sy-subrc <> 0.
          CALL METHOD er_data_changed->add_protocol_entry
            EXPORTING
              i_msgid     = '00'
              i_msgno     = '001'
              i_msgty     = 'E'
              i_msgv1     = '您无权维护销售组织'
              i_msgv2     = p_modi-value
              i_fieldname = p_modi-fieldname
              i_row_id    = p_modi-row_id.
        ENDIF.
*OE PHOEBUS
      ENDIF.
    ELSEIF p_modi-fieldname = 'VTWEG'.
      CALL METHOD er_data_changed->get_cell_value
                  EXPORTING
                    i_row_id    = p_modi-row_id
                    i_fieldname = 'VTWEG'
                  IMPORTING
                    e_value     = wa-vtweg.
      SELECT SINGLE vtweg INTO wa-vtweg
        FROM tvtw
        WHERE vtweg = wa-vtweg.
      IF sy-subrc <> 0.
        CALL METHOD er_data_changed->add_protocol_entry
          EXPORTING
            i_msgid     = '00'
            i_msgno     = '001'
            i_msgty     = 'E'
            i_msgv1     = p_modi-value
            i_msgv2     = '不存在'
*              I_MSGV3     =
            i_fieldname = p_modi-fieldname
            i_row_id    = p_modi-row_id.
      ENDIF.
    ELSEIF p_modi-fieldname = 'KUNNR'.
      CALL METHOD er_data_changed->get_cell_value
                  EXPORTING
                    i_row_id    = p_modi-row_id
                    i_fieldname = 'KUNNR'
                  IMPORTING
                    e_value     = wa-kunnr.
      CALL METHOD er_data_changed->get_cell_value
                  EXPORTING
                    i_row_id    = p_modi-row_id
                    i_fieldname = 'MATNR'
                  IMPORTING
                    e_value     = wa-matnr.
      CALL METHOD er_data_changed->get_cell_value
                  EXPORTING
                    i_row_id    = p_modi-row_id
                    i_fieldname = 'VKORG'
                  IMPORTING
                    e_value     = wa-vkorg.
      CALL METHOD er_data_changed->get_cell_value
                  EXPORTING
                    i_row_id    = p_modi-row_id
                    i_fieldname = 'VTWEG'
                  IMPORTING
                    e_value     = wa-vtweg.

      PERFORM sub_conversion_exit_alpha_inpu CHANGING wa-kunnr.
*      perform sub_conversion_exit_alpha_inpu changing l_matnr.
      SELECT SINGLE  name1 INTO wa-name1
        FROM kna1
        WHERE kunnr = wa-kunnr.
      IF sy-subrc <> 0.
        CALL METHOD er_data_changed->add_protocol_entry
          EXPORTING
            i_msgid     = '00'
            i_msgno     = '001'
            i_msgty     = 'E'
            i_msgv1     = p_modi-value
            i_msgv2     = '不存在'
*              I_MSGV3     =
            i_fieldname = p_modi-fieldname
            i_row_id    = p_modi-row_id.

      ENDIF.
      SELECT SINGLE kdmat INTO wa-kdmat
        FROM knmt
        WHERE kunnr = wa-kunnr
          AND vkorg = wa-vkorg
          AND vtweg = wa-vtweg
          AND matnr = wa-matnr.
      IF sy-subrc = 0.
        CALL METHOD er_data_changed->modify_cell
          EXPORTING
            i_row_id    = p_modi-row_id
            i_fieldname = 'NAME1'
            i_value     = wa-name1.
        CALL METHOD er_data_changed->modify_cell
         EXPORTING
           i_row_id    = p_modi-row_id
           i_fieldname = 'KDMAT'
           i_value     = wa-kdmat.
      ELSE.
        CALL METHOD er_data_changed->add_protocol_entry
           EXPORTING
             i_msgid     = '00'
             i_msgno     = '001'
             i_msgty     = 'E'
             i_msgv1     = '不能找到对应客户料号,'
             i_msgv2     = '请检查前面的输入数据!'
*              I_MSGV3     =
             i_fieldname = p_modi-fieldname
             i_row_id    = p_modi-row_id.
      ENDIF.
    ELSEIF p_modi-fieldname = 'KBETR'.
      CALL METHOD er_data_changed->get_cell_value
                  EXPORTING
                    i_row_id    = p_modi-row_id
                    i_fieldname = 'KBETR'
                  IMPORTING
                    e_value     = wa-kbetr.
      CALL METHOD er_data_changed->get_cell_value
                  EXPORTING
                    i_row_id    = p_modi-row_id
                    i_fieldname = 'MENGE'
                  IMPORTING
                    e_value     = wa-menge.

      wa-dmbtr = wa-kbetr  * wa-menge.
      CALL METHOD er_data_changed->modify_cell
         EXPORTING
           i_row_id    = p_modi-row_id
           i_fieldname = 'DMBTR'
           i_value     = wa-dmbtr.
    ENDIF.
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  sub_conversion_exit_alpha_inpu
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_L_MATNR  text
*      <--P_L_MATNR  text
*----------------------------------------------------------------------*
FORM sub_conversion_exit_alpha_inpu  CHANGING p_matnr.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
       EXPORTING
            input  = p_matnr
       IMPORTING
            output = p_matnr.

ENDFORM.                    " sub_conversion_exit_alpha_inpu
*&---------------------------------------------------------------------*
*&      Form  sub_check_input
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM sub_check_input.
  IF p_query = 'X'.
    IF s_bldat[] IS INITIAL.
      MESSAGE e888(sabapdocu) WITH text-m06.
    ENDIF.
    IF s_kunnr IS INITIAL.
      MESSAGE e888(sabapdocu) WITH text-m07.
    ENDIF.
    IF p_vkorg IS INITIAL.
      MESSAGE e888(sabapdocu) WITH text-m09.
    ENDIF.
  ENDIF.
ENDFORM.                    " sub_check_input
*&---------------------------------------------------------------------*
*&      Form  check_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_IT_DATA  text
*----------------------------------------------------------------------*
FORM check_data TABLES itab LIKE it_data[]
                CHANGING p_flag.
  DATA:lin TYPE i,
         p_modi TYPE lvc_s_modi,
         lt_modi TYPE lvc_t_modi,
         p_calday LIKE sy-datum,
*        MOD_ROWS TYPE REF_TO_DATA,
         inserted_rows TYPE lvc_t_moce,
         deleted_rows TYPE lvc_t_moce,
         deleted_rows1 TYPE lvc_s_moce,
         mt_protocol TYPE lvc_t_msg1,
         lv_answer(1).
  DATA:wa LIKE it_data.
  DATA:str1(50),
       str2(50),
       str3(50).
  DELETE itab WHERE kunnr IS initial.
  LOOP AT itab INTO wa.
    IF wa-kunnr IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '客户必输!'.
      EXIT.
    ENDIF.
    IF wa-matnr IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '物料必输!'.
      EXIT.
    ENDIF.
    IF wa-kdmat IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '客户物料必输!'.
      EXIT.
    ENDIF.
    IF wa-vkorg IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '销售组织必输!'.
      EXIT.
*OB PHOEBUS
    ELSE.
      AUTHORITY-CHECK OBJECT 'V_KNA1_VKO'
                 ID 'VKORG' FIELD wa-vkorg.
      IF sy-subrc <> 0.
        MESSAGE i888(sabapdocu) WITH '对不起,您无权维护该销售组织!'.
        EXIT.
      ENDIF.
    ENDIF.
*OE PHOEBUS
    IF wa-vtweg IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '分销渠道必输!'.
      EXIT.
    ENDIF.
    IF wa-menge IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '数量必输!'.
      EXIT.
    ENDIF.
    IF wa-dmbtr IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '总金额必输!'.
      EXIT.
    ENDIF.
    IF wa-kbetr IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '单价必输!'.
      EXIT.
    ENDIF.
    IF wa-waers IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '币种必输!'.
      EXIT.
    ENDIF.
    IF wa-bldat IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '输入日期必输!'.
      EXIT.
    ENDIF.
    IF wa-budat IS INITIAL.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '消耗日期必输!'.
      EXIT.
    ENDIF.

    PERFORM sub_conversion_exit_alpha_inpu CHANGING wa-matnr.
    SELECT SINGLE maktx INTO wa-maktx
      FROM makt
      WHERE matnr = wa-matnr.
    IF sy-subrc <> 0.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '物料' wa-matnr '不存在'.
      EXIT.
    ENDIF.
    PERFORM sub_conversion_exit_alpha_inpu CHANGING wa-kunnr.
    SELECT SINGLE kunnr INTO wa-kunnr
      FROM knmt
      WHERE kunnr = wa-kunnr
        AND vkorg = wa-vkorg
        AND vtweg = wa-vtweg
        AND matnr = wa-matnr
        AND kdmat = wa-kdmat.
    IF sy-subrc <> 0.
      p_flag = 'X'.
      MESSAGE i888(sabapdocu) WITH '客户料号' wa-kdmat
             '不存在,请检查相关数据'.
      EXIT.
    ENDIF.


  ENDLOOP.
ENDFORM.                    " check_data
*&---------------------------------------------------------------------*
*&      Form  CHECK_INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM check_input USING ir_data_changed  TYPE REF TO
                                        cl_alv_changed_data_protocol.
  LOOP AT it_data.
    CALL METHOD ir_data_changed->add_protocol_entry
           EXPORTING
             i_msgid     = '00'
             i_msgno     = '001'
             i_msgty     = 'E'
             i_msgv1     = it_data-matnr
             i_msgv2     = '不存在'
*             I_MSGV3     =
             i_fieldname = 'MATNR'
             i_row_id    = '1'.

  ENDLOOP.
ENDFORM.                    " CHECK_INPUT
*&---------------------------------------------------------------------*
*&      Form  lock_table
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_FLAG  text
*----------------------------------------------------------------------*
FORM lock_table CHANGING p_flag.
  DATA:l_flag.
  DATA:l_msg(50).
  LOOP AT it_data.
    CHECK NOT it_data-posnr IS INITIAL.
    CALL FUNCTION 'ENQUEUE_EZSD_D3_001'
     EXPORTING
       mode_zsd_d3_001       = 'E'
       mandt                 = sy-mandt
       posnr                 = it_data-posnr
*       X_POSNR               = ' '
*       _SCOPE                = '2'
*       _WAIT                 = ' '
*       _COLLECT              = ' '
     EXCEPTIONS
       foreign_lock          = 1
       system_failure        = 2
       OTHERS                = 3
              .
    CASE sy-subrc.
      WHEN 0.
      WHEN 1.
        l_msg = sy-msgv1.
        CONCATENATE '数据被' l_msg '锁住' INTO  l_msg.
        l_flag = 'X'.
      WHEN OTHERS.
        l_msg = 'Internal error from enqueue server'.
        l_flag = 'X'.
    ENDCASE.
    IF l_flag = 'X'.
      p_flag = l_flag.
      MESSAGE i888(sabapdocu) WITH l_msg.
      EXIT.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " lock_table
*&---------------------------------------------------------------------*
*&      Form  unlock_table
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM unlock_table.
  LOOP AT it_data.
    CALL FUNCTION 'DEQUEUE_EZSD_D3_001'
     EXPORTING
       mode_zsd_d3_001       = 'E'
       mandt                 = sy-mandt
       posnr                 = it_data-posnr
*       X_POSNR               = ' '
*       _SCOPE                = '3'
*       _SYNCHRON             = ' '
*       _COLLECT              = ' '
              .
  ENDLOOP.
ENDFORM.                    " unlock_table

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23495244/viewspace-694286/,如需转载,请注明出处,否则将追究法律责任。

上一篇: bdc
请登录后发表评论 登录
全部评论

注册时间:2010-03-11

  • 博文量
    196
  • 访问量
    172118