审批

REPORT zmc_plgoal_see MESSAGE-ID s05.
DATA:gv_msg_reset(255).
DATA:gv_msg_return(50).
DATA gv_highest_level  TYPE zmct_spr-zspjb.
DATA:gt_zmct_spr LIKE TABLE OF zmct_spr WITH HEADER LINE.
"//---------------------------------------------------
CONSTANTS:con_pernr TYPE pernr_d VALUE '61060017'.
DATA:lv_spjb_now  TYPE zmct_spr-zspjb."当前审批节点
DATA:lv_spjb_now_txt  TYPE char16."当前审批节点
DATA:lv_spjb_highest  TYPE zmct_spr-zspjb.
DATA:lv_fieldname  TYPE char14.
DATA:lv_fieldname_highest  TYPE char14.
DATA:gv_sp_msg  TYPE char255.
DATA:lv_spr  TYPE    char14.
DATA:lv_sprq  TYPE   char14.
DATA:lv_spsj  TYPE   char14.
DATA:lv_spr_h TYPE   char14.
DATA:lv_sprq_h TYPE  char14.
DATA:lv_spsj_h TYPE  char14.
FIELD-SYMBOLS:<spzt> TYPE ANY,<spzt_high> TYPE ANY.
FIELD-SYMBOLS:<spr> TYPE ANY,<sprq> TYPE ANY,<spsj> TYPE ANY.
"//------------审批人姓名---------------------------------------
DATA:lv_value1  TYPE char20..
DATA:lv_name  TYPE char20..
DATA:lv_index1  TYPE char20..
FIELD-SYMBOLS:<spr1> TYPE ANY.
FIELD-SYMBOLS:<sprzt1> TYPE ANY.
FIELD-SYMBOLS:<spr1_name> TYPE ANY.
DEFINE  macro_spname.
  do 6 times.
    clear:lv_value1,lv_name.
    lv_index1 = sy-index.
    condense lv_index1 no-gaps.
    concatenate 'ZSPR_'  lv_index1 into lv_value1.
    concatenate 'NAME_'  lv_index1 into lv_name.
    assign component lv_value1 of structure &1 to <spr1>.
    if sy-subrc = 0 .
      read table gt_zmct_spr   with key    pernr = <spr1>.
      if sy-subrc = 0.
        assign component lv_name of structure &1 to <spr1_name>.
        if sy-subrc = 0 .
          <spr1_name> = gt_zmct_spr-name.
        endif.
      endif.
    endif.
  enddo.
END-OF-DEFINITION.
"//---------------------------------------------------
DEFINE macro_stauts.
  if &1-&2 = 'X' or &1-&2 = icon_checked."程序一开始使用的X标识符,如果审批完成后会更新为图标标识符
    &1-&2  = icon_checked.
  else.
    &1-&2  = icon_cancel.
  endif.
END-OF-DEFINITION.

DEFINE  macro_fname.
  if gv_highest_level >= 1.
    "
    gs_fieldcat-icon = 'X'.
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPZT_1' . perform  set_fieldcat1  using  'ZSPZT_1'   '一级'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPR_1' .  perform  set_fieldcat1  using  'ZSPR_1'    '确认人 '    .
    "
    gs_fieldcat-ref_table = 'ZMCS_NAME' . gs_fieldcat-ref_field = 'NAME_1' .  perform  set_fieldcat1  using  'NAME_1'    '姓名 '    .

    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPRQ_1' . perform  set_fieldcat1  using  'ZSPRQ_1'   '确认日期'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPSJ_1' . perform  set_fieldcat1  using  'ZSPSJ_1'   '确认时间'    .

  endif.
  if gv_highest_level >= 2.
    "
    gs_fieldcat-icon = 'X'.
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPZT_2' . perform  set_fieldcat1  using  'ZSPZT_2'   '二级'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPR_2' .  perform  set_fieldcat1  using  'ZSPR_2'    '确认人 '    .
    "
    gs_fieldcat-ref_table = 'ZMCS_NAME' . gs_fieldcat-ref_field = 'NAME_2' .  perform  set_fieldcat1  using  'NAME_2'    '姓名 '    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPRQ_2' . perform  set_fieldcat1  using  'ZSPRQ_2'   '确认日期'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPSJ_2' . perform  set_fieldcat1  using  'ZSPSJ_2'   '确认时间'    .
  endif.
  if gv_highest_level >= 3.
    "
    gs_fieldcat-icon = 'X'.
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPZT_3' . perform  set_fieldcat1  using  'ZSPZT_3'   '大区一级'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPR_3' .  perform  set_fieldcat1  using  'ZSPR_3'    '确认人 '    .
    "
    gs_fieldcat-ref_table = 'ZMCS_NAME' . gs_fieldcat-ref_field = 'NAME_3' .  perform  set_fieldcat1  using  'NAME_3'    '姓名 '    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPRQ_3' . perform  set_fieldcat1  using  'ZSPRQ_3'   '确认日期'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPSJ_3' . perform  set_fieldcat1  using  'ZSPSJ_3'   '确认时间'    .
  endif.

  if gv_highest_level >= 4.
    "
    gs_fieldcat-icon = 'X'.
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPZT_4' . perform  set_fieldcat1  using  'ZSPZT_4'   '大区二级'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPR_4' .  perform  set_fieldcat1  using  'ZSPR_4'    '确认人 '    .
    "
    gs_fieldcat-ref_table = 'ZMCS_NAME' . gs_fieldcat-ref_field = 'NAME_4' .  perform  set_fieldcat1  using  'NAME_4'    '姓名 '    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPRQ_4' . perform  set_fieldcat1  using  'ZSPRQ_4'   '确认日期'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPSJ_4' . perform  set_fieldcat1  using  'ZSPSJ_4'   '确认时间'    .
  endif.
  if gv_highest_level >= 5.
    "
    gs_fieldcat-icon = 'X'.
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPZT_5' . perform  set_fieldcat1  using  'ZSPZT_5'   '医管'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPR_5' .  perform  set_fieldcat1  using  'ZSPR_5'    '确认人 '    .
    "
    gs_fieldcat-ref_table = 'ZMCS_NAME' . gs_fieldcat-ref_field = 'NAME_5' .  perform  set_fieldcat1  using  'NAME_5'    '姓名 '    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPRQ_5' . perform  set_fieldcat1  using  'ZSPRQ_5'   '确认日期'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPSJ_5' . perform  set_fieldcat1  using  'ZSPSJ_5'   '确认时间'    .
  endif.
  if gv_highest_level >= 6.
    "
    gs_fieldcat-icon = 'X'.
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPZT_6' . perform  set_fieldcat1  using  'ZSPZT_6'   '五级'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPR_6' .  perform  set_fieldcat1  using  'ZSPR_6'    '确认人 '    .
    "
    gs_fieldcat-ref_table = 'ZMCS_NAME' . gs_fieldcat-ref_field = 'NAME_6' .  perform  set_fieldcat1  using  'NAME_6'    '姓名 '    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPRQ_6' . perform  set_fieldcat1  using  'ZSPRQ_6'   '确认日期'    .
    "
    gs_fieldcat-ref_table = 'ZMCT_TLKF' . gs_fieldcat-ref_field = 'ZSPSJ_6' . perform  set_fieldcat1  using  'ZSPSJ_6'   '确认时间'    .
  endif.
