SY-SUBRC vs SYST-SUBRC
Hi,
Is there a difference between using SY-SUBRC or SYST-SUBRC?
That is, is that a difference between the following?...
IF sy-subrc <> 0.
ENDIF.
and
IF syst-subrc <> 0.
ENDIF.
If there is a differenc,whice is hte preferred/recommended method?
I have see both used and I have not noticed any difference. Just want an opinion from the ABAP community.
Thanks,
Naing
Hi Naing,
There is a difference, not in it's usage, but conceptually.
SYST is an ABAP Dictionary Structure which you can view in SE11.
During the execution of any ABAP program, the runtime environment creates a structure 'sy' from this structure SYST. Hence in programs, you address the individuals fields of the SYST structure as SY-<field> name.
Hope this has answered your question.
Regards
Anil Madhavan
Similar Messages
-
MULTIPLE ITEM PROBLEM IN VL31N BDC
hI FRIENDS ,
I AM POSTING A BDC OF TRANSACTION VL31N ,ie FOR SCHEDULE AGREEMENT INBOUND DELIVERY.I CREATE A FUNCTIONAL MODULE OF THE SAME AND CALL IT FROM AN ASP PAGE,IN THAT THERE IS PO NUMBER 5500000986 WHICH HAS TWO ITEMES 62 AND 95 RESPECTIVLY OF SAME MATARIAL NUMBER R010230123041002 AND DIE NUMBER 2304P,NOW THE PROBLEM IS THIS BDC IS WORKING WHEN THERE IS ONLY ONE ITEM BUT GIVES AN ERROR "CANT CREAT INBOUND DELIVERY FOR PO NO ...' WNEN IT HAS MULTIPLE ITEM.WHAT SHOULD I DO ? I ALSO USED LOOP BUT IT ALSO DOSENT WORK AS IT WILL ADD ALL OPEN QTY OF PO 986 AND UPDATE AGAINST ITEM NO 95.
CODE IS AS FOLLOWS:.........
FUNCTION y_synie_bdcinbdly.
""Local interface:
*" IMPORTING
*" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
*" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
*" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
*" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
*" VALUE(USER) LIKE APQI-USERID OPTIONAL
*" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
*" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
*" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
*" VALUE(EXTNID) LIKE MAKT-MAKTG
*" VALUE(VENDORNO) LIKE LFA1-LIFNR
*" VALUE(PONUMBER) LIKE EKKO-EBELN
*" VALUE(ITEMNUMBER) LIKE LIPS-VGPOS
*" VALUE(MATERIAL) LIKE MAKT-MAKTG
*" VALUE(DLYQTY) LIKE LIPS-LFIMG
*" VALUE(BTCHNO) LIKE LIPS-CHARG
*" VALUE(POSLR) LIKE EKES-EBELP OPTIONAL
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" VALUE(INDELYNO) LIKE SY-MSGV2
*" VALUE(MSG1) LIKE SY-MSGV1
*" VALUE(MSG2) LIKE SY-MSGV2
*" VALUE(MSG3) LIKE SY-MSGV3
*" VALUE(MSG4) LIKE SY-MSGV4
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL
*" ERRTAB STRUCTURE YSYNERRMSGS
*" INDLYTAB STRUCTURE YSYN_QTYTAB
Updated by ANAND SYNISE 19.1.2007
DATA: BEGIN OF bdctab OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdctab.
DATA: datenow(10) TYPE c,
fldvar(30) TYPE c,
fldno TYPE i,
flditoc(6) TYPE c,
qty(13) TYPE c.
DATA maxposnr LIKE lips-posnr.
DATA testposnr TYPE posnr.
DATA itemnoint TYPE i.
CONCATENATE sy-datum6(2) '.' sy-datum4(2) '.' sy-datum+0(4) INTO datenow.
CLEAR bdctab.
REFRESH bdctab.
PERFORM open_group USING group user keep holddate ctu.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '4007'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'RV50A-VERUR_LA'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '/00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-LIFNR'.
bdctab-fval = vendorno.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LV50C-BSTNR'.
bdctab-fval = ponumber.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-VERUR_LA'.
bdctab-fval = extnid.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '1000'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '=MKAL_T'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'LIKP-BLDAT'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-BLDAT'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '1000'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '=POPO_T'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-BLDAT'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'LIPS-POSNR(01)'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '0111'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'RV50A-PO_MATNR'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = 'WEIT'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-PO_MATNR'.
bdctab-fval = material.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '1000'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '=POLO_T'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-BLDAT'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'LIPS-POSNR(01)'.
APPEND bdctab.
*ADDED BY ANAND ON 22-01-2007
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = ITEMNUMBER . "ITEMNUMBER = LIPS-VGPOS
APPEND bdctab.
************ENDED***********************
ADDED BY MILIND 19.01.2007
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = poslr .
APPEND bdctab.
* ENDED * *
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LIPS_SELKZ(01)'.
bdctab-fval = ''.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '1000'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '/00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-BLDAT'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'LIPS-CHARG(01)'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
QTY = INDLYTAB-DLYQTY.
qty = dlyqty.
bdctab-fnam = 'LIPSD-G_LFIMG(01)'.
bdctab-fval = QTY.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIPS-CHARG(01)'.
* BDCTAB-FVAL = INDLYTAB-BTCHNO.
bdctab-fval = btchno.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '1000'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '=SICH_T'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-BLDAT'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'LIPS-MATNR(02)'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CALL TRANSACTION 'VL31N' USING bdctab MODE 'N' MESSAGES INTO messtab.
subrc = sy-subrc.
PERFORM close_group USING ctu.
CLEAR bdctab.
REFRESH bdctab.
IF sy-subrc EQ 0.
indelyno = sy-msgv2.
ENDIF.
LOOP AT messtab.
MOVE: messtab-msgid TO errtab-msgid,
messtab-msgnr TO errtab-msgnr,
messtab-msgv1 TO errtab-msg1,
messtab-msgv2 TO errtab-msg2,
messtab-msgv3 TO errtab-msg3,
messtab-msgv4 TO errtab-msg4.
APPEND ERRtab.
ENDLOOP.
LOOP AT errtab.
SELECT SINGLE text FROM t100
INTO errtab-errmsg
WHERE msgnr EQ errtab-msgnr AND arbgb EQ errtab-msgid
AND sprsl EQ sy-langu.
MODIFY errtab.
ENDLOOP.
ENDFUNCTION.Hi,
Check this code:
REPORT Z_CUSTOMER_UPLOAD .
D A T A D E C L A R A T I O N S *
DATA:BEGIN OF IT_CUSTOMER OCCURS 0,
KUNNR LIKE MV10A-KUNNR,
VKORG LIKE MV10A-VKORG,
VTWEG LIKE MV10A-VTWEG,
MATNR LIKE MV10A-MATNR,
KDMAT LIKE MV10A-KDMAT,
MEGRU LIKE MV10A-MEGRU,
SELKZ TYPE C value 'X',
LPRIO LIKE MV10A-LPRIO,
ANTLF LIKE MV10A-ANTLF,
END OF IT_CUSTOMER.
DATA:BEGIN OF IT_success OCCURS 0,
KUNNR LIKE MV10A-KUNNR,
VKORG LIKE MV10A-VKORG,
VTWEG LIKE MV10A-VTWEG,
MATNR LIKE MV10A-MATNR,
KDMAT LIKE MV10A-KDMAT,
MEGRU LIKE MV10A-MEGRU,
SELKZ TYPE C value 'X',
LPRIO LIKE MV10A-LPRIO,
ANTLF LIKE MV10A-ANTLF,
END OF IT_success.
DATA:BEGIN OF IT_error OCCURS 0,
KUNNR LIKE MV10A-KUNNR,
VKORG LIKE MV10A-VKORG,
VTWEG LIKE MV10A-VTWEG,
MATNR LIKE MV10A-MATNR,
KDMAT LIKE MV10A-KDMAT,
MEGRU LIKE MV10A-MEGRU,
SELKZ TYPE C value 'X',
LPRIO LIKE MV10A-LPRIO,
ANTLF LIKE MV10A-ANTLF,
END OF IT_error.
DATA: L_INDEX TYPE SY-TABIX.
DATA:IT_BDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
ERROR MESSAGE TABLE
DATA:IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA : C_S TYPE C VALUE 'S',
C_E TYPE C VALUE 'E'.
*DATA: IT_SUCCESS LIKE IT_CUSTOMER OCCURS 0,
IT_ERROR LIKE IT_CUSTOMER OCCURS 0.
DATA : V_RECTOT TYPE I,
V_RECERR TYPE I,
V_RECSUC TYPE I.
S E L E C T I O N - S C R E E N *
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER : P_FILE LIKE RLGRAP-FILENAME .
SELECTION-SCREEN : END OF BLOCK B1.
A T S E L E C T I O N - S C R E E N *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
to get F4 help for p_file
PERFORM F4_FILENAME USING P_FILE.
S T A R T O F S E L E C T I O N *
START-OF-SELECTION.
Uploading data from flat file into it_tab
PERFORM BDC_UPLOAD USING P_FILE.
PERFORM PROCESS_DATA.
PERFORM POPULATE_BDC.
E N D O F S E L E C T I O N *
*END-OF-SELECTION.
PERFORM DISPLAY_REPORT.
*& Form F4_FILENAME
text
-->P_P_FILE text
FORM F4_FILENAME USING P_P_FILE.
DATA:L_FILE TYPE IBIPPARMS-PATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = L_FILE .
P_P_FILE = L_FILE.
ENDFORM. " F4_FILENAME
*& Form BDC_UPLOAD
text
-->P_P_FILE text
FORM BDC_UPLOAD USING P_P_FILE.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 8
I_END_ROW = 1000
TABLES
INTERN = IT_DATA
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 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.
ENDFORM. " BDC_UPLOAD
*& Form PROCESS_DATA
text
--> p1 text
<-- p2 text
FORM PROCESS_DATA.
SORT IT_DATA BY ROW COL.
LOOP AT IT_DATA.
CASE IT_DATA-COL.
WHEN 1.
IT_CUSTOMER-KUNNR = IT_DATA-VALUE.
WHEN 2.
IT_CUSTOMER-VKORG = IT_DATA-VALUE.
WHEN 3.
IT_CUSTOMER-VTWEG = IT_DATA-VALUE.
WHEN 4.
IT_CUSTOMER-MATNR = IT_DATA-VALUE.
WHEN 5.
IT_CUSTOMER-KDMAT = IT_DATA-VALUE.
WHEN 6.
IT_CUSTOMER-MEGRU = IT_DATA-VALUE.
WHEN 7.
IT_CUSTOMER-LPRIO = IT_DATA-VALUE.
WHEN 8.
IT_CUSTOMER-ANTLF = IT_DATA-VALUE.
APPEND IT_CUSTOMER.
ENDCASE.
ENDLOOP.
ENDFORM. " PROCESS_DATA
*& Form POPULATE_BDC
text
--> p1 text
<-- p2 text
FORM POPULATE_BDC.
DATA:L_COUNTER TYPE N,
L_STRING TYPE STRING.
LOOP AT IT_CUSTOMER.
AT NEW KUNNR.
CLEAR L_COUNTER.
L_INDEX = SY-TABIX.
READ TABLE IT_CUSTOMER INDEX L_INDEX.
perform bdc_dynpro using 'SAPMV10A' '0100'.
perform bdc_field using 'MV10A-KUNNR'
IT_CUSTOMER-KUNNR.
perform bdc_field using 'MV10A-VKORG'
IT_CUSTOMER-VKORG.
perform bdc_field using 'MV10A-VTWEG'
IT_CUSTOMER-VTWEG.
perform bdc_field using 'BDC_OKCODE'
'/00'.
ENDAT.
L_COUNTER = L_COUNTER + 1.
CLEAR L_STRING.
perform bdc_dynpro using 'SAPMV10A' '0200'.
CONCATENATE 'MV10A-MATNR(' L_COUNTER ')' INTO L_STRING.
perform bdc_field using L_STRING
IT_CUSTOMER-MATNR.
CONCATENATE 'MV10A-KDMAT(' L_COUNTER ')' INTO L_STRING.
perform bdc_field using L_STRING
IT_CUSTOMER-KDMAT.
CONCATENATE 'MV10A-MEGRU(' L_COUNTER ')' INTO L_STRING.
perform bdc_field using L_STRING
IT_CUSTOMER-MEGRU.
perform bdc_field using 'BDC_OKCODE'
'/00'.
*-- For Page down in Call Transaction Mode
IF L_COUNTER = 14.
CLEAR L_COUNTER.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=P+'.
ENDIF.
perform bdc_dynpro using 'SAPMV10A' '0200'.
CONCATENATE 'MV10A-SELKZ(' L_COUNTER ')' INTO L_STRING.
perform bdc_field using L_STRING
IT_CUSTOMER-SELKZ.
perform bdc_field using 'BDC_OKCODE'
'=SELE'.
perform bdc_dynpro using 'SAPMV10A' '0300'.
perform bdc_field using 'MV10A-KDMAT'
IT_CUSTOMER-KDMAT.
perform bdc_field using 'MV10A-LPRIO'
IT_CUSTOMER-LPRIO.
perform bdc_field using 'MV10A-ANTLF'
IT_CUSTOMER-ANTLF.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
at end of kunnr.
READ TABLE IT_CUSTOMER INDEX L_INDEX.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VD51' USING IT_BDC MODE 'A' UPDATE 'S'
MESSAGES INTO IT_MESSAGES.
CLEAR IT_BDC.
REFRESH IT_BDC.
ENDAT.
IF NOT IT_MESSAGES[] IS INITIAL.
PERFORM FORMAT_MESSAGE.
ENDIF.
ENDLOOP.
ENDFORM. " POPULATE_BDC
*& Form bdc_dynpro
text
-->P_0273 text
-->P_0274 text
FORM bdc_dynpro USING VALUE(P_0273)
VALUE(P_0274).
IT_BDC-PROGRAM = P_0273.
IT_BDC-DYNPRO = P_0274.
IT_BDC-DYNBEGIN = 'X'.
APPEND IT_BDC.
CLEAR IT_BDC.
ENDFORM. " bdc_dynpro
*& Form bdc_field
text
-->P_0278 text
-->P_RECORD_KUNNR_001 text
FORM bdc_field USING VALUE(P_0278)
VALUE(P_0279).
IT_BDC-FNAM = P_0278.
IT_BDC-FVAL = P_0279.
APPEND IT_BDC.
CLEAR IT_BDC.
ENDFORM. " bdc_field
*& Form FORMAT_MESSAGE
text
--> p1 text
<-- p2 text
FORM FORMAT_MESSAGE.
DATA: L_MSG(100).
LOOP AT IT_MESSAGES.
READ TABLE IT_CUSTOMER INDEX L_INDEX.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = IT_MESSAGES-MSGID
LANG = SY-LANGU
NO = IT_MESSAGES-MSGNR
V1 = IT_MESSAGES-MSGV1
V2 = IT_MESSAGES-MSGV2
V3 = IT_MESSAGES-MSGV3
V4 = IT_MESSAGES-MSGV4
IMPORTING
MSG = L_MSG
EXCEPTIONS
NOT_FOUND = 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.
write:/ l_msg.
ENDLOOP.
ENDFORM. " FORMAT_MESSAGE
reward if helpful,
keerthi -
Hi,
Pls fin the error in this program. I am unable to upload.
Regards,
Karthik
Program ID : ZRFC_RUSHORDER
Transaction Code : Z*
Description : RFC For Sales Process using Transaction Method calling
3 Transactions VA01,VL23 & VF06
Change History
Date | Programmer | Corr. # | Description
| | |
| | |
FUNCTION ZRFC_RUSHORDER .
""Local interface:
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
*" RO_HEADER STRUCTURE ZSD_HEADER
*" RO_ITEM STRUCTURE ZSD_ITEM
INTERNAL TABLES,STRUCTURES & VARIABLES
*TABLES : ZSO_CREATE_TEXT.
DATA: CTU LIKE APQI-PUTACTIVE,
MODE LIKE APQI-PUTACTIVE,
UPDATE LIKE APQI-PUTACTIVE,
GROUP LIKE APQI-GROUPID,
USER LIKE APQI-USERID,
KEEP LIKE APQI-QERASE,
HOLDDATE LIKE APQI-STARTDATE,
NODATA LIKE APQI-PUTACTIVE.
DATA: T_VBELN LIKE VBFA-VBELN.
data: MESSTAB1 LIKE TABLE OF BDCMSGCOLL WITH HEADER LINE.
DATA: NODATA_CHARACTER VALUE ' '.
DATA : SORDER_FINAL LIKE VBAK-VBELN,
SORDER(15) TYPE C,
V_CODE(2) TYPE C,
V_PLANT LIKE EKPO-WERKS,
YEAR_CONVERSION(1) TYPE C.
DATA : WA_ZRUSH_ORDER LIKE ZRUSH_ORDER.
DATA : V_DATE LIKE SY-DATUM,
V_TIME LIKE SY-UZEIT.
DATA : SESSION_NAM(30) TYPE C.
CTU = ' '.
MODE = 'N'.
USER = SY-UNAME.
CONCATENATE SY-UNAME '_' SY-DATUM '_' SY-UZEIT INTO
SESSION_NAM.
GROUP = 'RUSH_ORDER'.
KEEP = 'X'.
UPDATE = 'L'.
HOLDDATE = ''.
NODATA = '/'.
SUBRC = 0.
*CREATING SESSSION
PERFORM OPEN_GROUP USING GROUP USER KEEP HOLDDATE CTU.
LOOP AT RO_HEADER.
MOVE RO_HEADER-SORDER TO SORDER.
V_PLANT = SORDER+0(4).
SELECT SINGLE CODE INTO V_CODE FROM ZPLANT_NUMER_IBS WHERE PLANT = V_PLANT.
IF SORDER+4(4) = '2005'.
YEAR_CONVERSION = 'E'.
ELSEIF SORDER+4(4) = '2006'.
YEAR_CONVERSION = 'F'.
ELSEIF SORDER+4(4) = '2007'.
YEAR_CONVERSION = 'G'.
ELSEIF SORDER+4(4) = '2008'.
YEAR_CONVERSION = 'H'.
ELSEIF SORDER+4(4) = '2009'.
YEAR_CONVERSION = 'J'.
ELSEIF SORDER+4(4) = '2010'.
YEAR_CONVERSION = 'K'.
ELSEIF SORDER+4(4) = '2011'.
YEAR_CONVERSION = 'L'.
ELSEIF SORDER+4(4) = '2012'.
YEAR_CONVERSION = 'M'.
ELSEIF SORDER+4(4) = '2013'.
YEAR_CONVERSION = 'N'.
ELSEIF SORDER+4(4) = '2014'.
YEAR_CONVERSION = 'P'.
ELSEIF SORDER+4(4) = '2015'.
YEAR_CONVERSION = 'Q'.
ELSEIF SORDER+4(4) = '2016'.
YEAR_CONVERSION = 'R'.
ELSEIF SORDER+4(4) = '2017'.
YEAR_CONVERSION = 'S'.
ELSEIF SORDER+4(4) = '2018'.
YEAR_CONVERSION = 'T'.
ELSEIF SORDER+4(4) = '2019'.
YEAR_CONVERSION = 'U'.
ELSEIF SORDER+4(4) = '2020'.
YEAR_CONVERSION = 'V'.
ELSEIF SORDER+4(4) = '2021'.
YEAR_CONVERSION = 'W'.
ELSEIF SORDER+4(4) = '2022'.
YEAR_CONVERSION = 'X'.
ELSEIF SORDER+4(4) = '2023'.
YEAR_CONVERSION = 'Y'.
ELSEIF SORDER+4(4) = '2024'.
YEAR_CONVERSION = 'Z'.
ELSEIF SORDER+4(4) = '2025'.
YEAR_CONVERSION = 'A'.
ELSEIF SORDER+4(4) = '2026'.
YEAR_CONVERSION = 'B'.
ELSEIF SORDER+4(4) = '2027'.
YEAR_CONVERSION = 'C'.
ENDIF.
CONCATENATE YEAR_CONVERSION V_CODE SORDER+8(7) INTO SORDER_FINAL.
CLEAR YEAR_CONVERSION.
CLEAR V_CODE.
CLEAR V_PLANT.
Text Element Creation for Sales order.
ZSO_CREATE_TEXT-SORDER = SORDER_FINAL.
ZSO_CREATE_TEXT-LR_NUMBER = RO_HEADER-LR_NUMBER.
ZSO_CREATE_TEXT-TRANSPORTER = RO_HEADER-TRANSPORTER.
ZSO_CREATE_TEXT-Z003 = RO_HEADER-Z003.
ZSO_CREATE_TEXT-Z004 = RO_HEADER-Z004.
INSERT ZSO_CREATE_TEXT.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-SPART'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBAK-AUART'
'ZKSO'. "AUART_001.
PERFORM BDC_FIELD USING 'VBAK-VKORG'
RO_HEADER-VKORG. "VKORG_002.
PERFORM BDC_FIELD USING 'VBAK-VTWEG'
RO_HEADER-VTWEG. "VTWEG_003.
PERFORM BDC_FIELD USING 'VBAK-SPART'
RO_HEADER-SPART. "SPART_004.
Sales Order Date insertion.......
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KKAU'.
PERFORM BDC_FIELD USING 'VBAK-VBELN'
SORDER_FINAL.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
RO_HEADER-ZTERM.
WRITE RO_HEADER-SODATE TO RO_HEADER-SODATE.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\03'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-AUDAT'.
PERFORM BDC_FIELD USING 'VBAK-AUDAT'
RO_HEADER-SODATE. "Document Date
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
RO_HEADER-SODATE. "Pricing Date
Billing Screen ***********************
perform bdc_dynpro using 'SAPMV45A' '4002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-FKDAT'.
PERFORM BDC_FIELD USING 'VBKD-FKDAT'
RO_HEADER-SODATE. "Billing date
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KKO1'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP. "KUNNR_006.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH. "KUNNR_007.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO. "BSTKD_008.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
RO_HEADER-SODATE. "Delivery Date.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
RO_HEADER-ZTERM. "ZTERM_011.
************************Added for test 25-02******************
PERFORM BDC_FIELD USING 'RV45A-KETDAT' " CNGD FROM 'KEDAT' TO 'KETDAT'.
RO_HEADER-SODATE. "REQ DELVY DATE.
PERFORM BDC_FIELD USING 'VBKD-PRSDT' "CNGD FROM 'RV45A' TO 'VBKD'.
RO_HEADER-SODATE. "PRICING DATE.
************************Added for test 25-02******************
*Dont DELETE, For Future Use of Inco terms 1 & 2.
*PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBKD-INCO2'.
*PERFORM BDC_FIELD USING 'VBKD-INCO1'
RO_HEADER-INCO1. "INCO1_012.
*PERFORM BDC_FIELD USING 'VBKD-INCO2'
RO_HEADER-INCO2. "INCO2_013.
Header condition types......................................
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(05)'.
IF RO_HEADER-KSCHL1 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL1.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR1.
ENDIF.
IF RO_HEADER-KSCHL2 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL2.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR2.
ENDIF.
IF RO_HEADER-KSCHL3 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL3.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR3.
ENDIF.
*change on 11.04.2006 for adding rounding off condition type.
IF RO_HEADER-KSCHL4 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL4.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR4.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
Dont DELETE, For Future Use of : Sales Person Data.................
*PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=HEAD'.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'=T\08'.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'=PAAN'.
*perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(09)'.
*perform bdc_field using 'GV_FILTER'
'PARALL'. "GV_FILTER_024.
*perform bdc_field using 'GVS_TC_DATA-REC-PARVW(09)'
'VE'."REC-PARVW_09_025.
*perform bdc_field using 'GVS_TC_DATA-REC-PARTNER(09)'
'0'. "REC-PARTNER_09_026.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
*perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(09)'.
*perform bdc_field using 'GV_FILTER'
'PARALL'. "GV_FILTER_027.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=POAN'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP. "KUNNR_006.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH. "KUNNR_007.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO. "BSTKD_008.
*FETCHING LINE ITEM DATA.
LOOP AT RO_ITEM WHERE SORDER = RO_HEADER-SORDER.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=POAN'.
PERFORM BDC_FIELD USING 'RV45A-MABNR(02)' RO_ITEM-MATNR.
PERFORM BDC_FIELD USING 'RV45A-KWMENG(02)' RO_ITEM-QTY.
PERFORM BDC_FIELD USING 'VBAP-VRKME(02)' RO_ITEM-UOM. " For Future Use
PERFORM BDC_FIELD USING 'VBAP-WERKS(02)' RO_ITEM-PLANT.
PERFORM BDC_FIELD USING 'VBAP-LGORT(02)' RO_ITEM-SLOC.
PERFORM BDC_FIELD USING 'VBAP-CHARG(02)' RO_ITEM-BATCH.
*FREE DELIVERY CHECK CHANGING OF ITEMCATEGORY : TANN.
IF RO_ITEM-KBETR1 IS INITIAL AND RO_ITEM-KBETR2 IS INITIAL.
PERFORM BDC_FIELD USING 'VBAP-PSTYV(02)'
'ZANN'.
ELSE.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
Condition Types For The Items
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PKO1'.
PERFORM BDC_FIELD USING 'RV45A-VBAP_SELKZ(01)' 'X'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
Condition Type 1...........
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL1.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR1.
Condition Type 2...........
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL2.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR2.
Condition Type 3.............
IF RO_ITEM-KSCHL3 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL3.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR3.
ENDIF.
Condition Type 4..............
IF RO_ITEM-KSCHL4 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL4.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR4.
ENDIF.
Condition Type 5...............
IF RO_ITEM-KSCHL5 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL5.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR5.
ENDIF.
Condition Type 6...............
IF RO_ITEM-KSCHL6 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL6.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR6.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
ENDIF.
ENDLOOP.
Saving The Sales Document
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SICH'.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'VA01'
CTU
MODE
UPDATE.
*CALL TRANSACTION 'VA01' USING BDCDATA1
MODE
MODE 'A'
UPDATE
UPDATE 'A'
MESSAGES INTO MESSTAB.
ENDLOOP.
CALL TRANSACTION 'VA01' USING BDCDATA1
MODE 'A'
UPDATE 'A'
MESSAGES INTO MESSTAB1.
APPEND MESSTAB1.
*SELECT SINGLE VBELN INTO T_VBELN FROM VBFA
WHERE VBELV = RO_HEADER-SORDER." AND VBTYP_N = 'J'.
perform bdc_dynpro using 'SAPMV50A' '4004'.
perform bdc_field using 'BDC_CURSOR' 'LIKP-VBELN'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'LIKP-VBELN' T_VBELN. "'7012000733'.
perform bdc_dynpro using 'SAPMV50A' '1000'.
perform bdc_field using 'BDC_OKCODE' '=WABU_T'. "'=SICH_T'.
**perform bdc_field using 'LIKP-BLDAT' RO_HEADER-SODATE. '27.06.2006'.
perform bdc_field using 'BDC_CURSOR' 'LIKP-WADAT_IST'.
perform bdc_field using 'LIKP-WADAT' RO_HEADER-SODATE. " '26.05.2006'.
**perform bdc_field using 'LIKP-WAUHR' '00:00:00'.
perform bdc_field using 'LIKP-BTGEW' '10'.
perform bdc_field using 'LIKP-GEWEI' 'KG'.
perform bdc_field using 'LIKP-WADAT_IST' RO_HEADER-SODATE." '26.05.2006'.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'VL02N'
CTU
MODE
UPDATE.
ENDLOOP.
IF SY-SUBRC <> 0.
SUBRC = SY-SUBRC.
EXIT.
*else.
update zrush_order set PROCESSED = 'X'.
where sorder = SORDER_FINAL and
sodate = RO_HEADER-SODATE.
ENDIF.
PROCESSING OUT BOUND DELIVERY
*PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.
*PERFORM BDC_FIELD USING 'BDC_CURSOR' '06/09'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=IMED' .
*PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BACK'.
PROCESSING INVOICE DELIVERY
*PERFORM BDC_DYNPRO USING 'RV60SBAT' '1000'.
*PERFORM BDC_FIELD USING 'BDC_CURSOR' 'IMMEDI'.
**SELECTION SCREEN PARAMETER FOR VF06
*PERFORM BDC_FIELD USING 'VKOR1' '1000'.
*PERFORM BDC_FIELD USING 'FKDAB' ' '.
*PERFORM BDC_FIELD USING 'ALLEA' 'X'.
*PERFORM BDC_FIELD USING 'ALLEL' 'X'.
*WRITE SY-DATUM TO V_DATE.
*WRITE SY-UZEIT TO V_TIME.
*ADD '03' TO V_TIME+2(02).
*PERFORM BDC_FIELD USING 'EXDATE' V_DATE. "V_DATE.
*PERFORM BDC_FIELD USING 'EXTIME' V_TIME. "V_TIME.
*PERFORM BDC_FIELD USING 'IMMEDI' 'X'.
*PERFORM BDC_FIELD USING 'NUMBJOBS' ' '.
*PERFORM BDC_FIELD USING 'MAX_CUST' ' '.
*PERFORM BDC_FIELD USING 'UTASY' 'X'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ONLI'.
*PERFORM BDC_DYNPRO USING 'SAPMSSY0' '0120'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BACK'.
*PERFORM BDC_DYNPRO USING 'RV60SBAT' '1000'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE' '/E'.
*PERFORM BDC_TRANSACTION TABLES MESSTAB
*USING 'VF06'
CTU
MODE
UPDATE.
PERFORM CLOSE_GROUP USING CTU.
wait up to 2 seconds.
submit ZVF06_SCHEDULE and return.
wait up to 2 seconds.
ENDFUNCTION.y u are unable to Upload?
-
Help: How to add serial number data into Delivery Order document
Dear Gurus,
I am creating an interface program and I have problem in attaching the serial number data to the corresponding material code for a certain delivery order document in R/3 4.6C SP22 system.
The serial number can be attached either during the creation of the Delivery Order itself or in the subsequent step after creating the Delivery Order (i.e.: create the D/O document first, and then update the D/O data).
The BAPI_OUTB_DELIVERY_CONFIRM_DEC FM does not provide any input parameter to let me put the serial number in this R/3 version.
By tracing in SE30 the standard program VL02N --> Menu --> Extras --> Serial Number --> Continue (Enter) --> Save (Ctrl+S), I found out that the serial attachment 'might' be done during sub-routine SERIAL_LISTE_POST_LS in program SAPLIPW1. It will in turn executes FM SERIAL_LISTE_POST_LS. The commit to database table will be done in update task by FM OBJK_POST_UPDATE_N and SERIAL_POST_UPDATE_LS.
<b>My question:</b>
============
1. Is FM SERNR_ADD_TO_LS can be used to attach the serial number to D/O?
If yes, how to do it please because I already tried it I can not see the serial information in VL02N after that. There is no any insert or update to database in this function module. Should I call other FM after this? I want to try to call FM OBJK_POST_UPDATE_N and SERIAL_POST_UPDATE_LS but I do not know how I can retrieve the global object such as XOBJK_ALL that is necessary for the input parameter.
2. If SERNR_ADD_TO_LS can not be used, what other FM can I use? Can I call SERIAL_LISTE_POST_LS instead? Is there any reliable way to generate the import parameter for this FM, such as XSER00, XSER01, XOBJK_ALL and XEQUI?
Thank you in advanced for your kind assistance.
Best Regards,
HiroshiTry something similar to this below...
Afterwards you should do a call transaction to VL02N and immediately SAVE. This is sufficient to ensure the status on the serial numbers is updated correctly.
FUNCTION z_mob_serialnr_update_ls.
""Local interface:
*" IMPORTING
*" VALUE(VBELN_I) LIKE LIKP-VBELN
*" TABLES
*" SERNO_TAB STRUCTURE RISERLS
*" YSER00 STRUCTURE SER00 OPTIONAL
*" YSER01 STRUCTURE RSERXX OPTIONAL
*" YOBJK_ALL STRUCTURE RIPW0 OPTIONAL
*" YEQUI STRUCTURE RIEQUI OPTIONAL
*" YMASE STRUCTURE MASE OPTIONAL
*" EXCEPTIONS
*" NO_EQUIPMENT_FOUND
The modified/confirmed table of serial numbers is supplied in
SERNO_TAB.
These are updated in the SAP tables
YSER00 - General Header Table for Serial Number Management
YSER01 - Document Header for Serial Numbers for Delivery
YOBJK_ALL - Internal Table for Object List Editing/Serial Numbers
YEQUI - Internal Structure for IEQUI
local data
DATA: BEGIN OF del_wa,
vbeln LIKE likp-vbeln,
posnr LIKE lips-posnr,
matnr LIKE lips-matnr,
lfimg LIKE lips-lfimg.
DATA: END OF del_wa.
DATA: del_tab LIKE del_wa OCCURS 0.
DATA: _ct TYPE i.
DATA: lastobknr LIKE objk-obknr.
DATA: _debug.
CLEAR: yser00, yser01, yobjk_all, yequi, ymase.
REFRESH: yser00, yser01, yobjk_all, yequi, ymase.
GET PARAMETER ID 'ZEDI_DEBUG' FIELD _debug.
OBJECT KEYS
read the delivery items with serial numbers to be processed
SELECT * INTO CORRESPONDING FIELDS OF TABLE del_tab
FROM lips
WHERE vbeln = vbeln_i
AND serail NE space.
if nothing is relevant for serial numbers bailout
DESCRIBE TABLE del_tab LINES _ct.
IF _ct IS INITIAL.
EXIT.
ENDIF.
==== read the existing object keys for delivery items
SELECT * INTO CORRESPONDING FIELDS OF TABLE yser01
FROM ser01
WHERE lief_nr = vbeln_i.
IF sy-subrc = 0.
yser01-dbknz = 'X'. "entry exists in db
MODIFY yser01 TRANSPORTING dbknz WHERE dbknz = space.
ENDIF.
== check if there is a header entry for the delivery item
LOOP AT del_tab INTO del_wa.
READ TABLE yser01 WITH KEY lief_nr = del_wa-vbeln
posnr = del_wa-posnr.
IF sy-subrc NE 0.
create one
CALL FUNCTION 'OBJECTLIST_NUMBER'
IMPORTING
obknr = yser01-obknr.
yser00-mandt = sy-mandt.
yser00-obknr = yser01-obknr.
APPEND yser00.
SELECT SINGLE kunnr INTO (yser01-kunde)
FROM likp
WHERE vbeln = vbeln_i.
yser01-mandt = sy-mandt.
yser01-lief_nr = del_wa-vbeln.
yser01-posnr = del_wa-posnr.
yser01-vorgang = 'SDLS'.
yser01-vbtyp = 'J'.
yser01-bwart = '601'.
yser01-dbknz = space. "not in db
yser01-loknz = space. "do not delete
APPEND yser01.
ENDIF.
ENDLOOP.
check if any entries should be deleted
LOOP AT yser01.
READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
posnr = yser01-posnr.
IF sy-subrc NE 0.
yser01-loknz = 'X'. "mark for delete
MODIFY yser01.
ENDIF.
ENDLOOP.
collect all the object keys for the delivery item with s/n's
LOOP AT yser01.
READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
posnr = yser01-posnr.
IF sy-subrc = 0.
READ TABLE yser00 WITH KEY obknr = yser01-obknr.
IF sy-subrc NE 0.
yser00-mandt = yser01-mandt.
yser00-obknr = yser01-obknr.
APPEND yser00.
ENDIF.
ENDIF.
ENDLOOP.
IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
SERIAL NO OBJECTS
==== read the existing serial numbers from the database
via object number into YOBJK_ALL
LOOP AT yser00.
SELECT * APPENDING CORRESPONDING FIELDS OF TABLE yobjk_all
FROM objk
WHERE obknr = yser00-obknr.
ENDLOOP.
yobjk_all-dbknz = 'X'.
MODIFY yobjk_all TRANSPORTING dbknz WHERE dbknz = space.
=== add any new serial numbers
LOOP AT serno_tab.
READ TABLE yser01 WITH KEY lief_nr = serno_tab-vbeln
posnr = serno_tab-posnr.
READ TABLE yobjk_all WITH KEY sernr = serno_tab-sernr
matnr = del_wa-matnr.
IF sy-subrc NE 0.
this is a new serial number
yobjk_all-mandt = sy-mandt.
yobjk_all-obknr = yser01-obknr.
yobjk_all-obzae = 0.
yobjk_all-equnr = yequi-equnr.
yobjk_all-objvw = 'S'.
yobjk_all-sernr = serno_tab-sernr.
yobjk_all-matnr = del_wa-matnr.
yobjk_all-datum = sy-datum.
yobjk_all-taser = 'SER01'.
yobjk_all-equpd = 'X'.
yobjk_all-objnr = yequi-objnr.
yobjk_all-dbknz = space.
yobjk_all-loknz = space.
APPEND yobjk_all.
ENDIF.
ENDLOOP.
=== mark any which are no longer confirmed as deleted
LOOP AT yobjk_all.
READ TABLE yser01 WITH KEY obknr = yobjk_all-obknr.
READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
posnr = yser01-posnr
sernr = yobjk_all-sernr.
IF sy-subrc NE 0.
yobjk_all-loknz = 'X'.
MODIFY yobjk_all TRANSPORTING loknz.
ENDIF.
ENDLOOP.
EQUIPMENT RECORDS
== get the equipment records
LOOP AT yobjk_all.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF yequi
FROM equi
WHERE sernr = yobjk_all-sernr
AND matnr = yobjk_all-matnr.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
IF yobjk_all-dbknz = space AND
yobjk_all-loknz = space.
yequi-dbknz = 'X'.
yequi-obknr = yobjk_all-obknr.
yequi-j_vorgang = 'PMS3'. "add to delivery
yequi-matnr_old = yequi-matnr.
APPEND yequi.
yobjk_all-equnr = yequi-equnr.
MODIFY yobjk_all TRANSPORTING equnr.
CONTINUE.
ENDIF.
IF yobjk_all-dbknz = 'X' AND
yobjk_all-loknz = 'X'.
yequi-dbknz = 'X'.
yequi-j_vorgang = 'PMSA'. "delete from delivery
yequi-matnr_old = yequi-matnr.
APPEND yequi.
CONTINUE.
ENDIF.
ENDLOOP.
remove any Equipment records that do not need to be processed
DELETE yequi WHERE j_vorgang IS initial.
IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
fill the object counter
LOOP AT del_tab INTO del_wa.
READ TABLE yser01 WITH KEY lief_nr = del_wa-vbeln
posnr = del_wa-posnr.
DO del_wa-lfimg TIMES.
READ TABLE yobjk_all WITH KEY obknr = yser01-obknr
obzae = sy-index.
IF sy-subrc NE 0.
READ TABLE yobjk_all WITH KEY obknr = yser01-obknr
obzae = 0.
IF sy-subrc = 0.
yobjk_all-obzae = sy-index.
MODIFY yobjk_all INDEX sy-tabix TRANSPORTING obzae.
ENDIF.
ENDIF.
ENDDO.
ENDLOOP.
IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
===========================================
update the delivery
===========================================
CALL FUNCTION 'SERIAL_LISTE_POST_LS'
TABLES
xser00 = yser00
xser01 = yser01
xobjk_all = yobjk_all
xequi = yequi
xmase = ymase.
TAB_CUOBJ =
XSER03 =
CALL FUNCTION 'STATUS_BUFFER_EXPORT_TO_MEMORY'
EXPORTING
i_memory_id = memid_status.
COMMIT WORK AND WAIT.
CALL FUNCTION 'Z_MOB_SERIALNR_REFRESH_LS'
EXPORTING
ctu = 'X'
mode = 'N'
UPDATE = 'L'
GROUP =
USER =
KEEP =
HOLDDATE =
NODATA = '/'
vbeln_i = vbeln_i.
IMPORTING
SUBRC =
TABLES
MESSTAB =
ENDFUNCTION.
FUNCTION z_mob_serialnr_refresh_ls.
""Local interface:
*" IMPORTING
*" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
*" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
*" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
*" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
*" VALUE(USER) LIKE APQI-USERID OPTIONAL
*" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
*" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
*" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
*" VALUE(VBELN_I) LIKE LIKP-VBELN
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
DATA: vbeln_001 LIKE bdcdata-fval.
vbeln_001 = vbeln_i.
subrc = 0.
PERFORM bdc_nodata USING nodata.
PERFORM open_group USING group user keep holddate ctu.
PERFORM bdc_dynpro USING 'SAPMV50A' '4004'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LIKP-VBELN'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'LIKP-VBELN'
vbeln_001.
PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PSER_T'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LIPS-POSNR(01)'.
PERFORM bdc_dynpro USING 'SAPLIPW1' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RIPW0-SERNR(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=RWS'.
PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH_T'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LIPS-MATNR(02)'.
PERFORM bdc_transaction TABLES messtab
USING 'VL02N'
ctu
mode
update.
IF sy-subrc <> 0.
subrc = sy-subrc.
EXIT.
ENDIF.
PERFORM close_group USING ctu.
ENDFUNCTION.
INCLUDE bdcrecxy. -
I want to covert the BDC to background process
Hi,
I want to change the BDC program to Background processing . I am posting the code below, can you change it.
FUNCTION YFIIN_CRC_SET_FLG1.
""Local Interface:
*" IMPORTING
*" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
*" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
*" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
*" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
*" VALUE(USER) LIKE APQI-USERID OPTIONAL
*" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
*" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
*" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
*" VALUE(QMNUM_001) LIKE VIQMEL-QMNUM
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
subrc = 0.
perform bdc_nodata using NODATA.
perform open_group using GROUP USER KEEP HOLDDATE CTU.
perform bdc_dynpro using 'SAPLIQS0' '0200'.
perform bdc_field using 'BDC_CURSOR'
'RIWO00-QMNUM'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RIWO00-QMNUM'
QMNUM_001.
perform bdc_dynpro using 'SAPLIQS0' '7200'.
perform bdc_field using 'BDC_OKCODE'
'=GNOK'.
perform bdc_field using 'BDC_CURSOR'
'VIQMEL-QMNUM'.
perform bdc_dynpro using 'SAPLIQS0' '7200'.
perform bdc_field using 'BDC_OKCODE'
'=BUCH'.
perform bdc_field using 'BDC_CURSOR'
'VIQMEL-QMNUM'.
perform bdc_transaction tables messtab
using 'IQS2'
CTU
MODE
UPDATE.
if sy-subrc <> 0.
subrc = sy-subrc.
exit.
endif.
perform close_group using CTU.
ENDFUNCTION.
==================================
***INCLUDE BDCRECXY
Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
Nodata-Character
DATA: NODATA_CHARACTER VALUE '/'.
create batchinput session *
FORM OPEN_GROUP
USING P_GROUP LIKE APQI-GROUPID
P_USER LIKE APQI-USERID
P_KEEP LIKE APQI-QERASE
P_HOLDDATE LIKE APQI-STARTDATE
P_CTU LIKE APQI-PUTACTIVE.
IF P_CTU <> 'X'.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT = SY-MANDT
GROUP = P_GROUP
USER = P_USER
KEEP = P_KEEP
HOLDDATE = P_HOLDDATE.
ENDIF.
ENDFORM.
end batchinput session *
FORM CLOSE_GROUP USING P_CTU LIKE APQI-PUTACTIVE.
IF P_CTU <> 'X'.
close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDIF.
ENDFORM.
Start new transaction according to parameters *
FORM BDC_TRANSACTION TABLES P_MESSTAB
USING P_TCODE
P_CTU
P_MODE
P_UPDATE.
DATA: L_SUBRC LIKE SY-SUBRC.
IF P_CTU <> 'X'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE = P_TCODE
TABLES DYNPROTAB = BDCDATA
EXCEPTIONS OTHERS = 1.
ELSE.
CALL TRANSACTION P_TCODE USING BDCDATA
MODE P_MODE
UPDATE P_UPDATE
MESSAGES INTO P_MESSTAB.
ENDIF.
L_SUBRC = SY-SUBRC.
REFRESH BDCDATA.
SY-SUBRC = L_SUBRC.
ENDFORM.
Start new screen *
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
Insert field *
FORM BDC_FIELD USING FNAM FVAL.
IF fval <> NODATA_CHARACTER.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
Insert field *
FORM BDC_NODATA USING P_NODATA.
NODATA_CHARACTER = P_NODATA.
ENDFORM.Hi..
Incase of Session method you have to Schedule the Program RSBDCSUB in backgroud using the Tcode SM36.
This program Takes the Session Name as input and Process the Session in background.
Note: Create a variant with the Session name for this program
<b>Reward if Helpful</b> -
DELIVERY & GI PROBLEM SD:ABAP PROGRAM
HAI FRIENDS
I HAVE CREATED ONE SALES ORDER. NOW I WANT DELIVERY(VL02N) AND GOODS ISSUER FOR THAT SALES ORDER. I WANT BDC RECORDING
Program ID : ZRFC_RUSHORDER
Transaction Code : Z*
Author : Veerendra kumar E
Description : RFC For Sales Process using Session Method calling
3 Transactions VA01,VL23 & VF06
Project : KURLON
Version : 1.0
Change History
Date | Programmer | Corr. # | Description
| | |
| | |
FUNCTION ZRFC_RUSHORDER .
""Local interface:
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
*" RO_HEADER STRUCTURE ZSD_HEADER
*" RO_ITEM STRUCTURE ZSD_ITEM
INTERNAL TABLES,STRUCTURES & VARIABLES
*TABLES : ZSO_CREATE_TEXT.
DATA: CTU LIKE APQI-PUTACTIVE,
MODE LIKE APQI-PUTACTIVE,
UPDATE LIKE APQI-PUTACTIVE,
GROUP LIKE APQI-GROUPID,
USER LIKE APQI-USERID,
KEEP LIKE APQI-QERASE,
HOLDDATE LIKE APQI-STARTDATE,
NODATA LIKE APQI-PUTACTIVE.
DATA : SORDER_FINAL LIKE VBAK-VBELN,
SORDER(15) TYPE C,
V_CODE(2) TYPE C,
V_PLANT LIKE EKPO-WERKS,
YEAR_CONVERSION(1) TYPE C.
DATA : WA_ZRUSH_ORDER LIKE ZRUSH_ORDER.
DATA : V_DATE LIKE SY-DATUM,
V_TIME LIKE SY-UZEIT.
DATA : SESSION_NAM(30) TYPE C.
CTU = ' '.
MODE = 'N'.
USER = SY-UNAME.
CONCATENATE SY-UNAME '_' SY-DATUM '_' SY-UZEIT INTO
SESSION_NAM.
GROUP = 'RUSH_ORDER'.
KEEP = 'X'.
UPDATE = 'L'.
HOLDDATE = ''.
NODATA = '/'.
SUBRC = 0.
*CREATING SESSSION
PERFORM OPEN_GROUP USING GROUP USER KEEP HOLDDATE CTU.
LOOP AT RO_HEADER.
MOVE RO_HEADER-SORDER TO SORDER.
V_PLANT = SORDER+0(4).
SELECT SINGLE CODE INTO V_CODE FROM ZPLANT_NUMER_IBS WHERE PLANT = V_PLANT.
IF SORDER+4(4) = '2005'.
YEAR_CONVERSION = 'E'.
ELSEIF SORDER+4(4) = '2006'.
YEAR_CONVERSION = 'F'.
ELSEIF SORDER+4(4) = '2007'.
YEAR_CONVERSION = 'G'.
ELSEIF SORDER+4(4) = '2008'.
YEAR_CONVERSION = 'H'.
ELSEIF SORDER+4(4) = '2009'.
YEAR_CONVERSION = 'J'.
ELSEIF SORDER+4(4) = '2010'.
YEAR_CONVERSION = 'K'.
ELSEIF SORDER+4(4) = '2011'.
YEAR_CONVERSION = 'L'.
ELSEIF SORDER+4(4) = '2012'.
YEAR_CONVERSION = 'M'.
ELSEIF SORDER+4(4) = '2013'.
YEAR_CONVERSION = 'N'.
ELSEIF SORDER+4(4) = '2014'.
YEAR_CONVERSION = 'P'.
ELSEIF SORDER+4(4) = '2015'.
YEAR_CONVERSION = 'Q'.
ELSEIF SORDER+4(4) = '2016'.
YEAR_CONVERSION = 'R'.
ELSEIF SORDER+4(4) = '2017'.
YEAR_CONVERSION = 'S'.
ELSEIF SORDER+4(4) = '2018'.
YEAR_CONVERSION = 'T'.
ELSEIF SORDER+4(4) = '2019'.
YEAR_CONVERSION = 'U'.
ELSEIF SORDER+4(4) = '2020'.
YEAR_CONVERSION = 'V'.
ELSEIF SORDER+4(4) = '2021'.
YEAR_CONVERSION = 'W'.
ELSEIF SORDER+4(4) = '2022'.
YEAR_CONVERSION = 'X'.
ELSEIF SORDER+4(4) = '2023'.
YEAR_CONVERSION = 'Y'.
ELSEIF SORDER+4(4) = '2024'.
YEAR_CONVERSION = 'Z'.
ELSEIF SORDER+4(4) = '2025'.
YEAR_CONVERSION = 'A'.
ELSEIF SORDER+4(4) = '2026'.
YEAR_CONVERSION = 'B'.
ELSEIF SORDER+4(4) = '2027'.
YEAR_CONVERSION = 'C'.
ENDIF.
CONCATENATE YEAR_CONVERSION V_CODE SORDER+8(7) INTO SORDER_FINAL.
CLEAR YEAR_CONVERSION.
CLEAR V_CODE.
CLEAR V_PLANT.
Text Element Creation for Sales order.
ZSO_CREATE_TEXT-SORDER = SORDER_FINAL.
ZSO_CREATE_TEXT-LR_NUMBER = RO_HEADER-LR_NUMBER.
ZSO_CREATE_TEXT-TRANSPORTER = RO_HEADER-TRANSPORTER.
ZSO_CREATE_TEXT-Z003 = RO_HEADER-Z003.
ZSO_CREATE_TEXT-Z004 = RO_HEADER-Z004.
INSERT ZSO_CREATE_TEXT.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-SPART'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBAK-AUART'
'ZKSO'. "AUART_001.
PERFORM BDC_FIELD USING 'VBAK-VKORG'
RO_HEADER-VKORG. "VKORG_002.
PERFORM BDC_FIELD USING 'VBAK-VTWEG'
RO_HEADER-VTWEG. "VTWEG_003.
PERFORM BDC_FIELD USING 'VBAK-SPART'
RO_HEADER-SPART. "SPART_004.
Sales Order Date insertion.......
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KKAU'.
PERFORM BDC_FIELD USING 'VBAK-VBELN'
SORDER_FINAL.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
RO_HEADER-ZTERM.
WRITE RO_HEADER-SODATE TO RO_HEADER-SODATE.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\03'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-AUDAT'.
PERFORM BDC_FIELD USING 'VBAK-AUDAT'
RO_HEADER-SODATE. "Document Date
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
RO_HEADER-SODATE. "Pricing Date
Billing Screen ***********************
perform bdc_dynpro using 'SAPMV45A' '4002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-FKDAT'.
PERFORM BDC_FIELD USING 'VBKD-FKDAT'
RO_HEADER-SODATE. "Billing date
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KKO1'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP. "KUNNR_006.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH. "KUNNR_007.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO. "BSTKD_008.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
RO_HEADER-SODATE. "Delivery Date.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
RO_HEADER-ZTERM. "ZTERM_011.
************************Added for test 25-02******************
PERFORM BDC_FIELD USING 'RV45A-KETDAT' " CNGD FROM 'KEDAT' TO 'KETDAT'.
RO_HEADER-SODATE. "REQ DELVY DATE.
PERFORM BDC_FIELD USING 'VBKD-PRSDT' "CNGD FROM 'RV45A' TO 'VBKD'.
RO_HEADER-SODATE. "PRICING DATE.
************************Added for test 25-02******************
*Dont DELETE, For Future Use of Inco terms 1 & 2.
*PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBKD-INCO2'.
*PERFORM BDC_FIELD USING 'VBKD-INCO1'
RO_HEADER-INCO1. "INCO1_012.
*PERFORM BDC_FIELD USING 'VBKD-INCO2'
RO_HEADER-INCO2. "INCO2_013.
Header condition types......................................
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(05)'.
IF RO_HEADER-KSCHL1 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL1.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR1.
ENDIF.
IF RO_HEADER-KSCHL2 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL2.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR2.
ENDIF.
IF RO_HEADER-KSCHL3 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL3.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR3.
ENDIF.
*change on 11.04.2006 for adding rounding off condition type.
IF RO_HEADER-KSCHL4 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL4.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR4.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
Dont DELETE, For Future Use of : Sales Person Data.................
*PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=HEAD'.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'=T\08'.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'=PAAN'.
*perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(09)'.
*perform bdc_field using 'GV_FILTER'
'PARALL'. "GV_FILTER_024.
*perform bdc_field using 'GVS_TC_DATA-REC-PARVW(09)'
'VE'."REC-PARVW_09_025.
*perform bdc_field using 'GVS_TC_DATA-REC-PARTNER(09)'
'0'. "REC-PARTNER_09_026.
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
*perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(09)'.
*perform bdc_field using 'GV_FILTER'
'PARALL'. "GV_FILTER_027.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=POAN'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP. "KUNNR_006.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH. "KUNNR_007.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO. "BSTKD_008.
*FETCHING LINE ITEM DATA.
LOOP AT RO_ITEM WHERE SORDER = RO_HEADER-SORDER.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=POAN'.
PERFORM BDC_FIELD USING 'RV45A-MABNR(02)' RO_ITEM-MATNR.
PERFORM BDC_FIELD USING 'RV45A-KWMENG(02)' RO_ITEM-QTY.
PERFORM BDC_FIELD USING 'VBAP-VRKME(02)' RO_ITEM-UOM. " For Future Use
PERFORM BDC_FIELD USING 'VBAP-WERKS(02)' RO_ITEM-PLANT.
PERFORM BDC_FIELD USING 'VBAP-LGORT(02)' RO_ITEM-SLOC.
PERFORM BDC_FIELD USING 'VBAP-CHARG(02)' RO_ITEM-BATCH.
*FREE DELIVERY CHECK CHANGING OF ITEMCATEGORY : TANN.
IF RO_ITEM-KBETR1 IS INITIAL AND RO_ITEM-KBETR2 IS INITIAL.
PERFORM BDC_FIELD USING 'VBAP-PSTYV(02)'
'ZANN'.
ELSE.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
Condition Types For The Items
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PKO1'.
PERFORM BDC_FIELD USING 'RV45A-VBAP_SELKZ(01)' 'X'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
Condition Type 1...........
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL1.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR1.
Condition Type 2...........
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL2.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR2.
Condition Type 3.............
IF RO_ITEM-KSCHL3 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL3.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR3.
ENDIF.
Condition Type 4..............
IF RO_ITEM-KSCHL4 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL4.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR4.
ENDIF.
Condition Type 5...............
IF RO_ITEM-KSCHL5 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL5.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR5.
ENDIF.
Condition Type 6...............
IF RO_ITEM-KSCHL6 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL6.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR6.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
ENDIF.
ENDLOOP.
Saving The Sales Document
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SICH'.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'VA01'
CTU
MODE
UPDATE.
perform bdc_dynpro using 'SAPMV50A' '4004'.
perform bdc_field using 'BDC_CURSOR' 'LIKP-VBELN'.
perform bdc_field using 'BDC_OKCODE' '/00'.
*perform bdc_field using 'LIKP-VBELN' LIKP-VBELN." '7012000733'.
perform bdc_dynpro using 'SAPMV50A' '1000'.
perform bdc_field using 'BDC_OKCODE' '=SICH_T'.
*perform bdc_field using 'LIKP-BLDAT' RO_HEADER-SODATE. '27.06.2006'.
perform bdc_field using 'BDC_CURSOR' 'LIKP-WADAT_IST'.
perform bdc_field using 'LIKP-WADAT' RO_HEADER-SODATE. " '26.05.2006'.
*perform bdc_field using 'LIKP-WAUHR' '00:00:00'.
perform bdc_field using 'LIKP-BTGEW' '10'.
perform bdc_field using 'LIKP-GEWEI' 'KG'.
perform bdc_field using 'LIKP-WADAT_IST' RO_HEADER-SODATE." '26.05.2006'.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'VL02N'
CTU
MODE
UPDATE.Hi,
From the explanation given, I think if you change the transaction from VL02N to VL01N this should work, because the delivery has not been created yet,
Regards, -
Hallo,
I have an issue with a bdc FM i created not working with workflow.
If I test the FM, it works ok.
If i Test the method calling the FM it works ok.
if i test the task calling the method it works ok.
If I run the workflow it doesn't work, and i get the following messages:
S DC 1 Unable to initialise ABAP Control Framework ...
S DC 1 Unable to initialise ABAP Control Framework ...
S DC 6 Control Framework: Fatal error - GUI cannot be reached
A SY 2 Exception condition "CNTL_ERROR" raised.
What is the meaning of this??
Bdc is calling Me54n to set to click on reject button during Purchase Requisition Release,
putting the PR processing state in status '08'
I checked all the binding which are fine. No container parameter are passed a part from the business object.
here is the FM coding:
FUNCTION ZME_N_WF_REJ_PR.
""Local interface:
*" IMPORTING
*" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
*" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
*" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
*" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
*" VALUE(USER) LIKE APQI-USERID OPTIONAL
*" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
*" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
*" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
*" VALUE(BANFN_003) LIKE BDCDATA-FVAL
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
subrc = 0.
perform bdc_nodata using NODATA.
perform open_group using GROUP USER KEEP HOLDDATE CTU.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MECHOB'.
*perform bdc_field using 'DYN_6000-LIST'
LIST_001.
perform bdc_field using 'BDC_CURSOR'
'MEREQ3328-AFNAM'.
*perform bdc_field using 'MEREQ3328-EKGRP'
EKGRP_002.
perform bdc_dynpro using 'SAPLMEGUI' '0002'.
perform bdc_field using 'BDC_OKCODE'
'=MEOK'.
perform bdc_field using 'BDC_CURSOR'
'MEPO_SELECT-BANFN'.
perform bdc_field using 'MEPO_SELECT-BANFN'
BANFN_003.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEREJECT'.
perform bdc_field using 'BDC_CURSOR'
'DYN_6000-LIST'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MESAVE'.
perform bdc_field using 'BDC_CURSOR'
'DYN_6000-LIST'.
perform bdc_transaction tables messtab
using 'ME54N'
CTU
MODE
UPDATE.
if sy-subrc <> 0.
subrc = sy-subrc.
exit.
endif.
perform close_group using CTU.
ENDFUNCTION.
INCLUDE BDCRECXY .
I tries the same approach on ML81N to block a service entry sheet.(pressing the lock icon),
I get exactly the same issue.
Anybody knows how to resolve?
Or how to do the same without using a bdc call?
regards,
marcoHi
this is the Method callind the FM
object is BUS2105 w delegation ZBUS2105.
BEGIN_METHOD ZRELEASEREJECTED CHANGING CONTAINER.
Data: CTU TYPE APQI-PUTACTIVE,
MODE TYPE APQI-PUTACTIVE,
UPDATE TYPE APQI-PUTACTIVE,
NODATA TYPE APQI-PUTACTIVE.
CTU = 'X'.
MODE = 'N'.
UPDATE = 'L'.
NODATA = '/'.
iobjectkey = object-key.
CALL FUNCTION 'ZME_N_WF_REJ_PR'
EXPORTING
BANFN_003 = iobjectkey
NODATA = NODATA
UPDATE = UPDATE
MODE = MODE
CTU = CTU
IMPORTING
SUBRC = SUBRC
TABLES
MESSTAB = MESSAGE
EXCEPTIONS
OTHERS = 01.
CASE SY-SUBRC.
WHEN 0. " OK
WHEN OTHERS. " to be implemented
ENDCASE.
SWC_SET_ELEMENT CONTAINER 'Subrc' SUBRC.
SWC_SET_TABLE CONTAINER 'MESSAGE' MESSAGE.
END_METHOD. -
Bdc not working with workflow - background task
Hallo,
I have an issue with a bdc FM i created not working with workflow.
If I test the FM, it works ok.
If i Test the method calling the FM it works ok.
if i test the task calling the method it works ok.
If I run the workflow it doesn't work, and i get the following messages:
S DC 1 Unable to initialise ABAP Control Framework ...
S DC 1 Unable to initialise ABAP Control Framework ...
S DC 6 Control Framework: Fatal error - GUI cannot be reached
A SY 2 Exception condition "CNTL_ERROR" raised.
What is the meaning of this??
Bdc is calling Me54n to set to click on reject button during Purchase Requisition Release,
putting the PR processing state in status '08'
I checked all the binding which are fine. No container parameter are passed a part from the business object.
here is the FM coding:
FUNCTION ZME_N_WF_REJ_PR.
""Local interface:
*" IMPORTING
*" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
*" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
*" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
*" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
*" VALUE(USER) LIKE APQI-USERID OPTIONAL
*" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
*" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
*" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
*" VALUE(BANFN_003) LIKE BDCDATA-FVAL
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
subrc = 0.
perform bdc_nodata using NODATA.
perform open_group using GROUP USER KEEP HOLDDATE CTU.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MECHOB'.
*perform bdc_field using 'DYN_6000-LIST'
LIST_001.
perform bdc_field using 'BDC_CURSOR'
'MEREQ3328-AFNAM'.
*perform bdc_field using 'MEREQ3328-EKGRP'
EKGRP_002.
perform bdc_dynpro using 'SAPLMEGUI' '0002'.
perform bdc_field using 'BDC_OKCODE'
'=MEOK'.
perform bdc_field using 'BDC_CURSOR'
'MEPO_SELECT-BANFN'.
perform bdc_field using 'MEPO_SELECT-BANFN'
BANFN_003.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEREJECT'.
perform bdc_field using 'BDC_CURSOR'
'DYN_6000-LIST'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MESAVE'.
perform bdc_field using 'BDC_CURSOR'
'DYN_6000-LIST'.
perform bdc_transaction tables messtab
using 'ME54N'
CTU
MODE
UPDATE.
if sy-subrc 0.
subrc = sy-subrc.
exit.
endif.
perform close_group using CTU.
ENDFUNCTION.
INCLUDE BDCRECXY .
I tries the same approach on ML81N to block a service entry sheet.(pressing the lock icon),
I get exactly the same issue.
Anybody knows how to resolve?
Or how to do the same without using a bdc call?
regards,
marcoHallo,
I have an issue with a bdc FM i created not working with workflow.
If I test the FM, it works ok.
If i Test the method calling the FM it works ok.
if i test the task calling the method it works ok.
If I run the workflow it doesn't work, and i get the following messages:
S DC 1 Unable to initialise ABAP Control Framework ...
S DC 1 Unable to initialise ABAP Control Framework ...
S DC 6 Control Framework: Fatal error - GUI cannot be reached
A SY 2 Exception condition "CNTL_ERROR" raised.
What is the meaning of this??
Bdc is calling Me54n to set to click on reject button during Purchase Requisition Release,
putting the PR processing state in status '08'
I checked all the binding which are fine. No container parameter are passed a part from the business object.
here is the FM coding:
FUNCTION ZME_N_WF_REJ_PR.
""Local interface:
*" IMPORTING
*" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
*" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
*" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
*" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
*" VALUE(USER) LIKE APQI-USERID OPTIONAL
*" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
*" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
*" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
*" VALUE(BANFN_003) LIKE BDCDATA-FVAL
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
subrc = 0.
perform bdc_nodata using NODATA.
perform open_group using GROUP USER KEEP HOLDDATE CTU.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MECHOB'.
*perform bdc_field using 'DYN_6000-LIST'
LIST_001.
perform bdc_field using 'BDC_CURSOR'
'MEREQ3328-AFNAM'.
*perform bdc_field using 'MEREQ3328-EKGRP'
EKGRP_002.
perform bdc_dynpro using 'SAPLMEGUI' '0002'.
perform bdc_field using 'BDC_OKCODE'
'=MEOK'.
perform bdc_field using 'BDC_CURSOR'
'MEPO_SELECT-BANFN'.
perform bdc_field using 'MEPO_SELECT-BANFN'
BANFN_003.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MEREJECT'.
perform bdc_field using 'BDC_CURSOR'
'DYN_6000-LIST'.
perform bdc_dynpro using 'SAPLMEGUI' '0014'.
perform bdc_field using 'BDC_OKCODE'
'=MESAVE'.
perform bdc_field using 'BDC_CURSOR'
'DYN_6000-LIST'.
perform bdc_transaction tables messtab
using 'ME54N'
CTU
MODE
UPDATE.
if sy-subrc 0.
subrc = sy-subrc.
exit.
endif.
perform close_group using CTU.
ENDFUNCTION.
INCLUDE BDCRECXY .
I tries the same approach on ML81N to block a service entry sheet.(pressing the lock icon),
I get exactly the same issue.
Anybody knows how to resolve?
Or how to do the same without using a bdc call?
regards,
marco -
Order quantity error in VA01 BDC please some one reply
i have done a bdc f.m for va01 with the items in import table but in all screen mode when the values for order quantity is entered it shows an information error to enter order quantity but as far as i know the coding is right...
my code is..
FUNCTION zfm_sales_ord_create2.
""Local Interface:
*" IMPORTING
*" VALUE(I_HEADER_DETAILS) LIKE ZVA01HEAD STRUCTURE ZVA01HEAD
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
*" IT_ITEM_DETAILS STRUCTURE ZVA01ITEM
DATA : ctu LIKE apqi-putactive VALUE 'X',
mode LIKE apqi-putactive VALUE 'A',
update LIKE apqi-putactive VALUE 'L',
group LIKE apqi-groupid ,
user LIKE apqi-userid ,
keep LIKE apqi-qerase ,
holddate LIKE apqi-startdate ,
nodata LIKE apqi-putactive VALUE '',
wa_item_details LIKE LINE OF it_item_details..
subrc = 0.
DATA : val TYPE i,
val = 1.
PERFORM bdc_nodata USING nodata.
PERFORM open_group USING group user keep holddate ctu.
PERFORM bdc_dynpro USING 'SAPMV45A' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'VBAK-AUART'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'VBAK-AUART'
i_header_details-order_type.
PERFORM bdc_field USING 'VBAK-VKORG'
i_header_details-sales_org.
PERFORM bdc_field USING 'VBAK-VTWEG'
i_header_details-distri_chann.
PERFORM bdc_field USING 'VBAK-SPART'
i_header_details-division.
LOOP AT it_item_details INTO wa_item_details .
IF val = 1.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=POAN'.
PERFORM bdc_field USING 'KUAGV-KUNNR'
i_header_details-sold_to_party.
PERFORM bdc_field USING 'KUWEV-KUNNR'
i_header_details-ship_to_party.
PERFORM bdc_field USING 'RV45A-KETDAT'
i_header_details-req_deliv_date.
PERFORM bdc_field USING 'RV45A-KPRGBZ'
i_header_details-delivery_date_type.
*perform bdc_field using 'VBKD-PRSDT'
PRSDT_009.
*perform bdc_field using 'BDC_CURSOR'
'RV45A-KWMENG(01)'.
PERFORM bdc_field USING 'RV45A-MABNR(01)'
wa_item_details-material_no.
perform bdc_field using 'RV45A-KWMENG(01)'
wa_item_details-order_quantity.
'22' .
ELSE.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=POAN'.
*perform bdc_field using 'KUAGV-KUNNR'
KUNNR_012.
*perform bdc_field using 'KUWEV-KUNNR'
KUNNR_013.
*perform bdc_field using 'RV45A-KETDAT'
KETDAT_014.
*perform bdc_field using 'RV45A-KPRGBZ'
KPRGBZ_015.
*perform bdc_field using 'VBKD-PRSDT'
PRSDT_016.
*perform bdc_field using 'VBKD-ZTERM'
ZTERM_017.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV45A-KWMENG(02)'.
PERFORM bdc_field USING 'RV45A-MABNR(02)'
wa_item_details-material_no.
**perform bdc_field using 'BDC_CURSOR'
'RV45A-KWMENG(02)'.
perform bdc_field using 'RV45A-KWMENG(02)'
wa_item_details-order_quantity.
'22'.
ENDIF.
val = val + 1.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
*perform bdc_field using 'KUAGV-KUNNR'
KUNNR_020.
*perform bdc_field using 'KUWEV-KUNNR'
KUNNR_021.
*perform bdc_field using 'RV45A-KETDAT'
KETDAT_022.
*perform bdc_field using 'RV45A-KPRGBZ'
KPRGBZ_023.
*perform bdc_field using 'VBKD-PRSDT'
PRSDT_024.
*perform bdc_field using 'VBKD-ZTERM'
ZTERM_025.
*perform bdc_field using 'BDC_CURSOR'
'RV45A-KWMENG(02)'.
*perform bdc_field using 'RV45A-MABNR(02)'
MABNR_02_026.
*perform bdc_field using 'RV45A-KWMENG(02)'
KWMENG_02_027.
PERFORM bdc_transaction TABLES messtab
USING 'VA01'
ctu
mode
update.
IF sy-subrc <> 0.
subrc = sy-subrc.
EXIT.
ENDIF.
PERFORM close_group USING ctu.
ENDFUNCTION.
if i hard code that value '22' for RV45A-KWMENG its working fine, with out any error but when
get it from the WA it shows an error....Hi,
Check field length of 'RV45A-KWMENG and wa_item_details-order_quantity. Try changing wa_item_details-order_quantity to type CHAR. Alternatively use BAPI_SALESORDER_CREATE*
Cheers.
...Reward if useful. -
Error with Call Transaction or Session
Hi All,
I have written a BDC RFC for 'PO13' transaction which will create a position. When the BDC is run in the foreground mode and with all screens displyed then the BDC runs absolutely perfect but once this is made as a webservice it gives an error in the IE saying a CNTL_SYSTEM_ERROR.
I tried my hand in making it as a session. If the BDC is scheduled as a session and executed in background it gives the exact same error message.
The only way it works is making it as a foreground or make it a foreground but to display only error screens.
Is there a way that we can change the properties of the BDC session to run it as "Show only Error screens" programatically ?
Best Regards
Sudhi.
The function module code is as follows:
FUNCTION ZHR_CREATE_POSN1.
""Local Interface:
*" IMPORTING
*" REFERENCE(SHORT017) LIKE BDCDATA-FVAL
*" REFERENCE(STEXT018) LIKE BDCDATA-FVAL
*" REFERENCE(SHORT021) LIKE BDCDATA-FVAL
*" REFERENCE(STEXT022) LIKE BDCDATA-FVAL
*" REFERENCE(ORGUNIT) LIKE BDCDATA-FVAL
*" EXPORTING
*" REFERENCE(SUBRC) LIKE SYST-SUBRC
*" REFERENCE(POSITIONID) LIKE HRP1000-OBJID
TABLES: USR01.
DATA: CTU LIKE APQI-PUTACTIVE VALUE ' ',
MODE LIKE APQI-PUTACTIVE VALUE 'N',
UPDATE LIKE APQI-PUTACTIVE VALUE 'L',
GROUP LIKE APQI-GROUPID VALUE 'SUDHI1',
USER LIKE APQI-USERID,
KEEP LIKE APQI-QERASE,
HOLDDATE LIKE APQI-STARTDATE,
NODATA LIKE APQI-PUTACTIVE VALUE '/',
PLVAR_001 LIKE BDCDATA-FVAL VALUE '01',
SEARK_002 LIKE BDCDATA-FVAL VALUE '',
TIMR6_003 LIKE BDCDATA-FVAL VALUE 'X',
BEGDA_004 LIKE BDCDATA-FVAL,
ENDDA_005 LIKE BDCDATA-FVAL,
PLVAR_006 LIKE BDCDATA-FVAL VALUE '01',
TIMR6_007 LIKE BDCDATA-FVAL VALUE 'X',
BEGDA_008 LIKE BDCDATA-FVAL,
ENDDA_009 LIKE BDCDATA-FVAL,
MARKFELD_01_010 LIKE BDCDATA-FVAL VALUE 'X',
PLVAR_011 LIKE BDCDATA-FVAL VALUE '01',
TIMR6_012 LIKE BDCDATA-FVAL VALUE 'X',
BEGDA_013 LIKE BDCDATA-FVAL,
ENDDA_014 LIKE BDCDATA-FVAL,
BEGDA_015 LIKE BDCDATA-FVAL,
ENDDA_016 LIKE BDCDATA-FVAL,
BEGDA_019 LIKE BDCDATA-FVAL,
ENDDA_020 LIKE BDCDATA-FVAL,
EDATE(8) TYPE C VALUE '99991231'.
USER = SY-UNAME.
HOLDDATE = SY-DATUM.
SELECT SINGLE * FROM USR01 WHERE BNAME = SY-UNAME.
CASE USR01-DATFM.
WHEN '1'.
CONCATENATE SY-DATUM6(2) '.' SY-DATUM4(2) '.' SY-DATUM(4) INTO
BEGDA_004.
CONCATENATE EDATE6(2) '.' EDATE4(2) '.' EDATE(4) INTO
ENDDA_005.
WHEN '2'.
CONCATENATE SY-DATUM4(2) '/' SY-DATUM6(2) '/' SY-DATUM(4) INTO
BEGDA_004.
CONCATENATE EDATE4(2) '/' EDATE6(2) '/' EDATE(4) INTO ENDDA_005.
WHEN '3'.
CONCATENATE SY-DATUM4(2) '-' SY-DATUM6(2) '-' SY-DATUM(4) INTO
BEGDA_004.
CONCATENATE EDATE4(2) '-' EDATE6(2) '-' EDATE(4) INTO ENDDA_005.
WHEN '4'.
CONCATENATE SY-DATUM(4) '.' SY-DATUM4(2) '.' SY-DATUM6(2) INTO
BEGDA_004.
CONCATENATE EDATE(4) '.' EDATE4(2) '.' EDATE6(2) INTO ENDDA_005.
WHEN '5'.
CONCATENATE SY-DATUM(4) '/' SY-DATUM4(2) '/' SY-DATUM6(2) INTO
BEGDA_004.
CONCATENATE EDATE(4) '/' EDATE4(2) '/' EDATE6(2) INTO ENDDA_005.
WHEN '6'.
CONCATENATE SY-DATUM(4) '-' SY-DATUM4(2) '-' SY-DATUM6(2) INTO
BEGDA_004.
CONCATENATE EDATE(4) '-' EDATE4(2) '-' EDATE6(2) INTO ENDDA_005.
ENDCASE.
BEGDA_008 = BEGDA_004.
BEGDA_013 = BEGDA_004.
BEGDA_015 = BEGDA_004.
BEGDA_019 = BEGDA_004.
ENDDA_009 = ENDDA_005.
ENDDA_014 = ENDDA_005.
ENDDA_016 = ENDDA_005.
ENDDA_020 = ENDDA_005.
DATA: L_OBJID LIKE HRP1000-OBJID OCCURS 0 WITH HEADER LINE.
DATA : V_COUNT TYPE I,
V_OBJID LIKE BDCDATA-FVAL,
MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
SUBRC = 0.
PERFORM BDC_NODATA USING NODATA.
PERFORM OPEN_GROUP USING GROUP USER KEEP HOLDDATE CTU.
PERFORM BDC_DYNPRO USING 'SAPMH5A0' '5100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'PM0D1-SEARK'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'PPHDR-PLVAR'
PLVAR_001.
PERFORM BDC_FIELD USING 'PM0D1-SEARK'
SEARK_002.
PERFORM BDC_FIELD USING 'PM0D1-TIMR6'
TIMR6_003.
PERFORM BDC_FIELD USING 'PPHDR-BEGDA'
BEGDA_004.
PERFORM BDC_FIELD USING 'PPHDR-ENDDA'
ENDDA_005.
PERFORM BDC_DYNPRO USING 'SAPMH5A0' '5100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'PPHDR-PLVAR'
PLVAR_006.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'TT_T777T-ITEXT(01)'.
PERFORM BDC_FIELD USING 'PM0D1-TIMR6'
TIMR6_007.
PERFORM BDC_FIELD USING 'PPHDR-BEGDA'
BEGDA_008.
PERFORM BDC_FIELD USING 'PPHDR-ENDDA'
ENDDA_009.
PERFORM BDC_FIELD USING 'MARKFELD(01)'
MARKFELD_01_010.
PERFORM BDC_DYNPRO USING 'SAPMH5A0' '5100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=INSE'.
PERFORM BDC_FIELD USING 'PPHDR-PLVAR'
PLVAR_011.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'TT_T777T-ITEXT(01)'.
PERFORM BDC_FIELD USING 'PM0D1-TIMR6'
TIMR6_012.
PERFORM BDC_FIELD USING 'PPHDR-BEGDA'
BEGDA_013.
PERFORM BDC_FIELD USING 'PPHDR-ENDDA'
ENDDA_014.
PERFORM BDC_DYNPRO USING 'MP100000' '2000'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'P1000-STEXT'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'P1000-BEGDA'
BEGDA_015.
PERFORM BDC_FIELD USING 'P1000-ENDDA'
ENDDA_016.
PERFORM BDC_FIELD USING 'P1000-SHORT'
SHORT017.
PERFORM BDC_FIELD USING 'P1000-STEXT'
STEXT018.
PERFORM BDC_DYNPRO USING 'MP100000' '2000'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'P1000-BEGDA'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=UPD'.
PERFORM BDC_FIELD USING 'P1000-BEGDA'
BEGDA_019.
PERFORM BDC_FIELD USING 'P1000-ENDDA'
ENDDA_020.
PERFORM BDC_FIELD USING 'P1000-SHORT'
SHORT021.
PERFORM BDC_FIELD USING 'P1000-STEXT'
STEXT022.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'PO13'
CTU
MODE
UPDATE.
IF SY-SUBRC <> 0.
SUBRC = SY-SUBRC.
EXIT.
ENDIF.
PERFORM CLOSE_GROUP USING CTU.
CALL FUNCTION 'ENQUE_SLEEP'
EXPORTING
SECONDS = 1
EXCEPTIONS
SYSTEM_FAILURE = 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.
*-- Select the OBJID by Querying the table with Username,Object type,
*-- Change Date
SELECT OBJID FROM HRP1000
INTO TABLE L_OBJID
WHERE UNAME EQ SY-UNAME
AND OTYPE EQ 'S'
AND AEDTM EQ SY-DATUM.
*-- Decribe the table to get the max count
DESCRIBE TABLE L_OBJID LINES V_COUNT.
*-- Read table to at the max count to get the last record
READ TABLE L_OBJID INDEX V_COUNT.
*--EXPORT the OBJID
POSITIONID = L_OBJID.
V_OBJID = POSITIONID.
ENDFUNCTION.
INCLUDE BDCRECXY .Yes, change this line of code....
MODE LIKE APQI-PUTACTIVE VALUE 'N',
to this....
MODE LIKE APQI-PUTACTIVE VALUE 'E',
Regards,
Rich Heilman -
Hi all,
I had done BDC for FB05. It was working fine.
Now the requirement changed a bit and I need to pass one more field special gl indicator.
So I added a line in the FM i created using the recording and expected that bdc should work fine. But it didn't . The filed get populated correctly but then the next screen data is not getting populated . Any Idea what could be the problem.
perform bdc_field using 'RF05A-NEWUM'
SPL_GL_LINE_1.
FUNCTION ZFM_FB05_BDC_BILL.
*"*"Local Interface:
*" IMPORTING
*" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
*" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
*" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
*" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
*" VALUE(USER) LIKE APQI-USERID OPTIONAL
*" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
*" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
*" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
*" VALUE(BLDAT_001) LIKE BDCDATA-FVAL DEFAULT '09/09/2010'
*" VALUE(BLART_002) LIKE BDCDATA-FVAL DEFAULT 'sa'
*" VALUE(BUKRS_003) LIKE BDCDATA-FVAL DEFAULT 'K101'
*" VALUE(BUDAT_004) LIKE BDCDATA-FVAL DEFAULT '09/09/2010'
*" VALUE(MONAT_005) LIKE BDCDATA-FVAL DEFAULT '9'
*" VALUE(WAERS_006) LIKE BDCDATA-FVAL DEFAULT 'USD'
*" VALUE(DOCID_007) LIKE BDCDATA-FVAL DEFAULT '*'
*" VALUE(NEWBS_008) LIKE BDCDATA-FVAL DEFAULT '09'
*" VALUE(NEWKO_009) LIKE BDCDATA-FVAL DEFAULT '1000021'
*" VALUE(SPL_GL_LINE_1) LIKE BDCDATA-FVAL DEFAULT '2'
*" VALUE(WRBTR_010) LIKE BDCDATA-FVAL DEFAULT '100'
*" VALUE(ZFBDT_011) LIKE BDCDATA-FVAL DEFAULT '09/09/2010'
*" VALUE(AGBUK_012) LIKE BDCDATA-FVAL DEFAULT 'K101'
*" VALUE(AGKON_013) LIKE BDCDATA-FVAL DEFAULT '100000'
*" VALUE(AGKOA_014) LIKE BDCDATA-FVAL DEFAULT 'D'
*" VALUE(AGUMS_015) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(XNOPS_016) LIKE BDCDATA-FVAL DEFAULT ''
*" VALUE(ABPOS_017) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(ABPOS_018) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(ABPOS_019) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(ABPOS_020) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(XPOS1_01_021) LIKE BDCDATA-FVAL DEFAULT ''
*" VALUE(XPOS1_03_022) LIKE BDCDATA-FVAL DEFAULT 'X'
*" VALUE(SEL01_01_023) LIKE BDCDATA-FVAL DEFAULT '100000002'
*" VALUE(ABPOS_024) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(ABPOS_025) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(ABPOS_026) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(PSZAH_01_027) LIKE BDCDATA-FVAL DEFAULT ' 50'
*" VALUE(ABPOS_028) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(ABPOS_029) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(XPOS1_01_030) LIKE BDCDATA-FVAL DEFAULT ''
*" VALUE(XPOS1_03_031) LIKE BDCDATA-FVAL DEFAULT 'X'
*" VALUE(SEL01_01_032) LIKE BDCDATA-FVAL DEFAULT '100000000'
*" VALUE(ABPOS_033) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(ABPOS_034) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(ABPOS_035) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(PSZAH_01_036) LIKE BDCDATA-FVAL DEFAULT ' 50'
*" VALUE(ABPOS_037) LIKE BDCDATA-FVAL DEFAULT '1'
*" VALUE(DOC_LIST) TYPE ZTT_DOC_LIST
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
data wa_doc_list type zst_doc_list.
subrc = 0.
perform bdc_nodata using NODATA.
perform open_group using GROUP USER KEEP HOLDDATE CTU.
perform bdc_dynpro using 'SAPMF05A' '0122'.
perform bdc_field using 'BKPF-BLDAT'
BLDAT_001.
perform bdc_field using 'BKPF-BLART'
BLART_002.
perform bdc_field using 'BKPF-BUKRS'
BUKRS_003.
perform bdc_field using 'BKPF-BUDAT'
BUDAT_004.
perform bdc_field using 'BKPF-MONAT'
MONAT_005.
perform bdc_field using 'BKPF-WAERS'
WAERS_006.
perform bdc_field using 'FS006-DOCID'
DOCID_007.
perform bdc_field using 'RF05A-NEWBS'
NEWBS_008.
perform bdc_field using 'RF05A-NEWKO'
NEWKO_009.
*perform bdc_field using 'RF05A-NEWUM'
* SPL_GL_LINE_1. " Uncomment this line and the next screen '0301' values don't get populated.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWUM'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF05A' '0301'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-WRBTR'.
perform bdc_field using 'BDC_OKCODE'
'=SL'.
perform bdc_field using 'BSEG-WRBTR'
WRBTR_010.
perform bdc_field using 'BSEG-ZFBDT'
ZFBDT_011.
perform bdc_dynpro using 'SAPMF05A' '0710'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-AGUMS'.
perform bdc_field using 'BDC_OKCODE'
'=PA'.
perform bdc_field using 'RF05A-AGBUK'
AGBUK_012.
perform bdc_field using 'RF05A-AGKON'
AGKON_013.
perform bdc_field using 'RF05A-AGKOA'
AGKOA_014.
perform bdc_field using 'RF05A-AGUMS'
AGUMS_015.
perform bdc_field using 'RF05A-XNOPS'
XNOPS_016.
perform bdc_dynpro using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_OKCODE'
'=PART'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-ABPOS'.
perform bdc_field using 'RF05A-ABPOS'
ABPOS_017.
perform bdc_dynpro using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_OKCODE'
'=OMX'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-ABPOS'.
perform bdc_field using 'RF05A-ABPOS'
ABPOS_018.
perform bdc_dynpro using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_OKCODE'
'=Z-'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-ABPOS'.
perform bdc_field using 'RF05A-ABPOS'
ABPOS_019.
* here !!
loop at doc_list into wa_doc_list.
perform bdc_dynpro using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_OKCODE'
'=OSU'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-ABPOS'.
perform bdc_field using 'RF05A-ABPOS'
ABPOS_020.
perform bdc_dynpro using 'SAPDF05X' '2000'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-XPOS1(03)'.
perform bdc_field using 'BDC_OKCODE'
'=GO'.
perform bdc_field using 'RF05A-XPOS1(01)'
XPOS1_01_021.
perform bdc_field using 'RF05A-XPOS1(03)'
XPOS1_03_022.
perform bdc_dynpro using 'SAPDF05X' '0731'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-SEL01(01)'.
perform bdc_field using 'BDC_OKCODE'
'=GO'.
perform bdc_field using 'RF05A-SEL01(01)'
* SEL01_01_023.
wa_doc_list-belnr.
perform bdc_dynpro using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_OKCODE'
'=OMX'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-ABPOS'.
perform bdc_field using 'RF05A-ABPOS'
ABPOS_024.
perform bdc_dynpro using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_OKCODE'
'=Z+'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-ABPOS'.
perform bdc_field using 'RF05A-ABPOS'
ABPOS_025.
perform bdc_dynpro using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'DF05B-PSZAH(01)'.
perform bdc_field using 'RF05A-ABPOS'
ABPOS_026.
perform bdc_field using 'DF05B-PSZAH(01)'
* PSZAH_01_027.
wa_doc_list-WRBTR.
"here
perform bdc_dynpro using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_OKCODE'
'=OSE'.
perform bdc_field using 'BDC_CURSOR'
'DF05B-PSZAH(01)'.
perform bdc_field using 'RF05A-ABPOS'
ABPOS_028.
endloop.
*perform bdc_dynpro using 'SAPDF05X' '3100'.
*perform bdc_field using 'BDC_OKCODE'
* '=OSU'.
*perform bdc_field using 'BDC_CURSOR'
* 'RF05A-ABPOS'.
*perform bdc_field using 'RF05A-ABPOS'
* ABPOS_029.
*perform bdc_dynpro using 'SAPDF05X' '2000'.
*perform bdc_field using 'BDC_CURSOR'
* 'RF05A-XPOS1(03)'.
*perform bdc_field using 'BDC_OKCODE'
* '=GO'.
*perform bdc_field using 'RF05A-XPOS1(01)'
* XPOS1_01_030.
*perform bdc_field using 'RF05A-XPOS1(03)'
* XPOS1_03_031.
*perform bdc_dynpro using 'SAPDF05X' '0731'.
*perform bdc_field using 'BDC_CURSOR'
* 'RF05A-SEL01(01)'.
*perform bdc_field using 'BDC_OKCODE'
* '=GO'.
*perform bdc_field using 'RF05A-SEL01(01)'
** SEL01_01_032.
* wa_doc_list-WRBTR.
*perform bdc_dynpro using 'SAPDF05X' '3100'.
*perform bdc_field using 'BDC_OKCODE'
* '=OMX'.
*perform bdc_field using 'BDC_CURSOR'
* 'RF05A-ABPOS'.
*perform bdc_field using 'RF05A-ABPOS'
* ABPOS_033.
*perform bdc_dynpro using 'SAPDF05X' '3100'.
*perform bdc_field using 'BDC_OKCODE'
* '=Z+'.
*perform bdc_field using 'BDC_CURSOR'
* 'RF05A-ABPOS'.
*perform bdc_field using 'RF05A-ABPOS'
* ABPOS_034.
*perform bdc_dynpro using 'SAPDF05X' '3100'.
*perform bdc_field using 'BDC_OKCODE'
* '/00'.
*perform bdc_field using 'BDC_CURSOR'
* 'DF05B-PSZAH(01)'.
*perform bdc_field using 'RF05A-ABPOS'
* ABPOS_035.
*perform bdc_field using 'DF05B-PSZAH(01)'
* PSZAH_01_036.
*"here
perform bdc_dynpro using 'SAPDF05X' '3100'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
perform bdc_field using 'BDC_CURSOR'
'DF05B-PSZAH(01)'.
perform bdc_field using 'RF05A-ABPOS'
ABPOS_037.
perform bdc_transaction tables messtab
using 'FB05'
CTU
MODE
UPDATE.
if sy-subrc <> 0.
subrc = sy-subrc.
exit.
endif.
perform close_group using CTU.
ENDFUNCTION.
INCLUDE BDCRECXY .I agree with Sujay.......redo recording...
The reason of error maight be the GL Indicator.....
Check the combination of Posting Key & GL Indicator exits or not.......by posting directly thru txn FB05....
With the GL indicator & Posting key...might be the next screen no. changes.....just check...wild guess....
If so....Redo the recording for each combination of PK & GL Ind.
Thnx
RK -
Message table type strcture bdcmcgcoll problem
Hi experts,
I have done recording for sm 62 screen for creating events.
i have created events for that using "create" button from screen sm 62.
after recording i have created a functionmodule using recorded bdc.
In that i have used one
TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL.
In output i am getting thios error.
Message id:00.
Message NO:255.
Message :Function code cannot be selected.
Can you tell me how to solve this one.
Thanks.
Sailu""Local interface:
*" IMPORTING
*" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
*" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
*" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
*" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
*" VALUE(USER) LIKE APQI-USERID OPTIONAL
*" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
*" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
*" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
*" VALUE(EDIT_SYSEV_001) LIKE BDCDATA-FVAL DEFAULT ''
*" VALUE(SHOW_SYSEV_002) LIKE BDCDATA-FVAL DEFAULT '.'
*" VALUE(EDIT_USREV_003) LIKE BDCDATA-FVAL DEFAULT 'X'
*" VALUE(SHOW_USREV_004) LIKE BDCDATA-FVAL DEFAULT '.'
*" VALUE(EVENTID_005) LIKE BDCDATA-FVAL
*" DEFAULT 'Eventid'
*" VALUE(DESCRIPT_006) LIKE BDCDATA-FVAL
*" DEFAULT 'Description'
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
subrc = 0.
perform bdc_nodata using NODATA.
perform open_group using GROUP USER KEEP HOLDDATE CTU.
perform bdc_dynpro using 'SAPLBTCH' '1080'.
perform bdc_field using 'BDC_CURSOR'
'BTCH1080-EDIT_USREV'.
perform bdc_field using 'BDC_OKCODE'
'=DOIT'.
perform bdc_field using 'BTCH1080-EDIT_SYSEV'
EDIT_SYSEV_001.
perform bdc_field using 'BTCH1080-SHOW_SYSEV'
SHOW_SYSEV_002.
perform bdc_field using 'BTCH1080-EDIT_USREV'
EDIT_USREV_003.
perform bdc_field using 'BTCH1080-SHOW_USREV'
SHOW_USREV_004.
perform bdc_dynpro using 'SAPMSSY0' '0120'.
perform bdc_field using 'BDC_OKCODE'
'=NEW'.
perform bdc_dynpro using 'SAPLBTCH' '1090'.
perform bdc_field using 'BDC_CURSOR'
'BTCH1090-DESCRIPT'.
perform bdc_field using 'BDC_OKCODE'
'=SAVS'.
perform bdc_field using 'BTCH1090-EVENTID'
EVENTID_005.
perform bdc_field using 'BTCH1090-DESCRIPT'
DESCRIPT_006.
perform bdc_transaction tables messtab
using 'SM62'
CTU
MODE
UPDATE.
if sy-subrc <> 0.
subrc = sy-subrc.
exit.
endif.
perform close_group using CTU.
ENDFUNCTION. -
Wrapping a Transaction as an RFC
Hello everyone:
I have created RFC's on R/3 in order to invoke them from Java Webdynpro, however, I don't have RFC's now, I have pure transactions.... is there a way to call the transaction inside the RFC? Thanks
AlejandroAs you can see here..... This RFC function module does a BDC - CALL TRANSACTION to update delivery schedules.
function z_ep_update_delv_sched.
*"*"Local interface:
*" IMPORTING
*" VALUE(EBELN) TYPE EKET-EBELN
*" VALUE(EBELP) TYPE EKET-EBELP
*" VALUE(EINDT) TYPE EKET-EINDT
*" VALUE(MENGE) TYPE EKET-MENGE
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
data: mode type c value 'N',
update type c value 'S'.
data: begin of bdc_data,
ebeln(10) type c,
ebelp(5) type c,
lpein(1) type c,
eindt(10) type c,
menge(10) type c,
end of bdc_data.
clear bdcdata. refresh bdcdata.
clear messtab. refresh messtab.
clear bdc_data.
bdc_data-ebeln = ebeln.
bdc_data-ebelp = ebelp.
bdc_data-lpein = 'D'.
bdc_data-menge = menge.
call function 'CONVERT_DATE_TO_EXTERNAL'
exporting
date_internal = eindt
importing
date_external = bdc_data-eindt.
perform bdc_dynpro using 'SAPMM06E' '0205'.
perform bdc_field using 'BDC_CURSOR'
'RM06E-EVRTN'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RM06E-EVRTN'
bdc_data-ebeln.
perform bdc_dynpro using 'SAPMM06E' '0222'.
perform bdc_field using 'BDC_CURSOR'
'RM06E-EBELP'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RM06E-EBELP'
bdc_data-ebelp.
perform bdc_dynpro using 'SAPMM06E' '0222'.
perform bdc_field using 'BDC_CURSOR'
'RM06E-EVRTP(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ET'.
perform bdc_field using 'RM06E-EBELP'
bdc_data-ebelp.
perform bdc_field using 'RM06E-TCSELFLAG(01)'
'X'.
perform bdc_dynpro using 'SAPMM06E' '1117'.
perform bdc_field using 'BDC_CURSOR'
'RM06E-ETNR1'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RM06E-ETNR1'
'9999'.
perform bdc_dynpro using 'SAPMM06E' '1117'.
perform bdc_field using 'BDC_CURSOR'
'EKET-MENGE(03)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RM06E-LPEIN(03)'
bdc_data-lpein.
perform bdc_field using 'RM06E-EEIND(03)'
bdc_data-eindt.
perform bdc_field using 'EKET-MENGE(03)'
bdc_data-menge.
perform bdc_dynpro using 'SAPMM06E' '1117'.
perform bdc_field using 'BDC_CURSOR'
'RM06E-ETNR1'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
<b> call transaction 'ME38' using bdcdata mode mode
update update
messages into</b> messtab.
endfunction.
* Start new screen *
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
* Insert field *
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM.
REgards,
Rich Heilman -
Error Passing subrc to Fuinction
Hi All ,
I Am getting this error in an upgrade environment testing
Passing the formal parameter "SUBRC" to the field SY-SUBRC is not appropriate .
since SY-SUBRC is set by the statement,
This is while calling FM 'HR_READ_INFOTYPE'.
Thanks in advance for any input on the reason for error .
VinayHello Vinay
You try to fetch the value of EXPORTING parameter SUBRC into sy-subrc which is not correct because the sy-subrc will be set by the fm (either = 0 or in case of an exception = 1).
Not correct:
data: gt_pa0001 type STANDARD TABLE OF pa0001.
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
* TCLAS = 'A'
pernr = '12345678'
infty = '0001'
* BEGDA = '18000101'
* ENDDA = '99991231'
* BYPASS_BUFFER = ' '
* LEGACY_MODE = ' '
IMPORTING
SUBRC = sy-subrc
tables
infty_tab = gt_pa0001
EXCEPTIONS
INFTY_NOT_FOUND = 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.
Correct:
data: gt_pa0001 type STANDARD TABLE OF pa0001,
gd_rc type syst-subrc.
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
* TCLAS = 'A'
pernr = '12345678'
infty = '0001'
* BEGDA = '18000101'
* ENDDA = '99991231'
* BYPASS_BUFFER = ' '
* LEGACY_MODE = ' '
IMPORTING
SUBRC = gd_rc
tables
infty_tab = gt_pa0001
EXCEPTIONS
INFTY_NOT_FOUND = 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.
Regards
Uwe -
How to schedule a job in another system.
Hi,
Now i have an ABAP program, which run in system ABC, client 001. i want to schedule a job in the program, with the function modules JOB_OPEN, JOB_SUBMIT, and JOB_CLOSE. But this job should run in ABC/002.
How to write code?
Who can help me on the requirement, or provide me another new solution except event trigger?
Thanks & Best Regards,
JohnneyHere is the code. It works fine..
FUNCTION Z_F_TRIGGER_REPORT.
""Local Interface:
*" IMPORTING
*" VALUE(I_PROG) TYPE D010SINF-PROG
*" VALUE(I_VARIANT) TYPE VARIS-VARIANT
*" VALUE(I_MODE) TYPE CHAR01
*" EXPORTING
*" VALUE(E_SUBRC) TYPE SYST-SUBRC
*" VALUE(E_MSG) TYPE CHAR80
Functio ID : Z_F_TRIGGER_REPORT
TITLE : Report Trigger Tool
Create Date: 15.03.2004
Author : Denis Vieira
Ownership : For the exclusive use of the Procter & Gamble Company
Description:
The purpose of this function module is to trigger programs
requested remotely.
AUTHORIZATION CHECKS
OBJECT AUTHORITY FIELDS ABAP FIELDS
| |
CHANGE HISTORY *
DATE | Name | Description | Reference *
29.Jun.2006 | BA4513 | Unicode conversion and upgrade | SPK290606
| | to My SAP ERP |
**eject.
Check if selected program exists in the destination file
SELECT SINGLE SUBC
FROM D010SINF
INTO D010SINF-SUBC
WHERE PROG EQ I_PROG
AND R3STATE EQ C_A.
IF SY-SUBRC NE C_0.
MOVE C_2 TO E_SUBRC.
MOVE 'Report does not exist in destination system'(M01) TO E_MSG.
EXIT.
ENDIF.
Check if program request is an executable program
IF D010SINF-SUBC NE C_1.
MOVE C_2 TO E_SUBRC.
MOVE 'Report is not an executable program'(M02) TO E_MSG.
EXIT.
ENDIF.
Check if selected variant exists in the destination file
SELECT COUNT( * )
FROM VARIS
INTO W_COUNT
WHERE REPORT EQ I_PROG
AND VARIANT EQ I_VARIANT
AND DYNNR EQ C_1000.
IF W_COUNT EQ C_0.
MOVE C_2 TO E_SUBRC.
MOVE 'Variant does not exist in destination system'(M03) TO E_MSG.
EXIT.
ENDIF.
IF I_MODE EQ C_B.
PERFORM 0100_BACKGROUND USING I_PROG I_VARIANT
CHANGING E_MSG E_SUBRC.
ELSE.
PERFORM 0200_FOREGROUND USING I_PROG I_VARIANT
CHANGING E_MSG E_SUBRC.
ENDIF.
ENDFUNCTION.
*eject
*& Form 0100_background
Executes Selected program in BackGround Mode VIA JOB
*Block commented from here SPK290606
*FORM 0100_BACKGROUND USING L_PROG L_VARIANT
CHANGING L_MSG L_SUBRC.
*Block commented till here SPK290606
*Block added from here SPK290606
FORM 0100_BACKGROUND USING L_PROG LIKE D010SINF-PROG
L_VARIANT LIKE VARIS-VARIANT
CHANGING L_MSG TYPE CHAR80
L_SUBRC TYPE SYST-SUBRC.
*Block added till here SPK290606
CONCATENATE C_AREA
C_UND
L_PROG
C_UND
SY-DATUM
C_UND
SY-UZEIT
INTO W_JOBNAME.
Create a JOB and Get the Number for further execution
CALL FUNCTION 'JOB_OPEN'
EXPORTING
JOBNAME = W_JOBNAME
IMPORTING
JOBCOUNT = W_JOBCOUNT.
IF SY-SUBRC NE C_0.
MOVE C_2 TO L_SUBRC.
MOVE 'Error opening job'(M07) TO L_MSG.
EXIT.
ENDIF.
Submit program
SUBMIT (L_PROG)
USING SELECTION-SET L_VARIANT
VIA JOB W_JOBNAME NUMBER W_JOBCOUNT
AND RETURN.
IF SY-SUBRC NE C_0.
MOVE C_2 TO L_SUBRC.
MOVE 'Error Submitting Job'(M06) TO L_MSG.
EXIT.
ENDIF.
Closes job to start its processing
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = W_JOBCOUNT
JOBNAME = W_JOBNAME
STRTIMMED = 'X'.
IF SY-SUBRC NE C_0.
MOVE C_2 TO L_SUBRC.
MOVE 'Error closing job'(M08) TO L_MSG.
EXIT.
ENDIF.
MOVE C_0 TO L_SUBRC.
MOVE 'Program Submitted in Background Mode'(M09) TO L_MSG.
ENDFORM.
*eject
*& Form 0200_foreground
Executes Selected program in ForeGround Mode VIA Submit
*Block commented from here SPK290606
*FORM 0200_FOREGROUND USING L_PROG L_VARIANT
CHANGING L_MSG L_SUBRC.
*Block commented till here SPK290606
*Block added from here SPK290606
FORM 0200_FOREGROUND USING L_PROG LIKE D010SINF-PROG
L_VARIANT LIKE VARIS-VARIANT
CHANGING L_MSG TYPE CHAR80
L_SUBRC TYPE SYST-SUBRC.
*Block added till here SPK290606
SUBMIT (L_PROG) USING SELECTION-SET L_VARIANT
EXPORTING LIST TO MEMORY AND RETURN.
IF SY-SUBRC EQ C_0.
MOVE C_0 TO L_SUBRC.
MOVE 'Report submitted successfully'(M04) TO L_MSG.
ELSE.
MOVE C_2 TO L_SUBRC.
MOVE 'Error submitting report'(M05) TO L_MSG.
ENDIF.
ENDFORM.
Maybe you are looking for
-
HT204088 what can I do if the billing item is wrong?
I have bought a sticker from LINE but the list of purchase appears two items as below, what can i do to cancel one of them? LINE, Don't Lose Your Soul! Report a Problem NAVER JAPAN In App Purchase NT$ 60 LINE, Don't Lose Your Soul! Report
-
I have a table of mainly cells with text but I am reserving one cell for a head shot. How to place a photo in a table cell or what is a workaround?
-
Hi Gurus, I would like to set up segment reporting using Report painter. The format I would like is the segments going across at the top, with my accounts at the bottom. Can anyone help me with this Regards Johan
-
Hi All, I have a requirement like all the input variable of BPEL Notification process have to be sent in the mail body. But when i use concat function I am getting error as 'Invalid XQuery Expression'. I have used concat like Concat('Hi the of the Cu
-
Since the latest iphone 5.1 update I get 42404 error in itunes
Hi, My iPhone 4 updated the latest software iOS 5.0.1 via the phone, and now itunes cannot read the iPhone info and says there is an 42404 error. Can anybody help please. I have uninstalled itunes and reninstalled, but the problem was stiil there. Th