#PARAN SILVERLIGHT#
  • Tistory
    • 관리자
    • 글쓰기
Carousel 01
Carousel 02
Previous Next

'Inforamtion Technology'에 해당되는 글 281건

  • 2011.10.05 공유 메모리 이용방법 : Call 받는 프로그램의 파라미터가 Checkbox 일때
  • 2011.09.30 유스케이스를 비쥬얼하게 모델링 하는 툴
  • 2011.09.28 Windows hosts 파일
  • 2011.09.27 [DBMS] ODBC, OLEDB, ADO 개념 정리
  • 2011.07.26 LOGRT : LOCATION MASTER DATA 조회
  • 2011.07.20 Class Pattern 기능
  • 2011.07.19 ALV - 전표 프로그램
  • 2011.07.19 ALV GRID - SLIS Package
  • 2011.07.19 SAP MEMORY & ABAP MEMORY
  • 2011.07.19 FIELD-SYMBOL 설명과 사용예

공유 메모리 이용방법 : Call 받는 프로그램의 파라미터가 Checkbox 일때

ERP/SAP/R/3 2011. 10. 5. 11:35

아래 zmmr081에서  check box를 선택 여부에 따라서 

zmmr033의 check box를 선택을 동일하게 하려 합니다.


 

 

Zmmr081 실행 결과

 

 

Zmmr081 : Call 하는 함수 소스  Command event 시

 

 

 

 

Zmmr033 소스 : Call 받는 함수 소스 Parameter 공유 메모리 설정

 

 

 


Zmmr033 call 
이후  스크린 화면

=> Material name은 공유가 된 것을 확인

=> PO checkbox 를 check , uncheck 하는데 어려움이 있습니다.(아래 소스 및 화면 캡쳐 참조)

 

 

[해결 방법]

submit이라는 함수를 사용해서 call 받는 프로그램의 check box 체크 유무를 변경할 수 있네요. ^^

A. Call 하는 프로그램 소스 : T-Code(zmmr033)가 아닌 Program 이름(zmmr0033)을 입력한다.

        data : PO VALUE '' ,
             PR VALUE '',
             LINE VALUE '',
             MATERIALROOM VALUE 'X'.

      IF OPEN_PO EQ 'X'.
        PO = 'X'.
      ENDIF.
      IF LINE_STO EQ 'X'.
        LINE = 'X'.
      ENDIF.

      submit zmmr0033 and return "VIA SELECTION-SCREEN
      with c_3 = LINE
      with c_4 = PR
      with c_5 = PO
      with c_6 = MATERIALROOM
      with s_matnr = WA-idnrk.

B. Call 받는 프로그램 소스 : Memory Set 을 한다.

 

저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,

유스케이스를 비쥬얼하게 모델링 하는 툴

SOFTWARE ENGINEERING/Object Oriented Programming 2011. 9. 30. 10:22

유스케이스 :
고객의 특정한 목표를
달성하기 위해 시스템이 무엇을 하는지를 기술

 1. 명확한 가치 : 고객의 목표 달성
 2. 시작과 종료
 3. 외부 기동자 : 액터 , 트리거

Development/툴 & 서비스 2007/11/27 15:18 posted by k16wire
UML에서 유스케이스는 큰 부분을 차지합니다. 사실 유스케이스가 요구사항을 모델링 하는데 제일 좋으냐 하고 나한테 묻는다면 그렇다고 말할 자신은 없다. 하지만 그 외에 딱히 대안이 없는거 같다.
그리고 잘 정의해서 사용해 보면 왠만한 경우 다 대응이 가능하다.

유스케이스 정의서를 작성하면서 "유스케이스 시나리오를 액티비티 다이어그램과 같이 비쥬얼하게 만들면 좋지 않을까" 하는 생각을 많이 했다. 역시 그런 툴이 있었다. 툴이름은 Visual Use Case
스크린 샷을 가지고 이 툴을 사용하는 시나리오를 생각해 보자.

1.먼저 유스케이스 시나리오를 작성한다.
사용자 삽입 이미지

2.이 시나리오를 가지고 액티비티 다이어그램을 만든다.
사용자 삽입 이미지

3.이 액티비티에 해당하는 유스케이스 다이어그램을 그린다.
사용자 삽입 이미지
위 세가지-유스케이스 시나리오, 액티비티 다이어그램, 유스케이스 다이어그램은 하나의 레파지터리로 관리되어야 하고 한쪽에서 수정을 하면 다른쪽에도 반영이 되어야 한다.
물론 이런식으로 쓰려면 시나리오를 작성할때 잘, 열심히 작성을 해야 하는데 이는 요구사항을 충실히 받게 되면 가능하리라 본다.

TDD가 좋은건 알지만 테스트 코드작성에 시간이 드는건 어쩔수 없다. 유스케이스가 좋은건 알지만 그걸 실제로 작성하는데 걸리는 시간이 많이 드는것도 어쩔수 없는 현실이다. 그렇다면 시간이 많이 걸린다고 불평할게 아니라 이를 줄여주는 툴로 시간을 절약하고 업무에 전념하는게 현명하게 일하는게 아닐까요.
돈 좀 쓰시죠. :-)


참조 : http://pragmaticstory.com/tag/유스케이스
저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,

Windows hosts 파일

FUNDAMENT CONCEPT 2011. 9. 28. 09:14

* Windows hosts 파일 이용하기 *

 

1. Hosts 파일이란?

 

윈도우나 여타 so의 hosts 파일을 사용함으로써 비로소 여러분은 광고를 차단할 수 있고 추적으로부터도 벗어날 수 있다. 그렇다면 hosts 파일이란 무엇이며 어떻게 광고와 추적을 중단시킬 수 있는가?

 

간단히 답하면 다음과 같다:

 

hosts 파일은 비유하자면 주소록과 같은 것이다. 우리가 www.yahoo.com과 같은 주소를 컴퓨터에 쳐놓으면 브라우저는 이 사이트의 `전화번호`격인 ip주소가 있는지 hosts 파일을 찾아본다.

 

그래서 있으면 컴퓨터는 그 번호로 전화하게 되고 사이트가 열리게 된다. 그런데 만약 없으면 컴퓨터는 당신의 ISP(인터넷서비스 공급자) 컴퓨터에 해당 `전화번호`를 조회하고 그 후에야 비로소 사이트를 호출할 수 있게 된다. 대개 우리는 주소록에 아무것도 수록해두지 않아 거기에 번호가 없기 마련이므로 거의 모든 경우 컴퓨터는 ISP에 ip주소를 요청하게 되는 것이다.

 

만약 컴퓨터 hosts 파일에다 자신의 ip주소로 광고서버의 이름을 넣어두면 컴퓨터는 끝내 그 광고서버에 접속할 수 없게 된다. 이유인즉 컴퓨터가 서버에 접속시도는 하나 (그 서버대신) 자기자신을 호출하는 꼴이 되어 결국 일종의 `접속폭주` 신호만 받게 되는 것이다. 그리하여 컴퓨터는 광고서버로의 접속을 포기하게 되고 결과적으로 광고 페이지가 뜨거나 내가 추적을 당하는 일이 없게 되는 것이다. 이런 식으로 우리는 광고서버, 혐오스런 컨텐츠 서버나 기타 막고 싶은 사이트를 차단할 수 있다.

 

좀 더 길게 기술 관련 쪽으로 답을 하자면:

 

윈도우나 여타 os의 hosts 파일은 호스트명(이름)과 ip주소를 짝짓기 위해서 쓰인다. 호스트명이란 www.yahoo.com과 같이 우리가 일상적으로 보는 주소를 말하고 ip주소는 동일한 주소를 일련의 숫자로 나타낸 것인바 컴퓨터는 주소를 찾기 위해 사실상 이 숫자를 이용한다.

 

그러나 인간은 www.yahoo.com과 같은 언어를 가졌으므로 어떤 사이트를 찾고자 할 때 이러한 숫자의 긴 배열을 사용하는 것이 불필요한 것이다.

 

