生产订单修改记录

来源:互联网 发布:女神联盟11进阶数据 编辑:程序博客网 时间:2024/04/29 04:00
*&---------------------------------------------------------------------*
*& Report  ZPPR024
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZPPR024.
*&---------------------------------------------------------------------*
*& Report  ZPR_0002 for WBL
*& CO02生产订单修改记录报表
*&---------------------------------------------------------------------*

tables:zafkolog , zresblog , aufk ,afpo.

types: begin of typ_afko.
  include type zafkolog.
types:  flag type c,
  end of typ_afko.

types: begin of typ_resb.
  include type zresblog.
types:  maktx like makt-maktx,"物料描述
  flag type c,
     end of typ_resb.

types: begin of afkoflag,
  gamng type c,  "总计数量修改
  gasmg type c,  "废品数量修改
  gstrp type c,  "开始日期修改
  gltrp type c,  "完成日期修改
       end of afkoflag.


types:begin of resbflag,
  matnr type c,   "物料         "v1-9 add
  werks type c,  "工厂修改
  lgort type c,  "库位修改
  bdmng type c,  "需求数量修改
  sobkz type c,  "特殊库存修改
  KZEAR TYPE C,  "最后确认    "v1-3 add
      end of resbflag.

types:begin of afkopos,
   gamng type i,
   gasmg type i,
   gstrp type i,
   gltrp type i,
  end of afkopos.

types:begin of resbpos,
  matnr type i,   "物料         "v1-9 add
  werks type i,
  lgort type i,
  bdmng type i,
  sobkz type i,
  KZEAR type i,  "v1-3 add
  end of resbpos.

types:begin of afkoval,
  gamng like afko-gamng,
  gasmg like afko-gasmg,
  gstrp like afko-gstrp,
  gltrp like afko-gltrp,
  end of afkoval.

types:begin of resbval,
  matnr like resb-matnr,   "物料         "v1-9 add
  werks like resb-werks,
  lgort like resb-lgort,
  bdmng like resb-bdmng,
  sobkz like resb-sobkz,
  KZEAR LIKE RESB-KZEAR, "v1-3 add
  end of resbval.


data:t_afko type table of typ_afko, "工单抬头给修改过的
     t_afko2 type table of typ_afko, "工单抬头未给修改,只有物料清单给修改过的整理后的
     t_resb type table of typ_resb,
     w_afko1 type typ_afko,
     w_afko2 type typ_afko,
     w_resb1 type typ_resb,
     w_resb2 type typ_resb,
     g_resbflag type resbflag,
     g_afkoflag type afkoflag,
     g_afkopos type afkopos,
     g_resbpos type resbpos,
     g_afkoval type afkoval,
     g_resbval type resbval,
     g_iferr type c                     "v1-7 add
     .
data: g_ifnoauthpass TYPE C.  "v1-8

constants:     pos_taitou type i value 12,
    pos_before type i value 17,
    pos_gamng type i value 27,
    pos_gasmg type i value 47,
    pos_gstrp type i value 67,
    pos_gltrp type i value 82,
    pos_biaoshen type i value 12,
    pos_after type i value 17,
    pos_matnr type i value 27,
    pos_maktx type i value 42,
    pos_dwerk type i value 82,
    pos_lgort type i value 92,
    pos_bdmng type i value 98,
    pos_sobkz type i value 118,
    pos_kzear type i value 128.   "v1-3 add

    g_afkopos-gamng = pos_gamng.
    g_afkopos-gasmg = pos_gasmg.
    g_afkopos-gstrp = pos_gstrp.
    g_afkopos-gltrp = pos_gltrp.

    g_resbpos-matnr = pos_matnr.        "v1-9 add
    g_resbpos-werks = pos_dwerk.
    g_resbpos-lgort = pos_lgort.
    g_resbpos-bdmng = pos_bdmng.
    g_resbpos-sobkz = pos_sobkz.
    g_resbpos-kzear = pos_kzear.   "v1-3 add


ranges r_auart for aufk-auart.
selection-screen begin of block blk1 with frame title
text-t01.
parameters:p_dwerk like afpo-dwerk obligatory. "default '1021'.  "工厂
select-options: s_aufnr for zafkolog-aufnr,
                                           "obligatory,     "v1-7 rmk
    s_mdate for zafkolog-gstrp.
