在SAP中通過批輸入實現揀配

來源:互聯網
上載者:User

SAP的批輸入並不複雜,本程式比較精採的是利用特殊的螢幕跳轉移動,解決了在不同解析度的機器上批輸入參數不同的問題。值得參考。

REPORT ZJP NO STANDARD PAGE HEADING LINE-SIZE 95 MESSAGE-ID Z1.
*&---------------------------------------------------------------------&
*    For CPZX Only   Programmed by Paul Feng(FQ)
*                                         Created Date 2003.06.20
*                                         Last  Modify 2004.12.10
*&---------------------------------------------------------------------&

TABLES: LIKP,LIPS,VBUP.

DATA: BEGIN OF RECORD OCCURS 0,
        VBELN(010),
        MATNR(018),
        LFIMG(013),
        PIKMG(017),
      end of record.
DATA: SENDTO(10),
      LGORT(004).

INCLUDE <ICON>.
include bdcrecx1.

SELECTION-SCREEN BEGIN OF BLOCK JHD WITH FRAME TITLE TEXT-001.

PARAMETERS: JHD(10) OBLIGATORY.

*SELECTION-SCREEN SKIP 8.

SELECTION-SCREEN END OF BLOCK JHD.

INITIALIZATION.

GET PARAMETER ID 'ZMM' FIELD GROUP.

start-of-selection.
DATA: N(4) TYPE N, LINE(2) TYPE N, JUMP TYPE N.

CONDENSE JHD NO-GAPS.

N = 10 - STRLEN( JHD ).

IF N NE 0.
   DO N TIMES.
      CONCATENATE '0' JHD INTO JHD.
   ENDDO.
ENDIF.

SELECT SINGLE * FROM LIKP WHERE VBELN EQ JHD.
IF SY-SUBRC >< 0.
   SHIFT JHD LEFT DELETING LEADING '0'.
   WRITE:/ ICON_INCOMPLETE AS ICON,
                            '交貨單' ,JHD COLOR 2,'不存在!' .
   STOP.
ELSE.
    SENDTO = LIKP-KUNNR.
ENDIF.
CLEAR LIKP.

SELECT * FROM VBUP WHERE VBELN EQ JHD AND KOSTA EQ 'C'.
   IF SY-SUBRC EQ 0.
       SHIFT JHD LEFT DELETING LEADING '0'.
       WRITE:/ ICON_MESSAGE_CRITICAL_SMALL AS ICON,
               '交貨單',JHD COLOR 2,'已經被揀配!請檢查。'.
       STOP.
   ENDIF.
ENDSELECT.
CLEAR VBUP.

CASE SENDTO.
     WHEN '0000004001'.
          LGORT = '0800'.
     WHEN '0000004002'.
          LGORT = '0801'.
     WHEN '0000004007'.
          LGORT = '0808'.
     WHEN '0000004008'.
          LGORT = '0809'.
     WHEN OTHERS.
        WRITE:/ ICON_MESSAGE_WARNING_SMALL AS ICON,
             '交貨單中“送達方”錯誤!請檢查。' COLOR 6 INVERSE.
        STOP.
ENDCASE.

SELECT * FROM LIPS WHERE VBELN EQ JHD.
      RECORD-VBELN = LIPS-VBELN.
      RECORD-MATNR = LIPS-MATNR.
      RECORD-LFIMG = LIPS-LFIMG.
      RECORD-PIKMG = LIPS-LFIMG.  "按交貨數揀配
      APPEND RECORD.
ENDSELECT.
CLEAR LIPS.

DESCRIBE TABLE RECORD LINES N.

IF N EQ 0.
   SHIFT JHD LEFT DELETING LEADING '0'.
   WRITE: ICON_SYSTEM_HELP AS ICON,
          '交貨單',JHD COLOR 2,'中沒有可供揀配的行項目!'.
   STOP.
ENDIF.

DATA: FLAG TYPE N VALUE 0.
PERFORM CHECKKC TABLES RECORD USING FLAG.
IF FLAG EQ 1.
    CLEAR RECORD.
    STOP.
ENDIF.

perform open_group.

perform bdc_dynpro      using 'SAPMV50A' '0101'.
perform bdc_field       using 'BDC_CURSOR'
                              'LIKP-VBELN'.
perform bdc_field       using 'BDC_OKCODE'
                              '=UEKO'.
PERFORM BDC_FIELD       USING 'LIKP-VBELN'
                              RECORD-VBELN.

PERFORM BDC_DYNPRO      USING 'SAPMV50A' '0220'.

LINE = 0.
N = 0.
JUMP = 0.
DATA : JUMPTO(4) TYPE C.
LOOP AT RECORD.

