【无标题】SAP-MM物料检验分步过账z

news/2024/10/11 17:40:18/

在项目中,QM过账检验完成会一步过账,但实际业务部门需要质检只判定是否合格,仓库进行过账。

第一步ZQM006 质检判定

上图中选择合格,那么默认进入页面的使用决策代码为合格,如下图

如果勾选不合格,默认代码为ZR拒绝。

此处的出现让步接收数量,没有让步金额,金额是按物料金额比例,由财务人员在发票校验时进行扣除,例如小于500按2%扣除,大于500按3%扣除等。

选择行,对合格数量、让步接收数量、返回供应商数量、使用决策代码、仓位进行填写,完成后点击"使用决策”即可完成UD判定。

*&---------------------------------------------------------------------*
*& 程序名  : <ZQM006>                                                  *
*& 标题    : <检验物料过账>                                            *
*& 模块名  : </QM>                                                     *
*& 创建者  : <>                                                  *
*& 创建日期: <2018.06.19>                                               *
*& 程序类型: <表单打印程序>                                             *
*& SAP版本 : ECC 6.0                                                   *
*& 单元ID  : <单元ID>                                                  *
*& 描述    : <>           *
*&---------------------------------------------------------------------*
*& 更改日志                                                            *
*&                                                                     *
*& 日志号      日期     更改者    传输请求号    更改描述                 *
*& ------   ----------  ------  ---------------------------------------*
*& 0000        <>       <更改者>   <传输请求号>    <更改描述>            *
*&                                                               *
*&---------------------------------------------------------------------*
REPORT ZQM006.
************************************TOP
TYPE-POOLS:slis.                   "for alv

DATA:
      it_sortinfo TYPE slis_t_sortinfo_alv   WITH HEADER LINE,  "ALV排序信息
      it_colour   TYPE slis_t_specialcol_alv WITH HEADER LINE,  "ALV列颜色
      it_events   TYPE slis_t_event          WITH HEADER LINE,  "ALV事件
      it_event_exit TYPE slis_t_event_exit   WITH HEADER LINE,
      it_listcomm TYPE slis_t_listheader     WITH HEADER LINE,  "ALV表头
      gt_fieldcat TYPE slis_t_fieldcat_alv ,
      gs_fieldcat LIKE LINE OF gt_fieldcat,
      gs_layout   TYPE slis_layout_alv.                         "ALV layout

* 变量
DATA: g_repid LIKE sy-repid,
      g_tabix TYPE i.

* 表
TABLES:QALS,MAKT,qave,ZQM006,MARA,marc.

*定义主内表
DATA:BEGIN OF GS_ALV  .
      include TYPE ZQM006.
DATA: BOX TYPE C,
      STATUS TYPE C,
      PRNDATE TYPE DATS,         "打印日期
      PRNTIME TYPE TIMS,         "打印时间
      ERNAM  TYPE EKKO-ERNAM,    "采购订单创建者
     END OF GS_ALV .
DATA:GT_ALV LIKE TABLE OF GS_ALV WITH HEADER LINE.

DATA:BEGIN OF GS_LIST  .
      include TYPE ZQM006.
DATA: BOX TYPE C,
      STATUS TYPE C,
      PRNDATE TYPE DATS,         "打印日期
      PRNTIME TYPE TIMS,         "打印时间
      ERNAM  TYPE EKKO-ERNAM,    "采购订单创建者
     END OF GS_LIST .
DATA:GT_LIST LIKE TABLE OF GS_LIST WITH HEADER LINE.

DATA:BEGIN OF LT_MARC OCCURS 0,
       MATNR LIKE MARC-MATNR ,
       WERKS LIKE MARC-WERKS ,
       CGYUAN LIKE MARC-CGYUAN ,
       CWEI  LIKE  MARC-CWEI,

     END OF LT_MARC .
DATA:LS_MARC LIKE LT_MARC .

DATA:LT_ZMM010_PRN TYPE TABLE OF ZMM010_PRN,
     LS_ZMM010_PRN TYPE ZMM010_PRN .

DATA:LT_EKKO TYPE TABLE OF EKKO ,
     LS_EKKO TYPE EKKO .

DATA:GS_QA11 LIKE ZQM006 .


*alv选择屏幕
SELECTION-SCREEN  BEGIN  OF  BLOCK  blk01  WITH  FRAME TITLE text-001.

