Me 01
Me 01
* A T S E L E C T I O N - S C R E E N OUTPUT
************************************************************************
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SES EQ 'X'.
IF SCREEN-GROUP1 = 'SC2'.
SCREEN-ACTIVE = '0'.
ENDIF.
IF SCREEN-GROUP1 = 'SC1'.
SCREEN-ACTIVE = '1'.
ENDIF.
ELSEIF CTU EQ 'X'.
IF SCREEN-GROUP1 = 'SC1'.
SCREEN-ACTIVE = '0'.
ENDIF.
IF SCREEN-GROUP1 = 'SC2'.
SCREEN-ACTIVE = '1'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
* file_selection will help to select the location of the file
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME
= ' '
IMPORTING
FILE_NAME
= P_FNAME.
START-OF-SELECTION.
* Perform data_upload will help to upload the data from the flat file to the in
ternal table.
PERFORM GET_DATA.
* Perform to validate the data of itab
PERFORM VALIDAING_DATA.
IF T_EORD IS INITIAL.
MESSAGE 'NO DATA IN THE TABLE' TYPE 'E'.
ENDIF.
IF SES EQ 'X'. " SESSION MEATHOD
* perform open_group.
PERFORM OPEN_SESSION.
*Peformbdc_upload will help to upload the data from the internal table into its
respective fields.
PERFORM BDC_UPLOAD.
*
perform bdc_insert .
PERFORM SESSION_METHOD.
* perform close_group.
PERFORM CLOSE_GROUP.
IF W_XL-VALUE = TEXT-T30.
CLEAR W_XL-VALUE.
ENDIF.
<DATA> = W_XL-VALUE.
ENDIF.
AT END OF ROW.
APPEND W_DUMMY TO T_DUMMY.
ENDAT.
ENDLOOP.
ENDFORM.
" GET_DATA
*&---------------------------------------------------------------------*
*&
Form BDC_UPLOAD
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM BDC_UPLOAD .
SORT T_EORD BY MATNR WERKS.
LT_EORD = T_EORD.
LOOP AT LT_EORD INTO LW_EORD.
V_COUNT = '01'.
*
AT NEW
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
ENDAT.
WERKS.
BDC_DYNPRO
BDC_FIELD
BDC_FIELD
BDC_FIELD
BDC_FIELD
USING
USING
USING
USING
USING
'SAPLMEOR' '0200'.
'BDC_CURSOR' 'EORD-WERKS'.
'BDC_OKCODE' '/00'.
'EORD-MATNR' LW_EORD-MATNR.
'EORD-WERKS' LW_EORD-WERKS.
AT END OF WERKS.
PERFORM BDC_DYNPRO
USING 'SAPLMEOR' '0205'.
PERFORM BDC_FIELD
USING 'BDC_CURSOR' 'EORD-MATNR'.
PERFORM BDC_FIELD
USING 'BDC_OKCODE' '=BU'.
IF SES EQ 'X'.
PERFORM SESSION_METHOD.
ELSE.
PERFORM CALL_TRANSACTION.
ENDIF.
ENDAT.
ENDLOOP.
ENDFORM.
" BDC_UPLOAD
*&---------------------------------------------------------------------*
*&
Form bdc_dynpro
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->PROGRAM
text
*
-->DYNPRO
text
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR W_BDCDATA.
W_BDCDATA-PROGRAM = PROGRAM.
W_BDCDATA-DYNPRO = DYNPRO.
W_BDCDATA-DYNBEGIN = 'X'.
APPEND W_BDCDATA TO T_BDCDATA.
ENDFORM. "BDC_DYNPRO
*&---------------------------------------------------------------------*
*&
Form bdc_field
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->FNAM
text
*
-->FVAL
text
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR W_BDCDATA.
W_BDCDATA-FNAM = FNAM.
W_BDCDATA-FVAL = FVAL.
APPEND W_BDCDATA TO T_BDCDATA.
ENDFORM. "BDC_Field
*&---------------------------------------------------------------------*
*&
Form EXP_LOG
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM EXP_LOG .
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = 'c:\temp\error_fK00.txt'
FILETYPE = 'DAT'
TABLES
DATA_TAB = I_MESS.
ENDFORM.
" EXP_LOG
*&---------------------------------------------------------------------*
*&
Form CALL_TRANSACTION
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM CALL_TRANSACTION .
CALL TRANSACTION 'ME01' USING T_BDCDATA MODE 'A' UPDATE 'S' MESSAGES INTO MESS
TAB1.
PERFORM MESS1.
REFRESH T_BDCDATA.
ENDFORM.
" CALL_TRANSACTION
*&---------------------------------------------------------------------*
*&
Form MESS1
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM MESS1 .
LOOP AT MESSTAB1.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID
= MESSTAB1-MSGID
LANG
= MESSTAB1-MSGSPRA
NO
= MESSTAB1-MSGNR
V1
= MESSTAB1-MSGV1
V2
= MESSTAB1-MSGV2
V3
= MESSTAB1-MSGV3
V4
= MESSTAB1-MSGV4
IMPORTING
MSG
= L_MSTRING1
EXCEPTIONS
NOT_FOUND = 1
OTHERS
= 2.
CONDENSE L_MSTRING1.
I_MESS-L_MSTRING = L_MSTRING1(250).
I_MESS-MSGNR = MESSTAB1-MSGNR.
I_MESS-MSGV1 = MESSTAB1-MSGV1.
APPEND I_MESS.
ENDLOOP.
ENDFORM.
" MESS1
*&---------------------------------------------------------------------*
*&
Form OPEN_SESSION
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM OPEN_SESSION .
DATA: USER TYPE APQI-USERID.
USER = SY-UNAME.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT
= SY-MANDT
GROUP
= P_SNAME "SESS NAME GO TO SM35
KEEP
= 'X'
USER
= USER
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.
ENDFORM.
" OPEN_SESSION
*&---------------------------------------------------------------------*
*&Form SESSION_METHOD
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM SESSION_METHOD .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE
= 'ME01'
TABLES
DYNPROTAB
= T_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.
ENDFORM." SESSION_METHOD
*&---------------------------------------------------------------------*
*&
Form CLOSE_GROUP
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM CLOSE_GROUP .
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE : 'Session created process it in SM35'.
ENDFORM.
" CLOSE_GROUP
*&---------------------------------------------------------------------*
*&
Form VALIDAING_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM VALIDAING_DATA .
DATA: W_MARC TYPE MARC,
W_LFM1 TYPE LFM1,
W_EKPO TYPE EKPO,
W_EKKO TYPE EKKO,
W_T001W TYPE T001W.
DATA:
W_EORD-MATNR = V_MATNR.
MOVE W_EKPO-WERKS TO W_EORD-WERKS.
ENDIF.
IF W_DUMMY-VDATU IS NOT INITIAL AND W_DUMMY-BDATU IS NOT INITIAL.
MOVE W_DUMMY-VDATU TO W_EORD-VDATU.
MOVE W_DUMMY-BDATU TO W_EORD-BDATU.
ELSE.
MESSAGE 'Enter the Correct Date' TYPE 'E'.
ENDIF.
IF W_DUMMY-FLIFN EQ 'X' AND W_DUMMY-NOTKZ EQ 'X'.
MESSAGE 'The Material should be Fixed or Blocked but not both' TYPE 'E'.
ELSE.
MOVE W_DUMMY-FLIFN TO W_EORD-FEBEL.
MOVE W_DUMMY-NOTKZ TO W_EORD-NOTKZ.
ENDIF.
MOVE W_DUMMY-AUTET TO W_EORD-AUTET.
ELSE.
SELECT SINGLE * FROM MARC INTO W_MARC WHERE MATNR EQ W_DUMMY-MATNR
AND WERKS EQ W_DUMMY-WERKS.
IF SY-SUBRC NE 0.
MESSAGE 'Material Number does not belongs to the Plant' TYPE 'E'.
ELSE.
MOVE W_MARC-MATNR TO W_EORD-MATNR.
MOVE W_MARC-WERKS TO W_EORD-WERKS.
ENDIF.
SELECT SINGLE * FROM T001W INTO W_T001W WHERE WERKS EQ W_MARC-WERKS
AND EKORG EQ W_DUMMY-EKORG.
IF SY-SUBRC NE 0.
MESSAGE 'Plant and Purchase Organisation donot match' TYPE 'E'.
ELSE.
MOVE W_T001W-EKORG TO W_EORD-EKORG.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = W_DUMMY-LIFNR
IMPORTING
OUTPUT = V_LIFNR.
SELECT SINGLE * FROM LFM1 INTO W_LFM1 WHERE LIFNR EQ V_LIFNR
AND EKORG EQ W_T001W-EKORG.
IF SY-SUBRC NE 0.
MESSAGE 'Vendor is not valid for the Plant' TYPE 'E'.
ELSE.
MOVE W_LFM1-LIFNR TO W_EORD-LIFNR.
ENDIF.
IF W_DUMMY-VDATU IS NOT INITIAL AND W_DUMMY-BDATU IS NOT INITIAL.
MOVE W_DUMMY-VDATU TO W_EORD-VDATU.
MOVE W_DUMMY-BDATU TO W_EORD-BDATU.
ELSE.
MESSAGE 'Enter the Correct Date' TYPE 'E'.
ENDIF.