‎2008 May 09 9:53 AM
Hi,
I am working on BDC Table Controls object. I have to transfer data from flat file to Table Controls. In flat file, under one header there are 40 items. But on the screen, only 19 lines are visible under line items table. When I run the program, only 19 rows of items are getting uploaded. I am getting error for the remaining 21 line items.
How to solve this problem?
Thanks,
Ibrahim
‎2008 May 09 12:18 PM
Hi ,
You are getting only 19 records , So u need to use page down concept .
For page down function code is '=P+'.So that u can add remaining records
Reward if useful
Thanks
Jagadeesh.G
‎2008 May 09 4:18 PM
Hi,
Dont panic by seeing the code just Concentrate on the code which i have marked with BOLD,
and apply the same logic.
REPORT ZME11U01
NO STANDARD PAGE HEADING MESSAGE-ID ZI
LINE-COUNT 25
LINE-SIZE 118.
TABLES: EINE, EINA, MARC, MARA.
DATA : BEGIN OF IT_PURCH_INFO OCCURS 0,
LIFNR LIKE EINA-LIFNR,
MATNR(35),
EKORG LIKE EINE-EKORG, "Pur org
WERKS LIKE EINE-WERKS,
KONSI LIKE RM06I-KONSI,
MAHN1(3),
MAHN2(3),
MAHN3(3),
IDNLF LIKE EINA-IDNLF,
LTSNR LIKE EINA-LTSNR,
LTSSF(5),
WGLIF LIKE EINA-WGLIF,
ANZPU(13),
PUNEI(3),
VERKF LIKE EINA-VERKF,
TELF1 LIKE EINA-TELF1,
RUECK LIKE EINA-RUECK,
KOLIF LIKE EINA-KOLIF,
MEINS(3),
UMREN(5),
UMREZ(5),
VABME LIKE EINA-VABME,
URZTP LIKE EINA-URZTP,
URZNR LIKE EINA-URZNR,
URZDT(10),
URZLA LIKE EINA-URZLA,
REGIO LIKE EINA-REGIO,
URZZT LIKE EINA-URZZT,
LIFAB(10),
LIFBI(10),
RELIF LIKE EINA-RELIF,
APLFZ(3),
BSTAE LIKE EINE-BSTAE,
MWSKZ LIKE EINE-MWSKZ,
EKGRP LIKE EINE-EKGRP,
NORBM(13),
MINBM(13) ,
MHDRZ(5),
EVERS LIKE EINE-EVERS,
NETPR(11),
WAERS(5),
PEINH(5),
BPRME(3),
BPUMN(5),
BPUMZ(5),
MEPRF LIKE EINE-MEPRF,
INCO1 LIKE EINE-INCO1,
INCO2 LIKE EINE-INCO2,
SKTOF LIKE EINE-SKTOF,
EKKOL LIKE EINE-EKKOL,
SELKZ1 LIKE RM06I-SELKZ,
LTEX1 LIKE RM06I-LTEX1,
SELKZ2 LIKE RM06I-SELKZ,
LTEX2 LIKE RM06I-LTEX1,
DATAB(10),
DATBI(10),
FLAG(1), "Indicates existing price cond to delete
END OF IT_PURCH_INFO.
Internal table to store BDC data
DATA BEGIN OF IT_BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA END OF IT_BDCDATA.
DATA BEGIN OF IT_MSGTAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA END OF IT_MSGTAB.
DATA : BEGIN OF IT_MESSAGES OCCURS 0,
REC_NO LIKE SY-TABIX,
ETYPE(1),
MESSAGE(150),
END OF IT_MESSAGES.
DATA: BEGIN OF IT_MATERIAL OCCURS 0,
MATNR(35),
END OF IT_MATERIAL.
DATA : BEGIN OF IT_A017 OCCURS 10,
KNUMH TYPE KNUMH,
DATAB TYPE DATAB,
DATBI TYPE DATBI,
END OF IT_A017.
DATA: IT_KONP LIKE KONP OCCURS 10 WITH HEADER LINE.
DATA: V_DATAB LIKE SY-DATUM,
V_DATBI LIKE SY-DATUM,
V_NO(2) TYPE N,
V_CNT TYPE I,
V_INFO TYPE C,
V_IFNR TYPE C,
V_DEL TYPE C,
IT_CTU_PARAMS TYPE CTU_PARAMS.
DATA : V_DISP TYPE C VALUE 'N', " No display mode
V_SUPD TYPE C VALUE 'S', " Synchronous update mode
V_ME11(4) TYPE C VALUE 'ME11', " Transaction code
V_ME12(4) TYPE C VALUE 'ME12', " Transaction code
V_FILE LIKE IBIPPARMS-PATH. " File name passed by function module
DATA : V_FTYP(3) TYPE C VALUE 'DAT'.
DATA : V_REC_NO LIKE SY-TABIX,
V_ERRTEXT(150).
DATA: V_FLAG(1),
V_FLAG_MAT,
V_FLAG_DEL, V_TEXT(2000).
DATA: V_KNUMH LIKE A017-KNUMH,
V_KONP LIKE KONP-KOPOS,
V_STR(30),
V_MATNR LIKE MARA-MATNR,
V_LIFNR LIKE LFA1-LIFNR.
----
Selection-Screen
----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 1.
PARAMETERS: P_PC RADIOBUTTON GROUP R1,
P_UNIX RADIOBUTTON GROUP R1.
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
PARAMETERS: P_TEST AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B1.
----
*- AT SELECTION SCREEN
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
*- To get F4 help for the P_FILE parameter
PERFORM GET_FILE_PATH.
----
START-OF-SELECTION
----
START-OF-SELECTION.
UPLOAD DATA FROM THE PC FILE
IF P_PC EQ 'X'.
PERFORM UPLOAD.
ELSE.
PERFORM UNIX_UPLOAD.
ENDIF.
PERFORM BDC_UPLOAD.
----
END-OF-SELECTION
----
END-OF-SELECTION.
IF V_FLAG_MAT = 'X'.
PERFORM MATERIAL_ERROR.
ENDIF.
IF NOT IT_MESSAGES[] IS INITIAL.
PERFORM DISPLAY_MESSAGES.
ENDIF.
*----
TOP-OF-PAGE.
*----
TOP-OF-PAGE.
GET COMMON REPORT HEADER
PERFORM REPORT_HEADER.
&----
*& Form GET_FILE_PATH
&----
FORM GET_FILE_PATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-REPID
DYNPRO_NUMBER = SYST-DYNNR
IMPORTING
FILE_NAME = V_FILE
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE I000(ZI) WITH 'Try Again'(002).
ELSE.
P_FILE = V_FILE.
ENDIF.
ENDFORM. " GET_FILE_PATH
&----
*& Form UPLOAD
&----
FORM UPLOAD.
CLEAR IT_PURCH_INFO.
REFRESH IT_PURCH_INFO.
DATA: V_FILENAME TYPE STRING.
V_FILENAME = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = V_FILENAME
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = IT_PURCH_INFO
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.
IF IT_PURCH_INFO[] IS INITIAL.
MESSAGE E000(ZI) WITH 'No Records to process in the file'(003).
STOP.
ENDIF.
ELSE.
MESSAGE E000(ZI) WITH 'File is not uploaded. Try Again.'(004).
STOP.
ENDIF.
ENDFORM. " UPLOAD
&----
*& Form BDC_UPLOAD
&----
FORM BDC_UPLOAD.
CLEAR : IT_PURCH_INFO.
CLEAR: V_REC_NO.
LOOP AT IT_PURCH_INFO.
V_REC_NO = V_REC_NO + 1.
CLEAR V_DEL. "DEVK963
PERFORM TEST.
IF P_TEST EQ 'X'.
IF V_FLAG_MAT = 'X'.
WRITE:/ V_REC_NO,
'Material'(014), ' ',IT_PURCH_INFO-MATNR,
' not maintained in plant', IT_PURCH_INFO-WERKS.
ENDIF.
IF V_FLAG = 'X'.
WRITE:/ V_REC_NO, 'Info Record can be changed'(017).
ELSE.
WRITE:/ V_REC_NO, 'Info Record Can be Created'(015).
ENDIF.
ELSE.
IF V_FLAG = 'X'.
REFRESH: IT_A017, IT_KONP.
CLEAR: V_LIFNR, V_MATNR, V_KNUMH.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = IT_PURCH_INFO-LIFNR
IMPORTING
OUTPUT = V_LIFNR.
CALL FUNCTION 'CONVERSION_EXIT_MATN2_INPUT'
EXPORTING
INPUT = IT_PURCH_INFO-MATNR
IMPORTING
OUTPUT = V_MATNR
EXCEPTIONS
NUMBER_NOT_FOUND = 1
LENGTH_ERROR = 2
OTHERS = 3.
IF IT_PURCH_INFO-KONSI IS INITIAL.
SELECT KNUMH DATAB DATBI
FROM A017
INTO TABLE IT_A017
WHERE LIFNR = V_LIFNR AND
MATNR = V_MATNR AND
EKORG = IT_PURCH_INFO-EKORG AND
WERKS = IT_PURCH_INFO-WERKS AND
ESOKZ = '0'.
ELSE.
SELECT KNUMH DATAB DATBI
FROM A017
INTO TABLE IT_A017
WHERE LIFNR = V_LIFNR AND
MATNR = V_MATNR AND
EKORG = IT_PURCH_INFO-EKORG AND
WERKS = IT_PURCH_INFO-WERKS AND
ESOKZ = '2'.
ENDIF.
IF SY-SUBRC = 0.
SORT IT_A017 BY DATBI DESCENDING.
READ TABLE IT_A017 INDEX 1.
V_KNUMH = IT_A017-KNUMH.
SELECT * FROM KONP
INTO TABLE IT_KONP
FOR ALL ENTRIES IN IT_A017
WHERE KNUMH = IT_A017-KNUMH.
IF SY-SUBRC = 0.
LOOP AT IT_KONP.
IF NOT IT_KONP-KNUMH = V_KNUMH.
UPDATE KONP SET LOEVM_KO = 'X' WHERE KNUMH = IT_KONP-KNUMH AND
KOPOS = IT_KONP-KOPOS.
ENDIF.
ENDLOOP.
COMMIT WORK.
ENDIF.
ELSE.
V_DEL = 'X'.
ENDIF.
ENDIF.
PERFORM GENERATE_BDC_TABLE.
IF V_FLAG_DEL <> 'X'.
IF V_FLAG = 'X'.
IT_CTU_PARAMS-DISMODE = 'N'.
IT_CTU_PARAMS-UPDMODE = 'S'.
IT_CTU_PARAMS-DEFSIZE = 'X'.
CALL TRANSACTION V_ME12
USING IT_BDCDATA
OPTIONS FROM IT_CTU_PARAMS
MESSAGES INTO IT_MSGTAB.
ELSE.
CALL TRANSACTION V_ME11
USING IT_BDCDATA
MODE V_DISP
UPDATE V_SUPD MESSAGES INTO IT_MSGTAB.
ENDIF.
ENDIF.
IF SY-SUBRC NE 0.
IF NOT IT_MSGTAB[] IS INITIAL.
IT_MESSAGES-REC_NO = V_REC_NO.
IT_MESSAGES-ETYPE = 'E'.
PERFORM BUILD_MESSAGES.
ENDIF.
ELSE.
IF NOT IT_MSGTAB[] IS INITIAL.
IT_MESSAGES-REC_NO = V_REC_NO.
IT_MESSAGES-ETYPE = 'S'.
LOOP AT IT_MSGTAB WHERE MSGTYP = 'S'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = IT_MSGTAB-MSGID
MSGNR = IT_MSGTAB-MSGNR
MSGV1 = IT_MSGTAB-MSGV1
MSGV2 = IT_MSGTAB-MSGV2
MSGV3 = IT_MSGTAB-MSGV3
MSGV4 = IT_MSGTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = V_ERRTEXT
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC = 0.
IT_MESSAGES-MESSAGE = V_ERRTEXT.
ENDIF.
ENDLOOP.
APPEND IT_MESSAGES.
CLEAR IT_MESSAGES.
CLEAR V_ERRTEXT.
ENDIF.
ENDIF.
CLEAR: IT_BDCDATA, IT_MSGTAB.
REFRESH : IT_BDCDATA, IT_MSGTAB.
ENDIF.
ENDLOOP.
ENDFORM. " BDC_UPLOAD
&----
*& Form DISPLAY_MESSAGES
&----
FORM DISPLAY_MESSAGES.
LOOP AT IT_MESSAGES.
WRITE:/1 IT_MESSAGES-REC_NO.
IF IT_MESSAGES-ETYPE = 'E'.
WRITE: AT 15
'Record in the file is not suitable for Info record creation.'(005),
'Error message is:'(006).
WRITE: /15 IT_MESSAGES-MESSAGE.
ELSE.
WRITE:AT 15 IT_MESSAGES-MESSAGE.
ENDIF.
ENDLOOP.
ENDFORM. " DISPLAY_MESSAGES
&----
*& Form REPORT_HEADER
&----
text
----
--> p1 text
<-- p2 text
----
FORM REPORT_HEADER.
CALL FUNCTION 'Z_REPORT_HEADER'
EXPORTING
TITLE = SY-TITLE
EXCEPTIONS
OTHERS = 1.
ENDFORM. " REPORT_HEADER
&----
*& Form GENERATE_BDC_TABLE
&----
FORM GENERATE_BDC_TABLE.
DATA: V_MATEXT(1).
PERFORM : BDC_DYNPRO USING 'SAPMM06I' '0100',
BDC_FIELD USING 'BDC_OKCODE' '/00',
BDC_FIELD USING 'BDC_CURSOR' 'EINA-LIFNR',
BDC_FIELD USING 'EINA-LIFNR' IT_PURCH_INFO-LIFNR,
BDC_FIELD USING 'EINA-MATNR' IT_PURCH_INFO-MATNR,
BDC_FIELD USING 'EINE-EKORG' IT_PURCH_INFO-EKORG,
BDC_FIELD USING 'EINE-WERKS' IT_PURCH_INFO-WERKS.
IF IT_PURCH_INFO-KONSI = 'X'.
PERFORM: BDC_FIELD USING 'RM06I-KONSI' 'X'.
ELSE.
PERFORM: BDC_FIELD USING 'RM06I-NORMB' 'X'.
ENDIF.
IF V_FLAG = 'X'.
PERFORM: BDC_FIELD USING 'EINA-INFNR' EINA-INFNR. "1st Sep 2006
V_MATEXT = 'Y'.
ENDIF.
PERFORM: BDC_DYNPRO USING 'SAPMM06I' '0101',
BDC_FIELD USING 'BDC_OKCODE' '/00',
BDC_FIELD USING 'BDC_CURSOR' 'EINA-MAHN3'.
IF NOT IT_PURCH_INFO-MAHN1 IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-MAHN1' IT_PURCH_INFO-MAHN1.
ENDIF.
IF NOT IT_PURCH_INFO-MAHN2 IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-MAHN2' IT_PURCH_INFO-MAHN2.
ENDIF.
IF NOT IT_PURCH_INFO-MAHN3 IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-MAHN3' IT_PURCH_INFO-MAHN3.
ENDIF.
IF NOT IT_PURCH_INFO-IDNLF IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-IDNLF' IT_PURCH_INFO-IDNLF.
ENDIF.
IF NOT IT_PURCH_INFO-LTSNR IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-LTSNR' IT_PURCH_INFO-LTSNR.
ENDIF.
IF NOT IT_PURCH_INFO-LTSSF IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-LTSSF' IT_PURCH_INFO-LTSSF.
ENDIF.
IF NOT IT_PURCH_INFO-WGLIF IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-WGLIF' IT_PURCH_INFO-WGLIF.
ENDIF.
IF NOT IT_PURCH_INFO-ANZPU IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-ANZPU' IT_PURCH_INFO-ANZPU.
ENDIF.
IF NOT IT_PURCH_INFO-PUNEI IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-PUNEI' IT_PURCH_INFO-PUNEI.
ENDIF.
IF NOT IT_PURCH_INFO-VERKF IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-VERKF' IT_PURCH_INFO-VERKF.
ENDIF.
IF NOT IT_PURCH_INFO-TELF1 IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-TELF1' IT_PURCH_INFO-TELF1.
ENDIF.
IF NOT IT_PURCH_INFO-RUECK IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-RUECK' IT_PURCH_INFO-RUECK.
ENDIF.
IF NOT IT_PURCH_INFO-KOLIF IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-KOLIF' IT_PURCH_INFO-KOLIF.
ENDIF.
IF NOT IT_PURCH_INFO-MEINS IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-MEINS' IT_PURCH_INFO-MEINS.
ENDIF.
IF NOT IT_PURCH_INFO-UMREN IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-UMREN' IT_PURCH_INFO-UMREN.
ENDIF.
IF NOT IT_PURCH_INFO-UMREZ IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-UMREZ' IT_PURCH_INFO-UMREZ.
ENDIF.
IF NOT IT_PURCH_INFO-VABME IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-VABME' IT_PURCH_INFO-VABME.
ENDIF.
IF NOT IT_PURCH_INFO-URZTP IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-URZTP' IT_PURCH_INFO-URZTP.
ENDIF.
IF NOT IT_PURCH_INFO-URZNR IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-URZNR' IT_PURCH_INFO-URZNR.
ENDIF.
IF NOT IT_PURCH_INFO-URZDT IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-URZDT' IT_PURCH_INFO-URZDT.
ENDIF.
IF NOT IT_PURCH_INFO-URZLA IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-URZLA' IT_PURCH_INFO-URZLA.
ENDIF.
IF NOT IT_PURCH_INFO-REGIO IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-REGIO' IT_PURCH_INFO-REGIO.
ENDIF.
IF NOT IT_PURCH_INFO-URZZT IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-URZZT' IT_PURCH_INFO-URZZT.
ENDIF.
IF NOT IT_PURCH_INFO-LIFAB IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-LIFAB' IT_PURCH_INFO-LIFAB.
ENDIF.
IF NOT IT_PURCH_INFO-LIFBI IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-LIFBI' IT_PURCH_INFO-LIFBI.
ENDIF.
IF NOT IT_PURCH_INFO-RELIF IS INITIAL.
PERFORM: BDC_FIELD USING 'EINA-RELIF' IT_PURCH_INFO-RELIF.
ENDIF.
PERFORM: BDC_DYNPRO USING 'SAPMM06I' '0102'.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' 'KO'.
PERFORM: BDC_FIELD USING 'BDC_CURSOR' 'EINE-APLFZ'.
IF NOT IT_PURCH_INFO-APLFZ IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-APLFZ' IT_PURCH_INFO-APLFZ.
ENDIF.
IF NOT IT_PURCH_INFO-BSTAE IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-BSTAE' IT_PURCH_INFO-BSTAE.
ENDIF.
PERFORM: BDC_FIELD USING 'EINE-WEBRE' 'X'.
IF NOT IT_PURCH_INFO-MWSKZ IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-MWSKZ' IT_PURCH_INFO-MWSKZ.
ENDIF.
IF NOT IT_PURCH_INFO-EKGRP IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-EKGRP' IT_PURCH_INFO-EKGRP.
ENDIF.
IF NOT IT_PURCH_INFO-NORBM IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-NORBM' IT_PURCH_INFO-NORBM.
ENDIF.
IF NOT IT_PURCH_INFO-MINBM IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-MINBM' IT_PURCH_INFO-MINBM.
ENDIF.
IF NOT IT_PURCH_INFO-MHDRZ IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-MHDRZ' IT_PURCH_INFO-MHDRZ.
ENDIF.
IF NOT IT_PURCH_INFO-EVERS IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-EVERS' IT_PURCH_INFO-EVERS.
ENDIF.
IF V_MATEXT NE 'Y'.
IF NOT IT_PURCH_INFO-NETPR IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-NETPR' IT_PURCH_INFO-NETPR.
ENDIF.
IF NOT IT_PURCH_INFO-WAERS IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-WAERS' IT_PURCH_INFO-WAERS.
ENDIF.
IF NOT IT_PURCH_INFO-PEINH IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-PEINH' IT_PURCH_INFO-PEINH.
ENDIF.
IF NOT IT_PURCH_INFO-BPRME IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-BPRME' IT_PURCH_INFO-BPRME.
ENDIF.
IF NOT IT_PURCH_INFO-BPUMN IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-BPUMN' IT_PURCH_INFO-BPUMN.
ENDIF.
IF NOT IT_PURCH_INFO-BPUMZ IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-BPUMZ' IT_PURCH_INFO-BPUMZ.
ENDIF.
ENDIF.
IF NOT IT_PURCH_INFO-MEPRF IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-MEPRF' IT_PURCH_INFO-MEPRF.
ENDIF.
IF NOT IT_PURCH_INFO-INCO1 IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-INCO1' IT_PURCH_INFO-INCO1.
ENDIF.
IF NOT IT_PURCH_INFO-INCO2 IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-INCO2' IT_PURCH_INFO-INCO2.
ENDIF.
IF NOT IT_PURCH_INFO-SKTOF IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-SKTOF' IT_PURCH_INFO-SKTOF.
ENDIF.
IF NOT IT_PURCH_INFO-EKKOL IS INITIAL.
PERFORM: BDC_FIELD USING 'EINE-EKKOL' IT_PURCH_INFO-EKKOL.
ENDIF.
CLEAR V_DATAB.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL = IT_PURCH_INFO-DATAB
IMPORTING
DATE_INTERNAL = V_DATAB.
WRITE V_DATAB TO IT_PURCH_INFO-DATAB.
CLEAR V_DATBI.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
DATE_EXTERNAL = IT_PURCH_INFO-DATBI
IMPORTING
DATE_INTERNAL = V_DATBI.
WRITE V_DATBI TO IT_PURCH_INFO-DATBI.
REFRESH IT_A017.
CLEAR V_NO.
IF V_MATEXT EQ 'Y'.
CALL FUNCTION 'CONVERSION_EXIT_MATN2_INPUT'
EXPORTING
INPUT = IT_PURCH_INFO-MATNR
IMPORTING
OUTPUT = V_MATNR
EXCEPTIONS
NUMBER_NOT_FOUND = 1
LENGTH_ERROR = 2
OTHERS = 3.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = IT_PURCH_INFO-LIFNR
IMPORTING
OUTPUT = V_LIFNR.
IF IT_PURCH_INFO-KONSI IS INITIAL.
SELECT SINGLE KNUMH FROM A017 INTO V_KNUMH
WHERE KSCHL = 'PB00'
AND LIFNR = V_LIFNR
AND MATNR = V_MATNR
AND ESOKZ = '0'.
ELSE.
SELECT KNUMH DATAB DATBI FROM A017 INTO TABLE IT_A017
WHERE KSCHL = 'PB00'
AND LIFNR = V_LIFNR
AND MATNR = V_MATNR
AND ESOKZ = '2'.
SORT IT_A017 BY DATBI DESCENDING.
DESCRIBE TABLE IT_A017 LINES V_NO.
READ TABLE IT_A017 INDEX 1.
V_KNUMH = IT_A017.
ENDIF.
CLEAR V_KONP.
SELECT SINGLE KOPOS FROM KONP INTO V_KONP
WHERE KNUMH = V_KNUMH
AND LOEVM_KO NE 'X'.
WHILE V_KONP GT 4. (when konp value greater than 4 rows in the table control ) *V_CNT = V_CNT + 1.*
V_KONP = V_KONP - 3.
ENDWHILE.
IF V_KONP = 4.
V_KONP = 1.
V_CNT = V_CNT + 1.
ENDIF.
IF NOT V_IFNR = 'X'
AND V_DEL NE 'X'. "DEVK963326
PERFORM: BDC_DYNPRO USING 'SAPLV14A' '0102'.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' 'PICK'.
IF V_NO IS INITIAL.
V_NO = '01'.
ENDIF.
CONCATENATE 'VAKE-DATBI(' V_NO ')' INTO V_STR.
PERFORM: BDC_FIELD USING 'BDC_CURSOR' V_STR.
ENDIF.
PERFORM: BDC_DYNPRO USING 'SAPMV13A' '0201'.
IF IT_PURCH_INFO-FLAG IS INITIAL.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' 'BACK'.
CONCATENATE 'KONP-KBETR(' V_KONP ')' INTO V_STR.
PERFORM: BDC_FIELD USING 'BDC_CURSOR' V_STR.
CLEAR V_STR.
IF NOT IT_PURCH_INFO-NETPR IS INITIAL.
CONCATENATE 'KONP-KBETR(' V_KONP ')' INTO V_STR.
PERFORM: BDC_FIELD USING V_STR IT_PURCH_INFO-NETPR.
CLEAR V_STR.
ENDIF.
PERFORM: BDC_FIELD USING 'RV13A-DATAB' IT_PURCH_INFO-DATAB.
PERFORM: BDC_FIELD USING 'RV13A-DATBI' IT_PURCH_INFO-DATBI.
ELSE.
IF NOT V_IFNR = 'X'
AND V_DEL NE 'X'. "DEVK963306
DO V_CNT TIMES.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' '=P+'.
PERFORM: BDC_DYNPRO USING 'SAPMV13A' '0201'.
ENDDO.
CONCATENATE 'KONP-KSCHL(' V_KONP ')' INTO V_STR.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' '=DLIN'.
PERFORM: BDC_FIELD USING 'BDC_CURSOR' V_STR.
CLEAR V_STR.
CONCATENATE 'RV130-SELKZ(' V_KONP ')' INTO V_STR.
PERFORM: BDC_FIELD USING V_STR 'X'.
ENDIF.
*DEVK963324
IF V_DEL = 'X'.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' '/00'.
ENDIF.
V_KONP = V_KONP + 1.
PERFORM: BDC_DYNPRO USING 'SAPMV13A' '0201'.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' '/00'.
IF NOT V_IFNR = 'X'
AND V_DEL NE 'X'. "DEVK963326
CONCATENATE 'KONP-KBETR(' V_KONP ')' INTO V_STR.
PERFORM: BDC_FIELD USING 'BDC_CURSOR' V_STR.
CLEAR V_STR.
CONCATENATE 'KONP-KSCHL(' V_KONP ')' INTO V_STR.
PERFORM: BDC_FIELD USING V_STR 'PB00'.
CLEAR V_STR.
ENDIF.
IF NOT IT_PURCH_INFO-NETPR IS INITIAL.
CONCATENATE 'KONP-KBETR(' V_KONP ')' INTO V_STR.
PERFORM: BDC_FIELD USING V_STR IT_PURCH_INFO-NETPR.
CLEAR V_STR.
ENDIF.
CONCATENATE 'KONP-KONWA(' V_KONP ')' INTO V_STR.
PERFORM: BDC_FIELD USING V_STR IT_PURCH_INFO-WAERS.
CLEAR V_STR.
CONCATENATE 'KONP-KPEIN(' V_KONP ')' INTO V_STR.
PERFORM: BDC_FIELD USING V_STR IT_PURCH_INFO-PEINH.
CLEAR V_STR.
CONCATENATE 'KONP-KMEIN(' V_KONP ')' INTO V_STR.
PERFORM: BDC_FIELD USING V_STR IT_PURCH_INFO-BPRME.
CLEAR V_STR.
PERFORM: BDC_DYNPRO USING 'SAPMV13A' '0201'.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' 'BACK'.
PERFORM: BDC_FIELD USING 'BDC_CURSOR' 'RV13A-DATAB'.
PERFORM: BDC_FIELD USING 'RV13A-DATAB' IT_PURCH_INFO-DATAB.
PERFORM: BDC_FIELD USING 'RV13A-DATBI' IT_PURCH_INFO-DATBI.
ENDIF.
ELSE.
PERFORM: BDC_DYNPRO USING 'SAPMV13A' '0201'.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' 'BACK'.
PERFORM: BDC_FIELD USING 'BDC_CURSOR' 'RV13A-DATAB'.
PERFORM: BDC_FIELD USING 'RV13A-DATAB' IT_PURCH_INFO-DATAB.
PERFORM: BDC_FIELD USING 'RV13A-DATBI' IT_PURCH_INFO-DATBI.
ENDIF.
PERFORM: BDC_DYNPRO USING 'SAPMM06I' '0102'.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' 'TEXT'.
PERFORM: BDC_FIELD USING 'BDC_CURSOR' 'EINE-APLFZ'.
PERFORM: BDC_DYNPRO USING 'SAPMM06I' '0103'.
PERFORM: BDC_FIELD USING 'BDC_OKCODE' 'BU'.
PERFORM: BDC_FIELD USING 'BDC_CURSOR' 'RM06I-SELKZ(02)'.
IF NOT IT_PURCH_INFO-SELKZ1 IS INITIAL.
PERFORM: BDC_FIELD USING 'RM06I-SELKZ(01)' IT_PURCH_INFO-SELKZ1.
ENDIF.
IF NOT IT_PURCH_INFO-SELKZ2 IS INITIAL.
PERFORM: BDC_FIELD USING 'RM06I-SELKZ(02)' IT_PURCH_INFO-SELKZ2.
ENDIF.
IF NOT IT_PURCH_INFO-LTEX1 IS INITIAL.
PERFORM: BDC_FIELD USING 'RM06I-LTEX1(01)' IT_PURCH_INFO-LTEX1.
ENDIF.
IF NOT IT_PURCH_INFO-LTEX2 IS INITIAL.
PERFORM: BDC_FIELD USING 'RM06I-LTEX1(02)' IT_PURCH_INFO-LTEX2.
ENDIF.
CLEAR V_MATEXT.
ENDFORM. " GENERATE_BDC_TABLE
&----
*& Form BDC_DYNPRO
&----
FORM BDC_DYNPRO USING PROG DYNP.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROG.
IT_BDCDATA-DYNPRO = DYNP.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ENDFORM. " BDC_DYNPRO
&----
*& Form BDC_FIELD
&----
FORM BDC_FIELD USING FNAM FVAL.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.
IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA.
ENDFORM. " BDC_FIELD
&----
*& Form BUILD_MESSAGES
&----
FORM BUILD_MESSAGES.
LOOP AT IT_MSGTAB WHERE MSGTYP = 'E'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = IT_MSGTAB-MSGID
MSGNR = IT_MSGTAB-MSGNR
MSGV1 = IT_MSGTAB-MSGV1
MSGV2 = IT_MSGTAB-MSGV2
MSGV3 = IT_MSGTAB-MSGV3
MSGV4 = IT_MSGTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = V_ERRTEXT
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC = 0.
READ TABLE IT_MSGTAB WITH KEY MSGID = '00' MSGNR = '055'.
IF SY-SUBRC EQ 0.
CONCATENATE IT_MSGTAB-FLDNAME ': ' V_ERRTEXT INTO V_ERRTEXT.
IT_MESSAGES-MESSAGE = V_ERRTEXT.
ELSE.
IT_MESSAGES-MESSAGE = V_ERRTEXT.
ENDIF.
ENDIF.
ENDLOOP.
APPEND IT_MESSAGES.
CLEAR IT_MESSAGES.
CLEAR V_ERRTEXT.
ENDFORM. " BUILD_MESSAGES
&----
*& Form UNIX_UPLOAD
&----
FORM UNIX_UPLOAD.
OPEN DATASET P_FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
DO.
READ DATASET P_FILE INTO V_TEXT.
IF SY-SUBRC EQ 0.
SPLIT V_TEXT AT CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
INTO IT_PURCH_INFO-LIFNR
IT_PURCH_INFO-MATNR
IT_PURCH_INFO-EKORG
IT_PURCH_INFO-WERKS
IT_PURCH_INFO-KONSI
IT_PURCH_INFO-MAHN1
IT_PURCH_INFO-MAHN2
IT_PURCH_INFO-MAHN3
IT_PURCH_INFO-IDNLF
IT_PURCH_INFO-LTSNR
IT_PURCH_INFO-LTSSF
IT_PURCH_INFO-WGLIF
IT_PURCH_INFO-ANZPU
IT_PURCH_INFO-PUNEI
IT_PURCH_INFO-VERKF
IT_PURCH_INFO-TELF1
IT_PURCH_INFO-RUECK
IT_PURCH_INFO-KOLIF
IT_PURCH_INFO-MEINS
IT_PURCH_INFO-UMREN
IT_PURCH_INFO-UMREZ
IT_PURCH_INFO-VABME
IT_PURCH_INFO-URZTP
IT_PURCH_INFO-URZNR
IT_PURCH_INFO-URZDT
IT_PURCH_INFO-URZLA
IT_PURCH_INFO-REGIO
IT_PURCH_INFO-URZZT
IT_PURCH_INFO-LIFAB
IT_PURCH_INFO-LIFBI
IT_PURCH_INFO-RELIF
IT_PURCH_INFO-APLFZ
IT_PURCH_INFO-BSTAE
IT_PURCH_INFO-MWSKZ
IT_PURCH_INFO-EKGRP
IT_PURCH_INFO-NORBM
IT_PURCH_INFO-MINBM
IT_PURCH_INFO-MHDRZ
IT_PURCH_INFO-EVERS
IT_PURCH_INFO-NETPR
IT_PURCH_INFO-WAERS
IT_PURCH_INFO-PEINH
IT_PURCH_INFO-BPRME
IT_PURCH_INFO-BPUMN
IT_PURCH_INFO-BPUMZ
IT_PURCH_INFO-MEPRF
IT_PURCH_INFO-INCO1
IT_PURCH_INFO-INCO2
IT_PURCH_INFO-SKTOF
IT_PURCH_INFO-EKKOL
IT_PURCH_INFO-SELKZ1
IT_PURCH_INFO-LTEX1
IT_PURCH_INFO-SELKZ2
IT_PURCH_INFO-LTEX2
IT_PURCH_INFO-DATAB
IT_PURCH_INFO-DATBI
IT_PURCH_INFO-FLAG.
APPEND IT_PURCH_INFO.
ELSE.
EXIT.
ENDIF.
ENDDO.
CLOSE DATASET P_FILE.
ENDFORM. "UNIX_UPLOAD
&----
*& Form TEST
&----
FORM TEST.
CLEAR V_INFO.
IF IT_PURCH_INFO-KONSI = 'X'.
V_INFO = '2'.
ELSE.
V_INFO = '0'.
ENDIF.
CLEAR: V_FLAG, V_FLAG_DEL, V_FLAG_MAT.
TRANSLATE IT_PURCH_INFO-MATNR TO UPPER CASE.
CALL FUNCTION 'CONVERSION_EXIT_MATN2_INPUT'
EXPORTING
INPUT = IT_PURCH_INFO-MATNR
IMPORTING
OUTPUT = V_MATNR
EXCEPTIONS
NUMBER_NOT_FOUND = 1
LENGTH_ERROR = 2
OTHERS = 3.
IF NOT IT_PURCH_INFO-MATNR IS INITIAL.
SELECT SINGLE * FROM MARC
WHERE MATNR = V_MATNR
AND WERKS = IT_PURCH_INFO-WERKS.
IF SY-SUBRC NE 0.
V_FLAG_MAT = 'X'.
MOVE IT_PURCH_INFO-MATNR TO IT_MATERIAL-MATNR.
ENDIF.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = IT_PURCH_INFO-LIFNR
IMPORTING
OUTPUT = V_LIFNR
EXCEPTIONS
OTHERS = 1.
CLEAR: V_FLAG, V_IFNR.
SELECT SINGLE * FROM EINA
WHERE MATNR = V_MATNR
AND LIFNR = V_LIFNR.
IF SY-SUBRC EQ 0.
IF EINA-LOEKZ <> 'X'.
SELECT SINGLE * FROM EINE
WHERE INFNR = EINA-INFNR
AND WERKS = IT_PURCH_INFO-WERKS
AND LOEKZ <> 'X'
AND ESOKZ = V_INFO.
IF SY-SUBRC EQ 0.
IT_PURCH_INFO-FLAG = 'X'.
MODIFY IT_PURCH_INFO TRANSPORTING FLAG.
V_FLAG = 'X'.
ELSE.
V_IFNR = 'X'.
ENDIF.
ELSE.
V_FLAG_DEL = 'X'.
ENDIF.
ENDIF.
ENDFORM. " TEST
&----
*& Form MATERIAL_ERROR
&----
FORM MATERIAL_ERROR .
LOOP AT IT_MATERIAL.
WRITE: /5 'Material', IT_MATERIAL-MATNR, 'does not exist'.
ENDLOOP.
ENDFORM. " MATERIAL_ERROR
Thanks
Naveed khan