102
*1)MANUALLY GENERATE FIELDCATALOG : IN THIS APPROACH U MANUALLY FILL THE * INTERNAL TABLE IT_FCAT OF TYPE SLIS_T_FIELDCAT_ALV TO BUILD *FIELDCATALOG FOR OUTPUT SCREEN. REPORT ZALV_FIELDCAT_MANUALLY. *TYPE GROUP TYPE-POOLS SLIS. "SLIS IS A BUILT-IN TYPE GROUP WHICH CONTAINS USER DEFINED "DATA TYPES AND CONSTANTS *VBAK = CONTAINS SALES DOCUMENT : HEADER DATA. TABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD *TO CREATE AN INTERNAL TABLE IT_VBAP WITH SOME OF FIELDS OF VBAK DATA : BEGIN OF IT_VBAK OCCURS 10, VBELN LIKE VBAK-VBELN, ERDAT LIKE VBAK-ERDAT, ERNAM LIKE VBAK-ERNAM, AUART LIKE VBAK-AUART, NETWR LIKE VBAK-NETWR, WAERK LIKE VBAK-WAERK, VKORG LIKE VBAK-VKORG, END OF IT_VBAK. *TO CREATE VARIABLE TO STORE CURREN PROGRAM DATA V_PROGRAM LIKE SY-REPID . *TO CREATE INTERNAL TABLE IT_FCAT TYPE SLIS_T_FIELDCAT_ALV DATA IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE. *TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERS SELECT-OPTIONS S_VBELN FOR VBAK-VBELN. PERFORM GET_DATA. PERFORM BUILD_FCAT. PERFORM DISPLAY_ALV_GRID. *&---------------------------------------------------------------------* *& Form GET_DATA *&---------------------------------------------------------------------* FORM GET_DATA . *TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES *DOCUMENT NUMBERS SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK WHERE VBELN IN S_VBELN. *TO STORE CURRENT PROGRAM NAME *SY-REPID : CONTAINS CURRENT PROGRAM NAME V_PROGRAM = SY-REPID. ENDFORM. " GET_DATA

abapprogs

Embed Size (px)

Citation preview

Page 1: abapprogs

*1)MANUALLY GENERATE FIELDCATALOG : IN THIS APPROACH U MANUALLY FILL THE* INTERNAL TABLE IT_FCAT OF TYPE SLIS_T_FIELDCAT_ALV TO BUILD*FIELDCATALOG FOR OUTPUT SCREEN.

REPORT ZALV_FIELDCAT_MANUALLY.

*TYPE GROUPTYPE-POOLS SLIS."SLIS IS A BUILT-IN TYPE GROUP WHICH CONTAINS USER DEFINED "DATA TYPES AND CONSTANTS

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.TABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

*TO CREATE AN INTERNAL TABLE IT_VBAP WITH SOME OF FIELDS OF VBAKDATA : BEGIN OF IT_VBAK OCCURS 10, VBELN LIKE VBAK-VBELN, ERDAT LIKE VBAK-ERDAT, ERNAM LIKE VBAK-ERNAM, AUART LIKE VBAK-AUART, NETWR LIKE VBAK-NETWR, WAERK LIKE VBAK-WAERK, VKORG LIKE VBAK-VKORG, END OF IT_VBAK.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO CREATE INTERNAL TABLE IT_FCAT TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

PERFORM GET_DATA.PERFORM BUILD_FCAT.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES*DOCUMENT NUMBERSSELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAMEV_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form BUILD_FCAT*&---------------------------------------------------------------------*FORM BUILD_FCAT .*1ST COLUMN : VBELN : SALES DOCUMENT NUMBERIT_FCAT-COL_POS = 1.IT_FCAT-FIELDNAME = 'VBELN'.

Page 2: abapprogs

IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-KEY = 'X'.IT_FCAT-JUST = 'C'.IT_FCAT-seltext_l = 'SALES DOCUMENT NUMBER'.IT_FCAT-seltext_M = 'SALES DOC.NO'.IT_FCAT-seltext_S = 'SDNO'.IT_FCAT-hotspot = 'X'.*IT_FCAT-no_convext = 'X'.IT_FCAT-no_zero = 'X'.APPEND IT_FCAT.CLEAR IT_FCAT.

*2ND COLUMN : ERDAT: Date on Which Record Was CreatedIT_FCAT-COL_POS = 2.IT_FCAT-FIELDNAME = 'ERDAT'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'DATE '.IT_FCAT-seltext_M = 'DATE'.IT_FCAT-seltext_S = 'DATE'.IT_FCAT-EDIT_MASK = '__/__/____'.APPEND IT_FCAT.CLEAR IT_FCAT.

*3RD COLUMN : ERNAM : Name of Person who Created the ObjectIT_FCAT-COL_POS = 3.IT_FCAT-FIELDNAME = 'ERNAM'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-JUST = 'R'.IT_FCAT-emphasize = 'C611'.IT_FCAT-seltext_l = 'NAME OF PERSON CREATED'.IT_FCAT-seltext_M = 'NAME'.IT_FCAT-seltext_S = 'NAME'.APPEND IT_FCAT.CLEAR IT_FCAT.

*4TH COLUMN : AUART : Sales Document TypeIT_FCAT-COL_POS = 4.IT_FCAT-FIELDNAME = 'AUART'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-JUST = 'C'.IT_FCAT-emphasize = 'C401'.IT_FCAT-seltext_l = 'SALES DOCUMNET TYPE'.IT_FCAT-seltext_M = 'SALES DOC. TYPE'.IT_FCAT-seltext_S = 'SDTYPE'.APPEND IT_FCAT.CLEAR IT_FCAT.

*5TH COLUMN : NETWR : Net Value of the Sales Order in Document CurrencyIT_FCAT-COL_POS = 5.IT_FCAT-FIELDNAME = 'NETWR'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-do_sum = 'X'.IT_FCAT-seltext_l = 'NET VALUE'.IT_FCAT-seltext_M = 'NET VALUE'.IT_FCAT-seltext_S = 'NET VAL'.APPEND IT_FCAT.CLEAR IT_FCAT.

*6TH COLUMN : WAERK : SD Document CurrencyIT_FCAT-COL_POS = 6.IT_FCAT-FIELDNAME = 'WAERK'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'CURRENCY'.IT_FCAT-seltext_M = 'CURRENCY'.IT_FCAT-seltext_S = 'CURR'.APPEND IT_FCAT.

Page 3: abapprogs

CLEAR IT_FCAT.

*7TH COLUMN : VKORG : Sales OrganizationIT_FCAT-COL_POS = 7.IT_FCAT-FIELDNAME = 'VKORG'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'SALES ORGANIZATION'.IT_FCAT-seltext_M = 'SALES ORG'.IT_FCAT-seltext_S = 'SALES ORG'.APPEND IT_FCAT.CLEAR IT_FCAT.

ENDFORM. " BUILD_FCAT

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA ONTO ALV GRID.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM* I_STRUCTURE_NAME = I_GRID_TITLE = 'SALES REPORT' IT_FIELDCAT = IT_FCAT[] TABLES T_OUTTAB = IT_VBAK EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_GRID

*1)SEMI-AUTOMATICALLY GENERATE FIELDCATALOG : A BUILT-IN FUNCTION MODULE*'REUSE_ALV_FIELDCATALOG_MERGE' IS USED TO AUTOMATICALLTY GENERATE OR*BUILD SOME PART OF FIELDCATALOG BY PASSING AN INTERNAL*TABLE TO IT AND REMAINING PART IS DONE MANUALLYREPORT ZALV_FIELDCAT_SEMI_AUTO.

*TYPE GROUPTYPE-POOLS SLIS."SLIS IS A BUILT-IN TYPE GROUP WHICH CONTAINS USER DEFINED "DATA TYPES AND CONSTANTS

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.TABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

*TO CREATE AN INTERNAL TABLE IT_VBAP WITH SOME OF FIELDS OF VBAKDATA : BEGIN OF IT_VBAK OCCURS 10, VBELN LIKE VBAK-VBELN, ERDAT LIKE VBAK-ERDAT, ERNAM LIKE VBAK-ERNAM, AUART LIKE VBAK-AUART, NETWR LIKE VBAK-NETWR, WAERK LIKE VBAK-WAERK, VKORG LIKE VBAK-VKORG,

Page 4: abapprogs

END OF IT_VBAK.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO CREATE INTERNAL TABLE IT_FCAT TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

PERFORM GET_DATA.PERFORM BUILD_FCAT.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES*DOCUMENT NUMBERSSELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAMEV_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form BUILD_FCAT*&---------------------------------------------------------------------*FORM BUILD_FCAT .*FM:REUSE_ALV_FIELDCATALOG_MERGE: WILL AUTOMATICALLY GENERATE FIELD*CATALOG BASED*ON INTERNAL TABLE DEFINITION CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = V_PROGRAM I_INTERNAL_TABNAME = 'IT_VBAK'* I_STRUCTURE_NAME = I_INCLNAME = V_PROGRAM CHANGING CT_FIELDCAT = IT_FCAT[] EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS = 3 . IF SY-SUBRC = 0. LOOP AT IT_FCAT.

CASE IT_FCAT-FIELDNAME. WHEN 'VBELN'. IT_FCAT-JUST = 'C'. IT_FCAT-HOTSPOT = 'X'. WHEN 'ERDAT'. IT_FCAT-EDIT_MASK = '__/__/____'. WHEN 'ERNAM'.

Page 5: abapprogs

IT_FCAT-JUST = 'C'. IT_FCAT-EMPHASIZE = 'C310'. WHEN 'NETWR'. IT_FCAT-DO_SUM = 'X'. ENDCASE. MODIFY IT_FCAT .ENDLOOP.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

ENDFORM. " BUILD_FCAT

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA ONTO ALV GRID.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM I_CALLBACK_TOP_OF_PAGE = 'LIST_HEADER' I_GRID_TITLE = 'SALES REPORT' IT_FIELDCAT = IT_FCAT[] TABLES T_OUTTAB = IT_VBAK EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_GRID

FORM LIST_HEADER.

*TO CREATE INTERNAL TABLE IT_HEADER OF TYPE SLIS_T_LISTHEADERDATA IT_HEADER TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

*TO FILL.H = HEADERIT_HEADER-TYP = 'H'.IT_HEADER-INFO = 'SALES DOCUMENT HEADER DATA'.APPEND IT_HEADER.CLEAR IT_HEADER.

*S = SelectionIT_HEADER-TYP = 'S'.IT_HEADER-INFO = 'SALES DATA'.APPEND IT_HEADER.CLEAR IT_HEADER.

*REUSE_ALV_COMMENTARY_WRITE : THIS FUNCTION MODULE WILL DISPLAY* HEADER DATA AND LOGO ONTO TOP OF PAGE OF OUTPUT SCREEN.CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = IT_HEADER[] I_LOGO = 'VERSIONIT_1'

Page 6: abapprogs

.

ENDFORM.

*ALV BLOCK LIST : IS USED TO DISPLAY MORE THAN ONE INTERNAL TABLE DATA ON TO ALV BLOCK LISTREPORT ZALV_BLOCK_LIST.

TABLES : EKKO.

TYPE-POOLS SLIS.

*TO CREATE INTERNAL TABLE IT_EKKO OF STRUCTURE EKKODATA IT_EKKO TYPE TABLE OF EKKO.

*TO CREATE INTERNAL TABLE IT_EKPO OF STRUCTURE EKPODATA IT_EKPO TYPE TABLE OF EKPO.

*TO CREATE FIELD CATALOG FOR STRUCTURE EKKO.DATA IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV.

*TO CREATE FIELD CATALOG FOR STRUCTURE EKPO.DATA IT_FCAT2 TYPE SLIS_T_FIELDCAT_ALV.

*TO CREATE A VARIABLE TO STORE CURRENT PROGRAM.DATA V_PROGRAM LIKE SY-REPID VALUE SY-REPID.

*TO CREATE WORK AREA FOR LAYOUTDATA WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

*TO CREATE INTERNAL TABLE FOR EVENTS.DATA I_EVENTS TYPE SLIS_T_EVENT.

*TO PROVIDE RANGE OF INPUT FIELDS AS PURCHASE ORDERS.SELECT-OPTIONS S_EBELN FOR EKKO-EBELN.

START-OF-SELECTION.PERFORM GET_DATA.PERFORM INIT_ALV_BLOCK.PERFORM BUILT_FCAT1.PERFORM APPEND_IT_EKKO_ALV_BLOCK_LIST.PERFORM BUILD_FCAT2.PERFORM APPEND_IT_EKPO_ALV_BLOCK_LIST.PERFORM DISPLAY_ALV_BLOCK_LIST.

*&---------------------------------------------------------------------**& Form GET_DATA

Page 7: abapprogs

*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET PURCHASE ORDER HEADER DATA FROM DBTABLE : EKKO INTO INTERNAL TABLE IT_EKKO.SELECT * FROM EKKO INTO TABLE IT_EKKO WHERE EBELN IN S_EBELN.

*TO GET PURCHASE ORDER ITEM DATA FROM DBTABLE : EKPO INTO INTERNAL TABLE IT_EKPOSELECT * FROM EKPO INTO TABLE IT_EKPO FOR ALL ENTRIES IN IT_EKKO WHERE EBELN = IT_EKKO-EBELN.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form INIT_ALV_BLOCK*&---------------------------------------------------------------------*FORM INIT_ALV_BLOCK .

* 1)TO INITIALIZE ALV BLOCK : FM : REUSE_ALV_BLOCK_LIST_INITCALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM .

ENDFORM. " INIT_ALV_BLOCK

*&---------------------------------------------------------------------**& Form BUILT_FCAT1*&---------------------------------------------------------------------*FORM BUILT_FCAT1 .*2)TO CREATE FIELDCATALOG FOR STRUCTURE EKKO FM:REUSE_ALV_FIELDCATALOG_MERGECALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = V_PROGRAM I_STRUCTURE_NAME = 'EKKO' CHANGING CT_FIELDCAT = IT_FCAT1 EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_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.

ENDFORM. " BUILT_FCAT1

*&---------------------------------------------------------------------**& Form APPEND_IT_EKKO_ALV_BLOCK_LIST*&---------------------------------------------------------------------*FORM APPEND_IT_EKKO_ALV_BLOCK_LIST .*3)TO APPEND FIELDCATALOG AND INTERNAL TABLE DATA TO ALV BLOCK LIST:* FM: REUSE_ALV_BLOCK_LIST_APPENDCALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND' EXPORTING

Page 8: abapprogs

IS_LAYOUT = WA_LAYOUT IT_FIELDCAT = IT_FCAT1 I_TABNAME = 'IT_EKKO' IT_EVENTS = I_EVENTS TABLES T_OUTTAB = IT_EKKO EXCEPTIONS PROGRAM_ERROR = 1 MAXIMUM_OF_APPENDS_REACHED = 2 OTHERS = 3 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

ENDFORM. " APPEND_ALV_BLOCK_LIST

*&---------------------------------------------------------------------**& Form BUILD_FCAT2*&---------------------------------------------------------------------*FORM BUILD_FCAT2 .

*4)TO CREATE FIELDCATALOG FOR STRUCTURE EKPO FM:REUSE_ALV_FIELDCATALOG_MERGECALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = V_PROGRAM I_STRUCTURE_NAME = 'EKPO' CHANGING CT_FIELDCAT = IT_FCAT2 EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_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.

ENDFORM. " BUILD_FCAT2

*&---------------------------------------------------------------------**& Form APPEND_IT_EKPO_ALV_BLOCK_LIST*&---------------------------------------------------------------------*FORM APPEND_IT_EKPO_ALV_BLOCK_LIST .*5)TO APPEND FIELDCATALOG AND SECOND INTERNAL TABLE DATA TO* ALV BLOCK LIST : FM : REUSE_ALV_BLOCK_LIST_APPENDCALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND' EXPORTING IS_LAYOUT = WA_LAYOUT IT_FIELDCAT = IT_FCAT2 I_TABNAME = 'IT_EKPO' IT_EVENTS = I_EVENTS TABLES T_OUTTAB = IT_EKPO EXCEPTIONS PROGRAM_ERROR = 1 MAXIMUM_OF_APPENDS_REACHED = 2 OTHERS = 3 .IF SY-SUBRC <> 0.

Page 9: abapprogs

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

ENDFORM. " APPEND_IT_EKPO_ALV_BLOCK_LIST

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_BLOCK_LIST*&---------------------------------------------------------------------*FORM DISPLAY_ALV_BLOCK_LIST .* 6) Display a BLOCK ALV : REUSE_ALV_BLOCK_LIST_DISPLAY

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY' EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_BLOCK_LIST

*1)AUTOMATICALLY GENERATE FIELDCATALOG : A BUILT-IN FUNCTION MODULE*'REUSE_ALV_FIELDCATALOG_MERGE' IS USED TO AUTOMATICALLTY GENERATE OR*BUILD FIELDCATALOG BY PASSING AN INTERNAL*TABLE TO IT.REPORT ZALV_FIELDCAT_AUTO_IT_VBAK.

*TYPE GROUPTYPE-POOLS SLIS."SLIS IS A BUILT-IN TYPE GROUP WHICH CONTAINS USER DEFINED "DATA TYPES AND CONSTANTS

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.TABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

*TO CREATE AN INTERNAL TABLE IT_VBAP WITH SOME OF FIELDS OF VBAKDATA : BEGIN OF IT_VBAK OCCURS 10, VBELN LIKE VBAK-VBELN, ERDAT LIKE VBAK-ERDAT, ERNAM LIKE VBAK-ERNAM,

Page 10: abapprogs

AUART LIKE VBAK-AUART, NETWR LIKE VBAK-NETWR, WAERK LIKE VBAK-WAERK, VKORG LIKE VBAK-VKORG, END OF IT_VBAK.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO CREATE INTERNAL TABLE IT_FCAT TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

PERFORM GET_DATA.PERFORM BUILD_FCAT.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES*DOCUMENT NUMBERSSELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAMEV_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form BUILD_FCAT*&---------------------------------------------------------------------*FORM BUILD_FCAT .*FM:REUSE_ALV_FIELDCATALOG_MERGE: WILL AUTOMATICALLY GENERATE FIELD*CATALOG BASED*ON INTERNAL TABLE DEFINITION CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = V_PROGRAM I_INTERNAL_TABNAME = 'IT_VBAK'* I_STRUCTURE_NAME = I_INCLNAME = V_PROGRAM CHANGING CT_FIELDCAT = IT_FCAT EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_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.

Page 11: abapprogs

ENDFORM. " BUILD_FCAT

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA ONTO ALV GRID.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM* I_STRUCTURE_NAME = I_GRID_TITLE = 'SALES REPORT' IT_FIELDCAT = IT_FCAT TABLES T_OUTTAB = IT_VBAK EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_GRID

*1)AUTOMATICALLY GENERATE FIELDCATALOG : A BUILT-IN FUNCTION MODULE*'REUSE_ALV_FIELDCATALOG_MERGE' IS USED TO AUTOMATICALLTY GENERATE OR*BUILD FIELDCATALOG BY PASSING ABAP DICTIONARY STRUCTURE OR INTERNAL*TABLE TO IT.REPORT ZALV_FIELDCAT_AUTO.

*TYPE GROUPTYPE-POOLS SLIS. "SLIS IS A BUILT-IN TYPE GROUP WHICH CONTAINS USER DEFINED "DATA TYPES AND CONSTANTS

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.TABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

*TO CREATE AN INTERNAL TABLE IT_VBAP OF STRUCTURE VBAKDATA IT_VBAK LIKE VBAK OCCURS 10 WITH HEADER LINE.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO CREATE INTERNAL TABLE IT_FCAT TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

PERFORM GET_DATA.

Page 12: abapprogs

PERFORM BUILD_FCAT.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES DOCUMENT NUMBERSSELECT * FROM VBAK INTO TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAMEV_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form BUILD_FCAT*&---------------------------------------------------------------------*FORM BUILD_FCAT .*FM:REUSE_ALV_FIELDCATALOG_MERGE: WILL AUTOMATICALLY GENERATE FIELD CATALOG BASED*IN ABAP DICTIONARY STRUCTURE OR INTERNAL TABLECALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = V_PROGRAM I_STRUCTURE_NAME = 'VBAK'* I_CLIENT_NEVER_DISPLAY = 'X' CHANGING CT_FIELDCAT = IT_FCAT EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_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.

ENDFORM. " BUILD_FCAT

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA ONTO ALV GRID.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM* I_STRUCTURE_NAME = I_GRID_TITLE = 'SALES REPORT' IT_FIELDCAT = IT_FCAT TABLES T_OUTTAB = PROGRAM_ERROR = 1 OTHERS = 2 .IF SY-SUBRC <> 0.

Page 13: abapprogs

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

ENDFORM. " DISPLAY_ALV_GRID

*REUSE_ALV_HIERSEQ_LIST_DISPLAY : THIS FM WILL DISPLAY HIERARCHICAL ALV WITH HEADER AND ITEM*DATA ONTO IT.REPORT ZALV_HIERARCHICAL_REPORT.

TABLES EKKO.

TYPE-POOLS SLIS.

*TO CREATE INTERNAL TABLE IT_EKKO OF STRUCTURE EKKODATA IT_EKKO TYPE TABLE OF EKKO.

*TO CREATE INTERNAL TABLE IT_EKPO OF STRUCTURE EKPODATA IT_EKPO TYPE TABLE OF EKPO.

*TO CREATE A VARIABLE TO STORE CURRENT PROGRAM.DATA V_PROGRAM LIKE SY-REPID VALUE SY-REPID.

*TO CREATE STRUCTURE VARIABLE TO CAPTURE KEY FIELDS.DATA WA_KEY TYPE SLIS_KEYINFO_ALV.