END-OF-DEFINITION.
TYPE-POOLS:slis.
TYPES:
BEGIN OF typ_data,
  sel              TYPE char1,
  jgbm             TYPE zmct_pl-jgbm,             "机构
  qdsj             TYPE zmct_pl-qdsj,             "渠道一级
  zqdej            TYPE zmct_pl-zqdej,            "渠道二级
  gjahr            TYPE zmct_pl-gjahr,            "会计年度
  smon             TYPE zmct_pl-smon,             "会计期间
  zvalue_typ       TYPE zmct_pl-zvalue_typ,       "值类型
  zvalue_typ_txt   TYPE zmct_pl-zvalue_typ_txt,   "值类型
  zjg_txt          TYPE zmct_pl-zjg_txt,          "机构描述
  qdsjt            TYPE zmct_pl-qdsjt,            "渠道一级文本
  zqdejt           TYPE zmct_pl-zqdejt,           "渠道二级文本
  zzw_eyebrow      TYPE zmct_pl-zzw_eyebrow,      "整外-眉部整形
  zzw_eye          TYPE zmct_pl-zzw_eye,          "整外-眼部整形
  zzw_rhinoplasty  TYPE zmct_pl-zzw_rhinoplasty,  "整外-鼻部整形
  zzw_breast       TYPE zmct_pl-zzw_breast,       "整外-胸部整形
  zzw_fat_fillers  TYPE zmct_pl-zzw_fat_fillers,  "整外-脂肪填充
  zzw_liposuction  TYPE zmct_pl-zzw_liposuction,  "整外-吸脂
  zzw_facial_wrink TYPE zmct_pl-zzw_facial_wrink, "整外-面部除皱
  zzw_otoplasty    TYPE zmct_pl-zzw_otoplasty,    "整外-耳部整形
  zzw_other        TYPE zmct_pl-zzw_other,        "整外-整外其他
  zwc_acid         TYPE zmct_pl-zwc_acid,         "无创-玻尿酸
  zwc_regenerativ  TYPE zmct_pl-zwc_regenerativ,  "无创-再生材料
  zwc_collagen     TYPE zmct_pl-zwc_collagen,     "无创-胶原蛋白
  zwc_sculpting    TYPE zmct_pl-zwc_sculpting,    "无创-肉毒素塑形
  zwc_wreduction   TYPE zmct_pl-zwc_wreduction,   "无创-肉毒素除皱
  zwc_thread_s     TYPE zmct_pl-zwc_thread_s,     "无创-线雕
  zwc_other        TYPE zmct_pl-zwc_other,        "无创-其它
  zskin_maintain   TYPE zmct_pl-zskin_maintain,   "皮肤-嫩肤保养
  zskin_tighten    TYPE zmct_pl-zskin_tighten,    "皮肤-紧肤抗衰
  zskin_whitening  TYPE zmct_pl-zskin_whitening,  "皮肤-美白祛斑
  zskin_acne_remo  TYPE zmct_pl-zskin_acne_remo,  "皮肤-祛痘
  zskin_scars      TYPE zmct_pl-zskin_scars,      "皮肤-疤痕/瘢痕
  zskin_hair_remov TYPE zmct_pl-zskin_hair_remov, "皮肤-脱毛
  zskin_tattoo     TYPE zmct_pl-zskin_tattoo,     "皮肤-纹绣
  zskin_cosmetic   TYPE zmct_pl-zskin_cosmetic,   "皮肤-化妆品
  zskin_redness    TYPE zmct_pl-zskin_redness,    "皮肤-袪红治疗
  zskin_other      TYPE zmct_pl-zskin_other,      "皮肤-皮肤其他
  zsm_instrument   TYPE zmct_pl-zsm_instrument,   "私密-仪器私密
  zsm_injections   TYPE zmct_pl-zsm_injections,   "私密-注射私密
  zsm_other        TYPE zmct_pl-zsm_other,        "私密-私密其他
  zxt_instrument   TYPE zmct_pl-zxt_instrument,   "纤体-仪器纤体
  zxt_lipolysis    TYPE zmct_pl-zxt_lipolysis,    "纤体-美塑溶脂
  zxt_acid         TYPE zmct_pl-zxt_acid,         "纤体-玻尿酸塑形
  zxt_botox        TYPE zmct_pl-zxt_botox,        "纤体-肉毒塑形
  zxt_other        TYPE zmct_pl-zxt_other,        "纤体-纤体其他
  zkq_orthodontic  TYPE zmct_pl-zkq_orthodontic,  "口腔-正畸
  zkq_restoration  TYPE zmct_pl-zkq_restoration,  "口腔-修复
  zkq_treatment    TYPE zmct_pl-zkq_treatment,    "口腔-治疗
  zkq_implant      TYPE zmct_pl-zkq_implant,      "口腔-种植
  zkq_other        TYPE zmct_pl-zkq_other,        "口腔-口腔其他
  zmf_implants     TYPE zmct_pl-zmf_implants,     "毛发-毛发种植
  zmf_artistic_im  TYPE zmct_pl-zmf_artistic_im,  "毛发-艺术种植
  zmf_anti_aging   TYPE zmct_pl-zmf_anti_aging,   "毛发-头皮抗衰
  zmf_other        TYPE zmct_pl-zmf_other,        "毛发-头皮其他
  zyjk_tcm         TYPE zmct_pl-zyjk_tcm,         "亚健康管理-中医理疗
  zyjk_spa         TYPE zmct_pl-zyjk_spa,         "亚健康管理SPA
  count            TYPE i,                        "该字段专门用来统计行数
  dd_handle        TYPE int4,                     "设置关于下拉列表
  line_color(4)    TYPE c,                        "设置行颜色的字段
  cell_color       TYPE slis_t_specialcol_alv,    "设置字段颜色
  cellstyles       TYPE lvc_t_styl,               "控制单元格可编辑
  checkbox         TYPE c,                        "复选框列
  sep_flag         TYPE char10,                   "结果标识
  created_by       TYPE  zmct_zx-created_by     ,
  created_date     TYPE  zmct_zx-created_date   ,
  created_time     TYPE  zmct_zx-created_time   ,
  zspr_ygnam      TYPE zmc_tygh-ygnam,      "确认人
  msg              TYPE char255.

        INCLUDE STRUCTURE zmct_sp.                    "
        INCLUDE STRUCTURE zmcs_name.                 "
