ZPPRT002: CO02 Final Issue

38 篇文章 2 订阅

*&---------------------------------------------------------------------*
*& Report  ZPPRT002
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*


report  zpprt002 no standard page heading.

 

*&---------------------------------------------------------------------*
* database table
*&---------------------------------------------------------------------*
tables : rlgrap,mkpf.
*&---------------------------------------------------------------------*
* internal table & variables
*&---------------------------------------------------------------------*
data:begin of it_record occurs 0,
      order   type i,
      aufnr   like mseg-aufnr,
      matnr   like mseg-matnr,
      werks   like mseg-werks,
      rspos like resb-rspos,
      message type c length 255,
    end of it_record.
data:begin of it_aufnr occurs 0,
      aufnr   like mseg-aufnr,
      message type c length 255,
    end of  it_aufnr.
data: lt_gt_data type alsmex_tabline occurs 0 with header line.
data: msg   type string.
data:lv_tabix like sy-tabix.
data:begin of it_mchb occurs 0,
      matnr   like mara-matnr,  "material
      werks   like marc-werks,  "Plant
      lgort   like mchb-lgort , "location
      charg   like mchb-charg , "Batch
      clabs   like mchb-clabs,  "
      meins   like mara-meins,
     end of it_mchb.
type-pools: slis.
data: fc_hier type slis_t_fieldcat_alv,
      wa_hier type slis_fieldcat_alv .
data: it_bdcmsg like bdcmsgcoll occurs 0 with header line,
      bdcdata like bdcdata occurs 0 with header line ,
      it_return like  bapiret2 occurs 0 with header line.
*----------------------------------------------------------------------*
*  Parameter & Select-Options                                          *
*----------------------------------------------------------------------*
selection-screen begin of block 1 with frame title text-001.
parameters filename type rlgrap-filename obligatory.
parameters: pr_mode  type ctu_mode default 'N' obligatory  .
parameters: p_test as checkbox default 'X'.
parameters: p_cancel as checkbox.
selection-screen end of block 1.


*----------------------------------------------------------------------*
*  Initialize                                                          *
*----------------------------------------------------------------------*
initialization.
*----------------------------------------------------------------------*
*  AT SELECTION-SCREEN
*----------------------------------------------------------------------*
at selection-screen on value-request for filename.
  call function 'WS_FILENAME_GET'
    exporting
      def_path         = 'C:\'
      mask             = ',Excel Files,*.xls,All Files,*.*.'(101)
      mode             = 'O'
      title            = 'Select file'(100)
    importing
      filename         = filename
    exceptions
      selection_cancel = 1
      selection_error  = 2
      others           = 3.
  if sy-subrc ne 0.
    "     .
  endif.


*&---------------------------------------------------------------------*
* start of process
*&---------------------------------------------------------------------*
start-of-selection.
  refresh: it_record ,lt_gt_data.
  clear:it_record,lt_gt_data.
  perform manual_upld.
  if sy-subrc ne 0.
    clear msg.
    concatenate 'Upload Filename ' filename ' is Error' into msg.
    message msg type 'I'.
    exit.
  endif.
  sort lt_gt_data by row col value.
  read table lt_gt_data index 1.
  if sy-subrc ne 0.
    clear : msg.
    concatenate 'Upload File ' filename  ' Is Null!' into msg.
    message msg type 'I'.
    exit.
  endif.
  perform get_it_record.
  if it_record[] is initial.
    message 'No Record Found' type 'I'.
    exit.
  endif.
  if p_test is initial.
    perform process_data.
  endif.
  perform display_data.
*&---------------------------------------------------------------------*
*&      Form  MANUAL_UPLD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form manual_upld .
  call function 'SAPGUI_PROGRESS_INDICATOR'
    exporting
      text = 'Getting Data........'.
  call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    exporting
      filename    = filename
      i_begin_col = '1'
      i_begin_row = '2'
      i_end_col   = '4'
      i_end_row   = '50000'
    tables
      intern      = lt_gt_data
    exceptions
      upload_ole  = 1.
  if sy-subrc ne 0.
    "     message i004(zmm)
  endif.
