Web Dynpro ABAP Quick Design guidelines

This Page is to discuss WD4A Design guidelines which can be used by beginner WD4A developer as a checklist to design quality WD4A applications. Please feel free to Add/Correct/Comment to below WD4A Design guidelines and help novice WD4A developer like me in designing quality WD4A applications.

Performance Optimization:

  • Use Range Supply Function to load part of data into context node for heavy table performance optimization.
  • Consider Delta Rendering Optimization while designing WD4A component.
  • Avoid complex and nested Layouts because it has a big impact on browser or client rendering performance.
  • Prefer the Row Layout to the Grid or Matrix Layout if horizontal alignment is not needed for better performance.
  • Number of visible rows in Table or ALV has an impact on performance.
  • Avoid writing much processing in WDDOMODIFYVIEW() method like initialization and all.
  • Don't use context of all WD4A component data. Use context for Screen In/Out data only.
  • Consider the Price Tag of UI elements when designing Web Dynpro Component.

UI Design Practice:

  • Use Flash Islands as add-on for Web DynPro and avoid using more than 3 Flash Islands on the screen.
  • Avoid Scrolling and make all information visible at a glance.
  • Prefer the Matrix Layout to the Grid Layout for Ease of use and consistent layout.
  • Avoid usage of TransparentContainers inside container UI elements.
  • Don't misuse Web Dynpro UI elements by setting improper property values.
  • Exchange default root UI element container with other container UI element to minimize container nesting levels.
  • Never Use Trays and Panel on same screen to avoid confusion for end users.
  • Never use a Section header without associating it with a TransparentContainer.
  • Use Access and Hot Keys for better accessibility.
  • Use Floorplan Manager for consistency across applications.
  • Componentization of Web DynPro component for reusability.

Better Development efficiency:

  • Use Floorplan Manager for the creation of new Web Dynpro ABAP applications to increase development efficiency.
  • Use Developer Defined Reusable Templates.

Miscellaneous:

  • Add URL Parameter "sap-wd-stableids=X" to achieve stable HTML IDs for Automated Tests.
Where-used list는 프로그램 분석할 때 참 유용한 기능입니다.
하지만 이 기능이 항상 완벽하지는 않습니다.

예를들어 어떤 스탠다드 함수를 대체하는 함수를 만들기 위해 어디서 사용되고 있는지 찾으려고 합니다.
Where-used list 를 돌려 보면 4개가 나왔다고 합시다. 하지만 이 4개가 전부라고 믿으면 안 됩니다.

전체 Where-used list를 모두 보관하고 있다면 용량이 너무 너무 크기 때문에
SAP에서는 기본적으로 아주 일부분만 보관하고 있습니다.
어떤식으로 활용하는지 분석하는 참고용으로 쓰라는 거죠.
전체를 다 만들면 DB에 10기가 정도 용량이 추가로 필요하다고 하네요.
(참고)

SAP Where-used list of SAP objects - run SAPRSEUB (note 28022)

 - [ 이 페이지 번역하기 ]



그래서 수동으로 Where-used list를 더 생성할 수 있도록 리포트 프로그램을 제공합니다.
(참고)
http://blog.daum.net/iamkjy/5024481

SAPRSEUB : 전체 생성. BC 허락 받고 백그라운드로 돌리세요. 2일 정도 걸린다고 합니다.
SAPRSEUC : 커스텀 영역만 생성.
SAPRSEUI : 개별 지정하여 생성.


ps. 업그레이드 프로젝트 후에는 개발서버에 전체 생성 해주는게 좋습니다. (운영은 하지 마세요)
 
관련해서 장편의 글을 쓰려고 생각만 하다가 귀차니즘에 쓰지 못하고 있다가,
내가 쓸말을 다 써놓은 곳을 발견하여 소개해 드립니다.

출처: 몽돌잉 님 블로그
http://zmania.tistory.com/14

ps.
1. 폰트 나눔고딕코딩 (크기12) 강추 드립니다.
2. ABAP 7.02 버전 부터는 code assist 가 추가되었다는 반가운 소식입니다. 잘 쓰고 있습니다 ㅋ


웹딘프로 메시지 처리는 MESSAGE 문법을 쓰지 않기 때문에 사용처 리스트에 나타나지 않는다.
하지만 사용처 리스트로 찾게 하려면 이렇게 실행되지 않는 IF 문으로 감싸주면 된다.
IF 1 = 2.

MESSAGE ....
ENDIF.
아래는 사용 예.
           IF 1 = 2.
             MESSAGE i210(usmd2) WITH ld_string.
           ELSE.
             CLEAR: lt_message, ls_message.
             ls_message-msgid = 'USMD2'.
             ls_message-msgty = 'I'.
             ls_message-msgno = '210'.
             ls_message-msgv1 = ld_string.
             INSERT ls_message INTO TABLE lt_message.
             CALL METHOD do_service->show_message( lt_message ).
           ENDIF.

