SAP检验批次批量取消程序示例(备份)

=>Reference

1. 概览

  • 选择界面
    1
  • 取消UD
    2
  • 冲销移动
    3

2. 程序

  • 主程序

    	*----------------------------------------------------------------------*
    	* 参照类型定义
    	*----------------------------------------------------------------------*
    	TYPES:
    	
    	  BEGIN OF typ_data,
    	    box    TYPE c,
    	    zjypc  TYPE qals-prueflos   , "检验批次
    	    budat  TYPE qals-budat,       "过账日期
    	    zart   TYPE qals-art        , "检验类型
    	    matnr  TYPE qals-matnr      , "物料
    	    maktx  TYPE makt-maktx      , "物料名称
    	    charg  TYPE qals-charg      , "批次
    	    werk   TYPE qals-werk       , "工厂
    	    endat  TYPE qals-enstehdat  , "批次创建日期
    	    lmeng  TYPE qals-losmenge   , "检验批数量
    	    menge  TYPE qals-mengeneinh , "基本计量单位
    	    pterm  TYPE qals-pastrterm  , "检验开始
    	    pzeit  TYPE qals-paendzeit  , "检验结束
    	    lgort  TYPE qals-lagortchrg , "库存地点
    	    lifnr  TYPE qals-lifnr      , "供应商
    	    ebeln  TYPE qals-ebeln      , "采购凭证
    	    mblnr  TYPE qals-mblnr      , "物料凭证
    	    aufnr  TYPE qals-aufnr      , "订单
    	    kunnr  TYPE qals-kunnr      , "客户
    	    kdauf  TYPE qals-kdauf      , "销售订单
    	    stat35 TYPE qals-stat35,
    	  END OF typ_data.
    	
    	TABLES:qals.
    	
    	*----------------------------------------------------------------------*
    	* 全局变量定义
    	*----------------------------------------------------------------------*
    	DATA: gv_grid TYPE REF TO cl_gui_alv_grid.
    	
    	*----------------------------------------------------------------------*
    	* 全局内表定义
    	*----------------------------------------------------------------------*
    	DATA:
    	gt_data TYPE STANDARD TABLE OF typ_data.
    	
    	*----------------------------------------------------------------------*
    	* ALV定义
    	*----------------------------------------------------------------------*
    	DATA:
    	  gs_layout_lvc   TYPE lvc_s_layo,                             "显示布局参数
    	  gt_fieldcat_lvc TYPE lvc_t_fcat WITH HEADER LINE,            "显示字段表
    	  gs_fieldcat_lvc LIKE gt_fieldcat_lvc,                        "显示字段表结构
    	  gv_repid        LIKE sy-repid.                               "程序名
    	
    	*----------------------------------------------------------------------*
    	*SELECT-OPTIONS/选择屏幕
    	*----------------------------------------------------------------------*
    	SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE l_title1.
    	SELECT-OPTIONS:
    	              s_zjyp  FOR qals-prueflos,                                "检验批
    	              s_zpcrq FOR qals-enstehdat,                               "批次创建日期
    	              s_zjyks FOR qals-pastrterm,                               "检验开始
    	              s_zjyjs FOR qals-paendterm,                               "检验结束
    	              s_werk  FOR qals-werk,                                    "工厂
    	              s_art   FOR qals-art,                                     "检验类型
    	              s_matnr FOR qals-matnr,                                   "物料
    	              s_charg FOR qals-charg,                                   "批次
    	              s_lifnr FOR qals-lifnr,                                   "供应商
    	              s_kunnr FOR qals-kunnr,                                   "客户
    	              s_mblnr FOR qals-mblnr,                                   "物料凭证
    	              s_kdauf FOR qals-kdauf.                                   "销售订单
    	SELECTION-SCREEN END OF BLOCK b1.
    	
    	*----------------------------------------------------------------------*
    	*INITIALIZATION
    	*----------------------------------------------------------------------*
    	INITIALIZATION.
    	  l_title1 = '选择条件'.
    	
    	*----------------------------------------------------------------------*
    	*START-OF-SELECTION/主处理
    	*----------------------------------------------------------------------*
    	START-OF-SELECTION.
    	*主处理
    	  PERFORM frm_main_proc.
    	  PERFORM frm_display_data.
    	
    	*&---------------------------------------------------------------------*
    	*& Form FRM_MAIN_PROC
    	*&---------------------------------------------------------------------*
    	FORM frm_main_proc .
    	
    	  SELECT  qals~prueflos AS zjypc
    	          qals~art AS zart
    	          qals~matnr
    	          makt~maktx
    	          qals~charg
    	          qals~werk
    	          qals~enstehdat AS endat
    	          qals~losmenge AS lmeng
    	          qals~mengeneinh AS menge
    	          qals~pastrterm AS pterm
    	          qals~paendzeit AS pzeit
    	          qals~lagortchrg AS lgort
    	          qals~lifnr
    	          qals~ebeln
    	          qals~mblnr
    	          qals~aufnr
    	          qals~kunnr
    	          qals~kdauf
    	          qals~stat35
    	    INTO CORRESPONDING FIELDS OF TABLE gt_data
    	    FROM qals
    	   INNER JOIN makt
    	      ON qals~matnr = makt~matnr
    	   WHERE qals~prueflos  IN s_zjyp
    	     AND qals~enstehdat IN s_zpcrq
    	     AND qals~pastrterm IN s_zjyks
    	     AND qals~paendterm IN s_zjyjs
    	     AND qals~werk      IN s_werk
    	     AND qals~art       IN s_art
    	     AND qals~matnr     IN s_matnr
    	     AND qals~charg     IN s_charg
    	     AND qals~lifnr     IN s_lifnr
    	     AND qals~kunnr     IN s_kunnr
    	     AND qals~mblnr     IN s_mblnr
    	     AND qals~kdauf     IN s_kdauf.
    	
    	ENDFORM.
    	*&---------------------------------------------------------------------*
    	*& Form FRM_DISPLAY_DATA
    	*&---------------------------------------------------------------------*
    	FORM frm_display_data .
    	
    	  CLEAR gt_fieldcat_lvc.
    	  REFRESH gt_fieldcat_lvc.
    	  PERFORM frm_fill_field USING:
    	         'ZJYPC' '检验批次',
    	         'BUDAT' '冲销日期',
    	         'ZART ' '检验类型',
    	         'MATNR' '物料',
    	         'MAKTX' '物料名称',
    	         'CHARG' '批次',
    	         'WERK ' '工厂',
    	         'ENDAT' '批次创建日期',
    	         'LMENG' '检验批数量',
    	         'MENGE' '基本计量单位',
    	         'PTERM' '检验开始',
    	         'PZEIT' '检验结束',
    	         'LGORT' '库存地点',
    	         'LIFNR' '供应商',
    	         'EBELN' '采购凭证',
    	         'MBLNR' '物料凭证',
    	         'AUFNR' '订单',
    	         'KUNNR' '客户',
    	         'KDAUF' '销售订单'.
    	
    	
    	  gs_layout_lvc-cwidth_opt = 'X'.                                       "宽度自动优化
    	  gs_layout_lvc-zebra      = 'X'.
    	  gs_layout_lvc-box_fname  = 'BOX'.                                     "定义选择行
    	  gv_repid = sy-repid.                                                  "当前程序名
    	
    	  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    	    EXPORTING
    	      i_callback_program       = gv_repid
    	      i_callback_pf_status_set = 'PF_STATUS_SET'
    	      i_callback_user_command  = 'USER_COMMAND'
    	      is_layout_lvc            = gs_layout_lvc
    	      it_fieldcat_lvc          = gt_fieldcat_lvc[]
    	      i_save                   = 'A'
    	    TABLES
    	      t_outtab                 = gt_data
    	    EXCEPTIONS
    	      program_error            = 1
    	      OTHERS                   = 2.
    	
    	ENDFORM.
    	*&---------------------------------------------------------------------*
    	*& Form FRM_FILL_FIELD
    	*&---------------------------------------------------------------------*
    	FORM frm_fill_field  USING p1 p2.
    	
    	  CLEAR gs_fieldcat_lvc.
    	  gs_fieldcat_lvc-fieldname     = p1.
    	  gs_fieldcat_lvc-scrtext_m     = p2.
    	
    	  CASE p1.
    	    WHEN 'MATNR'.
    	      gs_fieldcat_lvc-no_zero = 'X'.
    	    WHEN 'BUDAT'.
    	      gs_fieldcat_lvc-edit      = 'X'.
    	      gs_fieldcat_lvc-ref_table = 'QALS'.
    	      gs_fieldcat_lvc-ref_field = 'BUDAT'.
    	  ENDCASE.
    	  APPEND gs_fieldcat_lvc TO gt_fieldcat_lvc.
    	
    	ENDFORM.
    	*&---------------------------------------------------------------------*
    	*& Form FRM_SET_STATUS
    	*&---------------------------------------------------------------------*
    	*& 界面按钮设置
    	*&---------------------------------------------------------------------*
    	FORM pf_status_set USING it_extab TYPE slis_t_extab.
    	  SET PF-STATUS 'STANDARD_FULLSCREEN'.
    	ENDFORM.
    	*&---------------------------------------------------------------------*
    	*& Form USER_COMMAND
    	*&---------------------------------------------------------------------*
    	*& 用户按钮控制
    	*&---------------------------------------------------------------------*
    	FORM user_command USING iw_ucomm    TYPE sy-ucomm
    	                        is_selfield TYPE slis_selfield.
    	
    	  IF gv_grid IS INITIAL.
    	    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    	      IMPORTING
    	        e_grid = gv_grid.
    	  ENDIF.
    	
    	  CALL METHOD gv_grid->check_changed_data.
    	
    	  CASE iw_ucomm.
    	    WHEN 'ZUNDO_UD'.
    	      PERFORM frm_cancel_ud.
    	    WHEN 'ZUNDO_MIGO'.
    	      PERFORM frm_cancel_mvtpost.
    	  ENDCASE.
    	
    	  is_selfield-refresh    = 'X'.
    	  is_selfield-col_stable = 'X'.
    	  is_selfield-row_stable 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值