일례로 Yahoo! 사이트의 호스트명은 www.yahoo.com이지만 ip주소는 204.71.200.67인데 이 둘중 어떤 것을 사용해도 Yahoo! 사이트에 들어갈 수 있지만 www주소는 일차적으로 ip주소로 변환되어야 한다. 따라서 만약 우리가 직접 ip주소를 입력한다면 컴퓨터는 이를 찾지 않아도 되는 것이다.

 

이들 호스트명과 관련된 ip주소를 찾기 위해서 컴퓨터가 일련의 단계를 밟는 바, 그 첫번째가 우리의 관심사인 개개 컴퓨터의 hosts 파일이다. hosts 파일은 컴퓨터에게 해당 호스트명이 숫자로는 무엇인지를 가르쳐줘서 그 사이트를 찾게하는 역할을한다. 만일 hosts 파일내에서 ip주소가 발견되면 컴퓨터는 더이상 찾지않고 곧바로 그사이트로 가지만 그렇지 않으면 DNS컴퓨터(도메인 네임 서버)에 이에 관한 정보를 요청하게 된다. 일단 호스트명과 관련 ip주소의 짝이 발견되면 이 탐색과정이 끝나는 원리를 이용해서 우리는 원치않는 사이트를 차단하는 메카니즘을 얻는 것이다.

 

 

우리가 www.yahoo.com와 같은 웹 주소를 쳐 넣으면 호스트명에 해당하는 부분이 ip주소로 변환된 연후에 그 사이트에 접속이 되는데, 만약 호스트명과 관련 ip의 짝이 이미 hosts 파일 속에 들어 있으면 컴퓨터가 변환된 ip주소를 찾기 위해서 다른 데서 묻지 않아도 되므로 좀더 빨리 해당 페이지를 로딩 받을 수 있게 되는 것이다.

 

 

모든 컴퓨터는 우리가 `localhost` 주소라고 부르는 자신의 주소를 갖고 있는데, 즉 127.0.0.1이다. 컴퓨터는 이 주소로 자신을 지칭한다. 그런데 만약 다른 컴퓨터의 호스트명과 자기 컴퓨터의 ip주소를 연관시켜 짝 지워 버리면 그 사이트로의 모든 접속시도가 자신에게로 되돌아 오게 되므로

 

결국 효과적인 차단방법이 되는 것이다. 이것이 hosts 파일을 이용해 특정 사이트를 막는 방법이다.

 

우리가 차단코자 하는 사이트의 ip주소가 곧 자신의 주소라고 컴퓨터에 알려주면 컴퓨터는 영원히 그 사이트를 찾아 나서지 않을 것이다. 그리고는 이미 자신이 그 사이트를 찾아서 우리에게 보여주고 있다고 생각할 것이므로 결국 그 사이트가 우리의 시야에서 사라지게 된다.

 

 

결과는 당연히 컴퓨터는 아무것도 못 찾고 찾기를 그만두게 되며 그 페이지에서 우리가 보고자 하는 해당 부분만 계속 로딩하게 되는 것이다. 심지어 우리는 이 방법으로 컴퓨터가 광고 서버에 정보를 전송하는 것조차 막을 수가 있기 때문에 싫은 광고물을 안보는 것은 물론 그들이 하드 드라이브에 쿠키를 심어 우리의 정보를 빼가는 것도 막을 수 있다.

 

 

2. 잇점과 제약

 

(1) hosts 파일의 잇점

 

첫째, 리소스를 적게 잡아먹는다:

 

운영체제에 포함된 기능을 사용하므로 별도의 광고차단 프로그램을 설치하지 않아도 된다. 따라서 그만큼의 메모리나 cpu를 다른 분야에 활용할 수 있다.

 

둘째, http 이외의 접속에서도 작동한다:

 

대부분의 광고차단 프로그램은 컴퓨터상의 http (혹은 웹) 포트로 가는 ip 호출만 차단하므로 여타 전송들 (transfers)은 통과한다. 하지만 hosts 파일은 http, ftp는 물론 그외 어떤 포트 (port)로의 ip 호출도 모두 차단한다.

 

셋째, 수많은 추적 및 보안관련 우려를 종식시킨다:

 

hosts 파일은 광고와 추적 관련 회사들로 하여금 우리가 그들이 이용하는 웹페이지를 본다는 사실을 감지조차 못하게 막을 수 있는데, 이는 ip 호출이 우리의 컴퓨터를 미처 떠나기도 전에 가로 막음으로써 가능한 것이다. 이로써 그들이 우리를 부당하게 이용하는 것을 막고 우리의 보안유지를 돕는다. 127.0.0.1 주소와 함께 입력된 모든 사이트는 영원히 접속이 불가능하게 된다. 하지만 hosts 파일에 등재되지 않은 사이트는 여전히 우리를 추적하는 것이 가능하고 광고도 보낸다.

 

 

넷째, hosts 파일은 우리 자신이 설정가능하다:

 

hosts 파일은 내가 차단할 사이트 목록을 남이 결정해 주는 게 아니라 내 스스로 편집할 수 있다.

 

이것은 우리가 접근을 허용하지 않는 어떤 사이트라도 hosts 파일 내에 포함시킬 수 있다는 말이다. 여기에는 광고나 추적 사이트는 물론 당신의 자녀들이 보지 말았으면 하는 사이트들도 포함될 수 있다. 차단하고자 하는 사이트는 순전히 자신이 결정할 문제이며 전혀 다른 사람의 판단에 의존할 성질이 아니라는 것이다.

 

 

다섯째, 브라우저의 속도 향상이다:

 

방문코자 하는 사이트의 정확한 주소를 hosts 파일에 넣어 줌으로써 우리의 컴퓨터가 다른 컴퓨터에 문의하는 일을 덜 수 있는데, 이는 번호부를 조회하지 않고 그 사이트로 곧바로 찾아 감으로써 서핑 속도를 상당히 향상시킨다. 또한 hosts 파일을 이용한 차단기술로 광고의 로딩을 막아 웹 페이지를 훨씬 더 신속하게 볼 수 있는데, 이런 광고가 대개 화려한 그래픽으로 구성된 연유에서다.

 

 

(2) hosts 파일의 한계점

 

 

첫째, 와일드 카드를 쓸 수 없다:

 

즉, *.advertisement.com과 같은 호스트명을 넣을 수 없다.

 

 

둘째, ip 넘버로 된 주소로는 작동하지 않는다:

 

www.sitename.com과 같은 주소가 아닌 ip 주소는 컴퓨터가 웹페이지를 찾을 때 실제로 쓰는 것이다. 전자는 다만 인간이 긴 숫자열을 기억하지 않기 위해 존재하는 것이다. 여기서 우리가 할 일은 ip 넘버에 상응하는 www.sitename.com과 같은 주소를 찾아 ip주소 대신 이 주소를 막아야 하는 것이다.

 

예를 들면 Yahoo의 ip 주소인 201.71.200.67이 아닌 www.yahoo.com만 막을 수 있는 것이다. 그 이유는 hosts 파일의 용도가 ip 주소를 결정짓기 위한 것이기 때문이다. 만약 우리가 이미 ip 주소를 안다면 (그리고 그것을 입력한다면) 컴퓨터는 hosts 파일을 찾지 않을 것이고 그러면 해당 사이트를 막지 못할 것이다.

 

 

 

 

셋째, hosts 파일은 우리가 현재 보고 있는 사이트에서 제공하는 광고는 차단하지 못한다:

 

그 이유는 host 파일이 사이트 전체를 차단하지 한 사이트의 subdirectory 나 pathname만 막지는 못하기 때문이다. 일례로 subdirectory를 못 막기 때문에 www.netscape.com/ads/는 막지 못

 

한다. 다만 www.netscape.com로써 전체 서버를 막아야 하며 그렇게 되면 Netscape사이트에 접속이 불가능해진다. 따라서 현재 보는 사이트의 광고를 차단하려면 다른 광고차단 프로그램을 써야 할 것이다.

 

