역분개 시 대상 전표의 전기일이 물류마감 , 회계마감 시 현재 월의 1일로 진행 ( 대부분 현재월은 마감이 안됨 ) 

 

역분개 사유 '01'은 전표의 전기일과 역분개일이 동일한 경우만 가능. 

전기일이 이미 마감된 경우 다른일자로 역분개를 진행 하여야 함 .

 

SAP GUI 상태에서는 메세지를 확인하고 진행 할 수 있지만 I/F 나 Background 로 진행하는 경우 해당 부분이 

진행이 안되어 실제 마감시 다음 절차 진행 할때 현업에서 당황할 수 있음 .

 

해당 부분에 대해 업무적으로 의사결정이 우선 필요로 함 .( 전기일이 마감이 지난 경우 역분개를 허용할 수 있는가 하는.)

 

FORM CHECK_MARV.
SELECT SINGLE MANDT INTO MANDT
FROM MARV
 WHERE BUKRS = C_BUKRS .
 CHECK MARV-VMGJA = SY-DATUM-0(4) AND MARV-VMMON = SY-DATUM+4(2) AND MARV-XRUEM = 'X'. 

ENDFORM .


FORM GET_POST_DATE 
	USING     PV_DATUM
    CHANGINGE PV_STBLG PV_BUDAT  .
 
 PERFORM CHECK_MARV .
 
 IF SY-SUBRC <> 0 .  " 마감이라면 
 	PV_BUDAT = SY-DATUM+0(6) && '01'.
 ELSE. " 마감이 아니라면 
 	PV_BUDAT = PV_DATUM.
 ENDIF.
    
 IF PV_BUDAT NE PV_DATUM .
 	PV_STBLG = '02'. 
 ELSE .
	PV_STBLG = '01'.
 ENDIF.
ENDFORM.

 

위 소스는 블로그상 작성한 것으로 문법이 정확하지 않고, 오타가 존재함 .

'ABAP' 카테고리의 다른 글

자주쓰는 Layout(Report - CLASS ALV)  (0) 2022.08.03
Call Transaction 으로 새로운 세션 실행 하는 Fuction .  (0) 2022.07.29
MESSAGE_SHOW  (0) 2022.07.29
EXIT, STOP, CONTINUE, CHECK  (0) 2022.07.22
참고 로직  (0) 2022.07.21

예전 ECC이전 버전의 경우 ABAP 라인이 72이 넘으면 Dump가 발생하곤 했다.

그런것도 있고.

한눈에 소스를 보기 위해 Downwords-Compatible Line Length (72) 체크 한다.

 

꾸민 프린트는 대/소문자변화 Uppercase 에 체크 한다. (이건 개개인 차이)

 

일부 사용자들은 개인 폰트를 적용하여 코드를 더 잘보이도록 하기도 한다. 

그냥 돋움 으로 쓴다.  귀찮음.

 

대부분의 업체들은 보안 프로그램 때문에 프로그램 추가 설치나 파일 이동에 대해 민감 하기 때문에 

되도록 추가 파일을 필요로 하는것은 지양한다.

 

 

Report 는 아래 양식으로 작성한다. 

 

CLASS ALV 가 존재하는 Report는 총 8장으로 구성 , 

SCREEN 0100 

GUI STATUS 0100

TITLE 0100 

으로 정의 한다. 

 

Function ALV 의 경우 ~ALV, C01, O01, I01. 

 

Fuction ALV 는 단순 레포트를 제공할때만 사용. 버튼 클릭 등 이벤트 사용시 CLASS ALV 사용 . 

 

 

ZTESTR001 

*&-----------------------------------------------------------------&*
*& Report ZTESTR001                                                &*
*&-----------------------------------------------------------------&*

REPORT ZTESTR001 NO STANDARD PAGE HEADING .

INCLUDE ZTESTR001ALV . " ALV 클래스 정의 
INCLUDE ZTESTR001TOP . " TOP 정의 
INCLUDE ZTESTR001SEL . " SELECTION SCREEN 
INCLUDE ZTESTR001C01 . " ALV 필드카탈로그 정의 및 ALV 관련 툴바 이벤트 
INCLUDE ZTESTR001F01 . " FORM 
INCLUDE ZTESTR001O01 . " PBO
INCLUDE ZTESTR001I01 . " PAI 

*&-----------------------------------------------------------------&*
*& INITIALIZATION
*&-----------------------------------------------------------------&*
INITIALIZATION.
 PERFORM INITIALIZATION.

*&-----------------------------------------------------------------&*
*& START-OF-SELECTION 
*&-----------------------------------------------------------------&*
START-OF-SELECTION .
 PERFORM START_OF_SELECTION.
 
