Skip to Content
0
Former Member
Jun 02, 2008 at 06:10 AM

report in which i have to run bdc and do changes

26 Views

Hi ABAP Gurus,

my requirement is i have to develop report in which i need to have 2 radiobuttons if i select first radiobutton my program should run Report and if i select second radiobutton it should run va02 and make some changes (i.e, it should change delivery quantity is equal to orderquantity.

i wrote program to display the report but what i want is now i have to do recording in va02 tr.code and write the logic in my developed program.and below is my program .

TYPE-POOLS : slis.

TABLES : vbak,vbap.

TYPES : BEGIN OF t_vbak,

vbeln TYPE vbak-vbeln,

audat TYPE vbak-audat,

vbtyp TYPE vbak-vbtyp,

END OF t_vbak.

TYPES : BEGIN OF t_vbap,

vbeln TYPE vbap-vbeln,

posnr TYPE vbap-posnr,

arktx TYPE vbap-arktx,

kwmeng TYPE vbap-kwmeng,

lsmeng TYPE vbap-lsmeng,

END OF t_vbap .

DATA : BEGIN OF it_final OCCURS 0,

vbeln LIKE zstru_final1-vbeln,

posnr LIKE zstru_final1-posnr,

audat LIKE zstru_final1-audat,

vbtyp LIKE zstru_final1-vbtyp,

arktx LIKE zstru_final1-arktx,

kwmeng LIKE zstru_final1-kwmeng,

lsmeng LIKE zstru_final1-lsmeng,

bal LIKE zstru_final1-bal,

END OF it_final.

DATA : it_vbak TYPE TABLE OF t_vbak,

wa_vbak TYPE t_vbak,

it_vbap TYPE TABLE OF t_vbap,

wa_vbap TYPE t_vbap.

DATA : it_fieldcat TYPE slis_t_fieldcat_alv,

ls_fieldcat TYPE slis_fieldcat_alv,

ls_repid TYPE sy-repid,

gs_layout TYPE lvc_s_layo,

l_variant TYPE disvariant.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_vbeln FOR vbak-vbeln,

s_audat FOR vbak-audat,

s_vbtyp FOR vbak-vbtyp.

SELECTION-SCREEN : END OF BLOCK b1.

SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.

PARAMETERS: rb1 TYPE c RADIOBUTTON GROUP g1,

rb2 TYPE c RADIOBUTTON GROUP g1.

SELECTION-SCREEN : END OF BLOCK b2.

START-OF-SELECTION.

ls_repid = sy-repid.

SELECT vbeln audat vbtyp FROM vbak INTO TABLE it_vbak

WHERE vbeln IN s_vbeln

AND audat IN s_audat

AND vbtyp IN s_vbtyp.

IF it_vbak[] IS NOT INITIAL.

SELECT vbeln posnr arktx kwmeng lsmeng FROM vbap

INTO TABLE it_vbap FOR ALL ENTRIES IN it_vbak

WHERE vbeln EQ it_vbak-vbeln.

ENDIF.

LOOP AT it_vbap INTO wa_vbap.

it_final-posnr = wa_vbap-posnr.

it_final-arktx = wa_vbap-arktx.

it_final-kwmeng = wa_vbap-kwmeng.

it_final-lsmeng = wa_vbap-lsmeng.

it_final-bal = wa_vbap-kwmeng - wa_vbap-lsmeng.

READ TABLE it_vbak INTO wa_vbak

WITH KEY vbeln = wa_vbap-vbeln.

IF sy-subrc IS INITIAL.

it_final-vbeln = wa_vbak-vbeln.

it_final-audat = wa_vbak-audat.

it_final-vbtyp = wa_vbak-vbtyp.

ENDIF.

COLLECT it_final.

ENDLOOP.

IF rb1 = 'X'.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = ls_repid

i_internal_tabname = 'IT_FINAL'

i_inclname = ls_repid

CHANGING

ct_fieldcat = it_fieldcat

EXCEPTIONS

inconsistent_interface = 1

program_error = 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.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = ls_repid

it_fieldcat = it_fieldcat

TABLES

t_outtab = it_final

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ELSE.

ENDIF.

please help me out .

thanks in advance.