300x250
728x90

Number Range( 넘버레인지 )란...


Number Range에 대해서는 쉽게 말하면 자동으로 번호를 증가시켜 주는 것이라고 보면 된다.

예를 들어) 어느 버튼을 눌렀을 때

1

2

3

.

.

이런 식으로 특수한 행동을 했을 때 번호를 증가시켜주는  기능이다.

 # 생성하는 방법과 자세한 내용은 다음에 쓰겠다....

 

여기서 알아볼 것은 

하나의 프로그램에서 CRUD 기능이 있다고 해보자.

거기서 Create 버튼을 눌렀을 때 Number Range 현재 번호를 가져오는 방법을 알아보자.

( NUMBER_GET_INFO )

 

시나리오 : 게시물 Table 만들어서 게시물 ID를 증번 시켜라.

조건) 

            - 라인추가 버튼 :  클릭 시 상단에 라인 생기고 신규 데이터 등록( 1씩 증가 )


# 간단하게 Table을 만들어보자.

 

# Number Range Info

ZID_GJ

 

# ALV 

 

시작해 보자.

 

# 생성버튼 눌렀을 경우. 


1. 우선 생성 버튼 클릭 시 Table 데이터에 있는지 없는지 체크를 해줘야 한다.

# ) 상단에서부터 라인이 생기는 조건이기 때문에 이런 식으로 체크했다.

 

2. 테이블에 데이터없을 경우와 있을 경우를 나누어주고

# 없을 경우에는 NUMBER_GET_INFO 통해서 Number Range 현재 번호를 가져오자. 그다음 0 Function을 통해서 0을 삭제해 주자.

# 있을 경우에는 +1을 해주자.

# 참고로 NUMBER_GET_INFO자동으로 증번을 하지 않는다. 현재 번호를 가져오는 Function Module이다.

 

# 0을 제거하지 않으면 LS_NUM-NRLEVEL( NUMC20 )인데 LS_LIST-ID( CHAR3 )이라서 값이 제대로 안 들어간다. 

 

3. 이제 ALV Table( Internal Table ) 값을 넣어주자.

 

4. 실행해 보면 당연히 안된다.. ALV Refresh필수이다.

# 원래는 4, 4-1을 Perform에 묶어서 활용을 했지만, 가독성을 위해서 Perform문을 쓰지 않았다.

 

4-1. 만약 ID 필드Disabled 모드( 보기 모드 )변경하고 싶으면  다음과 같은 로직을 같이 넣어주면 된다.

 

필드에 대한 Enabled or Disabled에 대해서 궁금하다면

2022.04.15 - [.SAP/..ABAP] - SAP ALV cell edit 설정( Enabled, Disabled )

 

SAP ALV cell edit 설정( Enabled, Disabled )

SAP ALV Cell 관리하는 방법( Display -> Input ) 1. 전체 ALV을 Input으로 변경하는 방법 2. 몇 개 필드는 Enabled , 나머지 필드는 Disabled로 변경하는 방법이 있다. # 참고로 Enabled = Edit 가능 Disabled = Edit 불가능

potato98.tistory.com

 

실행을 해보면?

# 다음과 같이 위에서부터 라인이 생기는 걸 확인할 수 있다. 

 

로직이 궁금하다면.

      READ TABLE GT_LIST01 INDEX 1 INTO DATA(LS_LIST).

      IF SY-SUBRC EQ 0.
        LS_LIST-ID += 1.
      ELSE.
        DATA: LS_NUM TYPE NRIV.

        CALL FUNCTION 'NUMBER_GET_INFO'
          EXPORTING
            NR_RANGE_NR = '01'      " 알고싶은 Number Range No "
            OBJECT      = 'ZID_GJ'  " Number Range 등록 할 때 Object ID "
          IMPORTING
            INTERVAL    = LS_NUM.

        " 0 제거하고 옮기기 "
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = LS_NUM-NRLEVEL
          IMPORTING
            OUTPUT = LS_LIST-ID.

      ENDIF.


      INSERT LS_LIST INTO GT_LIST01 INDEX 1.


      DATA:
        L_TABIX TYPE SY-TABIX.

      LOOP AT GT_LIST01 INTO DATA(LV_LIST).

        PERFORM FCAT_CELL1
          USING
            'ID'
            CL_GUI_ALV_GRID=>MC_STYLE_DISABLED
          CHANGING
            LV_LIST.

        MODIFY GT_LIST01 FROM LV_LIST
          TRANSPORTING
            CELLSTYL.

        CLEAR:
          LV_LIST-CELLSTYL,
          LV_LIST-CELLSCOL.
      ENDLOOP.


      DATA:
        LS_STABLE TYPE LVC_S_STBL.

      LS_STABLE-ROW = 'X'.
      LS_STABLE-COL = 'X'.

      CALL METHOD G_ALV_GRID01->REFRESH_TABLE_DISPLAY
        EXPORTING
          IS_STABLE = LS_STABLE.

 

끝.

 

 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

 

 

728x90