Drunken Lion

value request for 본문

SAP/ABAP

value request for

DrkLion 2009. 2. 6. 14:24

*&---------------------------------------------------------------------*
*&      Form  HELP_VAL_SKAT
*&---------------------------------------------------------------------*

FORM help_val_skat.

  DATA: lv_s_hbkid_low   LIKE t012-hbkid,  "거래처은행(From)
        lv_s_hbkid_high  LIKE t012-hbkid.  "거래처은행(To)

  "** POPUP HELP TABLE에서 사용되는 변수 선언
  DATA: BEGIN OF lt_skat_f4 OCCURS 0,
           saknr LIKE skat-saknr,
           txt20 LIKE skat-txt20,
           txt50 LIKE skat-txt50,
        END OF lt_skat_f4.

  DATA: lt_retval     LIKE ddshretval OCCURS 0 WITH HEADER LINE.
  DATA: lt_dynpfields LIKE dynpread   OCCURS 0 WITH HEADER LINE.

  "** 작업변수 초기화
  FREE: lt_dynpfields.

  lt_dynpfields-fieldname  = 'S_HBKID-LOW'.
  lt_dynpfields-stepl      = 0.
  APPEND lt_dynpfields.

  lt_dynpfields-fieldname  = 'S_HBKID-HIGH'.
  lt_dynpfields-stepl      = 0.
  APPEND lt_dynpfields.

  "** 현재 화면에 입력된 값을 Read
  CALL FUNCTION 'DYNP_VALUES_READ'
       EXPORTING
            dyname               = sy-cprog
            dynumb               = sy-dynnr
       TABLES
            dynpfields           = lt_dynpfields
       EXCEPTIONS
            invalid_abapworkarea = 1
            invalid_dynprofield  = 2
            invalid_dynproname   = 3
            invalid_dynpronummer = 4
            invalid_request      = 5
            no_fielddescription  = 6
            invalid_parameter    = 7
            undefind_error       = 8
            double_conversion    = 9
            stepl_not_found      = 10
            OTHERS               = 11.

  "** 현재 화면에 입력된 된 거래처은행(From)을 Read
  READ TABLE lt_dynpfields WITH KEY fieldname = 'S_HBKID-LOW'.
  lv_s_hbkid_low = lt_dynpfields-fieldvalue.

  "** 현재 화면에 입력된 된 거래처은행(To)을 Read
  READ TABLE lt_dynpfields WITH KEY fieldname = 'S_HBKID-HIGH'.
  lv_s_hbkid_high = lt_dynpfields-fieldvalue.

  "** 거래처은행을 입력 값이 존재하면 해당하는 계정번호 Select
  IF ( NOT lv_s_hbkid_low IS INITIAL ) AND
     ( ( lv_s_hbkid_low = lv_s_hbkid_high ) OR
       ( lv_s_hbkid_high IS INITIAL ) ).
    "** 거래처은행에 해당하는 거래은행 및 명칭 Select
    SELECT b~saknr b~txt20 b~txt50
      INTO CORRESPONDING FIELDS OF TABLE lt_skat_f4
      FROM t012k AS a
     INNER JOIN skat AS b
        ON a~mandt = b~mandt
       AND b~spras = '3'            "언어키
       AND b~ktopl = c_bukrs        "계정과목표
       AND a~hkont = b~saknr        "G/L 계정번호
    WHERE a~bukrs = c_bukrs         "회사코드
      AND a~hbkid = lv_s_hbkid_low. "거래은행에 대한 단축키

  ELSE.
    "** 회사코드에 해당하는 거래은행 및 명칭 Select
    SELECT saknr txt20 txt50
      INTO CORRESPONDING FIELDS OF TABLE lt_skat_f4
      FROM skat
    WHERE spras = '3'        "언어키
       AND ktopl = c_bukrs   "계정과목표
       AND saknr BETWEEN '0001110201' and '0001110399'.
  ENDIF.

  IF sy-subrc <> 0 AND sy-subrc <> 4.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  "** 화면에 HELP창을 띄워주고 선택된 값을 가지고 오는 함수
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
       EXPORTING
            retfield        = 'SAKNR'
            dynpprog        = 'ZFIR004'
            dynpnr          = '1000'
            dynprofield     = 'S_SAKNR'
            window_title    = '계정과목'
            value_org       = 'S'
       TABLES
            value_tab       = lt_skat_f4
       EXCEPTIONS
            parameter_error = 1
            no_values_found = 2
            OTHERS          = 3.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
       WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " HELP_VAL_SKAT

'SAP > ABAP' 카테고리의 다른 글

날짜 유효성 체크  (0) 2009.03.20
도메인의 VALUE RANGE 를 가져오는 방법  (0) 2009.03.19
동적 where 절 만들기  (0) 2009.01.14
Implicit enhancement points  (0) 2009.01.05
UNICODE CONVERSION  (0) 2008.12.30