넷째, 어떤 사이트에는 이상작동을 유발할 수 있다:

 

만약 잘못하여 엉뚱한 사이트를 hosts 파일에 포함시키면 틀림없이 더이상 그 사이트를 정상적으로 볼 수 없게 된다. 이 경우 hosts 파일 리스트에서 해당 사이트를 제외시키면 고쳐질 것이다. 그리고 특정 서버에 종속된 사이트의 경우, 그 서버를 리스트에 포함시키면 그에 종속된 사이트도 함께 보지 못하게 됨을 유념해야 한다.

 

3. 구체적인 hosts 파일 이용법

 

 

(1) hosts.zip 파일을 내려 받아 압축을 푼다:

 

 

이 파일의 가장 최근 업데이트는 2002.5.27일에 되었다. Stephen Martin이 만든 리스트이며 그의 사이트에서 가져온 것이다. 현재 차단 서버 수는 12,800여개이다. 내가 다른 사이트에서 가져오는 것이므로 차단 서버 숫자나 업데이트 날짜는 항시 변동이 있을 수 있음을 밝히며 실제 릴리스 날짜에 정확히 바꿀 수 없음을 밝힌다. 그러나 위의 링크에서 다운받는 것은 가능한 최신 버전이다.

 

 

위에 있는 본보기 대신 자신만의 hosts 파일을 만들고 싶다면 이것을 다운받아 그 안에 있는 지시에 따라 파일의 내용을 추가하고 배치하면 된다.

 

만약 Windows 2000이나 XP Pro사용자라면 먼저 다음 페이지를 볼 필요가 있음*

 

* Windows 2000이나 XP Pro에서 hosts 파일이 작동하지 않을 경우 어떻게 해야 하는가?

 

먼저 hosts 파일의 맨위에 있는 "127.0.0.1 localhost"를 사용해서 시험해보고, 안되면 hosts 파일

 

내 모든 내용을 0.0.0.0에서 127.0.0.1포맷으로 바꾸어 시도해 본다.

 

Windows 2000이나 XP Pro사용자중 hosts 파일의 크기가 아주 큰 것을 사용하는 경우 시스템의 속도나 접속이 느려지는 수가 있다. 대부분의 경우 전화접속 모뎀 사용자에게서 나타나는 현상이지만 광대역 접속자에게서도 일어날 수 있다.

 

 

Windows 2000이나 XP Pro는 또한 DNS 캐시라 불리는 서비스를 포함하고 있는데 서비스 리스트의"DNS Client"라는 곳에서 찾을 수 있다. hosts 파일이나 DNSKong같은 것을 쓰기 위해서는 이 서비스를 중단시키거나 disable로 할 필요가 있다. 어떤 컴퓨터에서는 이 서비스를 disable시키지 않고도 hosts 파일을 동작시킬 수 있지만 이것을 끄고 disable시키는것이 안전하다. 이 기능을 꺼도 여러분은 결코 특이점을 감지하지 못할 것이다. 내가 아는 한 다른 어떤 윈도우도 이런 서비스를 제공하지 않는다.

 

 

(2) 컴퓨터에서 기존의 hosts 파일을 찾는다:

 

 

Windows 95/98/Me c:windowshosts

 

Windows NT/2000/XP c:windowssystem32driversetchosts 또는

 

c:winntsystem32driversetchosts

 

(Windows NT/2000/XP에서는 administrator 액세스가 요구됨)

 

주의: hosts는 hosts 파일의 이름이지 또 다른 디렉토리 이름이 아님. 확장자가 없음으로 해서 위의 예에서 또 다른 디렉토리로 보일 뿐임.

 

 

기존의 hosts 파일이 없는 상태라면 위에서 다운받아 압축을 푼 파일을 해당 os의 디렉토리에 넣어주면 된다. 그렇게 했으면 (4)로 넘어가고 아니면 (3)으로 진행.

 

 

경고: 만일 자신의 컴퓨터에 이미 hosts 파일이 있다면 추후 광고차단 효과가 불만족스럽거나 이 파일의 설치과정에서 오류가 발생할 시 복구에 대비해서 플로피 디스크나 하드 드라이브의 다른 디렉토리에 백업해둘 것을 권고한다. 예상치 못한 불행한 사태를 당하고 후회하는 것보단 안전한 것이 항상 나은 법. 백업본을 준비할 것.

 

 

(3) 만약 컴퓨터에 이미 hosts 파일이 있다면 이 단계만 실행하면 된다:

 

 

notepad로 hosts 파일을 열어보면 대략 다음과 같이 보일 것이다.

 

 

# Copyright (c) 1998 Microsoft Corp.

 

# This is a sample HOSTS file used by Microsoft TCP/IP stack for Windows98

 

# This file contains the mappings of IP addresses to host names. Each

 

# entry should be kept on an individual line. The IP address should

 

# be placed in the first column followed by the corresponding host name.

 

# The IP address and the host name should be separated by at least one

 

# space.

 

# Additionally, comments (such as these) may be inserted on individual

 

# lines or following the machine name denoted by a `#` symbol.

 

# For example:

 

# 102.54.94.97 rhino.acme.com # source server

 

# 38.25.63.10 x.acme.com # x client host

 

127.0.0.1 localhost

 

 

자신의 hosts 파일 내용이 이와 꼭 같다면 백업만 해두고 삭제한다. 이후 다운받은 파일을 위에서 말한 각 디렉토리에 압축을 푼다.

 

c:windows (Windows 95/98/Me)

 

c:windowssystem32driversetc 또는 c:winntsystem32driversetc (Windows

 

NT/2000/XP Pro)

 

만약 hosts 파일에 다른 데이터가 존재하면 계속 진행하기 전에 꼭 백업해 놓는다. 자신의 파일 내용이 위에것과 비슷한데 추가로 다른 내용을 담고 있다면 좀 더 작업이 필요하다. 일례로

 