endform.                    " MANUAL_UPLD
*&---------------------------------------------------------------------*
*&      Form  GET_IT_RECORD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form get_it_record .
  data:lv_order type i,
        lv_date(10) type c. "Pur.Order .
  check not lt_gt_data[] is initial.
  lv_order = 1.
  loop at lt_gt_data.
    shift lt_gt_data-value right deleting trailing space.
    shift lt_gt_data-value left deleting leading space.
    case lt_gt_data-col.
      when '1'.
        it_record-aufnr  = lt_gt_data-value .
        perform add_pre_zero using it_record-aufnr
                             changing it_record-aufnr .
      when '2'.
        it_record-matnr = lt_gt_data-value.
        perform  tranfer_material using it_record-matnr
                          changing it_record-matnr.
      when '3'.
        it_record-werks  = lt_gt_data-value .
      when '4'.
        it_record-rspos  = lt_gt_data-value .
        perform add_pre_zero using it_record-rspos
                     changing it_record-rspos .
    endcase.

    at end of row.
      it_record-order = lv_order.
      append it_record.
      it_aufnr-aufnr = it_record-aufnr.
      collect it_aufnr.
      add 1 to lv_order.
      clear:it_record,it_aufnr.
    endat.
  endloop.
  free:lt_gt_data.
endform.                    " GET_IT_RECORD
*&---------------------------------------------------------------------*
*&      Form  ADD_PRE_ZERO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_IT_RECORD_WEEKS_C  text
*      <--P_IT_RECORD_WEEKS_C  text
*----------------------------------------------------------------------*
form add_pre_zero  using    p_old
                   changing p_new .

  call function 'CONVERSION_EXIT_ALPHA_INPUT'
    exporting
      input  = p_old
    importing
      output = p_new.
endform.                    " ADD_PRE_ZERO
*&---------------------------------------------------------------------*
*&      Form  TRANFER_MATERIAL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_ITAB_MATNR  text
*      <--P_ITAB_MATNR_C  text
*----------------------------------------------------------------------*
form  tranfer_material using    p_old
                       changing p_new  .
  translate p_old to upper case.
  call function 'CONVERSION_EXIT_MATN1_INPUT'
    exporting
      input        = p_old
    importing
      output       = p_new
    exceptions
      length_error = 1
      others       = 2.
  if sy-subrc <> 0.
    p_new = p_old.
  endif.
endform.                    "tranfer_material

*&---------------------------------------------------------------------*
*&      Form  PROCESS_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form process_data .
  data:lv_cur type i value 0,
       lv_mod type i,
       lv_fname(30) type c,
       lv_temp(2) type c,
       lv_len type i,
       lv_tabix like sy-tabix,
       lv_total_line type i,
       lv_line type p decimals 3..
  sort it_aufnr by aufnr .
  sort it_aufnr by aufnr.
  call function 'SAPGUI_PROGRESS_INDICATOR'
    exporting
      text = 'Changing Production Order........'.

  loop at it_aufnr.
    lv_tabix = sy-tabix.

    perform bdc_dynpro      using 'SAPLCOKO1' '0110'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'R62CLORD-FLG_KNOT'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=KPU2'.
    perform bdc_field       using 'CAUFVD-AUFNR'  it_aufnr-aufnr.
    perform bdc_field       using 'R62CLORD-FLG_KNOT' 'X'.
    perform bdc_field       using 'R62CLORD-FLG_OVIEW' ''.

    sort it_record by aufnr rspos.
    loop at it_record where aufnr = it_aufnr-aufnr.