1. 애플리케이션 컨피그 컴포넌트 (appCC) 찾기
Component Configuration 화면에서
Change -> Global Settings를 선택하면 팝업창에서 컴포넌트를 찾을 수 있다.

2. appCC 컴포넌트의 OVERRIDE_EVENT_OIF 메소드

     CASE lo_fpm_event->mv_event_id.
     WHEN if_fpm_constants=>gc_event-start.

      lo_fpm = cl_fpm_factory=>get_instance( ).

*     파라미터 확인
      CALL METHOD lo_fpm->mo_app_parameter->get_value
         EXPORTING
           iv_key   = 'IS_PARAM1'
         IMPORTING
           ev_value = lv_param1.

*     조건에 따라 ... 초기 화면 스킵
        IF lv_param1 IS NOT INITIAL.
         lo_fpm->raise_event_by_id(
           if_fpm_constants=>gc_event-leave_initial_screen ).
       ENDIF.

SAP NetWeaver Business Client (NWBC)

는 웹으로 통합 환경을 제공하여 SAP GUI를 대체하려는 새로운 기술입니다.

이 NWBC는 SAP GUI 처럼 컴퓨터에 프로그램을 설치하여 사용하는 NWBC for Desktop 와
프로그램 설치 없이 웹브라이저로 접속하는 NWBC for HTML 두가지 방식이 있습니다.

이중 NWBC for HTML 은 특정 URL을 가지고 있어서 접속을 할 수 있는데,
SAP GUI에서 이 URL을 생성하여 NWBC를 실행하는 티코드가 NWBC 입니다.
이때 실행되는 코드가 이렇습니다.

코드
Class Name            CL_NWBC
Method                SE93_LAUNCH

METHOD se93_launch.

* In transaction SE93 this method is tied to a transaction called NWBC.

* Get NWBC URL
  DATA: url(1024)       TYPE c,
        nwbc_exception  TYPE REF TO cx_nwbc.

  TRY.
      url = cl_nwbc=>url_base(  ).

      DATA: url_suffix   TYPE icfredurl,
            icf_state    TYPE icfactive.
      cl_icf_tree=>if_icf_tree~service_from_url(
        EXPORTING url             = '/sap/bc/nwbc/nwbc_launch' "#EC NOTEXT
                  hostnumber      = 0
                  authority_check = space
        IMPORTING icfactive       = icf_state
                  urlsuffix       = url_suffix ).
      IF NOT ( icf_state IS INITIAL OR url_suffix IS NOT INITIAL ).
        CONCATENATE url '~launch/' INTO url.
      ENDIF.
    CATCH cx_nwbc INTO nwbc_exception.
      DATA: err_txt TYPE string.
      err_txt = nwbc_exception->get_text( ).
      MESSAGE err_txt TYPE 'E'.
      RETURN.
  ENDTRY.

* Add sap-language and sap-client to URL to give start page same settings as SAPGUI is running in
  DATA: lang_iso TYPE laiso.
  CALL FUNCTION 'LANGUAGE_CODE_SAP_TO_ISO'
    EXPORTING
      sap_code = sy-langu
    IMPORTING
      iso_code = lang_iso.

  CONCATENATE url `?` if_http_form_fields_sap=>sap_client   `=` sy-mandt
                  `&` if_http_form_fields_sap=>sap_language `=` lang_iso
         INTO url.

* Start URL in browser.
  url_launch( url ).

*!!! code below will close currently open additional SAP GUI sesion
* after opening of web browser, if this is not a last session open for
* this system

*** !!!! The code was commented, because it was a logic change for transactio NWBC
* and not all users can accept it

** close current ABAP session, after starting URL
*  DATA: lv_act_sessions TYPE i.
*  CALL FUNCTION 'TH_USER_INFO'
*    EXPORTING
*      client              = sy-mandt
*      user                = sy-uname
*    IMPORTING
*      act_sessions        = lv_act_sessions.
*
*  " do not close last session
*  IF lv_act_sessions GT 1.
*    CALL FUNCTION 'TH_DELETE_MODE'.
*  ENDIF.

ENDMETHOD.

Web Dynpro Application을 열고 Parameters 탭에 가면 여러가지 파라미터를 입력 할 수 있습니다.

여기서는
 테이블(ALV포함)의 새로 스크롤바 또는 하단에 1/30 으로 항목번호를 표시하고 이동하는 방식을 선택할 수 있고,
 마우스 오른쪽 버튼 눌러서 나오는 사용자 세팅을 허용할 것인지를 선택할 수 있고,
 css 테마는 어떤것을 사용할지 지정할 수 있고,
등등 여러가지 어플리케이션 실행에 관련된 세팅을 할 수 있습니다.

그리고 이러한 파라미터를 서버(클라이언트별) 전체 세팅으로 기본값을 지정할 수 있는 프로그램이 있습니다.
WD_GLOBAL_SETTING <-- 웹딘프로 어플리케이션 이름 입니다.