CookieCop Plus란 프로그램을 쓴다면 코멘트 부분 (#가 달린 부분: 역자주) 이후에 다음 부분이

 

들어가 있는게 보일 것이다.

 

127.0.0.1 localhost

 

127.0.0.1 CookieCop

 

기존의 파일에 이와 같은 부가적인 내용이 있으면 새 hosts 파일에도 동일한 내용을 넣고자 할 것이다. 방법은 현재의 hosts 파일을 백업후 이폴더에 다운받은 파일의 압축을 풀고 텍스트 편집기

 

를 이용해 이를 연다 (win 9x - wordpad; 2k,xp - notepad). 그리고 백업해둔 파일에서 해당 라인을 새로 넣은 파일로 복사해온다. "127.0.0.1" 또는 유사한 ip 넘버로 시작하는 라인들을 복사해서 새 리스트의 하단부에 추가해준 뒤 텍스트 편집기 파일에 저장하면 된다. 이 파일이 확장자 없이 저장되었는지 확인코자 한다면 "hosts"란 이름을 `다른 이름으로 저장`할때 넣어주면 된다. 확장자와 같이 저장되는 것 (예: *.txt)을 방지하기 위해 반드시 " "를 붙여줘야 한다. 만약 확장자가 붙은 것이 확인되면 이름 바꾸기를 해서 확장자를 삭제해 hosts로 바꾸면 될 것이다.

 

 

(4) 만약 프락시 서버를 이용한다면:

 

 

프락시 서버를 이용하는 사람에 한해서 이 단계가 필요하다. 프락시 서버의 예로는 WebWasher, CookieCop Plus, 그리고 ISP에 의해서 제공되는 웹 캐시 서버등이 있다. 만약 프락시 서버를 이용하지 않는다면 이곳을 건너뛰어 바로 (5)단계로 가면된다. 만약 hosts 파일이 옳게 작동하지 않는 것 같은데도 이 단계를 건너 뛰었다면 되돌아 와서 이 과정을 마치기 바란다.

 

 

익스플로러에서는 도구-인터넷 옵션- 연결을 눌러 자신의 연결 방식을 선택한다. 만약 프락시 서버를 이용한다면 "bypass proxy server for local addresses" (주소 찾기시 프락시 서버 건너뛰기)에 체크되어 있는지 확인한다.

 

 

넷스케이프의 경우 편집-설정-고급-프락시로 가서 수동 설정을 클릭한 다음 보기를 클릭하고 아래에 있는 예외 박스에 127.0.0.1을 쳐넣어 준다.

 

 

(5) 앞서 설명한 것중 이것을 놓치고 못본 경우에 대비한 경고:

 

 

만약 어떤 사이트가 hosts 파일에 수록되고 그 주소가 127.0.0.1에 맞춰져 있다면 그 사이트는 웹으로 부터 내컴퓨터에 로딩될 수 없다. 이것은 광고 사이트를 차단하는 방법이지만 동시에 보고자 하는 사이트를 못보게 될 수도 있다는 말이다. 접속이 불가능해 보이는 사이트를 보고자 한다

 

면 hosts 파일안에서 그 주소가 혹시 들어 있나 살펴서 있으면 제거해주면 된다. 끝내고 저장하면 그 사이트를 다시 볼 수 있게된다.

 

 

만약 hosts 파일의 기능을 완전히 중지시키고 싶다면 이름을 바꾸어 hosts.txt로 만들면 될 것이고, 다시 기능을 회복시키려면 이름을 hosts로 환원하면된다.

 

 

* 도스창에서 hosts 파일의 이름을 바꾸려면 다음과 같이 입력하면된다:

 

 

기능을 중지시킬 때: cd windows 엔터

 

rename hosts hosts.txt 엔터

 

 

기능을 회복시킬 때: cd windows 엔터

 

rename hosts.txt hosts 엔터 (이상 windows 9x)

 

 

어쩌다 hosts 파일뒤에 확장자가 붙어 버렸을 때도 이 방법으로 이름을 바꿔줄 수 있다.

 

그리고 NT/2000/XP의 경우 첫번째 명령행에 windows대신 windowssystem32driversetc

 

나 winntsystem32driversetc로 바꿔 입력하면 된다.

 

 

*만약 프락시 서버를 이용중이라면 이렇게 하면 안된다. 이렇게 하면 프락시가 작동하지 않게 되기 때문인데 이 경우 hosts 파일에서 프락시 주소를 제외한 모든 내용을 깨끗이 삭제하면 기능 중지와 같은 효과를 얻을 수 있다. 기능을 다시 회복시킬 때는 삭제했던 모든 내용을 hosts 파일내에 붙여넣어주면 된다.

 

 

(6) 그리고 나서 늘 해오던 대로 브라우저를 사용하면 즐거운 서핑이 될 것이다.

 

 

hosts 파일의 설정이 옳게 되었는지 시험해 보려면 파일에 등재된 사이트 이름 www.xxx.com을 입력해서 접속이 이루어지나 보면된다. 접속이 되지 않는다면 옳게 된 것이다. 만약 문제가 있다면 브라우저를 닫았다 다시 열어보든지 재시도 전에 캐시를 비워본다. 경우에 따라서는 재부팅이 필요할지도 모른다. 다른 시험방법은 방문하는 사이트의 대다수 광고창이 차단되는가 보는 것이다. 물론 내가 앞서 들었던 한계점 때문에 모든 광고가 다 차단되지는 않을지 모른다. 그러나 평소에 광고가 있던 위치가 비어 있다면 효과가 나타나고 있다고 말할 수 있는 것이다.

 

 

(7) 매일 새로운 광고서버가 생겨나고 있다.

 

이러한 신생 서버의 리스트는 Stephen Martin의 Hosts File Updates 페이지에 있다. 그곳에서 새로운 업데이트를 받아서 이미 설명한 방식으로 hosts 파일의 리스트에 붙여 넣으면 된다.

 

 

4. 주의사항

 

 

모든 사용자:

 

이 방법은 대다수 사용자들의 컴퓨터에서 옳게 작동하는 것으로 보였지만 불행하게도 모든 컴퓨터에서 제 가능을 발휘한다고 보장할 수 없다. 여러분에게 제 기능을 해주길 빌지만 새로운 것을 시험해 보기 전에는 데이터를 잃어버리는 것을 방지하기 위해서 반드시 시스템을 백업해 둘 것을 촉구한다.

 

 

고려사항:

 

hosts.txt 파일을 제공한다. 하지만 이 리스트에 있는 모든 모든 서버를 다 막아야 한다는 의미가 아니다. 그 서버를 차단하고 안하고는 개인적인 선택사항이고 본보기 파일은 원할 경우 막을 수 있는 서버들에는 어떠한 것들이 있나를 보여주기 위해서 제공하는 것이다.

 

여러분은 이들 모두를 차단할 수도, 일부만 할 수도, 또는 아무 것도 차단 하지 않을 수도 있지만 이는 전적으로 자신이 결정할 일인 것이다. 또한 인터네상의 모든 광고서버가 이 리스트에 등재된 것은 아니므로 각자가 자신의 리스트에 더 추가할 수도 있고 경우에 따라서는 광고를 보기위해서 리스트에서 일부 내용을 삭제할 수도 있다.

 

다시 말하지만 이것은 Stephen Martin의 사이트에서 가져온 본보기 리스트이며 모두 자신에게 적합한 방식으로 사용할 수 있다. 리스트상의 일부 혹은 모든 서버를 차단하고 싶지 않다면 노트패드로 리스트를 연 다음 해당 라인을 지워주면 된다.

 

 

프라이버시 유지에 관심 있는 분들을 위한 마지막 주의사항:

 

반복되는 말이지만 hosts 파일에 등록되지 않은 서버는 그 내용이 아무것도 차단되지 않을 뿐더러 여러분에 관한 정보를 빼가려고 시도할 수도 있고 계속 쿠키를 보낼 수도 있다. 만약 이러한 짓을 하는 서버가 있음에도 hosts 파일의 리스트에 올려 두지 않았다면 교신을 막기 위해 추가로 등록할 수 있을 것이다. hosts 파일은 개인의 프라이버시 확보를 돕는 꽤 좋은 방법이긴 하지만 이는 밟아야 할 여러 단계의 조치중 하나에 불과하다. 프라이버시에 관하여 더 많은 것을 보고자 하면 Privacy.net을 방문해 보기를 권한다.

 


저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,

[DBMS] ODBC, OLEDB, ADO 개념 정리

FUNDAMENT CONCEPT 2011. 9. 27. 10:39

# ODBC (Open Database Connectivity)

: 예전의 데이터베이스는 폐쇄적으로 각 데이터베이스에서 제공하는 클라이언트가 없으면 데이터베이스 서버로 접근이 불가능 했다.

이러한 문제점을 보완하기 위해서 MS에서 ODBC라는 기술을 개발했다.

그림에서 알 수 있드시 ODBC를 사용하면 모든 DBMS에 접근이 가능하다.

여기서 더 발전된 기술이 oleDB 다.

# OLEDB

: ODBC를 모든 데이터베이스에 접근이 가능한 반면, oleDB 기술은 MS에서 UDA(Universal Data Access)란 개념을 체택 광범위한

데이터에 접근 할 수 있다. UDA는 실제 사용되는 기술이 아니라 개념일 뿐이다.

-> ADO와 oleDB를 이용하여 광범위한 데이터를 처리하는 기술을 UDA라고 한다.

# ADO(ActiveX Data Object)

: ODBC와 OleDB는 데이터베이스를 연결하는 기술인반면, ADO는 연결된 통로를 통해서 데이터를 직접 가공하는 데이터를 핸들링 할

수 있는 기술이다.(데이터를 처리하는 기술을 담당한다.)

==> ODBC는 이기종의 데이터베이스(거의 모든 관계형 데이터베이스)에 접근을 가능하게 해주는 표준적인 방법인 반면에

oleDB는 이기종의 데이터베이스뿐만 아니라 비 관계형 데이터에도 접근이 가능, 즉 SQL서버나 Oracle, DB@ 뿐만 아니라

메일, 메일폴더, 텍스트, 디렉토리, 웹사이트등 비관계형 계층구조적인 데이터들에게도 접근을 가능하게 한다.

==> ADO : 데이터를 다루는 객체(데이터를 처리하는 기술)

ODBC, oleDB : 데이터 제공자 (원본 데이터를 사용할 수 있게 연결해주는 기술)

# ODBC보다 oleDB가 좋은 이유...

1. ODBC는 파일을 만들고, 제어판에 들어가서 DSN 설정을 잡아야 한다.

반면, oleDB는 소스 부분에 oleDB 연결 스트링만 추가하면 된다.

2. ODBC로 개발한 소스는 다른 서버로 옯기면 바로 작동하지 않는다. 옮긴 서버의 DSN 설정을 잡아줘야 한다.

반면, oleDB의 경우라면 아무런 조건 없이 그대로 작동한다.(MDB의 경우 폴더 위치만 같으면 된다.)

3. oleDB를 웹호스팅 환경에서 사용하는 경우, 서버의 관리자가 , DNS Setting을 해주어야 한다.

반면, oleDB는 관리자의 도움없이 가능하다.

(ASP에는 Win2000 등 NT기반 서비스이며, DSN Setting을 하려면 터미널서비스를 열거나 로컬 로긴을 해야한다.

일반적으로 NT계열은 보안 문제로 일반 유저에게 이러한 관한을 주지 않기 때문에 ODBC 설정을 하려면 관리자의 도움이 필요하다)

~ 출처

- 내용 및 그림은 태오님 사이트에서...

- http://www.taeyo.pe.kr/lecture/9_Board2001/Board2001_02.htm

[출처] [DBMS] ODBC, OLEDB, ADO 개념 정리...|작성자 콧구멍억만개

저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,

LOGRT : LOCATION MASTER DATA 조회

ERP/SAP/R/3 2011. 7. 26. 11:10





저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,

Class Pattern 기능

ERP/SAP/R/3 2011. 7. 20. 11:19





인스턴스 메소드 호출과 파라미터에 대한 스크립가 화면에 자동으로 입력된다.

저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,

ALV - 전표 프로그램

ERP/SAP/R/3 2011. 7. 19. 20:52

  *&---------------------------------------------------------------------*
*& Report  ZRED_TEST2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZRED_TEST2  MESSAGE-ID f5 NO STANDARD PAGE HEADING LINE-SIZE 150.


TABLES: bkpf, bseg.

DATA: it_01 LIKE bkpf OCCURS 0 WITH HEADER LINE.

TYPE-POOLS:slis.
 DATA: l_pos TYPE i VALUE 0.
 DATA: fieldcat TYPE slis_t_fieldcat_alv,
           fieldcat_ln LIKE LINE OF fieldcat.

DATA: sortcat TYPE slis_t_sortinfo_alv,
           sortcat_ln LIKE LINE OF sortcat.

DATA: eventcat TYPE slis_t_event,
           eventcat_ln LIKE LINE OF eventcat.


DATA: BEGIN OF it_02 OCCURS 0,
         bukrs  LIKE  bkpf-bukrs,  "회사코드
         belnr  LIKE  bkpf-belnr,  "전표번호
         gjahr  LIKE  bkpf-gjahr,  "회계연도
         blart  LIKE  bkpf-blart,  "전표유형
         bldat  LIKE  bkpf-bldat,  "증빙일
         budat  LIKE  bkpf-budat,  "전기일
         stblg  LIKE  bkpf-stblg,  "역분개전표
         stjah  LIKE  bkpf-stjah,  "연분개전표 회계연도
         waers  LIKE  bkpf-waers,  "통화키
         buzei  LIKE  bseg-buzei,  "개별항목번호
         bschl  LIKE  bseg-bschl,  "전기키
         shkzg  LIKE  bseg-shkzg,  "차변/대변 지시자
         dmbtr  LIKE  bseg-dmbtr,  "현지통화금액
         wrbtr  LIKE  bseg-wrbtr,  "전표통화금액
         sgtxt  LIKE  bseg-sgtxt,  "적요
       END OF it_02.


******************************************************************************
* SELECTION SCREEN
******************************************************************************
 SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: p_bukrs LIKE bkpf-bukrs OBLIGATORY MEMORY ID buk,       "회사코드
             p_gjahr LIKE bkpf-gjahr OBLIGATORY DEFAULT sy-datum.   "회계연도

SELECT-OPTIONS: s_belnr FOR bkpf-belnr.                            "회계전표번호

SELECTION-SCREEN END OF BLOCK b1.

******************************************************************************
* START-OF-SELECTION
******************************************************************************
 START-OF-SELECTION.

* READ BKPF
   PERFORM read_bkpf.

* READ BSEG
   PERFORM read_bseg.

* MERGE_DATA
   PERFORM merge_data.

******************************************************************************
* END-OF-SELECTION
******************************************************************************
 END-OF-SELECTION.

* AVL report
   PERFORM build_filedcat.                 " 필드 지정을 위한 폼
   PERFORM build_eventcat.               " 이벤트 처리 폼[선택사항]
   PERFORM build_sortcat.                 " 정렬 폼[선택사항]
   PERFORM alv_write USING 'G'.       " 출력 폼

* 처리에 필요한 form정보 포함.  (inc)
*   INCLUDE zred_test2_dataproc. "[기본 입력처리 폼 구성]
*   INCLUDE zred_test2_header. "[ALV 출력처리 폼 구성]
*


* INCLUDE문장 구성 *  ZRED_TEST2_DATAPROC "(dataproc)  △
*--------------------------------------------------------------------------------

*&---------------------------------------------------------------------*
*&  Include           ZRED_TEST2_DATAPROC
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  READ_BKPF
*&---------------------------------------------------------------------*
*      BKPF 내역 READ
*----------------------------------------------------------------------*

 form read_bkpf.
   clear it_01.                                      "INTERNAL 테이블 초기화

  select *
     into corresponding fields of table it_01
     from bkpf
    where bukrs = p_bukrs
     and gjahr = p_gjahr
     and belnr in s_belnr .

    if sy-subrc <> 0.                              "오류체크
       message s170.
       leave list-processing.
     endif.


endform.                                           " READ_BKPF


*&---------------------------------------------------------------------*
*&      Form  READ_BSEG
*&---------------------------------------------------------------------*
*       BSEG 내역 READ
*----------------------------------------------------------------------*

form read_bseg .
   clear it_02.
   refresh it_02.

  select *
     into corresponding fields of table it_02
     from bseg
    where bukrs = p_bukrs
      and gjahr = p_gjahr
      and belnr in s_belnr .

endform.                    " READ_BSEG


*&---------------------------------------------------------------------*
*&      Form  MERGE_DATA
*&---------------------------------------------------------------------*
*       IT_01 + IT_02 MERGE
*----------------------------------------------------------------------*

form merge_data .
   sort it_01 by bukrs gjahr belnr.
   sort it_02 by bukrs gjahr belnr.

  loop at it_02.
     read table it_01 with key bukrs = it_02-bukrs
                               gjahr = it_02-gjahr
                               belnr = it_02-belnr
                               binary search.
     if sy-subrc <> 0.
     else.
       it_02-blart = it_01-blart.
       it_02-bldat = it_01-bldat.
       it_02-budat = it_01-budat.
       it_02-stblg = it_01-stblg.
       it_02-stjah = it_01-stjah.
       it_02-waers = it_01-waers.
     endif.

    if it_02-shkzg = 'H'.
       it_02-dmbtr = it_02-dmbtr * -1.
       it_02-wrbtr = it_02-wrbtr * -1.
     endif.
     modify it_02.
  endloop.

endform.                    " MERGE_DATA



* INCLUDE문장 구성 * ZRED_TEST2_HEADER (header) △

*&---------------------------------------------------------------------*
*&  Include           ZRED_TEST2_HEADER
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  BULLD_FILEDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

form build_filedcat ." (fieldcat)

* 회사코드
   l_pos = l_pos + 1.
   clear fieldcat_ln.
   fieldcat_ln-col_pos = l_pos.                        " 필드 위치
   fieldcat_ln-fieldname = 'BUKRS'.                 " 필드명
   fieldcat_ln-reptext_ddic = '회사코드'.           " 필드 레이블
   append fieldcat_ln to fieldcat.

* 회계연도
   l_pos = l_pos + 1.
   clear fieldcat_ln.
   fieldcat_ln-col_pos = l_pos.
   fieldcat_ln-fieldname = 'GJAHR'.
   fieldcat_ln-reptext_ddic = '회계연도'.
   append fieldcat_ln to fieldcat.

* 전표번
   l_pos = l_pos + 1.
   clear fieldcat_ln.
   fieldcat_ln-col_pos = l_pos.
   fieldcat_ln-fieldname = 'BELNR'.
   fieldcat_ln-reptext_ddic = '전표번'.
   append fieldcat_ln to fieldcat.

endform.                    " BULLD_FILEDCAT


*&---------------------------------------------------------------------*
*&      Form  build_sortcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
 form build_sortcat. "(sortcat)
   sortcat_ln-spos = '1'.                            " 정렬하고자 하는 필드 순서.
   sortcat_ln-fieldname = 'BUKRS'.            " 정렬 필드 지정.
   sortcat_ln-up = 'X'.                                " 정렬(asc) 설정 'X', 해제 space.
   sortcat_ln-down = space.                      " 정렬(desc) 설정 'X', 해제 space.
   sortcat_ln-subtot = space.                     " 합계 지정 'X', 해제 space.
   append sortcat_ln to sortcat.

endform.                    "build_sortcat


*&---------------------------------------------------------------------*
*&      Form  eventcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
 form build_eventcat. "(eventcat)
   eventcat_ln-name = 'TOP_OF_PAGE'.
   eventcat_ln-form = 'PAGE_HEADER'.

  append eventcat_ln to eventcat.

endform.                    "build_eventcat

*&---------------------------------------------------------------------*
*&      Form  alv_write
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FLAG       text
*----------------------------------------------------------------------*
 form alv_write using flag type c. "(write)

  data: pgm like sy-repid.
   pgm = sy-repid.

  data: disp_mode(30).

*출력 형식을 그리드와 리스트형으로 구분하여 출력.
   if  flag = 'G'.
     disp_mode = 'REUSE_ALV_GRID_DISPLAY'.        " 그리드 형식
   else.
     disp_mode = 'REUSE_ALV_LIST_DISPLAY'.         " 리스트 형
   endif.

  call function disp_mode
     exporting
       i_callback_program      = pgm
       i_callback_user_command = 'USER_COMMAND'
       it_fieldcat             = fieldcat
       it_sort                 = sortcat
       i_save                  = 'U'
       it_events               = eventcat
     tables
       t_outtab                = it_02
     exceptions
       program_error           = 1
       others                  = 2.

endform.                    "alv_write


*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
form user_command using r_ucomm type sy-ucomm
                                           rs_selfield type slis_selfield.
   case r_ucomm.
     when '&IC1'.
       read table it_02 index rs_selfield-tabindex.

      if it_02-belnr <> ' '.
         set parameter id 'BLN' field it_02-belnr.
         set parameter id 'BUK' field it_02-bukrs.
         set parameter id 'GJR' field it_02-gjahr.
         call transaction 'FB03' and skip first screen.
       endif.
   endcase.
 endform.                    "user_command

*&---------------------------------------------------------------------*
*&      Form  page_header
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
 form page_header.
   skip 1.
   write : '전표내역 ALV 프로그램 HEADER'.
   skip 1.
 endform.                    "page_header



전표 번호 더블클릭 : Pameter id에 회사코드, 회계연도, 전표번호를 저장하고 FB03 T-Code를 Call 하면 아래와 같은 세부정보를 보여준다.

저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,

ALV GRID - SLIS Package

ERP/SAP/R/3 2011. 7. 19. 20:01


ALV(abap list viwer)
SAP Standard에서 제공되는 View함수를 사용하는 프로그램
ALV를 통해 조회된 DATA를 수정/변경 할 수 있으며 신규 데이터도 입력 가능하다.

-주요기능-
정렬기능
필터링기능
열의 크기 변경
레이아웃 변경
더블클릭에 의한 추가 정보 제공
기본적인 계산 수행 기능
엑셀 파일 및 워드 문서 저장


실무에선 write로 된 리폿은 거의 안쓴다고.. ALV를 쓴다고 한다. 하긴... write 리폿은 너무 어려워..;;

강의시간에 배울 땐 어렵게 느껴졌는데, 집에와서 책보고 해보니 별거 아니라능..

PERFORM BUILD_FIELDCAT : 화면에 디스플레이할 필드를 정의
PERFORM BUILD_SORTCAT : 원하는 필드로 정렬하기 위한 레이아웃을 생성
PERFORM BUILD_EVENTCAT : 페이지의 header를 작성
PERFORM ALV_WRITE : field data 및 레이아웃 속성값과 인터널테이블 데이타를 Function Module인 'REUSE_ALV_LIST_DISPLAY'에 임포트


굳이 PERFORM문을 쓸 필요는 없지만 코딩은 깔끔하고 가독성이 있어야죠..

TYPE-POOLS : slis.
SLIS를 type-pool로 선언하여 프로그램에서 사용하겠다는 의미. TYPE-POOL이란 SAP에서 제공하는 각종 타입 및 Constants가 선언되어 있는 그룹이다.

*필드카탈로그
DATA : fieldcat TYPE slis_t_fieldcat_alv,
fieldcat_ln LIKE LINE OF fieldcat. "워크에어리아 생성 , 헤드만 있다.
*소트카탈로그
DATA : sortcat TYPE slis_t_sortinfo_alv,
sortcat_ln LIKE LINE OF sortcat.
*이벤트카탈로그
DATA : eventcat TYPE slis_t_event,
eventcat_ln LIKE LINE OF eventcat.
*write 카탈로그
DATA : pgm LIKE sy-repid.
pgm = sy-repid.
*디스플레이
DATA : ls_layout TYPE slis_layout_alv.


기존의 데이터베이스 테이블의 데이터를 가져오는 소스코드에서 추가하면 된다. ALV로 만들꺼..
주석달아서 필드, 소트, 이벤트, write 카탈로그 데이터를 선언한다.
slis_t_fieldcat_alv를 더블클릭하면 slis type-pool로 들어가는데.. 그곳에 type이 모두 정의되어 있다.. 백문이불여일견

PERFORM build_sortcat.
PERFORM build_eventcat.

fieldcat과 wirte는 그냥 프로그램에 써주었고 나머지는 인클루드시켜 perform으로 가져왔다.

DATA : BEGIN OF itab OCCURS 0,
carrid LIKE spfli-carrid,
connid LIKE spfli-connid,
fldate LIKE sflight-fldate,
cityfrom LIKE spfli-cityfrom,
cityto LIKE spfli-cityto,
planetype LIKE sflight-planetype,
END OF itab.

SELECT a~carrid a~connid a~fldate a~planetype b~cityfrom
INTO CORRESPONDING FIELDS OF TABLE itab
FROM sflight AS a
INNER JOIN spfli AS b ON a~carrid EQ b~carrid
WHERE a~carrid EQ 'LH'
AND a~planetype EQ 'A319'.

*LOOP AT itab.
* WRITE :/ itab-carrid,
* itab-connid,
* itab-fldate,
* itab-cityfrom,
* itab-cityto,
* itab-planetype.
*ENDLOOP.

*build field catalog

DATA : col_pos TYPE i.
*CLEAR : itab, itab[].


ADD 1 TO col_pos. "필드포지션 COL_POS에 + 1 1번
fieldcat_ln-fieldname = 'CARRID'. "반드시대문자
fieldcat_ln-reptext_ddic = '항공사번호'.
fieldcat_ln-col_pos = col_pos."조회하면 첫번채
fieldcat_ln-key = 'x'. "결과화면에서 화살표를 클릭해도 요 필드는 고정되어 있다.
fieldcat_ln-emphasize = 'C500'. "필드에 색깔주기
APPEND fieldcat_ln TO fieldcat.
CLEAR fieldcat_ln.

ADD 1 TO col_pos. " COL_POS = COL_POS + 1
fieldcat_ln-fieldname = 'CONNID'.
fieldcat_ln-reptext_ddic = '항공기번호'.
fieldcat_ln-col_pos = col_pos."조회하면 두번째필드
fieldcat_ln-key = 'x'.
APPEND fieldcat_ln TO fieldcat.
CLEAR fieldcat_ln.

ADD 1 TO col_pos.
fieldcat_ln-fieldname = 'FLDATE'.
fieldcat_ln-reptext_ddic = '비행날짜'.
fieldcat_ln-col_pos = col_pos."조회하면 세번채
fieldcat_ln-key = ''.
APPEND fieldcat_ln TO fieldcat.
CLEAR fieldcat_ln.

ADD 1 TO col_pos.
fieldcat_ln-fieldname = 'PLANETYPE'.
fieldcat_ln-reptext_ddic = '항공사'.
fieldcat_ln-col_pos = col_pos."조회하면 네번채
fieldcat_ln-key = ''.
APPEND fieldcat_ln TO fieldcat.
CLEAR fieldcat_ln.

ADD 1 TO col_pos.
fieldcat_ln-fieldname = 'CITYFROM'.
fieldcat_ln-reptext_ddic = '도착도시'.
fieldcat_ln-col_pos = col_pos."조회하면 다번번
fieldcat_ln-key = 'X'.
APPEND fieldcat_ln TO fieldcat.
CLEAR fieldcat_ln.


필드카테고리부분의 작성이다. col_pos를 이용해 1씩증가하게하여 각 필드의 위치를 잡는다.
속성들은 파악하지 못했다..
APPEND를 꼭 해주어야 한다. fieldcat_ln의 헤더라인에 있는 데이터를 fieldcat이라는 인터널테이블로 반드시 넣어주어야 한다.

*Build Layout
ls_layout-colwidth_optimize = 'X'.
무슨말인지 모르겠다.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_callback_program = pgm
I_callback_user_command = 'USER_COMMAND'
is_layout = ls_layout
it_fieldcat = fieldcat
it_sort = sortcat
it_events = eventcat
I_SAVE = 'A'
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
OTHERS = 2.


REUSE_ALV_GRID_DISPLAY를 call하면 익스포팅과 임포팅부분에 많은 변수들이 세팅되는데 필요한것만 골라 쓰면된다.

기본적인것들 ls_layout, fieldcat, sortcat, eventcat 등 그리고 테이블은 itab..


출처 :http://anyframe.tistory.com/83

저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,

SAP MEMORY & ABAP MEMORY

ERP/SAP/R/3 2011. 7. 19. 09:49

저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,

FIELD-SYMBOL 설명과 사용예

ERP/SAP/R/3 2011. 7. 19. 09:32

필드심볼 이야기(http://erp.sarang.net)
작성자 : 한상열

1. 개요

필드심볼 모르면 생노가다!
알면 초간단!


2. 상황 발생

각 계정별로 원하는 기간(월별) 동안의 총 Recivable과
Payable 금액을 보여주는 레포트를 짜고 싶습니다.

테이블을 찾았더니 GLT0 이군요. 첨에는 테이블이 예쁘
게 생겼다고 생각했습니다. 야~ 이거 월별 금액이 각각
의 월필드에 들어가있으니 무지 좋구만~

허걱!

근데 어떻게 각 필드별로 합을 구하쥐?
사용자가 어떤 기간을 줄지 알고?


3. 해결책

멋있는 멍님의 글을 참고해봅시다.


-----------------------------------------------------------------------------------
이 테이블을 자세히 살펴보면...

...
...
HSL01
HSL02
HSL03
HSL04
HSL05
HSL06
HSL07
HSL08
HSL09
HSL10
HSL11
HSL12
HSL13
HSL14
HSL15
HSL16
...
...

이런식으로 필드가 존재합니다...

이 때, 위에서 나열한 필드의 뒤 두 자리가 월을 나타낸다고 했을 때,
현재월까지의 합을 구하는 레포트를 구현한다고 가정을 해봅시다...

만약 Field-Symbol을 사용하지 않을 경우...
지금이 10월이니깐 로직이 이렇게 되겠죠...

변수 = GLT0-HSL01 + GLT0-HSL02 + ......... + GLT0-HSL10. (헥헥~~)

그렇다면 11월일때는 어떡할 것인가 ???
5월일때는 ? 12월일때는 ???
이거 완전한 노가다 입니다...

이때, 우리의 Field-Symbol이 등장합니다... 짜잔~~~

가볍게 코딩을 합니다...


...
FIELD-SYMBOLS <FIELD>.

DATA : CN(2) TYPE N,
FNAME(10),
SUM LIKE GLT0-HSL01.
...
...

DO CN TIMES. "여기서 CN이라는 변수는 해당 월
CC = SY-INDEX.
CONCATENATE 'GLT0-HSL' CC INTO FNAME.
ASSIGN (FNAME) TO <FIELD>.
SUM = SUM + <FIELD>.
CLEAR : FNAME, <FIELD>.
ENDDO.
...
...



이렇게 하면 위에서 했던 노가다를 간단히 몇 줄의 문장으로 기술할 수 있는 것이죠...

<FIELD>라는 FIELD-SYMBOL에는 GTL0-HSL01의 값부터 시작해서...
GTL0-HSL10의 값까지 차례로 들어가면서 더해지게 되는 것이죠...

그리고 보너스로...

이런 구문도 존재한답니다...



...
...
DO.
...
ASSIGN COMPONENT SY-INDEX OF STRUCTURE CUSTOMER TO .
...
ENDDO.



이때, 가령 CUSTOMER라는 INERNAL TABLE이 다음과 같은 필드를 가지는
구조를 참조한다고 할 때...
(KUNNR, ANRED, NAME1, PFACH, STRAS, PSTLZ, ORT01, TELF1, TELFX)

DO... ENDDO... 문장 내에서 필드의 수만큼 LOOP을 돌게 되는거죠...

즉, 하나씩 디버깅을 해보면, 첫번째 루프를 돌때는, <FIELD>에 CUSTOMER-KUNNR의 값이...
그 다음 루프를 돌때는, <FIELD>에 CUSTOMER-ANRED의 값이...
세번째 루프를 돌때는, <FIELD>에 CUSTOMER-NAME1의 값이 들어갑니다...
-----------------------------------------------------------------------------------





4. 결론

노가다 많이 줄였습니다.

**************************************************************************

FIELD만 바뀌고 규칙적인 작업을 할때 각각을 프로그램 LOGIC으로 구성하려면
단순 CODING으로 쓸 데없이 LINE만 길어 질 수 있다.
이때 FIELD-SYMBOL을 사용하면 간단히 해결되면서 프로그램을 분석하기도 한결 수월해 진다.

우선 FIELD-SYMBOL 의 여러가지 변형을 살펴보면

1. ASSIGN f TO <fs>.
단순히 field f의 값을 <fs>가 가리키도록 한다.

2. ASSIGN (f) TO <fs>.
동적 field를 이용한것인데 field f안의 값을 또 field명으로 보고 그 field의 값
을 <fs>가 가리키도록 한다.

3. ASSIGN TABLE FIELD (f) TO <fs>.
2와 같은 경우이나 f 의 값이 table의 field명 일때 그 table field의 값을
<fs>가 가리키도록 한다.

4. ASSIGN LOCAL COPY OF MAIN TABLE FIELD (f) TO <fs>.
3와 같은 경우이나 tables로 선언된 main program의 table field값을
<fs>가 가리키는 것이 아니라 값만 복사 하여 사용하기 때문에 변경할 수 없다.

5. ASSIGN COMPONENT idx OF STRUCTURE rec TO <fs>.
structure의 구성요소 순서를 idx에서 읽어 그 순서에 위치한 구성요소의 값을
<fs>에 할당한다.

6. ASSIGN COMPONENT name OF STRUCTURE rec TO <fs>.
structure의 구성요소명(field명)을 name에서 읽어 그 구성요소의 값을
<fs>에 할당한다.

5번을 제외한 모든 경우는 field명을 사용하는 것이라서 field명에 규칙이 없으면
coding line 줄이는데 효과를 보지 못한다.
따라서 여기서는 field명에 규칙이 없더라도 coding line을 획기 적으로 줄일 수 있는
5번경우를 사용한 예제만 소개하겠다.

예제)

FIELD-SYMBOLS : <FS1>, <FS2>.
DATA:IDX1 LIKE SY-INDEX.

DATA: BEGIN OF ITAB1 OCCURS 0,
CCYYMM(8),
WERKS LIKE MARD-WERKS,
MATNR LIKE MARD-MATNR,
LABST LIKE MARD-LABST,
UMLME LIKE MARD-UMLME,
INSME LIKE MARD-INSME,
EINME LIKE MARD-EINME,
SPEME LIKE MARD-SPEME,
RETME LIKE MARD-RETME,
VMLAB LIKE MARD-VMLAB,
VMUML LIKE MARD-VMUML,
VMINS LIKE MARD-VMINS,
VMEIN LIKE MARD-VMEIN,
VMSPE LIKE MARD-VMSPE,
VMRET LIKE MARD-VMRET,
END OF ITAB1.

DATA: ITAB2 LIKE ITAB1 OCCURS 0 WITH HEADER LINE.


경우1) FIELD-SYMBOL 사용하지 않았을 경우

