‎2007 Apr 02 8:52 PM
Hi all,
Could any one give real work task on Dialog programming with source code.
Please do the necessary.
With Regards,
Mahesh
‎2007 Apr 03 3:04 AM
Hi,
check this an example for dialog programming.It has two tabstrips one for header ,other for details
and operationa like insert, modify and delete can be handled on the records.
If u click on one record in table control,the details of the record will be displayed in next screen.
&----
*& Report ZKEERTHI_TAB
*&
&----
*&
*&
&----
REPORT ZKEERTHI_TAB.
tables: vbak,vbap.
controls: mytab type tabstrip ,
tc type tableview using screen 101,
tc1 type tableview using screen 102.
*&SPWIZARD: FUNCTION CODES FOR TABSTRIP 'MY_TABSTRIP'
CONSTANTS: BEGIN OF C_MY_TABSTRIP,
TAB1 LIKE SY-UCOMM VALUE 'PUSH1',
TAB2 LIKE SY-UCOMM VALUE 'PUSH2',
END OF C_MY_TABSTRIP.
DATA: BEGIN OF G_MY_TABSTRIP,
SUBSCREEN LIKE SY-DYNNR,
PROG LIKE SY-REPID VALUE 'ZKEERTHI_TAB',
PRESSED_TAB LIKE SY-UCOMM VALUE C_MY_TABSTRIP-TAB1,
END OF G_MY_TABSTRIP.
DATA: OK_CODE LIKE SY-UCOMM,
v_dynnr like sy-dynnr.
data clicked_line type i.
DATA: SEL TYPE C.
*
*data: begin of it_vbak occurs 0,
vbeln like vbak-vbeln,
erdat like vbak-erdat,
ernam like vbak-ernam,
auart like vbak-auart,
netwr like vbak-netwr,
end of it_vbak.
data: it_vbak like vbak occurs 0 with header line.
types: s_vbak type vbak.
data: begin of it_vbak1 occurs 0,
CHK TYPE C.
include structure vbak.
data: end of it_vbak1.
data: wa_vbak type vbak .
*
*data: begin of it_vbap occurs 0,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
arktx like vbap-arktx,
pstyv like vbap-pstyv,
CHK TYPE C,
end of it_vbap.
data: it_vbap like vbap occurs 0 with header line.
selection-screen begin of block B1 with frame.
parameters: p_vbeln like vbap-vbeln.
selection-screen end of block B1.
start-of-selection.
select * from vbak into corresponding fields of table it_vbak
where vbeln = p_vbeln.
select * from vbap into corresponding fields of table it_vbap
where vbeln = p_vbeln.
end-of-selection.
call screen 100.
&----
*& Module MY_TABSTRIP_ACTIVE_TAB_SET OUTPUT
&----
text
----
MODULE MY_TABSTRIP_ACTIVE_TAB_SET OUTPUT.
MYTAB-ACTIVETAB = G_MY_TABSTRIP-PRESSED_TAB.
CASE G_MY_TABSTRIP-PRESSED_TAB.
WHEN C_MY_TABSTRIP-TAB1.
G_MY_TABSTRIP-SUBSCREEN = '101'.
WHEN C_MY_TABSTRIP-TAB2.
G_MY_TABSTRIP-SUBSCREEN = '102'.
endcase.
ENDMODULE. " MY_TABSTRIP_ACTIVE_TAB_SET OUTPUT
&----
*& Module MY_TABSTRIP_ACTIVE_TAB_GET INPUT
&----
text
----
MODULE MY_TABSTRIP_ACTIVE_TAB_GET INPUT.
OK_CODE = SY-UCOMM.
CASE OK_CODE.
WHEN C_MY_TABSTRIP-TAB1.
G_MY_TABSTRIP-PRESSED_TAB = C_MY_TABSTRIP-TAB1.
WHEN C_MY_TABSTRIP-TAB2.
G_MY_TABSTRIP-PRESSED_TAB = C_MY_TABSTRIP-TAB2.
endcase.
ENDMODULE. " MY_TABSTRIP_ACTIVE_TAB_GET INPUT
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ZZZ'.
SET TITLEBAR 'xxx'.
describe table it_vbak lines tc-lines.
describe table it_vbap lines tc1-lines.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE.
WHEN 'CANCEL'.
LEAVE.
WHEN 'MOD'.
update VBAK FROM table it_vbak.
update VBAP FROM table it_vbap.
describe table it_VBAP lines tc1-lines.
describe table it_vbak lines tc-lines.
when 'INS'.
*This will work,enter vbeln as 0000004981 & giv commit work.
if v_dynnr = '0101'.
insert vbak from table it_vbak.
elseif v_dynnr = '0102'.
insert vbap from table it_vbap.
endif.
WHEN 'DEL'.
if v_dynnr = '0101'.
DELETE VBAK FROM TABLE IT_VBAK.
delete table it_vbak.
elseif v_dynnr = '0102'.
DELETE VBAP FROM TABLE IT_VBAP.
delete it_vbap where vbeln = p_vbeln.
endif.
describe table it_VBAP lines tc1-lines.
describe table it_vbak lines tc-lines.
when 'PICK'.
if v_dynnr = '0101'.
read table it_vbak index clicked_line.
call screen 200.
elseif v_dynnr = '0102'.
read table it_vbap index clicked_line.
call screen 300.
endif.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module INSERT INPUT
&----
text
----
&----
*& Module insert INPUT
&----
text
----
MODULE insert INPUT.
v_dynnr = sy-dynnr.
case sy-ucomm.
when 'INS'.
append it_vbak.
clear it_vbak.
when 'MOD'.
modify it_vbak index tc-current_line.
when 'PICK'.
get cursor line clicked_line.
endcase.
ENDMODULE. " insert INPUT
&----
*& MODule MOD INPUT
&----
text
----
MODULE MOD INPUT.
v_dynnr = sy-dynnr.
case sy-ucomm.
when 'INS'.
append it_vbap.
clear it_vbap.
when 'MOD'.
modify it_vbap index tc1-current_line.
when 'PICK'.
get cursor line clicked_line.
endcase.
ENDMODULE. " MOD INPUT
&----
*& Module STATUS_0200 OUTPUT
&----
text
----
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'XXX'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0200 OUTPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE USER_COMMAND_0200 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANCEL'.
LEAVE.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
&----
*& Module STATUS_0300 OUTPUT
&----
text
----
MODULE STATUS_0300 OUTPUT.
SET PF-STATUS 'YYY'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0300 OUTPUT
&----
*& Module USER_COMMAND_0300 INPUT
&----
text
----
MODULE USER_COMMAND_0300 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANCEL'.
LEAVE.
ENDCASE.
ENDMODULE. " USER_COMMAND_0300 INPUT
regards,
keerthi
‎2007 Apr 03 12:19 AM
Check in these links and PDFs.
DIALOG Programming
http://help.sap.com/saphelp_webas630/helpdata/en/9f/db9cdc35c111d1829f0000e829fbfe/content.htm
http://www.sapdevelopment.co.uk/dialog/dialoghome.htm
http://help.sap.com/saphelp_46c/helpdata/en/08/bef2dadb5311d1ad10080009b0fb56/content.htm
http://www.sapgenie.com/links/abap.htm
http://help.sap.com/saphelp_nw04/helpdata/en/c9/5472fc787f11d194c90000e8353423/frameset.htm
http://help.sap.com/saphelp_47x200/helpdata/en/52/670ba2439b11d1896f0000e8322d00/frameset.htm
http://www.allsaplinks.com/dialog_programming.html
http://sap.mis.cmich.edu/sap-abap/abap09/
http://www.sapdevelopment.co.uk/dialog/dialoghome.htm
http://help.sap.com/saphelp_webas630/helpdata/en/9f/db9cdc35c111d1829f0000e829fbfe/content.htm
http://sap.mis.cmich.edu/abap-00/
http://www.allsaplinks.com/files/using_table_in_screen.pdf
http://help.sap.com/saphelp_46c/helpdata/en/08/bef2dadb5311d1ad10080009b0fb56/content.htm
http://www.sapgenie.com/links/abap.htm
http://help.sap.com/saphelp_nw04/helpdata/en/c9/5472fc787f11d194c90000e8353423/frameset.htm
http://www.sapdevelopment.co.uk/dialog/dialoghome.htm
http://www.sapgenie.com/abap/example_code.htm
http://help.sap.com/saphelp_47x200/helpdata/en/52/670ba2439b11d1896f0000e8322d00/frameset.htm
http://www.allsaplinks.com/dialog_programming.html
http://www.sapbrain.com/TUTORIALS/default.html
http://www.sappoint.com/abap/spmp.pdf
http://www.sap-img.com/abap.htm
http://sap.ittoolbox.com/code/archives.asp?i=10&t=450&a=t
http://www.sapdevelopment.co.uk/dialog/dialoghome.htm
http://www.sapdevelopment.co.uk/dialog/dialoghome.htm
http://www.sappoint.com/faq/faqdiapr.pdf
http://www.allsaplinks.com/dialog_programming.html
Use PA30/PA40 transaction codes to fill the employee master data. The program for this transaction codes is SAPMP50A.
Message was edited by:
sunil kumar
‎2007 Apr 03 3:04 AM
Hi,
check this an example for dialog programming.It has two tabstrips one for header ,other for details
and operationa like insert, modify and delete can be handled on the records.
If u click on one record in table control,the details of the record will be displayed in next screen.
&----
*& Report ZKEERTHI_TAB
*&
&----
*&
*&
&----
REPORT ZKEERTHI_TAB.
tables: vbak,vbap.
controls: mytab type tabstrip ,
tc type tableview using screen 101,
tc1 type tableview using screen 102.
*&SPWIZARD: FUNCTION CODES FOR TABSTRIP 'MY_TABSTRIP'
CONSTANTS: BEGIN OF C_MY_TABSTRIP,
TAB1 LIKE SY-UCOMM VALUE 'PUSH1',
TAB2 LIKE SY-UCOMM VALUE 'PUSH2',
END OF C_MY_TABSTRIP.
DATA: BEGIN OF G_MY_TABSTRIP,
SUBSCREEN LIKE SY-DYNNR,
PROG LIKE SY-REPID VALUE 'ZKEERTHI_TAB',
PRESSED_TAB LIKE SY-UCOMM VALUE C_MY_TABSTRIP-TAB1,
END OF G_MY_TABSTRIP.
DATA: OK_CODE LIKE SY-UCOMM,
v_dynnr like sy-dynnr.
data clicked_line type i.
DATA: SEL TYPE C.
*
*data: begin of it_vbak occurs 0,
vbeln like vbak-vbeln,
erdat like vbak-erdat,
ernam like vbak-ernam,
auart like vbak-auart,
netwr like vbak-netwr,
end of it_vbak.
data: it_vbak like vbak occurs 0 with header line.
types: s_vbak type vbak.
data: begin of it_vbak1 occurs 0,
CHK TYPE C.
include structure vbak.
data: end of it_vbak1.
data: wa_vbak type vbak .
*
*data: begin of it_vbap occurs 0,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
arktx like vbap-arktx,
pstyv like vbap-pstyv,
CHK TYPE C,
end of it_vbap.
data: it_vbap like vbap occurs 0 with header line.
selection-screen begin of block B1 with frame.
parameters: p_vbeln like vbap-vbeln.
selection-screen end of block B1.
start-of-selection.
select * from vbak into corresponding fields of table it_vbak
where vbeln = p_vbeln.
select * from vbap into corresponding fields of table it_vbap
where vbeln = p_vbeln.
end-of-selection.
call screen 100.
&----
*& Module MY_TABSTRIP_ACTIVE_TAB_SET OUTPUT
&----
text
----
MODULE MY_TABSTRIP_ACTIVE_TAB_SET OUTPUT.
MYTAB-ACTIVETAB = G_MY_TABSTRIP-PRESSED_TAB.
CASE G_MY_TABSTRIP-PRESSED_TAB.
WHEN C_MY_TABSTRIP-TAB1.
G_MY_TABSTRIP-SUBSCREEN = '101'.
WHEN C_MY_TABSTRIP-TAB2.
G_MY_TABSTRIP-SUBSCREEN = '102'.
endcase.
ENDMODULE. " MY_TABSTRIP_ACTIVE_TAB_SET OUTPUT
&----
*& Module MY_TABSTRIP_ACTIVE_TAB_GET INPUT
&----
text
----
MODULE MY_TABSTRIP_ACTIVE_TAB_GET INPUT.
OK_CODE = SY-UCOMM.
CASE OK_CODE.
WHEN C_MY_TABSTRIP-TAB1.
G_MY_TABSTRIP-PRESSED_TAB = C_MY_TABSTRIP-TAB1.
WHEN C_MY_TABSTRIP-TAB2.
G_MY_TABSTRIP-PRESSED_TAB = C_MY_TABSTRIP-TAB2.
endcase.
ENDMODULE. " MY_TABSTRIP_ACTIVE_TAB_GET INPUT
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ZZZ'.
SET TITLEBAR 'xxx'.
describe table it_vbak lines tc-lines.
describe table it_vbap lines tc1-lines.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE.
WHEN 'CANCEL'.
LEAVE.
WHEN 'MOD'.
update VBAK FROM table it_vbak.
update VBAP FROM table it_vbap.
describe table it_VBAP lines tc1-lines.
describe table it_vbak lines tc-lines.
when 'INS'.
*This will work,enter vbeln as 0000004981 & giv commit work.
if v_dynnr = '0101'.
insert vbak from table it_vbak.
elseif v_dynnr = '0102'.
insert vbap from table it_vbap.
endif.
WHEN 'DEL'.
if v_dynnr = '0101'.
DELETE VBAK FROM TABLE IT_VBAK.
delete table it_vbak.
elseif v_dynnr = '0102'.
DELETE VBAP FROM TABLE IT_VBAP.
delete it_vbap where vbeln = p_vbeln.
endif.
describe table it_VBAP lines tc1-lines.
describe table it_vbak lines tc-lines.
when 'PICK'.
if v_dynnr = '0101'.
read table it_vbak index clicked_line.
call screen 200.
elseif v_dynnr = '0102'.
read table it_vbap index clicked_line.
call screen 300.
endif.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module INSERT INPUT
&----
text
----
&----
*& Module insert INPUT
&----
text
----
MODULE insert INPUT.
v_dynnr = sy-dynnr.
case sy-ucomm.
when 'INS'.
append it_vbak.
clear it_vbak.
when 'MOD'.
modify it_vbak index tc-current_line.
when 'PICK'.
get cursor line clicked_line.
endcase.
ENDMODULE. " insert INPUT
&----
*& MODule MOD INPUT
&----
text
----
MODULE MOD INPUT.
v_dynnr = sy-dynnr.
case sy-ucomm.
when 'INS'.
append it_vbap.
clear it_vbap.
when 'MOD'.
modify it_vbap index tc1-current_line.
when 'PICK'.
get cursor line clicked_line.
endcase.
ENDMODULE. " MOD INPUT
&----
*& Module STATUS_0200 OUTPUT
&----
text
----
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'XXX'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0200 OUTPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE USER_COMMAND_0200 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANCEL'.
LEAVE.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
&----
*& Module STATUS_0300 OUTPUT
&----
text
----
MODULE STATUS_0300 OUTPUT.
SET PF-STATUS 'YYY'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0300 OUTPUT
&----
*& Module USER_COMMAND_0300 INPUT
&----
text
----
MODULE USER_COMMAND_0300 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANCEL'.
LEAVE.
ENDCASE.
ENDMODULE. " USER_COMMAND_0300 INPUT
regards,
keerthi
‎2007 Apr 03 12:53 PM
hi keerthi
if possible could you give onemore real work task on Dialog programming with source code.
thanks and regard
Satya
‎2007 Apr 04 2:17 AM
Hi,
chk this is another example.
creating 2 database tables and modifying them via module pool programming:
&----
*& Module pool ZTRAINING6_KEERTHI *
*& *
&----
*& *
*& *
&----
PROGRAM ZTRAINING6_KEERTHI .
tables: ZMAT_MVT_KK, zmvt_doc_kk.
CONTROLS TC TYPE TABLEVIEW USING SCREEN '200'.
DATA DECLARATIONS ****
DATA: BEGIN OF IT_DETAILS OCCURS 0,
MANDT LIKE ZMAT_MVT_KK-MANDT,
MOVEMENT_DOC_NO LIKE ZMAT_MVT_KK-MOVEMENT_DOC_NO,
MATERIAL LIKE ZMAT_MVT_KK-MATERIAL,
FROM_PLANT LIKE ZMAT_MVT_KK-FROM_PLANT,
FROM_SLOC LIKE ZMAT_MVT_KK-FROM_SLOC,
MVMT_TYPE LIKE ZMAT_MVT_KK-MVMT_TYPE,
MVMT_DATE LIKE ZMAT_MVT_KK-MVMT_DATE,
QUANTITY LIKE ZMAT_MVT_KK-QUANTITY,
TO_PLANT LIKE ZMAT_MVT_KK-TO_PLANT,
TO_SLOC LIKE ZMAT_MVT_KK-TO_SLOC,
CHK TYPE C,
END OF IT_DETAILS.
data: v_fiscalyear like zmvt_doc_kk-gjahr,
v_currentquarter like zmvt_doc_kk-quarter,
v_movdocno like zmvt_doc_kk-MOVEMENT_DOC_NO.
DATA: Q TYPE I,
SEL TYPE C,
V_UCOMM LIKE SY-UCOMM.
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
module STATUS_0100 output.
SET PF-STATUS 'XXX'.
SET TITLEBAR 'xxx'.
endmodule. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
module USER_COMMAND_0100 input.
V_UCOMM = SY-UCOMM.
case V_UCOMM.
WHEN 'VIEW' OR 'CREA' OR 'MODI' OR 'DELE'.
LEAVE TO SCREEN 200.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
endmodule. " USER_COMMAND_0100 INPUT
&----
*& Module fieldvalid INPUT
&----
text
----
module fieldvalid input.
CASE V_UCOMM.
WHEN 'VIEW' OR 'DELE' OR 'MODI'.
select *
from zmat_mvt_kk
into CORRESPONDING FIELDS OF table IT_DETAILS
where MOVEMENT_DOC_NO = v_movdocno.
if sy-subrc <> 0.
message e000(zz) with 'NO DATA EXISTS FOR THIS COMBINATION'.
endif.
WHEN 'CREA'.
V_FISCALYEAR = SY-DATUM+0(4).
Q = SY-DATUM+4(2).
IF Q < 4.
V_CURRENTQUARTER = '01'.
ELSEIF Q < 7.
V_CURRENTQUARTER = '02'.
ELSEIF Q < 10.
V_CURRENTQUARTER = '03'.
ELSEIF Q < 12.
V_CURRENTQUARTER = '04'.
ENDIF.
ENDCASE.
endmodule. " fieldvalid INPUT
&----
*& Module STATUS_0200 OUTPUT
&----
text
----
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'YYY'.
SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0200 OUTPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE USER_COMMAND_0200 INPUT.
CASE SY-UCOMM.
WHEN 'SAVE'.
MODIFY IT_DETAILS INDEX TC-CURRENT_LINE.
MODIFY ZMAT_MVT_KK FROM TABLE IT_DETAILS.
zmvt_doc_kk-GJAHR = V_FISCALYEAR.
zmvt_doc_kk-QUARTER = V_CURRENTQUARTER.
zmvt_doc_kk-MOVEMENT_DOC_NO = V_MOVDOCNO.
MODIFY zmvt_doc_kk.
WHEN 'DELE'.
DELETE ZMAT_MVT_KK FROM TABLE IT_DETAILS.
DELETE FROM ZMVT_DOC_KK WHERE gjahr = v_fiscalyear
AND quarter = v_currentquarter
AND MOVEMENT_DOC_NO = v_movdocno.
DESCRIBE TABLE IT_DETAILS LINES TC-LINES.
WHEN 'BACK'.
LEAVE TO SCREEN 100.
WHEN 'EXIT'.
LEAVE TO SCREEN 100.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
&----
*& Module MOD1 INPUT
&----
text
----
MODULE MOD1 INPUT.
if SEL = 'X'.
IT_DETAILS-CHK = SEL.
MODIFY IT_DETAILS INDEX TC-CURRENT_LINE.
ELSE.
CLEAR IT_DETAILS-CHK.
ENDIF.
ENDMODULE. " MOD1 INPUT
regards,
keerthi