parameters:p_auart like aufk-auart. "工单类型
select-options:s_aennr for zafkolog-aennr no intervals. "修改人  "v1-5 add
* SELECT-OPTIONS:S_AUART FOR AUFK-AUART NO INTERVALS OPTION EQ SIGN I.
selection-screen end of block blk1.



*****BEGIN OF EVENT  TOP-OF-PAGE*****

*****END OF EVENT TOP-OF-PAGE********



******BEGIN OF EVENT INITIALZATION**********
INITIALIZATION.
GET PARAMETER ID 'WRK' FIELD P_DWERK.           "V1-9 ADD
******END OF EVENT INITIALZATION************


******BEGIN OF EVENT AT SELECTION-SCREEN ON BLOCK BLK1***********
at selection-screen.
if p_auart is not initial.
    refresh r_auart.
    r_auart-option = 'EQ'.
    r_auart-sign = 'I'.
    r_auart-low = p_auart.
    append r_auart.
  endif.

******END OF EVENT AT SELECTION-SCREEN ON BLOCK BLK1************


*****BEGIN OF EVENT START-OF-SELECTION************
start-of-selection.
* perform frm_auth_check.            "V1-8 ADD
* if  g_ifnoauthpass is initial.     "V1-8 ADD
perform frm_check
                   using g_iferr.   "v1-7 add

 check g_iferr is initial.      "v1-7 add
  perform frm_select.
 perform data_output.
                           "v1-8 add


*****END OF EVENT START-OF-SELECTION**************


******BEGIN OF EVENT END-OF-SELECTION****************
end-of-selection.


******END OF EVENT END-OF-SELECTION*****************



form frm_check
                  using p_iferr.              "v1-7 add

  clear p_iferr.                              "v1-7 add
  select  single
  a~aufnr  "生产订单
  into corresponding fields of w_afko1
  from zafkolog as a
  inner join afpo as b on a~aufnr = b~aufnr
  inner join aufk as c on a~aufnr = c~aufnr
  where  a~aufnr in s_aufnr   "生产订单号
   and   b~dwerk = p_dwerk    "工厂
   and   a~sdate in s_mdate    "修改时间
   and   c~auart in r_auart  "工单类型
   and   a~aennr in s_aennr. "修改人      "v1-5 add
  if sy-subrc <> 0.
  select single
  a~aufnr
  into corresponding fields of w_resb1
  from zresblog as a
  INNER JOIN AFKO AS D ON A~RSNUM = D~RSNUM            "V1-9 ADD
*  inner join afpo as b on a~aufnr = b~aufnr          "V1-9 RMK
*  inner join aufk as c on a~aufnr = c~aufnr          "V1-9 RMK
  inner join afpo as b on D~aufnr = b~aufnr          "V1-9 ADD
  inner join aufk as c on D~aufnr = c~aufnr          "V1-9 ADD
  where
*    a~aufnr in s_aufnr   "生产订单号                "V1-9 RMK
    D~aufnr in s_aufnr   "生产订单号                "V1-9 ADD
    and   b~dwerk = p_dwerk    "工厂
    and   a~sdate in s_mdate    "修改时间
    and   c~auart in r_auart  "工单类型
    and   a~aennr in s_aennr. "修改人      "v1-5 add
  if sy-subrc <> 0.
        message '无相关单据' type 'S'.
  endif.
  endif.

*********************v1-7 add begin*******************
  if s_aufnr is initial
    and s_mdate is initial.

    message '条件生产订单和修改日期不能都为空.' TYPE 'S' DISPLAY LIKE 'E'.
    P_IFERR = 'X'.
  endif.
*********************v1-7 add end*********************

  clear: w_afko1 , w_resb1.

endform.


