‎2015 Dec 02 6:12 AM
Hello Expert,
I am developing my first Module Pool programming and I have requirement to run 2 table controls in single window with same input.
I have developed the screen and program but not getting the data.
I checked with debugger and data is coming correct for first Table control but not for second table control and in the both cases output is not coming.
Please help me to resolve this.
***********ZF_CFORM1_TOP******************
PROGRAM ZF_CFORM1.
DATA : OK_CODE TYPE SY-UCOMM.
DATA : GV_FLAG TYPE CHAR1.
CONTROLS : TABLC TYPE TABLEVIEW USING SCREEN 0100.
DATA : GV_FLAG1 TYPE CHAR1.
CONTROLS : TABLC1 TYPE TABLEVIEW USING SCREEN 0100.
TYPES : BEGIN OF TY_BKPF,
BUKRS TYPE BKPF-BUKRS,
BELNR TYPE BKPF-BELNR,
BLART TYPE BKPF-BLART,
BUDAT TYPE BKPF-BUDAT,
END OF TY_BKPF,
BEGIN OF TY_BSEG,
BELNR TYPE BSEG-BELNR,
KOART TYPE BSEG-KOART,
SHKZG TYPE BSEG-SHKZG,
WRBTR TYPE BSEG-WRBTR,
KUNNR TYPE BSEG-KUNNR,
END OF TY_BSEG,
BEGIN OF TY_ZFCFORM,
BELNR TYPE BKPF-BELNR,
KUNNR TYPE BSEG-KUNNR,
BUDAT TYPE BKPF-BUDAT,
WRBTR TYPE BSEG-WRBTR,
ZBELNR1 TYPE BELNR_D,
ZWRBTR1 TYPE BELNR_D,
END OF TY_ZFCFORM,
BEGIN OF TY_TOTAL,
BELNR TYPE BKPF-BELNR,
KUNNR TYPE BSEG-KUNNR,
BUDAT TYPE BKPF-BUDAT,
WRBTR TYPE BSEG-WRBTR,
CHECK TYPE C,
END OF TY_TOTAL,
BEGIN OF TY_TOTAL1,
BELNR TYPE BKPF-BELNR,
KUNNR TYPE BSEG-KUNNR,
BUDAT TYPE BKPF-BUDAT,
WRBTR TYPE BSEG-WRBTR,
* ZBELNR1 TYPE BELNR_D,
* ZWRBTR1 TYPE BELNR_D,
CHECK TYPE C,
END OF TY_TOTAL1.
DATA :
IT_BKPF TYPE STANDARD TABLE OF TY_BKPF,
WA_BKPF TYPE TY_BKPF,
IT_BSEG TYPE STANDARD TABLE OF TY_BSEG,
WA_BSEG TYPE TY_BSEG,
IT_TOTAL TYPE TABLE OF TY_TOTAL,
WA_TOTAL TYPE TY_TOTAL,
IT_TOTAL1 TYPE TABLE OF TY_TOTAL1,
WA_TOTAL1 TYPE TY_TOTAL1.
SELECTION-SCREEN: BEGIN OF SCREEN 101 AS SUBSCREEN.
SELECT-OPTIONS : S_BUDAT FOR WA_BKPF-BUDAT,
S_KUNNR FOR WA_BSEG-KUNNR.
SELECTION-SCREEN: END OF SCREEN 101.
MODULE GET_DATA OUTPUT.
IF IT_BKPF IS INITIAL AND GV_FLAG EQ 'X'.
SELECT
BUKRS
BELNR
BLART
BUDAT
INTO TABLE IT_BKPF FROM BKPF WHERE BLART = 'RV' AND BUDAT IN S_BUDAT.
* FROM BKPF INTO TABLE IT_BKPF WHERE BUDAT IN S_BUDAT.
SELECT
BELNR
KOART
SHKZG
WRBTR
KUNNR
INTO TABLE IT_BSEG FROM BSEG FOR ALL ENTRIES IN IT_BKPF
WHERE BELNR = IT_BKPF-BELNR AND KOART EQ 'D' AND SHKZG = 'S' AND KUNNR IN S_KUNNR.
" GET_DATA OUTPUT
LOOP AT IT_BSEG INTO WA_BSEG.
* LOOP AT IT_BKPF INTO WA_BKPF.
* READ TABLE IT_ZFCFORM TRANSPORTING NO FIELDS WITH KEY BELNR = WA_BSEG-BELNR KUNNR = WA_BSEG-KUNNR.
READ TABLE IT_BKPF INTO WA_BKPF WITH KEY BELNR = WA_BSEG-BELNR.
* IF SY-SUBRC NE 0.
WA_TOTAL-BELNR = WA_BKPF-BELNR.
WA_TOTAL-KUNNR = WA_BSEG-KUNNR.
WA_TOTAL-BUDAT = WA_BKPF-BUDAT.
WA_TOTAL-WRBTR = WA_BSEG-WRBTR.
* MOVE-CORRESPONDING wa_bseg to wa_total.
APPEND WA_TOTAL TO IT_TOTAL.
* ENDIF.
CLEAR WA_TOTAL.
DELETE ADJACENT DUPLICATES FROM IT_TOTAL COMPARING BUDAT WRBTR.
*ENDLOOP.
ENDLOOP.
ENDIF.
*ENDMODULE.
*************************************************ZF_CFORM1_GET_DATA_O01**************************************
*&---------------------------------------------------------------------*
*& Module CURR_LINE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
*MODULE CURR_LINE OUTPUT.
* DATA : V_LINES TYPE I.
* DESCRIBE TABLE IT_TOTAL lines V_LINES.
* DESCRIBE TABLE IT_TOTAL1 lines V_LINES.
*TABLC-CURRENT_LINE = SY-LOOPC.
*TABLC-LINES = SY-DBCNT.
*TABLC-LINES = V_LINES.
*ENDMODULE. " CURR_LINE OUTPUT
*MODULE GET_DATA1 OUTPUT.
* IF IT_BKPF IS INITIAL AND GV_FLAG1 EQ 'X'.
SELECT
BUKRS
BELNR
BLART
BUDAT
INTO TABLE IT_BKPF FROM BKPF WHERE BUDAT IN S_BUDAT.
* FROM BKPF INTO TABLE IT_BKPF WHERE BUDAT IN S_BUDAT.
SELECT
BELNR
KOART
SHKZG
WRBTR
KUNNR
INTO TABLE IT_BSEG FROM BSEG FOR ALL ENTRIES IN IT_BKPF
WHERE BELNR = IT_BKPF-BELNR AND KOART EQ 'D' AND SHKZG = 'H' AND KUNNR IN S_KUNNR.
" GET_DATA OUTPUT
LOOP AT IT_BSEG INTO WA_BSEG.
* LOOP AT IT_BKPF INTO WA_BKPF.
* READ TABLE IT_ZFCFORM TRANSPORTING NO FIELDS WITH KEY BELNR = WA_BSEG-BELNR KUNNR = WA_BSEG-KUNNR.
READ TABLE IT_BKPF INTO WA_BKPF WITH KEY BELNR = WA_BSEG-BELNR.
* IF SY-SUBRC NE 0.
WA_TOTAL1-BELNR = WA_BKPF-BELNR.
WA_TOTAL1-KUNNR = WA_BSEG-KUNNR.
WA_TOTAL1-BUDAT = WA_BKPF-BUDAT.
WA_TOTAL1-WRBTR = WA_BSEG-WRBTR.
* MOVE-CORRESPONDING wa_bseg to wa_total.
APPEND WA_TOTAL1 TO IT_TOTAL1.
* ENDIF.
CLEAR WA_TOTAL1.
DELETE ADJACENT DUPLICATES FROM IT_TOTAL1 COMPARING BUDAT WRBTR.
*ENDLOOP.
ENDLOOP.
*ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module CURR_LINE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CURR_LINE OUTPUT.
DATA : V_LINES TYPE I.
DESCRIBE TABLE IT_TOTAL lines V_LINES.
* DESCRIBE TABLE IT_TOTAL1 lines V_LINES1.
TABLC-CURRENT_LINE = SY-LOOPC.
TABLC-LINES = SY-DBCNT.
TABLC-LINES = V_LINES.
DATA : V_LINES1 TYPE I.
* DESCRIBE TABLE IT_TOTAL lines V_LINES.
DESCRIBE TABLE IT_TOTAL1 lines V_LINES1.
TABLC1-CURRENT_LINE = SY-LOOPC.
TABLC1-LINES = SY-DBCNT.
TABLC1-LINES = V_LINES1.
ENDMODULE.
********************************************************************ZF_CFORM1_MODIFY_I01************************
MODULE MODIFY INPUT.
MODIFY IT_TOTAL FROM WA_TOTAL
INDEX TABLC-CURRENT_LINE.
MODIFY IT_TOTAL1 FROM WA_TOTAL1
INDEX TABLC1-CURRENT_LINE.
ENDMODULE. " MODIFY INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
OK_CODE = SY-UCOMM.
CLEAR SY-UCOMM.
CASE OK_CODE.
WHEN 'DISP'.
GV_FLAG = 'X'.
* GV_FLAG1 = 'X'.
WHEN 'CLER'.
CLEAR GV_FLAG.
* CLEAR GV_FLAG1.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
**************************************************************SCREEN 100*********************************
PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*
MODULE GET_DATA.
LOOP AT IT_TOTAL INTO WA_TOTAL WITH CONTROL TABLC.
MODULE CURR_LINE.
ENDLOOP.
MODULE GET_DATA1.
LOOP AT IT_TOTAL1 INTO WA_TOTAL1 WITH CONTROL TABLC1.
MODULE CURR_LINE.
ENDLOOP.
CALL SUBSCREEN SUB1
INCLUDING SY-REPID '101'.
PROCESS AFTER INPUT.
CALL SUBSCREEN SUB1.
LOOP AT IT_TOTAL ."into WA_TOTAL.
FIELD : WA_TOTAL-BELNR,
WA_TOTAL-KUNNR,
WA_TOTAL-BUDAT,
WA_TOTAL-WRBTR.
MODULE MODIFY.
ENDLOOP.
LOOP AT IT_TOTAL1.
FIELD : WA_TOTAL1-BELNR,
WA_TOTAL1-KUNNR,
WA_TOTAL1-BUDAT,
WA_TOTAL1-WRBTR.
MODULE MODIFY.
ENDLOOP.
MODULE USER_COMMAND_0100.
‎2015 Dec 02 10:43 AM
‎2015 Dec 02 10:58 AM
Hi,
Please refer below link.
http://scn.sap.com/community/abap/blog/2008/05/20/using-multiple-table-controls-in-one-screen
‎2015 Dec 02 11:07 AM
Hi,
Please refer below link.
http://scn.sap.com/community/abap/blog/2008/05/20/using-multiple-table-controls-in-one-screen