*TO PROVIDE RANGE OF INPUT FIELDS AS PURCHASE ORDERS.SELECT-OPTIONS S_EBELN FOR EKKO-EBELN.

START-OF-SELECTION.PERFORM GET_DATA.PERFORM FILL_KEY.PERFORM DISPLAY_HIERARCHIAL_ALV.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET PURCHASE ORDER HEADER DATA FROM DBTABLE : EKKO INTO INTERNAL TABLE IT_EKKO.SELECT * FROM EKKO INTO TABLE IT_EKKO WHERE EBELN IN S_EBELN.

*TO GET PURCHASE ORDER ITEM DATA FROM DBTABLE : EKPO INTO INTERNAL TABLE IT_EKPOSELECT * FROM EKPO INTO TABLE IT_EKPO FOR ALL ENTRIES IN IT_EKKO WHERE EBELN = IT_EKKO-EBELN.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form FILL_KEY*&---------------------------------------------------------------------*FORM FILL_KEY .

*TO ASSIGN KEY FIELDS TO VARIABLES.WA_KEY-header01 = 'EBELN'.

Page 14: abapprogs

WA_KEY-item01 = 'EBELN'.

ENDFORM. " FILL_KEY

*&---------------------------------------------------------------------**& Form DISPLAY_HIERARCHIAL_ALV*&---------------------------------------------------------------------*FORM DISPLAY_HIERARCHIAL_ALV .

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM I_TABNAME_HEADER = 'IT_EKKO' I_TABNAME_ITEM = 'IT_EKPO' I_STRUCTURE_NAME_HEADER = 'EKKO' I_STRUCTURE_NAME_ITEM = 'EKPO' IS_KEYINFO = WA_KEY TABLES T_OUTTAB_HEADER = IT_EKKO T_OUTTAB_ITEM = IT_EKPO EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_HIERARCHIAL_ALV

* ALV INTERACTIVE REPORT : IS REPORT PROGRAM WHICH GENERATES BASIC*LIST FROM WHERE THE USER CALLS FURTHER DATA BY DOUBLE CLICKING OR*SELECTING MENU ITEM ON ALV GRID THEN THE DATA DISPLAYED WILL BE*ON THE NEXT ALV GRID AND SO ON.REPORT ZALV_INTERACTIVE_REPORT.

*TYPE GROUPTYPE-POOLS SLIS."SLIS IS A BUILT-IN TYPE GROUP WHICH CONTAINS USER DEFINED "DATA TYPES AND CONSTANTS

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.TABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF VBAK.TYPES: BEGIN OF LINE_VBAK , VBELN LIKE VBAK-VBELN, ERDAT LIKE VBAK-ERDAT, ERNAM LIKE VBAK-ERNAM, AUART LIKE VBAK-AUART, NETWR LIKE VBAK-NETWR, WAERK LIKE VBAK-WAERK, VKORG LIKE VBAK-VKORG, END OF LINE_VBAK.

Page 15: abapprogs

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF VBAP.TYPES: BEGIN OF LINE_VBAP , VBELN LIKE VBAP-VBELN, POSNR LIKE VBAP-POSNR, MATNR LIKE VBAP-MATNR, ARKTX LIKE VBAP-ARKTX, NETWR LIKE VBAP-NETWR, WAERK LIKE VBAP-WAERK, KWMENG LIKE VBAP-KWMENG, NETPR LIKE VBAP-NETPR, END OF LINE_VBAP.

*TO CREATE AN INTERNAL TABLE IT_VBAK WITH SOME OF FIELDS OF VBAKDATA IT_VBAK TYPE TABLE OF LINE_VBAK WITH HEADER LINE.

*TO CREATE AN INTERNAL TABLE IT_VBAP WITH SOME OF FIELDS OF VBAPDATA IT_VBAP TYPE TABLE OF LINE_VBAP WITH HEADER LINE.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO CREATE INTERNAL TABLE IT_FCAT TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV .

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

PERFORM GET_DATA.PERFORM BUILD_FCAT.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES*DOCUMENT NUMBERSSELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAMEV_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form BUILD_FCAT*&---------------------------------------------------------------------*FORM BUILD_FCAT .*1ST COLUMN : VBELN : SALES DOCUMENT NUMBERIT_FCAT-COL_POS = 1.IT_FCAT-FIELDNAME = 'VBELN'.IT_FCAT-TABNAME = 'IT_VBAK'.

Page 16: abapprogs

IT_FCAT-KEY = 'X'.IT_FCAT-JUST = 'C'.IT_FCAT-seltext_l = 'SALES DOCUMENT NUMBER'.IT_FCAT-seltext_M = 'SALES DOC.NO'.IT_FCAT-seltext_S = 'SDNO'.IT_FCAT-hotspot = 'X'.*IT_FCAT-no_convext = 'X'.IT_FCAT-no_zero = 'X'.APPEND IT_FCAT.CLEAR IT_FCAT.

*2ND COLUMN : ERDAT: Date on Which Record Was CreatedIT_FCAT-COL_POS = 2.IT_FCAT-FIELDNAME = 'ERDAT'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'DATE '.IT_FCAT-seltext_M = 'DATE'.IT_FCAT-seltext_S = 'DATE'.IT_FCAT-EDIT_MASK = '__/__/____'.APPEND IT_FCAT.CLEAR IT_FCAT.

*3RD COLUMN : ERNAM : Name of Person who Created the ObjectIT_FCAT-COL_POS = 3.IT_FCAT-FIELDNAME = 'ERNAM'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-JUST = 'R'.IT_FCAT-emphasize = 'C611'.IT_FCAT-seltext_l = 'NAME OF PERSON CREATED'.IT_FCAT-seltext_M = 'NAME'.IT_FCAT-seltext_S = 'NAME'.APPEND IT_FCAT.CLEAR IT_FCAT.

*4TH COLUMN : AUART : Sales Document TypeIT_FCAT-COL_POS = 4.IT_FCAT-FIELDNAME = 'AUART'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-JUST = 'C'.IT_FCAT-emphasize = 'C401'.IT_FCAT-seltext_l = 'SALES DOCUMNET TYPE'.IT_FCAT-seltext_M = 'SALES DOC. TYPE'.IT_FCAT-seltext_S = 'SDTYPE'.APPEND IT_FCAT.CLEAR IT_FCAT.

*5TH COLUMN : NETWR : Net Value of the Sales Order in Document CurrencyIT_FCAT-COL_POS = 5.IT_FCAT-FIELDNAME = 'NETWR'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-do_sum = 'X'.IT_FCAT-seltext_l = 'NET VALUE'.IT_FCAT-seltext_M = 'NET VALUE'.IT_FCAT-seltext_S = 'NET VAL'.APPEND IT_FCAT.CLEAR IT_FCAT.

*6TH COLUMN : WAERK : SD Document CurrencyIT_FCAT-COL_POS = 6.IT_FCAT-FIELDNAME = 'WAERK'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'CURRENCY'.IT_FCAT-seltext_M = 'CURRENCY'.IT_FCAT-seltext_S = 'CURR'.APPEND IT_FCAT.CLEAR IT_FCAT.

Page 17: abapprogs

*7TH COLUMN : VKORG : Sales OrganizationIT_FCAT-COL_POS = 7.IT_FCAT-FIELDNAME = 'VKORG'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'SALES ORGANIZATION'.IT_FCAT-seltext_M = 'SALES ORG'.IT_FCAT-seltext_S = 'SALES ORG'.APPEND IT_FCAT.CLEAR IT_FCAT.

ENDFORM. " BUILD_FCAT

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA : IT_VBAK ONTO ALV GRID(BASIC LIST).CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM I_CALLBACK_USER_COMMAND = 'HANDLE_INTERACTION' I_GRID_TITLE = 'SALES DOCMENT HEADER DATA' IT_FIELDCAT = IT_FCAT[] TABLES T_OUTTAB = IT_VBAK EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_GRID

*THE EVENT 'USER_COMMAND' IS TRIGGERED WHEN USER DOUBLE CLICK ON BASIC*LIST(ALV GRID) AND ITS*SUBROUTINE 'HANDLE_INTERACTION IS CALLED BY THE SYSTEM.FORM HANDLE_INTERACTION USING V_FCODE LIKE SY-UCOMM V_SEL TYPE SLIS_SELFIELD.

IF V_SEL-FIELDNAME = 'VBELN' AND V_SEL-VALUE <> ' '.CASE V_FCODE.WHEN '&IC1'.*TO READ TABLE IT_VBAK.READ TABLE IT_VBAK INDEX V_SEL-TABINDEX.IF SY-SUBRC = 0.SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_VBAP WHERE VBELN = IT_VBAK-VBELN.IF SY-SUBRC = 0.PERFORM BUILD_FCAT1.*TO DISPLAY DATA : IT_VBAP ONTO ALV GRID(SECONDARY LIST).CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM* I_CALLBACK_USER_COMMAND = 'HANDLE_INTERACTION' I_GRID_TITLE = 'SALES DOCUMENT ITEM DATA' IT_FIELDCAT = IT_FCAT1 TABLES

Page 18: abapprogs

T_OUTTAB = IT_VBAP EXCEPTIONS PROGRAM_ERROR = 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.ELSE.MESSAGE I100(ZMSG) WITH 'SALES ITEM NOT FOUND'.ENDIF.ENDIF.

ENDCASE.ELSE.MESSAGE I100(ZMSG) WITH 'INVALID CURSOR POSITION'.ENDIF.

ENDFORM.

*&---------------------------------------------------------------------**& Form BUILD_FCAT1*&---------------------------------------------------------------------*FORM BUILD_FCAT1 .

*FM:REUSE_ALV_FIELDCATALOG_MERGE : THIS WILL GENERATE FIELDCATALOG BASED*ON INTERNAL TABLECALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = V_PROGRAM* I_INTERNAL_TABNAME = 'IT_VBAP' I_STRUCTURE_NAME = 'ZSTRUCT_VBAP'* I_INCLNAME = V_PROGRAM CHANGING CT_FIELDCAT = IT_FCAT1 EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_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.

ENDFORM. " BUILD_FCAT1

* ALV INTERACTIVE REPORT : IS REPORT PROGRAM WHICH GENERATES BASIC*LIST FROM WHERE THE USER CALLS FURTHER DATA BY DOUBLE CLICKING OR*SELECTING MENU ITEM ON ALV GRID THEN THE DATA DISPLAYED WILL BE*ON THE NEXT ALV GRID AND SO ON.REPORT ZALV_INTERACTIVE_REPORT.

*TYPE GROUPTYPE-POOLS SLIS."SLIS IS A BUILT-IN TYPE GROUP WHICH CONTAINS USER DEFINED "DATA TYPES AND CONSTANTS

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.TABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

Page 19: abapprogs

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF VBAK.TYPES: BEGIN OF LINE_VBAK , VBELN LIKE VBAK-VBELN, ERDAT LIKE VBAK-ERDAT, ERNAM LIKE VBAK-ERNAM, AUART LIKE VBAK-AUART, NETWR LIKE VBAK-NETWR, WAERK LIKE VBAK-WAERK, VKORG LIKE VBAK-VKORG, END OF LINE_VBAK.

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF VBAP.TYPES: BEGIN OF LINE_VBAP , VBELN LIKE VBAP-VBELN, POSNR LIKE VBAP-POSNR, MATNR LIKE VBAP-MATNR, ARKTX LIKE VBAP-ARKTX, NETWR LIKE VBAP-NETWR, WAERK LIKE VBAP-WAERK, KWMENG LIKE VBAP-KWMENG, NETPR LIKE VBAP-NETPR, END OF LINE_VBAP.

*TO CREATE AN INTERNAL TABLE IT_VBAK WITH SOME OF FIELDS OF VBAKDATA IT_VBAK TYPE TABLE OF LINE_VBAK WITH HEADER LINE.

*TO CREATE AN INTERNAL TABLE IT_VBAP WITH SOME OF FIELDS OF VBAPDATA IT_VBAP TYPE TABLE OF LINE_VBAP WITH HEADER LINE.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO CREATE INTERNAL TABLE IT_FCAT TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV .

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

PERFORM GET_DATA.PERFORM BUILD_FCAT.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES*DOCUMENT NUMBERSSELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAMEV_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

Page 20: abapprogs

*&---------------------------------------------------------------------**& Form BUILD_FCAT*&---------------------------------------------------------------------*FORM BUILD_FCAT .*1ST COLUMN : VBELN : SALES DOCUMENT NUMBERIT_FCAT-COL_POS = 1.IT_FCAT-FIELDNAME = 'VBELN'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-KEY = 'X'.IT_FCAT-JUST = 'C'.IT_FCAT-seltext_l = 'SALES DOCUMENT NUMBER'.IT_FCAT-seltext_M = 'SALES DOC.NO'.IT_FCAT-seltext_S = 'SDNO'.IT_FCAT-hotspot = 'X'.*IT_FCAT-no_convext = 'X'.IT_FCAT-no_zero = 'X'.APPEND IT_FCAT.CLEAR IT_FCAT.

*2ND COLUMN : ERDAT: Date on Which Record Was CreatedIT_FCAT-COL_POS = 2.IT_FCAT-FIELDNAME = 'ERDAT'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'DATE '.IT_FCAT-seltext_M = 'DATE'.IT_FCAT-seltext_S = 'DATE'.IT_FCAT-EDIT_MASK = '__/__/____'.APPEND IT_FCAT.CLEAR IT_FCAT.

*3RD COLUMN : ERNAM : Name of Person who Created the ObjectIT_FCAT-COL_POS = 3.IT_FCAT-FIELDNAME = 'ERNAM'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-JUST = 'R'.IT_FCAT-emphasize = 'C611'.IT_FCAT-seltext_l = 'NAME OF PERSON CREATED'.IT_FCAT-seltext_M = 'NAME'.IT_FCAT-seltext_S = 'NAME'.APPEND IT_FCAT.CLEAR IT_FCAT.

*4TH COLUMN : AUART : Sales Document TypeIT_FCAT-COL_POS = 4.IT_FCAT-FIELDNAME = 'AUART'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-JUST = 'C'.IT_FCAT-emphasize = 'C401'.IT_FCAT-seltext_l = 'SALES DOCUMNET TYPE'.IT_FCAT-seltext_M = 'SALES DOC. TYPE'.IT_FCAT-seltext_S = 'SDTYPE'.APPEND IT_FCAT.CLEAR IT_FCAT.

*5TH COLUMN : NETWR : Net Value of the Sales Order in Document CurrencyIT_FCAT-COL_POS = 5.IT_FCAT-FIELDNAME = 'NETWR'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-do_sum = 'X'.IT_FCAT-seltext_l = 'NET VALUE'.IT_FCAT-seltext_M = 'NET VALUE'.IT_FCAT-seltext_S = 'NET VAL'.APPEND IT_FCAT.

Page 21: abapprogs

CLEAR IT_FCAT.

*6TH COLUMN : WAERK : SD Document CurrencyIT_FCAT-COL_POS = 6.IT_FCAT-FIELDNAME = 'WAERK'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'CURRENCY'.IT_FCAT-seltext_M = 'CURRENCY'.IT_FCAT-seltext_S = 'CURR'.APPEND IT_FCAT.CLEAR IT_FCAT.

*7TH COLUMN : VKORG : Sales OrganizationIT_FCAT-COL_POS = 7.IT_FCAT-FIELDNAME = 'VKORG'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'SALES ORGANIZATION'.IT_FCAT-seltext_M = 'SALES ORG'.IT_FCAT-seltext_S = 'SALES ORG'.APPEND IT_FCAT.CLEAR IT_FCAT.

ENDFORM. " BUILD_FCAT

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA : IT_VBAK ONTO ALV GRID(BASIC LIST).CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM I_CALLBACK_USER_COMMAND = 'HANDLE_INTERACTION' I_GRID_TITLE = 'SALES DOCMENT HEADER DATA' IT_FIELDCAT = IT_FCAT[] TABLES T_OUTTAB = IT_VBAK EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_GRID

*THE EVENT 'USER_COMMAND' IS TRIGGERED WHEN USER DOUBLE CLICK ON BASIC*LIST(ALV GRID) AND ITS*SUBROUTINE 'HANDLE_INTERACTION IS CALLED BY THE SYSTEM.FORM HANDLE_INTERACTION USING V_FCODE LIKE SY-UCOMM V_SEL TYPE SLIS_SELFIELD.

IF V_SEL-FIELDNAME = 'VBELN' AND V_SEL-VALUE <> ' '.CASE V_FCODE.WHEN '&IC1'.*TO READ TABLE IT_VBAK.READ TABLE IT_VBAK INDEX V_SEL-TABINDEX.IF SY-SUBRC = 0.SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_VBAP

Page 22: abapprogs

WHERE VBELN = IT_VBAK-VBELN.IF SY-SUBRC = 0.PERFORM BUILD_FCAT1.*TO DISPLAY DATA : IT_VBAP ONTO ALV GRID(SECONDARY LIST).CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM* I_CALLBACK_USER_COMMAND = 'HANDLE_INTERACTION' I_GRID_TITLE = 'SALES DOCUMENT ITEM DATA' IT_FIELDCAT = IT_FCAT1 TABLES T_OUTTAB = IT_VBAP EXCEPTIONS PROGRAM_ERROR = 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.ELSE.MESSAGE I100(ZMSG) WITH 'SALES ITEM NOT FOUND'.ENDIF.ENDIF.

ENDCASE.ELSE.MESSAGE I100(ZMSG) WITH 'INVALID CURSOR POSITION'.ENDIF.

ENDFORM.

*&---------------------------------------------------------------------**& Form BUILD_FCAT1*&---------------------------------------------------------------------*FORM BUILD_FCAT1 .

*FM:REUSE_ALV_FIELDCATALOG_MERGE : THIS WILL GENERATE FIELDCATALOG BASED*ON INTERNAL TABLECALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = V_PROGRAM* I_INTERNAL_TABNAME = 'IT_VBAP' I_STRUCTURE_NAME = 'ZSTRUCT_VBAP'* I_INCLNAME = V_PROGRAM CHANGING CT_FIELDCAT = IT_FCAT1 EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_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.

ENDFORM. " BUILD_FCAT1

* ALV INTERACTIVE REPORT : IS REPORT PROGRAM WHICH GENERATES BASIC*LIST FROM WHERE THE USER CALLS FURTHER DATA BY SELECTING MENU ITEM OR PUSHBUTTON

Page 23: abapprogs

*ON ALV GRID THEN THE DATA DISPLAYED WILL BE*ON THE NEXT ALV GRID AND SO ON.REPORT ZALV_INTERACTIVE_REPORT_BUTTON.

*TYPE GROUPTYPE-POOLS SLIS."SLIS IS A BUILT-IN TYPE GROUP WHICH CONTAINS USER DEFINED "DATA TYPES AND CONSTANTS

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.TABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF VBAK.TYPES: BEGIN OF LINE_VBAK , VBELN LIKE VBAK-VBELN, ERDAT LIKE VBAK-ERDAT, ERNAM LIKE VBAK-ERNAM, AUART LIKE VBAK-AUART, NETWR LIKE VBAK-NETWR, WAERK LIKE VBAK-WAERK, VKORG LIKE VBAK-VKORG, END OF LINE_VBAK.

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF VBAP.TYPES: BEGIN OF LINE_VBAP , VBELN LIKE VBAP-VBELN, POSNR LIKE VBAP-POSNR, MATNR LIKE VBAP-MATNR, ARKTX LIKE VBAP-ARKTX, NETWR LIKE VBAP-NETWR, WAERK LIKE VBAP-WAERK, KWMENG LIKE VBAP-KWMENG, NETPR LIKE VBAP-NETPR, END OF LINE_VBAP.

*TO CREATE AN INTERNAL TABLE IT_VBAK WITH SOME OF FIELDS OF VBAKDATA IT_VBAK TYPE TABLE OF LINE_VBAK WITH HEADER LINE.

*TO CREATE AN INTERNAL TABLE IT_VBAP WITH SOME OF FIELDS OF VBAPDATA IT_VBAP TYPE TABLE OF LINE_VBAP WITH HEADER LINE.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO CREATE INTERNAL TABLE IT_FCAT TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV .

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

PERFORM GET_DATA.PERFORM BUILD_FCAT.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES

Page 24: abapprogs

*DOCUMENT NUMBERSSELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAMEV_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form BUILD_FCAT*&---------------------------------------------------------------------*FORM BUILD_FCAT .*1ST COLUMN : VBELN : SALES DOCUMENT NUMBERIT_FCAT-COL_POS = 1.IT_FCAT-FIELDNAME = 'VBELN'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-KEY = 'X'.IT_FCAT-JUST = 'C'.IT_FCAT-seltext_l = 'SALES DOCUMENT NUMBER'.IT_FCAT-seltext_M = 'SALES DOC.NO'.IT_FCAT-seltext_S = 'SDNO'.*IT_FCAT-hotspot = 'X'.*IT_FCAT-no_convext = 'X'.IT_FCAT-no_zero = 'X'.APPEND IT_FCAT.CLEAR IT_FCAT.

*2ND COLUMN : ERDAT: Date on Which Record Was CreatedIT_FCAT-COL_POS = 2.IT_FCAT-FIELDNAME = 'ERDAT'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'DATE '.IT_FCAT-seltext_M = 'DATE'.IT_FCAT-seltext_S = 'DATE'.IT_FCAT-EDIT_MASK = '__/__/____'.APPEND IT_FCAT.CLEAR IT_FCAT.

*3RD COLUMN : ERNAM : Name of Person who Created the ObjectIT_FCAT-COL_POS = 3.IT_FCAT-FIELDNAME = 'ERNAM'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-JUST = 'R'.IT_FCAT-emphasize = 'C611'.IT_FCAT-seltext_l = 'NAME OF PERSON CREATED'.IT_FCAT-seltext_M = 'NAME'.IT_FCAT-seltext_S = 'NAME'.APPEND IT_FCAT.CLEAR IT_FCAT.

