본문 바로가기
ERP-SAP/ABAP

<ABAP> Submit , import, Export 로 프로그램 호출 및 값 넘겨 주고 받기

by 행복한워니의 기록 2011. 6. 24.
728x90
반응형

이런 프로그램을 만들었는데... 다른 프로그램에서 이 프로그램을 호출해서 출력하고 싶어졌다.
어떻게 해야 하나? 하면 Submit 를 쓰면 된다.

자.. 왜 이런 의문이 들었는지.. 확인!

이런 버튼에서 클릭했을시에는 이런 팝업창이 뜬다.

그리고 OK 버튼을 눌렀을 시에는 저 맨 위에 저 프로그램을 호출할 예정이었다..

물론 여기서 select options의 값이라던지 Parameters 값들을 입력해야만 한다.
이 값들은 전 프로그램에서 호출할 프로그램에서 넘겨줘야 되겠지??


 

PROCESS BEFORE OUTPUT.
 MODULE STATUS_9020.
*
PROCESS AFTER INPUT.
  MODULE exit AT EXIT-COMMAND.
  MODULE back.
  MODULE print.    <- 이 부분 소스 공개

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

 

 CHECK save_ok_code = 'ENTE'.

  TYPES: BEGIN OF t_hscode,
           matnr    TYPE matnr,
           zofhs006 TYPE zoehs006,
         END OF t_hscode.

  DATA : lr_matnr TYPE RANGE OF matnr,   "다른 프로그램에 값을 넘기기 위한 선언들
         lr_werks TYPE RANGE OF werks_d,
         ls_matnr LIKE LINE OF lr_matnr,
         ls_werks LIKE LINE OF lr_werks,
         lv_bdatj TYPE bdatj,
         lv_poper TYPE poper,
         lv_zofdetnr type ZOEDETNR,

         lt_hscode TYPE STANDARD TABLE OF t_hscode,
         ls_hscode TYPE t_hscode.


  DEFINE %assign_ranges_ieq.         "레인지선언 하기 위한 정의부
    clear ls_&1.
    ls_&1-sign   = 'I'.
    ls_&1-option = 'EQ'.
    ls_&1-low    = &2.
    append ls_&1 to lr_&1. clear ls_&1.
  END-OF-DEFINITION.

  LOOP AT gt_dsp INTO gs_dsp WHERE zoforign = 'I'. 

    %assign_ranges_ieq: matnr  gs_dsp-matnr,  "lr_matnr 생성
                        werks  gs_dsp-werks.  "lr werks 생성

    lv_bdatj = gs_dsp-zofdbdtj.
    lv_poper = gs_dsp-zofdpopr.
    lv_ZOFDETNR = gs_dsp-ZOFDETNR.

    ls_hscode-matnr    = gs_dsp-matnr.
    ls_hscode-zofhs006 = gs_dsp-zofhs006.
    APPEND ls_hscode TO lt_hscode. CLEAR ls_hscode.
  ENDLOOP.

  EXPORT lt_hscode p_expor p_kunnr lv_ZOFDETNR TO MEMORY ID 'HSCODE'.  
  -이 부분은 넘겨줄 프로그램에서 사용할 테이블과 파라미터 값들이다. 
  -메모리 아이디를 써서 타 프로그램으로 넘겨준다. 이건 받는 부분을 아래 써주겠다.


  SUBMIT zo1erdc010 WITH p_bukrs EQ zosr0061-bukrs   "이 부분이 프로그램 호출부이고
                    WITH p_agrnr EQ zosr0061-zof0agnr  "생성했던 값들을 입력해서 들어가게 한다.
                    WITH p_kunnr EQ zosr0061-kunnr
                    WITH s_matnr IN lr_matnr
                    WITH s_werks IN lr_werks
                    WITH p_bdatj EQ lv_bdatj
                    WITH p_poper EQ lv_poper
                    WITH p_colif EQ zosr0061-zof0conr
                    AND RETURN.




Export 같은 경우는 받아주는 부분을 보자.
우선 받는 부분의 선언부에 선언을 이렇게 했다.

 

  TYPES: BEGIN OF t_hscode,
           matnr    TYPE matnr,
           zofhs006 TYPE zoehs006,
         END OF t_hscode.

  DATA : lt_hscode TYPE STANDARD TABLE OF t_hscode,
         ls_hscode TYPE t_hscode,

         l_expor   TYPE xfeld,
         l_kunnr   TYPE xfeld,
         l_zofdetnr TYPE zoedetnr. 

아래처럼 값들을 받아왔다. 그리고 클리어 하는 것을 잊지 말기.


*--------------------------------------------------------------------*
  IMPORT lt_hscode = lt_hscode  "좌측이 넘기는 부분 우측이 받는 부분이다.
         p_expor   = l_expor
         p_kunnr   = l_kunnr
         lv_zofdetnr = l_zofdetnr
    FROM MEMORY ID 'HSCODE'.
    FREE MEMORY ID 'HSCODE'.
*--------------------------------------------------------------------*


정리 끝이다. 알겠나? 모르면 말고...

728x90
반응형