SAP:ZPP032D:Change Production Order WIP by Inventory

22 篇文章 0 订阅
16 篇文章 0 订阅

在ALV修改column

 

*&---------------------------------------------------------------------*
*& Progarm      :  ZPPR032D                        Author : Jimmy Wong
*& Created      :  11 Apr 2013                    App    : PP
*& Title        :  Change Production Order WIP by Inventory
*& Description  :  Change Production Order WIP by Inventory
*&---------------------------------------------------------------------*
*&  Version       Author      Date        description
*&                Jimmy       11 Apr 2013  the first version
*&  the last update time  2013.04.11 16:00
*&---------------------------------------------------------------------*

report  zppr032d.

tables: aufk,mara.

data: ok_code like sy-ucomm,
      code_ok like sy-ucomm.

data: lv_ctl_qty like zpp032b-menge1.
data: lv_ans type c.
data: lv_flag type c,
      lv_control type c.
data: r_container  type ref to cl_gui_custom_container,
      r_alv type ref to cl_gui_alv_grid,
      gs_stable type lvc_s_stbl.

data: gs_layout type lvc_s_layo,
      gt_fieldcat type lvc_t_fcat,
      xfc type lvc_s_fcat .

define fill_fieldcat.
  clear xfc.
  xfc-fieldname = &1.
  xfc-reptext = &2.
  xfc-coltext = &2.
  xfc-scrtext_l = &2.
  xfc-scrtext_m = &2.
  xfc-scrtext_s = &2.
  xfc-ref_table = &3.
  xfc-ref_field = &4.
  xfc-checkbox = &5.
  xfc-edit = &6.
  xfc-outputlen = &7.
  xfc-datatype = &8.
  xfc-decimals = &9.
  append xfc to gt_fieldcat.
end-of-definition.

data: itab like table of zpp032b with header line.
data: wa_itab like table of zpp032b with header line.

selection-screen begin of block 1 with frame title text-001.
parameters : s_aufnr like aufk-aufnr obligatory.
parameters : s_menge like zpp032b-menge1  .
selection-screen end of block 1.

start-of-selection.
  perform get_data.
  if itab[] is initial.
    message i003(zmm).
    exit.
  endif.

end-of-selection.
  call screen 0200.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form get_data .
  select *
    into corresponding fields of table itab
    from zpp032b
    where aufnr = s_aufnr.
  wa_itab[] = itab[].
endform.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Module  STATUS_0200  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module status_0200 output.
  set pf-status '0200'.
  set titlebar  '0200'.
  lv_ctl_qty = s_menge.
  if r_container is initial.
    create object r_container
      exporting
        container_name = 'ALV_DATA'.

    create object r_alv
      exporting
        i_parent = r_container.
    perform set_layout_oo.
  endif.
  perform set_fieldcat_oo.
  call method r_alv->set_table_for_first_display
    exporting
      is_layout            = gs_layout
*     it_toolbar_excluding = gt_toolbar
    changing
      it_fieldcatalog      = gt_fieldcat
      it_outtab            = itab[].
*
*  call method r_alv->refresh_table_display
*    exporting
*      is_stable = gs_stable.

endmodule.                 " STATUS_0200  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  SET_LAYOUT_OO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form set_layout_oo .
  gs_layout-zebra = 'X'.
*  gs_layout2-cwidth_opt = 'X'.
  gs_layout-no_toolbar = 'X'.
*  gs_layout-NO_ROWMOVE = 'X'.
*   gs_layout-NO_HGRIDLN = 'X'.
  gs_layout-no_rowmark = 'X'. " 隐藏行选择按钮

 

