BDC 코딩을 짜는 중인데요
it_list2에서 변경된 줄을 선택해서 BDC 아이콘을 누르면 변경된 값이 mara에 들어가서 저장되는 코딩을 짜고 있는중인데
문제점이
1. 값을 변경한 뒤 BDC코드를 누르면 일단 변경은 되는데 다시 앞의 화면으로 갔다가 들어오면 변경된값이 반영이 안되구요
2. 위에서 변경된 값을 Create 화면에 보여주려고 하는데 create 화면에 있는 모든 값들이 같은값( 위에서 변경해준값)으로 바뀌네요
도대체 무슨문제 인지 모르겠어요 ㅠㅠ 빠른 답변 부탁드립니다 ㅠ
DATA : l_data(8).
DATA : gs_stable2 TYPE lvc_s_stbl.
CLEAR : lt_tab2, lt_tab2[], lt_rows2, lt_rows2[].
CALL METHOD g_grid->check_changed_data "==> 이것을 써야 선택된 데이터만 가져옴
IMPORTING
e_valid = ls_flag_change.
CHECK ls_flag_change = 'X'.
REFRESH: lt_rows2.
CALL METHOD g_grid->get_selected_rows
IMPORTING
et_index_rows = lt_rows2.
CALL METHOD cl_gui_cfw=>flush.
CLEAR : lt_cnt2.
DESCRIBE TABLE lt_rows2 LINES lt_cnt2.
IF lt_rows2[] IS INITIAL.
MESSAGE e001 WITH '라인을 선택하세요'.
ELSEIF lt_cnt2 > 1.
MESSAGE e001 WITH '라인은 하나만 선택 가능합니다.'.
ENDIF.
CLEAR : it_bdcdata, it_bdcdata[],it_messtab,it_messtab[].
LOOP AT lt_rows2 INTO ls_rows2.
READ TABLE it_list2 INDEX ls_rows2-index.
" MOVE-CORRESPONDING it_list2 TO lt_tab2.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'RMMG1-MATNR'
it_list2-matnr.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SELA'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0080'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'RMMG1-WERKS'
it_list2-werks.
PERFORM bdc_field USING 'RMMG1-LGORT'
it_list2-lgort.
WRITE it_list2-brgew TO l_data " --> 인터널 테이블의 값을 L_DATA로 옮겨줌.
UNIT it_list2-gewei LEFT-JUSTIFIED.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SP12'.
PERFORM bdc_field USING 'MARA-BRGEW'
l_data.
PERFORM bdc_field USING 'MARA-NTGEW'
l_data.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'MARC-DISMM'
it_list2-dismm.
CALL TRANSACTION 'MM02' USING it_bdcdata
MODE w_mode
UPDATE 'S'.
PERFORM get_bcd_msg CHANGING g_msglin. "--> 그 안에서 바뀜
it_list2-zmesg = g_msglin.
MOVE-CORRESPONDING it_list2 TO lt_tab2.
* APPEND it_list2.
* UPDATE zmmtest set brgew = it_list2-brgew.
** dismm = it_list2-dismm.
*MODIFY it_list2 INDEX ls_rows2-index.
CLEAR : ls_rows2-index.
ENDLOOP.
댓글 7
-
낙천
2010.08.27 01:37
-
낙천
2010.08.27 01:44
2번 문제는 현로직에서는 영향을 주는게 없어보이네요~
아마도 주석처리한부분에서 발생한 문제같은데
문제가 발생했을때의 소스상태를 알려주세요~
-
오렌지겅주님
2010.08.27 02:16
음... 낙천님 ㅋ 답변감사함돵 ㅋ
하지만 아직 문제가 해결이 안되네요 ..ㅠㅠ
좀만 구체적으로 알려주셨으면 좋겠어요 ㅠ
-
낙천
2010.08.27 02:46
우선 프로그램이 어떤식으로 돌아가는지 이야기해 봅시다~
제생각에는 프로그램 실행시 GRID가 화면에 뿌려지고,
뿌려진 Row를 선택하고 BDC수행을 하는 버튼을 눌렀을 시에 해당 로직을 타는 것이지요?
여기서 1번질문에서 BDC코드를 누르면 일단 변경은 되는데 << 요거 어디서 변경되는건가용?
그리고 앞의 화면으로 갔다가들어오면 << 이건 프로그램 실행시켰다가 F3눌러서 나갔다가 다시 들어왔다는건지요?
-
오렌지겅주님
2010.08.27 02:53
데이터 값이 변경이 됩니다
라디오버튼을 1.CREATE 2.DISPLAY 두개 만들어서 DISPLALY의 필드의 값중 무게 필드값을 하나 변경해서 저장하면
CREATE에 저장된 값이 나옵니다 ==> 여기서 문제가 선택된 줄만 저장되는게 아니고 변경한 필드의 모든값이 그 값으로 변경된다는 것이 문제이지요.
두번째로 앞의 화면 갔다가 들어오면 ==> F3눌러서 들어오는거 말하는거 맞습니다!!^^
-
낙천
2010.08.27 03:10
현재 BDC가 정상적으로 돌아가지 않는거같습니다~
BDC 리턴값을 확인해봐야할꺼같습니다.
퇴근합니다 이런;
-
오렌지겅주님
2010.08.27 18:38
ㅎ ㅎ 루프쪽이 문제였네요 ㅎ ㅎ 문제 해결했습니다 ^^
낙천님 도와주셔서 고마워요! ㅎ
음; MM02 레코딩 뜨실때 저장하는부분까지 하신건가용?
스텐다드에 반영이 안되었다면 CALL TRANSACTION하기전 레코딩 부분에 저장하는게 빠진건 아닐까하네요~