Frappe Script Report

Hi Team,

I am trying to write a simple frappe script report The site is in developer mode but I am not writing this script in a file. Just creating a report on browser and pasting this code in script section in browser itself.

def execute(filters=None):
    columns = [
        {"label": _("Column 1"), "fieldname": "column1", "fieldtype": "Data"},
        {"label": _("Column 2"), "fieldname": "column2", "fieldtype": "Data"}
    ]

    data = [
        {"column1": "Data 1", "column2": "Data 2"},
        {"column1": "Data 3", "column2": "Data 4"}
    ]

    return columns, data

I am expecting 2 columns and 2 rows as a result of this report, however report just says nothing to show.

When I tried to see the browser trace, it shows the response as null

{
    "message": {
        "result": null,
        "columns": [],
        "message": null,
        "chart": null,
        "report_summary": null,
        "skip_total_row": 0,
        "status": null,
        "execution_time": 2.977757,
        "add_total_row": 0
    }
}

Can you please help with this ?

are you trying script report from UI side?

if yes,
you don’t need to right function, you can directly use bellow code

columns = [
{“label”: _(“Column 1”), “fieldname”: “column1”, “fieldtype”: “Data”},
{“label”: _(“Column 2”), “fieldname”: “column2”, “fieldtype”: “Data”}
]

data = [
{“column1”: “Data 1”, “column2”: “Data 2”},
{“column1”: “Data 3”, “column2”: “Data 4”}
]

return columns, data

Hi @Viral_Kansodiya
Thanks for your quick response.
This still gives me an error which says “SyntaxError: ‘return’ outside function”

Here are a few more details…

### App Versions

{
“erpnext”: “14.54.0”,
“frappe”: “14.59.0”,
“hrms”: “14.10.6”,
“india_compliance”: “14.16.2”,
“ptstdm”: “0.0.1”
}

### Route

query-report/Test

### Traceback

Traceback (most recent call last):
File “apps/frappe/frappe/app.py”, line 95, in application
response = frappe.api.handle()
^^^^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/api.py”, line 55, in handle
return frappe.handler.handle()
^^^^^^^^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/handler.py”, line 47, in handle
data = execute_cmd(cmd)
^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/handler.py”, line 85, in execute_cmd
return frappe.call(method, **frappe.form_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/init.py”, line 1628, in call
return fn(*args, **newargs)
^^^^^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/init.py”, line 808, in wrapper_fn
retval = fn(*args, **get_newargs(fn, kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/desk/query_report.py”, line 239, in run
result = generate_report_result(report, filters, user, custom_columns, is_tree, parent_field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/init.py”, line 808, in wrapper_fn
retval = fn(*args, **get_newargs(fn, kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/desk/query_report.py”, line 89, in generate_report_result
res = get_report_result(report, filters) or
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/desk/query_report.py”, line 70, in get_report_result
res = report.execute_script_report(filters)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/core/doctype/report/report.py”, line 133, in execute_script_report
res = self.execute_script(filters)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “apps/frappe/frappe/core/doctype/report/report.py”, line 155, in execute_script
safe_exec(self.report_script, None, loc)
File “apps/frappe/frappe/utils/safe_exec.py”, line 86, in safe_exec
compile_restricted(script, filename=“”, policy=FrappeTransformer),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “env/lib/python3.11/site-packages/RestrictedPython/compile.py”, line 196, in compile_restricted
result = _compile_restricted_mode(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “env/lib/python3.11/site-packages/RestrictedPython/compile.py”, line 67, in _compile_restricted_mode
byte_code = compile(c_ast, filename, mode=mode # ,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “”, line 11
SyntaxError: ‘return’ outside function

### Request Data

{
“type”: “GET”,
“args”: {
“report_name”: “Test”,
“filters”: “{}”,
“ignore_prepared_report”: false,
“are_default_filters”: true
},
“headers”: {},
“error_handlers”: {},
“url”: “/api/method/frappe.desk.query_report.run”
}

### Response Data

{
“exception”: “SyntaxError: ‘return’ outside function”
}


![image|690x417](upload://booWOK4uSgwAlGCNJxpzXvz2fX8.png)

ohh Sorry please remove last return line and add

data = column, out_data

1 Like