LOOP AT ITAB1.
READ TABLE ITAB2 WITH KEY CCYYMM = ITAB1-PERIOD
WERKS = ITAB1-WERKS
MATNR = ITAB1-MATNR
BINARY SEARCH.

IF SY-SUBRC <> 0.
WRITE : / 'Not found in ITAB2 : ',
ITAB1-CCYYMM,
ITAB1-WERKS,
ITAB1-MATNR.
ELSE.
IF ITAB1-LABST <> ITAB2-LABST.
WRITE : / SY-INDEX,
ITAB2-CCYYMM,
ITAB2-WERKS,
ITAB2-MATNR,
ITAB1-LABST,
ITAB2-LABST.
ENDIF.

IF ITAB1-UMLME <> ITAB2-UMLME.
WRITE : / SY-INDEX,
ITAB2-CCYYMM,
ITAB2-WERKS,
ITAB2-MATNR,
ITAB1-UMLME,
ITAB2-UMLME.
ENDIF.


.............. 12번 반복 ........


ENDIF.
ENDLOOP.

경우2) FIELD-SYMBOL 사용했을 경우

LOOP AT ITAB1.
READ TABLE ITAB2 WITH KEY CCYYMM = ITAB1-PERIOD
WERKS = ITAB1-WERKS
MATNR = ITAB1-MATNR
BINARY SEARCH.

