Basic BDC 소스

Jinsu Park (James)·2019년 12월 10일
0

ABAP

목록 보기
2/3

REPORT ZBDC_1607.

  • TCODESEARCH 라는 사이트에서 TCODE 치면 테이블 나옴.

DATA : OK_CODE TYPE SYUCOMM. " 변수 ,EXEC , CANC

DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA : GV_MODE VALUE 'A'. " A모드가 과정을 전부 체크하면서 눈으로 확인을 다함.

DATA : BEGIN OF GS_BDC,
MATNR LIKE MARA-MATNR, " 자재번호
MTART LIKE MARA-MTART, " 자재유형
MBRSH LIKE MARA-MBRSH, " 산업 부문
MEINS LIKE MARA-MEINS, " 단위
NORMT LIKE MARA-NORMT, " 산업 표준 내역
MAKTX LIKE MAKT-MAKTX, " 자재내
END OF GS_BDC.

CALL SCREEN 100.
&---------------------------------------------------------------------
& Module STATUS_0100 OUTPUT
&---------------------------------------------------------------------*

  •   text

    ----------------------------------------------------------------------
    MODULE STATUS_0100 OUTPUT.

    SET PF-STATUS 'S100'.
    SET TITLEBAR 'T100'.

ENDMODULE. " STATUS_0100 OUTPUT
&---------------------------------------------------------------------
& Module USER_COMMAND_0100 INPUT
&---------------------------------------------------------------------*

  •   text

    ----------------------------------------------------------------------
    MODULE USER_COMMAND_0100 INPUT.

    CASE OK_CODE.

    WHEN 'BACK' OR 'EXIT' OR 'CANC' .
      LEAVE TO SCREEN 0.
    WHEN 'EXEC'. " 실행
      PERFORM EXECUTE_BDC.
    WHEN 'PICK'.                                            " 더블클릭 F2
      SET PARAMETER ID 'MAT' " 메모리 아이디를 MAT에 세팅한다.
       FIELD GS_BDC-MATNR.  " 필드 GS_BDC-MATNR 에
      CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
    WHEN 'BAPI'.
    
      DATA : GV_BAPI TYPE CHAR10.
  •  gv_bapi 를 프로그램 안에서 안으로 전달한다.
    
    BREAK-POINT.
    GV_BAPI = 'GO BDC'.
    EXPORT  GV_BAPI TO MEMORY ID 'BAA'. " ABAP 메모리 vs SAP
  •    ABAP 메모리는 SAP GUI 를 끄면 메모리가 사라짐.
    
    SET PARAMETER ID 'MAT' FIELD '99999'.
    
    SUBMIT ZBAPI_1607 " bapi 프로그램이름 / submit 을 써서 bapi 프로그램으로 넘어감.
    VIA SELECTION-SCREEN
    WITH P_MATNR = GS_BDC-MATNR " 자재 번호
    WITH P_OLD = 'TEST TEST' " 하드코딩
    WITH P_UOM = GS_BDC-MEINS  " 기본단위
    
    AND RETURN . " 원래 bdc 프로그램 화면으로 돌아올 수 있다는 뜻.

    ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT
&---------------------------------------------------------------------
& Form EXECUTE_BDC
&---------------------------------------------------------------------*

  •   text

    ----------------------------------------------------------------------

  • --> p1 text

  • <-- p2 text
    ----------------------------------------------------------------------
    FORM EXECUTE_BDC .

    CLEAR GT_BDCDATA[]. " 동작을 담는거에 인터널 테이블 지워준다.

    PERFORM BDC_FLOW USING 'X' 'SAPLMGMM' '0060'. " 화면 0060
    PERFORM BDC_FLOW USING ' ' 'RMMG1-MBRSH' GS_BDC-MBRSH.
    PERFORM BDC_FLOW USING ' ' 'RMMG1-MTART' GS_BDC-MTART.
    PERFORM BDC_FLOW USING ' ' 'BDC_OKCODE' '/00'. " 엔터

    PERFORM BDC_FLOW USING 'X' 'SAPLMGMM' '0070'. " 화면 0070 으로 넘어감 (엔터 쳤을대.)
    PERFORM BDC_FLOW USING ' ' 'MSICHTAUSW-KZSEL(01)' 'X'.
    PERFORM BDC_FLOW USING ' ' 'MSICHTAUSW-KZSEL(02)' 'X'.
    PERFORM BDC_FLOW USING ' ' 'MSICHTAUSW-KZSEL(02)' 'X'.

PERFORM BDC_FLOW USING 'X' 'SAPLMGMM' '4004' .
PERFORM BDC_FLOW USING ' ' 'MAKT-MAKTX' GS_BDC-MAKTX.
PERFORM BDC_FLOW USING ' ' 'MARA-MEINS' GS_BDC-MEINS.
PERFORM BDC_FLOW USING ' ' 'MARA-SPART' '01'. " 산업군 하드코딩
PERFORM BDC_FLOW USING ' ' 'BDC_OKCODE' '=SP02'. " 두번째 탭으로 넘어가기

PERFORM BDC_FLOW USING 'X' 'SAPLMGMM' '4004'.
PERFORM BDC_FLOW USING ' ' 'MARA-NORMT' GS_BDC-NORMT. " 표준산업
PERFORM BDC_FLOW USING ' ' 'BDC_OKCODE' '=BU'. " 저장버튼.

CALL TRANSACTION 'MM01'
USING GT_BDCDATA

  •    MODE 'A' " 모드를 A 로 하드코딩 되어있음.
      MODE GV_MODE " A , N , E

    MESSAGES INTO GT_MESSTAB.

    IF SY-SUBRC EQ 0.
    GS_BDC-MATNR = SY-MSGV1. " 1번에 번호가 따질것. " 메시지가 ..
    ENDIF.

ENDFORM. " EXECUTE_BDC

&---------------------------------------------------------------------
& Form BDC_FLOW
&---------------------------------------------------------------------*

  •   text

    ----------------------------------------------------------------------

  •  -->DYNBEGIN   text
  •  -->FVAL1      text
  •  -->FVAL2      text

    ----------------------------------------------------------------------
    FORM BDC_FLOW USING DYNBEGIN FVAL1 FVAL2. " PROGRAM DYNPRO.

    DATA : LV_TYPE TYPE CHAR1.

    CLEAR GT_BDCDATA.
    IF DYNBEGIN = 'X'.
    GT_BDCDATA-DYNBEGIN = 'X'.
    GT_BDCDATA-PROGRAM = FVAL1.
    GT_BDCDATA-DYNPRO = FVAL2.
    ELSE.
    GT_BDCDATA-FNAM = FVAL1.
    GT_BDCDATA-FVAL = FVAL2.
    SHIFT GT_BDCDATA-FVAL LEFT DELETING LEADING SPACE.
    ENDIF.
    APPEND GT_BDCDATA.
    ENDFORM. "BDC_FLOW

profile
JS ABAP collection

0개의 댓글