Calling SAP Bar Chart Graphics, Without Dialog 

The following ABAP program illustrates some of the function module calls discussed in the preceding topics.

*-------------------------------------------------------------*

* This program calls SAP Bar Chart Graphics.

*

* BARCBO01 calls BARC_SET_TIME_AXIS and BARC_ADD_CHART, creating a time * axis, a table and bars.

* A graphics profile is used.

*-------------------------------------------------------------*

REPORT BARCBO01.

 

INCLUDE SGRCCNST. "General graphics constans

INCLUDE LBARCCON. "Bar chart constants

INCLUDE BARCDATA. "General data declarations

 

DATA: CHART LIKE BCCHART-ID,

SECTION LIKE BCSECTION-ID,

VAL LIKE BCVALS-VAL.

 

PARAMETER: GROUP LIKE TBCGT-PRF_GROUP DEFAULT 'DEMO',

NAME LIKE TBCGT-PRF_NAME DEFAULT '000000000001',

INDEX LIKE TBCGT-PRF_INDEX DEFAULT '1'.

 

* Defining a graphics profile

GRAPH_PROFILE-PRF_GROUP = GROUP.

GRAPH_PROFILE-PRF_NAME = NAME.

GRAPH_PROFILE-PRF_INDEX = INDEX.

 

* Defining beginning and end of time axis

CALL FUNCTION 'BARC_SET_TIME_AXIS'

EXPORTING

START = '01.01.1994;'

END = '31.12.1994;'.

 

* Creating a chart

CALL FUNCTION 'BARC_ADD_CHART'

IMPORTING

ID = CHART.

 

* Defining the column width in the tables section

CALL FUNCTION 'BARC_SET_COLUMN_WIDTH'

EXPORTING

CHART_ID = CHART

WIDTH = 4000.

 

* Defining the table heading

BOXES-ID = 1.

BOXES-TYPE = BC_CONST-ROW_BOX.

BOXES-CHART_ID = CHART.

BOXES-FORM_TYPE = 'B1'.

BOXES-COLOR_TYPE = 'B0'.

APPEND BOXES.

 

BOX_VALS-ID = BOXES-ID.

BOX_VALS-FL = '0'.

BOX_VALS-VAL = TEXT-001. "Boxes

APPEND BOX_VALS.

 

POSITIONS-OBJ_ID = BOXES-ID.

POSITIONS-OBJ_TYPE = BC_CONST-BOX_OBJECT.

POSITIONS-CHART_ID = CHART.

POSITIONS-ROW_NUMBER = 0.

APPEND POSITIONS.

 

WRITE BOXES-ID TO VAL.

 

CALL FUNCTION 'BARC_SET_CHART_ATTRIB'

EXPORTING

FL = BC_CONST-CHART_TITLE_BOX

ID = CHART

VAL = VAL.

 

* Creating a section

CALL FUNCTION 'BARC_ADD_SECTION'

EXPORTING

SIZE = 100

START = '01.01.1994;'

UNIT = '5'

IMPORTING

ID = SECTION.

 

* Inserting ribbons in a section

CALL FUNCTION 'BARC_ADD_RIBBON'

EXPORTING

CHART_ID = CHART

COLOR_TYPE = 'R1'

SECTION_ID = SECTION

UNIT = '5'. "Day ribbon

 

CALL FUNCTION 'BARC_ADD_RIBBON'

EXPORTING

CHART_ID = CHART

COLOR_TYPE = 'R2'

SECTION_ID = SECTION

UNIT = '3'. "Month ribbon

 

* Defining boxes for table section

PERFORM SET_BOXES TABLES BOXES

BOX_VALS

POSITIONS

USING CHART.

 

* Defining nodes in the chart, data of bars

PERFORM SET_NODES TABLES NODES

NODE_VALS

POSITIONS

USING CHART.

 

STAT = SGRC_CONST-STAT_1. "Open Window, Transfer Data, Wait for Input

 

DO.

* Processing data for bar chart

CALL FUNCTION 'BARC_GRAPHIC_PBO'

EXPORTING

CONFIRM = SPACE

PROFILE = GRAPH_PROFILE

STAT = STAT

TABLES

BOXES = BOXES

BOX_VALS = BOX_VALS

DELETIONS = DELETIONS

LINKS = LINKS

LINK_VALS = LINK_VALS

NODES = NODES

NODE_VALS = NODE_VALS

POSITIONS = POSITIONS.

 

* Handing over data to graphics program