TYPES:END OF typ_data.

DATA: gt_show TYPE TABLE OF typ_data,
      gs_show TYPE typ_data.
FIELD-SYMBOLS:<fs_show> TYPE typ_data.
DATA:gv_event_flag(1).
DATA go_alv_handler_maint TYPE REF TO zcl_alv_event_handler.
************************************************************************
* Tables
************************************************************************
TABLES:     t000.
TYPE-POOLS: slis,icon.

*--·与ALV相关的变量
DATA: gs_fieldcat     TYPE lvc_s_fcat,
      gt_fieldcat     TYPE lvc_t_fcat,
      gs_layout       TYPE lvc_s_layo,
      ls_glay         TYPE lvc_s_glay,
      gt_sub_fieldcat TYPE lvc_t_fcat,
      gs_sub_layout   TYPE lvc_s_layo,
      con_diabox      TYPE REF TO cl_gui_dialogbox_container,
      go_alv          TYPE REF TO cl_gui_alv_grid.

*--·与ALV函数相关的参数
DATA: gt_excluding TYPE slis_t_extab,          "关于排除ALV工具栏标准按钮的内表
      gs_excluding LIKE LINE OF gt_excluding,  "关于排除ALV工具栏标准按钮的结构
      gt_ddval     TYPE lvc_t_drop,            "关于下拉列表的内表
      gs_ddval     TYPE lvc_s_drop,            "关于下拉列表的工作区
      git_events   TYPE slis_t_event.          "注册ALV事件的内表
DATA: gv_need_refresh TYPE c.                  "定义全局的
DATA: lo_alv TYPE REF TO cl_gui_alv_grid.

TABLES:zmct_pl.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE sxtj.
SELECT-OPTIONS:s_jgbm  FOR zmct_pl-jgbm OBLIGATORY MEMORY ID zjg
           MATCHCODE OBJECT zmc_sh_jgbm_d   .   . "机构
SELECT-OPTIONS:s_gjahr  FOR zmct_pl-gjahr NO INTERVALS NO-EXTENSION DEFAULT sy-datum+0(4)."会计年度
SELECT-OPTIONS:s_smon  FOR zmct_pl-smon DEFAULT sy-datum+4(2)."会计期间
SELECT-OPTIONS:s_qdsj  FOR zmct_pl-qdsj."渠道一级
SELECT-OPTIONS:s_zqdej  FOR zmct_pl-zqdej."渠道二级
SELECT-OPTIONS:s_zvalue  FOR zmct_pl-zvalue_typ."值类型
SELECT-OPTIONS:s_zspzt  FOR zmct_pl-zspzt  NO-DISPLAY ."
SELECTION-SCREEN END OF BLOCK b1.

INITIALIZATION.

  %_s_jgbm_%_app_%-text = '机构' .
  %_s_qdsj_%_app_%-text = '渠道一级' .
  %_s_zqdej_%_app_%-text = '渠道二级' .
  %_s_gjahr_%_app_%-text = '会计年度' .
  %_s_smon_%_app_%-text = '会计期间' .
  %_s_zvalue_%_app_%-text = '值类型' .
  sxtj = '筛选条件' .
  IF sy-tcode = 'ZCO_24032'.
    sy-title = '品类目标-查看'.
  ELSEIF sy-tcode = 'ZCO_24036'."取消确认
    sy-title = '品类目标-取消确认'.
  ELSEIF sy-tcode = 'ZCO_24035'."确认
    sy-title = '品类目标-确认'.
  ENDIF.

AT SELECTION-SCREEN  .
  IF sy-tcode = 'ZCO_24035'  ."确认时候只能看见待审核流程 .
    s_zspzt-sign = 'I'.
    s_zspzt-option = 'EQ'.
    s_zspzt-low = 'N'.
    APPEND s_zspzt.CLEAR s_zspzt.
  ENDIF.

START-OF-SELECTION.

  PERFORM authority_check.

  PERFORM a_get_data.

END-OF-SELECTION.

*--·设置排除按钮
  PERFORM frm_set_excluding.
*--·设置事件
  PERFORM frm_set_event.
*--·设置fieldcat
  PERFORM frm_set_fieldcat.
*--·设置layout
  PERFORM frm_set_layout.
*--·输出数据至内表
  PERFORM frm_disp_data.

*&---------------------------------------------------------------------*
*&      Form  authority_check
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM authority_check .
  DATA:s_werks TYPE zmc_tt_range.

  s_werks[] =  s_jgbm[] .
  IF zcl_ck=>auth_control(  s_werks[]  ) = abap_false.
    MESSAGE e000 WITH '您没有此机构的权限!!!'.
    RETURN.
  ENDIF.
ENDFORM.                    "authority_check

*&---------------------------------------------------------------------*
*&      Form  A_get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM a_get_data .

  SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_zmct_spr FROM zmct_spr WHERE jgbm IN s_jgbm.
  SORT gt_zmct_spr BY zspjb DESCENDING.

  READ TABLE gt_zmct_spr  INDEX 1 .
  IF sy-subrc = 0.
    gv_highest_level = gt_zmct_spr-zspjb.
  ENDIF.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE  gt_show
    FROM zmct_pl
    WHERE jgbm IN s_jgbm
    AND qdsj      IN   s_qdsj
    AND zqdej     IN    s_zqdej
    AND gjahr     IN    s_gjahr
    AND smon      IN    s_smon
    AND zvalue_typ IN   s_zvalue
    AND zspzt IN   s_zspzt
    .

  LOOP AT gt_show ASSIGNING <fs_show>.
    <fs_show>-sep_flag = icon_yellow_light.
    IF <fs_show>-zspzt = 'X'..
      <fs_show>-zspzt_txt = icon_led_green.
    ELSE.
      <fs_show>-zspzt_txt = icon_led_red.
    ENDIF.

    macro_stauts <fs_show> zspzt_1 .
    macro_stauts <fs_show> zspzt_2 .
    macro_stauts <fs_show> zspzt_3 .
    macro_stauts <fs_show> zspzt_4 .
    macro_stauts <fs_show> zspzt_5 .
    macro_stauts <fs_show> zspzt_6 .

    macro_spname  <fs_show>.
  ENDLOOP.

  SORT gt_show BY jgbm gjahr smon qdsj zqdej.