*      perform bdc_dynpro      using 'SAPLCOMK' '0120'.
*      perform bdc_field       using 'BDC_OKCODE' '=P-'.

      perform bdc_dynpro      using 'SAPLCOMK' '0120'.
      perform bdc_field       using 'BDC_CURSOR' 'RESBD-MATNR(01)'.
      perform bdc_field       using 'BDC_OKCODE'  '=AUFS'.
      perform bdc_field       using 'FILTER_BOX' 'NO_FIL'.
      perform bdc_field       using 'SORT_BOX' 'ST_STA'.

      perform bdc_dynpro      using 'SAPLCO05' '0110'.
      perform bdc_field       using 'BDC_CURSOR'  'RCOSU-MATNR'.
      perform bdc_field       using 'BDC_OKCODE'  '=MORE'.
      perform bdc_field       using 'RCOSU-MATNR'  it_record-matnr.

      perform bdc_dynpro      using 'SAPLCOMK' '0120'.
      perform bdc_field       using 'BDC_CURSOR'   'RESBD-KZEAR(01)'.
      perform bdc_field       using 'BDC_OKCODE'  '/00'.
      if p_cancel = 'X'.
        perform bdc_field       using 'RESBD-KZEAR(01)' ''.
      else.
        perform bdc_field       using 'RESBD-KZEAR(01)' 'X'.
      endif.

      perform bdc_dynpro      using 'SAPLCOMD' '0110'.
      perform bdc_field       using 'BDC_OKCODE'  '=BACK'.
    endloop.


    perform bdc_dynpro      using 'SAPLCOMK' '0120'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RESBD-MATNR(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BU'.

    call transaction 'CO02'
                using bdcdata
                mode pr_mode "Background performance
                update 'S' "local updata
                messages into it_bdcmsg. "all message table
    call function 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
      tables
        imt_bdcmsgcoll = it_bdcmsg
        ext_return     = it_return.

    read table it_return with key type = 'E'.
    if sy-subrc eq 0.
      it_aufnr-message  = it_return-message.
    else.
      read table it_return with key type = 'S' id = 'CO' number = '100'.
      if sy-subrc eq 0.
        it_aufnr-message  = 'Update Success.'.
      else.
        read table it_return with key type = 'S' .
        if sy-subrc eq 0.
          it_aufnr-message  = it_return-message.
        endif.
      endif.
    endif.
    modify it_aufnr index lv_tabix.
    clear:it_aufnr-message, it_bdcmsg ,it_return,it_bdcmsg[] ,it_return[],bdcdata,bdcdata[],lv_cur.
  endloop.
  loop at it_record.
    lv_tabix = sy-tabix.
    read table it_aufnr with key aufnr = it_record-aufnr.
    if sy-subrc eq 0.

      it_record-message = it_aufnr-message.
      modify  it_record index lv_tabix.
    endif.
  endloop.
endform.                    " PROCESS_DATA

*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form display_data .
  define alv_field.
    clear:wa_hier.
    wa_hier-fieldname = &1.
    wa_hier-seltext_m = &2.
    wa_hier-seltext_l = &3.
    wa_hier-outputlen = &4.
    wa_hier-just = &5.
    wa_hier-do_sum = &6.
    wa_hier-ref_tabname = &7 .
    wa_hier-ref_fieldname = &8 .
    append wa_hier to fc_hier.
  end-of-definition.
  refresh: fc_hier.

  alv_field  'AUFNR' '' '' '' 'L' '' 'AFKO' 'AUFNR'.
  alv_field  'MATNR' '' 'Material' '18' 'L' '' 'MARA' 'MATNR'.
  alv_field  'WERKS' 'Plant' '' '6' 'L' '' '' ''.
  alv_field  'RSPOS' 'Item' '' '6' 'L' '' '' ''.
  alv_field  'MESSAGE' 'Message' '' '20' 'L' '' '' ''.


  sort it_record by aufnr rspos.

  call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
      it_fieldcat        = fc_hier[]
      i_save             = 'A'
      i_callback_program = sy-repid
    tables
      t_outtab           = it_record[]
    exceptions
      program_error      = 1
      others             = 2.
endform.                    " DISPLAY_DATA
*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
form bdc_dynpro using program dynpro.
  clear bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  append bdcdata.
endform.                    "BDC_DYNPRO

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
form bdc_field using fnam fval.
  clear bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  append bdcdata.
endform.                    "BDC_FIELD

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值