11-13-2007 7:01 AM
11-13-2007 7:05 AM
Hi,
Please have a look at these pgms
DEMO_DYNPRO_TABLE_CONTROL_1
DEMO_DYNPRO_TABLE_CONTROL_2
demo_dynpro_tabcont_loop_at.
Chek out this pdf for a simple tablecontrol:
MODULE EXTRACT_USERDATA INPUT.
CASE SAVE_CODE.
WHEN 'DELE'.
IF SELECTION IS INITIAL AND
confirmation = 'G'.
PERFORM TRANSFER.
ENDIF.
WHEN 'SAVE'.
PERFORM TRANSFER.
WHEN 'APND'.
PERFORM TRANSFER.
ENDCASE.
ENDMODULE. " EXTRACT_USERDATA INPUT
*&----
*& Form TRANSFER
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM TRANSFER.
CLEAR ITAB_PHONELIST.
ITAB_PHONELIST-NAME = RECORD-NAME.
ITAB_PHONELIST-PHONE = RECORD-PHONE.
ITAB_PHONELIST-EMAIL = RECORD-EMAIL.
APPEND ITAB_PHONELIST.
ENDFORM. " TRANSFER
Use the APPEND statement to add data to the internal table .
Use MODIFY <DBtable> from table <itab> if you want to modify ur dbtable.
Regards,
Omkar.
11-13-2007 7:05 AM
Hi,
Please have a look at these pgms
DEMO_DYNPRO_TABLE_CONTROL_1
DEMO_DYNPRO_TABLE_CONTROL_2
demo_dynpro_tabcont_loop_at.
Chek out this pdf for a simple tablecontrol:
MODULE EXTRACT_USERDATA INPUT.
CASE SAVE_CODE.
WHEN 'DELE'.
IF SELECTION IS INITIAL AND
confirmation = 'G'.
PERFORM TRANSFER.
ENDIF.
WHEN 'SAVE'.
PERFORM TRANSFER.
WHEN 'APND'.
PERFORM TRANSFER.
ENDCASE.
ENDMODULE. " EXTRACT_USERDATA INPUT
*&----
*& Form TRANSFER
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM TRANSFER.
CLEAR ITAB_PHONELIST.
ITAB_PHONELIST-NAME = RECORD-NAME.
ITAB_PHONELIST-PHONE = RECORD-PHONE.
ITAB_PHONELIST-EMAIL = RECORD-EMAIL.
APPEND ITAB_PHONELIST.
ENDFORM. " TRANSFER
Use the APPEND statement to add data to the internal table .
Use MODIFY <DBtable> from table <itab> if you want to modify ur dbtable.
Regards,
Omkar.
11-13-2007 7:07 AM
11-13-2007 7:08 AM
Hi,
check this
&----
*& Report ZBDC_TAB_CTRL_FB50 *
*& *
&----
*& *
*& *
&----
REPORT ZBDC_TAB_CTRL_FB50 .
DATA: I_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
****Header Internal Table
DATA: BEGIN OF T_HEAD OCCURS 0,
BLDAT(10) TYPE C,
BUDAT(10) TYPE C,
END OF T_HEAD.
****Detail Internal Table
DATA: BEGIN OF T_DET OCCURS 0,
BLDAT(10) TYPE C,
BUDAT(10) TYPE C,
HKONT LIKE ACGL_ITEM-HKONT,
SHKZG LIKE ACGL_ITEM-SHKZG,
WRBTR(16) TYPE C,
END OF T_DET.
DATA: T_EXCEL LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE,
IDX(2) TYPE C,
FNAM(20) TYPE C,
FVAL(40) TYPE C.
***Internal Table for Holding Messages
DATA: BEGIN OF MSGTAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF MSGTAB.
Parameter for locating the .xls file
PARAMETER:P_FILE TYPE RLGRAP-FILENAME OBLIGATORY.
***Selection Block for Header Section
SELECTION-SCREEN : BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETER: PBROW_HD TYPE I,
PEROW_HD TYPE I,
PBCOL_HD TYPE I,
PECOL_HD TYPE I.
SELECTION-SCREEN : END OF BLOCK BLK1.
***Selection Block for Detail Section
SELECTION-SCREEN : BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
PARAMETER: PBROW_DT TYPE I,
PEROW_DT TYPE I,
PBCOL_DT TYPE I,
PECOL_DT TYPE I.
SELECTION-SCREEN : END OF BLOCK BLK2.
****Selecting the
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE.
START-OF-SELECTION.
***Selecting data from .xls for the header data
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = PBCOL_HD
I_BEGIN_ROW = PBROW_HD
I_END_COL = PECOL_HD
I_END_ROW = PEROW_HD
TABLES
INTERN = T_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
****For Header internal Table
LOOP AT T_EXCEL WHERE ROW GT 0.
CASE T_EXCEL-COL.
WHEN 1. MOVE T_EXCEL-VALUE TO T_HEAD-BLDAT.
WHEN 2. MOVE T_EXCEL-VALUE TO T_HEAD-BUDAT.
ENDCASE.
AT END OF ROW.
APPEND T_HEAD.
CLEAR T_HEAD.
ENDAT.
ENDLOOP.
***Selecting data from .xls for the detail data
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = PBCOL_DT
I_BEGIN_ROW = PBROW_DT
I_END_COL = PECOL_DT
I_END_ROW = PEROW_DT
TABLES
INTERN = T_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
****For Detail internal Table
LOOP AT T_EXCEL WHERE ROW GT 0.
CASE T_EXCEL-COL.
WHEN 1. MOVE T_EXCEL-VALUE TO T_DET-BLDAT.
WHEN 2. MOVE T_EXCEL-VALUE TO T_DET-BUDAT.
WHEN 3. MOVE T_EXCEL-VALUE TO T_DET-HKONT.
WHEN 4. MOVE T_EXCEL-VALUE TO T_DET-SHKZG.
WHEN 5. MOVE T_EXCEL-VALUE TO T_DET-WRBTR.
ENDCASE.
AT END OF ROW.
APPEND T_DET.
CLEAR T_DET.
ENDAT.
ENDLOOP.
***Populating i_bdcdata from the header internal table
LOOP AT T_HEAD .
PERFORM BDC USING 'H'.
***Populating i_bdcdata from the detail internal table
LOOP AT T_DET WHERE BLDAT = T_HEAD-BLDAT AND
BUDAT = T_HEAD-BUDAT.
PERFORM BDC USING 'D'.
ENDLOOP.
PERFORM POPULATE_BDCTABLE USING:'' 'BDC_OKCODE' '=BU'.
CALL TRANSACTION 'FB50' USING I_BDCDATA
MODE 'A'
UPDATE 'A'.
ENDLOOP.
&----
*& Form POPULATE_BDCTABLE
&----
text
----
-->P_0011 text
-->P_0012 text
-->P_0013 text
----
FORM POPULATE_BDCTABLE USING VALUE(P_FLAG)
VALUE(P_FNAM)
VALUE(P_FVAL).
IF P_FLAG = 'X'.
I_BDCDATA-PROGRAM = P_FNAM.
I_BDCDATA-DYNPRO = P_FVAL.
I_BDCDATA-DYNBEGIN = 'X'.
ELSE.
I_BDCDATA-FNAM = P_FNAM.
I_BDCDATA-FVAL = P_FVAL.
ENDIF.
APPEND I_BDCDATA.
CLEAR I_BDCDATA.
ENDFORM. " POPULATE_BDCTABLE
&----
*& Form BDC
&----
text
----
-->P_0416 text
----
FORM BDC USING VALUE(P_VAL).
****For Header
IF P_VAL = 'H'.
DATA:L_BLDAT(10) TYPE C,
L_BUDAT(10) TYPE C.
CLEAR:L_BLDAT,L_BUDAT.
WRITE: T_HEAD-BLDAT TO L_BLDAT,
T_HEAD-BUDAT TO L_BUDAT.
PERFORM POPULATE_BDCTABLE USING:'X' 'SAPMF05A' '1001',
' ' 'BDC_OKCODE' '=0006',
' ' 'BDC_CURSOR' 'ACGL_ITEM-WRBTR(01)',
' ' 'ACGL_HEAD-BLDAT' L_BLDAT,
' ' 'ACGL_HEAD-BUDAT' L_BUDAT .
****For Detail
ELSEIF P_VAL = 'D'.
IDX = IDX + 1.
IF IDX = 1.
CONCATENATE 'ACGL_ITEM-HKONT(0' IDX ')' INTO FNAM.
PERFORM POPULATE_BDCTABLE USING: ' ' FNAM T_DET-HKONT.
CONCATENATE 'ACGL_ITEM-SHKZG(0' IDX ')' INTO FNAM.
PERFORM POPULATE_BDCTABLE USING ' ' FNAM T_DET-SHKZG.
CONCATENATE 'ACGL_ITEM-WRBTR(0' IDX ')' INTO FNAM.
PERFORM POPULATE_BDCTABLE USING ' ' FNAM T_DET-WRBTR.
ELSE.
IF IDX > 10.
IDX = 10.
ENDIF.
PERFORM POPULATE_BDCTABLE USING: 'X' 'SAPMF05A' '1001',
' ' 'BDC_OKCODE' '=0006'.
CONCATENATE 'ACGL_ITEM-HKONT(0' IDX ')' INTO FNAM.
PERFORM POPULATE_BDCTABLE USING: ' ' FNAM T_DET-HKONT.
CONCATENATE 'ACGL_ITEM-SHKZG(0' IDX ')' INTO FNAM.
PERFORM POPULATE_BDCTABLE USING ' ' FNAM T_DET-SHKZG.
CONCATENATE 'ACGL_ITEM-WRBTR(0' IDX ')' INTO FNAM.
PERFORM POPULATE_BDCTABLE USING ' ' FNAM T_DET-WRBTR.
ENDIF.
ENDIF.
ENDFORM. " BDC