SELECT-OPTIONS:
                  p_lifnr     FOR qals-lifnr,                  "供应商
                  p_ebeln     FOR qals-ebeln,                  "采购订单
                  p_werk      FOR qals-werk  DEFAULT '1000',   "工厂
                  p_dat       FOR qals-enstehdat ,             "检验批建立日期
                  p_matnr     FOR qals-matnr,                  "物料号
                  p_pru       FOR qals-prueflos.               "检验批号

PARAMETERS: P_TBMAX      TYPE  TBMAXSEL DEFAULT '1000'.         "最大选择条目数
PARAMETERS: p_1   RADIOBUTTON GROUP g1,                        " 合格
            p_2   RADIOBUTTON GROUP g1.                        "不合格

SELECTION-SCREEN  END  OF  BLOCK  blk01.

*事件处理
INITIALIZATION. "初始化

  PERFORM init_data.
*
*AT SELECTION-SCREEN.  "数据验证
*  PERFORM  validata_selection.

*ALV
START-OF-SELECTION.       "开始执行事件
  PERFORM get_data.      "取得数据
*  PERFORM process_data.  "数据处理

END-OF-SELECTION.
  PERFORM output_data.   "数据输出
*&---------------------------------------------------------------------*
*&      Form  INIT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM INIT_DATA .
  g_repid = sy-repid.
  g_tabix = sy-index.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA .
  DATA: BEGIN OF lt_lgort OCCURS 0,
          ebeln type EKPO-EBELN,           "采购订单
          ebelp type EKPO-EBELP,           "行项目
          LGORT type EKPO-LGORT,           "库存地点
        END OF lt_lgort.

      SELECT
         qals~enstehdat        "送检日期
         qals~prueflos         "检验批
         qals~werk             "工厂
         qals~matnr            "物料编码
         qals~KTEXTMAT         "检验对象的短文本
         mara~BISMT            "K3图号
         qals~losmenge         "送检数量
         qals~mengeneinh       "单位
         qals~ebeln            "采购订单
         qals~EBELP            "采购凭证的项目编号
         qals~lifnr            "供应商
         lfa1~NAME1            "名称
         qals~MBLNR            "物料凭证编号
         qals~ZEILE            "物料凭证中的项目
         qals~BUDAT            "凭证中的过帐日期
         qals~BWART            "移动类型(库存管理)
         qals~objnr            "对象号
         qals~LMENGE01         "非限制使用库存
         qals~LMENGE04         "过帐到冻结库存的数量(次品)
         qals~LMENGE07         "返回给供应商的数量
         qals~LMENGEZUB        "必须过帐的数量
         qals~STAT20           "要求的检验计划
         qals~STAT34           "库存记帐完成
         qals~STAT35           "作出使用决策
         qals~LAGORTVORG       "收货仓位
         qals~ERSTELLER        "创建者(MIGO收货产生检验批)
         qals~ERSTELDAT        "创建日期
         qals~ERSTELZEIT       "批量创建时间

         makt~maktx             "物料描述
     UP TO P_TBMAX  ROWS
     INTO CORRESPONDING FIELDS OF TABLE gt_alv
     FROM qals
     INNER JOIN makt  ON qals~matnr = makt~matnr AND SPRAS = '1'
     INNER JOIN mara  ON qals~matnr = mara~matnr
     INNER JOIN LFA1  ON qals~LIFNR = lfa1~LIFNR
                WHERE qals~enstehdat   IN p_dat     "检验批建立日期
                AND  qals~werk         IN p_werk    "工厂
                AND  qals~matnr        IN p_matnr   "物料号
                AND  qals~prueflos     IN p_pru     "检验批号
                AND  qals~lifnr        IN p_lifnr
                AND  qals~ebeln        IN p_ebeln
                AND  qals~stat20 = ''
                AND  qals~stat34 = ''
                AND  qals~stat35 = ''
                AND  qals~LMENGEZUB <> 0   .

*---------------- change by chenwei 200602
     SORT gt_alv BY ebeln ebelp.

    IF gt_alv[] IS NOT INITIAL .
      SELECT ebeln ebelp lgort INTO CORRESPONDING FIELDS OF TABLE lt_lgort
        FROM ekpo FOR ALL ENTRIES IN gt_alv
        WHERE ebeln = gt_alv-ebeln AND ebelp = gt_alv-ebelp.
      SORT lt_lgort by ebeln ebelp.

      LOOP at gt_alv.
        READ TABLE lt_lgort WITH KEY ebeln = gt_alv-ebeln ebelp = gt_alv-ebelp BINARY SEARCH.
        IF  sy-subrc = 0.
          gt_alv-lagortvorg = lt_lgort-lgort .
        ENDIF.
        MODIFY gt_alv.
      endloop.

    endif.