form frm_select .
     select a~aufnr
           a~sdate
           a~stime
           a~snew
           a~sname
           a~prvbe
           a~gltrp
           a~gstrp
           a~gamng
           a~gasmg
     a~aennr  "v1-2 add
   into corresponding fields of w_afko1
   from zafkolog as a
   inner join afpo as b on a~aufnr = b~aufnr
   inner join aufk as c on a~aufnr = c~aufnr
   where  a~aufnr in s_aufnr   "生产订单号
   and   b~dwerk = p_dwerk    "工厂
   and   a~sdate in s_mdate    "修改时间
   and   c~auart in r_auart  "工单类型
   and   a~aennr in s_aennr. "修改人      "v1-5 add
  append w_afko1 to t_afko.
  clear w_afko1.
   endselect.

   select a~rsnum
           a~rspos
           a~aufnr
           a~rsart
           a~sdate
           a~stime
           a~snew
           a~sname
           a~prvbe
           a~werks
           a~lgort
           a~bdmng
           a~sobkz
           a~matnr
           a~SHKZG  "借贷标记 S为借(负),H 为贷(正)
     a~aennr  "v1-2 add
     a~kzear "v1-3 add
   into corresponding fields of w_resb1
   from zresblog as a
   INNER JOIN AFKO AS D ON A~RSNUM = D~RSNUM        "V1-9 ADD
*   inner join afpo as b on a~aufnr = b~aufnr       "V1-9 RMK
*   inner join aufk as c on a~aufnr = c~aufnr       "V1-9 RMK
   inner join afpo as b on D~aufnr = b~aufnr       "V1-9 ADD
   inner join aufk as c on D~aufnr = c~aufnr       "V1-9 ADD
   where
*     a~aufnr in s_aufnr   "生产订单号             "V1-9 RMK
    D~aufnr in s_aufnr   "生产订单号             "V1-9 ADD
    and   b~dwerk = p_dwerk    "工厂
    and   a~sdate in s_mdate    "修改时间
    and   c~auart in r_auart  "工单类型
    and   a~aennr in s_aennr. "修改人      "v1-5 add

    "取得物料描述
    if w_resb1-matnr is NOT initial. "v1-4 add
    select single maktx
        from makt
        into w_resb1-maktx
        where matnr = w_resb1-matnr
        and spras = '1'.
    else.                       "v1-4 add
      select single potx1       "v1-4 add
        from zresblog as a      "v1-4 add
        into w_resb1-maktx      "v1-4 add
        where a~rsnum = w_resb1-rsnum     "v1-4 add
          and a~rspos = w_resb1-rspos     "v1-4 add
          and a~sdate = w_resb1-sdate     "v1-4 add
          and a~stime = w_resb1-stime     "v1-4 add
          and a~snew  = w_resb1-snew      "v1-4 add
          and a~sname = w_resb1-sname.    "v1-4 add

    endif.                     "v1-4 add

   "根据借贷标记更新需求数量
   if w_resb1-SHKZG = 'S'.
     w_resb1-bdmng  = - w_resb1-bdmng.
   endif.

  append w_resb1 to t_resb.
  clear w_resb1.
  endselect.

***************表头没有修改的记录也插入到t_afko中 开始***************
  loop at t_resb into w_resb1.
  read table t_afko into w_afko1 with key aufnr = w_resb1-aufnr
  sdate = w_resb1-sdate
  stime = w_resb1-stime
  sname = w_resb1-sname.
  if sy-subrc <> 0.
    w_afko1-aufnr = w_resb1-aufnr.
    w_afko1-sdate = w_resb1-sdate.
    w_afko1-stime = w_resb1-stime.
    w_afko1-sname = w_resb1-sname.
    w_afko1-aennr = w_resb1-aennr.  "v1-2 add
    append w_afko1 to t_afko.
  endif.
  clear:w_resb1 , w_afko1.

  endloop.
***************表头没有修改的记录也插入到t_afko中 结束***************

  sort t_afko by aufnr sdate stime.

  sort t_resb by rsnum sdate stime.


endform.

form data_output.

data: l_idx1 type i,
      l_idx2 type i,
      l_cname type adrp-name_text,     "v1-6 add
      l_name type adrp-name_text.     "v1-6 add

loop at t_afko into w_afko1 where flag = space.
  l_idx1 = sy-tabix.
  if w_afko1-prvbe = '更改之前'.
     write:/1 '生产订单号:', w_afko1-aufnr.
     write:/10  '修改日',
      25  '修改时间',
      40  '修改者' ,
