‎2014 Apr 15 12:46 PM
Hello,
I am a current student working on a project for school, so assume I am a beginner.
I am asking for an example of a simple ABAP Dynpro (Not WebDynpro, we don't have access to that) program that will allow user to input, modify, and delete multiple records at once to a DB table.
The DB tables are set up like this:
Z_HBK
MANDT
HBK_ID
S_PLANT
R_PLANT
HBK_DATE
Z_HBK_DATA
MANDT
HBK_ID
DRIVER
CHECKER
CUSTOMER
PRODUCT
R2S_QTY
DAM_QTY
DEST_QTY
I need to be able to enter multiple records into the Z_HBK_DATA table, with the same HBK_ID. I have set the tables composite key to so the table can accept multiple HBK_ID entries:
MANDT
HBK_ID
DRIVER
CHECKER
CUSTOMER
PRODUCT
I have tried countless times to use table wizard, but have not been successful.
Please help my to create simple program that will enter multiple records at 1 time into the Z_HBK_DATA table.
Also, If anyone can help me to add a button onto the following program to allow user to email report from individual report output screen, that would be very helpful as well.
Thank you,
Mike
*&---------------------------------------------------------------------*
*& Report Z03_HBK_REPORT_ALL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z03_HBK_REPORTS.
TYPES: BEGIN OF TY_HBK_DATA,
HBK_ID type Z03_HBK_DOC_NUM,
DRIVER type PERSNO,
CHECKER TYPE PERSNO,
CUSTOMER TYPE KUNNR,
PRODUCT TYPE MATNR,
R2S_QTY TYPE INT2,
DAM_QTY TYPE INT2,
DEST_QTY TYPE INT2,
END OF TY_HBK_DATA,
BEGIN OF TY_HBK_DATA_R2S,
HBK_ID type Z03_HBK_DOC_NUM,
DRIVER type PERSNO,
CHECKER TYPE PERSNO,
CUSTOMER TYPE KUNNR,
PRODUCT TYPE MATNR,
R2S_QTY TYPE INT2,
END OF TY_HBK_DATA_R2S,
BEGIN OF TY_HBK_DATA_DAM,
HBK_ID type Z03_HBK_DOC_NUM,
DRIVER type PERSNO,
CHECKER TYPE PERSNO,
CUSTOMER TYPE KUNNR,
PRODUCT TYPE MATNR,
DAM_QTY TYPE INT2,
END OF TY_HBK_DATA_DAM,
BEGIN OF TY_HBK_DATA_DEST,
HBK_ID type Z03_HBK_DOC_NUM,
DRIVER type PERSNO,
CHECKER TYPE PERSNO,
CUSTOMER TYPE KUNNR,
PRODUCT TYPE MATNR,
DEST_QTY TYPE INT2,
END OF TY_HBK_DATA_DEST.
DATA: IT_HBK_DATA TYPE TABLE OF TY_HBK_DATA,
WA_HBK_DATA TYPE TY_HBK_DATA,
IT_HBK_DATA_R2S TYPE TABLE OF TY_HBK_DATA_R2S,
WA_HBK_DATA_R2S TYPE TY_HBK_DATA_R2S,
IT_HBK_DATA_DAM TYPE TABLE OF TY_HBK_DATA_DAM,
WA_HBK_DATA_DAM TYPE TY_HBK_DATA_DAM,
IT_HBK_DATA_DEST TYPE TABLE OF TY_HBK_DATA_DEST,
WA_HBK_DATA_DEST TYPE TY_HBK_DATA_DEST.
SELECTION-SCREEN BEGIN OF SCREEN 100.
SELECT-OPTIONS: S_DATA FOR WA_HBK_DATA-HBK_ID.
SELECTION-SCREEN END OF SCREEN 100.
SELECTION-SCREEN BEGIN OF SCREEN 101.
SELECT-OPTIONS: S_R2S FOR WA_HBK_DATA_R2S-HBK_ID.
SELECTION-SCREEN END OF SCREEN 101.
SELECTION-SCREEN BEGIN OF SCREEN 102.
SELECT-OPTIONS: S_DAM FOR WA_HBK_DATA_DAM-HBK_ID.
SELECTION-SCREEN END OF SCREEN 102.
SELECTION-SCREEN BEGIN OF SCREEN 103.
SELECT-OPTIONS: S_DEST FOR WA_HBK_DATA_DEST-HBK_ID.
SELECTION-SCREEN END OF SCREEN 103.
PARAMETERS: HBK_DATA RADIOBUTTON GROUP ONE,
HBK_R2S RADIOBUTTON GROUP ONE,
HBK_DAM RADIOBUTTON GROUP ONE,
HBK_DEST RADIOBUTTON GROUP ONE.
IF HBK_DATA = 'X'.
CALL SELECTION-SCREEN 100 STARTING AT 10 10 ENDING AT 100 10.
PERFORM GET_HBK_DATA.
PERFORM DISP_HBK_DATA.
ELSEIF HBK_R2S = 'X'.
CALL SELECTION-SCREEN 101 STARTING AT 10 10 ENDING AT 100 10.
PERFORM GET_HBK_DATA_R2S.
PERFORM DISP_HBK_DATA_R2S.
ELSEIF HBK_DAM = 'X'.
CALL SELECTION-SCREEN 102 STARTING AT 10 10 ENDING AT 100 10.
PERFORM GET_HBK_DATA_DAM.
PERFORM DISP_HBK_DATA_DAM.
ELSEIF HBK_DEST = 'X'.
CALL SELECTION-SCREEN 103 STARTING AT 10 10 ENDING AT 100 10.
PERFORM GET_HBK_DATA_DEST.
PERFORM DISP_HBK_DATA_DEST.
ENDIF.
*&---------------------------------------------------------------------*
*& Form GET_HBK_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_HBK_DATA .
SELECT HBK_ID
DRIVER
CHECKER
CUSTOMER
PRODUCT
R2S_QTY
DAM_QTY
DEST_QTY FROM Z03_HBK_DATA INTO TABLE IT_HBK_DATA
WHERE HBK_ID IN S_DATA.
ENDFORM. " GET_HBK_DATA
*&---------------------------------------------------------------------*
*& Form DISP_HBK_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISP_HBK_DATA .
LOOP AT IT_HBK_DATA INTO WA_HBK_DATA.
AT FIRST.
WRITE: /10'HAULBACK NUMBER',
30 'DRIVER ID',
50 'CHECKER ID',
70 'CUSTOMER ID',
90 'PRODUCT',
110 'R2S QTY',
130 'DAMAGED QTY',
150 ' DESTROY QTY'.
WRITE: /10 SY-ULINE.
ENDAT.
WRITE: /10 WA_hbk_data-HBK_ID,
30 WA_HBK_DATA-DRIVER,
50 WA_HBK_DATA-CHECKER,
70 WA_HBK_DATA-CUSTOMER,
90 WA_HBK_DATA-PRODUCT,
110 WA_HBK_DATA-R2S_QTY,
130 WA_HBK_DATA-dAM_QTY,
150 WA_HBK_DATA-DEST_QTY.
ENDLOOP.
ENDFORM. " DISP_HBK_DATA
*&---------------------------------------------------------------------*
*& Form GET_HBK_DATA_R2S
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_HBK_DATA_R2S .
SELECT HBK_ID
DRIVER
CHECKER
CUSTOMER
PRODUCT
R2S_QTY FROM Z03_HBK_DATA INTO TABLE IT_HBK_DATA_R2S
WHERE HBK_ID IN S_R2S.
ENDFORM. " GET_HBK_DATA_R2S
*&---------------------------------------------------------------------*
*& Form DISP_HBK_DATA_R2S
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISP_HBK_DATA_R2S .
LOOP AT IT_HBK_DATA_R2S INTO WA_HBK_DATA_R2S.
AT FIRST.
WRITE: /10'HAULBACK NUMBER',
30 'DRIVER ID',
50 'CHECKER ID',
70 'CUSTOMER ID',
90 'PRODUCT',
110 'R2S QTY'.
WRITE: /10 SY-ULINE.
ENDAT.
WRITE: /10 WA_hbk_data_R2S-HBK_ID,
30 WA_HBK_DATA_R2S-DRIVER,
50 WA_HBK_DATA_R2S-CHECKER,
70 WA_HBK_DATA_R2S-CUSTOMER,
90 WA_HBK_DATA_R2S-PRODUCT,
110 WA_HBK_DATA_R2S-R2S_QTY.
ENDLOOP.
ENDFORM. " DISP_HBK_DATA_R2S
*&---------------------------------------------------------------------*
*& Form GET_HBK_DATA_DAM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_HBK_DATA_DAM .
SELECT HBK_ID
DRIVER
CHECKER
CUSTOMER
PRODUCT
DAM_QTY FROM Z03_HBK_DATA INTO TABLE IT_HBK_DATA_DAM
WHERE HBK_ID IN S_DAM.
ENDFORM. " GET_HBK_DATA_DAM
*&---------------------------------------------------------------------*
*& Form DISP_HBK_DATA_DAM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISP_HBK_DATA_DAM .
LOOP AT IT_HBK_DATA_DAM INTO WA_HBK_DATA_DAM.
AT FIRST.
WRITE: /10'HAULBACK NUMBER',
30 'DRIVER ID',
50 'CHECKER ID',
70 'CUSTOMER ID',
90 'PRODUCT',
130 'DAMAGED QTY'.
WRITE: /10 SY-ULINE.
ENDAT.
WRITE: /10 WA_hbk_data_DAM-HBK_ID,
30 WA_HBK_DATA_DAM-DRIVER,
50 WA_HBK_DATA_DAM-CHECKER,
70 WA_HBK_DATA_DAM-CUSTOMER,
90 WA_HBK_DATA_DAM-PRODUCT,
130 WA_HBK_DATA_DAM-dAM_QTY.
ENDLOOP.
ENDFORM. " DISP_HBK_DATA_DAM
*&---------------------------------------------------------------------*
*& Form GET_HBK_DATA_DEST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_HBK_DATA_DEST .
SELECT HBK_ID
DRIVER
CHECKER
CUSTOMER
PRODUCT
DEST_QTY FROM Z03_HBK_DATA INTO TABLE IT_HBK_DATA_DEST
WHERE HBK_ID IN S_DEST.
ENDFORM. " GET_HBK_DATA_DEST
*&---------------------------------------------------------------------*
*& Form DISP_HBK_DATA_DEST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISP_HBK_DATA_DEST .
LOOP AT IT_HBK_DATA_DEST INTO WA_HBK_DATA_DEST.
AT FIRST.
WRITE: /10'HAULBACK NUMBER',
30 'DRIVER ID',
50 'CHECKER ID',
70 'CUSTOMER ID',
90 'PRODUCT',
150 ' DESTROY QTY'.
WRITE: /10 SY-ULINE.
ENDAT.
WRITE: /10 WA_hbk_data_DEST-HBK_ID,
30 WA_HBK_DATA_DEST-DRIVER,
50 WA_HBK_DATA_DEST-CHECKER,
70 WA_HBK_DATA_DEST-CUSTOMER,
90 WA_HBK_DATA_DEST-PRODUCT,
150 WA_HBK_DATA_DEST-DEST_QTY.
ENDLOOP.
ENDFORM. " DISP_HBK_DATA_DEST
Thank you,
Mike
‎2014 Apr 15 2:28 PM
Michael, you can adopt your needs using different technologies. If you tried it using a table-control (with wizard), that is something, I do not recommend. Try searching for "editable ALV grid", which will show your editable data that you can always just take from your internal table and pass it to the INSERT / UPDATE / MODIFY statement. You will find it much easier to use during your progress.
If you have more specific questions, go ahead and ask. But do not expect people will give you the whole code once you do not have the idea (that is the place where it comes to the learning part of it).