Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BDC Table Controls

Former Member
0 Likes
598

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

2 REPLIES 2
Read only

Former Member
0 Likes
489

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

Read only

Former Member
0 Likes
489

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