예를 들어 '사용자 세팅'을 모든 웹딘프로 어플리케이션에 대해서 사용 못하게 하려면 이 프로그램을 실행하고
Do Not Allow Personalization by the User: 를 체크하고 저장하면 끝입니다.
하지만 이미 사용자 세팅으로 저장된 내용은 계속 적용이 되고 있으므로 이것을 삭제하려면
WD_ANALYZE_CONFIG_USER 를 실행하여 삭제하여야 합니다.


파라미터에 대해 자세한 내용은 아래 SAP HELP를 참고하세요.
http://help.sap.com/saphelp_nw70/helpdata/en/7b/fb57412df8091de10000000a155106/frameset.htm
7.0을 기준으로 파라미터를 정리해 보았습니다. 버전에 따라 내용이 다를 수 있습니다.
 
WDACCESSIBILITY
접근성 사용 여부
참고: Accessibility parameters.
입력 가능 값: ‘X’, ‘ ‘
WDCONFIGURATIONID
사용할 Configuration 이름 입력
WDDELTARENDERING
델타 렌더링 사용 여부
참고: Delta Rendering. 변경된 뷰만 다시 렌더링 하도록 하여 성능 향상에 도움이 됨.
입력 가능 값: ‘ON’ , ‘OFF’(기본값)
델타 렌더링 사용여부를 설정하는 같은 효과를 가지는 다른 방법으로는 sap‑wd‑deltaRendering URL 파라미터로 입력하는 방법이 있다.
WDDISABLEUSERPERSONALIZATION
개인화 (사용자 세팅 > 숨기기) 불가 여부
참고: Personalization
입력 가능 값: ‘X’, ‘ ‘
WDDISPLAYSPLASHSCREEN
웹딘 초기 로딩시 시작로고 표시 여부
입력 가능 값: ‘X’, ‘ ‘
WDFORCEEXTERNALSTYLESHEET
포털과 연동시 자동으로 포털과 웹딘의 CSS 버전을 검사하여 더 최신버전을 사용하는 기본동작을 무시하도록 할지 여부
입력 가능 값: ‘X’, ‘ ‘
WDHIDEMOREFIELDHELPASDEFAULT
웹딘 UI 엘리먼트의 explanation 프로퍼티 표시 숨김 여부
입력 가능 값: ‘X’, ‘ ‘
WDPROTECTEDAPPLICATION
도메인 릴렉싱 공격으로부터 보호 여부
입력 가능 값: ‘X’, ‘ ‘
‘X’세팅하면 포털과 통합 연동하는 기능이 전혀 작동하지 않음. 예를 들어 포털 이벤트가 작동하지 않음
WDSHAREDREPOSITORY
어플리케이션 메타데이터를 shared memory 영역으로 로드 할지 여부.
입력 가능 값: ‘X’, ‘ ‘
‘X’세팅하면 성능 향상이 있지만, 메모리 사용량이 늘어남
WDTABLENAVIGATION
테이블이나 ALV의 스크롤 방식을 지정
입력 가능 값
‘ ‘ : 기본값, 테이블 아래에 페이지 방식
‘PAGINATOR’ : 테이블 아래에 페이지 방식
SCROLLBAR‘ : 테이블 오른쪽에 스크롤 바
WDTHEMEROOT
포털의 테마를 사용하지 않고 별도 테마를 지정
입력 가능 값
sap_chrome
sap_hcb
sap_highcont
sap_standard
sap_tradeshow (웹딘의 기본 사용 테마)


2013-06-01 수정

7.03 설치 글을 새로 등록하였습니다. 다음 링크를 참고(Netweaver ABAP 7.03 SP04 trial 설치 후기 (windows 7 64bit))

 

7.01 까지만 trial 버전이 있었는데, 얼마전 7.02가 나왔다는 소식에 (http://bit.ly/efXoho)
냉큼 설치를 해 보았습니다.
(참고: 90일동안 사용가능한 trial 입니다.)

1년전에 산 노트북 centrino2, RAM 2G, Windows XP SP3
완전 설치까지는 8시간 정도 걸렸습니다.
설치 중에는 컴퓨터가 매우 느려저서 사용하기 힘들 정도 입니다.

SAP Management Console을 실행하여 서버를 켜고
SAPGUI로 접속합니다.


bcuser / abcd1234
와~ 접속이 되었습니다.
컴퓨터의 메모리 상황을 보니 4G를 사용하고 있네요.. 램이 부족해서 많이 느리네요.


버전 확인~


ABAP 에디터를 열고 code completion (Ctrl+space) 기능을 테스트 해보았습니다.
완전 잘 됩니다~
이제 좀 코딩할 맛이 나는군요.









이런식이죠.

이제, 이클립스 부럽지 않아요.
티코드 SE63
메뉴에서 번역 - ABAP 오브젝트 - 전송 오브젝트를 선택한다.
입력칸 3곳에 이것을 입력한다.

R3TR
WDYA
웹딘프로아밥 애플리케이션 아이디




+ Recent posts