*4TH COLUMN : AUART : Sales Document TypeIT_FCAT-COL_POS = 4.IT_FCAT-FIELDNAME = 'AUART'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-JUST = 'C'.IT_FCAT-emphasize = 'C401'.IT_FCAT-seltext_l = 'SALES DOCUMNET TYPE'.IT_FCAT-seltext_M = 'SALES DOC. TYPE'.IT_FCAT-seltext_S = 'SDTYPE'.APPEND IT_FCAT.

Page 25: abapprogs

CLEAR IT_FCAT.

*5TH COLUMN : NETWR : Net Value of the Sales Order in Document CurrencyIT_FCAT-COL_POS = 5.IT_FCAT-FIELDNAME = 'NETWR'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-do_sum = 'X'.IT_FCAT-seltext_l = 'NET VALUE'.IT_FCAT-seltext_M = 'NET VALUE'.IT_FCAT-seltext_S = 'NET VAL'.APPEND IT_FCAT.CLEAR IT_FCAT.

*6TH COLUMN : WAERK : SD Document CurrencyIT_FCAT-COL_POS = 6.IT_FCAT-FIELDNAME = 'WAERK'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'CURRENCY'.IT_FCAT-seltext_M = 'CURRENCY'.IT_FCAT-seltext_S = 'CURR'.APPEND IT_FCAT.CLEAR IT_FCAT.

*7TH COLUMN : VKORG : Sales OrganizationIT_FCAT-COL_POS = 7.IT_FCAT-FIELDNAME = 'VKORG'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'SALES ORGANIZATION'.IT_FCAT-seltext_M = 'SALES ORG'.IT_FCAT-seltext_S = 'SALES ORG'.APPEND IT_FCAT.CLEAR IT_FCAT.

ENDFORM. " BUILD_FCAT

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA : IT_VBAK ONTO ALV GRID(BASIC LIST).CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM I_CALLBACK_PF_STATUS_SET = 'HANDLE_GUI' I_CALLBACK_USER_COMMAND = 'HANDLE_INTERACTION' I_GRID_TITLE = 'SALES DOCMENT HEADER DATA' IT_FIELDCAT = IT_FCAT[] TABLES T_OUTTAB = IT_VBAK EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_GRID

*THE EVENT 'USER_COMMAND' IS TRIGGERED WHEN USER DOUBLE CLICK ON BASIC*LIST(ALV GRID) AND ITS*SUBROUTINE 'HANDLE_INTERACTION IS CALLED BY THE SYSTEM.

Page 26: abapprogs

FORM HANDLE_INTERACTION USING V_FCODE LIKE SY-UCOMM V_SEL TYPE SLIS_SELFIELD.

IF V_SEL-FIELDNAME = 'VBELN' AND V_SEL-VALUE <> ' '.CASE V_FCODE.WHEN 'FCT1' OR 'DISP'.*TO READ TABLE IT_VBAK.READ TABLE IT_VBAK INDEX V_SEL-TABINDEX.IF SY-SUBRC = 0.SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_VBAP WHERE VBELN = IT_VBAK-VBELN.IF SY-SUBRC = 0.PERFORM BUILD_FCAT1.*WINDOW*TO DISPLAY DATA : IT_VBAP ONTO ALV GRID(SECONDARY LIST).CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM* I_CALLBACK_USER_COMMAND = 'HANDLE_INTERACTION' I_GRID_TITLE = 'SALES DOCUMENT ITEM DATA' IT_FIELDCAT = IT_FCAT1 TABLES T_OUTTAB = IT_VBAP EXCEPTIONS PROGRAM_ERROR = 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.ELSE.MESSAGE I100(ZMSG) WITH 'SALES ITEM NOT FOUND'.ENDIF.ENDIF.WHEN 'FCT2' OR 'DELE'.LEAVE PROGRAM.ENDCASE.ELSE.MESSAGE I100(ZMSG) WITH 'INVALID CURSOR POSITION'.ENDIF.

ENDFORM.

*&---------------------------------------------------------------------**& Form BUILD_FCAT1*&---------------------------------------------------------------------*FORM BUILD_FCAT1 .

*FM:REUSE_ALV_FIELDCATALOG_MERGE : THIS WILL GENERATE FIELDCATALOG BASED*ON INTERNAL TABLECALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = V_PROGRAM* I_INTERNAL_TABNAME = 'IT_VBAP' I_STRUCTURE_NAME = 'ZSTRUCT_VBAP'* I_INCLNAME = V_PROGRAM CHANGING CT_FIELDCAT = IT_FCAT1 EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS = 3

Page 27: abapprogs

.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. " BUILD_FCAT1

FORM HANDLE_GUI USING IT_FCODES TYPE SLIS_T_EXTAB.

*FILL IT_FCODES WITH FUNCTION CODES INORDER TO DELETE THE PUSHBUTTONS FROM*STATUS OR GUI*tO CREATE WORK AREADATA WA_FCODE LIKE LINE OF IT_FCODES.

WA_FCODE-FCODE = '&INFO'.APPEND WA_FCODE TO IT_FCODES.

WA_FCODE-FCODE = '&AVE'.APPEND WA_FCODE TO IT_FCODES.

*TO ATTACH USER-INTERFACE OR STATUS TO ALV GRIDSET PF-STATUS 'STATUS1' EXCLUDING IT_FCODES.

ENDFORM.

* ALV INTERACTIVE REPORT : IS REPORT PROGRAM WHICH GENERATES BASIC*LIST FROM WHERE THE USER CALLS FURTHER DATA BY SELECTING MENU ITEM OR PUSHBUTTON*ON ALV GRID THEN THE DATA DISPLAYED WILL BE*ON THE NEXT ALV GRID AND SO ON.REPORT ZALV_INTERACTIVE_REPORT_EVENT1.

*TYPE GROUPTYPE-POOLS SLIS."SLIS IS A BUILT-IN TYPE GROUP WHICH CONTAINS USER DEFINED"DATA TYPES AND CONSTANTS

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.TABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF VBAK.TYPES: BEGIN OF LINE_VBAK , VBELN LIKE VBAK-VBELN, ERDAT LIKE VBAK-ERDAT, ERNAM LIKE VBAK-ERNAM, AUART LIKE VBAK-AUART, NETWR LIKE VBAK-NETWR, WAERK LIKE VBAK-WAERK, VKORG LIKE VBAK-VKORG, BOX(1), END OF LINE_VBAK.

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF VBAP.TYPES: BEGIN OF LINE_VBAP , VBELN LIKE VBAP-VBELN, POSNR LIKE VBAP-POSNR, MATNR LIKE VBAP-MATNR, ARKTX LIKE VBAP-ARKTX,

Page 28: abapprogs

NETWR LIKE VBAP-NETWR, WAERK LIKE VBAP-WAERK, KWMENG LIKE VBAP-KWMENG, NETPR LIKE VBAP-NETPR, END OF LINE_VBAP.

*TO CREATE AN INTERNAL TABLE IT_VBAK WITH SOME OF FIELDS OF VBAKDATA IT_VBAK TYPE TABLE OF LINE_VBAK WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_TEMP WITH ONE FIELD VBELN.DATA : BEGIN OF IT_TEMP OCCURS 10, VBELN LIKE VBAP-VBELN, END OF IT_TEMP.

*TO CREATE INTERNAL TABLE I_SORT OF TYPE SLIS_T_SORTINFO_ALV TO DISPLAY ASCENDING /DESCEDNING*ORDER WITH SUBTOTALDATA I_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.

*TO CREATE AN INTERNAL TABLE IT_VBAP WITH SOME OF FIELDS OF VBAPDATA IT_VBAP TYPE TABLE OF LINE_VBAP WITH HEADER LINE.

*TO CREATE AN INTERNAL TABLE I_EVENTS OF TYPE SLIS_T_EVENT TO STORE EVENTS WITH THEIR SUBROUTINESDATA I_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE.

*TO CREATE WORK AREA FOR ALV LAYOUT.DATA WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO CREATE INTERNAL TABLE IT_FCAT TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV FOR VBAPDATA IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE..

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

PERFORM GET_DATA.PERFORM BUILD_FCAT.PERFORM FILL_EVENTS.PERFORM FILL_ALV_LAYOUT.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES*DOCUMENT NUMBERS SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAME V_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

Page 29: abapprogs

*&---------------------------------------------------------------------**& Form BUILD_FCAT*&---------------------------------------------------------------------*FORM BUILD_FCAT .*1ST COLUMN : VBELN : SALES DOCUMENT NUMBER IT_FCAT-COL_POS = 1. IT_FCAT-FIELDNAME = 'VBELN'. IT_FCAT-TABNAME = 'IT_VBAK'. IT_FCAT-KEY = 'X'. IT_FCAT-JUST = 'C'. IT_FCAT-seltext_l = 'SALES DOCUMENT NUMBER'. IT_FCAT-seltext_M = 'SALES DOC.NO'. IT_FCAT-seltext_S = 'SDNO'.*IT_FCAT-hotspot = 'X'.*IT_FCAT-no_convext = 'X'. IT_FCAT-no_zero = 'X'. APPEND IT_FCAT. CLEAR IT_FCAT.

*2ND COLUMN : ERDAT: Date on Which Record Was Created IT_FCAT-COL_POS = 2. IT_FCAT-FIELDNAME = 'ERDAT'. IT_FCAT-TABNAME = 'IT_VBAK'. IT_FCAT-seltext_l = 'DATE '. IT_FCAT-seltext_M = 'DATE'. IT_FCAT-seltext_S = 'DATE'. IT_FCAT-EDIT_MASK = '__/__/____'. APPEND IT_FCAT. CLEAR IT_FCAT.

*3RD COLUMN : ERNAM : Name of Person who Created the Object IT_FCAT-COL_POS = 3. IT_FCAT-FIELDNAME = 'ERNAM'. IT_FCAT-TABNAME = 'IT_VBAK'. IT_FCAT-JUST = 'R'. IT_FCAT-emphasize = 'C611'. IT_FCAT-seltext_l = 'NAME OF PERSON CREATED'. IT_FCAT-seltext_M = 'NAME'. IT_FCAT-seltext_S = 'NAME'. APPEND IT_FCAT. CLEAR IT_FCAT.

*4TH COLUMN : AUART : Sales Document Type IT_FCAT-COL_POS = 4. IT_FCAT-FIELDNAME = 'AUART'. IT_FCAT-TABNAME = 'IT_VBAK'. IT_FCAT-JUST = 'C'. IT_FCAT-emphasize = 'C401'. IT_FCAT-seltext_l = 'SALES DOCUMNET TYPE'. IT_FCAT-seltext_M = 'SALES DOC. TYPE'. IT_FCAT-seltext_S = 'SDTYPE'. APPEND IT_FCAT. CLEAR IT_FCAT.

*5TH COLUMN : NETWR : Net Value of the Sales Order in Document Currency IT_FCAT-COL_POS = 5. IT_FCAT-FIELDNAME = 'NETWR'. IT_FCAT-TABNAME = 'IT_VBAK'. IT_FCAT-do_sum = 'X'. IT_FCAT-seltext_l = 'NET VALUE'. IT_FCAT-seltext_M = 'NET VALUE'. IT_FCAT-seltext_S = 'NET VAL'. APPEND IT_FCAT. CLEAR IT_FCAT.

Page 30: abapprogs

*6TH COLUMN : WAERK : SD Document Currency IT_FCAT-COL_POS = 6. IT_FCAT-FIELDNAME = 'WAERK'. IT_FCAT-TABNAME = 'IT_VBAK'. IT_FCAT-seltext_l = 'CURRENCY'. IT_FCAT-seltext_M = 'CURRENCY'. IT_FCAT-seltext_S = 'CURR'. APPEND IT_FCAT. CLEAR IT_FCAT.

*7TH COLUMN : VKORG : Sales Organization IT_FCAT-COL_POS = 7. IT_FCAT-FIELDNAME = 'VKORG'. IT_FCAT-TABNAME = 'IT_VBAK'. IT_FCAT-seltext_l = 'SALES ORGANIZATION'. IT_FCAT-seltext_M = 'SALES ORG'. IT_FCAT-seltext_S = 'SALES ORG'. APPEND IT_FCAT. CLEAR IT_FCAT.

ENDFORM. " BUILD_FCAT

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA : IT_VBAK ONTO ALV GRID(BASIC LIST). CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM I_GRID_TITLE = 'SALES DOCMENT HEADER DATA' IS_LAYOUT = WA_LAYOUT IT_FIELDCAT = IT_FCAT[] IT_EVENTS = I_EVENTS[] TABLES T_OUTTAB = IT_VBAK EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_GRID

*THE EVENT 'USER_COMMAND' IS TRIGGERED WHEN USER DOUBLE CLICK ON BASIC*LIST(ALV GRID) AND ITS*SUBROUTINE 'HANDLE_INTERACTION IS CALLED BY THE SYSTEM.FORM HANDLE_INTERACTION USING V_FCODE LIKE SY-UCOMM V_SEL TYPE SLIS_SELFIELD. REFRESH IT_TEMP. READ TABLE IT_VBAK WITH KEY BOX = 'X'. IF IT_VBAK-BOX = 'X'. CASE V_FCODE. WHEN 'FCT1' OR 'DISP'.*TO READ TABLE IT_VBAK. LOOP AT IT_VBAK WHERE BOX = 'X'. IT_TEMP-VBELN = IT_VBAK-VBELN. APPEND IT_TEMP. ENDLOOP. IF IT_TEMP[] IS NOT INITIAL.

Page 31: abapprogs

SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_VBAP FOR ALL ENTRIES IN IT_TEMP WHERE VBELN = IT_TEMP-VBELN. IF SY-SUBRC = 0. PERFORM BUILD_FCAT1. "THIS FIELDCATALOG FOR ITEM DATA(VBAP) PERFORM SUBTOTAL.*TO DISPLAY DATA :INTERNAL TABLE IT_VBAP ONTO ALV GRID(SECONDARY LIST). CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM I_GRID_TITLE = 'SALES DOCUMENT ITEM DATA' IT_FIELDCAT = IT_FCAT1[] IT_SORT = I_SORT[] TABLES T_OUTTAB = IT_VBAP EXCEPTIONS PROGRAM_ERROR = 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. ELSE. MESSAGE I100(ZMSG) WITH 'SALES ITEM NOT FOUND'. ENDIF. ENDIF. WHEN 'FCT2' OR 'DELE'. LEAVE PROGRAM. ENDCASE. ELSE. MESSAGE I100(ZMSG) WITH 'INVALID CURSOR POSITION'. ENDIF.ENDFORM. "HANDLE_INTERACTION

*&---------------------------------------------------------------------**& Form BUILD_FCAT1*&---------------------------------------------------------------------*FORM BUILD_FCAT1 .

*FM:REUSE_ALV_FIELDCATALOG_MERGE : THIS WILL GENERATE FIELDCATALOG BASED*ON INTERNAL TABLE CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = V_PROGRAM* I_INTERNAL_TABNAME = 'IT_VBAP' I_STRUCTURE_NAME = 'ZSTRUCT_VBAP'* I_INCLNAME = V_PROGRAM CHANGING CT_FIELDCAT = IT_FCAT1[] EXCEPTIONS INCONSISTENT_INTERFACE = 1 PROGRAM_ERROR = 2 OTHERS = 3 . IF SY-SUBRC = 0. LOOP AT IT_FCAT1. CASE IT_FCAT1-FIELDNAME. WHEN 'NETWR'. IT_FCAT1-DO_SUM = 'X'. WHEN 'KWMENG'. IT_FCAT1-DO_SUM = 'X'. WHEN 'NETPR'.

Page 32: abapprogs

IT_FCAT1-DO_SUM = 'X'. ENDCASE. MODIFY IT_FCAT1. ENDLOOP. ELSE. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

ENDFORM. " BUILD_FCAT1

*&---------------------------------------------------------------------**& Form HANDLE_GUI*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->IT_FCODES text*----------------------------------------------------------------------*FORM HANDLE_GUI USING IT_FCODES TYPE SLIS_T_EXTAB.

*FILL IT_FCODES WITH FUNCTION CODES INORDER TO DELETE THE PUSHBUTTONS FROM*STATUS OR GUI*tO CREATE WORK AREA DATA WA_FCODE LIKE LINE OF IT_FCODES.

WA_FCODE-FCODE = '&INFO'. APPEND WA_FCODE TO IT_FCODES.

WA_FCODE-FCODE = '&AVE'. APPEND WA_FCODE TO IT_FCODES.

*TO ATTACH USER-INTERFACE OR STATUS TO ALV GRID SET PF-STATUS 'STATUS1' EXCLUDING IT_FCODES.

ENDFORM. "HANDLE_GUI

*&---------------------------------------------------------------------**& Form FILL_EVENTS*&---------------------------------------------------------------------*FORM FILL_EVENTS .

* REUSE_ALV_EVENTS_GET : THIS FUNCTION MODULE WILL RETURN ALL THE*EVENTS IN ALV . CALL FUNCTION 'REUSE_ALV_EVENTS_GET' IMPORTING ET_EVENTS = I_EVENTS[] EXCEPTIONS LIST_TYPE_WRONG = 1 OTHERS = 2. IF SY-SUBRC = 0. LOOP AT I_EVENTS. CASE I_EVENTS-NAME. WHEN 'USER_COMMAND'. I_EVENTS-FORM = 'HANDLE_INTERACTION'. WHEN 'TOP_OF_PAGE'. I_EVENTS-FORM = 'PAGE_HEADING'. WHEN 'PF_STATUS_SET'. I_EVENTS-FORM = 'HANDLE_GUI'. ENDCASE. MODIFY I_EVENTS. ENDLOOP. ELSE.

Page 33: abapprogs

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

ENDFORM. " FILL_EVENTS

*&---------------------------------------------------------------------**& Form PAGE_HEADING*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM PAGE_HEADING.

*TO CREATE INTERNAL TABLE IT_LIST OF TYPE SLIS_T_LISTHEADER. DATA IT_LIST TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

IT_LIST-TYP = 'H'. IT_LIST-INFO = 'SALES HEADER DATA : VBAK'. APPEND IT_LIST.

IT_LIST-TYP = 'S'. IT_LIST-INFO = 'SALES REPORT'. APPEND IT_LIST.

*TO CALL FM: 'REUSE_ALV_COMMENTARY_WRITE CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = IT_LIST[] I_LOGO = 'ENJOYSAP_LOGO'.ENDFORM. "PAGE_HEADING

*&---------------------------------------------------------------------**& Form FILL_ALV_LAYOUT*&---------------------------------------------------------------------*FORM FILL_ALV_LAYOUT .

*TO PROVIDE CHECKBOX ON ALV LIST. WA_LAYOUT-box_fieldname = 'BOX'.

ENDFORM. " FILL_ALV_LAYOUT

*&---------------------------------------------------------------------**& Form SUBTOTAL*&---------------------------------------------------------------------*FORM SUBTOTAL .

*TO FIND SUBTOTAL FOR SALES ITEM DATA :OF VBAP FOR SALES DOCUMENT NUMBER :VBELNI_SORT-FIELDNAME = 'VBELN'.I_SORT-UP = 'X'.I_SORT-SUBTOT = 'X'.APPEND I_SORT.

ENDFORM. " SUBTOTAL* ALV INTERACTIVE REPORT : IS REPORT PROGRAM WHICH GENERATES BASIC*LIST FROM WHERE THE USER CALLS FURTHER DATA BY SELECTING MENU ITEM OR PUSHBUTTON*ON ALV GRID THEN THE DATA DISPLAYED WILL BE

Page 34: abapprogs

*ON THE NEXT ALV GRID AND SO ON.REPORT ZALV_INTERACTIVE_REPORT_EVENTS.

*TYPE GROUPTYPE-POOLS SLIS."SLIS IS A BUILT-IN TYPE GROUP WHICH CONTAINS USER DEFINED "DATA TYPES AND CONSTANTS

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.TABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF VBAK.TYPES: BEGIN OF LINE_VBAK , VBELN LIKE VBAK-VBELN, ERDAT LIKE VBAK-ERDAT, ERNAM LIKE VBAK-ERNAM, AUART LIKE VBAK-AUART, NETWR LIKE VBAK-NETWR, WAERK LIKE VBAK-WAERK, VKORG LIKE VBAK-VKORG, END OF LINE_VBAK.

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF VBAP.TYPES: BEGIN OF LINE_VBAP , VBELN LIKE VBAP-VBELN, POSNR LIKE VBAP-POSNR, MATNR LIKE VBAP-MATNR, ARKTX LIKE VBAP-ARKTX, NETWR LIKE VBAP-NETWR, WAERK LIKE VBAP-WAERK, KWMENG LIKE VBAP-KWMENG, NETPR LIKE VBAP-NETPR, END OF LINE_VBAP.

*TO CREATE AN INTERNAL TABLE IT_VBAK WITH SOME OF FIELDS OF VBAKDATA IT_VBAK TYPE TABLE OF LINE_VBAK WITH HEADER LINE.

*TO CREATE AN INTERNAL TABLE IT_VBAP WITH SOME OF FIELDS OF VBAPDATA IT_VBAP TYPE TABLE OF LINE_VBAP WITH HEADER LINE.

*TO CREATE AN INTERNAL TABLE I_EVENTS OF TYPE SLIS_T_EVENT TO STORE EVENTS WITH THEIR SUBROUTINESDATA I_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO CREATE INTERNAL TABLE IT_FCAT TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALVDATA IT_FCAT1 TYPE SLIS_T_FIELDCAT_ALV .

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

PERFORM GET_DATA.PERFORM BUILD_FCAT.PERFORM FILL_EVENTS.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*

Page 35: abapprogs

FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES*DOCUMENT NUMBERSSELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAMEV_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form BUILD_FCAT*&---------------------------------------------------------------------*FORM BUILD_FCAT .*1ST COLUMN : VBELN : SALES DOCUMENT NUMBERIT_FCAT-COL_POS = 1.IT_FCAT-FIELDNAME = 'VBELN'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-KEY = 'X'.IT_FCAT-JUST = 'C'.IT_FCAT-seltext_l = 'SALES DOCUMENT NUMBER'.IT_FCAT-seltext_M = 'SALES DOC.NO'.IT_FCAT-seltext_S = 'SDNO'.*IT_FCAT-hotspot = 'X'.*IT_FCAT-no_convext = 'X'.IT_FCAT-no_zero = 'X'.APPEND IT_FCAT.CLEAR IT_FCAT.

*2ND COLUMN : ERDAT: Date on Which Record Was CreatedIT_FCAT-COL_POS = 2.IT_FCAT-FIELDNAME = 'ERDAT'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'DATE '.IT_FCAT-seltext_M = 'DATE'.IT_FCAT-seltext_S = 'DATE'.IT_FCAT-EDIT_MASK = '__/__/____'.APPEND IT_FCAT.CLEAR IT_FCAT.

*3RD COLUMN : ERNAM : Name of Person who Created the ObjectIT_FCAT-COL_POS = 3.IT_FCAT-FIELDNAME = 'ERNAM'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-JUST = 'R'.IT_FCAT-emphasize = 'C611'.IT_FCAT-seltext_l = 'NAME OF PERSON CREATED'.IT_FCAT-seltext_M = 'NAME'.IT_FCAT-seltext_S = 'NAME'.APPEND IT_FCAT.CLEAR IT_FCAT.

*4TH COLUMN : AUART : Sales Document TypeIT_FCAT-COL_POS = 4.IT_FCAT-FIELDNAME = 'AUART'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-JUST = 'C'.IT_FCAT-emphasize = 'C401'.IT_FCAT-seltext_l = 'SALES DOCUMNET TYPE'.

Page 36: abapprogs

IT_FCAT-seltext_M = 'SALES DOC. TYPE'.IT_FCAT-seltext_S = 'SDTYPE'.APPEND IT_FCAT.CLEAR IT_FCAT.

*5TH COLUMN : NETWR : Net Value of the Sales Order in Document CurrencyIT_FCAT-COL_POS = 5.IT_FCAT-FIELDNAME = 'NETWR'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-do_sum = 'X'.IT_FCAT-seltext_l = 'NET VALUE'.IT_FCAT-seltext_M = 'NET VALUE'.IT_FCAT-seltext_S = 'NET VAL'.APPEND IT_FCAT.CLEAR IT_FCAT.

*6TH COLUMN : WAERK : SD Document CurrencyIT_FCAT-COL_POS = 6.IT_FCAT-FIELDNAME = 'WAERK'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'CURRENCY'.IT_FCAT-seltext_M = 'CURRENCY'.IT_FCAT-seltext_S = 'CURR'.APPEND IT_FCAT.CLEAR IT_FCAT.

*7TH COLUMN : VKORG : Sales OrganizationIT_FCAT-COL_POS = 7.IT_FCAT-FIELDNAME = 'VKORG'.IT_FCAT-TABNAME = 'IT_VBAK'.IT_FCAT-seltext_l = 'SALES ORGANIZATION'.IT_FCAT-seltext_M = 'SALES ORG'.IT_FCAT-seltext_S = 'SALES ORG'.APPEND IT_FCAT.CLEAR IT_FCAT.

ENDFORM. " BUILD_FCAT

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA : IT_VBAK ONTO ALV GRID(BASIC LIST).CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM I_GRID_TITLE = 'SALES DOCMENT HEADER DATA' IT_FIELDCAT = IT_FCAT[] IT_EVENTS = I_EVENTS[] TABLES T_OUTTAB = IT_VBAK EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_GRID

*THE EVENT 'USER_COMMAND' IS TRIGGERED WHEN USER DOUBLE CLICK ON BASIC

Page 37: abapprogs

*LIST(ALV GRID) AND ITS*SUBROUTINE 'HANDLE_INTERACTION IS CALLED BY THE SYSTEM.FORM HANDLE_INTERACTION USING V_FCODE LIKE SY-UCOMM V_SEL TYPE SLIS_SELFIELD.

IF V_SEL-FIELDNAME = 'VBELN' AND V_SEL-VALUE <> ' '.CASE V_FCODE.WHEN 'FCT1' OR 'DISP'.*TO READ TABLE IT_VBAK.READ TABLE IT_VBAK INDEX V_SEL-TABINDEX.IF SY-SUBRC = 0.SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_VBAP WHERE VBELN = IT_VBAK-VBELN.IF SY-SUBRC = 0.PERFORM BUILD_FCAT1.*WINDOW*TO DISPLAY DATA : IT_VBAP ONTO ALV GRID(SECONDARY LIST).CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM* I_CALLBACK_USER_COMMAND = 'HANDLE_INTERACTION' I_GRID_TITLE = 'SALES DOCUMENT ITEM DATA' IT_FIELDCAT = IT_FCAT1 TABLES T_OUTTAB = IT_VBAP EXCEPTIONS PROGRAM_ERROR = 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.ELSE.MESSAGE I100(ZMSG) WITH 'SALES ITEM NOT FOUND'.ENDIF.ENDIF.WHEN 'FCT2' OR 'DELE'.LEAVE PROGRAM.ENDCASE.ELSE.MESSAGE I100(ZMSG) WITH 'INVALID CURSOR POSITION'.ENDIF.

ENDFORM.

*&---------------------------------------------------------------------**& Form BUILD_FCAT1*&---------------------------------------------------------------------*FORM BUILD_FCAT1 .

*FM:REUSE_ALV_FIELDCATALOG_MERGE : THIS WILL GENERATE FIELDCATALOG BASED*ON INTERNAL TABLECALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = V_PROGRAM* I_INTERNAL_TABNAME = 'IT_VBAP' I_STRUCTURE_NAME = 'ZSTRUCT_VBAP'* I_INCLNAME = V_PROGRAM CHANGING CT_FIELDCAT = IT_FCAT1 EXCEPTIONS INCONSISTENT_INTERFACE = 1

Page 38: abapprogs

PROGRAM_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.

ENDFORM. " BUILD_FCAT1

FORM HANDLE_GUI USING IT_FCODES TYPE SLIS_T_EXTAB.

*FILL IT_FCODES WITH FUNCTION CODES INORDER TO DELETE THE PUSHBUTTONS FROM*STATUS OR GUI*tO CREATE WORK AREADATA WA_FCODE LIKE LINE OF IT_FCODES.

WA_FCODE-FCODE = '&INFO'.APPEND WA_FCODE TO IT_FCODES.

WA_FCODE-FCODE = '&AVE'.APPEND WA_FCODE TO IT_FCODES.

*TO ATTACH USER-INTERFACE OR STATUS TO ALV GRIDSET PF-STATUS 'STATUS1' EXCLUDING IT_FCODES.

ENDFORM.

*&---------------------------------------------------------------------**& Form FILL_EVENTS*&---------------------------------------------------------------------*FORM FILL_EVENTS .

*TO FILL USER-INTERFACE EVENT : PF_STATUS_SET AND ITS SUBROUTINE : HANDLE_GUI.I_EVENTS-NAME = 'PF_STATUS_SET'.I_EVENTS-FORM = 'HANDLE_GUI'.APPEND I_EVENTS.

*TO FILL USER COMMAND EVENT : USER_COMMAND AND ITS SUBROUTINE : HANDLE_INTERACTION.I_EVENTS-NAME = 'USER_COMMAND'.I_EVENTS-FORM = 'HANDLE_INTERACTION'.APPEND I_EVENTS.

*TO FILL TOP OF PAGE EVENT : TOP_OF_PAGE AND ITS SUBROUTINE : 'PAGE_HEADING'.I_EVENTS-NAME = 'TOP_OF_PAGE'.I_EVENTS-FORM = 'PAGE_HEADING'.APPEND I_EVENTS.

ENDFORM. " FILL_EVENTS

FORM PAGE_HEADING.

*TO CREATE INTERNAL TABLE IT_LIST OF TYPE SLIS_T_LISTHEADER.DATA IT_LIST TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

IT_LIST-TYP = 'H'.IT_LIST-INFO = 'SALES HEADER DATA : VBAK'.APPEND IT_LIST.

IT_LIST-TYP = 'S'.IT_LIST-INFO = 'SALES REPORT'.

Page 39: abapprogs

APPEND IT_LIST.

*TO CALL FM: 'REUSE_ALV_COMMENTARY_WRITECALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = IT_LIST[] I_LOGO = 'ENJOYSAP_LOGO' .ENDFORM.

*REUSE_ALV_GRID_DISPLAY : IS A FUNCTION MODULE WHICH DISPLAYS DATA IN TABULAR FORMAT.REPORT ZALV_REPORT1.

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.*VBAP = CONTAINS SALES DOCUMENT : ITEM DATATABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

*TO CREATE AN INTERNAL TABLE IT_VBAP OF STRUCTURE VBAKDATA IT_VBAK LIKE ZSTRUCT_VBAK OCCURS 10 WITH HEADER LINE.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

START-OF-SELECTION.PERFORM GET_DATA.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES DOCUMENT NUMBERSSELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAMEV_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA ONTO ALV GRID.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM I_STRUCTURE_NAME = 'ZSTRUCT_VBAK'

Page 40: abapprogs

I_GRID_TITLE = 'SALES REPORT' TABLES T_OUTTAB = IT_VBAK EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_GRID

*REUSE_ALV_GRID_DISPLAY : IS A FUNCTION MODULE WHICH DISPLAYS DATA IN TABULAR FORMAT.REPORT ZALV_REPORT.

*VBAK = CONTAINS SALES DOCUMENT : HEADER DATA.*VBAP = CONTAINS SALES DOCUMENT : ITEM DATATABLES VBAK. "THIS WILL CREATE WORK AREA OR RECORD

*TO CREATE AN INTERNAL TABLE IT_VBAP OF STRUCTURE VBAKDATA IT_VBAK LIKE VBAK OCCURS 10 WITH HEADER LINE.

*TO CREATE VARIABLE TO STORE CURREN PROGRAMDATA V_PROGRAM LIKE SY-REPID .

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER SALES DOCUMENT NUMBERSSELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

START-OF-SELECTION.PERFORM GET_DATA.PERFORM DISPLAY_ALV_GRID.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET THE DATA FROM DBTABLE : VBAK FOR THE PROVIDE RANGE OF SALES DOCUMENT NUMBERSSELECT * FROM VBAK INTO TABLE IT_VBAK WHERE VBELN IN S_VBELN.

*TO STORE CURRENT PROGRAM NAME*SY-REPID : CONTAINS CURRENT PROGRAM NAMEV_PROGRAM = SY-REPID.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------*

Page 41: abapprogs

*& Form DISPLAY_ALV_GRID*&---------------------------------------------------------------------*FORM DISPLAY_ALV_GRID .

*TO DISPLAY DATA ONTO ALV GRID.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_PROGRAM I_STRUCTURE_NAME = 'VBAK' I_GRID_TITLE = 'SALES REPORT' TABLES T_OUTTAB = IT_VBAK EXCEPTIONS PROGRAM_ERROR = 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. " DISPLAY_ALV_GRID

*BAPI TO CREATE SALES ORDERREPORT ZBAPI_SALES_ORDER_CREATE.

*VBAK: SALES DOCUMENT : HEADER DATA*VBAP : SALES DOCUMENT : ITEM DATA*VBPA : SALES DOCUMENT : PARTNERS*VBEP : SALES DOCUMENT : SCHEDULE LINE*VBKD: SALES DOCUMENT : BUSINESS DATA

*BAPI:BAPI_SALESORDER_CREATEFROMDAT2 : THIS BAPI WILL UPLOAD SALES*ORDERS FROM NON-SAP TO SAP R/3 SYSTEM

*TO CREATE WORK AREA WA_ORDER_HD OF TYPE BAPISDHD1 TO STORE VBAK DATADATA WA_ORDER_HD TYPE BAPISDHD1.

*TO CREATE VARIABLE FOR SALES DOCUMENT NUMBER OF TYPE BAPIVBELN-VBELNDATA V_VBELN TYPE BAPIVBELN-VBELN.

*TO CREATE INTERNAL TABLE IT_ITMS OF TYPE BAPISDITM TO STORE SALES ORDER* ITEM DATA: VBAPDATA IT_ITMS TYPE TABLE OF BAPISDITM WITH HEADER LINE.

*TO CREATAE INTERNAL TABLE IT_PARTNERS OF TYPE BAPIPARNR TO STORE VBPA*DATADATA IT_PARTNERS TYPE TABLE OF BAPIPARNR WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_SCHL OF TYPE BAPISCHDL TO STORE VBEP DATADATA IT_SCHL TYPE TABLE OF BAPISCHDL WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_RET OF TYPE BAPIRET2 TO CAPTURE MESSAGESDATA IT_RET TYPE TABLE OF BAPIRET2 WITH HEADER LINE.

Page 42: abapprogs

START-OF-SELECTION.PERFORM FILL_DATA.PERFORM CALL_BAPI.

*&---------------------------------------------------------------------**& Form FILL_DATA*&---------------------------------------------------------------------*FORM FILL_DATA .

*TO FILL SALES DOCUMENT HEADER DATA(VBAK) AND SALES DOCUMENT:BUSINESS*DATA(VBKD)WA_ORDER_HD-DOC_TYPE = 'ZA22'. "Sales Document TypeWA_ORDER_HD-COLLECT_NO = '222222'. "Collective NumberWA_ORDER_HD-SALES_ORG = '1000'. "Sales OrganizationWA_ORDER_HD-DISTR_CHAN = '10'. "Distribution ChannelWA_ORDER_HD-DIVISION = '00'. "DivisionWA_ORDER_HD-REQ_DATE_H = '20020625'. "Requested delivery dateWA_ORDER_HD-INCOTERMS1 = 'CIF'. "Incoterms (Part 1)WA_ORDER_HD-INCOTERMS2 = '111'. "Incoterms (Part 2)WA_ORDER_HD-PMNTTRMS = 'ZB01'. "Terms of Payment KeyWA_ORDER_HD-PRICE_DATE = '20020620'. "Date for pricing and exchange rateWA_ORDER_HD-PURCH_NO_C = '123456'. "Customer purchase order numberWA_ORDER_HD-DOC_DATE = '20020620'. "Document Date (Date Received/Sent)WA_ORDER_HD-SHIP_COND = '01'. "Shipping ConditionsWA_ORDER_HD-CURRENCY = 'EUR'. "SD Document Currency

*TO FILL INTERNAL TABLE IT_SCHL TO UPDATE DBTABLE:VBEP(SD:SCHEDULE LINE)IT_SCHL-REQ_QTY = 1. "Order quantity in sales unitsAPPEND IT_SCHL.

*TO FILL PARTNERS : DBTABLE : VBPA(SALES DOCUMENT:PARTNERS)*SOLD-TO-PARTY: PARTNER FUNCTION : 'AG'.IT_PARTNERS-PARTN_ROLE = 'AG'. "Partner FunctionIT_PARTNERS-PARTN_NUMB = '0000002000'. "Customer Number 1APPEND IT_PARTNERS.

*SHIP-TO-PARTY: PARTNER FUNCTION : 'WE'.IT_PARTNERS-PARTN_ROLE = 'WE'. "Partner FunctionIT_PARTNERS-PARTN_NUMB = '0000002000'. "Customer Number 1APPEND IT_PARTNERS.

*TO FILL SALES DOCUMENT ITEMS : DBTABLE :VBAP(SALES DOCUMENT:ITEM)IT_ITMS-MATERIAL = 'M-01'. "Material NumberIT_ITMS-PLANT = '1200'. "PlantIT_ITMS-SHIP_POINT = '1200'."Shipping Point/Receiving PointAPPEND IT_ITMS.

ENDFORM. " FILL_DATA

*&---------------------------------------------------------------------**& Form CALL_BAPI*&---------------------------------------------------------------------*FORM CALL_BAPI .

*TO CALL BAPI:BAPI_SALESORDER_CREATEFROMDAT2CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING ORDER_HEADER_IN = WA_ORDER_HD IMPORTING SALESDOCUMENT = V_VBELN

Page 43: abapprogs

TABLES RETURN = IT_RET ORDER_ITEMS_IN = IT_ITMS ORDER_PARTNERS = IT_PARTNERS ORDER_SCHEDULES_IN = IT_SCHL . LOOP AT IT_RET. IF IT_RET-TYPE = 'E'.*TO ROLLBACK CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' . WRITE:/ IT_RET-TYPE,IT_RET-ID,IT_RET-NUMBER,IT_RET-MESSAGE. ELSE."IF IT_RET-TYPE = 'S'.*TO COMMIT. WRITE:/ 'SALES DOCUMENT CREATED-',V_VBELN.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' . ENDIF. ENDLOOP.

ENDFORM. " CALL_BAPI

*BAPI TO CREATE SALES ORDERREPORT ZBAPI_SALES_ORDER_CREATE_ITAB.

*VBAK: SALES DOCUMENT : HEADER DATA*VBAP : SALES DOCUMENT : ITEM DATA*VBPA : SALES DOCUMENT : PARTNERS*VBEP : SALES DOCUMENT : SCHEDULE LINE*VBKD: SALES DOCUMENT : BUSINESS DATA

*BAPI:BAPI_SALESORDER_CREATEFROMDAT2 : THIS BAPI WILL UPLOAD SALES*ORDERS FROM NON-SAP TO SAP R/3 SYSTEM

*TO CREATE INTERNAL TABLE IT_FILEDATA : BEGIN OF IT_FILE OCCURS 10, MATNR TYPE MATNR, WERKS TYPE WERKS_EXT, VSTEL TYPE VSTEL, END OF IT_FILE.

*TO CREATE WORK AREA WA_ORDER_HD OF TYPE BAPISDHD1 TO STORE VBAK DATADATA WA_ORDER_HD TYPE BAPISDHD1.

*TO CREATE VARIABLE FOR SALES DOCUMENT NUMBER OF TYPE BAPIVBELN-VBELNDATA V_VBELN TYPE BAPIVBELN-VBELN.

*TO CREATE INTERNAL TABLE IT_ITMS OF TYPE BAPISDITM TO STORE SALES ORDER* ITEM DATA: VBAPDATA IT_ITMS TYPE TABLE OF BAPISDITM WITH HEADER LINE.

*TO CREATAE INTERNAL TABLE IT_PARTNERS OF TYPE BAPIPARNR TO STORE VBPA*DATADATA IT_PARTNERS TYPE TABLE OF BAPIPARNR WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_SCHL OF TYPE BAPISCHDL TO STORE VBEP DATADATA IT_SCHL TYPE TABLE OF BAPISCHDL WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_RET OF TYPE BAPIRET2 TO CAPTURE MESSAGESDATA IT_RET TYPE TABLE OF BAPIRET2 WITH HEADER LINE.

Page 44: abapprogs

*TO PROVIDE INPUT FIELD TO ENTER FLAT FILEPARAMETERS P_FILE LIKE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.PERFORM BROWSE_FILE.

START-OF-SELECTION.PERFORM READ_FLATFILE.PERFORM FILL_DATA.PERFORM CALL_BAPI.

*&---------------------------------------------------------------------**& Form FILL_DATA*&---------------------------------------------------------------------*FORM FILL_DATA .

*TO FILL SALES DOCUMENT HEADER DATA(VBAK) AND SALES DOCUMENT:BUSINESS*DATA(VBKD)WA_ORDER_HD-DOC_TYPE = 'ZA22'. "Sales Document TypeWA_ORDER_HD-COLLECT_NO = '222222'. "Collective NumberWA_ORDER_HD-SALES_ORG = '1000'. "Sales OrganizationWA_ORDER_HD-DISTR_CHAN = '10'. "Distribution ChannelWA_ORDER_HD-DIVISION = '00'. "DivisionWA_ORDER_HD-REQ_DATE_H = '20020625'. "Requested delivery dateWA_ORDER_HD-INCOTERMS1 = 'CIF'. "Incoterms (Part 1)WA_ORDER_HD-INCOTERMS2 = '111'. "Incoterms (Part 2)WA_ORDER_HD-PMNTTRMS = 'ZB01'. "Terms of Payment KeyWA_ORDER_HD-PRICE_DATE = '20020620'. "Date for pricing and exchange rateWA_ORDER_HD-PURCH_NO_C = '123456'. "Customer purchase order numberWA_ORDER_HD-DOC_DATE = '20020620'. "Document Date (Date Received/Sent)WA_ORDER_HD-SHIP_COND = '01'. "Shipping ConditionsWA_ORDER_HD-CURRENCY = 'EUR'. "SD Document Currency

*TO FILL INTERNAL TABLE IT_SCHL TO UPDATE DBTABLE:VBEP(SD:SCHEDULE LINE)IT_SCHL-REQ_QTY = 1. "Order quantity in sales unitsAPPEND IT_SCHL.

*TO FILL PARTNERS : DBTABLE : VBPA(SALES DOCUMENT:PARTNERS)*SOLD-TO-PARTY: PARTNER FUNCTION : 'AG'.IT_PARTNERS-PARTN_ROLE = 'AG'. "Partner FunctionIT_PARTNERS-PARTN_NUMB = '0000002000'. "Customer Number 1APPEND IT_PARTNERS.

*SHIP-TO-PARTY: PARTNER FUNCTION : 'WE'.IT_PARTNERS-PARTN_ROLE = 'WE'. "Partner FunctionIT_PARTNERS-PARTN_NUMB = '0000002000'. "Customer Number 1APPEND IT_PARTNERS.