endform.                    " SET_LAYOUT_OO
*&---------------------------------------------------------------------*
*&      Form  SET_FIELDCAT_OO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form set_fieldcat_oo .
  refresh gt_fieldcat.
  fill_fieldcat: 'AUFNR' '' 'AFKO' 'AUFNR' '' '' 12 '' ''.
  fill_fieldcat: 'PROJN' '' 'AFPO' 'PROJN' '' '' 10 '' ''.
  fill_fieldcat: 'MATNR' '' 'MARA' 'MATNR' '' '' 18 '' ''.
  fill_fieldcat: 'MATNR_D' 'Component' 'MARA' 'MATNR' '' '' 18 '' ''.
  fill_fieldcat: 'WERKS' 'Plant' '' '' '' '' 6 '' ''.
  fill_fieldcat: 'MENGE1' 'Compenent Qty' '' '' '' 'X' 17 'QUAN' 3.
  fill_fieldcat: 'MENGE2' 'Assembly Qty' '' '' '' 'X' 17 'QUAN' 3.
  fill_fieldcat: 'ZC' 'ZC' '' '' 'X' 'X' 6 '' ''.
endform.                    " SET_FIELDCAT_OO
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module user_command_0200 input.
  code_ok = ok_code .
  clear ok_code .

  " Activate event data_changed
  call method r_alv->check_changed_data.

  case code_ok.
    when 'BACK' or 'CANCEL' or 'EXIT'.
      loop at itab.
        read table wa_itab with key rspos = itab-rspos menge1 = itab-menge1 menge2 = itab-menge2.
        if sy-subrc ne 0.
          lv_flag = 'X'.
          exit.
        endif.
      endloop.
      if lv_flag = 'X'.
        clear: lv_ans.
        perform popup_info using 'The data has changed, and whether to save?'
                 changing  lv_ans.
      endif.
      if lv_ans = '1'.
        perform save_data_check.
      endif.
      clear:lv_flag.
      refresh: itab,wa_itab.
      leave to screen 0 .
    when 'SAVE'.
      perform save_data_check.
  endcase.
endmodule.                 " USER_COMMAND_0200  INPUT
*&---------------------------------------------------------------------*
*&      Form  POPUP_Info
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_TEXT     text
*      -->P_ANS      text
*----------------------------------------------------------------------*
form popup_info using p_text
                changing p_ans.

  call function 'POPUP_TO_CONFIRM'
    exporting
      text_question = p_text
    importing
      answer        = p_ans.
  if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.

endform.                    "POPUP_Info
*&---------------------------------------------------------------------*
*&      Form  SAVE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form check_control_qty.
  data: lv_total like zpp032b-menge1.
  clear:lv_control.
  loop at itab.
    lv_total = lv_total + itab-menge1 + itab-menge2.
  endloop.
  if lv_total  ne lv_ctl_qty.
    lv_control = 'X'.
  endif.
endform.                    "check_control_qty
*&---------------------------------------------------------------------*
*&      Form  SAVE_DATA_CHECK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form save_data_check .
  perform check_control_qty.
  if lv_control = 'X'.
    clear: lv_ans.
    perform popup_info using 'The Total Qty Is not equal to Control Qty, and whether to save?'
           changing  lv_ans.
    if lv_ans = '1'.
      perform save_data.
    endif.
  else.
    perform save_data.
  endif.
endform.                    " SAVE_DATA_CHECK
*&---------------------------------------------------------------------*
*&      Form  save_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form save_data .
  clear:wa_itab[],wa_itab.
  loop at itab.
    if lv_control = 'X'.
      itab-zctrl = 'X'.
    else.
      clear:  itab-zctrl .
    endif.
    modify itab transporting zctrl.
  endloop.

  wa_itab[] = itab[].
  modify zpp032b from table itab[].
  clear:lv_control.
endform.                    " SAVE_DATA

 

MANDT MANDT
AUFNR AUFNR
RSPOS RSPOS
MATNR MATNR
MATNR_D MATNR
WERKS WERKS_D
PROJN PS_PSP_ELE
VERPR VERPR
PEINH PEINH
MENGE1 BDMNG
MENGE2 MENGE_D
MEINS MEINS
ZCTRL CHAR1
ZC CHAR1
________________ ______________________________
________________ ______________________________

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值