역분개 시 대상 전표의 전기일이 물류마감 , 회계마감 시 현재 월의 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

 

BDC 실행시 해당 펑션을 만나면 멈춘다. 

메세지 리스트로 팝업을 띄워주는 FUNTION 

MESSAGE_SHOW

 

외부에서 해당 펑션을 만나게 되면 Return 없이 종료 되어 해당 Function이 실행 되지 않도록 

주석처리하여 조치 하여야 함 

'ABAP' 카테고리의 다른 글

자주쓰는 Layout(Report - CLASS ALV)  (0) 2022.08.03
Call Transaction 으로 새로운 세션 실행 하는 Fuction .  (0) 2022.07.29
EXIT, STOP, CONTINUE, CHECK  (0) 2022.07.22
참고 로직  (0) 2022.07.21
Report에서 외부 명령어 호출  (0) 2022.07.21

- EXIT, STOP, CONTINUE, CHECK
  기본적으로 Report Program은 START-OF-SELECTION에서 시작하여 
  END-OF-SELECTION으로 종료한다.
  그렇지만, 사용하는 문장의 종료유형에 다라 END-OF-SELECTION이
  수행될 수도 있고 그렇지 않을 경우도 있다.

EXIT - END-OF-SELECTION을 수행하지 않는다.
         LOOP내에서 실행하면 LOOP만 빠져나간 다음에 다음을 수행한다.
         LOOP밖에 있을 때 SUBROUTINE을 수행하는 중이라면
         SUBROUTINE을 종료한다.
         그러나 SUBROUTINE을 수행하는 중이 아니라면 바로 종료한다.

STOP - END-OF-SELECTION을 수행한 후에 프로그램을 종료한다.
            LOOP내에서 수행할 지라도 프로그램을 바로 종료한 후에
            END-OF-SELECTION을 수행한다.

CHECK - LOOP내에서 실행시 NEXT LOOP를 실행한다.
              LOOP외에서 SUBROUTINE을 수행하는 경우는 SUBROUTINE을
              종료한다.
              그러나, SUBROUTINE에서 수행하지 않는 경우는 프로그램을 바로
              종료한 후에 END-OF-SELECTION을 수행한다.

CONTINUE - LOOP내에서만 사용되고, LOOP내에서 실행하던 PROCESS
                   을 중단하고 NEXT LOOP로 간다.

'ABAP' 카테고리의 다른 글

Call Transaction 으로 새로운 세션 실행 하는 Fuction .  (0) 2022.07.29
MESSAGE_SHOW  (0) 2022.07.29
참고 로직  (0) 2022.07.21
Report에서 외부 명령어 호출  (0) 2022.07.21
Data를 excel file 형식으로 출력시키는 법  (0) 2022.07.21


1. 이 문장이 숫자인지 알아보기
data : num(10) value '0123456789'.
if data cn num.            

TRUE  : 숫자가 아닌 값이 존재한다.
FALSE : 모두 숫자다.

2. PC file list(Popup window) 얻기 및 file 선택
call function 'KD_GET_FILENAME_ON_F4'

3. File name과 path 분리
call function 'SO_SPLIT_FILE_AND_PATH'

4. 현재 화면의 FIELD값 얻기

form dynp_values_read tables fld          structure dynpread
                      using  value(fname) like      dynpread-fieldname
                             retcd        like      sy-subrc.
  refresh fld.
  clear   fld.
  fld-fieldname = fname.
  append fld.


* 현재 화면의 특정 필드 값 읽기

  call function 'DYNP_VALUES_READ'
       exporting
            dyname     = sy-cprog
            dynumb     = sy-dynnr
       tables
            dynpfields = fld
       exceptions
            others     = 01.
  retcd = sy-subrc.




5. 현재 화면의 FIELD값 변경
form dynp_values_update tables fld    structure dynpread
                        using  retcd  like      sy-subrc.
* 현재 화면의 특정 필드 값 변경
  call function 'DYNP_VALUES_UPDATE'
       exporting
            dyname               = sy-cprog
            dynumb               = sy-dynnr
       tables
            dynpfields           = fld
       exceptions
            invalid_abapworkarea = 1
            invalid_dynprofield  = 2
            invalid_dynproname   = 3
            invalid_dynpronummer = 4
            invalid_request      = 5
            no_fielddescription  = 6
            undefind_error       = 7
            others               = 8.

  retcd = sy-subrc.
endform.                               " DYNP_VALUES_READ

6. VARIABLE의 길이 만큼 줄 긋기
pos : 시작 지점
size : 너비

write at /pos(size) sy-uline.