*---------------- 更新检验库存地点到表ZQM006中

    SORT GT_ALV BY prueflos .

 IF GT_ALV[] IS NOT INITIAL .
  SELECT MATNR WERKS CGYUAN CWEI  INTO CORRESPONDING FIELDS OF TABLE LT_MARC FROM MARC
          FOR ALL ENTRIES IN  GT_ALV
         WHERE  MATNR = GT_ALV-MATNR AND WERKS = GT_ALV-WERK .

 SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_ZMM010_PRN FROM ZMM010_PRN
          FOR ALL ENTRIES IN GT_ALV
          WHERE MBLNR = GT_ALV-MBLNR .

SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_EKKO FROM EKKO
         FOR ALL ENTRIES IN GT_ALV
         WHERE EBELN = GT_ALV-EBELN AND LOEKZ = ''.

 ENDIF .

  IF GT_ALV[] IS NOT INITIAL .
     LOOP AT  GT_ALV INTO GS_ALV.
       READ TABLE LT_MARC WITH KEY MATNR = GS_ALV-MATNR WERKS = GS_ALV-WERK .
       IF  SY-SUBRC = 0.
          GS_ALV-CGYUAN = LT_MARC-CGYUAN .
          GS_ALV-CWEI   = LT_MARC-CWEI  .
       ENDIF.

   IF LT_ZMM010_PRN IS NOT INITIAL .
     READ TABLE LT_ZMM010_PRN INTO LS_ZMM010_PRN WITH KEY MBLNR = GS_ALV-MBLNR .
     IF SY-SUBRC = 0.
       GS_ALV-PRNDATE = LS_ZMM010_PRN-PRNDATE .
       GS_ALV-PRNTIME = LS_ZMM010_PRN-PRNTIME .

     ENDIF.

   ENDIF.

   IF  LT_EKKO IS NOT INITIAL .
      READ TABLE LT_EKKO INTO LS_EKKO WITH KEY EBELN = GS_ALV-EBELN .
      IF SY-SUBRC = 0.
         GS_ALV-ERNAM = LS_EKKO-ERNAM .
      ENDIF.
   ENDIF.

       MODIFY GT_ALV FROM  GS_ALV TRANSPORTING CGYUAN CWEI PRNDATE PRNTIME ERNAM .
     ENDLOOP.
   ENDIF .




   CHECK GT_ALV[] IS NOT INITIAL .

   IF P_1 = 'X' .
     LOOP AT GT_ALV INTO GS_ALV .
      IF GS_ALV-WERK = '1000' OR  GS_ALV-WERK = 'H020' .
       GS_ALV-LMENGE01  = GS_ALV-losmenge .
       GS_ALV-VCODE     = 'ZA1' .
       GS_ALV-VCODEGRP  = '01' .
       GS_ALV-QKENNZAHL = '100' .
       ELSE .
       GS_ALV-LMENGE01  = GS_ALV-losmenge .
       GS_ALV-VCODE     = 'A' .
       GS_ALV-VCODEGRP  = '01' .
       GS_ALV-QKENNZAHL = '100' .
       ENDIF .
       MODIFY GT_ALV FROM GS_ALV TRANSPORTING LMENGE01 VCODE VCODEGRP QKENNZAHL .
     ENDLOOP .
   ELSE .
     LOOP AT GT_ALV INTO GS_ALV .
      IF GS_ALV-WERK = '1000'  OR  GS_ALV-WERK = 'H020' .
       GS_ALV-LMENGE07 = GS_ALV-losmenge .
       GS_ALV-VCODE     = 'ZR' .
       GS_ALV-VCODEGRP  = '01' .
       GS_ALV-QKENNZAHL = '1' .
      ELSE .
       GS_ALV-LMENGE07 = GS_ALV-losmenge .
       GS_ALV-VCODE     = 'R' .
       GS_ALV-VCODEGRP  = '01' .
       GS_ALV-QKENNZAHL = '1' .
      ENDIF .
       MODIFY GT_ALV FROM GS_ALV TRANSPORTING LMENGE07 VCODE VCODEGRP QKENNZAHL .
     ENDLOOP .

   ENDIF .

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  OUTPUT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM OUTPUT_DATA .
    PERFORM build_events. "创建事件集
    PERFORM build_event_exit.

  gs_layout-zebra = 'X'.
