지금 작성한 프로그램의 출력은
오더번호 내용1 내용2 ....
AA 100 300
300 200
150 200
AA 합계 550 700
BB 100 100
150 150
BB 합계 250 250
이런식으로 해서 오더번호가 같을때 첫번째만 뿌려주고 그 이하부터는 오더번호를 공백처리해서 뿌려주고
오더번호가 바뀔때 합계를 구해서 뿌려주는 리포트 프로그램입니다.
이 프로그램을
오더번호 내용 내용2
AA합계 550 700
BB합계 250 250
이렇게 출력되게 바꾼다음에
AA를 클릭했을경우 세부 내용이 출력되게 즉,
오더번호 내용 내용2
AA 100 300
300 200
150 200
이렇게 하려고합니다.
지금제가 생각한 방법은 책에 있는
hide f 를 오더번호 필드명을 줘서 이벤트를 준다음
call screen 이나 subscreen 을 불러서 띄워주려는 방법을 생각중인데
더 좋은 방법이 있나요?
좀더 깔끔한 방법이 있을까요?
원래 원하는건 더블클릭시 부가내용을 write한 페이지의 다음 페이지 에서 write해서 뿌려주는 방법이 좋을듯한데
그렇게 하려면 어떻게 해야하나요??
고수님들의 많은 조언 부탁드립니다.
혹시 소스 필요하실가봐 소스 올려드립니다.
댓글 10
-
가오만땅
2008.03.25 22:24
-
bizarre
2008.03.26 00:00
at line-selection 에서
라인을 클릭했을때 현제 인덱스의 오더번호를 알아내면 해결이 될듯 싶은데 어떻게 해야 알아낼수 있나요??
라인을 더블클릭했을때 인덱스의 ebeln(오더번호) 값을 알아내서 버퍼 l_ebeln 에 저장해서
loop at it_01
if ebeln = l_ebeln
데이터 출력~
endif.
이렇게 하면 해결이 될듯싶은데 더블클릭했을때의 인덱스에 따른 필드값을 빼오려면 어케 해야할까요?
-
할일없는무급개발자
2008.03.26 00:17
트리 구조로 하는게 좋을듯한대요..
write 로 하셨으면 write트리도 가능한대...
형태는 +, - (아이콘)
+ AA
+ BB
+ 클릭시
-AA
300 200
150 200
+ BB
이런 형태로 나오게 하는게 좋을꺼 같네용..
참고할 예제 필요하시면 말해주세요.. 근대 왕 노가다에용..
-
bizarre
2008.03.26 00:28
제가 지금 아밥 막 배우는 초보 단계라 이것저것 다 해보는중입니다.
트리 구조도 배워봐야겠네요
트리 예제 보내주시면 감사하겠습니다~
그리구 제가 원하는 식으로도 해보고 싶은데 해결책 아시는분 조언 부탁드립니다~ ^^
지금 제가 한 소스 다시 올려놓겠습니다.~ -
할일없는무급개발자
2008.03.26 01:14
bizarre 님이 원하시는 방법으로 스크린을 그릴 필요없이 DIALOGBOX_CONTAINER 이거를 이용하시면 될듯하네요.
오더번호 내용 내용2
AA합계 550 700
BB합계 250 250
이런식으로 우선 나오게 하시고
AT LINE-SELECTION.
READ TABLE 해서 라인을 읽어 거기에 해당하는 오더번호를 추출 하신다음에
오더 번호를 포함 조건을 다시줘서 디비에서 다시 읽어 오시던지 아니면 ITAB에 담고 계시면 ITAB 추출 하신 다음
-
할일없는무급개발자
2008.03.26 01:15
* -------------------선언
* ALV CONTROL
* -------------------
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
DATA:
G_GRID TYPE REF TO CL_GUI_ALV_GRID,
* g_custom_9010 TYPE REF TO cl_gui_custom_container.
DIALOGBOX_CONTAINER TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER,
EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
DATA : L_INDEX TYPE I,
L_REPID LIKE SY-REPID.
DATA: L_POS TYPE I VALUE 0.
** 클래스 이용 ALV.
DATA: LS_VARIANT LIKE DISVARIANT,
LS_LAYOUTCAT TYPE LVC_S_LAYO,
LS_FIELDCAT TYPE LVC_S_FCAT,
LT_FIELDCAT TYPE LVC_T_FCAT,
LS_SORTCAT TYPE LVC_S_SORT,
LT_SORTCAT TYPE LVC_T_SORT,
LS_PRINTCAT TYPE LVC_S_PRNT.
****************************************************************
* LOCAL CLASSES: Definition
****************************************************************
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_CLOSE
FOR EVENT CLOSE OF CL_GUI_DIALOGBOX_CONTAINER
IMPORTING SENDER.
PRIVATE SECTION.
DATA: DIALOGBOX_STATUS TYPE C. "'X': does exist, SPACE: does not ex.
ENDCLASS. "lcl_event_receiver DEFINITION
****************************************************************
* LOCAL CLASSES: Implementation
****************************************************************
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_CLOSE.
CALL METHOD SENDER->SET_VISIBLE
EXPORTING
VISIBLE = SPACE.
ENDMETHOD. "handle_close
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
-
할일없는무급개발자
2008.03.26 01:17
CREATE OBJECT DIALOGBOX_CONTAINER
EXPORTING
TOP = 150
LEFT = 150
LIFETIME = CNTL_LIFETIME_DYNPRO
CAPTION = '세부사항'
WIDTH = 590
HEIGHT = 200.
CREATE OBJECT G_GRID
EXPORTING I_PARENT = DIALOGBOX_CONTAINER.
* BUILD VARIANT.
PERFORM ALV_BUILD_VARI. "ALV VARI.
* BUILD FIELDCAT.
PERFORM ALV_BUILD_FIELDCAT. "ALV FIELDCAT.
* BUILD SORTCAT.
PERFORM ALV_BUILD_SORTCAT. "ALV SORT CATLG.
* LAYOUT MAKE.
PERFORM ALV_LAYOUT_MAKE. "ALV LAYOUT MAKE.
* PRINT SETTING
PERFORM ALV_PRINT_SETTING. "ALV PRINT SETTING.
*..... Show table on ALV Control
CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'WA_CLICK'
IS_VARIANT = LS_VARIANT
I_SAVE = 'A'
I_DEFAULT = 'X'
IS_LAYOUT = LS_LAYOUTCAT
* is_print = LS_PRINTCAT
CHANGING
IT_FIELDCATALOG = LT_FIELDCAT
IT_SORT = LT_SORTCAT
IT_OUTTAB = GT_CLICK[].
* --> Create Object to receive events and link them to handler methods.
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_CLOSE FOR DIALOGBOX_CONTAINER.
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = G_GRID.
*&---------------------------------------------------------------------*
*& Form ALV_BUILD_VARI
*&---------------------------------------------------------------------*
FORM ALV_BUILD_VARI .
LS_VARIANT-REPORT = SY-REPID.
LS_VARIANT-HANDLE = SPACE.
LS_VARIANT-LOG_GROUP = SPACE.
LS_VARIANT-USERNAME = SPACE.
LS_VARIANT-VARIANT = SPACE.
LS_VARIANT-TEXT = SPACE.
LS_VARIANT-DEPENDVARS = SPACE.
ENDFORM. " ALV_BUILD_VARI
*&---------------------------------------------------------------------*
*& Form ALV_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
FORM ALV_BUILD_FIELDCAT .
REFRESH: LT_FIELDCAT.
CLEAR: L_POS.
"금액
PERFORM CAT_INFO_ALV USING:
'필드이름' '필드텍스트' '싸이즈'.
ENDFORM. " ALV_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form ALV_BUILD_SORTCAT
*&---------------------------------------------------------------------*
FORM ALV_BUILD_SORTCAT .
REFRESH: LT_SORTCAT.
CLEAR LS_SORTCAT.
LS_SORTCAT-SPOS = '1'.
LS_SORTCAT-FIELDNAME = ' '.
LS_SORTCAT-GROUP = SPACE.
LS_SORTCAT-UP = 'X'.
LS_SORTCAT-DOWN = SPACE.
* LS_SORTCAT-subtot = space.
APPEND LS_SORTCAT TO LT_SORTCAT.
CLEAR LS_SORTCAT.
LS_SORTCAT-SPOS = '2'.
LS_SORTCAT-FIELDNAME = ' '.
LS_SORTCAT-GROUP = SPACE.
LS_SORTCAT-UP = 'X'.
LS_SORTCAT-DOWN = SPACE.
* LS_SORTCAT-subtot = space.
APPEND LS_SORTCAT TO LT_SORTCAT.
ENDFORM. " ALV_BUILD_SORTCAT
*&---------------------------------------------------------------------*
*& Form ALV_LAYOUT_MAKE
*&---------------------------------------------------------------------*
FORM ALV_LAYOUT_MAKE .
* ... ALV-Control: Allgemeine Anzeigeoptionen
LS_LAYOUTCAT-STYLEFNAME = SPACE.
* LS_LAYOUTCAT-CWIDTH_OPT = 'X'.
LS_LAYOUTCAT-ZEBRA = SPACE.
LS_LAYOUTCAT-SMALLTITLE = 'X'.
LS_LAYOUTCAT-GRAPHICS = SPACE.
LS_LAYOUTCAT-FRONTEND = 'X'.
LS_LAYOUTCAT-TEMPLATE = SPACE.
* ... ALV-Control: Gridcustomizing
LS_LAYOUTCAT-NO_COLEXPD = SPACE.
LS_LAYOUTCAT-NO_HGRIDLN = SPACE.
LS_LAYOUTCAT-NO_VGRIDLN = SPACE.
LS_LAYOUTCAT-NO_ROWMARK = SPACE.
LS_LAYOUTCAT-NO_HEADERS = SPACE.
LS_LAYOUTCAT-NO_MERGING = SPACE.
LS_LAYOUTCAT-GRID_TITLE = SPACE.
LS_LAYOUTCAT-NO_TOOLBAR = SPACE.
LS_LAYOUTCAT-SEL_MODE = 'D'.
* LS_LAYOUTCAT-box_fname = 'BOX'.
LS_LAYOUTCAT-SGL_CLK_HD = SPACE.
* ... ALV-Control: Summenoptionen
LS_LAYOUTCAT-TOTALS_BEF = SPACE.
LS_LAYOUTCAT-NO_TOTLINE = SPACE.
LS_LAYOUTCAT-NUMC_TOTAL = SPACE.
LS_LAYOUTCAT-NO_UTSPLIT = SPACE.
* ... ALV-Control: Exceptions
* LS_LAYOUTCAT-excp_group = gs_test-excp_group.
* LS_LAYOUTCAT-excp_fname = 'LIGHTS'.
* LS_LAYOUTCAT-excp_rolln = space.
* LS_LAYOUTCAT-excp_conds = gs_test-excp_condense.
* LS_LAYOUTCAT-excp_led = gs_test-excp_led.
* ... ALV-Control: Steuerung Interaktion
LS_LAYOUTCAT-DETAILINIT = SPACE.
LS_LAYOUTCAT-DETAILTITL = SPACE.
LS_LAYOUTCAT-KEYHOT = SPACE.
LS_LAYOUTCAT-NO_KEYFIX = SPACE.
LS_LAYOUTCAT-NO_AUTHOR = SPACE.
CLEAR LS_LAYOUTCAT-S_DRAGDROP.
* ... ALV-Control: Farben
LS_LAYOUTCAT-INFO_FNAME = 'LINE_COLOR'.
* LS_LAYOUTCAT-ctab_fname = 'CELLCOLOR'. "COLOR_CELL
LS_LAYOUTCAT-CTAB_FNAME = SPACE. "space.
* ... ALV-Control: Eingabef?igkeit
LS_LAYOUTCAT-EDIT = SPACE.
LS_LAYOUTCAT-EDIT_MODE = 'A'.
LS_LAYOUTCAT-NO_ROWINS = SPACE.
LS_LAYOUTCAT-NO_ROWMOVE = SPACE.
* ... ALV-Control: Web-Optionen
LS_LAYOUTCAT-WEBLOOK = SPACE.
LS_LAYOUTCAT-WEBSTYLE = SPACE.
LS_LAYOUTCAT-WEBROWS = SPACE.
LS_LAYOUTCAT-WEBXWIDTH = SPACE.
LS_LAYOUTCAT-WEBXHEIGHT = SPACE.
ENDFORM. " ALV_LAYOUT_MAKE
*&---------------------------------------------------------------------*
*& Form ALV_PRINT_SETTING
*&---------------------------------------------------------------------*
FORM ALV_PRINT_SETTING .
LS_PRINTCAT-GRPCHGEDIT = 'X'.
ENDFORM. " ALV_PRINT_SETTING
*&---------------------------------------------------------------------*
*& Form CAT_INFO_ALV1_1100
*&---------------------------------------------------------------------*
FORM CAT_INFO_ALV USING P_FIELDNAME
P_DDTEXT
P_OUTPUTLEN.
L_POS = L_POS + 1.
CLEAR: LS_FIELDCAT.
LS_FIELDCAT-COL_POS = L_POS.
* --> DATA TABLE & FIELD
LS_FIELDCAT-TABNAME = 'ITAB이름'.
LS_FIELDCAT-FIELDNAME = P_FIELDNAME.
LS_FIELDCAT-COLTEXT = P_DDTEXT.
LS_FIELDCAT-OUTPUTLEN = P_OUTPUTLEN.
* 각종조건
APPEND LS_FIELDCAT TO LT_FIELDCAT.
ENDFORM. " CAT_INFO_ALV1_1100
-
할일없는무급개발자
2008.03.26 01:19
이걸 이용하시면 될듯하네요...
저두 완전 초보라서..
저 같은경우는 예제 프로그램 BCALV_GRID_02 이걸 이용해서.. 했습니다..
-
이동준
2008.03.26 19:13
감사합니다.
-
bizarre
2008.03.27 01:11
많은 조언들 덕분에 잘 해결되었습니다 감사합니다~
write 를 쓰신것 보니.. 4.0 정도의 버젼이신가요?
4.0 이면.. 클래스는 없어소 function alv 는 있으니 그걸 쓰시는게 깔끔하겠네요..
write로도 구현이 불가하진 않지만.. 무지 복잡스러워요..