ENDFORM.                    "A_get_data

*&---------------------------------------------------------------------*
*&      Form  frm_disp_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_disp_data .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
    i_callback_program       = sy-repid
    i_callback_pf_status_set = 'FRM_SET_PF_STATUS'
    i_callback_user_command  = 'FRM_USER_COMMAND'
    i_background_id          = 'ALV_BACKGROUND'
    is_layout_lvc            = gs_layout
    it_fieldcat_lvc          = gt_fieldcat
    it_excluding             = gt_excluding
    "i_grid_title             = CONV lvc_title( |共{ lines( gt_show ) }条| )
    i_save                   = 'A'                   ""X 可以保存全局变式 U 可以保存特定变式 A 都可以保存
    it_events                = git_events
  TABLES
    t_outtab                 = gt_show
  EXCEPTIONS
    program_error            = 1
    OTHERS                   = 2.
  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.                    "frm_disp_data

*&---------------------------------------------------------------------*
*&      Form  frm_set_event
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_set_event .
  DATA l_events TYPE LINE OF slis_t_event.
  l_events-name = 'CALLER_EXIT'.    "'CALLER_EXIT'在此写固定即可
  l_events-form = 'FRM_ENTER_EVENT'."回车事件调用的FORM
  APPEND l_events TO git_events.
ENDFORM.                    "frm_set_event

*&---------------------------------------------------------------------*
*&      Form  frm_enter_event
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->E_GRID     text
*----------------------------------------------------------------------*
FORM frm_enter_event USING e_grid TYPE slis_data_caller_exit.

ENDFORM.                    " frm_set_event

*&---------------------------------------------------------------------*
*&      Form  frm_set_pf_status
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PT_EXTAB   text
*----------------------------------------------------------------------*
FORM frm_set_pf_status USING pt_extab TYPE slis_t_extab.
  DATA ls_button TYPE slis_extab.
  DATA: lo_alv TYPE REF TO cl_gui_alv_grid.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = lo_alv.
*   ls_button-fcode = 'DEL'. APPEND ls_button TO pt_extab.CLEAR ls_button.
*   ls_button-fcode = 'CONFIRM'. APPEND ls_button TO pt_extab.CLEAR ls_button.
*   ls_button-fcode = 'RESET'. APPEND ls_button TO pt_extab.CLEAR ls_button.
  FREE:pt_extab.
  IF sy-tcode = 'ZCO_24032'."查看
    ls_button-fcode = 'CONFIRM'. APPEND ls_button TO pt_extab.CLEAR ls_button.
    ls_button-fcode = 'RESET'. APPEND ls_button TO pt_extab.CLEAR ls_button.
  ELSEIF sy-tcode = 'ZCO_24036'."取消确认
    ls_button-fcode = 'DEL'. APPEND ls_button TO pt_extab.CLEAR ls_button.
    ls_button-fcode = 'CONFIRM'. APPEND ls_button TO pt_extab.CLEAR ls_button.
  ELSEIF sy-tcode = 'ZCO_24035'."确认
    ls_button-fcode = 'RESET'. APPEND ls_button TO pt_extab.CLEAR ls_button.
    ls_button-fcode = 'DEL'. APPEND ls_button TO pt_extab.CLEAR ls_button.
  ENDIF.
  PERFORM alv_col_opt IN PROGRAM zabap_sedi_forms USING lo_alv.

  SET PF-STATUS 'STANDARD'   EXCLUDING pt_extab.
*  SET TITLEBAR 'TITLE' WITH lv_gs1 ."生产计划协同平台&s条
ENDFORM.                    "frm_set_pf_status

*&---------------------------------------------------------------------*
*&      Form  frm_set_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_set_layout .
  CLEAR gs_layout.
  gs_layout-cwidth_opt = 'X'.           "优化列宽度,设置此属性后,GS_fieldcat-OUTPUTLEN不再起作用
  gs_layout-zebra = 'X'.
  gs_layout-sel_mode = 'D'.
  gs_layout-box_fname = 'SEL'.
  gs_layout-countfname = 'COUNT'.       "计数的功能,就是统计ALV显示了多少条记录,在SAP ALV标准过滤后仍能正确的计数
  gs_layout-info_fname   = 'LINE_COLOR'."设置行颜色
  gs_layout-ctab_fname   = 'CELL_COLOR'."单元格颜色设置
  gs_layout-stylefname = 'CELLSTYLES'.  "控制单元格可编辑的字段
  gs_layout-totals_bef  = 'X'.
ENDFORM.                    "frm_set_layout

*&---------------------------------------------------------------------*
*&      Form  frm_set_excluding
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_set_excluding .
  CLEAR: gt_excluding,gs_excluding.
  gs_excluding-fcode = '&RNT_PREV'.
  APPEND gs_excluding TO gt_excluding .
ENDFORM.                    "frm_set_excluding