*      55  '计算机名' "v1-2  add        "v1-6 rmk
      70  '计算机名'                    "v1-6 add
      .
     read table t_afko into w_afko2 with key aufnr = w_afko1-aufnr
     sdate = w_afko1-sdate
     stime = w_afko1-stime
     SNAME = W_AFKO1-SNAME                           "V1-9 ADD
     prvbe = '更改之后'.

     if sy-subrc = 0 .                               "V1-9 ADD
      l_idx2 = sy-tabix.                               "V1-9 ADD
************************v1-6 add begin****************************
     clear:l_name,l_cname.
     perform frm_get_username  using w_afko1-aennr changing l_cname.
     concatenate w_afko1-aennr l_cname into l_name.
************************v1-6 add end******************************

*     if sy-subrc = 0 .                               "V1-9 RMK
*    l_idx2 = sy-tabix.                               "V1-9 RMK
    write:/ w_afko1-sdate under '修改日',
      w_afko1-stime under '修改时间',
*      w_afko1-aennr under '修改者',  "v1-2 add      "v1-6 rmk
      l_name under '修改者',            "v1-6 add
      w_afko1-sname under '计算机名'  "v1-2 add
*      w_afko1-sname under '修改者'  "v1-2 rmk
      .
    skip.
    write:at pos_taitou '抬头',
    at pos_gamng '总计数量',
    at pos_gasmg '废品数量',
    at pos_gstrp '开始日期',
    at pos_gltrp '完成日期'
    .

    perform get_afkoflag using w_afko1 w_afko2 g_afkoflag.
    perform format_write_afko using w_afko1 w_afko2 g_afkoflag.
    clear g_afkoflag.
    w_afko1-flag = 'X'.
    w_afko2-flag = 'X'.

    modify t_afko from w_afko1 index l_idx1.
    modify t_afko from w_afko2 index l_idx2.

***********************V1-9 ADD BEGIN*************************
    ELSE.
     clear:g_afkoflag,
           w_afko2.
     w_afko2-aufnr = w_afko1-aufnr.
     w_afko2-sdate = w_afko1-sdate.
     w_afko2-stime = w_afko1-stime.
     w_afko2-SNAME = W_AFKO1-SNAME.
     w_afko2-prvbe = '更改后(丢)'.
     perform format_write_afko using w_afko1 w_afko2 g_afkoflag.
**********************V1-9 ADD END****************************
    clear: l_idx1,l_idx2.
    endif.

  elseif w_afko1-prvbe = '更改之后'.
    clear: l_idx1,l_idx2.
    clear: w_afko1 , w_afko2 , w_resb1 , w_resb2.
    continue.

  else.

************************v1-6 add begin****************************
     clear:l_name,l_cname.
     perform frm_get_username  using w_afko1-aennr changing l_cname.
     concatenate w_afko1-aennr l_cname into l_name.
************************v1-6 add end******************************

     write:/1 '生产订单号:', w_afko1-aufnr.
     write:/10  '修改日',
      25  '修改时间',
      40  '修改者' ,
*      55  '计算机名' "v1-2   add              "v1-6 rmk
      70  '计算机名'                    "v1-6 add
      .

    write:/ w_afko1-sdate under '修改日',
      w_afko1-stime under '修改时间',
*      w_afko1-aennr under '修改者',  "v1-2 add        "v1-6 rmk
      l_name under '修改者',            "v1-6 add
      w_afko1-sname under '计算机名'  "v1-2 add
*      w_afko1-sname under '修改者'   "v1-2 rmk
      .
    skip.
    write:at pos_taitou '抬头无修改'.
    w_afko1-flag = 'X'.
    modify t_afko from w_afko1 index l_idx1.
    clear: l_idx1,l_idx2.

  ENDIF.

