2014년 10월 23일 목요일
[SAP] BAPI나 BDC 에러 로그를 팝업창으로 표시하기
DATA : BEGIN OF IT_DATA OCCURS 0,
ICON(4),
.......
T_MSG TYPE RS_T_MSG, "에러 로그 저장용 필드 선언
END OF IT_DATA.
* BAPI나 BDC에서 발생된 에러 로그를 저장한다.
DATA : LT_MSG TYPE RS_T_MSG,
LS_MSG LIKE LINE OF LT_MSG.
REFRESH : LT_MSG.
LOOP AT RETURN.
CLEAR : LS_MSG.
LS_MSG-MSGTY = RETURN-TYPE.
LS_MSG-MSGID = RETURN-ID.
LS_MSG-MSGNO = RETURN-NUMBER.
LS_MSG-MSGV1 = RETURN-MESSAGE_V1.
LS_MSG-MSGV2 = RETURN-MESSAGE_V2.
LS_MSG-MSGV3 = RETURN-MESSAGE_V3.
LS_MSG-MSGV4 = RETURN-MESSAGE_V4.
APPEND LS_MSG TO LT_MSG .
ENDLOOP.
IT_DATA-T_MSG = LT_MSG.
* ALV상의 더블클릭이나 HOTSPOT 이벤트에 팝업 표시 기능 추가
FORM ALV_DOUBLE_CLICK USING E_ROW TYPE LVC_S_ROW
E_COLUMN TYPE LVC_S_COL
ES_ROW_NO TYPE LVC_S_ROID.
DATA : LS_DATA LIKE LINE OF IT_DATA.
READ TABLE IT_DATA INDEX ES_ROW_NO-ROW_ID INTO LS_DATA.
DATA: E_T_MSG TYPE RS_T_MSG,
S_MSG LIKE LINE OF E_T_MSG,
E_TXT(40) TYPE C VALUE 'Error List',
E_WITH_S_ON_EMPTY TYPE RS_BOOL VALUE 'X',
E_ONE_MSG_DIRECT TYPE RS_BOOL VALUE ' ',
E_ONE_MSG_TYPE_S TYPE RS_BOOL VALUE 'X',
I_S_EXIT_COMMAND TYPE BAL_S_EXCM.
REFRESH : E_T_MSG.
E_T_MSG = LS_DATA-T_MSG.
CHECK E_T_MSG[] IS NOT INITIAL.
CALL FUNCTION 'RSDC_SHOW_MESSAGES_POPUP'
EXPORTING
I_T_MSG = E_T_MSG
I_TXT = E_TXT
I_WITH_S_ON_EMPTY = E_WITH_S_ON_EMPTY
I_ONE_MSG_DIRECT = E_ONE_MSG_DIRECT
I_ONE_MSG_TYPE_S = E_ONE_MSG_TYPE_S
IMPORTING
E_S_EXIT_COMMAND = I_S_EXIT_COMMAND.
ENDFORM.
2014년 10월 8일 수요일
ABAP 한글 출력 길이 조정
PERFORM CUT_STRING USING LV_DESC 20 CHANGING LV_TEXT1 LV_TEXT2.
FORM CUT_STRING USING I_ZPKRE I_LEN CHANGING O_TEXT1 O_TEXT2.
DATA : LV_LEN TYPE I,
LV_LEN2 TYPE I,
LV_TLEN TYPE I.
CLEAR : LV_LEN , LV_LEN2 , LV_TLEN , O_TEXT1 ,O_TEXT2 .
O_TEXT1 = I_ZPKRE.
O_TEXT2 = O_TEXT1.
LV_LEN2 = I_LEN - 1 .
LV_TLEN = STRLEN( O_TEXT1 ).
DO 40 TIMES.
" 출력될문자열의 실제 길이 확인
CALL METHOD CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
EXPORTING
FIELD = O_TEXT1
RECEIVING
LEN = LV_LEN.
IF LV_LEN <= I_LEN.
EXIT.
ELSE.
O_TEXT1 = O_TEXT1+0(LV_LEN2).
LV_LEN2 = LV_LEN2 - 1 .
ENDIF.
ENDDO.
LV_LEN = STRLEN( O_TEXT1 ).
LV_TLEN = LV_TLEN - LV_LEN.
O_TEXT2 = O_TEXT2+LV_LEN(LV_TLEN).
ENDFORM. " CUT_STRING
피드 구독하기:
글 (Atom)