Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Dialog programming

Former Member
0 Likes
582

Hi all,

Could any one give real work task on Dialog programming with source code.

Please do the necessary.

With Regards,

Mahesh

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
552

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

4 REPLIES 4
Read only

Former Member
0 Likes
552

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://www.sap-img.com/

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://help.sap.com

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://sappoint.com/abap.html

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.sap-img.com/abap/

http://www.sapdevelopment.co.uk/dialog/dialoghome.htm

http://www.sap-img.com/

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

Read only

Former Member
0 Likes
553

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

Read only

0 Likes
552

hi keerthi

if possible could you give onemore real work task on Dialog programming with source code.

thanks and regard

Satya

Read only

0 Likes
552

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