Error in BDC session for tcode MR21
Hello all,
I have to create one BDC session program for change in valuation price.
i have following input parameter :
Plant Article Price, Dec 2 Price unit
0690 000000000906671600 00000021207 00100
the price is 212,07 a decimal sign is not included
i have created one program but its not working.its giving runtime error CONVT_NO_NUMBER
Edited by: Sujeet Mishra on Apr 22, 2009 3:07 PM
LOOP AT it_final.
*perform open_dataset using dataset.
*perform open_dataset using p_file.
perform open_group.
*do.
*read dataset dataset into record.
*if sy-subrc <> 0. exit. endif.
perform bdc_dynpro using 'SAPRCKM_MR21' '0201'.
perform bdc_field using 'BDC_CURSOR'
'MR21HEAD-BUDAT'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
*perform bdc_field using 'MR21HEAD-BUDAT'
record-BUDAT_001.
perform bdc_field using 'MR21HEAD-WERKS'
IT_FINAL-WERKS.
*perform bdc_field using 'MR21HEAD-SCREEN_VARIANT'
record-SCREEN_VARIANT_003.
perform bdc_dynpro using 'SAPRCKM_MR21' '0201'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'BDC_CURSOR'
'CKI_MR21_0250-NEWVALPR(01)'.
*perform bdc_field using 'MR21HEAD-SCREEN_VARIANT'
record-SCREEN_VARIANT_004.
perform bdc_field using 'CKI_MR21_0250-MATNR(01)'
IT_FINAL-MATNR.
*perform bdc_field using 'CKI_MR21_0250-BWTAR(01)'
record-BWTAR_01_006.
*perform bdc_field using 'CKI_MR21_0250-NEWVALPR(01)'
IT_FINAL-PRICE.
perform bdc_dynpro using 'SAPRCKM_MR21' '0201'.
perform bdc_field using 'BDC_OKCODE'
'=SAVE'.
perform bdc_field using 'BDC_CURSOR'
'CKI_MR21_0250-MATNR(02)'.
*perform bdc_field using 'MR21HEAD-SCREEN_VARIANT'
record-SCREEN_VARIANT_008.
perform bdc_transaction using 'MR21'.
perform bdc_dynpro using 'SAPRCKM_MR21' '0201'.
*perform bdc_field using 'BDC_CURSOR'
'MR21HEAD-BUDAT'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
*perform bdc_field using 'MR21HEAD-BUDAT'
record-BUDAT_009.
perform bdc_field using 'MR21HEAD-WERKS'
IT_FINAL-WERKS.
*perform bdc_field using 'MR21HEAD-SCREEN_VARIANT'
record-SCREEN_VARIANT_011.
perform bdc_dynpro using 'SAPRCKM_MR21' '0201'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'BDC_CURSOR'
'CKI_MR21_0250-NEWVALPR(01)'.
*perform bdc_field using 'MR21HEAD-SCREEN_VARIANT'
record-SCREEN_VARIANT_012.
perform bdc_field using 'CKI_MR21_0250-MATNR(01)'
IT_FINAL-MATNR.
*perform bdc_field using 'CKI_MR21_0250-BWTAR(01)'
record-BWTAR_01_014.
perform bdc_field using 'CKI_MR21_0250-NEWVALPR(01)'
IT_FINAL-PRICE.
perform bdc_dynpro using 'SAPRCKM_MR21' '0201'.
perform bdc_field using 'BDC_OKCODE'
'=SAVE'.
perform bdc_field using 'BDC_CURSOR'
'CKI_MR21_0250-MATNR(02)'.
*perform bdc_field using 'MR21HEAD-SCREEN_VARIANT'
record-SCREEN_VARIANT_016.
perform bdc_transaction using 'MR21'.
*enddo.
perform close_group.
*perform close_dataset using dataset.
*perform close_dataset using p_file.
ENDLOOP.
Edited by: Sujeet Mishra on Apr 22, 2009 3:09 PM
Edited by: Sujeet Mishra on Apr 23, 2009 5:56 AM
Hello
my amount field code
perform bdc_field using 'CKI_MR21_0250-NEWVALPR(01)'
IT_FINAL-NEWVALPR.
is giving dump.
my declaration are like below :
Generated data section with specific formatting - DO NOT CHANGE ***
data: begin of record,
data element: BUDAT
BUDAT_001(010),
data element: WERKS_D
WERKS_002(004),
data element: SCREEN_VARIANT
SCREEN_VARIANT_003(030),
data element: SCREEN_VARIANT
SCREEN_VARIANT_004(030),
data element: MATNR
MATNR_01_005(018),
data element: BWTAR_D
BWTAR_01_006(010),
data element: VALPR
NEWVALPR_01_007(015),
data element: SCREEN_VARIANT
SCREEN_VARIANT_008(030),
end of record.
End generated data section ***
data: begin of it_final occurs 0,
BUDAT TYPE MR21HEAD-BUDAT,
WERKS TYPE MR21HEAD-WERKS,
SCREEN_VARIANT TYPE MR21HEAD-SCREEN_VARIANT,
SCREEN_VARIANT_004 TYPE MR21HEAD-SCREEN_VARIANT,
MATNR TYPE CKI_MR21_0250-MATNR,
BWTAR TYPE CKI_MR21_0250-BWTAR,
NEWVALPR TYPE CKI_MR21_0250-NEWVALPR,
SCREEN_VARIANT_008 TYPE MR21HEAD-SCREEN_VARIANT,
end of it_final.
please guide me.
thanks,
sujeet
Edited by: Sujeet Mishra on Apr 23, 2009 12:44 PM
Similar Messages
-
Error in BDC session Insert.....
Hi All,
Guys iam running BDC pgm for MEK1 create condition records transaction and i get an error while executing through BDC_INSERT. Its an internal error with text "Error in BDC session Insert..".The text file iam using contains 26 line items for the first contract created earlier and 30 line items for the second record. My concern is it only happens for this text file with multiple or more line items.
While debugging i have observed that after the session has been created the first bdc insert goes well for the first header record and then it fails for the second record with an internal error "Error in BDC session Insert..".
Does anyone have enountered such issue before or is it related to limited number of line items in MEK1 transaction.
Any help would be appreciated.
Thanks,
Avinashreport ZSESSION1
no standard page heading line-size 255.
*include bdcrecx1.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE .
TYPES: BEGIN OF TYP_STU,
Z_STUDID TYPE ZSTUD1-Z_STUDID,
Z_STUDNAME TYPE ZSTUD1-Z_STUDNAME,
Z_STUDAGE TYPE ZSTUD1-Z_STUDAGE,
END OF TYP_STU.
DATA: IT_STU TYPE STANDARD TABLE OF TYP_STU,
GW_STU TYPE TYP_STU,
V_PATH TYPE STRING.
PARAMETERS SUREN TYPE IBIPPARMS-PATH OBLIGATORY.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SUREN .
PERFORM GETFILE USING SUREN.
V_PATH = SUREN.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = V_PATH
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = IT_STU
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
DEST = FILLER8
GROUP = 'SESSION1'
HOLDDATE = FILLER8
KEEP = 'X'
USER = SY-UNAME
RECORD = FILLER1
PROG = SY-CPROG
DCPFM = '%'
DATFM = '%'
IMPORTING
QID =
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
START-OF-SELECTION.
LOOP AT IT_STU INTO GW_STU.
REFRESH BDCDATA.
*perform open_group.
perform bdc_dynpro using 'SAPMSRD0' '0102'.
perform bdc_field using 'BDC_CURSOR'
'RSRD1-TBMA_VAL'.
perform bdc_field using 'BDC_OKCODE'
'=EDIT'.
perform bdc_field using 'RSRD1-TBMA'
'X'.
perform bdc_field using 'RSRD1-TBMA_VAL'
'ZSTUD1'.
perform bdc_dynpro using 'SAPLSD41' '2200'.
perform bdc_field using 'BDC_CURSOR'
'DD02D-DDTEXT'.
perform bdc_field using 'BDC_OKCODE'
'=TDED'.
perform bdc_field using 'DD02D-DDTEXT'
'Stud details'.
perform bdc_dynpro using '/1BCDWB/DBZSTUD1' '0101'.
perform bdc_field using 'BDC_CURSOR'
'ZSTUD1-Z_STUDAGE'.
perform bdc_field using 'BDC_OKCODE'
'=SAVE'.
perform bdc_field using 'ZSTUD1-Z_STUDID'
GW_STU-Z_STUDID .
perform bdc_field using 'ZSTUD1-Z_STUDNAME'
GW_STU-Z_STUDNAME .
perform bdc_field using 'ZSTUD1-Z_STUDAGE'
GW_STU-Z_STUDAGE .
perform bdc_dynpro using '/1BCDWB/DBZSTUD1' '0101'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'ZSTUD1-Z_STUDID'.
perform bdc_dynpro using 'SAPLSD41' '2200'.
perform bdc_field using 'BDC_CURSOR'
'DD02D-DDTEXT'.
perform bdc_field using 'BDC_OKCODE'
'=WB_BACK'.
perform bdc_field using 'DD02D-DDTEXT'
'Stud details'.
perform bdc_dynpro using 'SAPMSRD0' '0102'.
perform bdc_field using 'BDC_CURSOR'
'RSRD1-TBMA_VAL'.
perform bdc_field using 'BDC_OKCODE'
'=BACK'.
perform bdc_field using 'RSRD1-TBMA'
'X'.
perform bdc_field using 'RSRD1-TBMA_VAL'
'ZSTUD1'.
*perform bdc_transaction using 'SE11'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'SE11'
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
SIMUBATCH = ' '
CTUPARAMS = ' '
TABLES
DYNPROTAB = BDCDATA
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*ENDLOOP.
*perform close_group.
*& Form bdc_dynpro
text
-->P_0207 text
-->P_0208 text
*FORM bdc_dynpro USING VALUE(P_0207)
VALUE(P_0208).
*ENDFORM. " bdc_dynpro
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
*& Form bdc_field
text
-->P_0212 text
-->P_0213 text
*FORM bdc_field USING VALUE(P_0212)
VALUE(P_0213).
*ENDFORM. " bdc_field
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM .
FORM GETFILE USING SUREN.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
IMPORTING
FILE_NAME = SUREN.
ENDFORM. -
Report errors from BDC sessions
Hi Experts,
I am writing a BDC program that uses the session method for tcode XD02
and after which i am using SUBMIT RSBDCSUB to schedule the sessions as a background job.
Now if i get errors in the sessions, i can see them in SM35 but
how do i report them on my report for the user?
What should i code in my program after the SUMBIT RSBDCSUB to report the errors <b>without using</b> CALL Transaction.
Thanks
DanyHi,
Use addition EXPORTING LIST TO MEMORY with SUBMIT <i>program_name</i> AND RETURN.
It will export the log to the ABAP memory. After the session is processed, control will come back to the program. Then, use function module 'LIST_FROM_MEMORY' to get the log into an internal table. Once, your internal table is populated, display it as a list for the user.
Reward points if the answer is helpful.
Regards,
Mukul -
How to handle the errors in BDC Session method
Hi All,
I am uploading Material Master (MM01) records using BDC Session Method.my problem is when i am running the program, all the error records are going to flat file.how can i correcting the error records and after correction how can i re-process the error records.tell me with example.
i have around 70,000 records in my flat file.Hi,
I am attaching few threads.Hope these will help you.
If there are any error records in session, all those error records will get poulated in log .SM35 and after the session is completed , u can see error records which can be corrected and reprocessed again
We have the structures BDCLD and BDCLM, which will capture the log details inthe session. Firstly, sesssion should be processed. After that log will be created. Then caputure the information into an internal table using BDCLM and BDCLD.
and refer the link.
error correction in bdc session
regards
Madhu -
Error in BDC session processing
hi all,
I am running the BDC session method. while running the session the interface throws warning message. If it gives more than one warning message in background the session goes into error. is there any way to skip these and still continue the processing of session in backgroundPraveen,
By default all the warnings are suppressed irrespective of the number of warnings.
You must be encountering a error not a warning
Regards,
Ravi
Note : Please mark the helpful answers -
hi
can anyone give me q asked on BDc session metod and call transtion method
and what is tcode to check the session ..created?
regards
AroraHi,
Check this links..
http://www.geekinterview.com/Interview-Questions/SAP-R-3/BDC
http://www.akaas.net/faq/sap/bdc-questions.htm
http://techpreparation.com/sap-bdc-interview-questions-answers.htm
http://www.ittestpapers.com/articles/597/1/SAP-BDC-Interview-Questions-and-Answers/Page1.html
Regards,
Omkar. -
Error in BDC program for Block vendor in SAP R/3
Hello friends,
I wrote a BDC program to block vendor using FK02.
When I debug the program in <b>No screen</b> mode
the program gives a error 'No batch input data for screen SAPMSSY3 0131.
But the screen name and screen number is not available in the program.
When I execute without debugging in No screen mode, the program works correctly.
When I run in ALL screen mode, the program works correctly and the program does not prompt for SAPMSSY3 0131 screen.
Is there any solution for this problem.check this
... MODE mode
Effect
The processing mode can take the following values:
'A' Display screen
'E' Display only if an error occurs
'N' Do not display
<b>'P' Do not display; debugging possible</b>
If the MODE addition is omitted, then the processing mode is 'A'.
If a screen is displayed in processing mode 'E' because the system reached the end of the BDC data, the system automatically switches to processing mode 'A'.
If breakpoints are set in a transaction tcod called using the CALL TRANSACTION tcod USING itab variant, these are not actually reached in 'N' mode. The system tries to insert data in the Debugger screen; the call ends with SY-SUBRC = 1001 and the message "Batch input data is not available for screen SAPMSSY3 0131" (S 00 344).
Conversely, in 'P' mode, transaction screens are processed in the background (as in 'N' mode) and debugging is possible.
Regards
Prabhu -
ERROR IN BDC SESSION BACK GROUND ( USING PP03 T.CODE)
Hi Experts,
When i am executing the session ( pp03 T.Code) ,it is working fine in fore ground as well as in display errors mode. But it is not working in back ground mode.
it is raising the exception ( cntl-system-error).
I used flat file which is in the presentation server . I accessed it by gui_upload Function Module.
<b> I am also getting the error using data sets . After upload the presentation server data into one internal table .I sent it to application server using open data set ( transfer ) , after that i read the application server data using open dataset ( read )
into another internal table ( i declared with same structure of flat file ) .</b>
But this time also it is giving same error ( runtime exception).
Please tell me how can i handle using datasets . Its Very urgentttttttt
Please any body help meee ( If any one worked on this (pp03 T.code) ) .
Send the code or Inform the full detailsss as soon as possibleeee
regards ,
dattu malge.Hi,
Go to the transaction SM35 and select your session and then click the Process Button.
Here you select the Processing Mode as "Background".
It is not possible to execute the same session by more than one user at a same time.
RSBDCSUB is used to automate the processing of Batch input session.
Cheers,
Hakim -
Problem in doing BDC recording for Tcode FAGLSKF
Hi All,
I need to make postings for Statistical key figures. For this I need to make postings using transaction FAGLSKF.
Now my problem is that when I try to make recording for transaction FAGLSKF I could not see the values recorded for ITEM Data Table control.
Any one having any idea as what I am missing. Your suggestions would be really helpful.
Regards,
LalitHi Poorna,
Thanks a lot for the valueable feedback.
I checked the FMs mentioned by you. These FMs make the SKF posting but these FMs do not perform any kind of validations.
Like for example if I use tcode FAGLSKF and try to make some posting. In case I am giving some invalid input to this transaction ( e.g. wrong Statistical Key Figure Value ) , this t code does not allow us to post and immediateley thorows some error.
Where as I use FM FAGL_FAGLSKF_PN_POST, this FM makes an entry in the table FAGLSKF_PN without any validations.
This FM simply insert an entry to the table FAGLSKF_PN.
Any Idea how to overcome this. I want to make the validations in the same way as done using Tcode FAGLSKF.
Thanks a lot for your valueable inputs.
Regards,
Lalit -
Error in bdc uploading for transaction F-02
Hi all,
Iam uploading transactional data for the transaction F-02 using BDC call transaction.
I have recorded all the screens of F-02 and internal table with fields also declared.
While running the program, it is showing the error saying -- " Input value is longer than screen field "
In debugging, Iam getting all the data from flat file into the internal table.
Iam unable to identify where it has gone wrong.
Can anybody look into it.
Thanks and Regards,
Murali Krishna .TModerator message - Please search before asking - post locked
Rob -
Warning while processing the BDC session for ME11 - create info records
Hi,
I have succesfully created a BDC recording(SHDB) for ME11 transaction. but when I am trying to process the session(SM35) with file having correct data, I an getting a warning message" Please check Unit of measure and conversion factor" eventhogh correct values are being populated in the respective fields. Status of the run is shown as INCORRECT.
Any pointers on avoiding this warning message would be appreciated.
PS: I have tried putting an extra OK CODE with enter button, dint work....try to use transaction SXDA_TOOLS and Object type: BUS3003
Here you will find the standard batch-input program RM06IBI0 -
Creating session for the Error records
Hi Guys,
Iam posting some data using the Custom FM. If i get any errors out of that i need to create a BDC session for those errors.Can anyone throw some light on how to acheive this.
Regards,
Kittu.HI,
check this code
report zsh_recording_fk01 .
tables : lfa1 . " Vendor Master.
I N T E R N A L T A B L E - D E C L A R A T I O N *
data : begin of it_tab occurs 0,
lifnr(16), "account number of vendor
ktokk(4), "Vendor Number
anred(15), "Account Group
name1(35), "Name
sortl(10), "Sort field
land1(3) , "Land
spras(1), "Language Key
kunnr(10), "customer number
banks(3), "Bank country key
bankl(15), "Bank Key
bankn(18), "Bank Account Number
koinh(60), "Account Holder Name
banka(60), "Name of bank
provz(3), "region
end of it_tab.
data : begin of it_tab1 occurs 0,
banks(3), "Bank country key
bankl(15), "Bank Key
bankn(18), "Bank Account Number
koinh(60), "Account Holder Name
banka(60), "Name of bank
provz(3), "region
end of it_tab1.
DATA:it_BDCtab LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
ERROR MESSAGE TABLE
DATA:it_MSGtab LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
data: program type BDCDATA-PROGRAM,
dynpro type BDCDATA-dynpro,
fnam type BDCDATA-fnam,
fval type BDCDATA-fval.
S E L E C T I O N - S C R E E N *
selection-screen : begin of block bl1 with frame.
parameter : p_file type rlgrap-filename default
'C:\Vendor.txt.txt' obligatory,
p_file1 type rlgrap-filename default
'C:\Vendor1.txt.txt' obligatory.
selection-screen : end of block bl1.
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_get_help using p_file.
to get F4 help for p_file
perform f4_get_help1 using p_file1.
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.
perform bdc_upload1.
perform populate_bdc.
E N D O F S E L E C T I O N *
end-of-selection.
displaying fields which r uploaded from flat file.
perform display_report.
T O P _ O F _ P A G E *
top-of-page.
to display header in the report
perform header.
*& Form f4_get_help
text
-->P_P_FILE text
form f4_get_help using p_p_file.
call function 'F4_FILENAME'
exporting
program_name = syst-cprog
dynpro_number = syst-dynnr
FIELD_NAME = ' '
importing
file_name = p_p_file.
endform. " f4_get_help
*& Form bdc_upload
text
--> p1 text
<-- p2 text
form bdc_upload .
data: v_file type string.
v_file = p_file.
call function 'GUI_UPLOAD'
exporting
filename = v_file
filetype = 'ASC'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
tables
data_tab = it_tab
exceptions
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
others = 17.
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 display_report
text
--> p1 text
<-- p2 text
form display_report .
uline 1(86).
loop at it_tab .
format color 2.
write :/1 sy-vline,
2 it_tab-lifnr,
12 it_tab-ktokk ,
18 it_tab-anred ,
30 it_tab-name1 ,
55 it_tab-sortl ,
58 it_tab-land1 ,
72 it_tab-spras ,
76 it_tab-kunnr ,
88 it_tab-banks ,
94 it_tab-bankl ,
112 it_tab-bankn ,
132 it_tab-koinh ,
194 it_tab-banka ,
256 it_tab-provz ,
260 sy-vline.
endloop.
uline 1(86).
endform. " display_report
*& Form header
text
--> p1 text
<-- p2 text
form header .
uline 1(86).
format color col_heading.
write :/1 sy-vline,
2 'VEN.NO',
12 'ACC' ,
18 'TITLE' ,
30 'NAME' ,
55 'ST',
58 'LAND' ,
72 'L' ,
76 'CUSTNO',
88 'CKI',
94 'BANKKEY',
112 'B.NO',
132 'ACC HOLDER NAME',
194 'BANK NAME',
256 'reg',
260 sy-vline.
endform. " header
*& Form populate_bdc
text
form populate_bdc .
loop at it_tab.
perform build_screen_details using 'SAPMF02K' '0105'.
perform build_fields using: 'BDC_OKCODE' '/00',
'RF02K-LIFNR' it_tab-lifnr,
'RF02K-KTOKK' it_tab-ktokk.
perform build_screen_details using 'SAPMF02K' '0110'.
perform build_fields using: 'BDC_OKCODE' '/00',
'LFA1-ANRED' it_tab-anred,
'LFA1-NAME1' it_tab-name1,
'LFA1-SORTL' it_tab-sortl,
'LFA1-LAND1' it_tab-land1,
'LFA1-SPRAS' it_tab-spras.
perform build_screen_details using 'SAPMF02K' '0120'.
perform build_fields using: 'BDC_OKCODE' '/00'.
perform build_screen_details using 'SAPMF02K' '0130'.
perform build_fields using: 'BDC_OKCODE' '=BANK',
'LFBK-BANKS(01)' it_tab-banks,
'LFBK-BANKL(01)' it_tab-bankl,
'LFBK-BANKN(01)' it_tab-bankn,
'LFBK-KOINH(01)' it_tab-koinh.
perform build_screen_details using 'SAPLBANK' '0100'.
perform build_fields using: 'BDC_OKCODE' '=ENTR',
'BNKA-BANKA' it_tab-banka,
'BNKA-PROVZ' it_tab-provz.
perform build_screen_details using 'SAPMF02K' '0130'.
perform build_fields using: 'BDC_OKCODE' '=UPDA'.
endloop.
call transaction 'FK01' using it_bdctab mode 'A' update
'S' messages into it_msgtab.
clear it_bdctab.
refresh it_bdctab.
loop at it_msgtab.
perform format_message.
endloop.
endform. " populate_bdc
*& Form build_screen_details
text
form build_screen_details using p_program type BDCDATA-PROGRAM
p_dynpro type BDCDATA-dynpro.
it_BDCtab-PROGRAM = p_program. " Program Name
it_BDCtab-DYNPRO = p_dynpro. " Screen Number
it_BDCtab-DYNBEGIN = 'X'. " New screen
Append it_bdctab.
clear it_bdctab.
endform. " build_screen_details
*& Form build_fields
text
form build_fields using p_fnam
p_fval.
it_BDCtab-FNAM = p_fnam.
it_BDCtab-FVAL = p_fval.
Append it_bdctab.
clear it_bdctab.
endform. " build_fields
*& Form format_message
text
--> p1 text
<-- p2 text
form format_message .
call function 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = sy-langu
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = it_msgtab
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.
endform. " format_message
*& Form bdc_upload1
text
--> p1 text
<-- p2 text
form bdc_upload1 .
data : v_file1 type string.
v_file1 = p_file1.
call function 'GUI_UPLOAD'
exporting
filename = v_file1
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
tables
data_tab = it_tab1
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
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_upload1
*& Form f4_get_help1
text
-->P_P_FILE1 text
form f4_get_help1 using p_p_file1.
call function 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = p_p_file1
endform. " f4_get_help1
Regards,
Laxmi -
Passing BAPI Error Messages to BDC Session.
Hi,
Can any one drive the idea how to convert rather passing BAPI error messages into BDC session.
regards.Naveen,
I am sure you already have the logic of "If the call transaction is errored out you create a BDC session for the same data".
Now, when your BAPI fails, irrespective of the error, you need to build the BDCDATA table and pass the data to the session. So, I don't you really need to know the errors and pass them to the BDC Session.
Check the RETURN table of the BAPI, if it has got E / A / X error types then you can build the BDCDATA table and create the session.
Regards.
Ravi
Note : Please mark the helpful answers and close the thread if the issue is resolved. -
BDC Session Saves Data Only in Foreground
I have created a bdc program to create an SM35 session of CA02. The wierd thing is that the session will run in background with no errors, but the data is not updated. If I run the session in foreground the data is updated. Have I overlooked something simple?
To see what is going on, I commented out the save at the end to force it to error out. If I run the session in foreground the data is changed. If I run it in display errors only mode, the data is not changed. So it seems not to have anything to do with the save at the end. Perhaps it is now appropriate to post some of the code.
After the data file is uploaded into the itab and the bdc group has been created, for each routing group I do the following:
PERFORM dynpro USING:
* *** Initial Screen ***
'X' 'SAPLCPDI' '1010',
' ' 'RC271-PLNNR' gk_rec-groupnum,
' ' 'BDC_OKCODE' '/00',
* *** Header Overview ***
'X' 'SAPLCPDI' '1200',
' ' 'BDC_OKCODE' 'MTUE'. "open material allocation screen
Then for each material allocation the data file says to delete:
PERFORM dynpro USING:
* *** Material Allocation ***
'X' 'SAPLCZDI' '1010',
' ' 'RC27X-ENTRY_ACT' gv_entry, "gv_entry holds row number to delete
' ' 'BDC_OKCODE' 'ENT1', "position button
'X' 'SAPLCZDI' '1010',
' ' 'BDC_CURSOR' 'MAPL-MATNR(01)', "place cursor on the line to delete
' ' 'BDC_OKCODE' 'LOE', "delete line
'X' 'SAPLSPO1' '0100',
' ' 'BDC_OKCODE' 'YES'. "confirm dialog
then at the end of the session:
PERFORM dynpro USING:
'X' 'SAPLCZDI' '1010',
' ' 'BDC_OKCODE' 'BACK', "leave material allocation screen
'X' 'SAPLCPDI' '1200',
' ' 'BDC_OKCODE' 'BU'. "save
Then, I insert into the bdc session using tcode ca02. All this given the following subroutine:
FORM dynpro USING p_dynbegin TYPE any p_name TYPE any p_value TYPE any.
CLEAR gk_bdc_tab.
IF p_dynbegin = 'X'.
MOVE: p_name TO gk_bdc_tab-program,
p_value TO gk_bdc_tab-dynpro,
'X' TO gk_bdc_tab-dynbegin.
ELSE.
MOVE: p_name TO gk_bdc_tab-fnam,
p_value TO gk_bdc_tab-fval.
ENDIF.
APPEND gk_bdc_tab TO gt_bdc_tab.
ENDFORM.
It seems that the cursor isn't specifying the line to delete when run in background. -
Hi,
Eplained BDC Session Method
flat file upload into sapABAP BDC SESSION METHOD SAMPLE CODE
pool of form routines
include zmppn001.
Define BDC Table Structure
data: begin of itab_bdc_tab occurs 0.
include structure bdcdata.
data: end of itab_bdc_tab.
Input record layout of Leagcy File
data: begin of itab_xcel occurs 0,
matnr(18) type c,
werks(4) type c,
alnag(2) type c,
verid(4) type c,
text1(40) type c,
bstmi like mkal-bstmi,
bstma like mkal-bstma,
adatu(10) type c,
bdatu(10) type c,
stlal(2) type c,
stlan(1) type c,
serkz(1) type c,
mdv01(8) type c,
elpro(4) type c,
alort(4) type c,
end of itab_xcel.
data: begin of lt_pp04_cache occurs 0,
matnr like itab_xcel-matnr,
werks like itab_xcel-werks,
alnag like itab_xcel-alnag,
plnnr like mapl-plnnr,
arbpl like crhd-arbpl,
ktext like crtx-ktext,
end of lt_pp04_cache.
data: v_ssnnr(4) type n,
v_lines_in_xcel like sy-tabix,
v_ssnname like apqi-groupid,
v_trans_in_ssn type i,
wa_xcel LIKE itab_xcel,
l_tabix like sy-tabix,
v_matnr like rc27m-matnr,
v_plnnr like mapl-plnnr,
v_plnal like mapl-plnal,
v_tcode like sy-tcode value 'C223',
v_plnty like plas-plnty value 'R',
v_objty like crhd-objty value 'A',
v_plpo_steus like plpo-steus value 'PP04',
v_verwe like crhd-verwe value '0007'.
Parameters
selection-screen: skip 3.
selection-screen: begin of block 1 with frame.
parameters: p_name like rlgrap-filename
default 'C:\My Documents\InputFile.txt'
obligatory,
bdc session name prefix
p_bdcpfx(6) default 'ZPVCRT'
obligatory,
number for transction per BDC session
p_trnssn type i
default 2000 obligatory,
retain the BDC session after successfull execution
p_keep like apqi-qerase
default 'X',
user who will be executing BDC session
p_uname like apqi-userid
default sy-uname
obligatory.
selection-screen: end of block 1.
possible entry list (F4 dropdown) for input file name
at selection-screen on value-request for p_name.
*-SELECT FILE FROM USERS LOCAL PC
call function 'WS_FILENAME_GET'
exporting
DEF_FILENAME = ' '
def_path = 'C:\Temp\'
mask = ',.,..'
mode = 'O'
title = 'Select File '(007)
importing
filename = p_name
RC =
exceptions
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
others = 5.
if sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
begin the show
start-of-selection.
read data from input file
perform transfer_xcel_to_itab.
loop at itab_xcel.
hang on to xcel line num
l_tabix = sy-tabix.
each line in the xcel file marks begining of new prod.version defn
if num-of-trnas-in-session = 0, create new BDC session
if v_trans_in_ssn is initial.
perform bdc_session_open.
endif.
begin new bdc script for rtg create trans
fill in bdc-data for prod.version maintenance screens
perform bdc_build_script.
insert the bdc script as a BDC transaction
perform bdc_submit_transaction.
keep track of how many BDC transactions were inserted in the BDC
session
add 1 to v_trans_in_ssn.
if the user-specified num of trans in BDC session is reached OR
if end of input file is reached, close the BDC session
if v_trans_in_ssn = p_trnssn or
l_tabix = v_lines_in_xcel.
perform bdc_session_close.
clear v_trans_in_ssn.
endif.
endloop.
top-of-page.
call function 'Z_HEADER'
EXPORTING
FLEX_TEXT1 =
FLEX_TEXT2 =
FLEX_TEXT3 =
FORM TRANSFER_XCEL_TO_ITAB *
Transfer Xcel Spreadsheet to SAP Internal Table *
form transfer_xcel_to_itab.
Read the tab-delimited file into itab
call function 'WS_UPLOAD'
exporting
filename = p_name
filetype = 'DAT'
IMPORTING
filelength = flength
tables
data_tab = itab_xcel
exceptions
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
others = 8.
if sy-subrc = 0.
sort the data
sort itab_xcel by matnr werks.
clear v_lines_in_xcel.
if no data in the file - error out
describe table itab_xcel lines v_lines_in_xcel.
if v_lines_in_xcel is initial.
write: / 'No data in input file'.
stop.
endif.
else.
if file upload failed - error out
write: / 'Error reading input file'.
stop.
endif.
endform.
FORM BDC_SESSION_OPEN *
Open BDC Session *
form bdc_session_open.
create bdc session name = prefix-from-selectn-screen + nnnn
add 1 to v_ssnnr.
concatenate p_bdcpfx v_ssnnr into v_ssnname.
open new bdc session
call function 'BDC_OPEN_GROUP'
exporting
client = sy-mandt
group = v_ssnname
keep = p_keep
user = p_uname
exceptions
client_invalid = 1
destination_invalid = 2
group_invalid = 3
group_is_locked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
others = 11.
endform.
FORM BDC_BUILD_SCRIPT *
Build BDC *
form bdc_build_script.
data: l_arbpl like crhd-arbpl,
l_text1 like mkal-text1,
l_mdv01 like mkal-mdv01,
l_mapl like mapl.
clear bdc-data itab - begin of new bdc transaction
clear itab_bdc_tab.
refresh itab_bdc_tab.
read material cross reference tables to determine sap part#
clear : v_matnr, v_plnnr, v_plnal.
perform read_matnr_cross_ref using itab_xcel-matnr
itab_xcel-werks
changing v_matnr.
determine the version description to use
if itab_xcel-text1 is initial.
l_text1 = itab_xcel-verid.
else.
l_text1 = itab_xcel-text1.
endif.
determine the routing group# and group ctr# to use
perform read_routing .
determine the production line to use
if itab_xcel-mdv01 is initial.
if not provided in the file then:
prod line = work ctr on the last PP04 op of the rtg determined above
perform read_wc_on_last_pp04 using v_plnnr v_plnal
changing l_mdv01.
NOTE: when executing the above form\routine, if v_plnnr is initial
or v_plnal is initial, THEN l_mdv01 will automatically be
returned blank (ie initial)
else.
l_mdv01 = itab_xcel-mdv01.
endif.
build bdc script
perform bdc_build_script_record
fill in initial screen
using: 'X' 'SAPLCMFV' '1000',
' ' 'BDC_OKCODE' '=ENTE',
' ' 'MKAL-WERKS' itab_xcel-werks,
' ' 'MKAL-MATNR' v_matnr,
' ' 'MKAL_ADMIN-DISPO' space,
' ' 'MKAL-PLNNR' space,
' ' 'MKAL_ADMIN-STTAG' space,
' ' 'MKAL-PLNNG' space,
' ' 'MKAL-MDV01' space,
' ' 'MKAL-PLNNM' space,
click create button on initial screen and go to detail screen
'X' 'SAPLCMFV' '1000',
' ' 'BDC_OKCODE' '=CREA',
fill in the detail screen and go back to initial screen
'X' 'SAPLCMFV' '2000',
' ' 'BDC_OKCODE' '=CLOS',
' ' 'MKAL_EXPAND-MATNR' v_matnr,
' ' 'MKAL_EXPAND-VERID' itab_xcel-verid,
' ' 'MKAL_EXPAND-TEXT1' l_text1,
' ' 'MKAL_EXPAND-BSTMI' itab_xcel-bstmi,
' ' 'MKAL_EXPAND-BSTMA' itab_xcel-bstma,
' ' 'MKAL_EXPAND-ADATU' itab_xcel-adatu,
' ' 'MKAL_EXPAND-BDATU' itab_xcel-bdatu,
' ' 'MKAL_EXPAND-PLTYG' v_plnty,
' ' 'MKAL_EXPAND-PLNNG' v_plnnr,
' ' 'MKAL_EXPAND-ALNAG' v_plnal,
' ' 'MKAL_EXPAND-STLAL' itab_xcel-stlal,
' ' 'MKAL_EXPAND-STLAN' itab_xcel-stlan,
' ' 'MKAL_EXPAND-SERKZ' itab_xcel-serkz,
' ' 'MKAL_EXPAND-MDV01' l_mdv01,
' ' 'MKAL_EXPAND-ELPRO' itab_xcel-elpro,
' ' 'MKAL_EXPAND-ALORT' itab_xcel-alort,
save the production version from initial screen
'X' 'SAPLCMFV' '1000',
' ' 'BDC_OKCODE' '=SAVE'.
endform.
FORM BDC_SUBMIT_TRANSACTION *
Submit BDC Session *
form bdc_submit_transaction.
Load BDC script as a trqansction in BDC session
call function 'BDC_INSERT'
exporting
tcode = v_tcode
tables
dynprotab = itab_bdc_tab
exceptions
internal_error = 01
not_open = 02
queue_error = 03
tcode_invalid = 04.
endform.
FORM BDC_BUILD_SCRIPT_RECORD *
form bdc_build_script_record using dynbegin name value.
clear itab_bdc_tab.
if dynbegin = 'X'.
move: name to itab_bdc_tab-program,
value to itab_bdc_tab-dynpro,
'X' to itab_bdc_tab-dynbegin.
else.
move: name to itab_bdc_tab-fnam,
value to itab_bdc_tab-fval.
shift itab_bdc_tab-fval left deleting leading space.
endif.
append itab_bdc_tab.
endform.
FORM BDC_SESSION_CLOSE *
Close BDC Session *
form bdc_session_close.
close the session
call function 'BDC_CLOSE_GROUP'
exceptions
not_open = 1
queue_error = 2
others = 3.
skip 2.
if sy-subrc ne 0.
write: / 'Error Closing BDC Session ' , 'RETURN CODE: ', sy-subrc.
else.
write : / 'Session created:', v_ssnname,
50 '# of transactions:', v_trans_in_ssn.
endif.
endform.
*& Form read_routing_cache
*FORM read_routing_cache USING pi_matnr
pi_werks
pi_alnag
pi_verid
pi_mdv01.
DATA: BEGIN OF lt_plpo OCCURS 0,
vornr LIKE plpo-vornr,
objty LIKE crhd-objty,
objid LIKE crhd-objid,
arbpl LIKE crhd-arbpl,
END OF lt_plpo,
l_mapl_plnnr LIKE mapl-plnnr.
determine the routing group#
CLEAR lt_pp04_cache.
chk if its in the cache first, if not then get it from MAPL table
and put it in the cache
READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
werks = pi_werks
alnag = pi_alnag.
IF sy-subrc = 0.
do nothing - lt_pp04_cache header line has rtg#
ELSE.
get the routing group # from MAPL
SELECT plnnr INTO l_mapl_plnnr
FROM mapl UP TO 1 ROWS
WHERE matnr = pi_matnr AND
werks = pi_werks AND
plnty = 'R' AND
plnal = pi_alnag AND
loekz = space.
ENDSELECT.
put it in the cache internal table
IF NOT l_mapl_plnnr IS INITIAL.
lt_pp04_cache-matnr = pi_matnr.
lt_pp04_cache-werks = pi_werks.
lt_pp04_cache-alnag = pi_alnag.
lt_pp04_cache-plnnr = l_mapl_plnnr.
APPEND lt_pp04_cache.
ENDIF.
ENDIF.
if the rtg# was determined AND
-- the work center was not determined yet AND
-- work center was really needed for this line in the input file
then
-- read the work center from last PP04 operation on the routing
-- update the cache accordingly
IF NOT lt_pp04_cache-plnnr IS INITIAL AND
lt_pp04_cache-arbpl IS INITIAL AND
( pi_verid IS INITIAL OR
pi_mdv01 IS INITIAL ).
read the last PP04 operation
CLEAR lt_plpo.
REFRESH lt_plpo.
SELECT vornr eobjty eobjid e~arbpl
INTO CORRESPONDING FIELDS OF TABLE lt_plpo
FROM plas AS b
INNER JOIN plpo AS c
ON bplnty = cplnty AND
bplnnr = cplnnr AND
bzaehl = czaehl
INNER JOIN crhd AS e
ON carbid = eobjid
WHERE b~plnty = v_plnty AND
b~plnnr = lt_pp04_cache-plnnr AND
b~plnal = lt_pp04_cache-alnag AND
c~loekz = space AND
c~steus = v_plpo_steus AND
e~objty = v_objty AND
e~werks = lt_pp04_cache-werks AND
e~verwe = v_verwe.
SORT lt_plpo BY vornr DESCENDING.
READ TABLE lt_plpo INDEX 1.
IF NOT lt_plpo-arbpl IS INITIAL.
lt_pp04_cache-arbpl = lt_plpo-arbpl.
read work center description
SELECT SINGLE ktext INTO lt_pp04_cache-ktext
FROM crtx WHERE objty = lt_plpo-objty AND
objid = lt_plpo-objid AND
spras = sy-langu.
the following read will get the index of the correct record to be
updated in the cache
READ TABLE lt_pp04_cache
WITH KEY matnr = pi_matnr
werks = pi_werks
alnag = pi_alnag.
MODIFY lt_pp04_cache
INDEX sy-tabix
TRANSPORTING arbpl ktext.
ENDIF.
ENDIF.
*ENDFORM. " read_last_pp04_operation_cache
*& Form read_routing
form read_routing.
data: begin of lt_mapl occurs 0,
plnnr like mapl-plnnr,
plnal like mapl-plnal,
end of lt_mapl,
l_arbpl like crhd-arbpl.
get all the rtg# and grp ctr# from MAPL
select plnnr plnal
into corresponding fields of table lt_mapl
from mapl
where matnr = v_matnr and
werks = itab_xcel-werks and
plnty = v_plnty and "Rate Routing
loekz = space. "with del flag = OFF
sort lt_mapl by plnal.
if not itab_xcel-verid is initial.
if the verid=0001 then use the 1st good rtg-grp# and grp-ctr#
if itab_xcel-verid = '0001'.
read table lt_mapl index 1.
v_plnnr = lt_mapl-plnnr.
v_plnal = lt_mapl-plnal.
else.
if the verid<>0001 then use the rtg-grp# and grp-ctr# of the routing
whose work center on the last PP04 operation matches the given verid
loop at lt_mapl.
clear l_arbpl.
get the work center from the last PP04 operation
perform read_wc_on_last_pp04 using lt_mapl-plnnr
lt_mapl-plnal
changing l_arbpl.
if itab_xcel-verid = l_arbpl.
v_plnnr = lt_mapl-plnnr.
v_plnal = lt_mapl-plnal.
exit.
endif.
endloop.
endif.
else.
do nothing
endif.
For version IDs that are other then '0000' or 'ZWIP' :--
if itab_xcel-verid NE '0000' and
itab_xcel-verid NE 'ZWIP'.
if routing group# or group counter was not determined, make the
valid-to date 99/99/9999 so that the BDC, on execution, errors out.
if v_plnnr is initial or
v_plnal is initial.
itab_xcel-bdatu = '99/99/9999'.
endif.
endif.
determine the routing group#
CLEAR lt_pp04_cache.
chk if its in the cache first, if not then get it from MAPL table
and put it in the cache
READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
werks = pi_werks
alnag = pi_alnag.
IF sy-subrc = 0.
do nothing - lt_pp04_cache header line has rtg#
ELSE.
get the routing group # from MAPL
put it in the cache internal table
IF NOT l_mapl_plnnr IS INITIAL.
lt_pp04_cache-matnr = pi_matnr.
lt_pp04_cache-werks = pi_werks.
lt_pp04_cache-alnag = pi_alnag.
lt_pp04_cache-plnnr = l_mapl_plnnr.
APPEND lt_pp04_cache.
ENDIF.
ENDIF.
if the rtg# was determined AND
-- the work center was not determined yet AND
-- work center was really needed for this line in the input file
then
-- read the work center from last PP04 operation on the routing
-- update the cache accordingly
IF NOT lt_pp04_cache-plnnr IS INITIAL AND
lt_pp04_cache-arbpl IS INITIAL AND
( pi_verid IS INITIAL OR
pi_mdv01 IS INITIAL ).
read the last PP04 operation
CLEAR lt_plpo.
REFRESH lt_plpo.
SELECT vornr eobjty eobjid e~arbpl
INTO CORRESPONDING FIELDS OF TABLE lt_plpo
FROM plas AS b
INNER JOIN plpo AS c
ON bplnty = cplnty AND
bplnnr = cplnnr AND
bzaehl = czaehl
INNER JOIN crhd AS e
ON carbid = eobjid
WHERE b~plnty = v_plnty AND
b~plnnr = lt_pp04_cache-plnnr AND
b~plnal = lt_pp04_cache-alnag AND
c~loekz = space AND
c~steus = v_plpo_steus AND
e~objty = v_objty AND
e~werks = lt_pp04_cache-werks AND
e~verwe = v_verwe.
SORT lt_plpo BY vornr DESCENDING.
READ TABLE lt_plpo INDEX 1.
IF NOT lt_plpo-arbpl IS INITIAL.
lt_pp04_cache-arbpl = lt_plpo-arbpl.
read work center description
SELECT SINGLE ktext INTO lt_pp04_cache-ktext
FROM crtx WHERE objty = lt_plpo-objty AND
objid = lt_plpo-objid AND
spras = sy-langu.
the following read will get the index of the correct record to be
updated in the cache
READ TABLE lt_pp04_cache
WITH KEY matnr = pi_matnr
werks = pi_werks
alnag = pi_alnag.
MODIFY lt_pp04_cache
INDEX sy-tabix
TRANSPORTING arbpl ktext.
ENDIF.
ENDIF.
endform. " read_last_pp04_operation_cache
*& Form read_wc_on_last_pp04
form read_wc_on_last_pp04 using pi_plnnr
pi_plnal
changing pe_arbpl.
data: begin of lt_plpo occurs 0,
vornr like plpo-vornr,
objty like crhd-objty,
objid like crhd-objid,
arbpl like crhd-arbpl,
end of lt_plpo.
get all the PP04 operations for the given rtg# & grp-ctr#
select vornr eobjty eobjid e~arbpl
into corresponding fields of table lt_plpo
from plas as b
inner join plpo as c
on bplnty = cplnty and
bplnnr = cplnnr and
bzaehl = czaehl
inner join crhd as e
on carbid = eobjid
where b~plnty = v_plnty and "Rate Routing
b~plnnr = pi_plnnr and
b~plnal = pi_plnal and
c~loekz = space and "Oper Del Flag = OFF
c~steus = v_plpo_steus and "PP04
e~objty = v_objty. "WC Obj Type = 'A'
read the last operation
sort lt_plpo by vornr descending.
read table lt_plpo index 1.
pe_arbpl = lt_plpo-arbpl.
endform.
Regards.
Maybe you are looking for
-
like on graiglist when I look for job and press the reply button to send my resume info to the employer, I get this error message all the time. The add-in "C:\PROGRAM 1\AVG\AVG8\avgxch32.dll" could not be installed or loaded This problem may be resol
-
Build error 'CFURLGetFSRef failed - maybe the output directory doesn't exist?' Eclipse
I downloaded and installed the Adobe InDesign Plug-in Editor as an Eclipse distribution, the InDesign SDK and XCode on my iBook G4 with Mac OS X 10.4.10. Creating an InDesign project works fine. I only have to drag-and-drop elements on a form and add
-
Oracle Personal Edition Number Of Connections
How many connections can Oracle Personal Edition Support? We are looking to create some development test machines where we will need 10-20 connections per test server and we do not want to have to pay 10K+ per CPU for these machines. Any idea if we c
-
HR ABAP - (PNPCE - LDB)
hi, I am using PNPCE-LDB, I want the selection screen o/p as like PNP(selection screen). guide me on this.
-
I have a moving and tilting camera in 3D environment. I want to movement and tilting to different directions to be constant and smooth without 'locking' exact camera position to exact time. If I use keyframes to edit camera path, it messes up the con