************配件部分开始*********************
 skip.
  read  table t_resb into w_resb1 with key aufnr = w_afko1-aufnr
  flag = space
  sdate = w_afko1-sdate
  stime = w_afko1-stime
  sname = w_afko1-sname .
  if sy-subrc = 0.  "配件有修改过

    write:   at pos_biaoshen '配件',
                at pos_matnr '物料号',
                at pos_maktx '物料描述',
                at pos_dwerk '工厂',
                at pos_lgort '库位',
                at pos_bdmng '需求数量' ,
                at pos_sobkz '特殊库存',
                at pos_kzear '最后确认'  "v1-3 add
                .

    loop at t_resb into w_resb1 where aufnr = w_afko1-aufnr
    and flag = space
    and sdate = w_afko1-sdate
    and stime = w_afko1-stime
    and sname = w_afko1-sname .
    l_idx1 = sy-tabix.

    if w_resb1-prvbe = '更改之前'.
      read table t_resb into w_resb2 with key rsnum = w_resb1-rsnum
      rspos = w_resb1-rspos
      sdate = w_resb1-sdate
      stime = w_resb1-stime
      sname = w_resb1-sname                       "v1-9 add
      prvbe = '更改之后'.
      if sy-subrc = 0.
        l_idx2 = sy-tabix.
        perform get_resbflag using w_resb1 w_resb2 g_resbflag.
        perform format_write_resb
          using w_resb1 w_resb2 g_resbflag.
        clear g_resbflag.

        w_resb1-flag = 'X'.
        w_resb2-flag = 'X'.

        modify t_resb from w_resb1 index l_idx1.
        modify t_resb from w_resb2 index l_idx2.

        clear: w_resb1 , w_resb2.
************************v1-9 ADD BEGIN****************************
     ELSE.
      CLEAR:W_RESB2,
            G_RESBFLAG.
      w_resb2-rsnum = w_resb1-rsnum.
      w_resb2-rspos = w_resb1-rspos.
      w_resb2-sdate = w_resb1-sdate.
      w_resb2-stime = w_resb1-stime.
      w_resb2-sname = w_resb1-sname.
      w_resb2-prvbe = '更改后(丢)'.
        perform format_write_resb
          using w_resb1 w_resb2 g_resbflag.
************************V1-9 ADD END******************************
      endif.
*    elseif w_resb1-prvbe <> '更改之后' .
     elseif not ( w_resb1-prvbe = '更改之后'
       or w_resb1-prvbe = '更改之前' ).
      perform initformat_write_resb using w_resb1.
      w_resb1-flag = 'X'.
      modify t_resb from w_resb1 index l_idx1.
    endif.
    clear: l_idx1,l_idx2.
    endloop.
  else. "配件没修改过

    write: at pos_biaoshen '配件无修改'.

  endif.
************配件部分结束*********************
    ULINE.
    SKIP.
  clear: w_afko1 , w_afko2 , w_resb1 , w_resb2.
endloop.

endform.

form format_write_afko using para_w_afko1 like w_afko1 para_w_afko2
like w_afko1 para_afkoflag type afkoflag.

data l_afkoflag type afkoflag.
data l_afkoval type afkoval.

l_afkoflag = para_afkoflag.
move-corresponding para_w_afko1 to l_afkoval.

field-symbols :<flag> , <pos> , <val>.

  skip.
  write:
*      at pos_before '更改之前'           "V1-9 RMK
       at pos_before para_w_afko1-prvbe   "V1-9 ADD
*      AT POS_GAMNG PARA_W_AFKO1-GAMNG,
*      AT POS_GASMG PARA_W_AFKO1-GASMG,
*      AT POS_GSTRP PARA_W_AFKO1-GSTRP,
*      AT POS_GLTRP PARA_W_AFKO1-GLTRP
      .
  do.
  assign component sy-index of structure l_afkoflag to <flag>.
  assign component sy-index of structure g_afkopos to <pos>.
  assign component sy-index of structure l_afkoval to <val>.
  if sy-subrc <> 0.
    exit.
  endif.
  perform  write_col_negative using <flag> <pos> <val>.
  enddo.

  clear l_afkoval.
  move-corresponding para_w_afko2 to l_afkoval.

  skip.
  write:
*  at pos_after '更改之后'                  "V1-9 RMK
    at pos_after para_w_afko2-prvbe   "V1-9 ADD
