首页 > 其他分享 >工单主替料自动分配数量

工单主替料自动分配数量

时间:2025-01-17 18:31:05浏览次数:3  
标签:sy aufk 主替 lv lw 自动 工单 TYPE menge

*&---------------------------------------------------------------------*
*& Report ZPPR0045
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zppr0045.

TABLES:aufk.
TABLES:sscrfields,icon,rlgrap.
DATA:gt_fieldcat TYPE lvc_t_fcat,
     gw_fieldcat TYPE lvc_s_fcat,
     gv_repid    TYPE sy-repid,
     gs_layout   TYPE lvc_s_layo,
     gt_sort     TYPE lvc_t_sort,
     gw_sort     TYPE lvc_s_sort.

TYPES:BEGIN OF tys_out,
        aufnr          TYPE aufnr,
        matnr_top      TYPE matnr,
        maktx_top      TYPE maktx,
        menge_top      TYPE menge_d,
        meins_top      TYPE meins,
        posnr          TYPE aposn,
        matnr          TYPE matnr,
        maktx          TYPE maktx,
        maabc          TYPE marc-maabc,
        maabc_txt      TYPE dd07t-ddtext,
        kausf          TYPE zdekausf,
        "req_quan           TYPE menge_d,
        "withdrawn_quantity TYPE menge_d,
        entry_quantity TYPE menge_d,
        meins          TYPE meins,
        sfztl          TYPE flag,
        menge_jy       TYPE menge_d,
        werks          TYPE werks_d,
        sortf          TYPE stpox-sortf,
        alpgr          TYPE stpox-alpgr,
        alprf          TYPE stpox-alprf,
        mtype          TYPE bapi_mtype,
        msg            TYPE bapi_msg,
        rsnum          TYPE rsnum,
        rspos          TYPE rspos,
        lgort          TYPE lgort_d,
        ewahr          TYPE resb-ewahr,
        cellcolor      TYPE lvc_t_scol,
        sel(1),
      END OF tys_out.

DATA:gt_out TYPE TABLE OF tys_out,
     gw_out LIKE LINE OF gt_out.

SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS:s_aufnr FOR aufk-aufnr,
                 s_erdat FOR aufk-erdat,
                 s_ernam FOR aufk-ernam.
SELECTION-SCREEN:END OF BLOCK b1.


START-OF-SELECTION.
  BREAK yangtao.
  PERFORM frm_get_data.
  PERFORM frm_display_alv.

