Miklix

Dynamics AX 2012에서 매크로 및 strFmt를 사용한 문자열 포맷팅

게시됨: 2025년 2월 16일 오전 12시 48분 40초 UTC
마지막으로 업데이트되었습니다: 2026년 1월 12일 오전 8시 44분 27초 UTC

이 문서에서는 Dynamics AX 2012에서 strFmt의 형식 문자열로 매크로를 사용할 때 발생하는 몇 가지 특이한 동작과 이를 해결하는 방법에 대한 예제를 설명합니다.


이 페이지는 가능한 한 많은 사람이 이용할 수 있도록 영어에서 기계 번역되었습니다. 안타깝게도 기계 번역은 아직 완성된 기술이 아니므로 오류가 발생할 수 있습니다. 원하시는 경우 여기에서 영어 원문을 보실 수 있습니다:

String Formatting with Macro and strFmt in Dynamics AX 2012

이 게시물의 정보는 Dynamics AX 2012 R3을 기준으로 작성되었습니다. 다른 버전에서는 유효하지 않을 수 있습니다.

최근 strFmt 함수에서 한동안 저를 당황하게 했던 문제를 발견했습니다. 가장 당황스러웠던 점은 제가 Axapta/Dynamics AX 개발자로 수년간 일하면서 이상하게도 이전에는 한 번도 그런 문제를 겪어본 적이 없었다는 것입니다.

문제는 strFmt 함수의 형식 문자열로 매크로를 사용하려고 했는데 제대로 작동하지 않았다는 것입니다. % 매개변수를 완전히 무시하고 문자열의 나머지 부분만 반환했습니다.

좀 더 알아봤더니 매크로 자체를 이용해서 문자열 형식을 지정할 수 있다는 걸 알게 됐는데, 이것도 몰랐던 사실이었어요. 뭐, 새로운 걸 배우는 건 언제나 좋은 일이지만, 왜 진작에 이런 기능을 몰랐을까 싶기도 하네요.

기본적으로 이런 겁니다.

#define.FormatMacro('%1-%2-%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

매크로 내의 % 기호는 매크로 자체의 문자열 서식 기능을 위해 사용되므로 작동하지 않습니다. 이 경우 strFmt 함수는 서식 문자열을 "--"로 인식하여 해당 값만 반환합니다.

이런 식입니다:

#define.FormatMacro('%1-%2-%3');
info(#FormatMacro(salesId,itemId,lineNum));

이 코드는 작동은 하겠지만, 아마도 원하시는 방식대로 출력되지는 않을 겁니다. 세 변수의 값을 출력하는 대신 변수 이름만 출력하게 되는데, 이 경우에는 "salesId-itemId-lineNum"이 됩니다. (매크로에 매개변수를 전달할 때 쉼표 뒤에 공백을 넣지 않은 것에 유의하세요. 일반적으로 메서드 호출 시에는 공백을 넣는데, 매크로가 실제로 공백도 사용하기 때문에 공백을 넣으면 "salesId-itemId-lineNum"처럼 출력될 겁니다.)

strFmt 함수를 사용하여 매크로를 서식 문자열로 실제로 사용하려면 다음과 같이 백슬래시로 퍼센트 기호를 이스케이프해야 합니다.

#define.FormatMacro('\\%1-\\%2-\\%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

이렇게 하면 형식 문자열을 직접 제공한 것과 동일하게 작동합니다.

이 간단한 작업은 다음 예시들을 보여줍니다.

static void StrFmtMacroTest(Args _args)
{
    #define.FormatMacro('%1-%2-%3')
    #define.FormatMacroEscaped('\\%1-\\%2-\\%3')
    SalesId salesId = '1';
    ItemId  itemId  = '2';
    LineNum lineNum = 3.00;
    ;

    info(#FormatMacro(salesId,itemId,lineNum));
    info(strFmt(#FormatMacro, salesId, itemId, lineNum));
    info(strFmt(#FormatMacroEscaped, salesId, itemId, lineNum));
}

추가 자료

이 글이 마음에 드셨다면 다음 제안도 마음에 드실 겁니다.


블루스카이에서 공유하기페이스북에서 공유하기LinkedIn에서 공유하기Tumblr에 공유하기X에서 공유LinkedIn에서 공유하기Pinterest에 고정

미켈 크리스텐슨

저자 소개

미켈 크리스텐슨
남자 이름은 miklix.com의 창시자이자 소유자입니다. 전문 컴퓨터 프로그래머/소프트웨어 개발자로 20년 이상 경력을 쌓았으며 현재 유럽의 대형 IT 기업에서 정규직으로 근무하고 있습니다. 블로그를 운영하지 않을 때는 여가 시간을 다양한 관심사, 취미, 활동으로 보내며 이 웹사이트에서 다루는 다양한 주제에 어느 정도 반영되어 있습니다.