CALL FUNCTION 'GRAPH_RECEIVE'

IMPORTING

MCODE = M_TYP

EXCEPTIONS

FRONTEND_ERROR = 01

INV_COMMUNICATION = 02

NO_BATCH = 03.

 

IF NOT SY-SUBRC IS INITIAL.

EXIT.

ENDIF.

 

CASE M_TYP.

WHEN SGRC_CONST-M_TYP_D.

EXIT.

WHEN SGRC_CONST-M_TYP_I.

* Evaluating data for printing

CALL FUNCTION 'BARC_GRAPHIC_PAI'

IMPORTING

GRAPH_CMD = GRAPH_CMD

TABLES

BOXES = BOXES

BOX_VALS = BOX_VALS

DELETIONS = DELETIONS

NODES = NODES

NODE_VALS = NODE_VALS

POSITIONS = POSITIONS

LINKS = LINKS

LINK_VALS = LINK_VALS

EXCEPTIONS

INV_RWNID = 01.

 

ABAP_CMD = GRAPH_CMD.

STAT = SGRC_CONST-STAT_4. "Wait for input

ENDCASE.

ENDDO.

 

 

*---------------------------------------------------------------------*

* FORM MAKE_BOX *

*---------------------------------------------------------------------*

* Creatin a box *

*---------------------------------------------------------------------*

FORM MAKE_BOX TABLES BOXES STRUCTURE BCBOXES

BOX_VALS STRUCTURE BCVALS

POSITIONS STRUCTURE BCPOSITION

USING CHART LIKE BCCHART-ID

ID TYPE I

FORMAT

COLOR

TEXT

ROW TYPE I.

 

BOXES-ID = ID.

BOXES-TYPE = BC_CONST-ROW_BOX.

BOXES-CHART_ID = CHART.

BOXES-FORM_TYPE = FORMAT.

BOXES-COLOR_TYPE = COLOR.

APPEND BOXES.

 

BOX_VALS-ID = BOXES-ID.

BOX_VALS-FL = '0'.

BOX_VALS-VAL = TEXT.

APPEND BOX_VALS.

 

POSITIONS-OBJ_ID = BOXES-ID.

POSITIONS-OBJ_TYPE = BC_CONST-BOX_OBJECT.

POSITIONS-CHART_ID = BOXES-CHART_ID.

POSITIONS-ROW_NUMBER = ROW.

APPEND POSITIONS.

 

ENDFORM. "MAKE_BOX

 

 

*---------------------------------------------------------------------*

* FORM SET_BOXES *

*---------------------------------------------------------------------*

* Creating boxes for the table section *

*---------------------------------------------------------------------*

FORM SET_BOXES TABLES BOXES STRUCTURE BCBOXES

BOX_VALS STRUCTURE BCVALS

POSITIONS STRUCTURE BCPOSITION

USING CHART LIKE BCCHART-ID.

 

PERFORM MAKE_BOX TABLES BOXES BOX_VALS POSITIONS

USING CHART 2 'B1' 'B1' TEXT-002 1.

 

PERFORM MAKE_BOX TABLES BOXES BOX_VALS POSITIONS

USING CHART 3 'B1' 'B1' TEXT-003 2.

 

PERFORM MAKE_BOX TABLES BOXES BOX_VALS POSITIONS

USING CHART 4 'B1' 'B1' TEXT-004 3.

 

PERFORM MAKE_BOX TABLES BOXES BOX_VALS POSITIONS

USING CHART 5 'B1' 'B1' TEXT-005 4.

 

PERFORM MAKE_BOX TABLES BOXES BOX_VALS POSITIONS

USING CHART 6 'B1' 'B1' TEXT-006 5.

 

ENDFORM. "SET_BOXES

 

 

*---------------------------------------------------------------------*

* FORM SET_NODES *

*---------------------------------------------------------------------*

* Creating nodes, setting layers *

*---------------------------------------------------------------------*

FORM SET_NODES TABLES NODES STRUCTURE BCNODES

NODE_VALS STRUCTURE BCNVALS

POSITIONS STRUCTURE BCPOSITION

USING CHART LIKE BCCHART-ID.

 

NODES-ID = 1.

NODES-CHART_ID = CHART.

APPEND NODES.

 

NODE_VALS-ID = NODES-ID.

NODE_VALS-CHART_ID = NODES-CHART_ID.

NODE_VALS-FL = '1'.

NODE_VALS-VAL = '12.01.1994;'.

APPEND NODE_VALS.

 

NODE_VALS-FL = '2'.