*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_data .

  DATA:lt_status TYPE TABLE OF jstat.
  DATA:lw_object    TYPE bapi_pp_order_objects, "objects
       lt_component TYPE TABLE OF bapi_order_component, "components.
       lw_component LIKE LINE OF lt_component. "operations
  DATA:lv_number TYPE bapi_order_key-order_number.
  DATA:lt_stpox LIKE TABLE OF stpox WITH HEADER LINE.
  DATA:lt_stpoxs LIKE TABLE OF stpox WITH HEADER LINE.
  DATA:cstmat TYPE cstmat.
  TYPES:BEGIN OF tys_mard,
          werks TYPE werks_d,
          matnr TYPE matnr,
          labst TYPE mard-labst,
          mng01 TYPE menge_d,
        END OF tys_mard.
  DATA:lt_mard       TYPE TABLE OF tys_mard,
       lw_mard       LIKE LINE OF lt_mard,
       lt_mard_total TYPE TABLE OF tys_mard,
       lw_mard_total LIKE LINE OF lt_mard_total.

  DATA(lv_flag) = VALUE flag( ).
  DATA:lr_lgort TYPE RANGE OF t001l-lgort.
  DATA:lt_mdpsx TYPE TABLE OF mdps.

  "替代料内表
  TYPES:BEGIN OF tys_tdl,
          aufnr TYPE aufnr,
          sortf TYPE stpox-sortf,
          alpgr TYPE stpox-alpgr,
          alprf TYPE stpox-alprf,
          cfbs  TYPE flag, "重复标识
          sfztl TYPE flag,
        END OF tys_tdl.
  DATA:lt_tdl TYPE TABLE OF tys_tdl.

  "替代料数量表
  TYPES:BEGIN OF tys_sl,
          aufnr          TYPE aufnr,
          sortf          TYPE stpox-sortf,
          alpgr          TYPE stpox-alpgr,
          "          alprf          TYPE stpox-alprf,
          entry_quantity TYPE menge_d,
          sfztl          TYPE flag,
        END OF tys_sl.
  DATA:lt_sl TYPE TABLE OF tys_sl.

  "主替代料唯一数量
  TYPES:BEGIN OF tys_ztl,
          aufnr          TYPE aufnr,
          matnr_top      TYPE matnr,
          sortf          TYPE stpox-sortf,
          alpgr          TYPE stpox-alpgr,
          alprf          TYPE stpox-alprf,
          entry_quantity TYPE menge_d,
          menge_jy       TYPE menge_d,
          sfztl          TYPE flag,
        END OF tys_ztl.
  DATA:lt_ztl TYPE TABLE OF tys_ztl.

  DATA:lv_menge          TYPE menge_d,
       lv_entry_quantity TYPE menge_d,
       lv_numc           TYPE numc15.

  SELECT aufk~aufnr,
         aufk~objnr,
         afpo~matnr,
         afpo~psmng,
         afpo~meins,
         aufk~werks,
         afko~stlal,
         afko~stlan
    INTO TABLE @DATA(lt_aufk)
    FROM aufk INNER JOIN afpo ON aufk~aufnr = afpo~aufnr
              INNER JOIN afko ON afko~aufnr = afpo~aufnr
    WHERE aufk~aufnr IN @s_aufnr AND
          aufk~erdat IN @s_erdat AND
          aufk~ernam IN @s_ernam AND
          aufk~auart IN ( 'ZP01','ZP02' ,'ZP08' ).

  APPEND VALUE #( sign = 'E' option = 'CP' low = 'W*' ) TO lr_lgort.

  LOOP AT lt_aufk INTO DATA(lw_aufk).
    REFRESH:lt_component,lt_status,lt_stpox,lt_stpoxs,lt_mard.
    CLEAR:lv_number .

    lw_object-components = abap_true.
    lw_object-operations = abap_true.

    CALL FUNCTION 'STATUS_READ'
      EXPORTING
        client           = sy-mandt
        objnr            = lw_aufk-objnr
      TABLES
        status           = lt_status
      EXCEPTIONS
        object_not_found = 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.

    DATA(lv_author) = VALUE flag( ).
    LOOP AT lt_status INTO DATA(lw_status).
      IF lw_status-stat = 'I0076' AND lw_status-inact = ''."如果删除的,也直接跳过
        CLEAR:lv_flag.
        EXIT.
      ENDIF.

      IF lw_status-stat = 'I0001' AND lw_status-inact = ''."只要创建激活状态的
        lv_flag = 'X'.
        EXIT.
      ENDIF.
    ENDLOOP.

    IF lv_flag = ''.
      CONTINUE.
    ENDIF.

    lv_number = lw_aufk-aufnr.

    CALL FUNCTION 'BAPI_PRODORD_GET_DETAIL'
      EXPORTING
        number        = lv_number
        order_objects = lw_object
      TABLES
        component     = lt_component.

    CLEAR:lv_flag.

    CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
      EXPORTING
        capid                 = 'PP01'
        datuv                 = sy-datum
        emeng                 = '' "'1' "p_emeng
        mehrs                 = '' "lv_mehrs  "X多层 空单层
        mtnrv                 = lw_aufk-matnr
        stlal                 = lw_aufk-stlal
        stlan                 = lw_aufk-stlan
        mdmps                 = ''
        stpst                 = 0
        werks                 = lw_aufk-werks
      IMPORTING
        topmat                = 

标签:sy,aufk,主替,lv,lw,自动,工单,TYPE,menge
From: https://blog.csdn.net/twins622/article/details/145209840

