10-13-2007 2:05 PM
Dear all,
I have developed the Report that creates one BDC Session using FM 'BDC_INSERT'; but for this user have to create Log mannually after processing that Session in SM35.
I want that, this Session should be processed and log will be created automatically, through the Report; so that user can directly go to SM35 and see the Log. For that I want to execute Program 'RSBDCSUB' by SUBMIT and return back again to my code for next processings.
Could anyone pls give me the sample code/ syntax for this?
Thanks in Advance,
Prasad
10-13-2007 2:13 PM
Actually I also want to pass some variables to fulfil the selection screen parameters of the Report 'RSBDCSUB'. So could u please explain how to pass that to Report?
Thanks in advance,
Prasad
10-13-2007 2:21 PM
Hi
By default when you run the BDC using the Session method the Error Log will be created which you can see from SM35.
Why you need a separate program to see that log in SM35.
If you wants to see the log as a report from your program execution without going to SM35 then you need to SUBMIT that Program in your BDC report program by passing some selection screen parameters like
(all parameters are not required)
SUBMIT YBDCREP
WITH s_kunnr IN s_kunnr
WITH p_land1 EQ p_land1
AND RETURN
USER sy-uname
VIA JOB jobname
NUMBER jobcount
TO SAP-SPOOL
SPOOL PARAMETERS print_params
ARCHIVE PARAMETERS arc_params
WITHOUT SPOOL DYNPRO.
Rward if useful
Regards
Anji
10-13-2007 3:41 PM
Hi Prasad,
Please refer to the code below:
REPORT ZZPSREP02_1 MESSAGE-ID zOK .
TABLES : AUFK,EKPO,EKET,EKBE,EKKO,CSKS.
*tables: proj, prps_r, t001w,
aufk, act01, onr00,
ekkn, ekpo, lfa1, ekbe,
eket, ekko, rseg,
eban, ebkn, t161n,
t163c, t16fb, bkpf,
essr, elm_ps, nast.
*----
Data Declaration
*----
DATA : ITAB2 LIKE TABLE OF PROJ WITH HEADER LINE.
DATA : LIN TYPE I,
VAR TYPE I,
VAR1(20) TYPE c,
VAR2(20) TYPE c,
exc(20) type c.
VAR3 TYPE DATS.
DATA : BEGIN OF WA,
KOSTL TYPE CSKS-KOSTL,
END OF WA.
DATA : BEGIN OF WA1,
PRCTR TYPE CSKS-PRCTR,
END OF WA1.
DATA : ITAB LIKE TABLE OF WA,
ITAB1 LIKE TABLE OF wa1.
DATA: RSPAR TYPE TABLE OF RSPARAMS,
RSPAR_WA LIKE LINE OF RSPAR.
DATA: V_DISVARIANT TYPE disvariant.
DATA : VAR4(15) TYPE C.
DATA : BEGIN OF WA2,
VARIANT TYPE LTDX-VARIANT,
END OF WA2.
*DATA : ITAB3 LIKE TABLE OF WA2.
*----
Selection Screen
*----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-T02.
SELECT-OPTIONS : lv_kostl FOR CSKS-kostl . "Cost Center
SELECTION-SCREEN: END OF BLOCK b1.
selection-screen: begin of block b2 with frame title text-t01.
select-options: s_aedat1 for ekpo-aedat, "PO Creation Date
s_eindt1 for eket-eindt, "Posting Date
s_budat1 for ekbe-budat, "Delivery Date
s_lifnr1 for ekko-lifnr. "Vendor Number
PARAMETERS : P_DSVAR1 LIKE DISVARIANT-VARIANT.
selection-screen: end of block b2.
*----
End of selection screen
*----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dsvar1. "CHLK9A0886
DATA: ls_display_variant TYPE disvariant. "CHLK9A0886
Get the display variant
v_disvariant-report = 'ZPSREP02'. "CHLK9A0886
v_disvariant-variant = p_dsvar1. "CHLK9A0886
CALL FUNCTION 'REUSE_ALV_VARIANT_F4' "CHLK9A0886
EXPORTING "CHLK9A0886
is_variant = v_disvariant "CHLK9A0886
i_save = 'A' "CHLK9A0886
IMPORTING "CHLK9A0886
es_variant = ls_display_variant "CHLK9A0886
EXCEPTIONS "CHLK9A0886
OTHERS = 3. "CHLK9A0886
Load results to parameter
IF sy-subrc = 0 AND NOT ls_display_variant IS INITIAL. "CHLK9A0886
p_dsvar1 = ls_display_variant-variant.
"CHLK9A0886
ENDIF.
AT SELECTION-SCREEN.
IF LV_KOSTL IS INITIAL.
MESSAGE i003.
leave to screen 1000.
ENDIF.
*----
Selecting the Cost Center
*----
SELECT KOSTL FROM CSKS INTO TABLE ITAB WHERE KOSTL IN LV_KOSTL.
IF ITAB[] IS INITIAL.
MESSAGE I004.
LEAVE TO SCREEN 1000.
ENDIF.
*----
Selecting the corresponding Profit center
*----
SELECT PRCTR FROM CSKS INTO TABLE ITAB1 FOR ALL ENTRIES IN ITAB WHERE
KOSTL = ITAB-KOSTL.
*----
Selecting the corresponding Project Definitions
*----
SELECT * FROM PROJ INTO TABLE ITAB2 FOR ALL ENTRIES IN ITAB1 WHERE
PRCTR = ITAB1-PRCTR.
*----
Capturing the first and the last values of the Project Definitions
*----
*SELECT VARIANT FROM LTDX INTO TABLE ITAB3.
LOOP AT ITAB2.
VAR = SY-TFILL.
CASE SY-TABIX.
WHEN 1.
VAR1 = ITAB2-PSPID.
WHEN VAR.
VAR2 = ITAB2-PSPID.
ENDCASE.
ENDLOOP.
IF S_AEDAT1 IS NOT INITIAL.
rspar_WA-selname = 'S_AEDAT'.
rspar_WA-kind = 'S'.
rspar_WA-sign = 'I'.
rspar_WA-option = 'BT'.
rspar_WA-low = S_AEDAT1-LOW.
rspar_WA-high = S_AEDAT1-HIGH.
append rspar_WA TO RSPAR.
clear rspar_wa.
ENDIF.
IF S_EINDT1 IS NOT INITIAL.
rspar_WA-selname = 'S_EINDT'.
rspar_WA-kind = 'S'.
rspar_WA-sign = 'I'.
rspar_WA-option = 'BT'.
rspar_WA-low = S_EINDT1-LOW.
rspar_WA-high = S_EINDT1-HIGH.
append rspar_WA TO RSPAR.
clear rspar_wa.
ENDIF.
IF S_BUDAT1 IS NOT INITIAL.
rspar_WA-selname = 'S_BUDAT'.
rspar_WA-kind = 'S'.
rspar_WA-sign = 'I'.
rspar_WA-option = 'BT'.
rspar_WA-low = S_BUDAT1-LOW.
rspar_WA-high = S_BUDAT1-HIGH.
append rspar_WA TO RSPAR.
clear rspar_wa.
ENDIF.
IF S_LIFNR1 IS NOT INITIAL.
rspar_WA-selname = 'S_LIFNR'.
rspar_WA-kind = 'S'.
rspar_WA-sign = 'I'.
rspar_WA-option = 'BT'.
rspar_WA-low = S_LIFNR1-LOW.
rspar_WA-high = S_LIFNR1-HIGH.
append rspar_WA TO RSPAR.
clear rspar_wa.
ENDIF.
*IF P_DSVAR1 IS NOT INITIAL.
**VAR4 = P_DSVAR1.
*RSPAR_WA-SELNAME = 'P_DSVAR'.
*RSPAR_WA-KIND = 'P'.
*RSPAR_WA-SIGN = 'I'.
*RSPAR_WA-OPTION = 'EQ'.
*RSPAR_WA-LOW = P_DSVAR1.
*APPEND RSPAR_WA TO RSPAR.
*clear rspar_wa.
*ENDIF.
*
*----
If no data is selected for the Project Definitions
*----
IF VAR1 EQ ' ' and VAR2 EQ ' '.
MESSAGE i001.
ELSEIF VAR2 EQ ' '.
submit ZZPSREP02
with selection-table rspar
WITH CN_PROJN EQ VAR1
WITH P_DSVAR EQ VAR4.
with p_dsvar eq '/S7_COMMIT' sign 'I'
AND RETURN.
*----
Checking if the lower limit is less than the upper limit of *
Projects
*----
ELSEIF VAR1 LT VAR2.
*----
Calling the ZZPSREP02 Report with the values defined
*----
*SUBMIT ZZPSREP02 WITH CN_PROJN BETWEEN var1 and var2
WITH S_AEDAT between var3 and var7
WITH S_EINDT between var4 and var8
WITH S_BUDAT between var5 and var9
WITH S_LIFNR between var6 and var10
*AND RETURN.
submit ZZPSREP02
with selection-table rspar
WITH CN_PROJN BETWEEN VAR1 AND VAR2
WITH P_DSVAR EQ VAR4.
with p_dsvar eq '/S7_COMMIT' sign 'I'
AND RETURN.
*----
Checking if the lower limit is greater than the upper limit of
Projects
*----
ELSEIF VAR1 GT VAR2.
exc = var1.
var1 = var2.
var2 = exc.
*MESSAGE i002.
*LEAVE TO SCREEN 1000.
submit ZZPSREP02
with selection-table rspar
WITH CN_PROJN BETWEEN VAR1 AND VAR2
WITH P_DSVAR EQ VAR4.
with p_dsvar eq '/S7_COMMIT' sign 'I'
AND RETURN.
ENDIF.
In case you have any further clarifications,do let me know.
Regards,
Puneet Jhari.