*&---------------------------------------------------------------------*
*&      Form  frm_set_fieldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_set_fieldcat .
  CLEAR:                gt_fieldcat,gs_fieldcat.
  gs_fieldcat-key       =                        'X'     .
  PERFORM set_fieldcat USING  ' ' ' '  'COUNT' '条目数'.
  IF sy-tcode = 'ZCO_24036' OR sy-tcode = 'ZCO_24035'."取消确认/确认
    gs_fieldcat-key =  'X'.      "
    gs_fieldcat-icon = 'X'.
    PERFORM set_fieldcat USING ''  ''  'SEP_FLAG' '结果标识'   .
    gs_fieldcat-key =  'X'.      "
    PERFORM set_fieldcat USING ''  ''  'MSG' '消息'   .
  ENDIF.

  gs_fieldcat-key       =                        'X'     .
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'JGBM'             'JGBM'             '机构'         .
  gs_fieldcat-key       =                        'X'     .
  gs_fieldcat-no_out = 'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'QDSJ'             'QDSJ'             '渠道一级'       .
  gs_fieldcat-key       =                        'X'     .
  gs_fieldcat-no_out = 'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZQDEJ'            'ZQDEJ'            '渠道二级'       .
  gs_fieldcat-key       =                        'X'     .
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'GJAHR'            'GJAHR'            '会计年度'       .
  gs_fieldcat-key       =                        'X'     .
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'SMON'             'SMON'             '会计期间'       .
  gs_fieldcat-key       =                        'X'     .
  gs_fieldcat-no_out = 'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZVALUE_TYP'       'ZVALUE_TYP'       '值类型'        .
  gs_fieldcat-key =  'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZVALUE_TYP_TXT'   'ZVALUE_TYP_TXT'   '值类型'        .
  gs_fieldcat-key =  'X'.
  PERFORM               set_fieldcat             USING   ' ' ' '          'ZJG_TXT'          '机构描述'       .
  gs_fieldcat-key =  'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'QDSJT'            'QDSJT'            '渠道一级文本'     .
  gs_fieldcat-key =  'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZQDEJT'           'ZQDEJT'           '渠道二级文本'     .
  "//---------------------------------------------------
  PERFORM               set_fieldcat             USING   ' ' ' '           'CREATED_BY'           '创建人'     .
  PERFORM               set_fieldcat             USING   ' ' ' '           'CREATED_DATE'           '创建日期'     .
  PERFORM               set_fieldcat             USING   ' ' ' '           'CREATED_TIME'           '创建时间'     .
  gs_fieldcat-no_out = 'X'.
  PERFORM               set_fieldcat             USING   ' ' ' '           'ZSPZT'           '确认状态'     .
  gs_fieldcat-icon = 'X'.
  PERFORM               set_fieldcat             USING   ' ' ' '           'ZSPZT_TXT'           '确认状态'     .
  macro_fname.
  "//---------------------------------------------------


  gs_fieldcat-emphasize =                        'C300'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZZW_EYEBROW'      'ZZW_EYEBROW'      '整外-眉部整形'    .
  gs_fieldcat-emphasize =                        'C300'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZZW_EYE'          'ZZW_EYE'          '整外-眼部整形'    .
  gs_fieldcat-emphasize =                        'C300'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZZW_RHINOPLASTY'  'ZZW_RHINOPLASTY'  '整外-鼻部整形'    .
  gs_fieldcat-emphasize =                        'C300'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZZW_BREAST'       'ZZW_BREAST'       '整外-胸部整形'    .
  gs_fieldcat-emphasize =                        'C300'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZZW_FAT_FILLERS'  'ZZW_FAT_FILLERS'  '整外-脂肪填充'    .
  gs_fieldcat-emphasize =                        'C300'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZZW_LIPOSUCTION'  'ZZW_LIPOSUCTION'  '整外-吸脂'      .
  gs_fieldcat-emphasize =                        'C300'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZZW_FACIAL_WRINK' 'ZZW_FACIAL_WRINK' '整外-面部除皱'    .
  gs_fieldcat-emphasize =                        'C300'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZZW_OTOPLASTY'    'ZZW_OTOPLASTY'    '整外-耳部整形'    .
  gs_fieldcat-emphasize =                        'C300'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZZW_OTHER'        'ZZW_OTHER'        '整外-整外其他'    .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZWC_ACID'         'ZWC_ACID'         '无创-玻尿酸'     .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZWC_REGENERATIV'  'ZWC_REGENERATIV'  '无创-再生材料'    .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZWC_COLLAGEN'     'ZWC_COLLAGEN'     '无创-胶原蛋白'    .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZWC_SCULPTING'    'ZWC_SCULPTING'    '无创-肉毒素塑形'   .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZWC_WREDUCTION'   'ZWC_WREDUCTION'   '无创-肉毒素除皱'   .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZWC_THREAD_S'     'ZWC_THREAD_S'     '无创-线雕'      .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZWC_OTHER'        'ZWC_OTHER'        '无创-其它'      .
  gs_fieldcat-emphasize =                        'C410'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSKIN_MAINTAIN'   'ZSKIN_MAINTAIN'   '皮肤-嫩肤保养'    .
  gs_fieldcat-emphasize =                        'C410'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSKIN_TIGHTEN'    'ZSKIN_TIGHTEN'    '皮肤-紧肤抗衰'    .
  gs_fieldcat-emphasize =                        'C410'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSKIN_WHITENING'  'ZSKIN_WHITENING'  '皮肤-美白祛斑'    .
  gs_fieldcat-emphasize =                        'C410'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSKIN_ACNE_REMO'  'ZSKIN_ACNE_REMO'  '皮肤-祛痘'      .
  gs_fieldcat-emphasize =                        'C410'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSKIN_SCARS'      'ZSKIN_SCARS'      '皮肤-疤痕/瘢痕'   .
  gs_fieldcat-emphasize =                        'C410'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSKIN_HAIR_REMOV' 'ZSKIN_HAIR_REMOV' '皮肤-脱毛'      .
  gs_fieldcat-emphasize =                        'C410'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSKIN_TATTOO'     'ZSKIN_TATTOO'     '皮肤-纹绣'      .
  gs_fieldcat-emphasize =                        'C410'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSKIN_COSMETIC'   'ZSKIN_COSMETIC'   '皮肤-化妆品'     .
  gs_fieldcat-emphasize =                        'C410'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSKIN_REDNESS'    'ZSKIN_REDNESS'    '皮肤-袪红治疗'    .
  gs_fieldcat-emphasize =                        'C410'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSKIN_OTHER'      'ZSKIN_OTHER'      '皮肤-皮肤其他'    .
  gs_fieldcat-emphasize =                        'C210'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSM_INSTRUMENT'   'ZSM_INSTRUMENT'   '私密-仪器私密'    .
  gs_fieldcat-emphasize =                        'C210'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSM_INJECTIONS'   'ZSM_INJECTIONS'   '私密-注射私密'    .
  gs_fieldcat-emphasize =                        'C210'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZSM_OTHER'        'ZSM_OTHER'        '私密-私密其他'    .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZXT_INSTRUMENT'   'ZXT_INSTRUMENT'   '纤体-仪器纤体'    .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZXT_LIPOLYSIS'    'ZXT_LIPOLYSIS'    '纤体-美塑溶脂'    .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZXT_ACID'         'ZXT_ACID'         '纤体-玻尿酸塑形'   .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZXT_BOTOX'        'ZXT_BOTOX'        '纤体-肉毒塑形'    .
  gs_fieldcat-emphasize =                        'C700'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZXT_OTHER'        'ZXT_OTHER'        '纤体-纤体其他'    .
  gs_fieldcat-emphasize =                        'C500'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZKQ_ORTHODONTIC'  'ZKQ_ORTHODONTIC'  '口腔-正畸'      .
  gs_fieldcat-emphasize =                        'C500'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZKQ_RESTORATION'  'ZKQ_RESTORATION'  '口腔-修复'      .
  gs_fieldcat-emphasize =                        'C500'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZKQ_TREATMENT'    'ZKQ_TREATMENT'    '口腔-治疗'      .
  gs_fieldcat-emphasize =                        'C500'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZKQ_IMPLANT'      'ZKQ_IMPLANT'      '口腔-种植'      .
  gs_fieldcat-emphasize =                        'C500'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZKQ_OTHER'        'ZKQ_OTHER'        '口腔-口腔其他'    .
  gs_fieldcat-emphasize =                        'C710'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZMF_IMPLANTS'     'ZMF_IMPLANTS'     '毛发-毛发种植'    .
  gs_fieldcat-emphasize =                        'C710'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZMF_ARTISTIC_IM'  'ZMF_ARTISTIC_IM'  '毛发-艺术种植'    .
  gs_fieldcat-emphasize =                        'C710'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZMF_ANTI_AGING'   'ZMF_ANTI_AGING'   '毛发-头皮抗衰'    .
  gs_fieldcat-emphasize =                        'C710'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZMF_OTHER'        'ZMF_OTHER'        '毛发-头皮其他'    .
  gs_fieldcat-emphasize =                        'C600'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZYJK_TCM'         'ZYJK_TCM'         '亚健康管理-中医理疗' .
  gs_fieldcat-emphasize =                        'C600'.
  gs_fieldcat-do_sum    =                        'X'.
  PERFORM               set_fieldcat             USING   'ZMCT_PL' 'ZYJK_SPA'         'ZYJK_SPA'         '亚健康管理SPA'   .