IF SY-SUBRC <> 0.
WRITE : / 'Not found in ITAB2 : ',
ITAB1-CCYYMM,
ITAB1-WERKS,
ITAB1-MATNR.
ELSE.

IDX1 = 3.

DO 12 TIMES.
IDX1 = IDX1 + 1.
ASSIGN COMPONENT IDX1 OF STRUCTURE ITAB1 TO <FS1>.
ASSIGN COMPONENT IDX1 OF STRUCTURE ITAB2 TO <FS2>.

IF <FS1> <> <FS2>.
WRITE : / SY-INDEX,
ITAB2-CCYYMM,
ITAB2-WERKS,
ITAB2-MATNR,
<FS1>,
<FS2>.
ENDIF.
ENDDO.
ENDIF.
ENDLOOP.

필드심볼을 이용하면 보통사용하는 테이블의 모양을 간단하게 바꿀 수 있다.

<기존에 사용하는 테이블>

연월 수량 금액 단가
200501 120 3500 23400
200502 3000 2300 3600
200503 500 1000 530
200504 300 28 400

<원하는 테이블>

  200501 200502 200503 200504
수량 120 3000 500 300
단가 3500 2300 1000 28
금액 23400 3600 530 400

우리가 원하는것은 해당연월에 수량, 단가, 금액이다.