*      AT POS_GAMNG PARA_W_AFKO2-GAMNG ,
*      AT POS_GASMG PARA_W_AFKO2-GASMG ,
*      AT POS_GSTRP PARA_W_AFKO2-GSTRP ,
*      AT POS_GLTRP PARA_W_AFKO2-GLTRP
      .
  do.
  assign component sy-index of structure l_afkoflag to <flag>.
  assign component sy-index of structure g_afkopos to <pos>.
  assign component sy-index of structure l_afkoval to <val>.
  if sy-subrc <> 0.
    exit.
  endif.
  perform  write_col_positive using <flag> <pos> <val>.
  enddo.

endform.

form get_afkoflag using para_w_afko1 like w_afko1 para_w_afko2 like
w_afko1 para_afkoflag type afkoflag.

  if para_w_afko1-gamng <> para_w_afko2-gamng.
    para_afkoflag-gamng = 'X'.
  endif.

  if para_w_afko1-gasmg <> para_w_afko2-gasmg.
    para_afkoflag-gasmg = 'X'.
  endif.

  if para_w_afko1-gstrp <> para_w_afko2-gstrp.
    para_afkoflag-gstrp = 'X'.
  endif.

  if para_w_afko1-gltrp <> para_w_afko2-gltrp.
    para_afkoflag-gltrp = 'X'.
  endif.

endform.

form format_write_resb using para_w_resb1 like w_resb1 para_w_resb2
like w_resb1  para_resbflag type resbflag.

data l_resbflag type resbflag.
data l_resbval type resbval.

l_resbflag = para_resbflag.
move-corresponding para_w_resb1 to l_resbval.

field-symbols :<flag> , <pos> , <val>.

      skip.
*      AT POS_BEFORE '更改之前',
      write:at pos_before para_w_resb1-prvbe,
      at pos_matnr para_w_resb1-matnr,
      at pos_maktx para_w_resb1-maktx
*      AT POS_DWERK PARA_W_RESB1-WERKS,
*      AT POS_LGORT PARA_W_RESB1-LGORT,
*      AT POS_BDMNG PARA_W_RESB1-BDMNG,
*      AT POS_SOBKZ PARA_W_RESB1-SOBKZ
      .

  do.
  assign component sy-index of structure l_resbflag to <flag>.
  assign component sy-index of structure g_resbpos to <pos>.
  assign component sy-index of structure l_resbval to <val>.
  if sy-subrc <> 0.
    exit.
  endif.
  perform  write_col_negative using <flag> <pos> <val>.
  enddo.

  clear l_resbval.
  move-corresponding para_w_resb2 to l_resbval.

      skip.
*      WRITE:AT POS_AFTER  '更改之后',
      write:at pos_before para_w_resb2-prvbe,
      at pos_matnr para_w_resb2-matnr,
      at pos_maktx para_w_resb2-maktx
*      AT POS_DWERK PARA_W_RESB2-WERKS,
*      AT POS_LGORT PARA_W_RESB2-LGORT,
*      AT POS_BDMNG PARA_W_RESB2-BDMNG,
*      AT POS_SOBKZ PARA_W_RESB2-SOBKZ
      .
  do.
  assign component sy-index of structure l_resbflag to <flag>.
  assign component sy-index of structure g_resbpos to <pos>.
  assign component sy-index of structure l_resbval to <val>.
  if sy-subrc <> 0.
    exit.
  endif.
  perform  write_col_positive using <flag> <pos> <val>.
  enddo.

endform.

form get_resbflag using para_w_resb1 like w_resb1 para_w_resb2 like
w_resb1 para_resbflag type resbflag.

***********************v1-9 add begin***********************
  if para_w_resb1-matnr <> para_w_resb2-matnr.
    para_resbflag-matnr = 'X'.
  endif.
************************v1-9 add end*************************

  if para_w_resb1-werks <> para_w_resb2-werks.
    para_resbflag-werks = 'X'.
  endif.

  if para_w_resb1-lgort <> para_w_resb2-lgort.
    para_resbflag-lgort = 'X'.
  endif.

  if para_w_resb1-bdmng <> para_w_resb2-bdmng.
    para_resbflag-bdmng = 'X'.
  endif.

  if para_w_resb1-sobkz <> para_w_resb2-sobkz.
    para_resbflag-sobkz = 'X'.
  endif.

  if para_w_resb1-kzear <> para_w_resb2-kzear. "v1-3 add
    para_resbflag-kzear = 'X'.                  "v1-3 add
  endif.                                       "v1-3 add