ENDFORM .                    "frm_set_fieldcat

*&---------------------------------------------------------------------*
*&      Form  frm_user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM    text
*      -->R_SELFIELD text
*----------------------------------------------------------------------*
FORM frm_user_command USING r_ucomm LIKE sy-ucomm
      r_selfield TYPE slis_selfield.

  DATA: lo_alv TYPE REF TO cl_gui_alv_grid.

  CLEAR:gv_msg_return,gv_msg_reset.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = lo_alv.

  CALL METHOD lo_alv->check_changed_data.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CASE r_ucomm.
    WHEN 'CONFIRM'."确认
      IF sy-mandt = '210' AND sy-uname = 'CHENK'..
        sy-uname = con_pernr.
      ENDIF.
      PERFORM b_confirm.
    WHEN 'RESET'."取消确认
      PERFORM b_reset.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'DEL'.
      PERFORM b_del.
    WHEN 'EXIT'.
      LEAVE PROGRAM.
    WHEN '&IC1'.
    WHEN '&F03'.
      LEAVE TO SCREEN 0.
    WHEN '&F15' OR '&F12'.
      LEAVE PROGRAM.
      CLEAR gs_show.
      READ TABLE gt_show INTO gs_show INDEX r_selfield-tabindex.
      IF r_selfield-fieldname = 'MANDT'.
        CALL TRANSACTION 'SCC4'. "查看集团信息
      ENDIF.
  ENDCASE.

  r_selfield-refresh = 'X'.

ENDFORM.                    "user_command

*&---------------------------------------------------------------------*
*&      Form  set_fieldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE(P_0546)  text
*      -->VALUE(P_0547)  text
*      -->VALUE(P_0548)  text
*      -->VALUE(P_0549)  text
*----------------------------------------------------------------------*
FORM set_fieldcat  USING   value(p_0546) value(p_0547)  value(p_0548) value(p_0549).
* GS_fieldcat-just = 'l'."对其方式,L表示左对齐
  gs_fieldcat-ref_table = p_0546  .
  gs_fieldcat-ref_field = p_0547  .
  gs_fieldcat-fieldname = p_0548 .
  gs_fieldcat-coltext   = p_0549 .
  gs_fieldcat-seltext   = p_0549 .
  APPEND gs_fieldcat TO gt_fieldcat.
  CLEAR gs_fieldcat.
ENDFORM.                    " SET_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  B_RESET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM b_reset .
  DATA: lv_answer TYPE c.
  DATA:lt_zmct_pl LIKE TABLE OF zmct_pl WITH HEADER LINE.
  gv_msg_return = '取消确认操作成功!'.
  gv_msg_reset = '将撤销【此界面下】的所有确认过的的数据 ,是否继续!!!'.

  LOOP AT gt_show INTO gs_show WHERE sel = 'X'..
  ENDLOOP.
  IF sy-subrc NE 0 .
    MESSAGE s000(z01fi)  WITH '请选择行项目!!!' DISPLAY LIKE 'E'.
    RETURN.
  ENDIF.

  PERFORM popup_to_confirm IN PROGRAM zabap_sedi_forms USING  gv_msg_reset  ' ' CHANGING lv_answer. "1是/2否/A取消
  CHECK lv_answer = '1'.

  LOOP AT gt_show INTO gs_show WHERE sel = 'X'..
    gs_show-sep_flag = icon_green_light.
    gs_show-msg  = gv_msg_return.

    gs_show-zspr  = sy-uname.
    gs_show-zsprq  = sy-datum.
    gs_show-zspsj  = sy-uzeit .
    gs_show-zspzt  = 'X'.

    PERFORM get_domain_ddtext(zabap_sedi_forms) USING 'ZSPZT' lt_zmct_pl-zspzt   CHANGING lt_zmct_pl-zspzt_txt .

    UPDATE zmct_pl SET zspr = ''  zsprq = ''  zspsj = ''   zspzt = 'N' zspzt_txt = '未审核'
    "//---------------------------------------------------
    zspr_1 = ''  zsprq_1 = ''  zspsj_1 = ''   zspzt_1 = ' '
    zspr_2 = ''  zsprq_2 = ''  zspsj_2 = ''   zspzt_2 = ' '
    zspr_3 = ''  zsprq_3 = ''  zspsj_3 = ''   zspzt_3 = ' '
    zspr_4 = ''  zsprq_4 = ''  zspsj_4 = ''   zspzt_4 = ' '
    zspr_5 = ''  zsprq_5 = ''  zspsj_5 = ''   zspzt_5 = ' '
    zspr_6 = ''  zsprq_6 = ''  zspsj_6 = ''   zspzt_6 = ' '
    "//---------------------------------------------------
    WHERE jgbm             = gs_show-jgbm
    AND  qdsj              = gs_show-qdsj
    AND  zqdej             = gs_show-zqdej
    AND  gjahr             = gs_show-gjahr
    AND  smon              = gs_show-smon
    AND  zvalue_typ        = gs_show-zvalue_typ        .
    gs_show-zspzt_txt = icon_red_light.
    gs_show-sep_flag = icon_green_light.
    gs_show-zspzt =  'N'.
    CLEAR:gs_show-zspr,gs_show-zsprq,gs_show-zspsj, gs_show-zspr_ygnam.
    COMMIT WORK AND WAIT.
    MODIFY gt_show FROM  gs_show.CLEAR gs_show.
  ENDLOOP.