相关文章

  • windows11 远程桌面 自动断开连接原因
    前短时间始终找不到远程桌面断开连接的原因就,今天终于找到原因了原因是前段时间自己更改端口得时候,只修改了一个,导致部分数据会报错。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp和HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C......
  • Ubuntu20.04取消root账号自动登录方法触觉智能RK3568开发板演示
    Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、......
  • 基于若依框架进行TestNG接口自动化框架搭建(二)
    目录一.前言二.引入TestNg三.创建接口自动化目录结构三.引入okhttp3四.开始编写第一条接口用例一.前言    在上一章节跟着操作把代码成功运行起来,就可以跟着本章节进行接口自动化代码编写,接口自动化使用的测试框架是TestNG,大家跟着我的步骤一步步往下操......
  • 一文搞懂 systemd 服务管理:Linux 服务自动启动与重启完整教程
    言简意赅的讲解systemd服务的自动启动与重启解决的痛点在Linux系统中,systemd是管理服务的核心工具。它不仅可以让服务在系统启动时自动运行,还能实现服务的监控和自动重启功能。本文将从基础知识出发,手把手教你如何用systemd配置一个Java服务(aps-0.0.1-SNAPSHOT.jar......
  • vue2点击事件自动触发了,vue2阻止默认事件,vue2取消默认事件
    .stop:阻止事件冒泡。使用此修饰符后,父元素的相同事件不会再触发。.prevent:阻止事件的默认行为。比如,提交表单时可以使用.prevent修饰符阻止页面的刷新。.capture:使用事件捕获模式,即在父元素上触发事件处理程序,然后才在子元素上触发。默认情况下,事件是在冒泡阶段处理的。.self:......
  • 基于STM32单片机自动售货机扫码支付无人超市语音播报无线蓝牙APP/WIFI-APP控制/WIFI视
    STM32-S147语音播报+二维码付+4种商品+4路电机出货+选货+手付+库存+缺货+找零+声光+按键+TFT屏+(无线方式选择)产品功能描述:本系统由STM32F103C8T6单片机核心板、1.44寸TFT彩屏、(无线蓝牙/无线WIFI/无线视频监控模块-可选)、步进电机控制电路、语音播报模块接口、蜂鸣器报警电......
  • https证书一键自动续期,帮你解放90天限制
    前言前几天网站证书到期,发觉证书颁发每次只能90天有效期,这谁能忍受,于是乎发觉网上有免费的一键续期脚本,真正解放我们的双手。项目如下acme.sh。期间由于"墙"的原因,踩了很多的坑,此文记录一下踩坑的过程,同时也帮助我们"墙内"的程序员,不需要踩不必要的坑。1、安装acme.sh脚本官网......
  • https证书一键自动续期,帮你解放90天限制
    前言前几天网站证书到期,发觉证书颁发每次只能90天有效期,这谁能忍受,于是乎发觉网上有免费的一键续期脚本,真正解放我们的双手。项目如下acme.sh。期间由于"墙"的原因,踩了很多的坑,此文记录一下踩坑的过程,同时也帮助我们"墙内"的程序员,不需要踩不必要的坑。1、安装acme.sh脚本官网......
  • 使用 Python 实现验证码自动识别
    验证码在防止自动化攻击中扮演了重要角色,而使用OCR(光学字符识别)技术可以实现对验证码内容的自动解析和提取。在本文中,我们将使用Python结合TesseractOCR来完成英文数字验证码的识别任务。环境配置安装Python和依赖库首先,确保您已经安装了Python。若尚未安装,请访问Pyt......
  • 使用python+pytest+requests完成自动化接口测试(包括html报告的生成和日志记录以及层级
    一、API的选择我们进行接口测试需要API文档和系统,我们选择JSONPlaceholder免费API,因为它是一个非常适合进行接口测试、API测试和学习的工具。它免费、易于使用、无需认证,能够快速帮助开发者模拟常见的接口操作(增、删、改、查)。尤其对于我你们学习接口测试的初学开发者来说,它......