LINE = LINE + 1.
N = N + 10.

  IF JUMP EQ 1.

      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                    '=POPO'.
      PERFORM BDC_DYNPRO      USING 'SAPMV50A' '0111'.
      PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                    'RV50A-POSNR'.
      JUMPTO = N.
      SHIFT JUMPTO LEFT DELETING LEADING '0'.

      PERFORM BDC_FIELD       USING 'RV50A-POSNR'
                               JUMPTO.
      PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                               '/00'.

      PERFORM BDC_DYNPRO      USING 'SAPMV50A' '0220'.

      JUMP = 0.

  ENDIF.

DATA: F1(18).
CONCATENATE 'LIPSD-PIKMG(' LINE ')' INTO F1.

PERFORM BDC_FIELD       USING 'BDC_CURSOR' F1.
*                              'LIPSD-PIKMG(01)'.
perform bdc_field       using 'BDC_OKCODE'
                              '=UEKO'.
DATA: F2(18).
CONCATENATE  'LIPS-LGORT(' LINE ')' INTO F2.
PERFORM BDC_FIELD       USING F2       " 'LIPS-LGORT(01)'
                              LGORT.
DATA: F3(18).
CONCATENATE 'LIPSD-PIKMG(' LINE ')' INTO F3.

PERFORM BDC_FIELD       USING F3              " 'LIPSD-PIKMG(01)'
                              RECORD-PIKMG.

   CHECK LINE EQ 12.
         LINE = 0.
         JUMP = 1.

ENDLOOP.
CLEAR F1.
CLEAR F2.
CLEAR F3.

PERFORM BDC_DYNPRO      USING 'SAPMV50A' '0220'.
PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                              '=WABU'.
PERFORM BDC_TRANSACTION USING 'VL02'.

perform close_group.

REFRESH RECORD.
CLEAR RECORD.

SHIFT JHD LEFT DELETING LEADING '0'.

ULINE.

N = N DIV 10.

WRITE: / ICON_GREEN_LIGHT AS ICON,
         '交貨單', JHD , '成功揀配!會話條目共:', N , '項!'.
WRITE: / ICON_GREEN_LIGHT AS ICON,
         '會話名稱:',GROUP COLOR 4 INTENSIFIED.

SET PF-STATUS '100'.

AT USER-COMMAND.
IF SY-UCOMM EQ 'EXECUTE'.

   SUBMIT RSBDCSUB WITH MAPPE = GROUP WITH VON = SY-DATUM WITH
                        BIS = SY-DATUM WITH Z_VERARB = 'X'
                        WITH FEHLER = ''.

ENDIF.

*&---------------------------------------------------------------------*
*&      Form  CHECKKC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_RECORD  text
*      <--P_FLAG  text
*----------------------------------------------------------------------*
FORM CHECKKC TABLES   P_RECORD STRUCTURE RECORD USING P_FLAG.
TABLES: MARD.
DATA: ERRMESS(90) TYPE C.

LOOP AT RECORD.
     SELECT SINGLE * FROM MARD WHERE MATNR EQ RECORD-MATNR AND
                                     WERKS EQ '2010' AND
                                     LGORT EQ LGORT.
     IF SY-SUBRC EQ 0.
        IF MARD-LABST < RECORD-LFIMG.
           IF P_FLAG EQ 0.
              MOVE 1 TO P_FLAG.
              WRITE:/ ICON_MESSAGE_WARNING AS ICON,
                       '交貨單需求項目不足' COLOR 3 INTENSIFIED OFF.
              ULINE.
           ENDIF.
          ERRMESS = P_RECORD-MATNR.
          SHIFT ERRMESS LEFT DELETING LEADING '0'.
          CONDENSE ERRMESS NO-GAPS.
          CONCATENATE '物料:' ERRMESS ' 在工廠:2010 庫存地:' LGORT
                      ' 數量不足!' INTO ERRMESS.
           WRITE: / ICON_INCOMPLETE AS ICON, ERRMESS
                                       COLOR 5 INTENSIFIED OFF.
        ENDIF.
     ELSE.
       IF P_FLAG EQ 0.
          MOVE 1 TO P_FLAG.
          WRITE:/ ICON_MESSAGE_WARNING AS ICON,
                  '交貨單需求項目不足' COLOR 3 INTENSIFIED OFF.
          ULINE.
       ENDIF.
          ERRMESS = P_RECORD-MATNR.
          SHIFT ERRMESS LEFT DELETING LEADING '0'.
          CONDENSE ERRMESS NO-GAPS.
          CONCATENATE '物料:' ERRMESS ' 在工廠:2010 庫存地:' LGORT
                      ' 不存在!' INTO ERRMESS.
          WRITE:/ ICON_MESSAGE_ERROR_SMALL AS ICON,ERRMESS COLOR 2.
     ENDIF.
ENDLOOP.

CLEAR ERRMESS.
CLEAR MARD.
ENDFORM.                    " CHECKKC

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.