ENDFORM.                    " B_RESET
*&---------------------------------------------------------------------*
*&      Form  set_fieldcat1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE(P_0548)  text
*      -->VALUE(P_0549)  text
*----------------------------------------------------------------------*
FORM set_fieldcat1  USING    value(p_0548)
      value(p_0549).
*   WA_FIELDCAT-JUST = 'L'."对其方式,L表示左对齐
  gs_fieldcat-fieldname = p_0548 .
  gs_fieldcat-coltext   = p_0549 .
  gs_fieldcat-seltext   = p_0549 .
  APPEND gs_fieldcat TO gt_fieldcat.
  CLEAR gs_fieldcat.
ENDFORM.                    " SET_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  B_DEL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM b_del .
  DATA:lv_value  TYPE char1.
  DATA:lt_zmc_pl TYPE TABLE OF zmct_pl WITH HEADER LINE.

  LOOP AT gt_show INTO gs_show WHERE sel IS NOT INITIAL.
    MOVE-CORRESPONDING gs_show TO lt_zmc_pl.
    IF gs_show-zspzt = 'X'   .
      lv_value = 'X'.
      EXIT.
    ENDIF.

    DO 6 TIMES.
      CLEAR:lv_value1,lv_name.
      lv_index1 = sy-index.
      CONDENSE lv_index1 NO-GAPS.
      CONCATENATE 'ZSPZT_'  lv_index1 INTO lv_value1.
      ASSIGN COMPONENT lv_value1 OF STRUCTURE gs_show TO <sprzt1>.
      IF sy-subrc = 0 .

        IF <sprzt1> = 'X' OR <sprzt1> = icon_checked .
          lv_value = 'X'.
          EXIT.
        ENDIF.
      ENDIF.
    ENDDO.

    APPEND lt_zmc_pl.CLEAR lt_zmc_pl.
    IF lv_value = 'X'.
      EXIT.
    ENDIF.
  ENDLOOP.
  IF sy-subrc NE 0 .
    MESSAGE e000(z01fi)  WITH '请选中行再进行操作'.
    LEAVE TO LIST-PROCESSING.
  ENDIF.

  IF lv_value = 'X'..
    MESSAGE e000(z01fi)  WITH '存在确认过的行项目,因此不能删除,请取消确认后重试!!!'.
    RETURN.
  ENDIF.
  CHECK lv_value IS INITIAL."确认过的不能删除


  IF lt_zmc_pl[] IS NOT INITIAL.
    DELETE zmct_pl FROM TABLE lt_zmc_pl.
    COMMIT WORK AND WAIT.
    IF sy-subrc = 0 .
      DELETE gt_show WHERE sel IS NOT INITIAL.
      MESSAGE s000(z01fi)  WITH '删除成功'.
    ENDIF.
  ENDIF.

ENDFORM.                    " B_DEL
*&---------------------------------------------------------------------*
*&      Form  B_CONFIRM
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM b_confirm .
  READ TABLE gt_zmct_spr   WITH KEY pernr = sy-uname    .
  IF sy-subrc NE 0.
    MESSAGE e000(z01fi)  WITH '您没有操作权限,请配置确认人后再进行操作!'.
    RETURN.
  ENDIF.

  PERFORM a_check_sp_is_it_done CHANGING lv_fieldname lv_fieldname_highest lv_spjb_now lv_spjb_highest
    lv_spr lv_sprq lv_spsj
    lv_spr_h lv_sprq_h lv_spsj_h
    gs_show
    .

  DATA:lt_zmct_pl LIKE TABLE OF zmct_pl WITH HEADER LINE.

  LOOP AT gt_show INTO  gs_show WHERE sel = 'X'..
    gs_show-sep_flag = icon_green_light.
    gs_show-msg  = gv_sp_msg.
    IF gs_show-zspzt_txt = icon_led_green.
      gs_show-msg  = '无需重复审核'..
      gs_show-sep_flag  = icon_red_light.
    ELSE.
      PERFORM a_sp_update_now_status  CHANGING gs_show."当前审批节点状态更新
    ENDIF.

    ASSIGN COMPONENT lv_fieldname_highest OF STRUCTURE  gs_show TO <spzt_high>.
    IF <spzt_high> IS ASSIGNED AND <spzt_high> = 'X'..
      gs_show-zspr  = sy-uname.
      gs_show-zsprq  = sy-datum.
      gs_show-zspsj  = sy-uzeit .
      gs_show-zspzt  = 'X'.
      gs_show-zspzt_txt  = icon_led_green.

      PERFORM a_sp_update_highest_status  CHANGING gs_show."最高节点状态更新
    ENDIF.


    MOVE-CORRESPONDING gs_show TO lt_zmct_pl.

    PERFORM get_domain_ddtext(zabap_sedi_forms) USING 'ZSPZT' lt_zmct_pl-zspzt   CHANGING lt_zmct_pl-zspzt_txt .
    macro_stauts gs_show zspzt_1 .
    macro_stauts gs_show zspzt_2 .
    macro_stauts gs_show zspzt_3 .
    macro_stauts gs_show zspzt_4 .
    macro_stauts gs_show zspzt_5 .
    macro_stauts gs_show zspzt_6 .
    MODIFY gt_show FROM gs_show .CLEAR gs_show.
    APPEND lt_zmct_pl.CLEAR lt_zmct_pl.
  ENDLOOP.
  IF sy-subrc NE 0 .

    MESSAGE s000(z01fi)  WITH '请选择行项目!!!' DISPLAY LIKE 'E'.
    RETURN.
  ELSE.
    MODIFY zmct_pl FROM TABLE lt_zmct_pl.
    COMMIT WORK AND WAIT.
  ENDIF.