endform.

form initformat_write_resb using para_w_resb1 like w_resb1.

  skip.
  write:at pos_after  para_w_resb1-prvbe,
    at pos_matnr para_w_resb1-matnr,
    at pos_maktx para_w_resb1-maktx,
    at pos_dwerk para_w_resb1-werks,
    at pos_lgort para_w_resb1-lgort,
    at pos_bdmng para_w_resb1-bdmng,
    at pos_sobkz(1) para_w_resb1-sobkz,
    at pos_kzear(1) para_w_resb1-kzear     "v1-3 add
    .

endform.

form write_col_negative using para_col type c para_pos type i para_val.

  data l_len type i.                            "v1-3 add
  clear l_len.                                  "v1-3 add
 describe field para_val output-length l_len.   "v1-3 add
 if l_len < 8.  "目的是为底色显示更平均          "v1-3 add
   l_len = 8.                                   "v1-3 add
 endif.                                        "v1-3 add

  if para_col = 'X'.
  format color col_negative on .
  "write : at para_pos para_val.   "v1-3 rmk
  write : at para_pos(l_len) para_val.   "v1-3 add
  else.
    format color col_negative off .
    write: at para_pos para_val.   "v1-3 rmk
    write: at para_pos(l_len) para_val.   "v1-3 add
  endif.

  format color col_negative off .
endform.

form write_col_positive using para_col type c para_pos type i
para_val.


  data l_len type i.    "v1-3 add
  clear l_len.          "v1-3 add
 describe field para_val output-length l_len.   "v1-3 add
 if l_len < 8. "目的是为底色显示更平均           "v1-3 add
   l_len = 8.                                   "v1-3 add
 endif.                                        "v1-3 add

       if para_col = 'X'.
         format color col_positive on.
         "write : at para_pos para_val.  "v1-3 rmk
         write : at para_pos(l_len) para_val.  "v1-3 add
      else.
        format color col_positive off.
        "write : at para_pos para_val.  "v1-3 rmk
        write: at para_pos(l_len) para_val.    "v1-3 add
      endif.
      format color col_positive off.

endform.

***************************v1-6 add begin******************************

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_USERNAME
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form frm_get_username using p_sy_uname changing p_name_txt.

select single name_text
from adrp
inner join usr21 on usr21~persnumber = adrp~persnumber
into p_name_txt
where bname = p_sy_uname.

endform.                    " FRM_GET_USERNAME
***************************v1-6 add end********************************



******************************V1-8 ADD BEGIN******************************
*&---------------------------------------------------------------------*
*&      Form  FRM_AUTH_CHECK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_AUTH_CHECK .

*  clear:r_vkorg,
*        r_vkorg[].


  CALL FUNCTION 'ZGL_CHECK_REPAUTH'
    EXPORTING
      I_MODULE             = 'PP'
*       I_BUKRS              = P_BUKRS
    I_WERKS              = p_dwerk
*     I_VKORG              =
*     I_ACTVT              =
   EXCEPTIONS
     NO_MODULE            = 1
     NO_INPUTFIELD        = 2
     NOT_AUTHORIZED       = 3
     OTHERS               = 4
            .
  IF SY-SUBRC <> 0.
  g_ifnoauthpass = 'X'.
 message id sy-msgid type sy-msgty number sy-msgno
         with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  else.
    clear g_ifnoauthpass.
  ENDIF.

*
*  r_vkorg[] = s_vkorg[].
*
*  CALL FUNCTION 'ZGL_CHECK_REPAUTH_FILTRANGE'
*    EXPORTING
*      I_MODULE           =  'SD'
**      I_AVTVT             =
**      I_IFBUKRS          =
**      I_IFWERKS          =
*      I_IFVKORG          =  'X'
*   TABLES
**     T_RANGEBUKRS       =
**     T_RANGEWERKS       =
*     T_RANGEVKORG       = R_VKORG
*            .



ENDFORM.                    " FRM_AUTH_CHECK
*****************************V1-8 ADD END**********************************

0 0