SAP/Dictionary
Maintenance View (유지보수뷰) 에서 값 입력 시 Input History 관리
성공보다는 가치를..
2022. 8. 5. 14:10
728x90
유지보수 뷰 또는 프로그램에서 Time Stamp 찍는 공통 Form문
- 이벤트 번호는 21번을 사용
FORM set_zcat0010_history.
FIELD-SYMBOLS: <fs1> TYPE any.
ASSIGN zcat0010 TO <fs1>.
PERFORM set_create_change_data(zca_form_routine)
USING 'A'
CHANGING <fs1>.
ENDFORM.
Timestamp는 위 Form 하나만 사용하고 그외 로직은 아래 추가하면 된다.
"__ Maintenance View에서 사용할 땐 아래 Logic으로 대체함.
ASSIGN (X_HEADER-VIEWNAME) TO FIELD-SYMBOL(<FS_VIEWNAME>).
PERFORM set_create_change_data(zca_form_routine)
USING 'A'
CHANGING <fs1>.
이벤트 관련해서 예전에 글을 썼었네요.
https://hoya3298.tistory.com/entry/MVMaintenance-View-Event?category=555493
- Form Logic
FORM set_create_change_data USING VALUE(p_0233) "구분자
CHANGING p_fs1.
DATA:
lt_dfies LIKE dfies OCCURS 0 WITH HEADER LINE,
l_pernr TYPE persno,
l_name TYPE ernam.
MOVE sy-uname TO l_name.
CALL FUNCTION 'DDIF_NAMETAB_GET'
EXPORTING
tabname = 'ZCAS0010' "-- History Structure
TABLES
dfies_tab = lt_dfies
EXCEPTIONS
not_found = 1
OTHERS = 2.
CASE p_0233.
WHEN 'C'. "생성 데이터만
DELETE lt_dfies WHERE fieldname CP 'AE*'.
WHEN 'M'. "수정 데이터만
DELETE lt_dfies WHERE fieldname CP 'ER*'.
WHEN 'A'. "모두
ENDCASE.
GET TIME.
LOOP AT lt_dfies.
ASSIGN COMPONENT lt_dfies-fieldname OF STRUCTURE p_fs1 TO FIELD-SYMBOL(<ls1>).
CASE lt_dfies-fieldname+2(3).
WHEN 'NAM'.
MOVE l_name TO <ls1>.
WHEN 'DAT'.
MOVE sy-datum TO <ls1>.
WHEN 'ZET'.
MOVE sy-uzeit TO <ls1>.
ENDCASE.
ENDLOOP.
ENDFORM. " SET_CREATE_CHANGE_DATA
728x90