7. SELECT-OPTION에 한가지 값만 들어왔는지 CHECK
form is_multi tables sel_option
              using  result.
  data : begin of separator occurs 3,
           option(1),
           operator(2),
         end of separator.

  data : count    like   sy-fdpos.

* 분석을 위해 oprator만 알아보려고...
  separator[] = sel_option[].

* 조건 table이 복수개의 line을 가지면 TRUE
  describe table sel_option lines count.
  if count > 1.  result = 'T'. exit. endif.

* Operator가 'EQ'가 아니면 TRUE
  read table separator index 1.
  if sy-subrc ne 0.                    " 조건이 없다.
    result = 'F'. exit.
  endif.
  if separator-operator ne 'EQ'.
    result = 'T'. exit.
  endif.

  result = 'F'.

endform.                               " IS_MULTI

8. 화면에 icon 보이기
   - 화면 특정 영역에 icon을 그때 그때 알맞게 보이고자 할 때 사용한다.

  사용 예는 다음과 같다. 
   1) 우선 화면에 Char 30의 Templated를 하나 만든다.(With Icon check)
   2) TOP inlcude에서 화면 필드를 data로 선언한다.(Character 80)
   3) PBO에서 다음과 같은 함수를 사용하여 선언한 Template에 값을 move한다.

    call function 'ICON_CREATE'
         exporting
              name                  = 'ICON_DETAIL'
              text                  = ' '                " Icon 옆에 나타날 설명
              info                  = '상세정보'
              add_stdinf            = 'X'
         importing
              result                = <화면 필드>
         exceptions
              icon_not_found        = 1
              outputfield_too_short = 2
              others                = 3.

9. Table 정보 얻기
방법 1.
  DATA : BEGIN OF NAMETAB OCCURS 0,
           INCLUDE STRUCTURE DNTAB,
         END OF NAMETAB

CALL FUNCTION 'NAMETAB_GET'
     EXPORTING
          TABNAME = TABNAME
     TABLES
          NAMETAB = NAMETAB
     EXCEPTIONS
          OTHERS  = 1.

방법 2.
     DATA: BEGIN OF TAB2 OCCURS 10.
             INCLUDE STRUCTURE X031L.
     DATA: END OF TAB2.

     IMPORT NAMETAB X030L
                    TAB2
                    ID TABNAME.

테이블이 가진 필드의 정보를 보여준다. 
만일 어떤 테이블에서 특정 필드만 제외하고 변경할 필요가 있다면 NAMETAB에서 
그 필드의 항목을 지우고 POSITION과 OFFSET, KEY의 개수(지울 필드가 KEY일 때), 
KEY(지울 필드가 KEY일 때)의 총 길이 등을 변경하면 된다.
이용가능한 곳 : Possible Entry로 

10. Screen 정보 얻기
  DATA : BEGIN OF HEADER_INFO,
           INCLUDE STRUCTURE D020S,
         END OF HEADER_INFO,
         BEGIN OF FIELD_LIST OCCURS 0,
           INCLUDE STRUCTURE D021S,
         END OF FIELD_LIST,
         BEGIN OF FLOW_LOGIC OCCURS 0,
           INCLUDE STRUCTURE D022S,
         END OF FLOW_LOGIC,
         BEGIN OF MATCHCODE OCCURS 0,
           INCLUDE STRUCTURE D023S,
         END OF NAMETAB.
  DATA : ID(12)    TYPE C.
     ID = 'SAPMF05A'.
     ID+8(4) = '0100'.
     IMPORT DYNPRO HEADER_INFO FIELD_LIST FLOW_LOGIC MATCHCODE ID ID.
필드의 존재 유무 판단이나 그 화면을 변경(?)하고 싶을 때...
Export Dynpro와 함께 사용

11. FIELD값 암호화 방법
* PASSWORD FIELD는 RAW TYPE이어야 한다.

  PASSWORD = I_PASSWORD.
  DESCRIBE FIELD PASSWORD LENGTH LEN.
  OFFSET = F = 0.
  DO LEN TIMES.
       ASSIGN PASSWORD+OFFSET(1) TO < S > TYPE 'X'.
       IF < S > IS INITIAL.
            EXIT.
       ENDIF.
       F = F + < S >.
       ADD 1 TO OFFSET.
  ENDDO.

  IF SY-SUBRC = 0.