*&-----------------------------------------------------------------&*
*& END-OF-SELECTION 
*&-----------------------------------------------------------------&*
  END-OF-SELECTION.
  PERFORM END_OF_SELECTION.

 

ZTESTR001ALV .

*&---------------------------------------------------------------------------&*
*& CLASS DATA                                                                &*
*&---------------------------------------------------------------------------&*

" docking 컨테이너만 사용하기 때문에 아래 오브젝트만 정의 . 필요시 추가 정의하여 사용 
DATA : GV_DOCKING_CONTAINER TYPE REF TO CL_GUI_DOCKING_CONTAINER , 
       GV_GRID              TYPE REF TO CL_GUI_ALV_GRID ,
       
       "TABLE TYPE
       GT_FIELDCAT			TYPE LVC_T_FCAT  ,
       GT_SORT				TYPE LVC_T_SORT ,
       GT_TABCOLOR			TYPE LVC_T_SCOL , 
       GT_EXCL_FUNC			TYPE UI_FUNCTIONS ,
       
       "STRUCTURE TYPE 
       GS_FIELDCAT			TYPE LVC_S_FCAT  ,
       GS_STYL				TYPE LVC_S_STYL ,
       GS_TABCOLOR			TYPE LVC_S_SCOL , 
       GS_STABLE			TYPE LVC_S_STBL ,
	   GS_VATIANT			TYPE DISVATIANT .
           

DATA : GV_REPID	            LIKE SY-REPID ,
       GV_SAVE              VALUE 'A'.
       
*&---------------------------------------------------------------------------&*
*& LCL_EVENT DEFINITION 
*&---------------------------------------------------------------------------&*
CLASS LCL_EVENTS DEFINITION .
	PUBLIC SECTION .
    	        
        METHODS : 
        " ~ 필요 ALV EVENT 정의 
        " USER_COMMAND
        " HOTSPOT_CLICK
        " TOOLBAR
        " BUTTON_CLICK 
        
       
ENDCLASS.

*&---------------------------------------------------------------------------&*
*& LCL_EVENT IMPLEMENTATION
*&---------------------------------------------------------------------------&*
CLASS LCL_EVENTS IMPLEMENTATION .
" 위에서 정의한 METHOD . 
ENDCLASS.

 

ZTESTR001TOP .

*&----------------------------------------------------------------&*
*& Table 
*&----------------------------------------------------------------&*
TABLES : SSCRFIELDS . " 이외 해당 SEL SCREEN 에서 사용하게 될 Table 

*&----------------------------------------------------------------&*
*& INCLUDE
*&----------------------------------------------------------------&*
INCLUDE : <ICON> , <SYMBOL> .

*&----------------------------------------------------------------&*
*& TYPE 
*&----------------------------------------------------------------&*
TYPE-POOLS : ABAP, SLIS, OLE2, TRUXS, ICON.

*&----------------------------------------------------------------&*
*&  Constants  
*&----------------------------------------------------------------&*
CONSTANTS : C_BUKRS(4) TYPE C VALUE '1000' ,
            C_KOKRS(4) TYPE C VALUE '1000' .
            "  중략 ~
            
*&----------------------------------------------------------------&*
*&  Macro
*&----------------------------------------------------------------&*
 DEFINE ICLEAR .
 CLEAR : &1, &1[].
 END-OF DIFINITION .
 
*&----------------------------------------------------------------&*
*&  Global Common Valuedation 
*&----------------------------------------------------------------&*
 DATA : GV_TCODE  LIKE SY-TCODE .
 DATA : GV_OKCODE LIKE SY-UCOMM .
 
*&----------------------------------------------------------------&*
*&  Global Valuedation 
*&----------------------------------------------------------------&*
 DATA : BEGIN OF GT_DATA OCCURS 0 ,
         "~
         KEY1(1),
 		 COLOR(4),         
        END OF GT_DATA .

 

ZTESTR001SEL.

*&----------------------------------------------------------------&*
*& SELECTION SCREEN
*&----------------------------------------------------------------&*
SELECTION-SCREEN BEGION OF BLOCK B1 WITH FRAME TITLE TEXT-T01 .
PARAMETER : P_TEST(1) .
SELECTION-SCREEN END OF BLOCK B1.

*&----------------------------------------------------------------&*
*& AT SELECTION-SCREEN
*&----------------------------------------------------------------&*
AT SELECTION-SCREEN. " PAI
    CASE SSFIELDS-UCOMM . 
        WHEN 'ONLI'. " 실행버튼 클릭시 .
    ENDCASE .