field symbol을 이용해서 직접 확인해보자.

REPORT ZPPRTESTYW .
DATA: BEGIN OF S,
A VALUE '1', B VALUE '2', C VALUE '3', D VALUE '4',
E VALUE '5', F VALUE '6', G VALUE '7', H VALUE '8',
END OF S.

DATA OFF TYPE I.

FIELD-SYMBOLS <FS>.

ASSIGN S-A TO <FS>.

DO 4 TIMES.
OFF = SY-INDEX - 1.
ASSIGN <FS>+OFF(1) TO <FS>.
WRITE <FS>.
ENDDO.

==> 결과 1,2,4,7

<field symbol을 이용하여 데이터 뿌리기>

fname에 필드명을 count 와 조합하여 만든후 bufs로 assign한다.

LOOP AT it_sum3.
MOVE it_sum3-buname TO it_result-zrsbu.

DO 4 TIMES.

in = it_sum3-lfmon.
cn = cn + 1.
CONCATENATE 'it_result-zrs' in cn INTO fname.
ASSIGN (fname) TO <bufs>.

CASE cn.
WHEN 1.
<bufs> = it_sum3-abssu.
WHEN 2.
<bufs> = it_sum3-sucor.
WHEN 3.
<bufs> = it_sum3-abspr / rd_int.
WHEN 4.
<bufs> = it_sum3-prcor.
ENDCASE.
CLEAR : fname.
ENDDO.
COLLECT it_result.
CLEAR : it_result,it_sum3, cn, in.
ENDLOOP.