*  gs_layout-colwidth_optimize = 'X'.
  PERFORM fieldcat_int USING :
     'BOX'          '选择'         '' '',
     'ENSTEHDAT'    '送检日期'     ''  '',
     'ERSTELZEIT'   '创建时间'     ''  '' ,
     'PRUEFLOS'     '检验批'       ''  '',
     'WERK'         '工厂'         ''  '',
     'MATNR'        '物料编码'     'MATNR'  'MARA',
     'KTEXTMAT'     '检验对象的短文本' ''  '' ,
*     'MAKTX'        '物料描述'     ''  '',
     'BISMT'        'K3图号'      '' '' ,
     'LOSMENGE'     '送检数量'     ''  '',
     'LMENGE01'     '合格数量'      ''  '' ,
     'LMENGE04'     '让步接收的数量'   ''  '' ,
     'LMENGE07'     '返回给供应商的数量'    ''  '',
     'VCODE'        '使用决策代码'  ''  '',
*     'GRUND'        '移动原因'            ''  '' ,
     'LAGORTVORG'   '收货仓位'     ''  '' ,
     'MENGENEINH'   '单位'         ''  '',
     'EBELN'        


http://www.ppmy.cn/news/1537551.html

相关文章

yolov8-melodic-cam-anconda环境配置及目标检测

1、基础环境安装 安装配置cuda、Anconda等环境&#xff0c;具体安装参考如下&#xff1a; https://blog.csdn.net/weixin_45702256/article/details/142555187 2、torch安装 下载链接&#xff1a;https://pytorch.org/ 根据配置下载对应版本&#xff0c;CUDA11.4 可用11.3下…

传统少数民族物品检测系统源码分享

传统少数民族物品检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

【学习记录】开源多模态检索/问答数据集

目录 写在前面通用多模态检索/问答数据集1. ALLaVA-4V2. LLaVA-v1.5-mix665k3. ShareGPT4V 训练数据集4. MiniGPT-4 微调数据集5. ShareGPT4V 训练数据集6. OmniCorpus7. MINT-1T 其他&#xff08;领域&#xff09;多模态检索/问答数据集1. GeoGPT4V&#xff08;用于解决几何问…

Adb端侧调试程序

adb的作用 ADB&#xff08;Android Debug Bridge&#xff09;是一个多功能的命令行工具&#xff0c;开发者和爱好者用来与安卓设备进行通信。它的主要作用包括&#xff1a; 调试应用&#xff1a;开发者可以在设备上运行和调试应用程序。传输文件&#xff1a;在电脑和安卓设备…

SpringBoot项目:前后端打包与部署(使用 Maven)

文章目录 IDEA后端打包与部署&#xff08;使用 Maven&#xff09;1. 确保 Maven 已安装&#xff0c;并引入 pom 插件2. 清理并安装项目3. 定位生成的 JAR 包和配置文件4. 创建部署文件夹5. 上传到服务器 前端打包与部署&#xff08;使用 npm&#xff09;1. 确保 Node.js 和 npm…

深度学习:基于MindSpore实现ResNet50中药分拣

ResNet基本介绍 ResNet&#xff08;Residual Network&#xff09;是一种深度神经网络架构&#xff0c;由微软研究院的Kaiming He等人在2015年提出&#xff0c;并且在ILSVRC 2015竞赛中取得了很好的成绩。ResNet主要解决了随着网络深度增加而出现的退化问题&#xff0c;即当网络…

鸿蒙OS投票机制

(基于openharmony5.0) 投票机制 param get | grep ohos.boot.time 图 投票机制参数图 只有当所有的投票完成&#xff0c;开机动画才会退出&#xff0c;整理需要投票的系统应用&#xff08;三方应用不参与投票&#xff09;如下图所示&#xff1a; 以进程foundation为例&…

UE5.3.2查看引擎真正版本

编译好的插件给别人用&#xff0c;发现引擎不一致&#xff0c;而且双方都是5.3.2版本引擎 打开Help->About Unreal Editor可以看到引擎版本 或者直接查看引擎版本文件&#xff1a;XXXXX\Engine\Build\Build.version 里面能看到对应的分支名字