본문 바로가기

ABAP

[ABAP] 프로그램 호출Sumbit 예제

*-----프로그램 호출을 위한 데이터 선언.
  DATA : LT_TMP     TYPE TABLE OF 'ALV 스트럭쳐',
         LT_RSPAR_A TYPE TABLE OF RSPARAMS. <----호출될 프로그램에서 조회하고 싶은 정보를 여기에 담아 넘김

  CONSTANTS : LC_VBELN TYPE RSSCR_NAME VALUE 'S_VBELN', <----호출될 프로그램에서 선언된 셀렉션 스크린 변수값 넣기
              LC_WERKS TYPE RSSCR_NAME VALUE 'S_WERKS',    
              LC_WADAT TYPE RSSCR_NAME VALUE 'S_WADAT',
              LC_B     TYPE RSSCR_NAME VALUE 'P_B',     <----호출될 프로그램에서 선언된 라디오 버튼
              LC_C     TYPE RSSCR_NAME VALUE 'P_C'.


  CLEAR : LT_TMP, LT_RSPAR_A.



*-----선택한 라인이 없을 경우 Error 표시.
  PERFORM SELECTED_LINE_CHECK TABLES LT_TMP.

  CHECK SY-SUBRC EQ 0.



*-----선택한 라인 제외 삭제.
  DELETE LT_TMP WHERE CBBOX EQ ABAP_FALSE.

  SORT LT_TMP BY VBELN WERKS WADAT.


*-----데이터 구성.
  LOOP AT LT_TMP INTO DATA(LS_TMP).
    "초기값 할당.
    IF LT_RSPAR_A[] IS INITIAL.

      APPEND VALUE #( SELNAME = LC_WERKS <----호출될 프로그램의 셀렉션 스크린 필드 'S_WERKS'
                         KIND = GC_S	 <----셀렉트 옵션이면 'S', 파라미터면 'P'
                         SIGN = GC_I     <----포함이면 'I', 미포함이면 'E'
                       OPTION = GC_CP    <----EQ,BT등 자기가 원하는 조건넣기. CP는 LIKE같은 역할
                         LOW  = '*'      <----ALV에서 넘겨줄 값
                    ) TO LT_RSPAR_A.
    ENDIF.

    APPEND VALUE #( SELNAME = LC_B  <----이 부분이 중요! 만약 호출될 프로그램에 디폴트 값으로 체크되어 있는
                       KIND = GC_P	 라디오 버튼말고 다른 조건으로 조회하고 싶을 경우, 그 값을 지워줘야함
                       LOW  = '' ) TO LT_RSPAR_A.

    APPEND VALUE #( SELNAME = LC_C
                       KIND = GC_P
                       LOW  = GC_X ) TO LT_RSPAR_A.

    APPEND VALUE #( SELNAME = LC_WADAT
                       KIND = GC_S
                       SIGN = GC_I
                     OPTION = GC_EQ
                       LOW  = LS_TMP-WADAT ) TO LT_RSPAR_A.

    APPEND VALUE #( SELNAME = LC_VBELN
                       KIND = GC_S
                       SIGN = GC_I
                     OPTION = GC_EQ
                       LOW  = LS_TMP-VBELN ) TO LT_RSPAR_A.
    CLEAR LS_TMP.
  ENDLOOP.


*-----LT_RSPAR_A 중복제거.
  SORT LT_RSPAR_A BY SELNAME.

  DELETE ADJACENT DUPLICATES FROM LT_RSPAR_A COMPARING SELNAME LOW.


*-----프로그램 호출.
  SUBMIT 호출할 프로그램 WITH SELECTION-TABLE LT_RSPAR_A AND RETURN.

 

반응형