zoukankan      html  css  js  c++  java
  • 选择屏幕 modif ID

    REPORT zmmr0085.
    TABLES:
      ekko,ekpo,mkpf,mseg.
    TYPES:BEGIN OF ty_po,
            ebeln TYPE ekpo-ebeln,
            ebelp TYPE ekpo-ebelp,
            bsart TYPE ekko-bsart,
            matnr TYPE ekpo-matnr,
            txz01 TYPE ekpo-txz01,
            bednr TYPE ekpo-bednr,
            werks TYPE ekpo-werks,
            lgort TYPE ekpo-lgort,
          END OF ty_po.
    DATA:gt_po TYPE STANDARD TABLE OF ty_po.
    DATA:gt_mkpf TYPE TABLE OF mkpf,
         gt_mseg TYPE TABLE OF mseg.
    DATA:gt_zmmt0060 TYPE STANDARD TABLE OF zmmt0060.

    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME .
    PARAMETERS: p_cbox TYPE AS CHECKBOX USER-COMMAND uc.
    SELECT-OPTIONS:s_budat1 FOR mkpf-budat MODIF ID b1 .
    SELECT-OPTIONS:s_cpudt FOR mkpf-cpudt MODIF ID b2 OBLIGATORY DEFAULT sy-datum,
                   s_cputm FOR mkpf-cputm MODIF ID b2,
                   s_ebeln FOR mseg-ebeln MODIF ID b2,
                   s_ebelp FOR mseg-ebelp MODIF ID b2,
                   s_mblnr FOR mkpf-mblnr MODIF ID b2,
                   s_zeile FOR mseg-zeile MODIF ID b2.
    SELECTION-SCREEN END OF BLOCK b1.

    AT SELECTION-SCREEN OUTPUT.

      LOOP AT SCREEN.
        IF p_cbox IS NOT INITIAL.
          IF screen-group1 EQ 'B2'.
            screen-active '0'.
          ENDIF.
          IF screen-group1 EQ 'B1'.
            screen-active '1'.
          ENDIF.
        ELSE.
          IF screen-group1 EQ 'B2'.
            screen-active '1'.
          ENDIF.
          IF screen-group1 EQ 'B1'.
            screen-active '0'.
          ENDIF.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.

    START-OF-SELECTION.
      IF p_cbox  IS INITIAL.
        PERFORM frm_get_matdoc.
        PERFORM frm_send_out.
      ELSE.
        PERFORM frm_delete_log.
      ENDIF.

    FORM  frm_get_matdoc.
      DATA:lt_zmmt0060 TYPE STANDARD TABLE OF zmmt0060.
      DATA:lt_mseg TYPE STANDARD TABLE OF mseg.

      SELECT * FROM zmmt0060 INTO TABLE lt_zmmt0060
      WHERE cpudt IN s_cpudt
        AND cputm IN s_cputm
        AND mblnr IN s_mblnr
        AND ebeln IN s_ebeln
        AND ebelp IN s_ebelp
        AND zeile IN s_zeile.

      SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_mseg
       FROM mseg INNER JOIN mkpf
       ON mseg~mblnr  = mkpf~mblnr
       WHERE mkpf~cpudt IN s_cpudt
         AND mkpf~cputm IN s_cputm
         AND mkpf~mblnr IN s_mblnr
         AND mseg~ebeln IN s_ebeln
         AND mseg~ebelp IN s_ebelp
         AND mseg~zeile IN s_zeile
         AND mseg~ebeln NE ''
         AND mseg~ebelp NE ''.

    *" 前台模式不检查日志表,允许重复下发
      IF sy-batch 'X'.
        SORT  lt_zmmt0060[] BY mblnr zeile.
        LOOP AT gt_mseg[] INTO DATA(ls_mseg).
          READ TABLE lt_zmmt0060 TRANSPORTING NO FIELDS WITH KEY
          mblnr = ls_mseg-mblnr zeile = ls_mseg-zeile BINARY SEARCH.
          IF sy-subrc 0.
            DELETE gt_mseg FROM ls_mseg.
          ENDIF.
        ENDLOOP.
      ENDIF.

      IF gt_mseg[] IS NOT INITIAL.
        REFRESH  lt_mseg.
        lt_mseg[] =  gt_mseg[].
        SORT lt_mseg BY mblnr .
        DELETE ADJACENT DUPLICATES FROM lt_mseg COMPARING   mblnr .
        SELECT * FROM mkpf
        INTO CORRESPONDING FIELDS OF TABLE gt_mkpf
        FOR ALL ENTRIES IN lt_mseg
        WHERE mblnr = lt_mseg-mblnr.

        REFRESH  lt_mseg.
        lt_mseg[] = gt_mseg[].
        SORT lt_mseg BY ebeln ebelp .
        DELETE ADJACENT DUPLICATES FROM lt_mseg COMPARING  ebeln ebelp.
        SELECT b~ebeln  b~ebelp a~bsart  b~matnr  b~txz01  b~bednr b~werks b~lgort
          FROM ekko AS a INNER JOIN ekpo AS b
          ON a~ebeln = b~ebeln
          INTO CORRESPONDING FIELDS OF TABLE gt_po
          FOR ALL ENTRIES IN lt_mseg
          WHERE b~ebeln = lt_mseg-ebeln
            AND b~ebelp = lt_mseg-ebelp
        AND b~loekz = space.
        SORT gt_po BY ebeln ebelp.
      ENDIF.
    ENDFORM.

    FORM  frm_send_out.
      DATA:lt_mkpf TYPE STANDARD TABLE OF mkpf,
           lt_mseg TYPE STANDARD TABLE OF mseg.
      DATA:ls_po TYPE ty_po.
      DATA:  ls_zwms02 TYPE zwms02.
      LOOP AT gt_mkpf INTO DATA(ls_mkpf).
        REFRESH: lt_mkpf,lt_mseg.
        LOOP AT gt_mseg INTO DATA(ls_msegWHERE  mblnr = ls_mkpf-mblnr.

          CLEAR ls_po.
          READ TABLE gt_po INTO ls_po WITH KEY
            ebeln = ls_mseg-ebeln ebelp = ls_mseg-ebelp BINARY SEARCH.
          CLEAR ls_zwms02.
          CALL FUNCTION 'ZMM_GET_ZWMS02'
            EXPORTING
              iv_werks  = ls_po-werks
              iv_lgort  = ls_po-lgort
    *         IV_WMSNO  =
    *         IV_OWNER  =
    *         IV_ZSTATUS2       =
    *         IV_ZZLMS  =
            IMPORTING
              os_zwms02 = ls_zwms02
            EXCEPTIONS
              not_find  1
              OTHERS    2.
          IF sy-subrc <> 0.
    * Implement suitable error handling here
          ENDIF.

          CHECK ( ls_zwms02 IS INITIAL OR ls_po-bednr '一键货权转移'AND ls_po-bsart <> 'Z011'         
    AND ls_po-bsart <> 'Z003' AND ls_po-bsart <> 'Z005'        
    AND (  ls_mseg-bwart '101'         
    OR ls_mseg-bwart '102' OR ls_mseg-bwart '161' ).       

    APPEND ls_mseg TO lt_mseg.     
    ENDLOOP.     
    IF  lt_mseg[] IS NOT INITIAL.       
    APPEND ls_mkpf TO lt_mkpf.       

    CALL FUNCTION 'ZMM_SEND_MATDOC2VC'         
    TABLES           xmkpf 
    = lt_mkpf           xmseg 
    = lt_mseg.     
    ENDIF.     
    CLEAR ls_mkpf.   

    ENDLOOP.

    ENDFORM.

  • 相关阅读:
    Docker
    Alfred Workflow
    AWS Lambda
    XPath
    WebMagic
    Splash
    Selenium
    代理服务器
    JSONPath
    Sqlserver 查询分组 记录
  • 原文地址:https://www.cnblogs.com/shilz/p/10682563.html
Copyright © 2011-2022 走看看