Jin's Library

Search Help Row 데이터 활용 본문

SAP/ABAP

Search Help Row 데이터 활용

Linkin 2024. 2. 20. 23:04

F4테이블에서 여러 데이터를 컨트롤 하고 싶을때

한 row의 각 데이터는 fldname을 찾아가 매핑해주어 값을 구해 활용하면 된다.

 

FORM f4_data_matnr.
  DATA: lt_return  TYPE TABLE OF ddshretval,
        lv_matnr   TYPE mara-matnr,
        lv_dismm   TYPE marc-dismm,
        lt_mapping TYPE TABLE OF dselc.

       " lt_result 기준 F0001  ,  F0002  , F0003  ,  F0004  ,  F0005  ,  F0006
  SELECT DISTINCT a~matnr, a~werks, b~maabc, b~kzdie, a~mtart, b~dismm
  INTO TABLE @DATA(lt_result)
  FROM MARA AS a JOIN MARC AS b ON b~matnr EQ a~matnr.

  APPEND VALUE #( fldname   = 'F0006'      " lt_result 의 6번째 필드의 값을 매핑
                  dyfldname = 'MRP_TYPE'
                ) TO lt_mapping.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'MATNR'
      dynpprog        = sy-repid
      dynpnr          = sy-dynnr
      dynprofield     = 'S_MATNR-LOW'
      value_org       = 'S'
    TABLES
      value_tab       = lt_result
      return_tab      = lt_return
      dynpfld_mapping = lt_mapping[].  " lt_mapping 테이블 안에 저장된 필드들에 선택된 row의 필드값들이 매핑됨

  IF lt_return IS NOT INITIAL.
    lv_matnr = lt_return[ 1 ]-fieldval.
    lv_dismm = lt_return[ 2 ]-fieldval.  " 'F0006' 필드에 매핑된 값이 lt_return 에 저장된다.

    DATA(lt_dynp) = VALUE dynpread_t(  ( fieldname = 'S_MATNR-LOW' fieldvalue = lv_matnr )
                                       ( fieldname = 'S_DISMM-LOW' fieldvalue = lv_dismm ) ).   " 업데이트 할 데이터를 할당
                                    "현재 S_DISMM 는 screen-input = 0 상태, 선택한 matnr에 해당하는 dismm값을 같이 업데이트
    CALL FUNCTION 'DYNP_VALUES_UPDATE'
      EXPORTING
        dyname               = sy-repid
        dynumb               = '1000'
      TABLES
        dynpfields           = lt_dynp    " 할당된 필드의 값을 업데이트
      EXCEPTIONS
        invalid_abapworkarea = 1
        invalid_dynprofield  = 2
        invalid_dynproname   = 3
        invalid_dynpronummer = 4
        invalid_request      = 5
        no_fielddescription  = 6
        undefind_error       = 7
        OTHERS               = 8.
    IF sy-subrc <> 0.
      MESSAGE e001 WITH TEXT-m01.
      LEAVE LIST-PROCESSING.
    ENDIF.
  ENDIF.

ENDFORM.

 

 

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

테이블 데이터에 바로 단위 적용 시키기  (0) 2024.02.20
Company Code에 종속된 Plant  (0) 2024.02.20
프로그램 작성자 확인  (0) 2024.01.05
ICON Constants  (0) 2024.01.05
boole_d  (0) 2024.01.05