메뉴 건너뛰기

SAP 한국 커뮤니티



QDL2(검사레벨변경) BDC되게 하는 방법

deepbluesea 2011.04.05 09:11 조회 수 : 6721 추천:1

*&---------------------------------------------------------------------*
*& Report  ZSAM_QDL2_BDC_TEST
*&
*&---------------------------------------------------------------------*
*& Note 86590 - Changing quality level via 'CALL TRANSACTION USING' 참조
*&
*& Changing the quality level in the call mode is now supported.
*& You can now call the transaction 'Change quality level' via the
*& ABAP/4 statement 'CALL TRANSACTION 'QDL2' USING itab.Data transfer
*& is carried out by means of the internal table ITAB,
*& which contains screens in the batch-input format.
*& In call mode, the quality level determines the missing key fields
*& and the control fields via SET/GET parameter.These must be supplied
*& before calling the change function via 'CALL TRANSACTION tcod
*& USING itab'. Read subroutine 'Q_LAGE_DATEN_LESEN_C' of
*& main program 'SAPMQDQL' for the parameters
*& which are available in detail.
*&
*& For every dynamic modification level you can record an example
*& BDC session with the batch input recorder.
*& For this purpose, you must choose a suitable quality level anf
*& before the recording you must set user parameter QLD to:
*&
*& value '0', for dynamic modification at inspection type level
*& value '1', for dynamic modification at lot level
*& value '3', for dynamic modification at characteristic level
*&---------------------------------------------------------------------*

REPORT  ZSAM_QDL2_BDC_TEST.

DATA: BDCTAB LIKE TABLE OF BDCDATA WITH HEADER LINE,
      MSGTAB LIKE TABLE OF BDCMSGCOLL WITH HEADER LINE.
DATA: GT_QDQL LIKE TABLE OF QDQL WITH HEADER LINE.


SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001."#EC

PARAMETERS: P_WERKS LIKE MARC-WERKS,
            P_MATNR LIKE MARC-MATNR,
            P_LEVEL LIKE QDQL-PRSTUFENAE.

SELECTION-SCREEN SKIP.
PARAMETERS:P_MODE(1)  DEFAULT 'N'.
SELECTION-SCREEN END OF BLOCK BLK1.                         "#EC

*----------------------------------------------------------------------*
*START-OF-SELECTION                                                    *
*----------------------------------------------------------------------*
START-OF-SELECTION.
  DATA: LS_QDQL LIKE QDQL.

  CLEAR: BDCTAB, BDCTAB[], MSGTAB, MSGTAB[], GT_QDQL, GT_QDQL[].

  SELECT * INTO TABLE  GT_QDQL
           FROM QDQL
           WHERE WERKS EQ P_WERKS
             AND MATNR EQ P_MATNR.
  BREAK DABAPLSI.
  LOOP AT GT_QDQL.
    "(Batch Input으로 QDL2는 수행이 안되지만 Parameter를
    " 지정해주면 BDC수행이 가능해진다.
    SET PARAMETER ID 'QLD' FIELD '1'.
    PERFORM SET_PARAMETER USING GT_QDQL.

    PERFORM  : BDC_FORM   USING 'X'      'SAPMQDQL'      '0100',
               BDC_FORM   USING ' '      'BDC_OKCODE'    '=NEXT',
               BDC_FORM   USING ' '      'QDQL-WERKS'    P_WERKS,
               BDC_FORM   USING ' '      'QDQL-MATNR'    P_MATNR.

    PERFORM  : BDC_FORM   USING 'X'      'SAPMQDQL'         '0110',
               BDC_FORM   USING ' '      'BDC_OKCODE'       '=SAVE',
               BDC_FORM   USING ' '      'QDQL-PRSTUFENAE'  P_LEVEL,
               BDC_FORM   USING ' '      'QDQL-DELDATUM'    SY-DATUM.


    CALL TRANSACTION 'QDL2' USING BDCTAB
                            MODE P_MODE
                            UPDATE 'S'
                            MESSAGES INTO MSGTAB.
    "Parmeter Clear
    CLEAR: LS_QDQL.
    PERFORM SET_PARAMETER USING LS_QDQL.

    "Message 처리
    PERFORM WRITE_ERR_MESSAG.
  ENDLOOP.

*&---------------------------------------------------------------------*
*&      Form  BDC_FORM
*&---------------------------------------------------------------------*
FORM BDC_FORM USING    PARA1                                "  X
                       PARA2           " field  or program name
                       PARA3  .        " value  or screen
  CLEAR BDCTAB.
  IF PARA1 EQ 'X'.
    BDCTAB-DYNBEGIN = 'X'.
    BDCTAB-PROGRAM  = PARA2.
    BDCTAB-DYNPRO   = PARA3 .
  ELSE.
    BDCTAB-FNAM     = PARA2.
    BDCTAB-FVAL     = PARA3.
  ENDIF.
  APPEND BDCTAB.