*TO FILL SALES DOCUMENT ITEMS : DBTABLE :VBAP(SALES DOCUMENT:ITEM)LOOP AT IT_FILE.IT_ITMS-MATERIAL = IT_FILE-MATNR. "Material NumberIT_ITMS-PLANT = IT_FILE-WERKS. "PlantIT_ITMS-SHIP_POINT = IT_FILE-VSTEL."Shipping Point/Receiving PointAPPEND IT_ITMS.

CLEAR IT_FILE.ENDLOOP.

ENDFORM. " FILL_DATA

Page 45: abapprogs

*&---------------------------------------------------------------------**& Form CALL_BAPI*&---------------------------------------------------------------------*FORM CALL_BAPI .

*TO CALL BAPI:BAPI_SALESORDER_CREATEFROMDAT2CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING ORDER_HEADER_IN = WA_ORDER_HD IMPORTING SALESDOCUMENT = V_VBELN TABLES RETURN = IT_RET ORDER_ITEMS_IN = IT_ITMS ORDER_PARTNERS = IT_PARTNERS ORDER_SCHEDULES_IN = IT_SCHL . LOOP AT IT_RET. IF IT_RET-TYPE = 'E'.*TO ROLLBACK CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' . WRITE:/ IT_RET-TYPE,IT_RET-ID,IT_RET-NUMBER,IT_RET-MESSAGE. ELSE."IF IT_RET-TYPE = 'S'.*TO COMMIT. WRITE:/ 'SALES DOCUMENT CREATED-',V_VBELN.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' . ENDIF. ENDLOOP.

ENDFORM. " CALL_BAPI

*&---------------------------------------------------------------------**& Form BROWSE_FILE*&---------------------------------------------------------------------*FORM BROWSE_FILE .

CALL FUNCTION 'F4_FILENAME' IMPORTING FILE_NAME = P_FILE .

ENDFORM. " BROWSE_FILE

*&---------------------------------------------------------------------**& Form READ_FLATFILE*&---------------------------------------------------------------------*FORM READ_FLATFILE .

DATA F_FILE TYPE STRING.

F_FILE = P_FILE.

CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = F_FILE FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X' TABLES

Page 46: abapprogs

DATA_TAB = IT_FILE 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. " READ_FLATFILE

*BAPI_BANK_CREATE: THIS BAPI WILL INSERT BANK MASTER DATA IN SAP R/3 SYSTEM*IN DATABASE TABLE : BNKAREPORT ZBAPI_BANK_CREATE1.

*TO CREATE LINE TYPETYPES : BEGIN OF LINE_TYPE, BNK_CTRY LIKE BAPI1011_KEY-BANK_CTRY, BNK_KEY LIKE BAPI1011_KEY-BANK_KEY, BANK_NAME TYPE BANKA, STREET TYPE STRAS_GP, CITY TYPE ORT01_GP, BANK_BRANCH TYPE BRNCH, END OF LINE_TYPE.

*TO CREATE INTERNAL TABLE IT_FILE OF LINE_TYPE.DATA IT_FILE TYPE LINE_TYPE OCCURS 10 WITH HEADER LINE.**TO CREATE WORK AREA V_BNK_ADDR OF TYPE BAPI1011_ADDRESSDATA V_BNK_ADDR LIKE BAPI1011_ADDRESS.

*TO CREATE WORK AREA V_RETURN OF TYPE BAPIRET2DATA V_RETURN LIKE BAPIRET2.

*TO PROVIDE INPUT FIELD TO ENTER FLAT FILE ALONG WITH PATHPARAMETERS P_FILE LIKE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.PERFORM BROWSE_FILE.

START-OF-SELECTION.PERFORM READ_FLATFILE.PERFORM CALL_BAPI.

*&---------------------------------------------------------------------*

Page 47: abapprogs

*& Form CALL_BAPI*&---------------------------------------------------------------------*FORM CALL_BAPI .

LOOP AT IT_FILE.

*BANK ADDRESS.V_BNK_ADDR-BANK_NAME = IT_FILE-BANK_NAME.V_BNK_ADDR-STREET = IT_FILE-STREET.V_BNK_ADDR-CITY = IT_FILE-CITY.V_BNK_ADDR-BANK_BRANCH = IT_FILE-BANK_BRANCH.

*TO CALL BAPI:BAPI_BANK_CREATE: THIS WILL CREATE BANK MASTER DATACALL FUNCTION 'BAPI_BANK_CREATE' EXPORTING BANK_CTRY = IT_FILE-BNK_CTRY BANK_KEY = IT_FILE-BNK_KEY BANK_ADDRESS = V_BNK_ADDR IMPORTING RETURN = V_RETURN BANKKEY = IT_FILE-BNK_KEY .IF V_RETURN-TYPE = 'E'.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .WRITE:/ V_RETURN-TYPE,V_RETURN-NUMBER,V_RETURN-MESSAGE.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .WRITE:/ 'THE BANK MASTER DATA CREATED',IT_FILE-BNK_KEY.ENDIF.

CLEAR IT_FILE.

ENDLOOP.

ENDFORM. " CALL_BAPI

*&---------------------------------------------------------------------**& Form BROWSE_FILE*&---------------------------------------------------------------------*FORM BROWSE_FILE .

*FM:F4_FILENAME.CALL FUNCTION 'F4_FILENAME' IMPORTING FILE_NAME = P_FILE .

ENDFORM. " BROWSE_FILE

*&---------------------------------------------------------------------**& Form READ_FLATFILE*&---------------------------------------------------------------------*FORM READ_FLATFILE .*TO CREATE VARIABLE F_FILEDATA F_FILE TYPE STRING.F_FILE = P_FILE.*FM:GUI_UPLOAD: THIS FM WILL READ FLATFILE DATA TO AN INTERNAL TABLE IT_FILECALL FUNCTION 'GUI_UPLOAD' EXPORTING

Page 48: abapprogs

FILENAME = F_FILE FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X' TABLES DATA_TAB = IT_FILE 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 I100(ZMSG) WITH 'ERROR IN OPENING FILE'.EXIT.ENDIF.

ENDFORM. " READ_FLATFILE

*BAPI_BANK_CREATE: THIS BAPI WILL INSERT BANK MASTER DATA IN SAP R/3 SYSTEM*IN DATABASE TABLE : BNKAREPORT ZBAPI_BANK_CREATE.

*TO CREATE VARIABLE V_BNK_CTRY OF TYPE BAPI1011_KEY-BANK_CTRYDATA V_BNK_CTRY LIKE BAPI1011_KEY-BANK_CTRY.

*TO CREATE VARIABLE V_BNK_KEY OF TYPE API1011_KEY-BANK_KEYDATA V_BNK_KEY LIKE BAPI1011_KEY-BANK_KEY.

*TO CREATE WORK AREA V_BNK_ADDR OF TYPE BAPI1011_ADDRESSDATA V_BNK_ADDR LIKE BAPI1011_ADDRESS.

*TO CREATE WORK AREA V_RETURN OF TYPE BAPIRET2DATA V_RETURN LIKE BAPIRET2.

START-OF-SELECTION.

Page 49: abapprogs

PERFORM FILL_DATA.PERFORM CALL_BAPI.

*&---------------------------------------------------------------------**& Form FILL_DATA*&---------------------------------------------------------------------*FORM FILL_DATA .

*BANK_CTRYV_BNK_CTRY = 'IN'.

*BANK_KEYV_BNK_KEY = '12'.

*BANK ADDRESS.V_BNK_ADDR-BANK_NAME = 'CITI BANK'.V_BNK_ADDR-STREET = 'RETI BOWLI'.V_BNK_ADDR-CITY = 'HYDERABAD'.V_BNK_ADDR-BANK_BRANCH = 'LANE-7,HYDERABAD'.

ENDFORM. " FILL_DATA

*&---------------------------------------------------------------------**& Form CALL_BAPI*&---------------------------------------------------------------------*FORM CALL_BAPI .*TO CALL BAPI:BAPI_BANK_CREATE: THIS WILL CREATE BANK MASTER DATACALL FUNCTION 'BAPI_BANK_CREATE' EXPORTING BANK_CTRY = V_BNK_CTRY BANK_KEY = V_BNK_KEY BANK_ADDRESS = V_BNK_ADDR IMPORTING RETURN = V_RETURN BANKKEY = V_BNK_KEY .IF V_RETURN-TYPE = 'E'.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .WRITE:/ V_RETURN-TYPE,V_RETURN-NUMBER,V_RETURN-MESSAGE.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .WRITE:/ 'THE BANK MASTER DATA CREATED',V_BNK_KEY.ENDIF.

ENDFORM. " CALL_BAPI

report ZBDC_CALL_TRANSACTION_MM01_1 no standard page heading line-size 255.

*TO CREATE LINE TYPETYPES : BEGIN OF LINE_TYPE , MATNR TYPE MATNR, MBRSH TYPE MBRSH, MTART TYPE MTART,

Page 50: abapprogs

MAKTX TYPE MAKTX, MEINS TYPE MEINS, END OF LINE_TYPE.

*TO CREATE INTERNAL TABLE IT_FILE OF TYPE LINE_TYPE.DATA IT_FILE TYPE TABLE OF LINE_TYPE WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_BDCDATA OF STRUCTURE BDCDATA.DATA IT_BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.

*TO PROVIDE INPUT FIELD TO ENTER FLATFILE NAMEPARAMETERS P_FILE LIKE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.PERFORM BROWSE_FILE.

start-of-selection.PERFORM READ_FLATFILE.PERFORM CONVERT_IT_BDCDATA.

*&---------------------------------------------------------------------**& Form BROWSE_FILE*&---------------------------------------------------------------------*FORM BROWSE_FILE .

*F4_FILENAME : IT DISPLAYS LIST OF FILES PRESENT ON PRESENTATION SERVER*AND RETURNS THE SELECTED FILECALL FUNCTION 'F4_FILENAME' IMPORTING FILE_NAME = P_FILE .

ENDFORM. " BROWSE_FILE

*&---------------------------------------------------------------------**& Form READ_FLATFILE*&---------------------------------------------------------------------*FORM READ_FLATFILE .

*TO CREATE VARIABLEDATA F_FILE TYPE STRING.

F_FILE = P_FILE.*GUI_UPLOAD : THIS FM WILL UPLOAD FLATFILE DATA TO INTERNAL TABLECALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = F_FILE FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X' TABLES DATA_TAB = IT_FILE 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

Page 51: abapprogs

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. " READ_FLATFILE

*&---------------------------------------------------------------------**& Form CONVERT_IT_BDCDATA*&---------------------------------------------------------------------*FORM CONVERT_IT_BDCDATA .

LOOP AT IT_FILE.

REFRESH IT_BDCDATA.

perform bdc_dynpro using 'SAPLMGMM' '0060'.perform bdc_field using 'BDC_CURSOR' 'RMMG1-MTART'.perform bdc_field using 'BDC_OKCODE' '=AUSW'.perform bdc_field using 'RMMG1-MATNR' IT_FILE-MATNR.perform bdc_field using 'RMMG1-MBRSH' IT_FILE-MBRSH.perform bdc_field using 'RMMG1-MTART' IT_FILE-MTART.perform bdc_dynpro using 'SAPLMGMM' '0070'.perform bdc_field using 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(01)'.perform bdc_field using 'BDC_OKCODE' '=ENTR'.perform bdc_field using 'MSICHTAUSW-KZSEL(01)' 'X'.perform bdc_dynpro using 'SAPLMGMM' '4004'.perform bdc_field using 'BDC_OKCODE' '=BU'.perform bdc_field using 'MAKT-MAKTX' IT_FILE-MAKTX.perform bdc_field using 'BDC_CURSOR' 'MARA-MEINS'.perform bdc_field using 'MARA-MEINS' IT_FILE-MEINS.

*TO CALL TRANSACTION 'MM01'.CALL TRANSACTION 'MM01' USING IT_BDCDATA UPDATE 'A' MODE 'A'.

ENDLOOP.ENDFORM. " CONVERT_IT_BDCDATA

*&---------------------------------------------------------------------*

Page 52: abapprogs

*& Form bdc_dynpro*&---------------------------------------------------------------------*FORM bdc_dynpro USING PROG SCRNO.

CLEAR IT_BDCDATA.*FILL MODULE POOL PROGRAM NAME AND SCREEN NUMBERIT_BDCDATA-PROGRAM = PROG.IT_BDCDATA-DYNPRO = SCRNO.IT_BDCDATA-DYNBEGIN = 'X'.APPEND IT_BDCDATA.

ENDFORM. " bdc_dynpro

*&---------------------------------------------------------------------**& Form bdc_field*&---------------------------------------------------------------------*FORM bdc_field USING FNAME FVALUE.

CLEAR IT_BDCDATA.*FILL SCREEN FIELD NAME AND SCREEN FIELD VALUEIT_BDCDATA-FNAM = FNAME.IT_BDCDATA-FVAL = FVALUE.APPEND IT_BDCDATA.

ENDFORM. " bdc_field

*TO CREATE DATASET OR SEQUENTIAL FILE ON APPLICATOIN SERVERREPORT ZCREATE_DATASET1.

*TO CREATE INTERNAL TABLE IT_FILE OF FLAT STRUCTUREDATA : BEGIN OF IT_FILE OCCURS 10, TEXT TYPE STRING, END OF IT_FILE.

*TO PROVIDE INPUT FIELD TO ENTER FLATFILE ALONG WITH PATH.PARAMETERS P_FILE TYPE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.PERFORM BROWSE_FILE.

START-OF-SELECTION.PERFORM READ_FLATFILE.PERFORM CREATE_DATASET.PERFORM WRITE_ONTO_DATASET.PERFORM CLOSE_DATASET.

*&---------------------------------------------------------------------**& Form BROWSE_FILE*&---------------------------------------------------------------------*FORM BROWSE_FILE .*FM:F4_FILENAME : THIS WILL DISPLAY LIST OF FILES FROM FRONTEND AND WILL RETURN THE SELECTED*FILECALL FUNCTION 'F4_FILENAME' IMPORTING FILE_NAME = P_FILE

Page 53: abapprogs

.

ENDFORM. " BROWSE_FILE

*&---------------------------------------------------------------------**& Form READ_FLATFILE*&---------------------------------------------------------------------*FORM READ_FLATFILE .*TO CREATE VARIABLE F_FILEDATA F_FILE TYPE STRING.

F_FILE = P_FILE.

*GUI_UPLAOD :THIS WILL UPLOAD FLATFILE DATA INTO AN INTERNAL TABLECALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = F_FILE FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = ' ' TABLES DATA_TAB = IT_FILE 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. " READ_FLATFILE

*&---------------------------------------------------------------------**& Form CREATE_DATASET*&---------------------------------------------------------------------*FORM CREATE_DATASET .

*TO CREATE SEQUENTIAL FILE ON APPLICATION SERVEROPEN DATASET 'SEQFILE1' IN TEXT MODE FOR OUTPUT ENCODING DEFAULT.

ENDFORM. " CREATE_DATASET

*&---------------------------------------------------------------------**& Form WRITE_ONTO_DATASET*&---------------------------------------------------------------------*

Page 54: abapprogs

FORM WRITE_ONTO_DATASET .

*TO WRITE DATA ONTO SEQUENTIAL FILE 'SEQFILE1'.LOOP AT IT_FILE.

*TO TRANSFER DATA TO DATASET.TRANSFER IT_FILE-TEXT TO 'SEQFILE1'.

CLEAR IT_FILE.

ENDLOOP.

ENDFORM. " WRITE_ONTO_DATASET

*&---------------------------------------------------------------------**& Form CLOSE_DATASET*&---------------------------------------------------------------------*FORM CLOSE_DATASET .

*TO CLOSE DATASET.CLOSE DATASET 'SEQFILE1'.

ENDFORM. " CLOSE_DATASET

*BDC PROGRAM TO TRANSFER NON-SAP DATA TO SAP USING CALL TRANSACTION AND ALSO DOWNLOAD*THE ERRORS AT FRONT ENDREPORT ZBDC_PROGRAM_CALL_TRANS_ERRORS.

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF KNA1TYPES : BEGIN OF LINE_TYPE, KUNNR TYPE KUNNR, LAND1 TYPE LAND1_GP, NAME1 TYPE NAME1_GP, ORT01 TYPE ORT01_GP, END OF LINE_TYPE.

*TO CREATE INTERNAL TABLE IT_FILE OF TYPE LINE_TYPE.DATA IT_FILE TYPE TABLE OF LINE_TYPE WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_BDCDATA OF STRUCTURE BDCDATA.DATA IT_BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_MSG OF STRUCTURE BDCMSGCOLL WITH HEADER LINE.DATA IT_MSG TYPE TABLE OF BDCMSGCOLL WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_ERRORS TO STORE ERROR RECORDS.DATA : BEGIN OF IT_ERRORS OCCURS 10, KUNNR TYPE KUNNR, TEXT(500) TYPE C, END OF IT_ERRORS.

*TO CREATE VARIABLES .DATA : E1 TYPE I, S1 TYPE I.

*TO PROVIDE INPUT FIELD TO ENTER UPLOADED FILE NAMEPARAMETERS P_FILE LIKE IBIPPARMS-PATH.

*TO PROVIE INPUT FIELD TO ENTER DOWNLOADE FILE NAMEPARAMETERS P_EFILE LIKE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.PERFORM BROWSE_FILE USING P_FILE.

Page 55: abapprogs

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_EFILE.PERFORM BROWSE_FILE USING P_EFILE.

START-OF-SELECTION.*TO READ FLATFILE DATA TO IT_FILEPERFORM READ_FLATFILE.*TO FILL INTERNAL TABLE IT_BDCDATAPERFORM MAP_DATA.

END-OF-SELECTION.IF IT_ERRORS[] IS NOT INITIAL.PERFORM DOWNLOAD_ERRORS.ENDIF.

*&---------------------------------------------------------------------**& Form BROWSE_FILE*&---------------------------------------------------------------------*FORM BROWSE_FILE USING FILE1.*F4_FILENAME : THIS FM WILL DISPLAY LIST OF FILES AND RETURN THE SELECTED FILECALL FUNCTION 'F4_FILENAME' IMPORTING FILE_NAME = FILE1 .

ENDFORM. " BROWSE_FILE

*&---------------------------------------------------------------------**& Form READ_FLATFILE*&---------------------------------------------------------------------*FORM READ_FLATFILE .

*TO CREATE VARIABLE OF TYPE STRING.DATA F_FILE TYPE STRING.

F_FILE = P_FILE.

*GUI_UPLOAD:THIS FM WILL UPLOAD FLATFILE DATA TO AN INTERNAL TABLE IT_FILE.CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = F_FILE FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X' TABLES DATA_TAB = IT_FILE 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

Page 56: abapprogs

DISK_FULL = 15 DP_TIMEOUT = 16 OTHERS = 17 .IF SY-SUBRC <> 0. MESSAGE I100(ZMSG) WITH 'ERROR IN OPENING FILE'. EXIT.ELSE.*LOOP AT IT_FILE.*WRITE:/ IT_FILE-KUNNR,IT_FILE-LAND1,IT_FILE-NAME1,IT_FILE-ORT01.*ENDLOOP.ENDIF.

ENDFORM. " READ_FLATFILE

*&---------------------------------------------------------------------**& Form MAP_DATA*&---------------------------------------------------------------------*FORM MAP_DATA .

LOOP AT IT_FILE.

REFRESH : IT_BDCDATA,IT_MSG.

*TO FILL MPP AND SCREEN NUMBERPERFORM BDC_DYNPRO USING 'SAPMZMODULE12' '100'.

*TO FILL SCREEN FIELD AND SCREEN FIELD VALUE.PERFORM BDC_FIELD USING 'KNA1-KUNNR' IT_FILE-KUNNR.PERFORM BDC_FIELD USING 'KNA1-LAND1' IT_FILE-LAND1.PERFORM BDC_FIELD USING 'KNA1-NAME1' IT_FILE-NAME1.PERFORM BDC_FIELD USING 'KNA1-ORT01' IT_FILE-ORT01.

*TO FILL ACTION ALSO.PERFORM BDC_FIELD USING 'BDC_OKCODE' 'INSE'.

*TO FILL MPP AND SCREEN NUMBERPERFORM BDC_DYNPRO USING 'SAPMZMODULE12' '100'.

*TO FILL ACTION ALSO.PERFORM BDC_FIELD USING 'BDC_OKCODE' 'EXIT'.

*TO CALL TRANSACTION 'ZTKNA1'.CALL TRANSACTION 'ZTKNA1' USING IT_BDCDATA UPDATE 'A' MODE 'N' MESSAGES INTO IT_MSG.READ TABLE IT_MSG WITH KEY MSGTYP = 'E'.IF SY-SUBRC = 0.IT_ERRORS-KUNNR = IT_FILE-KUNNR.*FM:FORMAT_MESSAGE : THIS FM WILL COLLECT COMPLETE MESSAGE AND RETURN IT.CALL FUNCTION 'FORMAT_MESSAGE' EXPORTING ID = IT_MSG-MSGID LANG = '-D' NO = IT_MSG-MSGNR V1 = IT_MSG-MSGV1 V2 = IT_MSG-MSGV2 V3 = IT_MSG-MSGV3 V4 = IT_MSG-MSGV4 IMPORTING MSG = IT_ERRORS-TEXT EXCEPTIONS NOT_FOUND = 1 OTHERS = 2 .

Page 57: abapprogs

IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.APPEND IT_ERRORS.DELETE IT_FILE.CLEAR : IT_ERRORS,IT_MSG.E1 = E1 + 1.ELSE.S1 = S1 + 1.ENDIF.

ENDLOOP.IF SY-SUBRC = 0.MESSAGE I100(ZMSG) WITH S1 'RECORDS ARE SUCCESFULLY UPLOADED,' E1 'RECORDS CONTAINS ERRORS-PLS REFER DOWNLOADED FILE'.ENDIF.