NODE_VALS-VAL = '27.06.1994;'.

APPEND NODE_VALS.

 

NODE_VALS-FL = BC_CONST-ADD_LAYER.

NODE_VALS-VAL = '00'.

APPEND NODE_VALS.

 

POSITIONS-OBJ_ID = NODES-ID.

POSITIONS-OBJ_TYPE = BC_CONST-NODE_OBJECT.

POSITIONS-CHART_ID = NODES-CHART_ID.

POSITIONS-ROW_NUMBER = 1.

APPEND POSITIONS.

 

*----------------------------------------------------------------------*

NODES-ID = 2.

NODES-CHART_ID = CHART.

APPEND NODES.

 

NODE_VALS-ID = NODES-ID.

NODE_VALS-CHART_ID = NODES-CHART_ID.

NODE_VALS-FL = '1'.

NODE_VALS-VAL = '02.02.1994;'.

APPEND NODE_VALS.

 

NODE_VALS-FL = '2'.

NODE_VALS-VAL = '25.07.1994;'.

APPEND NODE_VALS.

 

NODE_VALS-FL = BC_CONST-ADD_LAYER.

NODE_VALS-VAL = '01'.

APPEND NODE_VALS.

 

POSITIONS-OBJ_ID = NODES-ID.

POSITIONS-OBJ_TYPE = BC_CONST-NODE_OBJECT.

POSITIONS-CHART_ID = NODES-CHART_ID.

POSITIONS-ROW_NUMBER = 2.

APPEND POSITIONS.

 

*----------------------------------------------------------------------*

NODES-ID = 3.

NODES-CHART_ID = CHART.

APPEND NODES.

 

NODE_VALS-ID = NODES-ID.

NODE_VALS-CHART_ID = NODES-CHART_ID.

NODE_VALS-FL = '1'.

NODE_VALS-VAL = '01.04.1994;'.

APPEND NODE_VALS.

 

NODE_VALS-FL = '2'.

NODE_VALS-VAL = '25.09.1994;'.

APPEND NODE_VALS.

 

NODE_VALS-FL = BC_CONST-ADD_LAYER.

NODE_VALS-VAL = '02'.

APPEND NODE_VALS.

 

POSITIONS-OBJ_ID = NODES-ID.

POSITIONS-OBJ_TYPE = BC_CONST-NODE_OBJECT.

POSITIONS-CHART_ID = NODES-CHART_ID.

POSITIONS-ROW_NUMBER = 3.

APPEND POSITIONS.

 

*----------------------------------------------------------------------*

NODES-ID = 4.

NODES-CHART_ID = CHART.

APPEND NODES.

 

NODE_VALS-ID = NODES-ID.

NODE_VALS-CHART_ID = NODES-CHART_ID.

NODE_VALS-FL = '1'.

NODE_VALS-VAL = '11.02.1994;'.

APPEND NODE_VALS.

 

NODE_VALS-FL = '2'.

NODE_VALS-VAL = '11.07.1994;'.

APPEND NODE_VALS.

 

NODE_VALS-FL = BC_CONST-ADD_LAYER.

NODE_VALS-VAL = '00'.

APPEND NODE_VALS.

 

POSITIONS-OBJ_ID = NODES-ID.

POSITIONS-OBJ_TYPE = BC_CONST-NODE_OBJECT.

POSITIONS-CHART_ID = NODES-CHART_ID.

POSITIONS-ROW_NUMBER = 4.

APPEND POSITIONS.

 

*----------------------------------------------------------------------*

NODES-ID = 5.

NODES-CHART_ID = CHART.

APPEND NODES.

 

NODE_VALS-ID = NODES-ID.

NODE_VALS-CHART_ID = NODES-CHART_ID.

NODE_VALS-FL = '1'.

NODE_VALS-VAL = '01.05.1994;'.

APPEND NODE_VALS.

 

NODE_VALS-FL = '2'.

NODE_VALS-VAL = '11.12.1994;'.

APPEND NODE_VALS.

 

NODE_VALS-FL = BC_CONST-ADD_LAYER.

NODE_VALS-VAL = '01'.

APPEND NODE_VALS.

 

POSITIONS-OBJ_ID = NODES-ID.

POSITIONS-OBJ_TYPE = BC_CONST-NODE_OBJECT.

POSITIONS-CHART_ID = NODES-CHART_ID.

POSITIONS-ROW_NUMBER = 5.

APPEND POSITIONS.

 

ENDFORM. "SET_NODES