*      RSA Public key algorithm
*      Choose two very large primes (simple e.g., P=47, Q=71) and
*      set N = P*Q = 3337 and M = (P-1)*(Q-1) = 3220
*      Choose E relatively prime to M, e.g E=79
*      Set D = E^-1 (mod M) = 79^-1 (mod 3220) = 1019
*      Public key is (N, E) = (3337, 79)
*      Private key is (N, D) = (3337, 1019)
*      To encrypt n, C = cipher = n^E (mod N) = n^79 mode 3337
*      To decrypt C, n = C^D mod N

       F = F ** 79.
       F_STR = F DIV 3337.
       REPLACE '.' WITH '' INTO F_STR.
       REPLACE 'E+' WITH '' INTO F_STR.
       CONDENSE F_STR NO-GAPS.
       MOVE F_STR TO E_PASSWORD.
  ELSE.
       CLEAR E_PASSWORD.
  ENDIF.

12. DECIMAL 값을 CURRENCY로
call function 'CURRENCY_AMOUNT_IDOC_TO_SAP'
     exporting
          currency    = currkey
          idoc_amount = decamt
     importing
          sap_amount  = convamt
     exceptions
          others      = 1.
if sy-subrc ne 0.
endif.

13. 전표 LINE ITEM 조회
* 상세정보를 볼 전표번호
data : begin of buztab occurs 30,
         bukrs             like bseg-bukrs,
         belnr             like bseg-belnr,
         gjahr             like bseg-gjahr,
         buzei             like bseg-buzei,
         flaen(1)          type c,     " X = Posten geaendert
       end   of buztab.

call dialog 'RF_ZEILEN_ANZEIGE'
     exporting
          buztab                   " Line Item List
          line                     " Total Line Count
          tcode                    " Transaction code - FB05
          x_nochange from 'X'.

14. Post With Clearing BDC에서 Open item을 선택조건
* Post With Clearing에서 Open item을 선택할 때 무엇으로 선택할지 기준을
* 주어야 하는데 이 기준에 해당하는 Radio Button의 위치가 Configuration
* 사항이라 BDC시 문제가 발생한다.
* 따라서 관리 Table에서 직접 정보를 읽어 BDC Data를 구성한다.
    select single * from t021r
                    where event = 'SL-AG' and
                          feldn = 'BELNR'.
* 맨 앞에 NONE이 자동으로 생성되므로 위치가 뒤로 1씩 증가한다.
    location = t021r-selps + 1.
    concatenate 'RF05A-XPOS1(' location ')' into location_text.
    perform append_bdcdata(sapfzfb0) tables bdcdata using
               ' ' location_text  'X'. " Document number로

15. BDC 전표 기표에서 NEXT SCREEN 결정 LOGIC
FORM NEXT_SCREEN USING VALUE(BUKRS)
                       VALUE(TCODE)
                       VALUE(KOART)
                       NEXT_SCR.
  DATA   DYN_ID(12).

*
  SELECT SINGLE * FROM T001  WHERE BUKRS = BUKRS.
  IF SY-SUBRC NE 0.

  ENDIF.
*
  SELECT SINGLE * FROM T020  WHERE TCODE = TCODE.
  IF SY-SUBRC NE 0.

  ENDIF.
*
  T019-DYNCL = T020-DYNCL.
  T019-KOART = KOART.
  T019-UMSKZ = ' '.
  T019-BUVAR = T001-BUVAR.
  T019-DYNNR = SPACE.
*
  READ TABLE T019.
  IF SY-SUBRC NE 0.
    T019-BUVAR  =  SPACE.
    READ TABLE T019.
  ENDIF.
*
  IF SY-SUBRC EQ 0  AND  T019-DYNNR  >  '0000'.
    NEXT_SCR  =  T019-DYNNR.
    CONCATENATE 'SAPLF040' NEXT_SCR INTO DYN_ID.
    IMPORT DYNPRO  I_DYNHEAD I_DYNFLD  "Next SCREEN 정보읽기
                   I_DYNFLOW I_DYNMATC ID DYN_ID.
    IF NEXT_SCR  = '0300'.             "Subscreen 정보읽기.
      IMPORT DYNPRO  I_DYNH    I_DYNF
                     I_DYNL    I_DYNM    ID 'SAPLKACB0002'.
    ENDIF.
  ELSE.
    RAISE NEXT_SCREEN_NOT_FOUND.
  ENDIF.
ENDFORM.                               " NEXT_SCREEN

'ABAP' 카테고리의 다른 글

MESSAGE_SHOW  (0) 2022.07.29
EXIT, STOP, CONTINUE, CHECK  (0) 2022.07.22
Report에서 외부 명령어 호출  (0) 2022.07.21
Data를 excel file 형식으로 출력시키는 법  (0) 2022.07.21
ABAP 정규식 Regular Expression  (0) 2022.07.20