ENDFORM. " MAP_DATA

*&---------------------------------------------------------------------**& Form BDC_DYNPRO*&---------------------------------------------------------------------*FORM BDC_DYNPRO USING PROG SCRNO.

CLEAR IT_BDCDATA.*FILL IT_BDCDATAIT_BDCDATA-PROGRAM = PROG.IT_BDCDATA-DYNPRO = SCRNO.IT_BDCDATA-DYNBEGIN = 'X'.APPEND IT_BDCDATA.

ENDFORM. " BDC_DYNPRO

*&---------------------------------------------------------------------**& Form BDC_FIELD*&---------------------------------------------------------------------*FORM BDC_FIELD USING FNAME FVALUE.

CLEAR IT_BDCDATA.*FILL IT_BDCDATA WITH SCREEN FIELD AND SCREEN FIELD VALUEIT_BDCDATA-FNAM = FNAME.IT_BDCDATA-FVAL = FVALUE.APPEND IT_BDCDATA.

ENDFORM. " BDC_FIELD*&---------------------------------------------------------------------**& Form DOWNLOAD_ERRORS*&---------------------------------------------------------------------*FORM DOWNLOAD_ERRORS .

DATA : F_FILE2 TYPE STRING.

F_FILE2 = P_EFILE.

*GUI_DOWNLOAD : THIS FM WILL DOWNLOAD INTERNAL TABLE DATA TO FRONT END.CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING FILENAME = F_FILE2 FILETYPE = 'ASC' WRITE_FIELD_SEPARATOR = 'X' TABLES DATA_TAB = IT_ERRORS EXCEPTIONS

Page 58: abapprogs

FILE_WRITE_ERROR = 1 NO_BATCH = 2 GUI_REFUSE_FILETRANSFER = 3 INVALID_TYPE = 4 NO_AUTHORITY = 5 UNKNOWN_ERROR = 6 HEADER_NOT_ALLOWED = 7 SEPARATOR_NOT_ALLOWED = 8 FILESIZE_NOT_ALLOWED = 9 HEADER_TOO_LONG = 10 DP_ERROR_CREATE = 11 DP_ERROR_SEND = 12 DP_ERROR_WRITE = 13 UNKNOWN_DP_ERROR = 14 ACCESS_DENIED = 15 DP_OUT_OF_MEMORY = 16 DISK_FULL = 17 DP_TIMEOUT = 18 FILE_NOT_FOUND = 19 DATAPROVIDER_EXCEPTION = 20 CONTROL_FLUSH_ERROR = 21 OTHERS = 22 .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. " DOWNLOAD_ERRORS

*BDC PROGRAM TO TRANSFER NON-SAP DATA TO SAP USING CALL TRANSACTIONREPORT ZBDC_PROGRAM_CALL_TRANS.

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF KNA1TYPES : BEGIN OF LINE_TYPE, KUNNR TYPE KUNNR, LAND1 TYPE LAND1_GP, NAME1 TYPE NAME1_GP, ORT01 TYPE ORT01_GP, END OF LINE_TYPE.

*TO CREATE INTERNAL TABLE IT_FILE OF TYPE LINE_TYPE.DATA IT_FILE TYPE TABLE OF LINE_TYPE WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_BDCDATA OF STRUCTURE BDCDATA.DATA IT_BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.

*TO PROVIDE INPUT FIELD TO ENTER UPLOADED FILE NAMEPARAMETERS P_FILE LIKE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.PERFORM BROWSE_FILE.

START-OF-SELECTION.*TO READ FLATFILE DATA TO IT_FILEPERFORM READ_FLATFILE.*TO FILL INTERNAL TABLE IT_BDCDATAPERFORM MAP_DATA.

Page 59: abapprogs

*&---------------------------------------------------------------------**& Form BROWSE_FILE*&---------------------------------------------------------------------*FORM BROWSE_FILE .*F4_FILENAME : THIS FM WILL DISPLAY LIST OF FILES AND RETURN THE SELECTED FILECALL FUNCTION 'F4_FILENAME' IMPORTING FILE_NAME = P_FILE .

ENDFORM. " BROWSE_FILE

*&---------------------------------------------------------------------**& Form READ_FLATFILE*&---------------------------------------------------------------------*FORM READ_FLATFILE .

*TO CREATE VARIABLE OF TYPE STRING.DATA F_FILE TYPE STRING.

F_FILE = P_FILE.

*GUI_UPLOAD:THIS FM WILL UPLOAD FLATFILE DATA TO AN INTERNAL TABLE IT_FILE.CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = F_FILE FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X' TABLES DATA_TAB = IT_FILE 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 I100(ZMSG) WITH 'ERROR IN OPENING FILE'. EXIT.ELSE.*LOOP AT IT_FILE.*WRITE:/ IT_FILE-KUNNR,IT_FILE-LAND1,IT_FILE-NAME1,IT_FILE-ORT01.*ENDLOOP.ENDIF.

ENDFORM. " READ_FLATFILE

Page 60: abapprogs

*&---------------------------------------------------------------------**& Form MAP_DATA*&---------------------------------------------------------------------*FORM MAP_DATA .

LOOP AT IT_FILE.

REFRESH IT_BDCDATA.

*TO FILL MPP AND SCREEN NUMBERPERFORM BDC_DYNPRO USING 'SAPMZMODULE12' '100'.

*TO FILL SCREEN FIELD AND SCREEN FIELD VALUE.PERFORM BDC_FIELD USING 'KNA1-KUNNR' IT_FILE-KUNNR.PERFORM BDC_FIELD USING 'KNA1-LAND1' IT_FILE-LAND1.PERFORM BDC_FIELD USING 'KNA1-NAME1' IT_FILE-NAME1.PERFORM BDC_FIELD USING 'KNA1-ORT01' IT_FILE-ORT01.

*TO FILL ACTION ALSO.PERFORM BDC_FIELD USING 'BDC_OKCODE' 'INSE'.

*TO FILL MPP AND SCREEN NUMBERPERFORM BDC_DYNPRO USING 'SAPMZMODULE12' '100'.

*TO FILL ACTION ALSO.PERFORM BDC_FIELD USING 'BDC_OKCODE' 'EXIT'.

*TO CALL TRANSACTION 'ZTKNA1'.CALL TRANSACTION 'ZTKNA1' USING IT_BDCDATA UPDATE 'A' MODE 'A'.

ENDLOOP.

ENDFORM. " MAP_DATA

*&---------------------------------------------------------------------**& Form BDC_DYNPRO*&---------------------------------------------------------------------*FORM BDC_DYNPRO USING PROG SCRNO.

CLEAR IT_BDCDATA.*FILL IT_BDCDATAIT_BDCDATA-PROGRAM = PROG.IT_BDCDATA-DYNPRO = SCRNO.IT_BDCDATA-DYNBEGIN = 'X'.APPEND IT_BDCDATA.

ENDFORM. " BDC_DYNPRO

*&---------------------------------------------------------------------**& Form BDC_FIELD*&---------------------------------------------------------------------*FORM BDC_FIELD USING FNAME FVALUE.

CLEAR IT_BDCDATA.*FILL IT_BDCDATA WITH SCREEN FIELD AND SCREEN FIELD VALUEIT_BDCDATA-FNAM = FNAME.IT_BDCDATA-FVAL = FVALUE.APPEND IT_BDCDATA.

ENDFORM. " BDC_FIELD

Page 61: abapprogs

*TO READ DATASET OR SEQUENTIAL FILE FROM APPLICATOIN SERVERREPORT ZREAD_DATASET1.

*TO CREATE LINE TYPETYPES : BEGIN OF LINE_TYPE , MATNR TYPE MATNR, MBRSH TYPE MBRSH, MTART TYPE MTART, MAKTX TYPE MAKTX, MEINS TYPE MEINS, END OF LINE_TYPE.

*TO CREATE INTERNAL TABLE IT_FILE OF TYPE LINE_TYPE.DATA IT_MAT TYPE TABLE OF LINE_TYPE WITH HEADER LINE.

*TO CREATE VARIABLEDATA TEXT TYPE STRING.

START-OF-SELECTION.PERFORM OPEN_DATASET.PERFORM READ_FROM_DATASET.PERFORM CLOSE_DATASET.

*&---------------------------------------------------------------------**& Form OPEN_DATASET*&---------------------------------------------------------------------*FORM OPEN_DATASET .

*TO OPEN DATASET OR SEQUENTIAL FILE IN READ MODEOPEN dataset 'SEQFILE1' IN TEXT MODE FOR INPUT ENCODING DEFAULT.

ENDFORM. " OPEN_DATASET

*&---------------------------------------------------------------------**& Form READ_FROM_DATASET*&---------------------------------------------------------------------*FORM READ_FROM_DATASET .

DO.READ DATASET 'SEQFILE1' INTO TEXT.

Page 62: abapprogs

IF SY-SUBRC <> 0.EXIT.ELSE.SPLIT TEXT AT ',' INTO IT_MAT-MATNR IT_MAT-MBRSH IT_MAT-MTART IT_MAT-MAKTX IT_MAT-MEINS.APPEND IT_MAT.CLEAR : IT_MAT,TEXT.ENDIF.ENDDO.

LOOP AT IT_MAT.WRITE:/ IT_MAT-MATNR,IT_MAT-MBRSH,IT_MAT-MTART,IT_MAT-MAKTX,IT_MAT-MEINS.ENDLOOP.

ENDFORM. " WRITE_ONTO_DATASET

*&---------------------------------------------------------------------**& Form CLOSE_DATASET*&---------------------------------------------------------------------*FORM CLOSE_DATASET .

*TO CLOSE DATASET.CLOSE DATASET 'SEQFILE1'.

ENDFORM. " CLOSE_DATASET

report ZBDC_CALL_TRANSACTION_MM01_1 no standard page heading line-size 255.

*TO CREATE LINE TYPETYPES : BEGIN OF LINE_TYPE , MATNR TYPE MATNR, MBRSH TYPE MBRSH, MTART TYPE MTART, MAKTX TYPE MAKTX, MEINS TYPE MEINS, END OF LINE_TYPE.

*TO CREATE INTERNAL TABLE IT_FILE OF TYPE LINE_TYPE.DATA IT_FILE TYPE TABLE OF LINE_TYPE WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_BDCDATA OF STRUCTURE BDCDATA.

Page 63: abapprogs

DATA IT_BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.

*TO PROVIDE INPUT FIELD TO ENTER FLATFILE NAMEPARAMETERS P_FILE LIKE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.PERFORM BROWSE_FILE.

start-of-selection.PERFORM READ_FLATFILE.PERFORM CREATE_SESSION.PERFORM CONVERT_IT_BDCDATA.PERFORM CLOSE_SESSION.

*&---------------------------------------------------------------------**& Form BROWSE_FILE*&---------------------------------------------------------------------*FORM BROWSE_FILE .

*F4_FILENAME : IT DISPLAYS LIST OF FILES PRESENT ON PRESENTATION SERVER*AND RETURNS THE SELECTED FILECALL FUNCTION 'F4_FILENAME' IMPORTING FILE_NAME = P_FILE .

ENDFORM. " BROWSE_FILE

*&---------------------------------------------------------------------**& Form READ_FLATFILE*&---------------------------------------------------------------------*FORM READ_FLATFILE .

*TO CREATE VARIABLEDATA F_FILE TYPE STRING.

F_FILE = P_FILE.*GUI_UPLOAD : THIS FM WILL UPLOAD FLATFILE DATA TO INTERNAL TABLECALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = F_FILE FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X' TABLES DATA_TAB = IT_FILE 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

Page 64: abapprogs

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. " READ_FLATFILE

*&---------------------------------------------------------------------**& Form CONVERT_IT_BDCDATA*&---------------------------------------------------------------------*FORM CONVERT_IT_BDCDATA .

LOOP AT IT_FILE.

REFRESH IT_BDCDATA.

perform bdc_dynpro using 'SAPLMGMM' '0060'.perform bdc_field using 'BDC_CURSOR' 'RMMG1-MTART'.perform bdc_field using 'BDC_OKCODE' '=AUSW'.perform bdc_field using 'RMMG1-MATNR' IT_FILE-MATNR.perform bdc_field using 'RMMG1-MBRSH' IT_FILE-MBRSH.perform bdc_field using 'RMMG1-MTART' IT_FILE-MTART.perform bdc_dynpro using 'SAPLMGMM' '0070'.perform bdc_field using 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(01)'.perform bdc_field using 'BDC_OKCODE' '=ENTR'.perform bdc_field using 'MSICHTAUSW-KZSEL(01)' 'X'.perform bdc_dynpro using 'SAPLMGMM' '4004'.perform bdc_field using 'BDC_OKCODE' '=BU'.perform bdc_field using 'MAKT-MAKTX' IT_FILE-MAKTX.perform bdc_field using 'BDC_CURSOR' 'MARA-MEINS'.perform bdc_field using 'MARA-MEINS' IT_FILE-MEINS.*TO INSERT MAPPED DATA : IT_BDCDATA INTO SESSION:MYSESSION6.PERFORM FILL_SESSION.

ENDLOOP.ENDFORM. " CONVERT_IT_BDCDATA

*&---------------------------------------------------------------------**& Form bdc_dynpro*&---------------------------------------------------------------------*FORM bdc_dynpro USING PROG SCRNO.

CLEAR IT_BDCDATA.*FILL MODULE POOL PROGRAM NAME AND SCREEN NUMBERIT_BDCDATA-PROGRAM = PROG.IT_BDCDATA-DYNPRO = SCRNO.IT_BDCDATA-DYNBEGIN = 'X'.

Page 65: abapprogs

APPEND IT_BDCDATA.

ENDFORM. " bdc_dynpro

*&---------------------------------------------------------------------**& Form bdc_field*&---------------------------------------------------------------------*FORM bdc_field USING FNAME FVALUE.

CLEAR IT_BDCDATA.*FILL SCREEN FIELD NAME AND SCREEN FIELD VALUEIT_BDCDATA-FNAM = FNAME.IT_BDCDATA-FVAL = FVALUE.APPEND IT_BDCDATA.

ENDFORM. " bdc_field*&---------------------------------------------------------------------**& Form CREATE_SESSION*&---------------------------------------------------------------------*FORM CREATE_SESSION .*1)FUNCTION MODULE : BDC_OPEN_GROUP : THIS FM WILL CREATE SESSION(FILE)* ON APPLICATION SERVER AND MAINTAIN IN TCODE SM35.CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING GROUP = 'MYSESSION6'* HOLDDATE = FILLER8 KEEP = 'X' USER = SY-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 .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. " CREATE_SESSION

*&---------------------------------------------------------------------**& Form FILL_SESSION*&---------------------------------------------------------------------*FORM FILL_SESSION .*2)FUNCTION MODULE:BDC_INSERT:THIS FM WILL INSERT DATA INTO SESSION ON SM35(APPLICATION SERVER).CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = 'MM01' TABLES DYNPROTAB = IT_BDCDATA EXCEPTIONS

Page 66: abapprogs

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. " FILL_SESSION*&---------------------------------------------------------------------**& Form CLOSE_SESSION*&---------------------------------------------------------------------*FORM CLOSE_SESSION .*3)FUNCTION MODULE:BDC_CLOSE_GROUP:THIS FM WILL CLOSE THE SESSION(FILE).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.

ENDFORM. " CLOSE_SESSION*BDC PROGRAM TO TRANSFER NON-SAP DATA TO SAP USING CALL TRANSACTIONREPORT ZBDC_PROGRAM_CALL_TRANS.

*TO CREATE LINE TYPE WITH SOME OF FIELDS OF KNA1TYPES : BEGIN OF LINE_TYPE, KUNNR TYPE KUNNR, LAND1 TYPE LAND1_GP, NAME1 TYPE NAME1_GP, ORT01 TYPE ORT01_GP, END OF LINE_TYPE.

*TO CREATE INTERNAL TABLE IT_FILE OF TYPE LINE_TYPE.DATA IT_FILE TYPE TABLE OF LINE_TYPE WITH HEADER LINE.

*TO CREATE INTERNAL TABLE IT_BDCDATA OF STRUCTURE BDCDATA.DATA IT_BDCDATA TYPE TABLE OF BDCDATA WITH HEADER LINE.

*TO PROVIDE INPUT FIELD TO ENTER UPLOADED FILE NAMEPARAMETERS P_FILE LIKE IBIPPARMS-PATH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.PERFORM BROWSE_FILE.

START-OF-SELECTION.*TO READ FLATFILE DATA TO IT_FILEPERFORM READ_FLATFILE.*TO FILL INTERNAL TABLE IT_BDCDATAPERFORM MAP_DATA.

Page 67: abapprogs

*&---------------------------------------------------------------------**& Form BROWSE_FILE*&---------------------------------------------------------------------*FORM BROWSE_FILE .*F4_FILENAME : THIS FM WILL DISPLAY LIST OF FILES AND RETURN THE SELECTED FILECALL FUNCTION 'F4_FILENAME' IMPORTING FILE_NAME = P_FILE .

ENDFORM. " BROWSE_FILE

*&---------------------------------------------------------------------**& Form READ_FLATFILE*&---------------------------------------------------------------------*FORM READ_FLATFILE .

*TO CREATE VARIABLE OF TYPE STRING.DATA F_FILE TYPE STRING.

F_FILE = P_FILE.

*GUI_UPLOAD:THIS FM WILL UPLOAD FLATFILE DATA TO AN INTERNAL TABLE IT_FILE.CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = F_FILE FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X' TABLES DATA_TAB = IT_FILE 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 I100(ZMSG) WITH 'ERROR IN OPENING FILE'. EXIT.ELSE.*LOOP AT IT_FILE.*WRITE:/ IT_FILE-KUNNR,IT_FILE-LAND1,IT_FILE-NAME1,IT_FILE-ORT01.*ENDLOOP.ENDIF.

ENDFORM. " READ_FLATFILE

*&---------------------------------------------------------------------**& Form MAP_DATA

Page 68: abapprogs

*&---------------------------------------------------------------------*FORM MAP_DATA .

LOOP AT IT_FILE.

REFRESH IT_BDCDATA.

*TO FILL MPP AND SCREEN NUMBERPERFORM BDC_DYNPRO USING 'SAPMZMODULE12' '100'.

*TO FILL SCREEN FIELD AND SCREEN FIELD VALUE.PERFORM BDC_FIELD USING 'KNA1-KUNNR' IT_FILE-KUNNR.PERFORM BDC_FIELD USING 'KNA1-LAND1' IT_FILE-LAND1.PERFORM BDC_FIELD USING 'KNA1-NAME1' IT_FILE-NAME1.PERFORM BDC_FIELD USING 'KNA1-ORT01' IT_FILE-ORT01.

*TO FILL ACTION ALSO.PERFORM BDC_FIELD USING 'BDC_OKCODE' 'INSE'.

*TO FILL MPP AND SCREEN NUMBERPERFORM BDC_DYNPRO USING 'SAPMZMODULE12' '100'.

*TO FILL ACTION ALSO.PERFORM BDC_FIELD USING 'BDC_OKCODE' 'EXIT'.

*TO CALL TRANSACTION 'ZTKNA1'.CALL TRANSACTION 'ZTKNA1' USING IT_BDCDATA UPDATE 'A' MODE 'A'.

ENDLOOP.

ENDFORM. " MAP_DATA

*&---------------------------------------------------------------------**& Form BDC_DYNPRO*&---------------------------------------------------------------------*FORM BDC_DYNPRO USING PROG SCRNO.

CLEAR IT_BDCDATA.*FILL IT_BDCDATAIT_BDCDATA-PROGRAM = PROG.IT_BDCDATA-DYNPRO = SCRNO.IT_BDCDATA-DYNBEGIN = 'X'.APPEND IT_BDCDATA.

ENDFORM. " BDC_DYNPRO

*&---------------------------------------------------------------------**& Form BDC_FIELD*&---------------------------------------------------------------------*FORM BDC_FIELD USING FNAME FVALUE.

CLEAR IT_BDCDATA.*FILL IT_BDCDATA WITH SCREEN FIELD AND SCREEN FIELD VALUEIT_BDCDATA-FNAM = FNAME.IT_BDCDATA-FVAL = FVALUE.APPEND IT_BDCDATA.

ENDFORM. " BDC_FIELD

Page 69: abapprogs

*CLASSICAL REPORT USING ALV OOPSREPORT ZINTERACTIVE_REPORT_ALV_OOPS.*EKKO : PURCHASE ORDER HEADER DATA*EKPO : PURCHASE ORDER ITEM DATA.

TABLES :EKKO,SSCRFIELDS.*TO CREATE INTERNAL TABLE IT_EKKO OF STRUCTURE EKKODATA IT_EKKO TYPE TABLE OF EKKO .*TO CREATE WORK AREADATA WA_EKKO TYPE EKKO.*TO CREATE INTERNAL TABLE IT_EKPO OF STRUCTURE EKPODATA IT_EKPO TYPE TABLE OF EKPO .*TO CREATE WORK AREA OF STRUCTURE EKPODATA WA_EKPO TYPE EKPO.*TO CREATE OBJECT REFERENCE OF CLASS CL_GUI_CUSTOM_CONTAINERDATA O_CONT1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.*TO CREATE OBJECT REFERENCE OF CLASS CL_GUI_ALV_GRID.DATA O_GRID1 TYPE REF TO CL_GUI_ALV_GRID.*TO CREATE OBJECT REF OF CLASS CL_GUI_CUSTOM_CONTAINERDATA O_CONT2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.*TO CREATE OBJECT REF OF CLASS CL_GUI_ALV_GRIDDATA O_GRID2 TYPE REF TO CL_GUI_ALV_GRID.