ENDFORM.                    " B_CONFIRM
*&---------------------------------------------------------------------*
*&      Form  a_check_sp_is_it_done
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->LV_FIELDNAME          text
*      -->LV_FIELDNAME_HIGHEST  text
*      -->LV_SPJB_NOW           text
*      -->LV_SPJB_HIGHEST       text
*      -->LV_SPR                text
*      -->LV_SPRQ               text
*      -->LV_SPSJ               text
*      -->LV_SPR_H              text
*      -->LV_SPRQ_H             text
*      -->LV_SPSJ_H             text
*      -->GS_SHOW-MSG           text
*----------------------------------------------------------------------*
FORM a_check_sp_is_it_done  CHANGING  lv_fieldname TYPE char14
                                      lv_fieldname_highest TYPE char14
                                      lv_spjb_now TYPE zmct_spr-zspjb
                                      lv_spjb_highest TYPE zmct_spr-zspjb

                                      lv_spr     TYPE char14
                                      lv_sprq    TYPE char14
                                      lv_spsj    TYPE char14
                                      lv_spr_h   TYPE char14
                                      lv_sprq_h  TYPE char14
                                      lv_spsj_h  TYPE char14
                                      gs_show-msg
  .

  CLEAR:lv_fieldname,lv_fieldname_highest,lv_spjb_now, lv_spjb_highest.
  CLEAR:lv_spr,lv_sprq,lv_spsj, lv_spr_h,lv_sprq_h,lv_spsj_h.
  CLEAR:lv_spjb_now_txt.
  CLEAR:gv_sp_msg.

  "--- 最高审批节点是否审批完成 ---
  SORT gt_zmct_spr BY zspjb DESCENDING.
  READ TABLE gt_zmct_spr  INDEX 1   .
  IF sy-subrc = 0 .
    lv_spjb_highest = gt_zmct_spr-zspjb.
    CONCATENATE  'ZSPZT_' gt_zmct_spr-zspjb INTO lv_fieldname_highest.
    CONCATENATE  'ZSPR_' gt_zmct_spr-zspjb INTO lv_spr_h.
    CONCATENATE  'ZSPRQ_' gt_zmct_spr-zspjb INTO lv_sprq_h.
    CONCATENATE  'ZSPSJ_' gt_zmct_spr-zspjb INTO lv_spsj_h.
  ENDIF.

  "--- 当前审批节点 ---
  READ TABLE gt_zmct_spr   WITH KEY pernr = sy-uname    .
  IF sy-subrc = 0.
    CONCATENATE  'ZSPZT_' gt_zmct_spr-zspjb INTO lv_fieldname.
    lv_spjb_now = gt_zmct_spr-zspjb.

    CONCATENATE  'ZSPR_'  lv_spjb_now INTO lv_spr .
    CONCATENATE  'ZSPRQ_' lv_spjb_now INTO lv_sprq.
    CONCATENATE  'ZSPSJ_' lv_spjb_now INTO lv_spsj.

    PERFORM get_domain_ddtext(zabap_sedi_forms) USING 'ZSPJB' lv_spjb_now   CHANGING lv_spjb_now_txt .
  ENDIF.


  "//---------------------------------------------------
  DATA:lv_end TYPE char15.
  IF lv_spjb_now = lv_spjb_highest.
    lv_end = '流程结束'.
  ENDIF.
  CONCATENATE '&'  lv_spjb_now_txt  '确认成功'  '&' lv_end INTO gv_sp_msg.


ENDFORM.                    " A_CHECK_SP_IS_IT_DONE
*&---------------------------------------------------------------------*
*&      Form  a_sp_update_highest_status
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->gs_show  text
*----------------------------------------------------------------------*
FORM a_sp_update_highest_status  CHANGING gs_show.
  ASSIGN COMPONENT lv_fieldname_highest OF STRUCTURE  gs_show TO <spzt>.
  IF sy-subrc = 0 ."审批状态
    <spzt> = 'X'.
  ENDIF.


  ASSIGN COMPONENT lv_spr_h OF STRUCTURE  gs_show TO <spr>.
  IF sy-subrc = 0 .
    <spr> = sy-uname.
  ENDIF.

  ASSIGN COMPONENT lv_sprq_h OF STRUCTURE  gs_show TO <sprq>.
  IF sy-subrc = 0 .
    <sprq> = sy-datum.
  ENDIF.

  ASSIGN COMPONENT lv_spsj_h OF STRUCTURE  gs_show TO <spsj>.
  IF sy-subrc = 0 .
    <spsj> = sy-uzeit.
  ENDIF.
ENDFORM.                    " A_SP_UPDATE_HIGHEST_STATUS
*&---------------------------------------------------------------------*
*&      Form  a_sp_update_now_status
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->GS_SHOW    text
*----------------------------------------------------------------------*
FORM a_sp_update_now_status  CHANGING gs_show.

  ASSIGN COMPONENT lv_fieldname OF STRUCTURE  gs_show TO <spzt>.
  IF sy-subrc = 0 ."审批状态
    <spzt> = 'X'.
  ENDIF.


  ASSIGN COMPONENT lv_spr OF STRUCTURE  gs_show TO <spr>.
  IF sy-subrc = 0 .
    <spr> = sy-uname.
  ENDIF.

  ASSIGN COMPONENT lv_sprq OF STRUCTURE  gs_show TO <sprq>.
  IF sy-subrc = 0 .
    <sprq> = sy-datum.
  ENDIF.

  ASSIGN COMPONENT lv_spsj OF STRUCTURE  gs_show TO <spsj>.
  IF sy-subrc = 0 .
    <spsj> = sy-uzeit.
  ENDIF.
ENDFORM.                    " A_SP_UPDATE_NOW_STATUS
View Code

 

posted @ 2023-02-09 17:54  蜡哲图  阅读(27)  评论(0编辑  收藏  举报
目录内容