SM49 - 외부운영체제 명령어 실행
SM69 - 외부 운영체제 명령어 조회/편집

REPORT YTESTHAN_014 NO STANDARD PAGE HEADING.

DATA: PARA1(100) VALUE
                    '/home/syhan/test',
      PARA2(100) VALUE
                    '/home/syhan/test.bak',
      PARA3 LIKE SXPGCOLIST-PARAMETERS .

DATA: BEGIN OF RESULT OCCURS 0.
        INCLUDE STRUCTURE  BTCXPM.
DATA: END OF RESULT.


CONCATENATE PARA1 PARA2 INTO PARA3
                        SEPARATED BY SPACE.

* Execute Unix Command 'cp'
* ZCP = 'cp'
CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
     EXPORTING
          COMMANDNAME           = 'ZCP'
          OPERATINGSYSTEM       = 'UNIX'
          ADDITIONAL_PARAMETERS = PARA3
     TABLES
          EXEC_PROTOCOL         = RES

'ABAP' 카테고리의 다른 글

EXIT, STOP, CONTINUE, CHECK  (0) 2022.07.22
참고 로직  (0) 2022.07.21
Data를 excel file 형식으로 출력시키는 법  (0) 2022.07.21
ABAP 정규식 Regular Expression  (0) 2022.07.20
ABAP Memory Inspector  (0) 2022.07.20

excel에 자신이 출력 하고자 하는 표를 그린다.

 

INCLUDE OLE2INCL.

DATA : EXCEL    TYPE  OLE2_OBJECT,
       BOOKS    TYPE  OLE2_OBJECT,
       CELL     TYPE  OLE2_OBJECT.

  CREATE  OBJECT  EXCEL  'EXCEL.APPLICATION'.
  SET PROPERTY OF EXCEL  'VISIBLE'    =  1  .
  CALL METHOD  OF EXCEL  'WORKBOOKS'  =  BOOKS.
  CALL METHOD  OF BOOKS  'OPEN' EXPORTING #1 = 'TEST.XLS'.

 PERFORM FILL_CELL USING :  3  2 NAME1,
                            3  6 VALUE1,
                            4  2 VALUE2,
                            4  6 VALUE3,
                            5  2 VALUE4. 
                            
                            
FORM FILL_CELL USING   I J  VAL.
  CALL METHOD OF EXCEL 'CELLS' = CELL EXPORTING  #1 = I  #2 = J.
  SET PROPERTY OF CELL 'VALUE' = VAL.
ENDFORM.                    " FILL_CELL

'ABAP' 카테고리의 다른 글

참고 로직  (0) 2022.07.21
Report에서 외부 명령어 호출  (0) 2022.07.21
ABAP 정규식 Regular Expression  (0) 2022.07.20
ABAP Memory Inspector  (0) 2022.07.20
POPUP Function 정리  (0) 2022.07.20

5년전 코스트센터명으로 배부 규칙을 정하는 프로그램 작성 요청이 있어 정규식 관련 자료를 모았었다. 

유의해야 할 점은 문자열 관련 로직은 프로그램 속도를 느리게 할 수 있다. 

많은 데이터를 처리해야 할 경우 고려해서 사용해야 함.

 

Regular Expression Processing in ABAP.pdf
0.32MB
Regular Expressions Online Meetup Presentation.pdf
0.58MB

 

'ABAP' 카테고리의 다른 글

Report에서 외부 명령어 호출  (0) 2022.07.21
Data를 excel file 형식으로 출력시키는 법  (0) 2022.07.21
ABAP Memory Inspector  (0) 2022.07.20
POPUP Function 정리  (0) 2022.07.20
CTS 락 풀기  (0) 2022.07.20

ABAP 메모리 관련 이해 자료 

아주 예전 자료임

첨부된 화면이 Classic Debug인걸 보니. 4.6C 자료인듯

 

Internal Table에 데이터를 정렬하지 않고 진행했을때 매번 다르게 들어가는 부분에 대해서 

이해를 도와 줄 자료 

 

페이지 수가 좀 있음  .

 

 

Abap_Memory_Inspector.pdf
0.94MB

 

'ABAP' 카테고리의 다른 글

Data를 excel file 형식으로 출력시키는 법  (0) 2022.07.21
ABAP 정규식 Regular Expression  (0) 2022.07.20
POPUP Function 정리  (0) 2022.07.20
CTS 락 풀기  (0) 2022.07.20
PI IF XML 을 통한 FILE 업로드 시 CONVERT  (0) 2022.07.19

+ Recent posts