*TO DEFINE A CLASS WITH EVENT HANDLER METHODCLASS LCL_HANDLE_DOUBLE_CLK DEFINITION.PUBLIC SECTION.METHODS : HANDLE_DBL_CLK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN ES_ROW_NO.ENDCLASS.*TO IMPLEMENT CLASSCLASS LCL_HANDLE_DOUBLE_CLK IMPLEMENTATION.METHOD HANDLE_DBL_CLK.IF E_COLUMN = 'EBELN' AND E_ROW-INDEX > 0.*TO READ PO DOCUMENT NUMBER FROM INTERNAL TABLE IT_EKKOREAD TABLE IT_EKKO INTO WA_EKKO INDEX E_ROW-INDEX.IF SY-SUBRC = 0.*TO CALL NEXT SCREEN 200.*CALL SCREEN 200.SET PARAMETER ID 'BES' FIELD WA_EKKO-EBELN.*TO CALL TRANSACTION 'ME23N' (TO DISPLAY PURCHASE ORDER NUMBER)CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.ENDIF.ELSE.MESSAGE I100(ZMSG) WITH 'INVALID CURSOR POSITION'.ENDIF.ENDMETHOD.ENDCLASS.

*TO PROVIDE RANGE OF PURCHASE ORDERS AS INPUT FIELDSSELECT-OPTIONS S_EBELN FOR EKKO-EBELN.

SELECTION-SCREEN SKIP 2.

*TO PROVIDE PUSHBUTTONS ON SELECTION-SCREEN.

Page 70: abapprogs

SELECTION-SCREEN : PUSHBUTTON /10(10) PUSH1 USER-COMMAND FCT1 MODIF ID ABC, PUSHBUTTON 40(10) PUSH2 USER-COMMAND FCT2.

AT SELECTION-SCREEN .IF SSCRFIELDS-UCOMM = 'FCT2' OR SSCRFIELDS-UCOMM = 'FC02'.LEAVE PROGRAM.ELSEIF SSCRFIELDS-UCOMM = 'FCT1' OR SSCRFIELDS-UCOMM = 'FC01'.SSCRFIELDS-UCOMM = 'ONLI'.ENDIF.

INITIALIZATION.PUSH1 = 'DISPLAY'.PUSH2 = 'EXIT'.

START-OF-SELECTION.CALL SCREEN 100.

*&---------------------------------------------------------------------**& Module GET_DATA_100 OUTPUT*&---------------------------------------------------------------------*MODULE GET_DATA_100 OUTPUT.

*TO GET THE DATA FROM DBTABLE EKKO INTO INTERNAL TABLE IT_EKKOSELECT * FROM EKKO INTO TABLE IT_EKKO WHERE EBELN IN S_EBELN.

ENDMODULE. " GET_DATA_100 OUTPUT

*&---------------------------------------------------------------------**& Module DISPLAY_DATA_100 OUTPUT*&---------------------------------------------------------------------*MODULE DISPLAY_DATA_100 OUTPUT.*CHECK WHETHER OBJECT O_CONT1 IS CREATED OR NOTIF O_CONT1 IS INITIAL.*TO CREATE CUSTOM CONTAINER OBJECT BY LINKING IT TO SCREEN ELEMENT CUSTOM CONTROLCREATE OBJECT O_CONT1 EXPORTING CONTAINER_NAME = 'CONT1' EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4 LIFETIME_DYNPRO_DYNPRO_LINK = 5 others = 6 .IF SY-SUBRC = 0.*CREATE OBJECT FOR GRID.*LINKING CUSTOM CONTAINER OBJECT TO GRID OBJECT O_GRID1 AS A PARENT TO IT WHICH IS ALREADY*LINKED TO CUSTOM CONTROL SCREEN ELEMENT.CREATE OBJECT O_GRID1 EXPORTING I_PARENT = O_CONT1 EXCEPTIONS ERROR_CNTL_CREATE = 1 ERROR_CNTL_INIT = 2 ERROR_CNTL_LINK = 3 ERROR_DP_CREATE = 4 others = 5 .

Page 71: abapprogs

ENDIF.ENDIF.*TO REGISTER EVENT HANDLER METHOD - HANDLE_DBL_CLK*TO CREATE OBJECT REFDATA OBJ1 TYPE REF TO LCL_HANDLE_DOUBLE_CLK.*TO CREATE OBJECT.CREATE OBJECT OBJ1.*SET HANDLERSET HANDLER OBJ1->HANDLE_DBL_CLK FOR O_GRID1.*TO DISPLAY INTERNAL TABLE (IT_EKKO) DATA ONTO ALV GRID OF CUSTOM CONTROLCALL METHOD O_GRID1->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'EKKO'* IS_LAYOUT = CHANGING IT_OUTTAB = IT_EKKO* IT_FIELDCATALOG = EXCEPTIONS INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 others = 4 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.ENDMODULE. " DISPLAY_DATA_100 OUTPUT*&---------------------------------------------------------------------**& Module USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------*MODULE USER_COMMAND_0100 INPUT.CASE SY-UCOMM.WHEN 'BACK'.LEAVE TO SCREEN 0.ENDCASE.ENDMODULE. " USER_COMMAND_0100 INPUT

*&---------------------------------------------------------------------**& Module GET_DATA_200 OUTPUT*&---------------------------------------------------------------------*MODULE GET_DATA_200 OUTPUT.*TO GET PO ITEM DATA FROM DBTABLE EKPO INTO IT_EKPOSELECT * FROM EKPO INTO TABLE IT_EKPO WHERE EBELN = WA_EKKO-EBELN.

ENDMODULE. " GET_DATA_200 OUTPUT

*&---------------------------------------------------------------------**& Module DISPLAY_DATA_200 OUTPUT*&---------------------------------------------------------------------*MODULE DISPLAY_DATA_200 OUTPUT.

*CHECK WHETHER OBJECT O_CONT1 IS CREATED OR NOTIF O_CONT2 IS INITIAL.*TO CREATE CUSTOM CONTAINER OBJECT BY LINKING IT TO SCREEN ELEMENT CUSTOM CONTROLCREATE OBJECT O_CONT2 EXPORTING CONTAINER_NAME = 'CONT2' EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4

Page 72: abapprogs

LIFETIME_DYNPRO_DYNPRO_LINK = 5 others = 6 .IF SY-SUBRC = 0.*CREATE OBJECT FOR GRID.*LINKING CUSTOM CONTAINER OBJECT TO GRID OBJECT O_GRID1 AS A PARENT TO IT WHICH IS ALREADY*LINKED TO CUSTOM CONTROL SCREEN ELEMENT.CREATE OBJECT O_GRID2 EXPORTING I_PARENT = O_CONT2 EXCEPTIONS ERROR_CNTL_CREATE = 1 ERROR_CNTL_INIT = 2 ERROR_CNTL_LINK = 3 ERROR_DP_CREATE = 4 others = 5 .ENDIF.ENDIF.

*TO DISPLAY INTERNAL TABLE (IT_EKPO) DATA ONTO NEXT ALV GRID OF CUSTOM CONTROLCALL METHOD O_GRID2->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'EKPO'* IS_LAYOUT = CHANGING IT_OUTTAB = IT_EKPO* IT_FIELDCATALOG = EXCEPTIONS INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 others = 4 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

ENDMODULE. " DISPLAY_DATA_200 OUTPUT

*&---------------------------------------------------------------------**& Module USER_COMMAND_0200 INPUT*&---------------------------------------------------------------------*MODULE USER_COMMAND_0200 INPUT.

CASE SY-UCOMM.WHEN 'BACK'.LEAVE TO SCREEN 0.ENDCASE.

ENDMODULE. " USER_COMMAND_0200 INPUT

*ALV INTERACTIVE REPORT USING OOPS CONCEPT BY PROVIND USER INTERFACEREPORT ZINTERACTIVE_ALV_OOPS_USER_COM.

Page 73: abapprogs

TABLES : EKKO,SSCRFIELDS.

*TO CREATE INTERNAL TABLE IT_EKKO OF STRUCTURE EKKODATA IT_EKKO TYPE TABLE OF EKKO.

*TO CREATE WORK AREA WA_EKKO OF STRUCTURE EKKODATA WA_EKKO TYPE EKKO.

*TO CREATE INTERNAL TABLE IT_EKPO OF STRUCTURE EKPODATA IT_EKPO TYPE TABLE OF EKPO.

*TO CREATE INTERNAL TABLE IT_TEMP OF STRUCTURE EKKO.DATA IT_TEMP TYPE TABLE OF EKKO.

*TO CREATE OBJECT REF TO CLASS CL_GUI_CUSTOM_CONTAINERDATA O_CONT1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

*TO CREATE OBJEECT REF TO CLASS CL_GUI_ALV_GRIDDATA O_GRID1 TYPE REF TO CL_GUI_ALV_GRID.

*TO CREATE OBJECT REF TO CLASS CL_GUI_CUSTOM_CONTAINERDATA O_CONT2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

*TO CREATE OBJEECT REF TO CLASS CL_GUI_ALV_GRIDDATA O_GRID2 TYPE REF TO CL_GUI_ALV_GRID.

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER PURCHASE ORDERSSELECT-OPTIONS S_EBELN FOR EKKO-EBELN .

*TO DEFINE LOCAL CLASS TO DEFINE EVENT HANDLER METHOD.CLASS LCL_HANDLER DEFINITION.PUBLIC SECTION.METHODS : HANDLE_USER_COMM FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID IMPORTING E_UCOMM, HANDLE_TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID IMPORTING E_OBJECT.ENDCLASS.

*TO IMPLEMENT CLASS LCL_HANDLER.CLASS LCL_HANDLER IMPLEMENTATION.METHOD HANDLE_TOOLBAR.

*TO CREATE WORK AREA WA_TOOLBAR.DATA WA_TOOLBAR TYPE STB_BUTTON.

*TO PROVIDE PUSHBUTTONS ON ALV GRIDWA_TOOLBAR-FUNCTION = 'FCT1'.WA_TOOLBAR-TEXT = 'DISPLAY'.APPEND WA_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

WA_TOOLBAR-FUNCTION = 'FCT2'.WA_TOOLBAR-TEXT = 'EXIT'.APPEND WA_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

WA_TOOLBAR-FUNCTION = 'FCT3'.WA_TOOLBAR-TEXT = 'ME23N'.APPEND WA_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

ENDMETHOD.

METHOD HANDLE_USER_COMM.*TO CREATE AN INTERNAL TABLE IT_ROWSDATA IT_ROWS TYPE LVC_T_ROW.

Page 74: abapprogs

*TO CREATE WORK AREA OF TYPE LVC_DATA WA_ROWS TYPE LINE OF LVC_T_ROW.

CASE E_UCOMM.WHEN 'FCT2'.LEAVE PROGRAM.WHEN 'FCT1'.*TO CAPTURE THE MULTIPLE RECORDS INDEXES SELECTED BY USER ON ALV GRIDCALL METHOD O_GRID1->GET_SELECTED_ROWS IMPORTING ET_INDEX_ROWS = IT_ROWS. .IF IT_ROWS IS INITIAL.MESSAGE I100(ZMSG) WITH 'INVALID CURSOR POSITION'.ELSE.REFRESH IT_TEMP.LOOP AT IT_ROWS INTO WA_ROWS.READ TABLE IT_EKKO INTO WA_EKKO INDEX WA_ROWS-INDEX.IF SY-SUBRC = 0.APPEND WA_EKKO TO IT_TEMP.ENDIF.ENDLOOP.*TO CALL SECOND SCREEN INORDER TO DISPLAY PO ITEM DATA(EKPO)CALL SCREEN 200.ENDIF.WHEN 'FCT3'.*TO CAPTURE THE MULTIPLE RECORDS INDEXES SELECTED BY USER ON ALV GRIDCALL METHOD O_GRID1->GET_SELECTED_ROWS IMPORTING ET_INDEX_ROWS = IT_ROWS.IF IT_ROWS IS INITIAL.MESSAGE I100(ZMSG) WITH 'INVALID CURSOR POSITION'.ELSE.LOOP AT IT_ROWS INTO WA_ROWS.READ TABLE IT_EKKO INTO WA_EKKO INDEX WA_ROWS-INDEX.IF SY-SUBRC = 0.SET PARAMETER ID 'BES' FIELD WA_EKKO-EBELN.CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.ENDIF.ENDLOOP.ENDIF.ENDCASE.ENDMETHOD.ENDCLASS.

*TO PROVIDE BLANK LINES.SELECTION-SCREEN SKIP 2.

*TO PROVIDE PUSHBUTTONS ON SELECTION-SCREENSELECTION-SCREEN : PUSHBUTTON /10(10) PUSH1 USER-COMMAND FCT1, PUSHBUTTON 50(10) PUSH2 USER-COMMAND FCT2.

INITIALIZATION.PUSH1 = 'DISPLAY'.PUSH2 = 'EXIT'.

AT SELECTION-SCREEN.IF SSCRFIELDS-UCOMM = 'FCT2'.LEAVE PROGRAM.ELSEIF SSCRFIELDS-UCOMM = 'FCT1'.SSCRFIELDS-UCOMM = 'ONLI'.ENDIF.

START-OF-SELECTION.

Page 75: abapprogs

*TO CALL FIRST SCREEN TO DISPLAY PO HEADER DATA(EKKO)CALL SCREEN 100.

*&---------------------------------------------------------------------**& Module READ_DATA_100 OUTPUT*&---------------------------------------------------------------------*MODULE READ_DATA_100 OUTPUT.

*TO GET DATA FROM DBTABLE EKKO INTO INTERNAL TABLE IT_EKKOSELECT * FROM EKKO INTO TABLE IT_EKKO WHERE EBELN IN S_EBELN.

ENDMODULE. " READ_DATA_100 OUTPUT

*&---------------------------------------------------------------------**& Module DISPLAY_DATA_100 OUTPUT*&---------------------------------------------------------------------*MODULE DISPLAY_DATA_100 OUTPUT.

*TO CREATE WORK AREA WA_LAYOUT OF STRUCTURE LVC_S_LAYODATA WA_LAYOUT TYPE LVC_S_LAYO.

*TO CHECK EXISTENCE OF AN OBJECT O_CONT1.IF O_CONT1 IS INITIAL.*TO CREATE OBJECTCREATE OBJECT O_CONT1 EXPORTING CONTAINER_NAME = 'CONT1' EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4 LIFETIME_DYNPRO_DYNPRO_LINK = 5 others = 6 .IF SY-SUBRC = 0.*TO CREATE OBJECTCREATE OBJECT O_GRID1 EXPORTING I_PARENT = O_CONT1 EXCEPTIONS ERROR_CNTL_CREATE = 1 ERROR_CNTL_INIT = 2 ERROR_CNTL_LINK = 3 ERROR_DP_CREATE = 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.ENDIF.ENDIF.*TO CREATE OBJECT REF AND ITS OBJECT OF LOCAL CLASS : LCL_HANDLERDATA OBJ1 TYPE REF TO LCL_HANDLER.*CREATE OBJECTCREATE OBJECT OBJ1.

*TO REGISTER EVENT HANDLER METHODS.SET HANDLER : OBJ1->HANDLE_TOOLBAR FOR O_GRID1, OBJ1->HANDLE_USER_COMM FOR O_GRID1.

Page 76: abapprogs

*TO PROVIDE CHECKBOX ON ALV GRIDWA_LAYOUT-SEL_MODE = 'D'.*TO DISPLAY INTERNAL TABLE DATA IT_EKKO ON FIRST SCREEN ALV GRIDCALL METHOD O_GRID1->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'EKKO' IS_LAYOUT = WA_LAYOUT CHANGING IT_OUTTAB = IT_EKKO* IT_FIELDCATALOG = EXCEPTIONS INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 others = 4 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

ENDMODULE. " DISPLAY_DATA_100 OUTPUT

*&---------------------------------------------------------------------**& Module USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------*MODULE USER_COMMAND_0100 INPUT.

CASE SY-UCOMM.WHEN 'BACK'.LEAVE TO SCREEN 0.ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

*&---------------------------------------------------------------------**& Module GET_DATA_200 OUTPUT*&---------------------------------------------------------------------*MODULE GET_DATA_200 OUTPUT.

*TO SELECT DATA FROM DBTABLE EKPO INTO INTERNAL TABLE IT_EKPOSELECT * FROM EKPO INTO TABLE IT_EKPO FOR ALL ENTRIES IN IT_TEMP WHERE EBELN = IT_TEMP-EBELN.

ENDMODULE. " GET_DATA_200 OUTPUT

*&---------------------------------------------------------------------**& Module DISPLAY_DATA_200 OUTPUT*&---------------------------------------------------------------------*MODULE DISPLAY_DATA_200 OUTPUT.

*TO CHECK EXISTENCE OF AN OBJECT O_CONT2.IF O_CONT2 IS INITIAL.*TO CREATE OBJECTCREATE OBJECT O_CONT2 EXPORTING CONTAINER_NAME = 'CONT2' EXCEPTIONS CNTL_ERROR = 1

Page 77: abapprogs

CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4 LIFETIME_DYNPRO_DYNPRO_LINK = 5 others = 6 .IF SY-SUBRC = 0.*TO CREATE OBJECTCREATE OBJECT O_GRID2 EXPORTING I_PARENT = O_CONT2 EXCEPTIONS ERROR_CNTL_CREATE = 1 ERROR_CNTL_INIT = 2 ERROR_CNTL_LINK = 3 ERROR_DP_CREATE = 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.ENDIF.ENDIF.

*TO DISPLAY INTERNAL TABLE DATA IT_EKPO ONTO ALV GRID OF SECOND SCREEN 200CALL METHOD O_GRID2->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'EKPO' CHANGING IT_OUTTAB = IT_EKPO* IT_FIELDCATALOG = EXCEPTIONS INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 others = 4 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

ENDMODULE. " DISPLAY_DATA_200 OUTPUT

*&---------------------------------------------------------------------**& Module USER_COMMAND_0200 INPUT*&---------------------------------------------------------------------*MODULE USER_COMMAND_0200 INPUT.

CASE SY-UCOMM.WHEN 'BACK'.LEAVE TO SCREEN 0.ENDCASE.

ENDMODULE. " USER_COMMAND_0200 INPUT

*INTERACTIVE ALV REPORT USING OOPS CONCEPTSREPORT ZINTERACTIVE_ALV_OOPS_DBL_CLK.

TABLES :EKKO,SSCRFIELDS.

*TO CREATE INTERNAL TABLE IT_EKKO OF STRUCTURE EKKODATA IT_EKKO TYPE TABLE OF EKKO.

Page 78: abapprogs

*TO CREATE WORK AREA WA_EKKO OF STRUCTURE EKKODATA WA_EKKO TYPE EKKO.

*TO CREATE INTERNAL TABLE IT_EKPO OF STRUCTURE EKPODATA IT_EKPO TYPE TABLE OF EKPO.

*TO CREATE WORK AREA WA_EKPO OF STRUCTURE EKPODATA WA_EKPO TYPE EKPO.

*TO CREATE OBJECT REFERENCE FOR CUSTOM CONTAINERDATA O_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

*TO CREATE OBJECT REFERENCE FOR ALV GRIDDATA O_GRID1 TYPE REF TO CL_GUI_ALV_GRID.

*TO CREATE OBJECT REFERENCE FOR CUSTOM CONTAINERDATA O_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

*TO CREATE OBJECT REFERENCE FOR ALV GRIDDATA O_GRID2 TYPE REF TO CL_GUI_ALV_GRID.

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER PURCHASE ORDERSSELECT-OPTIONS S_EBELN FOR EKKO-EBELN ."no intervals no-extension.

*TO DEFINE CLASS FOR EVENT HANDLER METHODCLASS C1 DEFINITION.PUBLIC SECTION.METHODS HANDLE_DBL_CLK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN ES_ROW_NO.ENDCLASS.

*TO IMPLEMENT CLASS FOR EVENT HANDLER METHOD.CLASS C1 IMPLEMENTATION.METHOD HANDLE_DBL_CLK.IF E_COLUMN = 'EBELN' AND E_ROW-INDEX > 0.*TO READ A SINGLE LINE OF IT_EKKOREAD TABLE IT_EKKO INTO WA_EKKO INDEX E_ROW-INDEX.IF SY-SUBRC = 0.CALL SCREEN 200.ENDIF.ELSE.MESSAGE I100(ZMSG) WITH 'INVALID CURSOR POSITION'.ENDIF.ENDMETHOD.ENDCLASS.

*TO PROVIDE BLANK LINES.SELECTION-SCREEN SKIP 2.

*TO PROVIDE PUSHBUTTONS ON SELECTION-SCREENSELECTION-SCREEN : PUSHBUTTON /10(10) PUSH1 USER-COMMAND FCT1, PUSHBUTTON 50(10) PUSH2 USER-COMMAND FCT2.

INITIALIZATION.PUSH1 = 'DISPLAY'.PUSH2 = 'EXIT'.

AT SELECTION-SCREEN.IF SSCRFIELDS-UCOMM = 'FCT2'.

Page 79: abapprogs

LEAVE PROGRAM.ELSEIF SSCRFIELDS-UCOMM = 'FCT1'.SSCRFIELDS-UCOMM = 'ONLI'.ENDIF.

START-OF-SELECTION.CALL SCREEN 100.

*&---------------------------------------------------------------------**& Module READ_DATA_100 OUTPUT*&---------------------------------------------------------------------*MODULE READ_DATA_100 OUTPUT.*TO GET DATA FROM DBTABLE : EKKO INTO INTERNAL TABLE IT_EKKO FOR RANGE OF POSELECT * FROM EKKO INTO TABLE IT_EKKO WHERE EBELN IN S_EBELN.

ENDMODULE. " READ_DATA_100 OUTPUT

*&---------------------------------------------------------------------**& Module DISPLAY_DATA_100 OUTPUT*&---------------------------------------------------------------------*MODULE DISPLAY_DATA_100 OUTPUT.

