빨간 네모 친 부분의 메시지를 가져오고 싶습니다.
이 메시지는 펑션에서 rseinb00 이라는 프로그램(tcode:PU12_IDOC_CREATE)을 실행 한 후,
idoc이 생성되었을 때 나오는 메시지 입니다.
idoc 번호를 얻으려면 이 메시지를 가져와야 하는데 도저히 방법을 모르겠습니다.
디버깅을 걸어보아도 sy-msgid, sy-msgty, sy-msgno,sy-msgv1, sy-msgv2, sy-msgv3, sy-msgv4 에는
어떤 값도 들어있지 않습니다.
메시지를 어떻게 가져와야 하는 것일까요?
혹시 답변하시는데 도움이 될까 하여 아래에 소스 올립니다.
감사합니다.
FUNCTION zrfc_sd_customer_stock_mov.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_VBELN) LIKE VBAK-VBELN
*" VALUE(I_GI_DATE) LIKE LIKP-WADAT_IST
*" VALUE(I_GUBUN) TYPE CHAR1
*" EXPORTING
*" VALUE(E_RETURN) TYPE CHAR1
*" VALUE(E_MESSAGE) TYPE CHAR40
*"----------------------------------------------------------------------
TABLES :
e2mbxyh,
e2mbxyi.
DATA: BEGIN OF idoc_control.
INCLUDE STRUCTURE edi_dc.
DATA: END OF idoc_control.
DATA: BEGIN OF int_edidd.
INCLUDE STRUCTURE edi_dd.
DATA: END OF int_edidd.
DATA: gv_clint LIKE idoc_control-rcvprn.
DATA: it_vbap LIKE vbap OCCURS 0 WITH HEADER LINE.
DATA: it_vbak LIKE vbak OCCURS 0 WITH HEADER LINE.
DATA: g_message_fields LIKE edimessage.
DATA: gt_vbfa LIKE vbfa OCCURS 0 WITH HEADER LINE.
DATA: l_sgtxt LIKE e2mbxyi-sgtxt.
DATA: l_scode TYPE n,
l_fcode TYPE n.
DATA: l_auart LIKE vbak-auart.
* DATA: outfile LIKE EDI_PATH-PTHNAM
* VALUE '/usr/sap/GCD/SYS/global/'.
CONCATENATE sy-sysid 'CLNT' sy-mandt INTO gv_clint.
*// Order type check.
SELECT SINGLE auart
INTO l_auart
FROM vbak
WHERE vbeln = i_vbeln.
IF l_auart = 'YOCO'.
OPEN DATASET outfile FOR OUTPUT IN TEXT MODE ENCODING UTF-8. "NON-UNICODE.
IF sy-subrc NE 0.
e_message = 'Error openning outfile'.
e_return = 'F'.
EXIT.
ENDIF.
CLEAR: idoc_control, int_edidd, l_fcode.
*
idoc_control-tabnam = 'EDI_DC' .
idoc_control-mandt = sy-mandt .
idoc_control-docrel = sy-saprl .
idoc_control-doctyp = 'WMMBID02' .
idoc_control-direct = '2' . "Inbound
idoc_control-rcvpor = 'SAPGCD' .
idoc_control-rcvprt = 'LS' .
idoc_control-rcvprn = gv_clint .
idoc_control-sndpor = 'SAPGCD' .
idoc_control-sndprt = 'LS' .
idoc_control-sndprn = gv_clint .
idoc_control-sndpfc = space .
idoc_control-mestyp = 'WMMBXY' .
idoc_control-idoctyp = 'WMMBID02' .
TRANSFER idoc_control TO outfile.
IF sy-subrc NE 0.
e_message = 'ERROR EDIDC 1'.
e_return = 'F'.
ELSE.
*//Sales Order Header Data
CLEAR: int_edidd, l_sgtxt.
int_edidd-tabnam = 'EDI_DD'.
int_edidd-segnam = 'E2MBXYH'.
CLEAR: e2mbxyh.
e2mbxyh-bldat = i_gi_date.
e2mbxyh-budat = i_gi_date.
e2mbxyh-bktxt = i_vbeln.
e2mbxyh-tcode = 'MB11'.
int_edidd-sdata = e2mbxyh.
TRANSFER int_edidd TO outfile.
IF sy-subrc NE 0.
e_message = 'Error writing EDIDD 1'.
ADD 1 TO l_fcode.
ENDIF.
*//Sales Order Item Data
CLEAR int_edidd.
int_edidd-tabnam = 'EDI_DD'.
int_edidd-segnam = 'E2MBXYI'.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE it_vbap
FROM vbap
WHERE vbeln = i_vbeln.
IF sy-subrc = 0.
LOOP AT it_vbap.
CLEAR: e2mbxyi, l_sgtxt.
CONCATENATE it_vbap-vbeln it_vbap-posnr INTO l_sgtxt SEPARATED BY space.
* GET CUSTOMER NO.
SELECT SINGLE kunnr
INTO it_vbak-kunnr
FROM vbak
WHERE vbeln = i_vbeln.
e2mbxyi-matnr = it_vbap-matnr .
e2mbxyi-werks = it_vbap-werks .
e2mbxyi-lgort = '3110' .
IF i_gubun = 'F'. "Consignment fill-up
e2mbxyi-bwart = '631' .
ELSEIF i_gubun = 'B'. "Consignment pick-up
* Check Doc. Flow.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_vbfa
FROM vbfa
WHERE vbeln = i_vbeln.
IF gt_vbfa[] IS INITIAL.
e2mbxyi-bwart = '632' .
ELSE.
e_return = 'F'.
e_message = 'Subsequent doc. exists!'.
EXIT.
ENDIF.
ENDIF.
e2mbxyi-kunnr = it_vbak-kunnr .
e2mbxyi-bwtar = it_vbap-bwtar .
e2mbxyi-erfmg = it_vbap-kwmeng.
e2mbxyi-erfme = it_vbap-vrkme .
e2mbxyi-sgtxt = l_sgtxt .
e2mbxyi-umwrk = it_vbap-werks .
int_edidd-sdata = e2mbxyi.
TRANSFER int_edidd TO outfile.
IF sy-subrc NE 0.
e_message = 'ERROR EDIDD 2'.
e_return = 'F'.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
*//Make idoc
SUBMIT rseinb00 WITH p_file = outfile
WITH p_port = 'NSA'
AND RETURN.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* VIA SELECTION-SCREEN.
.
*
ELSE.
e_return = 'F'.
e_message = 'Invalid order type'.
ENDIF.
ENDFUNCTION.
user-exit 이 있는 것 같은데요. smod 에서 FEDI0001 로 확인해 보시고.,
cmod에서 테스트로 한번 만들어보세요. 요긴 테스트 환경이 안되서요 ^^;;
잘 해결되시길 바랍니다.