ENDFORM.                               " BDC_FORM
*&---------------------------------------------------------------------*
*&      Form  WRITE_ERR_MESSAG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM WRITE_ERR_MESSAG .
  DATA : L_LINE TYPE I,
        L_MSG(100),
        L_MSGV(20),
        SUCCESS_CNT TYPE I.

  DESCRIBE TABLE MSGTAB LINES L_LINE.
  READ TABLE MSGTAB INDEX L_LINE.

  SELECT SINGLE TEXT INTO L_MSG FROM T100
         WHERE SPRSL = SY-LANGU
           AND ARBGB = MSGTAB-MSGID
           AND MSGNR = MSGTAB-MSGNR.

  L_MSGV = MSGTAB-MSGV1. REPLACE '&' WITH L_MSGV INTO L_MSG.
  L_MSGV = MSGTAB-MSGV2. REPLACE '&' WITH L_MSGV INTO L_MSG.
  L_MSGV = MSGTAB-MSGV3. REPLACE '&' WITH L_MSGV INTO L_MSG.
  L_MSGV = MSGTAB-MSGV4. REPLACE '&' WITH L_MSGV INTO L_MSG.
  L_MSGV = MSGTAB-MSGV4. REPLACE '&' WITH L_MSGV INTO L_MSG.
  CONDENSE L_MSG.

 

  IF MSGTAB-MSGTYP = 'E'.              "ERROR
    FORMAT COLOR 6 INTENSIFIED OFF.
  ELSE.                                " 'S' 성공
    FORMAT COLOR 3 INTENSIFIED OFF.
  ENDIF.
  WRITE :/1 SY-VLINE,  2(1)    MSGTAB-MSGTYP,
          3 SY-VLINE,  4(18)   P_MATNR,
          22 SY-VLINE, 23(100) L_MSG,
          123 SY-VLINE.
  FORMAT RESET.


ENDFORM.                    " WRITE_ERR_MESSAG
*&---------------------------------------------------------------------*
*&      Form  SET_PARAMETER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_QDQL  text
*----------------------------------------------------------------------*
FORM SET_PARAMETER  USING    PS_QDQL STRUCTURE QDQL.

  SET PARAMETER ID 'WRK' FIELD PS_QDQL-WERKS.
  SET PARAMETER ID 'QLM' FIELD PS_QDQL-MATNR.
  SET PARAMETER ID 'QLT' FIELD PS_QDQL-PLNTY.
  SET PARAMETER ID 'QLN' FIELD PS_QDQL-PLNNR.
  SET PARAMETER ID 'QLZ' FIELD PS_QDQL-PLNAL.
  SET PARAMETER ID 'QLF' FIELD PS_QDQL-PLNFL.
  SET PARAMETER ID 'QLV' FIELD PS_QDQL-PLNKN.
  SET PARAMETER ID 'QLL' FIELD PS_QDQL-LIFNR.
  SET PARAMETER ID 'QLK' FIELD PS_QDQL-KUNNR.
  SET PARAMETER ID 'QLH' FIELD PS_QDQL-HERSTELLER.
  SET PARAMETER ID 'QLP' FIELD PS_QDQL-PRUEFART.

ENDFORM.                    " SET_PARAMETER

번호 제목 글쓴이 날짜 조회 수
50 QM관련 질문 드려요 reach9 2023.05.31 118
49 QA01에서 검사로트 수동생성할 경우 재고로 이전이 불가한가요 나삶 2022.11.01 220
48 QA32 화면에서 Insp.lot origin 후후후3 2022.07.08 190
47 생산입고검사(조기입고검사) 방법 문의 file nbegin 2021.03.22 328
46 Usage decision 저장 후, 동작하는 user exit 문의 HANAMANA 2020.08.26 280
45 분류의 활용 용도 SAP유망주 2020.05.26 291
44 표본추출절차 변경 이력 강씨삼남매 2020.03.16 330
43 [QM] 재고가 없는 자재 판정 오류 질문드려요ㅠ MartinFreeman 2018.11.26 818
42 CS Module 관련 자료들은 혹시 어디서 볼 수 있을까요.. 쿠쿠스마일 2018.09.03 564
41 PM 스탠다드 [2] bbnny 2017.01.18 1870
40 [QM]파괴검사 설정 혹은 절차 문의 [3] 음지인 2016.12.30 1547
39 안녕하세요.. QM(PM)관련 BAPI_EQUI_GETDETAIL 질문입니다... 텅키 2016.12.21 1476
38 검사로트 릴리즈 관련 질문드립니다. [1] 딸퀴팡팡이 2016.06.27 3697
37 기능위치란? 어쭈 2016.01.13 2086
36 카탈로그 삭제가 안됩니다. [1] file 무소의 뿔 2015.10.15 2268
35 [PM] 기능위치 관련 문의글 올립니다. [1] file 모르니 2015.04.20 3623
34 [질문] QM 용도결정 오류에 대한 문의입니다. [2] 음지인 2014.08.25 3260
33 T-CODE: CC04 질문입니다. 패승승 2014.06.27 2436
32 PM 시스템 상태 설명입니다. [4] file 호랑이 2013.06.04 4508
31 pm작업장 hrms 세팅 문제건. thrall 2013.01.17 3669