IF O_CONTAINER1 IS INITIAL.*TO CREATE OBJECT*LINKING THE SCREEN CUSTOM CONTROL 'CONT1'* TO AN OBJECT O_CONTAINER1 OF CLASS CL_GUI_CUSTOM_CONTAINERCREATE OBJECT O_CONTAINER1 EXPORTING CONTAINER_NAME = 'CONT1' EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4 LIFETIME_DYNPRO_DYNPRO_LINK = 5 others = 6 .IF SY-SUBRC = 0.*TO CREATE AN OBJECT*LINKING AN OBJECT 'O_CONTAINER1' OF CLASS CL_GUI_CUSTOM_CONTROL AS A PARENT TO AN OBJECT*'O_GRID1' OF CLASS CL_GUI_ALV_GRID WHICH IS ALREADY LINKED TO SCREEN CUSTOM CONROLCREATE OBJECT O_GRID1 EXPORTING I_PARENT = O_CONTAINER1 EXCEPTIONS ERROR_CNTL_CREATE = 1 ERROR_CNTL_INIT = 2 ERROR_CNTL_LINK = 3 ERROR_DP_CREATE = 4 others = 5 .ENDIF.ENDIF.

*TO REGISTER EVENT HANDLER METHOD-HANDLE_DBL_CLK.*TO CREATE OBJECT REF OF CLASS C1DATA OBJ1 TYPE REF TO C1.

Page 80: abapprogs

*TO CREATE AN OBJECTCREATE OBJECT OBJ1.

*REGISTRATIONSET HANDLER OBJ1->HANDLE_DBL_CLK FOR O_GRID1.

*THE FOLLOWIG METHOD WILL DISPLAY INTERNAL TABLE DATA IT_EKKO ON ALV GRID OF CUSTOM CONTROLCALL METHOD O_GRID1->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'EKKO' CHANGING IT_OUTTAB = IT_EKKO* IT_FIELDCATALOG =* IT_SORT = EXCEPTIONS INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 others = 4 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

ENDMODULE. " DISPLAY_DATA_100 OUTPUT

*&---------------------------------------------------------------------**& Module USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------*MODULE USER_COMMAND_0100 INPUT.

CASE SY-UCOMM.WHEN 'BACK1'.*LEAVE PROGRAM.LEAVE TO SCREEN 0.ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

*&---------------------------------------------------------------------**& Module STATUS_0100 OUTPUT*&---------------------------------------------------------------------*MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'STATUS'. SET TITLEBAR 'TITLE1'.

ENDMODULE. " STATUS_0100 OUTPUT

*&---------------------------------------------------------------------**& Module READ_DATA_200 OUTPUT*&---------------------------------------------------------------------*MODULE READ_DATA_200 OUTPUT.*TO GET THE DATA FROM DBTABLE : EKPO INTO IT_EKPO FOR THE SELECTED PO.NO ON BASIC LISTSELECT * FROM EKPO INTO TABLE IT_EKPO WHERE EBELN = WA_EKKO-EBELN.

Page 81: abapprogs

ENDMODULE. " READ_DATA_200 OUTPUT

*&---------------------------------------------------------------------**& Module DISPLAY_DATA_200 OUTPUT*&---------------------------------------------------------------------*MODULE DISPLAY_DATA_200 OUTPUT.

IF O_CONTAINER2 IS INITIAL.*TO CREATE OBJECT*LINKING THE SCREEN CUSTOM CONTROL 'CONT2'* TO AN OBJECT O_CONTAINER2 OF CLASS CL_GUI_CUSTOM_CONTAINERCREATE OBJECT O_CONTAINER2 EXPORTING CONTAINER_NAME = 'CONT2' EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4 LIFETIME_DYNPRO_DYNPRO_LINK = 5 others = 6 .IF SY-SUBRC = 0.*TO CREATE AN OBJECT*LINKING AN OBJECT 'O_CONTAINER2' OF CLASS CL_GUI_CUSTOM_CONTROL AS A PARENT TO AN OBJECT*'O_GRID2' OF CLASS CL_GUI_ALV_GRID WHICH IS ALREADY LINKED TO SCREEN CUSTOM CONROLCREATE OBJECT O_GRID2 EXPORTING I_PARENT = O_CONTAINER2 EXCEPTIONS ERROR_CNTL_CREATE = 1 ERROR_CNTL_INIT = 2 ERROR_CNTL_LINK = 3 ERROR_DP_CREATE = 4 others = 5 .ENDIF.ENDIF.

*THE FOLLOWIG METHOD WILL DISPLAY INTERNAL TABLE DATA IT_EKPO ON ALV GRID OF CUSTOM CONTROLCALL METHOD O_GRID2->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'EKPO' CHANGING IT_OUTTAB = IT_EKPO* IT_FIELDCATALOG =* IT_SORT = EXCEPTIONS INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 others = 4 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

ENDMODULE. " DISPLAY_DATA_200 OUTPUT

*&---------------------------------------------------------------------**& Module USER_COMMAND_0200 INPUT

Page 82: abapprogs

*&---------------------------------------------------------------------*MODULE USER_COMMAND_0200 INPUT.

CASE SY-UCOMM.WHEN 'BACK'.LEAVE TO SCREEN 0.ENDCASE.

ENDMODULE. " USER_COMMAND_0200 INPUT

*INTERACTIVE ALV REPORT USING OOPS CONCEPTSREPORT ZINTERACTIVE_ALV_OOPS_DBL_CLK.

TABLES :EKKO,SSCRFIELDS.

*TO CREATE INTERNAL TABLE IT_EKKO OF STRUCTURE EKKODATA IT_EKKO TYPE TABLE OF EKKO.

*TO CREATE WORK AREA WA_EKKO OF STRUCTURE EKKODATA WA_EKKO TYPE EKKO.

*TO CREATE INTERNAL TABLE IT_EKPO OF STRUCTURE EKPODATA IT_EKPO TYPE TABLE OF EKPO.

*TO CREATE WORK AREA WA_EKPO OF STRUCTURE EKPODATA WA_EKPO TYPE EKPO.

*TO CREATE OBJECT REFERENCE FOR CUSTOM CONTAINERDATA O_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

*TO CREATE OBJECT REFERENCE FOR ALV GRIDDATA O_GRID1 TYPE REF TO CL_GUI_ALV_GRID.

*TO CREATE OBJECT REFERENCE FOR CUSTOM CONTAINERDATA O_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

*TO CREATE OBJECT REFERENCE FOR ALV GRIDDATA O_GRID2 TYPE REF TO CL_GUI_ALV_GRID.

*TO PROVIDE RANGE OF INPUT FIELDS TO ENTER PURCHASE ORDERSSELECT-OPTIONS S_EBELN FOR EKKO-EBELN ."no intervals no-extension.

*TO DEFINE CLASS FOR EVENT HANDLER METHODCLASS C1 DEFINITION.

Page 83: abapprogs

PUBLIC SECTION.METHODS HANDLE_DBL_CLK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN ES_ROW_NO.ENDCLASS.

*TO IMPLEMENT CLASS FOR EVENT HANDLER METHOD.CLASS C1 IMPLEMENTATION.METHOD HANDLE_DBL_CLK.IF E_COLUMN = 'EBELN' AND E_ROW-INDEX > 0.*TO READ A SINGLE LINE OF IT_EKKOREAD TABLE IT_EKKO INTO WA_EKKO INDEX E_ROW-INDEX.IF SY-SUBRC = 0.CALL SCREEN 200.ENDIF.ELSE.MESSAGE I100(ZMSG) WITH 'INVALID CURSOR POSITION'.ENDIF.ENDMETHOD.ENDCLASS.

*TO PROVIDE BLANK LINES.SELECTION-SCREEN SKIP 2.

*TO PROVIDE PUSHBUTTONS ON SELECTION-SCREENSELECTION-SCREEN : PUSHBUTTON /10(10) PUSH1 USER-COMMAND FCT1, PUSHBUTTON 50(10) PUSH2 USER-COMMAND FCT2.

INITIALIZATION.PUSH1 = 'DISPLAY'.PUSH2 = 'EXIT'.

AT SELECTION-SCREEN.IF SSCRFIELDS-UCOMM = 'FCT2'.LEAVE PROGRAM.ELSEIF SSCRFIELDS-UCOMM = 'FCT1'.SSCRFIELDS-UCOMM = 'ONLI'.ENDIF.

START-OF-SELECTION.CALL SCREEN 100.

*&---------------------------------------------------------------------**& Module READ_DATA_100 OUTPUT*&---------------------------------------------------------------------*MODULE READ_DATA_100 OUTPUT.*TO GET DATA FROM DBTABLE : EKKO INTO INTERNAL TABLE IT_EKKO FOR RANGE OF POSELECT * FROM EKKO INTO TABLE IT_EKKO WHERE EBELN IN S_EBELN.

ENDMODULE. " READ_DATA_100 OUTPUT

*&---------------------------------------------------------------------**& Module DISPLAY_DATA_100 OUTPUT*&---------------------------------------------------------------------*MODULE DISPLAY_DATA_100 OUTPUT.

IF O_CONTAINER1 IS INITIAL.

Page 84: abapprogs

*TO CREATE OBJECT*LINKING THE SCREEN CUSTOM CONTROL 'CONT1'* TO AN OBJECT O_CONTAINER1 OF CLASS CL_GUI_CUSTOM_CONTAINERCREATE OBJECT O_CONTAINER1 EXPORTING CONTAINER_NAME = 'CONT1' EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4 LIFETIME_DYNPRO_DYNPRO_LINK = 5 others = 6 .IF SY-SUBRC = 0.*TO CREATE AN OBJECT*LINKING AN OBJECT 'O_CONTAINER1' OF CLASS CL_GUI_CUSTOM_CONTROL AS A PARENT TO AN OBJECT*'O_GRID1' OF CLASS CL_GUI_ALV_GRID WHICH IS ALREADY LINKED TO SCREEN CUSTOM CONROLCREATE OBJECT O_GRID1 EXPORTING I_PARENT = O_CONTAINER1 EXCEPTIONS ERROR_CNTL_CREATE = 1 ERROR_CNTL_INIT = 2 ERROR_CNTL_LINK = 3 ERROR_DP_CREATE = 4 others = 5 .ENDIF.ENDIF.

*TO REGISTER EVENT HANDLER METHOD-HANDLE_DBL_CLK.*TO CREATE OBJECT REF OF CLASS C1DATA OBJ1 TYPE REF TO C1.

*TO CREATE AN OBJECTCREATE OBJECT OBJ1.

*REGISTRATIONSET HANDLER OBJ1->HANDLE_DBL_CLK FOR O_GRID1.

*THE FOLLOWIG METHOD WILL DISPLAY INTERNAL TABLE DATA IT_EKKO ON ALV GRID OF CUSTOM CONTROLCALL METHOD O_GRID1->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'EKKO' CHANGING IT_OUTTAB = IT_EKKO* IT_FIELDCATALOG =* IT_SORT = EXCEPTIONS INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 others = 4 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

ENDMODULE. " DISPLAY_DATA_100 OUTPUT

*&---------------------------------------------------------------------*

Page 85: abapprogs

*& Module USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------*MODULE USER_COMMAND_0100 INPUT.

CASE SY-UCOMM.WHEN 'BACK1'.*LEAVE PROGRAM.LEAVE TO SCREEN 0.ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

*&---------------------------------------------------------------------**& Module STATUS_0100 OUTPUT*&---------------------------------------------------------------------*MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'STATUS'. SET TITLEBAR 'TITLE1'.

ENDMODULE. " STATUS_0100 OUTPUT

*&---------------------------------------------------------------------**& Module READ_DATA_200 OUTPUT*&---------------------------------------------------------------------*MODULE READ_DATA_200 OUTPUT.*TO GET THE DATA FROM DBTABLE : EKPO INTO IT_EKPO FOR THE SELECTED PO.NO ON BASIC LISTSELECT * FROM EKPO INTO TABLE IT_EKPO WHERE EBELN = WA_EKKO-EBELN.

ENDMODULE. " READ_DATA_200 OUTPUT

*&---------------------------------------------------------------------**& Module DISPLAY_DATA_200 OUTPUT*&---------------------------------------------------------------------*MODULE DISPLAY_DATA_200 OUTPUT.

IF O_CONTAINER2 IS INITIAL.*TO CREATE OBJECT*LINKING THE SCREEN CUSTOM CONTROL 'CONT2'* TO AN OBJECT O_CONTAINER2 OF CLASS CL_GUI_CUSTOM_CONTAINERCREATE OBJECT O_CONTAINER2 EXPORTING CONTAINER_NAME = 'CONT2' EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4 LIFETIME_DYNPRO_DYNPRO_LINK = 5 others = 6 .IF SY-SUBRC = 0.*TO CREATE AN OBJECT*LINKING AN OBJECT 'O_CONTAINER2' OF CLASS CL_GUI_CUSTOM_CONTROL AS A PARENT TO AN OBJECT*'O_GRID2' OF CLASS CL_GUI_ALV_GRID WHICH IS ALREADY LINKED TO SCREEN CUSTOM CONROLCREATE OBJECT O_GRID2 EXPORTING I_PARENT = O_CONTAINER2 EXCEPTIONS ERROR_CNTL_CREATE = 1

Page 86: abapprogs

ERROR_CNTL_INIT = 2 ERROR_CNTL_LINK = 3 ERROR_DP_CREATE = 4 others = 5 .ENDIF.ENDIF.

*THE FOLLOWIG METHOD WILL DISPLAY INTERNAL TABLE DATA IT_EKPO ON ALV GRID OF CUSTOM CONTROLCALL METHOD O_GRID2->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING I_STRUCTURE_NAME = 'EKPO' CHANGING IT_OUTTAB = IT_EKPO* IT_FIELDCATALOG =* IT_SORT = EXCEPTIONS INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 others = 4 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

ENDMODULE. " DISPLAY_DATA_200 OUTPUT

*&---------------------------------------------------------------------**& Module USER_COMMAND_0200 INPUT*&---------------------------------------------------------------------*MODULE USER_COMMAND_0200 INPUT.

CASE SY-UCOMM.WHEN 'BACK'.LEAVE TO SCREEN 0.ENDCASE.

ENDMODULE. " USER_COMMAND_0200 INPUT

*TO CREATE PRINT PROGRAM FOR SAPSCRIPT - YDELNOTE1REPORT ZPRINT_YDELNOTE1.

Page 87: abapprogs

*LIKP : CONTAINS DELIVERY DOCUMENT HEADER DATA*LIPS : CONTAINS DELIVERY DOCUMENT ITEM DATATABLES LIKP.

*TO CREATE INTERNAL TABLE IT_LIPS OF STRUCTURE LIPSDATA IT_LIPS TYPE TABLE OF LIPS WITH HEADER LINE.

*TO CREATE WORK AREA COMP_ADRC OF STRUCTURE ADRC TO STORE COMPANY ADDRESSDATA COMP_ADRC LIKE ADRC.

*TO CREATE WORK AREA CUST_ADRC OF STRUCTURE ADRC TO STORE CUSTOMER ADDRESSDATA CUST_ADRC LIKE ADRC.

*TO CREATE VARIABALE V_LANDX TO STORE COUNTRY NAMEDATA V_LANDX LIKE T005T-LANDX.

*TO CREATE VARIABLE FOR TOTALDATA V_TOTAL TYPE LFIMG.

*TO CREATE VARIABLE FOR SERIAL NUMBERDATA V_SNO TYPE I.

*TO PROVIDE AN INPUT FIELD TO ENTER DELIVERY DOCUMENTPARAMETERS P_VBELN LIKE LIKP-VBELN.

START-OF-SELECTION.PERFORM GET_DATA.PERFORM DISPLAY_SAPSCRIPT.

*&---------------------------------------------------------------------**& Form GET_DATA*&---------------------------------------------------------------------*FORM GET_DATA .

*TO GET DELIVERY DOCUMENT : HEADER DATA FROM DBTABLE LIKPSELECT SINGLE * FROM LIKP WHERE VBELN = P_VBELN.

*TO GET DELIVERY DOCUMENT ITEM DATA FROM DBTABLE LIPS.SELECT * FROM LIPS INTO TABLE IT_LIPS WHERE VBELN = P_VBELN.

*TO GET COMPANY ADDRESS FROM DBTABLE ADRCSELECT SINGLE NAME1 NAME2 CITY1 POST_CODE1 PO_BOX STREET COUNTRY INTO CORRESPONDING FIELDS OF COMP_ADRC FROM ADRC AS A INNER JOIN TVKO AS B ON A~ADDRNUMBER = B~ADRNR INNER JOIN LIKP AS C ON B~VKORG = C~VKORG WHERE VBELN = P_VBELN.

*TO GET CUSTOMER ADDRESS FROM DTABLE ADRC.SELECT SINGLE A~NAME1 A~NAME2 CITY1 POST_CODE1

Page 88: abapprogs

PO_BOX STREET COUNTRY INTO CORRESPONDING FIELDS OF CUST_ADRC FROM ADRC AS A INNER JOIN KNA1 AS B ON A~ADDRNUMBER = B~ADRNR INNER JOIN LIKP AS C ON B~KUNNR = C~KUNNR WHERE VBELN = P_VBELN.

*TO GET COUNTRY NAME FROM DBTABLE : T005TSELECT SINGLE LANDX FROM T005T INTO V_LANDX WHERE SPRAS = SY-LANGU AND LAND1 = COMP_ADRC-COUNTRY.

ENDFORM. " GET_DATA

*&---------------------------------------------------------------------**& Form DISPLAY_SAPSCRIPT*&---------------------------------------------------------------------*FORM DISPLAY_SAPSCRIPT .

*OPEN FORMCALL FUNCTION 'OPEN_FORM' EXPORTING DEVICE = 'PRINTER' FORM = 'YDELNOTE1' LANGUAGE = SY-LANGU EXCEPTIONS CANCELED = 1 DEVICE = 2 FORM = 3 OPTIONS = 4 UNCLOSED = 5 MAIL_OPTIONS = 6 ARCHIVE_ERROR = 7 INVALID_FAX_NUMBER = 8 MORE_PARAMS_NEEDED_IN_BATCH = 9 SPOOL_ERROR = 10 CODEPAGE = 11 OTHERS = 12 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

*TO WRITE COMPANY ADDRESS DATACALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = 'COMP_ADR' WINDOW = 'COMP_ADD' EXCEPTIONS ELEMENT = 1 FUNCTION = 2 TYPE = 3 UNOPENED = 4 UNSTARTED = 5

Page 89: abapprogs

WINDOW = 6 BAD_PAGEFORMAT_FOR_PRINT = 7 SPOOL_ERROR = 8 CODEPAGE = 9 OTHERS = 10 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

*TO WRITE DELIVERY HEADER DATACALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = 'DEL_H' WINDOW = 'DEL_HEAD' EXCEPTIONS ELEMENT = 1 FUNCTION = 2 TYPE = 3 UNOPENED = 4 UNSTARTED = 5 WINDOW = 6 BAD_PAGEFORMAT_FOR_PRINT = 7 SPOOL_ERROR = 8 CODEPAGE = 9 OTHERS = 10 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

*TO WRITE CUSTOMER ADDRESS DATACALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = 'CUST_ADR' WINDOW = 'CUST_ADD' EXCEPTIONS ELEMENT = 1 FUNCTION = 2 TYPE = 3 UNOPENED = 4 UNSTARTED = 5 WINDOW = 6 BAD_PAGEFORMAT_FOR_PRINT = 7 SPOOL_ERROR = 8 CODEPAGE = 9 OTHERS = 10 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

*TO WRITE OTHERS DATACALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = 'OTHRS' WINDOW = 'OTHERS' EXCEPTIONS ELEMENT = 1 FUNCTION = 2 TYPE = 3 UNOPENED = 4 UNSTARTED = 5

Page 90: abapprogs

WINDOW = 6 BAD_PAGEFORMAT_FOR_PRINT = 7 SPOOL_ERROR = 8 CODEPAGE = 9 OTHERS = 10 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

*TO WRITE OTHERS DATACALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = 'NOTES' WINDOW = 'NOTES' EXCEPTIONS ELEMENT = 1 FUNCTION = 2 TYPE = 3 UNOPENED = 4 UNSTARTED = 5 WINDOW = 6 BAD_PAGEFORMAT_FOR_PRINT = 7 SPOOL_ERROR = 8 CODEPAGE = 9 OTHERS = 10 .IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

LOOP AT IT_LIPS.

V_SNO = V_SNO + 1.

AT LAST. SUM. MOVE IT_LIPS-LFIMG TO V_TOTAL. ENDAT.

*TO write ITEM DATA ONTO MAIN WINDWO CALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = 'MAIN1' WINDOW = 'MAIN' EXCEPTIONS ELEMENT = 1 FUNCTION = 2 TYPE = 3 UNOPENED = 4 UNSTARTED = 5 WINDOW = 6 BAD_PAGEFORMAT_FOR_PRINT = 7 SPOOL_ERROR = 8 CODEPAGE = 9 OTHERS = 10 . IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

Page 91: abapprogs

ENDLOOP.

*TO MAKE EXPLICIT PAGE BREAK-SECOND PAGE CALL FUNCTION 'CONTROL_FORM' EXPORTING COMMAND = 'NEW-PAGE SECOND' EXCEPTIONS UNOPENED = 1 UNSTARTED = 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.

*TO CLOSE FORM - YDELNOTE1`CALL FUNCTION 'CLOSE_FORM' EXCEPTIONS UNOPENED = 1 BAD_PAGEFORMAT_FOR_PRINT = 2 SEND_ERROR = 3 SPOOL_ERROR = 4 CODEPAGE = 5 OTHERS = 6 .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. " DISPLAY_SAPSCRIPT