*&----------------------------------------------------------------&*
*& AT SELECTION SCREEN OUTPUT
*&----------------------------------------------------------------&*
AT SELECTION-SCREEN OUTPUT. " PBO 
PERFORM MODIFY_SCREEN .

*&----------------------------------------------------------------&*
*& AT SELECTION SCREEN ON VALUE REQUEST 
*&----------------------------------------------------------------&*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_SPMON .
 PERFORM F4_SPMON.

FORM MODIFY_SCREEN.

    LOOP AT SCREEN .
        IF SCREEN-GROUP1 EQ '00'.
            SCREEN-ACTIVE = 1 .
        ENDIF.
        MODIFY SCREEN.
    ENDLOOP.

ENDFORM.


FORM F4_SPMON . 
"달력 팝업 펑션 호출 .
ENDFORM.

 

ZTESTR001C01.

FORM CREATE_OBJECT .

" DOCKING CONTAINER 생성 
IF DOCING IS INITIAL .
 CREATE OBJECT DOCKING ~
 
" ALV GRID  생성 
	CREATE OBJECT GRID 
		PARENT = docking .

" VAIRIANT " ALV 변형 
VARIANT-REPoRT = ~ .
VARIANG-USERNAME = SY-UNAME .

" ALV EVENT 생성 
PERFORM SET_GRID EVENTS .

ENDIF.

" ALV LAYOUT 설정 
PERFORM SET_LAYOUT .

" ALV TOOLBAR 설정 
PERFOR SET_TOOLBAR 

" ALV SORT 
PERFORM SET_SORT .

" FIEDCAT 
PERFORM GET_FIELDCAT_ALV .

" CALL GRID DISPLAY .
PERFOR CALL_GRID_DISPOLAY .


ENDFORM .

ZTESTR001F01.

 

FORM INITIALIZATION .

GV_REPID = SY-REPID .

ENDFORM.

FORM START_OF_SELELCTION .

" CHECK _VALUE
" SET_VALUE
" PROCESS_ OR SET_DATA .
 
ENDFORM .

FORM END_OF_SELECTION.
IF GT_DATA[] IS NOT INITIAL .
CALL SCREEN 0100.
ELSE.
MESSAGE ID ~ .
ENDIF .
ENDFORM .

 

ZTESTR001O01.

MODULE STATUS_0100 OUTPUT .
	SET PF_STATUS '0100' EXCLODING TCODE . 
    SET TITLEBAR '0100' WITH '타이틀' '건수'
ENDMODULE .

MODULE CREATE_OBJECT OUTPUT .
 PERFOR CREATE_OBJECT .
ENDMODULE .

 

ZTESTR001I01.

MODULE USER_COMMAND_0100 INPUT .
 CLEAR : GV_OKCODE .
 
 GV_OKCODE = SY-UCOMM .
 
 CASE GV_OKCODE .
 	WHEN 'BACK' OR 'CANC' OR 'EXIT'.
    	LEAVE TO SCREEN 0 .
 ENDCASE .

ENDMODULE .

 

 

 

 

 

'ABAP' 카테고리의 다른 글

마감 체크 로직  (0) 2022.08.03
Call Transaction 으로 새로운 세션 실행 하는 Fuction .  (0) 2022.07.29
MESSAGE_SHOW  (0) 2022.07.29
EXIT, STOP, CONTINUE, CHECK  (0) 2022.07.22
참고 로직  (0) 2022.07.21

ABAP4_CALL_TRANSACTION 

 

CLEAR: gt_spagpa, gt_spagpa[].
            gt_spagpa-parid  = 'BUK'.
            gt_spagpa-parval = gt_main-bukrs.
            APPEND gt_spagpa. CLEAR gt_spagpa.
            gt_spagpa-parid  = 'BLN'.
            gt_spagpa-parval = gt_main-belnr.
            APPEND gt_spagpa. CLEAR gt_spagpa.
            gt_spagpa-parid  = 'GJR'.
            gt_spagpa-parval = gt_main-gjahr.
            APPEND gt_spagpa. CLEAR gt_spagpa.

 

     CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
              STARTING NEW TASK 'TEST'
              DESTINATION 'NONE'
              EXPORTING
                tcode                 = 'FB03'
                skip_screen           = 'X'
              TABLES
                spagpa_tab            = gt_spagpa
              EXCEPTIONS
                communication_failure = 1
                system_failure        = 2.

'ABAP' 카테고리의 다른 글

마감 체크 로직  (0) 2022.08.03
자주쓰는 Layout(Report - CLASS ALV)  (0) 2022.08.03
MESSAGE_SHOW  (0) 2022.07.29
EXIT, STOP, CONTINUE, CHECK  (0) 2022.07.22
참고 로직  (0) 2022.07.21

+ Recent posts