[출처] FIELD-SYMBOL 사용예|작성자 미래

저작자표시 비영리 (새창열림)
블로그 이미지

파란실버라이트

To remember the time when I started learning Silver Light!

,
  • «
  • 1
  • ···
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • ···
  • 29
  • »

카테고리

  • Inforamtion Technology (281)
    • DESIGN PATTERN (33)
      • 실용주의 디자인패턴 (29)
    • SOFTWARE ENGINEERING (21)
      • Art Of Readable Code (12)
      • Object Oriented Programming (6)
      • TDD (2)
    • FRAMEWORK (22)
      • Spring.net (2)
      • LightSwitch (20)
    • PROGRAMING (58)
      • C# (20)
      • .NET (6)
      • HTML5 (7)
      • ASP.NET (9)
      • SILVERLIGHT (7)
      • Ruby On Rails (6)
    • PROJECT MANAGEMENT (10)
      • SW Version Management (7)
      • Schedulring Management (1)
    • BOOKS (18)
    • MOBILE APP (1)
      • SENCHA TOUCH (1)
    • SECURITY (5)
    • MES (1)
    • B2B (14)
      • WEBMETHODS (4)
    • ERP (53)
      • SAP/R/3 (51)
    • ABOUT TOOLS (2)
    • FUNDAMENT CONCEPT (21)
    • SOA BPM (22)
    • PORTFOLIO (0)

태그목록

  • 프로그래밍
  • 동시성
  • 병렬

최근에 받은 트랙백

글 보관함

링크

파란실버라이트

블로그 이미지

To remember the time when I started learning Silver Light!

LATEST FROM OUR BLOG

RSS 구독하기

LATEST COMMENTS

BLOG VISITORS

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015 Socialdev. All Rights Reserved.

티스토리툴바